誤送信を防ぐ秀丸メールマクロ


昨日はいっぱいブクマいただきありがとうございます :)
さて、タイトルからして引きが弱いのですが、下記のような記事を見つけたので6年前に作った自作のマクロを公開します。
Yahoo!ニュース/誤送信メールキャンセル法


コード(秀丸メール用マクロファイル)はこちら
6年以上前に作ったものなので恥ずかしい限りですが、そこそこ実用性はあります。


ちなみに、送信ボタンを押すと下図のようなダイアログが表示されて、送信先を確認できます。

上記画面で「はい」を選択すると、通常はそのまま送信されますが、自身のドメインを除いて2つ以上のドメインが宛先に存在すると再度ダイアログが立ち上がります。(下図)


たいてい取引先あてのメールにしても、宛先ドメインは1種類のことが多いので2つ以上の場合は本当に正しいのか注意喚起する目的で初代は2004年ごろ作りました。


設定方法は、コード内の $selfDomain に自身のドメインに書き換えて任意の場所に保存し
秀丸メールの「マクロ>マクロ登録>自動起動>あとで送信/いますぐ送信時」に、ファイルパスを設定するだけです。


秀丸メール(旧鶴亀メール)を使っている方は少ないと思いますが、ネタ提供してみます :)

【備忘録】Windows7でgit環境構築

社内向けにまとめたかったので、備忘録として。。。
各種パスはご自身の環境にあわせてどうぞ。

面倒くさいのでクリーンな状態から説明します。
クリーンな状態にするには、

1. TortoiseSVNをアンインストール(コントロールパネル>プログラムと機能)
2. TortoiseGitをアンインストール(同上)
3. msysGitをアンインストール(付属のアンインストーラー)
4. Puttyをアンインストール(コントロールパネル>プログラムと機能)
5. 環境変数をクリアする(コントロールパネル>システム>システムの詳細設定>詳細設定>環境変数
GIT**とかPLINK**系を削除します。特にGIT_SSHは消しておく。


なぜ、Puttyをアンインストールするかは、ssh回りで環境やツールが散乱するのを嫌ってです。
gitbash + gnuwin + opensshで充分ですし、鍵ペアも $HOME/.sshに一本化できます。
puttyで一度アクセスしてからコマンドプロンプトでうんぬんとか萎えますしね。


各ツールインストール手順


msysgit

  • まずはダウンロード 最新版でよい
  • ダウンロードしたexeを実行
  • Select Componetsでは全部にチェック!(ワイルドだろぉ)Windows Explorer integrationはSimple context menuで
  • Adjusting your PATH environmentはRun Git and included Unix tools。(いろいろWindows側に変更が入るのでcmd.exeを使っていろいろしている場合はRun Git from the Windows Command Promptを選択
  • Configuring the line ending conversionsはCheckout Windows-style, commit Unix-style line endingsを選択
  • インストール完了


GnuWin32(util-linux-ng)

  • まずはダウンロード Complete package, except sourcesの最新版
  • Select ComponentsはFull instration
  • インストール後にインストールされたbin/以下(例:C:\Program Files (x86)\GnuWin32\bin)のgetopt.exe、libconv2.dll、libintl3.dllをmsysgitをインストールしたフォルダのbinフォルダにコピーする(例:C:\Program Files (x86)\Git\bin)
  • インストール完了


git flow

  • gitが使えるようになっているか確認も込めてgit flowをインストール
  • Git bashを起動する
    cd /c/  
    mkdir Projects  
    mkdir Projects/sandboxes  
    cd Projects/sandboxes  
    git clone git://github.com/nvie/gitflow.git  
    cd gitflow/  
    git submodule init  
    git submodule update  
    C:\Projects\sandboxes\gitflow\contrib\msysgit-install.cmd "C:\Program Files (x86)\Git"  


※2012/07/23追記
思いのほかブクマいただいたので、ついでにssh鍵設定について追記します。


ssh鍵ペア関連

  • 環境変数HOMEが設定されていることを確認する(通常は C:\Users\ユーザー名)
  • Git Bashを起動する
ssh-keygen.exe -C "shirokappa@gmail.com" -f ~/.ssh/id_rsa_for_git
  • 上記コマンドで$HOME/.ssh/下に id_rsa_for_git(秘密鍵)と id_rsa_for_git.pub(公開鍵)が作成されました。-Cにはご自身のメアドを設定してください。
  • 例えばGitHubと社内向けのGitLabやAlminiumなどに公開鍵を登録する場合は、上記で作成された公開鍵をコピーペーストしてください。
  • .ssh/configの編集
vi ~/.ssh/config
  • GitHubと社内GitLabの設定した例(下記参照)
Host github.com
    User git
    Hostname github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_for_git
Host 192.168.xxx.xxx
    User git
    Hostname 192.168.xxx.xxx
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_for_git

git環境構築までならここ以下は不要ですが、GUI(Git GUIでなく)で使いたいとかsubversionも使いたい場合は、以下もどうぞ :)


TortoiseGit

TortoiseSvn

【備忘録】use文について調べてみた


最近めっきりrequireを書かなくなった @ShiroKappa でございます。
「ひとまねはやめにしますw :)」


