[vim] : Vimの置換方法まとめ Vimの標準機能が素晴らしすぎて泣けてくる。編集ファイル内部の置換はまだしもファイル外の置換までできるとは。忘れないようにメモをしておこう。
ファイル内置換 Vimで編集中のファイルにたいしての置換は次の通り。
"ESC"でコマンドモードに切り替えた状態からの説明。
指定ルール 説明 ルール カーソル行の最初の文字だけ置換 :s/// カールル行の全ての文字を置換 :s///g 全ての行の最初の文字だけを置換 :%s/// 全ての行の全ての文字を置換 :%s///g 置換確認モード :%s///gc 指定行数内の全ての文字を置換 :,s///g 正規表現でマッチした文字を\1で後方参照置換 :s/\(正規表現\)/\1/g ※上のスラッシュ(/)をセミコロンで置き換えてもOK。例えばファイルパス置換の時はバックスラッシュでエスケープしないといけないがセミコロン指定では不要になる。
[PHP] : 5分で分かるCakePHPの基礎 PHPのFWを比較することを試みようと思っている。PHPの4大FWと言われる、CakePHP,Symphoney,Zend,Codeigniterは少しずつ勉強を進めよう。まずは軽量かつ覚えやすいというCakePHPについて記述する。※コードの追跡を行ったのはCakePHP version1.3.9。現時点での最新Version。
特徴や規則 RoRの影響を受けて作られている。2006年頃から存在し、PHP4でも使える。 MVC(Model View Controller)。Viewを純粋なPHPでかける。 習得が比較的楽。 ViewHelperが利用可能。ViewHelperで自動的に出力をsanitize。 Action/FilterChainをサポート。 Validatorサポート。 関数の短縮表記。 簡単な処理の流れを説明すると、entrypointからDispatcherが呼び出すControllerを決定し、ControllerはModelとデータのやり取りをして取得結果を整形してViewに渡す という構成。 ファイル名の設定にはアンダースコア、クラス名の設定にはキャメル記法を用いる。(例)my_sample_class.phpというファイル名にMySampleClassというクラスを定義する事ができる。 ファイルやDBの命名規則が厳格。 Controllerクラスの中でメソッド名の接頭辞としてアンダースコアを付けるとURLからはアクセス不可能なメソッドとして扱う事ができる。 Modelクラスの定義もキャメル記法。呼び出されるdbのテーブル名はアンダースコア表記。名前は複数形とする。 呼び出し方は http://Cakeのパス/コントローラ/メソッド(アクション)/パラメータ。内部のrewrite処理によりapp/webroot/index.phpが起動されコントローラ、メソッド、パラメータを解釈。 キャッシュ機構も備えている。(apc,memcache,xcache)。Viewのキャッシュも可能。 Directory Tree 主要なフォルダ構成は次の通り
app : 作成したアプリケーションを設置する場所 config: DB接続やbootstrap、coreの設定ファイルを入れる controllers : controllerとcomponentを入れる libs : ファーストパーティ用のライブラリ locale : 国際化のための文字ファイル models : models,behaviors,datasourcesを入れる plugins : pluginパッケージを入れる tests : testケースのコードを入れる tmp : ログ、セッション情報、データの一時保存場所 vendors : サードパーティ用のライブラリ views : 表示用のファイルを設置 webroot : アプリケーションのエントリポイントなどのドキュメントルート cake : coreライブラリ。中身の変更は禁止。 vendors : 作成したライブラリを設置できる。 処理の流れ詳細 URLとしてのエントリポイント呼び出し(app/webroot/index.
[Mysql] : Mysqlのユーザ/権限管理 GRANT文でユーザ設定をする! GRANT構文はユーザの追加とユーザに対して与える権限の指定や接続可能元のhost名やパスワードの設定が可能。 GRANT文実行後はFLUSH PRIVILEGES;の実行により権限テーブルの再読み込みを行い、権限データを反映させる。 権限の範囲は全てのDB、特定DB内部の全てのテーブル、特定テーブルの全てのカラム、指定テーブルの特定テーブルの計4種類。 構文 GRANT 付与する権限の種類[(カラムリスト)] [,付与する権限の種類[(カラムリスト) …] ON データベース名.テーブル名 TO ユーザー名@ホスト名 [,ユーザー名@ホスト名 …] [IDENTIFIED BY [パスワード]] [WITH [GRANT_OPTION | MAX_QUERIES_PER_HOUR # | MAX_UPDATES_PER_HOUR # | MAX_CONNECTIONS_PER_HOUR #]] 全データベースに何でもできる権限を与える。 sample
googleユーザを作成。 googleユーザに対して全ての権限(ALL PRIVILEGES)を付与。 権限の範囲は全てのDB(*.*)。 localhostからの接続を許可する。 パスワードは'all'として設定。 mysql GRANT ALL PRIVILEGES ON *.* TO google@localhost IDENTIFIED BY 'all'; mysql FLUSH PRIVILEGES; 特定のデータベースにのみ特定の権限を与える。 sample
yahooユーザを作成。 yahooユーザに対して特定の権限を付与(SELECT,INSERT)。 権限の範囲はtestDB内の全てのテーブル(test.*)。 127.0.0.1というIPからの接続を許可する。 パスワードは'db'として設定。 mysql GRANT SELECT,INSERT ON test.
[blog] : 注目各社のTechBlogまとめ 主力ビジネスごとに各社の技術ブログをカテゴリ化しました。RSSでまとめて購読しておくといいかもしれません。個人的にはソーシャル系のDeNA、Gree、mixi、klabのブログが熱いかと思っています。
検索/ポータル 10 ソーシャル系 9 その他 9 検索/ポータル
Google Japan http://googlejapan.blogspot.com/
Yahoo! Japan http://techblog.yahoo.co.jp/
Naver Japan http://naverland.naver.jp/
Baidu Japan http://staffblog.baidu.jp/
Bing Japan http://mssearchjp.wordpress.com/
livedoor http://blog.livedoor.jp/techblog/
Hatena http://d.hatena.ne.jp/hatenatech/
CookPad http://techlife.cookpad.com/
Recruit http://mtl.recruit.co.jp/
ECNavi http://tech.ecnavi.co.jp/
ソーシャル系 Gree http://labs.gree.jp/blog/
mixi http://alpha.mixi.co.jp/blog/
DeNA http://engineer.dena.jp/
twitter http://blog.jp.twitter.com/
Zynga Japan http://labs.unoh.net/
ドワンゴ http://info.dwango.co.jp/rd/
[programming] : WebSocket対応状況のまとめ 概要 Node.jsでWebSocketを試してみる - Yuta.Kikuchiの日記
以前Node.jsを使ったWebSocketの導入についてまとめたので、今回はブラウザ、サーバ言語の対応状況についてまとめてみる。
WebSocketプロトコルの種類 draft-hixie-thewebsocketprotocol-75 draft-hixie-thewebsocketprotocol-76 draft-ietf-hybi-thewebsocketprotocol-00 draft-ietf-hybi-thewebsocketprotocol-06 等
元々はdraft75,76がメインだったようで二つが混在していた。draft-ietf-hybi-thewebsocketprotocol-03、それ以前のプロトコルにセキュリティホールが発見される。
http://gihyo.jp/dev/feature/01/websocket/0003
仕様策定状況 HTML5の仕様からは分離。 各種ブラウザもセキュリティの状況を見ての対応を進めている様子。 websocketの仕様は2011/5月中に策定完了を目標に動いていた。 対応ブラウザ プロトコル ブラウザ draft-hixie-thewebsocketprotocol-75 Google Chrome4 / Safari5.0.0 draft-hixie-thewebsocketprotocol-76 draft-ietf-hybi-thewebsocketprotocol-00 Google Chrome6 / Safari5.0.1 draft-ietf-hybi-thewebsocketprotocol-06 IE HTML5Labs 基本的にはGoogle ChromeとSafariしか対応していない。FF/Operaはデフォルト仕様から外している。 (2011/12/24追記)
[javascript] : Node.jsでWebSocketを試してみる Nodejs サーバサイドJavascript。 V8 Javascriptを利用。 シングルスレッドの非同期処理環境。 処理を待たずにcallbackを実行するイベントループ、ノンブロッキングI/Oを実装。 nodejsの設定は簡単。パッケージ化されているし、buildしてもそれほど時間がかからない。 設定 macでinstallしてみる。以下のどちらか一方を行えば設定は可能だがportのversionは0.2.0、buildの最新は0.4.8。post installは少し時間がかかる。
port install $ sudo port install nodejs $ node -v v0.2.0 make install $ fetch http://nodejs.org/dist/node-v0.4.8.tar.gz $ tar -xzf node-v0.4.8.tar.gz $ cd node-v0.4.8 $ ./configure $ sudo make install $ ./node -v v0.4.8 実行 日本語ドキュメントにあるサンプルをそのまま実行してみる。サンプルはHttp,Socketサーバ。以下のそれぞれのJavascriptっぽいコードをsample.jsなどのファイルとして保存してnodeコマンドにより実行する。
Http スクリプト
var http = require('http'); http.createServer(function (req, res) { res.
[Linux] : ackコマンド 目次 概要 設定 port install コマンドを作る cpan install 設定ファイル コマンドの実例 通常検索 検索対象から外す 全部検索 Pager指定 ファイルタイプ指定 大小文字区別なし ファイル検索 ファイルパス名の正規表現指定 ファイルパス+ファイル名の正規表現指定 完全一致検索 指定単語の前後行出力 一致したファイル名を出力 再起的に検索しない group指定を外す 検索対象から特定ディレクトリを外す 猫キャラ表示 デフォルト指定? 概要 ackコマンド ソースコード検索はgrepが有名だが、より強力なツールと言われるackを試してみる。 grepより処理が早い。(設定ファイルなど無視) grepより文法が短くて済む。 grepと文法が似ている。 grepの機能がほとんど使えて、findの要素も持つ。 Perlで書かれていてwindowsでも動く。 Perlの正規表現が使える。 設定 macで試してみる。以下3つのうちどちらかの手順で設定が行える。
1. port install 1行コマンドを実行するだけ。
sudo port install p5-app-ack 2.コマンド作る 自分のローカルフォルダに設置。PATHの設定も必要。
[javascript] : 超簡単! ボタン一つで登録可能なソーシャルメディアShareBookmarklet
概要 上記アイコンのWebサービスに対してクリックや画面タッチで簡単にシェアができるBookmarkletを作成しました。 Webページには各ソーシャルサービスに対するシェアボタン/bookmarkボタンが無い場合が多い。シェアボタン/bookmarkボタンが無いとユーザは自分で各サービスのページに遷移し、内容を登録しなければならないが、それはとても面倒である。 上記アイコンのサービスはそれぞれでシェア用のbookmarkletを作成している場合もあるが、サービスごとのbookmarklet管理はユーザの負担。 addthisというマルチシェアサービスには多サービスへの展開可能なbookmarkletが存在するが、アイコンが小さく使いづらいのとsmartphone非対応。 設定 以下のいずれかの方法でbookmark登録してください。※対応しているブラウザはページ下部で確認してください。 次のリンク先に遷移し、ShareBookmarkletというものを登録します。bookmarklet一覧 次のbookmarkletスクリプトを直接登録します。 javascript:void((function(){var%20s=document.createElement('script');s.setAttribute('src','http://mobiles-proxy.appspot.com/statics/js/multishare.js');s.setAttribute('id','multishare');document.body.appendChild(s)})()) スマートフォンで利用したい人向けにbookmarkletスクリプトのQRCodeを張っておきます。スマートフォンで読み取ったデータをbookmarkとして保存してください。スマートフォンでの登録方法は次のページが参考になると思います。http://ascii.jp/elem/000/000/150/150144/
動作イメージ 閲覧しているWebページ上で登録したbookmarkletをクリックするとアイコンメニューがページ左に表示されます。
各サービスアイコンのどれかをクリックします。下の画像はtwitterの例です。クリックするとtwitterの画面に遷移し、タイトルと短縮URLがつぶやきのエリアに入ります。その他のソーシャルサービスでも同じ様にbookmarkやshareが簡単にできます。
iPhoneでも同様の事が可能です。twitterのボタンをクリックするとmobileのtwitterページに遷移します。後は上の例と同じです。
シェア対象サービス 以下のサービスにシェアすることを可能としています。
hatena bookmark twitter facebook livedoor clip delicious google bookmark yahoo bookmark 動作確認 以下のブラウザで動作確認をしています。※android端末は現在動作確認中です。
[javascript] : jQueryの参考にすべきSiteのまとめ 基礎 jQuery日本語リファレンス http://semooh.jp/jquery/ 文法チェックに誰もが見るサイト。 jQuery速習講座 http://ascii.jp/elem/000/000/498/498710/ selector、命令、イベント、アニメーション、UIについての解説。初心者にとっては分かりやすい。 jQuery入門 http://www.openspc2.org/JavaScript/Ajax/jQuery_study/ver1.3.1/index.html jQueryの基礎的な内容についてのまとめ。 一日で学ぶjQuery http://blog.spicebox.jp/labs/2009/04/_jquery.html jQueryについてサンプルをまとめたサイト。 UI jQueryサンプル集 http://www.designwalker.com/2008/04/jquery.html 画像の処理のサンプル集 jQuery UI 実践サンプル http://jsajax.com/jQueryUI.aspx Interactions、Widgets、Effectsを紹介。シンプルな例が多い。 150 best jQuery effects for web designers and developers http://www.webdesignshock.com/showcase/best-jquery-effects/ アニメーションからインタフェースまで充実 jQuery+CSSで実装するナビゲーションメニュー総集編 http://kachibito.net/web-design/css-menu-with-jquery-collection.html menu中心の内容 Plugin jQueryList http://jquerylist.
[Mysql] : MYSQL INDEXのまとめ 概要 大規模なデータを管理するためのMYSQL-INDEXについて必要な情報をまとめてみます PRIMARYKEY / UNIQKEY / INDEXについて PRIMARYKEYとはそのテーブル内において重複が許されないもので、自動的にINDEXが張られる。 UNIQKEYとはそのテーブル内に置いて重複を許さない。ただし、NOT NULLにしなければNULLの重複は認める。 INDEXとは特定の値を持つレコードを高速に検索するための木構造データ。INDEXを張らないとテーブル全体のデータを検索してしまう。最適化されたINDEXを利用するとテーブルデータを全く参照せずにデータを返却できる。 まとめるとPRIMARYKEY = UNIQKEY + INDEX 複合INDEXについて 複数のカラムに対してのINDEXを作成する事。単一のINDEXより高速な検索ができる。 複合INDEXを利用する場合はカラム順番が重要。例えば複合INDEXの第一KEYがカラムA,第二KEYがカラムBとなっている時、検索条件にAが含まれない場合は当然ながらINDEXは使用されない。これは複合INDEXの数が3つ以上の場合にも同じ事が言え、A,B,Cの順番の複合INDEXの場合、A,Cしか検索条件に含まれない場合はAを指定した時のみのパフォーマンスと同等になる。 部分INDEX INDEXのデータ容量が気になる場合は部分INDEXを用いることができる。たとえば文字列の前から数ByteまでをINDEXとして利用するなど。 部分INDEXの場合、部分一致した複数のレコードが一致してしまう可能性がある。 INDEXのデータ構造 INDEXの木構造にもいくつか種類がある。InnoDBではBtree,MyISAMでもデフォルトではBtreeを採用。
BtreeINDEX : 一般的なINDEX構造。データのバランスが取れている木構造。 HashINDEX : Hashを利用したINDEX構造 RtreeINDEX : 幾何データ型専用のINDEX構造 INDEXが使われるケース 参考:http://slashdot.jp/journal.pl?op=display&uid=4&id=26710
フィールド値を定数と比較するとき (where name = 'hogehoge') フィールド値でJOINするとき (where a.