打ち合わせで議事録とるときは、マークダウンエディタが便利で、Haroopadを使い始めました。
IE で Option の jQuery.toggle() が動作しない
あるタイミングで、Optionの中身を非表示にしたいと言う事ある。
jQueryでそれを書こうとすると
$([selector]).toggle(false); $([selector]).css('display', 'none');
のどちらかで非表示にできるはずですが、IEでは表示になりません。
なので、Option を コピーして擬似的にtoggleを実装します。
$(function() { $('body').append('<select id="copy" style="display:none;"></select>'); $('select[name=list]').eq(0).children().clone().prependTo('#copy'); $('input[type=radio][name=switch]').change(function() { switchEventTime($('input[type=radio][name=switch]:checked')); }); switchEventTime($('input[type=radio][name=switch]:checked')); function switchEventTime(_this) { if (!_this) { return false; } var val = $(_this).val(); if (val == '1') { var cur = $('select[name=list]').val(); $('select[name=list]').children().remove(); $('#copy').children().each(function () { var option = $(this); if (option.val() != '') { return; } else { $('select[name=list]').append(option.clone()); } }); $('select[name=list]').val(cur); } else { var cur = $('select[name=list]').val(); $('select[name=list]').children().remove(); $('#copy').children().each(function () { var option = $(this); $('select[name=list]').append(option.clone()); }); $('select[name=list]').val(cur); } } });
バーチャルホストに定義されてないドメインからのアクセスをエラーにする設定
バーチャルホストに定義されてないドメインからアクセスされた場合は、バーチャルホストの設定の一番上に設定されたドメインが有効になります。
定義されてないドメインからアクセスされた場合は、エラーにしたかったので、バーチャルホストの設定ファイルの一番上に
<VirtualHost *:80> ServerName dummy <Location /> Order deny,allow Deny from All </Location> </VirtualHost>
と書いて、再起動すると定義されてないドメインからアクセスされた場合は403エラーを返すようになりました。
スマートフォンでアクセスした際に W3 Total Cache が原因で WPtouch が有効にならない対応
タイトル通りですが、スマートフォンでアクセスしてもキャッシュされたPCのページが表示されていたので気付きました。
W3 Total Cache の設定で
[Performance]->[User Agent Groups]から、[hige]と[low]というユーザーエージェントグループが設定されているので、Enabledをチェックして有効にすると、ユーザーエージェントグループに設定されているユーザーエージェントからのアクセスの場合、キャッシュを表示しないようになります。
MacVimの不可視文字のカラー設定
久しぶりにPerlのお仕事の依頼で、MacVimを使って作成しました。普段はタブの代わりにスペースにしているので気付かなかったのですが、頂いたソースがタブだったので、タブの色が目障り。
カラースキーマはobsidian2.vim – Obsidian2 Color scheme based on Notepad++ obsidian Color scheme : vim online.を使っており、タブは、SpecialKeyという名前で定義されているようなので、そこを修正しました。
見やすくなりました。
iTerm2とtmuxを使ってみた感想
【図解】ゼロから始めるモダンなコマンドライン環境作り #iTerm2 #tmux #zsh|CodeIQ MAGAZINE.
Terminalはtotalterminalを使っていますが、モダンな環境と呼ばれているiTerm2とtmuxを使ってみました。
時間の制限があり、あまり試せなかったのですが、今のところはtotalterminalで事足りるかな、という印象でした。
tmuxとtotalterminalと併用してみて、iTerm2が必要になったら、乗り換えようと思います。
CocoaPodsでライブラリを管理する
Objective-Cライブラリ管理ツールCocoaPodsを使い始めたのでインストールメモを書きます。
CocoaPodsインストール
gemでインストールします。
$ sudo gem install cocoapods
CocoaPodsをセットアップします。
$ pod setup Setting up CocoaPods master repo Setup completed (read-only access)
pod setupを実行すると~/.cocoapodsディレクトリ内でライブラリの管理を行うようにセットアップをします。
$ ll -a ~/.cocoapods/ total 0 drwxr-xr-x 3 suusuke staff 102 5 20 10:48 . drwxr-xr-x+ 51 suusuke staff 1734 5 20 10:48 .. drwxr-xr-x 3 suusuke staff 102 5 20 10:48 repos
CocoaPodsを使ってみる
CocoaPodsSampleというサンプルプロジェクトを作って、AFNetworkingライブラリを使う想定で使ってみます。
サンプルプロジェクトの下に、Podfileという名前で管理するライブラリを記述していきます。
記述方法は、
開発レシピ:Objective-Cのライブラリ管理ツール CocoaPods | iOS開発者@日本.
に詳しく書いてあるので参考にしました。
$ cd ~/iPhone/CocoaPodsSample/ $ vi Podfile platform :ios, "7.0" pod 'AFNetworking'
pod installコマンドでライブラリをインストールします。
$ pod install Analyzing dependencies Downloading dependencies Installing AFNetworking (2.2.4) Generating Pods project Integrating client project [!] From now on use `CocoaPodsSample.xcworkspace`.
CocoaPodsSample.xcworkspaceという名前でワークスペースファイルができているので、開くとAFNetworkingライブラリが追加されています。
PuserでPush通知を実装する(WEB)
更新をリアルタイムで通知する方法
リアルタイムといえばNode.jsですが、PHPで作られたWEBサイトでリアルタイム通知を実装する必要があったので、
- Ajaxで一定間隔でリクエストを送る
- PHPでcomet実装する
- PHPでWebSocketを実装する
- Pusherを利用する
など検討した結果、リソースをなるべく消費したくなかったので、Pusherを使うことにしました。
Pusher登録
無料でWebsocketの接続数が最大20までで1日あたりのメッセージ発行数が10万回以内であれば利用することができます。
名前とメールアドレス、パスワードを設定するだけで使うことが出来ます。
App idとAccess Token
登録が完了すると、App id,key,secretが表示されるのでひかえます。
クライアント実装
Code examplesを参考にします。
<!DOCTYPE html> <head> <title>Pusher Test</title> <script src="http://js.pusher.com/2.2/pusher.min.js" type="text/javascript"></script> <script type="text/javascript"> // Enable pusher logging - don't include this in production Pusher.log = function(message) { if (window.console && window.console.log) { window.console.log(message); } }; var pusher = new Pusher('******'); var channel = pusher.subscribe('test_channel'); channel.bind('my_event', function(data) { alert(data.message); }); </script> </head>
サーバー実装
サーバー側のライブラリは豊富にあります。Pusher Server Libraries | Pusher.PHPなので、pusher/pusher-php-serverを使いました。
require('./Pusher.php'); $pusher = new Pusher(PUSHER_KEY, PUSHER_SECRET, PUSHER_APPID); $pusher->trigger('test_channel', 'my_event', array('message' => 'Hello Pusher!'));
triggerメソッドの第3引数に配列でパラメータを渡すとjson形式でクライアントで取得出来ます。
参考サイト
Auto Load and Refresh Div every 10 Seconds with jQuery and Ajax.
Xcode5でProvisioning Profileの確認
Xcode5以前はOrganizerから、更新や削除ができたのですが、Xcode5になってから、Preferencesから参照、更新、削除を行うようです。
Xcodeの[Preferences..]から、設定を開き、[Accounts]タブを開きます。
対象のApple IDを選択し、View Details..からProvisioning Profileの更新や確認、削除ができます。
新しいMacのXcode5にインストールしたプラグイン
プラグインディレクトリ作成
$ mkdir -p ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins
Alcatraz
プラグイン管理用のプラグイン。
Alcatraz : Xcode Package Manager.
XVim
XcodeのVimプラグイン。
Nothing But Programming – Software.
Alcatrazからインストールを試みてみたが、インストールが上手くいかないので、手動でインストール。
5/13追記
XVim を Xcode 5.1 にインストール – Unmotivated.
Xcode5.1にアップデートしたら動かなくなったので上記方法でインストール。
Obsidian Code Theme for Xcode
カラーテーマ。
Obsidian Code Theme for Xcode.
Alcatrazからインストール。
Fontサイズがすべて18ptに、なってしまってたので、11ptに変更。
5/21追記
すべてAlcatrazからインストール。
XTodo
TODOや、FIXMEなどのコード内の注釈を抜き出して表示してくれるプラグイン。
https://github.com/trawor/XToDo.
KSImageNamed-Xcode
UIImageのファイル名を補完してくれるプラグイン
https://github.com/ksuther/KSImageNamed-Xcode.
XAlign
コードを自動的に整列するプラグイン
https://github.com/qfish/XAlign.
その他
秘密鍵のエクスポート・インポート
http://www.lastday.jp/2012/09/02/multiple-mac-ios-application
http://sbkro.hatenablog.jp/entry/2012/06/05/225631