namespaceとその使い方に誤解をしていたので、ちょっと調べてみました。
結論から言うと
「use宣言しただけでは、PHPはまだファイルを探しにいかない」
です。


なんとなくの感覚でしかありませんでしたが、愛するPHPのことなのでuse宣言しただけで実は何かしてるんじゃないかと疑っていて、過去に書いたコードはよほど長くなりすぎない限り

$hoge = new \fuga\hoge();

のようにフル修飾してインスタンスの生成などをおこなっていたのですが、当然コードは読みにくくなります。。


PHPではパフォーマンス向上の為にいろいろとルールとマナーを守り、悪戦苦闘する訳ですが、不要なファイルの走査、読み込みは極力しないのは必ず気にかけるところです。
参考資料 <すごくいい資料です!


先ほども述べた通り、感覚的にファイルの先頭にuse文を列挙していると使いもしないのに読み込みにいかれるのでは?と、勝手に想像し、あまり多用してこなかった訳ですが、調べてみると実際に使われるまでファイルは読み込まれませんし、1度解決したものは2度と探しにいきませんでした。


調査のために使ったソースはこちらです。
@ShiroKappa/loaderTest @github


最近のPHPフレームワークではやはりボトルネックになりがちなのがrouting周りとautoload周りなのでパフォーマンス向上の為にまず手をかけたくなる場所だとおもいますので、正しい挙動を理解してそれぞれのアプリケショーンにあった作りを心がけたいものです。

【備忘録】Oracle VM VirtualBoxにCentOS入れてPhpStorm動かすまで

