宮城のお店らしい。もちべえ 初めて聞いた。
Monterey Bay Aquarium
we're not kids anymore.
Show & Tell
i don't do bad sauce passes

#extradirty

祝日 / Permanent Vacation
ojovivo
No title available
Claire Keane
Game of Thrones Daily

Origami Around
he wasn't even looking at me and he found me

ellievsbear
h
Mike Driver
hello vonnie
AnasAbdin
Xuebing Du

Kaledo Art
Lint Roller? I Barely Know Her
seen from France

seen from Malaysia
seen from Australia

seen from Malaysia

seen from Israel

seen from Sweden
seen from Albania

seen from Germany
seen from United States

seen from Saudi Arabia

seen from Malaysia

seen from Malaysia

seen from Israel
seen from Malaysia

seen from Saudi Arabia
seen from Russia
seen from United States
seen from United States
seen from China

seen from Malaysia
@slumbers99-blog
宮城のお店らしい。もちべえ 初めて聞いた。
みんなと遊ぶ(*´ڡ`●)
泳いだあとの炭水化物のうまさよ
Fragment から Fragment にコールバックする方法
Blogger から移ってきた。
「Fragment から Activity にコールバックする方法」はこちらがくわしい。
Y.A.M の 雑記帳
http://y-anz-m.blogspot.jp/2012/06/fragment-activity.html
たとえば DialogFragment の登場場面って Fragment に紐付いていると思う。なのでコールバックも呼び出し元の Fragment に返したい。なにも Activity に返さなくてもいいのかと。で、 onAttach(Fragment fragment) なんてないので、どうにかせんといかん。DialogFragment に処理をベタ書きしてもいいけど、 yes|no の確認ダイアログくらい使いまわしたいのでそれもできない。ぱっと方法が思いつかなくて、もしこれ見てこうだろjkっていうのがあれば何らかで反応もらえると嬉しいと思って書く。
こんな流れ。
呼び出し元の Fragment を DialogFragment に教える。
DialogFragment では求めるリスナーを実装していたらリスナー登録。
イベントでは、保持してるリスナーがいたら実行。
ボタンをクリックしたらダイアログ表示する。
呼び出し元の証で parent をいうキーでタグを Bundle に詰めて渡す。
ダイアログは yes | no | soso の2ボタン。これらのボタンの処理を呼び出し元の Fragment に委譲したい。
そこで、詰めたタグから Fragment を見つけてきてインターフェイスが implements されてたらセット。あとはボタンの onClick イベントで実装したリスナーを実行。
なんか回りくどい。なにかいい方法ないもんかしらん。
Github にプロジェクトおいた。 https://github.com/slumbers99/sample01
gist テスト
gist 貼り付けられるかな?
PHP アプリケーション開発のために Eclipse に入れてるプラグインと設定。 その2
第一弾はこちら。 PHP アプリケーション開発のために Eclipse に入れてるプラグインと設定。 ちょっと今の環境が変わったので再度まとめてみる。
Eclipse 本体 [link]
Eclipse 4.2.2 をチョイス。パフォーマンス向上、様々なバグが修正されてるようです。ただし後述する Eclipse 3.8.x にあった個人的にはスーパー便利機能がなくなってしまっています。まあ代替案はありますがとっても残念。
ダウンロード
Eclipse Downloads [http://www.eclipse.org/downloads/] から Eclipse Classic をダウンロードします。ぼくは Mac ですが、~/Applications/eclipse-pdt として展開します。
本体更新
Help -> Install New Software... Work with: The Eclipse Project Updates - http://download.eclipse.org/eclipse/updates/4.2 Select All ボタンで全部選択し。Hide items that are already installed チェックボックスでインストール済のものをスキップさせます。(Eclipse RPC でなんかエラーか文句言われる)
Juno の更新サイトからインストール
PHP Development Tools (PDT) Feature ってのがあるんですが、3.1.1 でバージョンが低いです。更新もできないので Feature の方を入れてしまったら、一旦削除して Feature 無しの方を入れましょう。 Help -> Install New Software... Work with: Juno - http://download.eclipse.org/release/juno Collaboration Eclipse EGit Eclipse EGit Mylyn GitHub Feature EGit Mylyn EGit Plug-in Import Support Git Team Provider Core Mylyn Builds Connector: Hudson/Jenkins Mylyn Context Connector: Team Support Mylyn TaskList Mylyn Task-Focused Interface Mylyn Versions Connector: Git Mylyn WikiText General Purpose Tools Marketplace Client Web, XML, Java EE and OSGi Enterprise Development Eclipse Web Developer Tools Eclipse XML Editors and Tools JavaScript Developpent Tools PHP Development Tools (PDT) Web Page Editor
AnyEdit tools plugin for Eclipse [link]
Help -> Install New Software... Work with: http://andrei.gmxhome.de/eclipse/ Eclipse 3.5 - 4.2 plugins AnyEditTools
QuickREx [link]
正規表現をチェックできるプラグイン。 Help -> Eclipse Marketplace... Work with: http://www.bastian-bergerhoff.com/eclipse/features QuickREx QuickREx QuickREx_I18N
Eclipse Color Theme [link]
Help -> Eclipse Marketplace... Find: Eclipse Color Theme 言わずもがなカラーテーマ設定プラグイン。Eclipse Color Themes[http://eclipsecolorthemes.org/] から好きなテーマをダウンロードしましょう。
MakeGood [link]
Help -> Eclipse Marketplace...
Find: MakeGood
MakeGood は Eclipse PDT 上でユニットテストを実行するための継続的テストランナーです。
とあります。テストを書くならこれですね。なにげにこれを入れると、日本語メソッドがかけるようになります。
pdt_tools.formatter [link]
なんていうかすごいこれ。PDT のコードフォーマッタは有ってないようなものだっなんですが、このフォーマッタは細かい設定までできむしろこれ PDT に入れていいんじゃないか?というぐらい。漏れそうなくらい大変助かります。作られてる方のブログ?昔から PDT の情報いっぱい。 Dead Zone SOURCEFORGE.jp から ダウンロード -> (root) -> juno -> pdt_tools.formatter_xxxxx.zip をダウンロードする。 Help -> Install New Software... Add... -> Archive... -> pdt_tools.formatter_xxxxx.zip PDT Tools PDT Tools: Formatter PDT Tools: Formatter 日本語ヘルプ
設定
General ✓ Show heap status Appearance Color Theme 好きなのを選択。僕は Solarized Dark を Import してます。 Colors and Fonts Basic Text Editor Block Selection Font Text Font 好きなフォントに変更。僕は Ricty Diminished Discord. すばらしい。 Content Types Text PHP Content Type CakePHP 使いたいので、 *.ctp を追加。 Editors AnyEdit Tools Auto - Convert ✓ Convert tabs <-> spaces ✓ Tabs to spaces Convert... Tab width/number of spaces for tab : 4 に変更。 Text Editors Undo history size: 1000 ✓ Insert spaces for tabs ✓ Show print margin Print margin column: 100 ✓ Show line numbers ✓ Show whitespace characters configure visibility Transparency level: 70 Spelling □Enable spell checking (Off にする) Keys Name: New Editor Binding: ^N (control + n) When: In Windows Web Browser ✓Use external web browser Workspace Text file encoding Other: UTF-8 JavaScript Appearance ✓ Show inferred function return types ✓ Show colored labels Editor Content Assist Auto-Activation Auto activation delay: 0 Auto activation triggers for javascript: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0987654321. PHP Appearance ✓ Show method return types Code Style Formatter (PDT Tools) [編集] プロファイル名: Eclipse [built-in] - custom インデント 一般設定 タブポリシー: スペース インデント ✓ 'switch' 内 波括弧 括弧の位置 名前空間: 次の行に クラス・インターフェイス: 次の行に 関数・メソッド: 次の行に 空白行 (ここはお好みで?) クラス定義の前: 1 関数定義の前: 1 折り返し 一般 一行の最大幅: 100 Editor Content Assist Auto Activation Auto activation delay: 0 PHP Manual New Name PHP.net ja Remote Site: http://www.php.net/manual/ja Default Team Git Label Decorations Text Decorations Projects: {dirty:>} {name} [{branch}{ branch_status}] Web CSS Files Encoding: ISO 1-646/Unicode(UTF-8) Editor Formatting Line width: 100 ✓ Indent using spaces Indentation size: 2 Capitalization style Identifier: ✓ Lowercase HTML Files Encoding: ISO 1-646/Unicode(UTF-8) Editor Formatting Line width: 100 ✓ Indent using spaces Indentation size: 2 XML XML Files Editor Formatting Line width: 100 ✓ Indent using spaces Indentation size: 2
パースペクティブ
Window -> Close All Perspectives Window -> Open Perspective -> Other -> PHP 右上の PHP パースペクティブアイコンのコンテクストメニュー -> Show Text のチェックを外す。 Window -> Customize Perspective Command Groups Availability ✓ Git ✓ Git Navigation Actions ツールバーをグリグリ動かして、好きなポジションにしてくだい。 PHP Explorer -> ▼(下三角のメニュー) -> Filters □ .* resources のチェックを外す。 ✓ Name Filter patterns .settings, .project, .classpath, .buildpath DS_Store, Thumbs.db
起動オプション
もちょっとメモリの割当増やしてあげましょう。Eclipse を終了します。 Eclipse.app のコンテキストメニュー -> パッケージの内容を表示 Contents -> MacOS -> eclipse.ini --launcher.XXMaxPermSize 256m -Xms256m -Xmx1g とか。もっとメモリ潤沢にある人はガッツリ増やしたらいいと思うよ。
長い
こんなかんじかなぁと。 Window -> Customize Perspective で PHP パースペクティブのカスタムをもっとごりごりすると吉。ここらへんって好みがあるから自分好みにすればいいと思うよ。 今回は MakeGood を入れたこと、なにより pdt_tools.formatter を入れたことが大きい。フォーマットを決めとけば command + Shift + f で一発修正。素晴らしい。フォーマットは PSR に合わせたり、PEAR とか zend とかに合わせたらいいと思うよ。 こんな設定項目多いからこれから IDE で PHP 始めるのは PhpStorm がいいのかも。まあ無料だし、育てるのもいいんじゃないのかいな。 テストの実行とか設定なんかは今回書いていない。自分の中でまとまったらもう一度まとめようと思います。
おまけ
Eclipse 3.8.x にあった個人的にはスーパー便利機能
最初のほうで書いた。
エディタタブのコンテキストメニューが 4.x 系だとなくなっている。ここから New Editor を選択して同じファイルをもう一個のエディタで開いて、タブを掴んで横にずらすなどして、画面分割的な使い方をしていた。これなんだろうなー。残念。あとタブのダブルクリックでその View を最大化してくれたんだけど、それもなくなった。残念無念。 なのでその2つはキーボードショートカットで New Editor は さっき追加で設定した [control + n] ここもお好みで。 エディタの最大化は [control + m] でできる。設定は Maximize Active View or Editor のところ で変更できるのだ。 花粉にやられてどっこいしょ。
Adblock Plus によって zenback が表示されなくなった時は。
残念ながら、Adblock Plus [Chrome ウェブストア] を入れると zenback が表示されません。 (日本向けフィルタ(仮) を適用後かな?) ソーシャルボタンなんかも一気に消えてしまうので、いい記事に出会っても何もアクション取れなくなってしまう、悲しい出来事。(はてブはできるけど。) そんな時は Adblock Plus の 「自作フィルタ」に以下を登録。
@@||*.zenback.jp/
こんな感じ。ニコ動も再生できなくなっちゃったから、それ用のフィルタも入れてある。
Facebook の通知音を消す方法(2013/02/21 現在)
いつも Facebook はブラウザで開きっぱで、メッセージやら自分のコメントへの返信やらはタイトルに (1) とかでるとか、赤いアイコン(アレ)に変わっているだけで十分の通知だった。
しかし今日(2013/02/21から?)は違った。なんと音がなる。「ポコッ」って。
ヒジョーにうざい。消したい。ググった。
鳴り止まないソーシャルメディア? フェイスブックが「お知らせ」通知音をテスト公開中(動画)http://www.gizmodo.jp/2012/11/post_11144.html
この通知音をオフにしたい方は「一般アカウント設定」の「お知らせ」メニューに行き、「新しいお知らせを受け取ったら音声で通知する」のチェックボックスをはずせばOKです。
・・・・・・先生無いです、そんな設定項目。 まあ、どうせまだ日本で実装されてないんでしょ?と言語を「英語」に変えては見たもののやっぱりダメ。結局 Chrome に Stealthy [Chrome ウェブストア] を入れて IP アドレス偽装。その上で上記の設定項目(ちょっと翻訳変わってるみたいだけど)を外せばいい。
まあそのうちこんなことしなくても実装されるでしょうけどね。 じゃあいつやるの?今でしょ。 っていう。
PhpStorm のタブ文字が自己主張しすぎるので、色を変えてみた。
PhpStorm をちょいちょい触っています。Eclipse PDT をメインに使っていますが、ダイブ話題になっていたりして気になった。 どうしても比較してしまうのでアレなんですが、ダメなのがタブ文字。タブでインデントしてるファイル開いた時に初めて分かる奴の主張っぷり。 Eclipse は 透過度替えられるのに・・・・。 お前はモットおとなしくしててもいい。 というわけで、なにかいい方法ないか調べた。 どうも文字自体を変更するのは見つからんと。 じゃあ色でなんとかしてみようと。 Code Style は 大好き Solarized。の Dark。 https://github.com/jkaving/intellij-colors-solarized Solarized Dark.xml の 26 行目付近。 を に替えました。 もうすでに入れちゃった人は、 ~/Library/Preferences/WebIde50/colors/Solarized Dark.xml の該当の場所を変更して、PhpStorm を再起動。 目立たなくなりました。 だけど、んーもうちょっと見えたほうがいいかな・・・。
先生・・・・改行コードを表示する方法が分かりません・・・・。 発光ダイオードと同じね。
Android でカメラ撮影後メンバ変数が空になる。
理由はわかっていたんです。 カメラから戻ってくるときに onActivityResult が呼ばれるんですが、 そのまえに onCreate() が呼ばれている。要するに Activity が再生成されているから、 カメラ呼び出し前にメンバ変数セットしていようとも、もろともいなくなってしまったと。 以前にこんなのを書きました。 Android でカメラかギャラリーから画像を読み込んでトリミングして表示するサンプル ただここに盲点が有りました。 Samsung Galaxy シリーズという盲点がぁがぁ・・・!!(大げさ) ※2013/01/30 21:33 追記 Google+ でご指摘頂きました。 Activity が破棄され、メンバ変数が初期化されてしまうような場合、 Activity#onSaveInstanceState(Bundle outState) で Bundle に メンバ変数として保持していた値を put() 。 その後復帰後に Activity#onRestoreInstanceState(Bundle savedInstanceState) で Bundle から 取り出して再度メンバに設定してあげるようです。 Activity のライフサイクル大事!! ご指摘ありがとうございます!! AndroidManifest にこう書いてます。
android:configChanges="keyboardHidden|orientation"
なにげにこれだけでも大抵動いちゃうんですよね。 HTC J butterfly HTL21 も特に問題ありませんでした。 ここで登場 Samsung Galaxy SIII SC-06D。 いろいろテストしていく中で、写真を取る向きを検証していました 。 そして事は起こった。
この向き!端末の下を左に持ってきて写真を撮る。 この状態だと、configChanges の orientation には引っかからないようです。 他の3方向は問題なし。まあどうするかというと、 screenSize も追加しろと。 ここに書いてありました。
Handling the Configuration Change Yourself http://developer.android.com/guide/topics/resources/runtime-changes.html#HandlingTheChange
Android 3.2 (API level 13) 以上を対象とする場合は、screanSize もまた変更されるようです(向き変わってるだけだろ・・・・・)。 というわけで Android Manifest にはこう書きます。screenSize 追加。 ちなみに、 GALAXY SII WiMAX ISW11SC でも同じ現象でした。
Chrome for Android の USB ウェブデバッグでスマフォWEBサイトをデバッグする
Android 端末にインストールした Chrome を通して、 PC 側の Chrome で WEBページのデバッグができますよと。 試してみました。 用意。
Android 端末。
Chrome (PC側もAndroid側も)
Android SDK
まあぶっちゃけ ココ を見てしまえば終わりなんですが、 Chrome は両方にインストール済として話を進める。
Android SDK と Android SDK Platform-tools の準備。
とりあえず Android SDK をダウンロードして任意の場所に展開。 ~/Library/android-sdk-macosx (以下 SDK_PATH)な感じで僕は置いてる。
SDK_PATH/tools/android
を実行するとなんか (Android SDK Manager) 出るので、Android SDK Platform-tools をインストールする。SDK_PATH/platform-tools っていうディレクトリができてるはず。
Android 端末の設定。
SDK ダウンロードしてる間にでも Android 側の設定をしときます。OSのバージョンが・・・
3.2 以下:[設定] -> [アプリケーション] ->[開発者向けオプション] -> [USBデバッグ]
4.0 以上:[設定] -> [開発者向けオプション] -> [USBデバッグ]
4.2 以上:[設定] -> [この端末について] -> [ビルド番号]を 7回タップ -> 画面戻って戻って[開発者向けオプション] -> [USBデバッグ]
にチェック。日本語のメニュー項目名は違うかも。そして 4.2 以上の端末は隠しコマンド的なのなにそれこわい。 そして、Chrome の[設定] -> [デベロッパーツール] -> [USB ウェブ デバッグを有効化] にチェックを入れておく。
それでは・・・
Android と PC を USBでつなぐ。
adb コマンド叩く (PC 側)
./SDK_PATH/platform-tools/adb forward tcp:9222 localabstract:chrome_devtools_remote
* daemon not running. starting it now on port 5037 * * daemon started successfully
って出たらOK。
Chrome でアクセス (PC 側)
http://localhost:9222
アクセスすると、Android の Chrome で開いているタブ一覧が出てくるので、好きなのクリック。PC 側の Chrome で デベロッパーツールが開くのでよしなにします。 Enjoy! ※404 的なことになったら
SDK_PATH/platform-tools/adb kill-server
からの
./SDK_PATH/platform-tools/adb forward tcp:9222 localabstract:chrome_devtools_remote
をお試しくだしあ。
ただ・・・
Android 標準ブラウザで使えない。
結局は端末依存とかあるし、やっぱり該当の機種がないとアレ。
だったら、Chrome でユーザーエージェントいじったほうが早くね?
ヽ(´Д`;)ノアゥ...
結論
FireMobileSimulator すごい。 https://chrome.google.com/webstore/detail/firemobilesimulator-for-g/mkihbloiacgiofaejgagokalpeflnmbe?hl=ja
Eclipse にて @Override アノテーションで must override a superclass method と怒られた。
わかっていたはずなのに、無駄にハマった。 忘れないために、自分で記録しておく。
こんなかんじで must override a superclass method と怒る Eclipse さん。 これはコンパイラのレベル が 1.5 になっているから。Android 開発の場合は 1.6 に変更します。 [command + ,] で [Preferences] を開いて、 [Java] -> [Compiler] を開く。 [Compiler compliance level] を 1.6 に変更。
これで直る。 エラーが消えなかったら、プロジェクトのクリーンをしてみる。[Project] -> [clean] ん?これって昔書いたっけ?
VirtualBox でコンソール画面を出さずに仮想マシンを起動する。
Oracle VM VirtualBox マネージャーから起動すると、 もれなくコンソール画面がついてくる。 邪魔。 サーバー用途の場合画面なんていらなので、消したい。
起動はコマンドラインからする。
VBoxmanage startvm "仮想マシン名" -type headless -type headless をつけるとコンソールが立ち上がらなくなり、 裏でこっそり仮想マシンが起動する。
それでもコマンド長い。
こんな関数作成。 ~/.(z|ba)shrc 的なのに書けばいい。
function startvm () { VBoxmanage startvm "$1" -type headless }
startvm "仮想マシン名" で headless 起動出来ました。 一応 僕の .zshrc はこんな感じです。
VirtualBox でゲストの CentOS に SSH で接続したい。
所謂ホストオンリーネットワーク。 ホスト: MacOS X 10.8.2 ゲスト: CentOS 6.3 VirtualBox: 4.2.6
ホストオンリーネットワークの追加
[Command + ,] で [環境設定] を出します。 [ネットワーク]の項目を選択し、[+] のアイコンで追加します。(vboxnet0 が追加されたはず) 次に[ドライバー]のアイコンで設定を確認します。 192.168.56.1/255.255.255.0 がこのネットワークアドレスのようです。 作成が終わったらOKで閉じます。
仮想マシンの設定
[ネットワーク] -> [アダプター2] [ネットワークアダプターを有効化]にチェックを入れる。 割り当て: [ホストオンリーアダプター]を選択(名前:vboxnet0 になったはず)
ゲストOSの設定
# root の前提で。 setup # コマンドない場合は # yum install setuptool ntsysv sytem-config-network-tui system-config-firewall-tui # でインストール出来ます。 ネットワークの設定 -> デバイス設定 -> eth1 静的IP: 192.168.56.10 サブネットマスク: 255.255.255.0 デフォルトゲートウェイ: 空のまま [OK] -> [保存] -> [保存して終了] -> [終了する] で setup 保存して終了させる。 vim /etc/sysconfig/network-scripts/ifcfg-eth1 ONBOOT=yes にする。 service network restart で再起動。 これで ssh [email protected] で接続できるようになったはずです。
外に出られないし、中に入れない。
eth1 の設定をしてから、ゲストOS が外に出られない。
[root@centos ~]# ping google.co.jp ping: unknown host google.co.jp [root@centos ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1 0.0.0.0 192.168.56.1 0.0.0.0 UG 0 0 0 eth1
こんな感じ。 setup コマンドでネットワークの設定をしちゃう罠にハマった。 ホストオンリーネットワークの設定を確認した時に、192.168.56.1 にネットワークアドレスが設定されていた。 その流れで eth1 のデフォルトゲートウェイに 192.168.56.1 にしてしまうと、外に出られなくなるようだ。 setup コマンドで eth1 のデフォルトゲートウェイを消すか、 /etc/sysconfig/network-scripts/ifcfg-eth1 の GATEWAY の行を削除して service network restart で大丈夫っぽい。 ちなみに eth0 は dhcp にしてある。
サクッとブラウザのキャッシュ消去ショートカット
いろんなタイミングでブラウザのキャッシュを消したい事あると思います。 そんな時 ツール -> 設定 ・・・ とかたどるのめんどい。 そんな孫の手ショートカット。 アドレスバーで command + shift + delete。 これで消去画面がでてきます。 お試しあれ。 シュバッ!!ってやるやら、 command + l でアドレスバーにフォーカス移してからの command + shift + delete みたいな ドヤァ ただし、できるブラウザできないブラウザあるみたい。 Mac OS X 10.8.2 で試してます。(できる◯、できない×) ◯ Firefox 17.0.1 ◯ Chrome 23.0.1271.95 × Opera 11.64 1403 × Safari 6.0.2 (7536.26.17)
初めて Pull Request した話。 #phpadvent2012
PHP Advent Calendar 2012 10日目です。
昨日は 竜一 得上 さんの 「PHPマジカルしばり + Raspberry Pi でPHPを動かしてみた」 でした。 Raspberry Pi はじめて知りました。確かに名刺サイズです。PHP もサクッと入るみたいなんでいいおもちゃにナリそうですね :) マジカル定数 __DIR__ の影の薄さは異常だとおもう今日この頃、__LINE__ も「ラ↓イン↑」か「ラ↑イン↓」の発音の仕方で世代が分かりそうです。そして僕は「マジカル」という響きに昭和な香り感じる世代です。マジカルバナナとか
さて、今回で3回目の参加になり、
2011年:Eclipse と Xdebug で PHP をステップ実行 PHP Advent Calendar jp 2011 #phpadvent2011 2010年:今更きけないあの娘の名前 (PHP Advent Calendar jp 2010 Day 9) と書きました。 今年は何を書こうかと思いましたが、数ヶ月前に初めて php-src に Pull Request を送り、めでたく merge されました。そのことを書いてみたいと思います。
そうは言っても。
・php のコアな部分がバグってるからオレがどうにかしてやった。
・オレの便利機能がいいから取り入れてくれ。
というものではなく、普段サーバーを作っていてふと思いついたことの Pull Request でした。
ラブストーリーは突然に。
ある日いつもの様にサーバーの構築をしていました。CentOS なので yum で Apache, PHP, MySQL 入れて、php.ini をいじる・・・。いつもどおりで毎回のことでした。
それでは mbstring の設定しましょうねーっていうところで、
[mbstring] ;mbstring.language = Japanese ;mbstring.internal_encoding = EUC-JP ;mbstring.http_output = SJIS
ないわーー EUC とかないわーー とか思いながら UTF-8 と書き直す簡単なお仕事。 ・・・「これ、毎回やるの?」 き・・・切れた ぼくの体の中で なにかが切れた・・・決定的ななにかが・・・!
Pull Request
毎回書き換えるのめんどいし、いっちょやってみっかと思いまして、
php.ini-development
php.ini-production
2つの ini ファイルの mbstring を今どきの設定(UTF-8 ベース)にして、取り込んでもらいましょうと。設定自体は文字コードに起因する脆弱性を防ぐ「やや安全な」php.ini設定を参考にしました。そして、自分にとって謎が多い Pull Request のやり方をググり始める。 なにぶん初めての Pull Request。変なことをしてボロクソに叩かれたら(※叩かれない)ガラスのハートが粉砕されてしまう(違 あーいんたーねっつこわい。
で、参考(むしろ、そのまんま)にさせていただいたのは、
GitHubへpull requestする際のベストプラクティス http://d.hatena.ne.jp/hnw/20110528
絶対にmasterブランチで作業してはいけません。 masterブランチからのpull requestが許されるのは小学生までです。
とあるので、一応オッサンなだけにそれだけは注意して、gkbrしながら慎重に作業しました。まあやったことといえば以下のこと。
php-src を fork https://github.com/slumbers99/php-src
ローカルに clone
作業用にブランチを作る(phpIniMbstringSpike という名前にした)
ファイル編集 -> commit
作業用ブランチを push https://github.com/slumbers99/php-src/tree/phpIniMbstringSpike
pull request用にcommitをまとめる (phpIniMbstring という名前にした)
pull request用ブランチを push https://github.com/slumbers99/php-src/tree/phpIniMbstring
あとはこれを Pull Request すればいいんですが・・・。
「mbstring の設定”ホントーに”変えていいの?」 図にのるんじゃあないッ!このアメ公がッ! と、ゴーストが囁いた。
チキンっぷりを発揮
昔から変わってないから「何か意図があるはずだ」「変えてしまっていいものか?」と思ってしまった僕は、ML で聞いてみることにした。
http://ml.php.gr.jp/pipermail/php-users/2012-March/036218.html 概ね良好ww Pull Request する気になった。単純。 実はツイッターでもぼそっと呟いたんだけど。誰も反応してくれなかった。
実際やってみた。
https://github.com/php/php-src/pull/22
もちろん英語です。google 翻訳先生大活躍。 意見交換の場なんでしょうけど、最初と最後しか発言せず・・・・。ヘタレっぷりを露呈した感じ。 そしてめでたくマージされ、 https://github.com/php/php-src/blob/master/php.ini-development https://github.com/php/php-src/blob/master/php.ini-production の contributors に自分のアカウントが出るようになりました。 顔がニヤけます。
Pull Request やってみての感想など。
この Pull Request は大したことない変更かと思いますが、もしかしたら、世の中のほんの一握りの人には役に立つかもしれない。っていうか、もちろん僕には役に立つクリティカルな変更だった。 今回ちょっとした思いから起こした Pull Request でしたが、いろいろと試行錯誤していく中で、自らの経験への蓄積となったのが一番大きく、また、OSS への貢献も掠る程度ではありますができたんじゃないかと思っています。 「誰も喜ばないし」とか「誰も使わないし」とか思って、いろんな事に躊躇しているのであれば、そんなこと気にしないで、とりあえずやってみるってものなんかいいかなーと思ったりもします。不安なのであれば、姑息に根回し(今回僕がMLで聞いたように)して、少しでもダメージ減らしとくとか?w やっぱり何かアクションを起こすのは諸刃の剣だとおもいますし、でも失敗しても得るものも大きいんじゃないかなーと。とはいえ、なんでも自分のスタイルがあると思うので、そこはそこで折り合いを付け無いといけないでしょうけど :) では、この Pull Request でぜひ来年も多少なりとも PHP が良い方向に向かうことができますようにという思いを込め、次の方にバトンを渡したいと思います。 11日目 は K Holy さんです。 よろしくお願いします。