done is better than perfect

自分が学んだことや、作成したプログラムの記事を書きます。すべての記載は他に定める場合を除き個人的なものです。

Debian環境でApacheのMPM確認やMPM切り替えの方法

調べるたびに忘れるので自分用メモ.

まだ勉強中なので普通に嘘を言っている可能性があります. 誰か指摘していただけると嬉しいです.

ちなみにMPMとはMulti Processing Moduleのことで, リクエストを複数受けた時にどうやって捌くかで違います. 例えば,preforkだと1リクエストで1プロセスフォークするなど.

環境

MPM確認

# /usr/sbin/apache2 -V | grep 'Server MPM'

MPM切り替え

例えば,workerからeventに切り替えたいときに

# apt-get install apache2-mpm-event

MPM入れ替えの時にはapt-getでinstallしたりremoveするしかないっぽい?本当かな・・・

Vimの正規表現で(変数) = (値)となっているものを(変数)だけにする

タイトルではわかりづらいかも知れません.以下の様なことをしたいときです.

# このように変数 = 値が羅列されているときに・・・
listen = False
command = False
upload = False
execute = ""
target = ""
upload_destination = ""
port = 0

# こうしたい!
global listen
global command
global upload
global execute
global target
global upload_destination
global port

Vimではこのように書けました.

:'<,'>s/\(.*\) = \(.*\)/global \1/g

もっと簡単な方法があったら教えて下さい・・・

Black Hat Pythonを読み始めた

少し余裕が出てきたので,空き時間を使ってBlack Hat Python: Python Programming for Hackers and Pentesters

を読み始めました.

簡単に内容を紹介すると,Pythonでネットワークを覗き見たり,VMにアタックするといった感じでペネトレーションテストなどを行えるようです.

セキュリティに関してまだ知識が浅いので,これで勉強したいと思います.学んだ内容は,できるだけここにアウトプットしていきたい・・・

就職しました

実際入社したのは4/1なんですけどね

とあるSIer大手です.正直最近ひどく悲しい出来事しかなくてとてつもなく落ち込んでいるのですが,本年度もブログを続けたいという気持ちを示したかったので本投稿を書いています.

自分の勉強の時間はなるべく削らないようにしたいと思います

Mac OS ΧでProxy設定をCLIで操作する方法

自分用のメモ。 こちらの記事のとおりです。

例えば、SSH tunnelを使って自分専用のプロキシサーバーとローカルマシンとの間を安全に繋ぎたいときなどにこんな感じに書くと便利です。

#!/bin/bash

sudo networksetup -setwebproxystate Ethernet on
sudo networksetup -setsecurewebproxystate Ethernet on
ssh -L 0.0.0.0:<PORT_NUMBER>:localhost:<PORT_NUMBER> <PROXY_SERVER>
sudo networksetup -setwebproxystate Ethernet off
sudo networksetup -setsecurewebproxystate Ethernet off

このコマンドをproxy.shなどとして実行すれば捗りますね。

ところで、SSHトンネリングを使う際って、ターミナルは開きっぱなしじゃないといけないんでしょうか・・・?

outlook for iosが素晴らしかった件について

f:id:thekoruku:20150201150725p:plain

最近はずっとGoogleが出した新しいメールアプリのinboxを使ってGmailのやりとりしていたんですが,この度Microsoftから出たOutlook for iOSが素晴らしかったので乗り換えてしまいました.

詳細な情報はこちらこちらのサイト様を見たほうが早いかと思われます.

そもそもinboxの使い勝手が自分的にイマイチだったんですよね.日本語入力にバグがあるって時点でまあアレなんですけど,なんとなくコレジャナイ感が自分としてはありました.まあとにかくアーカイブに突っ込むとかの操作性はよかったので,改良されればいいなーとは思います.

Outlook for iOSOutlookに限らずGmailなど他のサービスにも余裕で対応してくれていますし,少し使った感じでは日本語入力なども問題ありませんでした.また,Google Calendarなどにも対応していて,一つのアプリでメールや予定確認などがさっと出来るのがほんとに魅力ですね.

問題点はまあある(日本語表示が機械翻訳みたいに超不自然.自分は英語表記で使っていたので気づきませんでしたが・・・)感じですが,今後に期待.

Dropboxなどとの連携もできるため,Dropbox内のファイルをGmailで簡単に送信なんてこともできます

もう少し使ってみてから今後使い続けるかは考えたいと思います.しかしAppleiPhoneGoogleGmailMicrosoftOutlookで見るって時代の変遷を感じますね.

numpy.arrayやscipy.sparse.lil_matrixなどで指定した行だけでできた行列を作る

自分用メモ書き.ある行列から指定した行だけ(例えば[1,3,4]みたいな感じでリストで抜き出したい行が入っているとする)でできた行列を作る.

In [1]: choices = [[0, 1, 2, 3], [10, 11, 12, 13],
   ...:   [20, 21, 22, 23], [30, 31, 32, 33]]

In [3]: import numpy as np

In [4]: choices = np.array(choices)

In [5]: choices
Out[5]:
array([[ 0,  1,  2,  3],
       [10, 11, 12, 13],
       [20, 21, 22, 23],
       [30, 31, 32, 33]])

In [13]: choices[[1,2]]
Out[13]:
array([[10, 11, 12, 13],
       [20, 21, 22, 23]])

In [14]: choices[[0,2]]
Out[14]:
array([[ 0,  1,  2,  3],
       [20, 21, 22, 23]])

In [15]: from scipy.sparse import lil_matrix

In [16]: l = lil_matrix(choices)

In [17]: l
Out[17]:
<4x4 sparse matrix of type '<class 'numpy.int64'>'
    with 15 stored elements in LInked List format>

In [18]: l[[0,2]]
Out[18]:
<2x4 sparse matrix of type '<class 'numpy.int64'>'
    with 7 stored elements in LInked List format>

In [19]: l[[0,2]].todense()
Out[19]:
matrix([[ 0,  1,  2,  3],
        [20, 21, 22, 23]], dtype=int64)

行が飛んでいるのはご愛嬌.

教訓

ドキュメント読みましょう