Windows7VirtualBox入れる
CentOS6のDVD.isoを仮想メディアに登録してインストール
いつものシンボリックリンクを作るw( /home/hoge/download --> /home/hoge/ダウンロード とか
CentOSにはOpenJDKが同梱されているが、このままではPhpStormがまともに動かない
OracleさんのホームページからJDK(Java SE Dev Kit 6U31)を落としてくる
落としてくるのはLinux-64bit-bin
SunJDKをインストール
インストールが終わったら、JAVA_HOMEやPATHを設定する(たとえば/etc/profileに

export JAVA_HOME=/usr/java/default
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar

設定が終わったら反映(たとえば source /etc/profile
PhpStormのLinux版を落としてくる(PhpStorm EAP PS-117.132など
PhpStorm入れる

個人的には /usr/local/以下にインストールして
シンボリックリンク /usr/local/PhpStorm を最新のPhpStormに貼るようにしている
ローカルでユーザーを使い分けているので /home/hoge/.WebIde40 も /opt/dev_evn/PhpStorm/.WebIde40にリンクする

フォントを入れる
yum install fontforge
Rictyを落としてくる(/usr/local/srcなどへ
Migu 1MInconsolataを落としてくる
sh ricty_generator.sh auto
※本当はMigu 1Mじゃないフォントを使っているのは内緒。

PhpStormやターミナルのフォントをRictyに変えて回る
終わり

 脱MSゴシック!Consolas+メイリオで快適環境


Windows7 搭載マシンを買ってきてやったことまとめ - IT戦記を読んで、等幅版のメイリオがあることを知って早速試してみた。


上記の記事のとおり手順をすすめ、meiryoKeジェネレータ6.02を使ってメイリオ6.02 から MeiryoKe_Gothic6.02 と MeiryoKe_Console6.02を作った。

  • 上記サイトからmeiryoKeジェネレータ6.02をダウンロードし解凍
  • C:\windows\Fontからメイリオを解凍したディクトリにコピー
  • ジェネレータを実行して出来上がったフォントをインストール


次にIT戦記の記事通りレジストリを編集してConsolasフォントにmeiryoKe_602,MeiryoKe_Consoleをリンクした。

  • レジストリエディタを立ち上げる
  • フォントリンク(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink)に新しい値を追加する
  • 追加する値は、名前:Consolas、種類:複数行文字列値、データ:meiryoKe_602r1.ttc,MeiryoKe_Consoleとする
  • レジストリエディタを終了してPC再起動


再起動から帰ってくると完了!早速いろいろ設定してみる。
まずは、PhpStorm。

  • Settingsを開き、IDE Settings>Editor>Colors & Fonts>Fontで自分好みに設定してあるSchemeを選択
  • Editor FontのNameにConsolasを選択し、Size:12、Line spacing:1.0でApplyする
  • 同じくColors & FontsのPHPに移動してStringsとHeredoc contentのBoldを解除する。併せてすべてのItalicを解除する

するとこんな感じ!メイリオにItalicが無いのとBoldが見にくいので上記のとおり設定している。


続いて、Tera Term。
設定>フォントからすすむとスタイルに日本語が出てこないので、直接設定ファイルを編集する。

  • TERATERM.INIを開く
  • VTFontの設定をConsolas,0,-12,128に変更
  • INIファイルを閉じて、Tera Termを起動

するとこんな感じ!


これで週末の作業効率が3倍になりました!ww

CSM研修初日メモ


ちゃんとした感想は2日間通してからしっかり書きたいと思いますが、帰ってから調べ物をしたので備忘録的にブログに残します。


今日はCSM研修に行ってきました。スクラムアライアンスのページ
ちなみに、調べてみるとCSM研修は東京だけでなく、今日だけでもコロンビア(米国メリーランド)、コロンバス(米国オハイオ)、ミュンヘン(ドイツ)、ヘルシンキフィンランド)、ルクセンブルクルクセンブルク)、サンデー(米国ユタ)、ボストン(米国マサチューセッツ)、サンパウロ(ブラジル)、マーカム(カナダ)でも開催されているようです。


心に残ったことはいっぱいあったのですが、
「バグは開発ラインを止めて、今すぐ直せ!っていうけど、そんな時間なかったらどうするの?」
的な質問が参加者から出た際に、講師がいろいろと回答された中に「Illegitimus Non Interruptus」を調べてみてくれと言っていたので調べてみました。


恐らく、このページのことだと思うので、自分的メモ(超意訳)を残します。


「Illigitimus non interruptus」(不法に中断させない)
これ、意訳難しいですね。。英語じゃないし。個人的には「不法介入に負けない!」が可愛いかなと思ったり。。w


■背景
1968年にサイエンスジャーナルで発表された「The Tragedy of the Commons,(コモンズの悲劇/共有地の悲劇)」、このジレンマは、誰にとっても明らかに長期的な利益(感心)じゃない場合でも、複数の個人が各々の利益のために合理的かつ独立して自らをコンサルティングしていると、最終的には共有リソースの消費を始めてしまう、といったものです。


■問題
スクラムチームはまれに優先順位の変化や様々な障害でスプリントを中断されてしまいます。要因は、経営の干渉、市場の変化、チームの慢性的機能障害、繰り返される失敗スプリントなど様々です。


■フォース
スクラムチームとは何かについては割愛します。
未熟なプロダクトオーナーシップにさらされたチームは、競合する優先順位やプロダクトバックログ外のものが届けられます。
そんなプアな組織(会社?)で、既にリリースされているにも関わらず緊急な修正を要する欠陥を作り続けている場合、ほとんどすべてのケースにおいて、特別なメンテナンスチームを組むことは、杜撰なコードとより多くのバグを生むだけなので、ドッグフーディングをするスクラムチームを有するべきである。


■解決
延長(増加、再割り当て)を許さない「割り込み用時間」を設ける。


例えば、自己組織化のために3つの簡単なルールを設けて生産の中断を抑止します。

  1. チームは過去の実績に基づいてバッファ(割り込み枠)を設ける。例えば予期しない作業が平均30%の場合、ベロシティが60グミのチームなら20グミを割り当てます。
  2. すべての要求(割り込み要求も)は優先順位付けのためにPOを通します。POはビジネス価値の低いいくつかのPBIの優先順位を下げます。
  3. 例えばバッファオーバーフロー脆弱性が発見されたなどで割り込まれたものが、割り込み枠を超える場合(上の例なら20グミ以上)、チームはその受け入れを拒否しスプリントの再計画をします。


ちなみに、この割り込み枠はバグ修正や緊急割り込みに充てるだけでなく、スプリントの一環として技術的負債の返済などにも充てられます。ただし、この枠にベロシティの50%以上充てることは常識的に考えてもあり得ません。
また、POは将来の収益創出と顧客満足向上を考慮してこの枠の大きさを調整していきます。


■結果として得られる背景
これらのルールのおかげで、チームは失敗スプリントを避けるために自己組織化されるようになります。さらに良いことに、結局割り込み枠を使わなくなった場合に、計画を前倒しにできたり障害リストの除去ができたりします。


以上。
上記のことは、幸いにもコーチに教わっていたので親切でない意訳になっているかも知れませんし、そもそも間違った訳かも知れませんが、一日研修を受けてぼーっとしている状態で書いたものなのでご容赦ください。w

PHP Apocalypse行ってきました!


12/17(土)にGREEさんを会場に開催されたPHP Apocalypseに行ってきました。詳細はこちら


気が付いた時にはすでに定員オーバーで長いキャンセル待ち行列ができていたのですが、途中で枠が広がったこともあり無事参加できました。すべての発表が心に響くものでたくさん勇気をもらえるイベントでした。


稚拙ながら“PHPに光を”と言うことで、12年間PHP一筋でやってきた身として発表をしてきました。


Php apocalypse
View more presentations from Kiichi Kajiura


参加者や発表者の方のブログや資料のまとめ、また主催経緯について主催者の[twitter:@tsuyoshikawa]さんが記事を書いてくださっていますので、ぜひご覧になってみてください。
http://labs.gree.jp/blog/2011/12/4367/


気が付くと12年もPHPMySQLを触っているんですが、技術的には全然精進の足りない私です。それでも誰かを幸せに誰かに感謝されるためにこの2つのミドルウェアには大変お世話になってきました。


道具はしょせん道具かもしれませんし適材適所は重要ですが、自らの手になじませ、ソフトウェア開発、システム構築、ソフトウェアライフサイクルマネジメントを加速させることを改めて強く決意しました。