2017年06月29日

grep 小技メモ

grep -n --text -A 30 -B 1 -E "A|B|C|D" * | grep -E "E|F"

-n 行番号表示
--text ええからテキストと思え
-A 30 ヒットした位置から30行後ろまで表示
-B 1 ヒットした位置から1行前まで表示
-E 正規表現


python なりなんなりでscript書けばいいだけなんだけども。( ´∀`)
まぁ、そこまでじゃないなら楽なほうがいいかと。
posted by koteitan at 14:41| Comment(0) | TrackBack(0) | その他備忘録 | このブログの読者になる | 更新情報をチェックする

2017年06月28日

相性問題なのか・・?

最近コンタクトレンズに変えたのだけれども、
ジョンソン・アンド・ジョンソンのワンデーアキュビューなら、快適だったんだけど、
経済的じゃないので、ボシュロムの2Weekに変えたら、もう焦点が合わない合わない (;´Д`)
3ヶ月もこのままは辛いなぁ・・。

ぼやけてしょうがないので、仕事が辛すぎる。
各メーカー1枚ずつお試しキットとかあればいいのにな。


posted by koteitan at 14:55| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする

TOMCAT port あれこれ


(1)複数ポートで待ち受けるには

 confにあるserver.xmlを開き、<service>のタグ部分を増やせばOK。
 もともとある8080を参考に、各種ポートが重複しないようにすること。
 サービス名やエンジン名も注意する。
 各サービス毎に稼動するアプリケーションを変更したい場合(これが目的で分けると思う)
 <Host>タグのappBaseを変更すること。
 変更した名前のディレクトリを作成して、そこにモジュールを配置すればめでたくポートでアプリを
 分けられる。(1つのマネージャで複数Serviceを、みたいなのはできないっぽい。そこまで凝ったことを
 したいならWebSphereでどうぞか。)
 
 こんな感じですかね
   <Service name="Catalina">
 
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    <Engine name="Catalina" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>
      <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      </Host>
    </Engine>
  </Service>

  <Service name="Catalina2">
 
    <Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8444" />
    <Connector port="8010" protocol="AJP/1.3" redirectPort="8444" />
    <Engine name="Catalina2" defaultHost="localhost">
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
             resourceName="UserDatabase"/>
      <Host name="localhost"  appBase="webapps2"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
      </Host>
    </Engine>
  </Service>

 ポート番号を80などのwell known なものにしたときは、実行ユーザーによっては
 権限のエラーになる。
 この場合、rootで起動させるか、iptablesでポートフォワードさせて、
 <Connector>にproxyPort="80"を設定する
 
 
(2)不要ポート

 ajpが要らない場合は、コメント化しておくとポートの節約になる。

(3)shutdownポート

 デフォルトでは8005が停止ポートになっており、
 ここに"SHUTDOWN"の文字を送り込むと、tomcatが停止する。
 
 例
 echo "SHUTDOWN" | nc localhost 8005
 
 デフォルトではlocalhostのみにバインドされているが、
 認証もへったくれもないので、ちょっと気持ち悪い。
 
 対策としては、
 
 (1)ポートを変える -> スキャンされたら意味ない
 (2)停止用文字を変更する ->shutdown="SHUTDOWN"をshutdown="ICANFLY"のように推測されないものに変更する
 (3)ポート自体を無効化する ->port="-1" ただしshutdown.shが使えなくなる(killするしかなくなる)
 
 どれもこれも一長一短なので、FWやiptableなども組み合わせて守るべきなんでしょうね。
 
 
posted by koteitan at 14:44| Comment(0) | TrackBack(0) | その他備忘録 | このブログの読者になる | 更新情報をチェックする

2017年06月02日

並列処理とマルチコアと

CPUが余っているじゃないか! なんで使わないんだ!

と激高されましても、、、(;´Д`) アムダールの法則いうものがありましてね、 並列化できるような問題でなければいくらマルチコアでも意味ないんすよ。。。

1 ( 1 p ) + p n {1} over {(1-p)+ {p} over {n} }
くわしくはwikiでもどうぞかな。

これ、応用情報とかに出るやつやんね。 んで、最近のアーキテクトだとキャッシュメモリの速さとかメモリバンドの問題で、 必ずしもこうはならない、みたいな感じ。

mathML初めてつかってみたがいい感じですな。
posted by koteitan at 11:39| Comment(0) | TrackBack(0) | 情報処理 | このブログの読者になる | 更新情報をチェックする