読者です 読者をやめる 読者になる 読者になる

Opera 15.00 で Chrome の拡張機能をなんとなくうごかす(自己責任)

とても暫定的なてきとうな技術者的にはけっこうバッドな方法だと自覚しているので対処療法なのでやるかは自己責任。 Opera 15.00 リリース 12.15 から Opera Next だった 15 が今日リリースされました。前から言われていたとおり Chromium ベースのものです…

クロスブラウザで確認するとき、modern.IE というIEテスト環境がすごい

初めて知った。英語は知らないけど日本語版はちょうど今年4月だから、わりと最近の話みたい。 Home | Testing made easier in Internet Explorer | modern.IE modern.IE の更新: VM の無料ダウンロード、Windows 8 QuickStart Kit、コード スキャン ツールの…

外部API使用でも安心してコードをかくための、mock をつかったテスト

Twitter や Facebook に限らず、外部APIを叩かなければならない場面は出てくる。ただでさえテストコードかけないと不安になるのに、外部APIの挙動にあわせてうまく連携しないといけないケースでテストコードがかけないのはかなりこわい。そういうとき、mock …

mercurial で一部の変更をコミットする

ある機能やバグを修正するとき、ついでにまとめて修正してしまうとかある。そのとき、まとめて修正してしまったのは仕方ないけれどコミットとしては別にしておきたいときに使う。git で言うと add するタイミングや add -p 的なこと。 結論 hg record 拡張つ…

Django のダミーデータを大量投入するスクリプトを対話環境に対応させるシェルスクリプトで自動化した

やっぱりだるかった Django アプリのダミーデータを大量投入するスクリプトをかく - AtAsAtAmAtArAのをコピペ運用でもよかったけど、コピペ条件かわったりいちいちもうそういうのだるかったので、やっぱりデータを初期化するところまで自動化することにした…

Facebook いいねボタンの挙動を localhost で検証する

Facebook app 登録 まあしましょう ドメイン設定が必要 app の設定で localhost とかだとなんかだめっぽかったので以下を参考にした localhost環境で、Facebook のJavaScript APIでOAuth認証をする - Goodpic testapp.comこの場合 Mac がローカルだからいい…

Django でメールを送信と確認

メールを送信する。Python 標準モジュールやライブラリにもありそうだけど、Django 組み込みであるのでそれを利用する。 日本語1.4::メールの送信 — Django 1.4 documentation つかう ドキュメントのままです from django.core.mail import send_mail send_m…

grep/ack/ag でのエスケープがわからないなら直接文字列リテラル渡せばいいじゃない

sh

適当にエスケープしてメタ文字消して置換しようとしたけど、正直よくわからなかった。たとえばこういうもの Obj.objects.create(**kwargs) こういうとき愚直に「. をエスケープして……あれ()ってクオートで囲むの……あれ……」とかやってた 別に単純な文字列のマ…

Django のコマンドを作って定期的に実行する

なんてことはないが、ちょっとハマったのでメモ 流れ Django の python manage.py some_command をつくる crontab に登録する それだけなんだけど、復習も込めて Django でカスタムコマンドをつくる 単純なスクリプトならそのまま Python のスクリプトとして…

Python の全角半角処理に zenhan が便利

バリデーションとか検索とか だいたい全角半角でどうとか変換とかかませたりする。で、Python で有名なところだと zenhan というのがある。 導入 PyPi にある。うれしい。 pip install zenhan つかう 公式にもあるけど、ヘルプ見た感じでも難しくない import…

tmux の起動時セッションを自動化する tmuxinator いれた

開発用 Ubuntu VM はスリープっぽい保存はするけど、ローカルの Mac は落とさないといけない。で、毎回 ssh でウィンドウやペインごとに ssh つないだりするのはだるい。ということで tmuxinator いれた。 導入 いろいろある。特に ruby の開発してないし、…

Django アプリのダミーデータを大量投入するスクリプトをかく

モデルのフィールドが変わったり名前変わったりしそうだし、開発初期だと sqlite でサクっとつくって壊したりする。というときでも、とりあえずサイトを動かしたりするためになんらかのダミーデータを大量投入する必要はある。で、つくってたりした。データ…

Django でページング

よくある話、ページングしたかった。で、実際そういう機能がある。前は djang-pagination っていうのをつかったことがあったけど 1.3 くらいから使えなくなったとか、また、まあ別にそんなに難しい話でもなさそうだったので普通にフレームワークの機能で実装…

vim で python 開発するとき pyflakes + PEP8 = flake8 が便利

補完とかは Python 開発で便利な jedi-vim いれてみたらたしかにライフチェンジングだった - AtAsAtAmAtArA とかみよう。 PEP8 する必要があった 今まではシンタックスだけの pyflakes だけしてた。PEP8 はある程度守ってるけど80行折り返しと行間については…

sed + awk をすこしさわった

sh

dotinstall で sed と awk の講座が出たから*1せっかくなのでやってみた。思えば grep | sed しか知らないくらいだし、awk なにそれこわいという状態だし。 sed入門 (全10回) - プログラミングならドットインストール AWK入門 (全13回) - プログラミングなら…

django-debug-toolbar は便利(とVirtualboxのVMで表示にハマった件について)

class base view がわからない 存在は前から知っていたけど、まあ別にいいやって思ってて使ってなかった。でも久々の Django でいろいろ忘れてるし、あと 1.5 を使うのはいいけど class base view が mixin しまくってて拡張や仕様変更や保守に強そうという…

grunt を軽く触ってついでに livereload させてみた

Sphinx のビルドをファイル監視して自動で行う - AtAsAtAmAtArA でファイル監視してビルドとかやってるように、ウェブ開発でファイル監視してリロードしたいとかはある。古くは mala さんが location.href に xhr をとばすっていう方法でやってたようだし、…

JavaScript、奥が深すぎる

今まで JS 関連のことをぽつぽつエントリにしていたけど、それにはみ出るトピックを羅列する。 いちばん印象的だったところ 関数について考えること。いまのところ、JavaScript を復習するにあたってこれがいちばんの大本になると思う。プログラミング全般と…

jasmine-node で JavaScript のロジックのテストをする

JS でもテストしたい DOM や非同期はおいといて、ロジックくらいテストしたい。Sinon.js とかモックしたり、非同期処理のテストのライブラリがあったり、それこそ古くからは Selenium とかあるけど、いまはそこまでしなくていいから JS でテストをするっての…

JavaScript で文字列や日時フォーマットを自前でやる

思うところがあったのでやった。基礎練習とか素振りみたいなものです。JavaScript の標準の文字列出力はあまりに貧弱すぎるからそこらへんなんとかなんないかやってみた。ライブラリを使うなら日時フォーマットについては Underscoe.String.js とかあるし、…

JavaScript 関連のちょっとしたメモ

気になって調べたり、見つけたもの。小ネタ。基本的にはmonjudoh/BeautifulProperties.js · GitHub をみてたってのがきっかけ。 prototype 汚染しちゃだめなのって Object と Array だっけ? というか prototype 汚染しないほうがいいのってなんでだっけ?と…

いまさら JSDeferred と $.Deferred を少しさわったメモ

コールバック地獄的なそういうあれを垣間見てしまったので、たしかにもうちょっといいかんじに解決したいってのがよくわかった。そこで書き方を変えることでいい感じに . でチェインしたり例外処理をしやすくするために Deferred がある。ので、簡単なメモと…

Backbone.js をちょっとだけさわった

JS でMVC的に切り分けるということをちょっと学びたかったのですこし触った。具体的に触発されたのはタイミングもあるけど、 フロントエンドJavaScriptにおける設計とテスト をみたってのもある。なにがしたいかって、JS において DOM 操作はともかく、ロジ…

reStructuredText 用の簡単なスニペットをつくった

vim

wiki や Redmine も markdown ではなくて reST だし、Sphinx つかうこともあるのでだいたい reST を使っている。プライベートや各種メモも Dropbox に todo.rst や anken.rst みたいな感じで管理してる。で、 riv.vim は高機能だけどちょっと面倒だし*1、な…

Sphinx で日本語を含む PDF 出力をする

PDF を納める必要があったのでやった。Sphinx というか reST での日本語出力には若干の難があるらしい。けど、これも先人のとおりにやったら簡単にできた。 rst2pdf 方式 (8日目) Sphinx から PDF を生成してみよう (rst2pdf 編) - Hack like a rolling ston…

Sphinx のビルドをファイル監視して自動で行う

Sphinx でドキュメントを書く必要があったので、せっかくなので make html をいちいち手打ちしないで自動でビルドするようにした。 先人はいる ファイル監視してスクリプトってのはまあある話で、Python なら watchdog というのが使えるようだ。 参考 watchd…

hg log の出力をもうちょっといい感じに整形する

Feb とか Fri とかわかんない いまのところこんなかんじの .hgrc をつかっていて、あまり不自由はなかった。 [ui] username = atasatamatara editor = vim [extensions] color = graphlog = pager = [color] status.modified = magenta bold status.added = …

AWS の EC2 と S3 をちょっとさわった

目的はある特定の数日間だけサーバーが欲しいということだったんだけど、いろいろ流れて使わないことになった。でもまあ AWS のさわりくらいやっておこう。というメモ。 ざっくりとした理解 とりあえず公式やそれに準じるドキュメントを読めばだいたいわかる…

シェルスクリプトについてすこし学んだ

sh

「今年はインフラやデプロイやシェルスクリプトはできなくていい」とはいったものの、ある人のスクリプトがたしかに便利でいい感じだった。ので、ちょっと触発されて少しだけかいて学んだ。以下、簡単なメモ。[改訂新版] シェルスクリプト基本リファレンス…

パーフェクトPythonを読んだ

パーフェクトPython (PERFECT SERIES 5)作者: Pythonサポーターズ出版社/メーカー: 技術評論社発売日: 2013/03/05メディア: 大型本購入: 1人 クリック: 47回この商品を含むブログ (2件) を見る 1冊で言語仕様から最新の技術までを網羅した内容。網羅的に解説…

zsh の補完やハイライトをガリガリ増やした

zsh

同時に起動に800msくらいかかってちょっと重い感あるけど、立ち上がってしまえば強力なのでいい感じになってきた。time (source ~/.zshrc ) とかでプロファイリングできるっぽいけど、いまはまだやってない。メモ。 プロンプトのハイライト とりあえずどんど…

vim で JavaScript の開発するときに最近いれた設定やプラグインとか

具体的にはセンチャしてて「なんかもっとこう楽になれないの」と思ったので、いろいろ設定をしてた。メモ。 コマンドモードの補完 これは JS とは関係ないけど、知らなかったので。 : で始まるコマンドモードがあきらかに貧弱な挙動しかできないのはなんとか…

Vim で tmux で CUI 環境の Ubuntu Server でもとにかくコピペがしたい

というかコピーがしたい。gVim をつかっているわけではないし使う気もないけど -clipboard はやっぱり面倒。というか、解決して思ったのはやっぱりエディタなのにコピペが不自由とかありえねーだろってことだった。 まずは設定 set uncommand=clipboard これ…

Ag.vim と Qfreprece.vim の組み合わせで簡単置換処理する

vim

まあ grep | sed ってするのがありがちだけど、IDE だったらリファクタリングツールあるし、vim 内で置換してもいいけど、もっと確実に楽に早くやれるとうれしいよね、というような話。 ag ってなに grep をもっと高速に楽にできるようにした Perl のコマン…

Python 開発で便利な jedi-vim いれてみたらたしかにライフチェンジングだった

+python コンパイルがだるそうだった Big Sky :: python 補完のVimプラグイン「jedi-vim」がスゲー をみてからきになってはいたけどだらだらしててやってなかった。./configure, make, make install さえだるい*1。けど、誰かの記事でまた「vim + python の…

Sencha Touchパーフェクトガイドを読んだ

これはこれから Sencha Touch 開発する人は必読だね!HTML5モバイルアプリケーションフレームワーク Sencha Touchパーフェクトガイド作者: 大谷弘喜,稲垣龍一,川野忍,土江拓郎,森本恭平,高岡大介出版社/メーカー: アスキー・メディアワークス発売日: 2013/02…

PhoneGap(Cordova) 2.3.0 から使える InAppBrowser でURLのマルチバイト対応

PhoneGap(Cordova) は 2.3.0 からプラグインだった childBrowser 相当のものを本家にとりこんだ。PhoneGapとは別に WebView をたちあげたい場合に使う。 PhoneGap API Documentation まあドキュメントのまんまで、 window.open をラップしてくる。というか勝…

JavaScript の名前空間になぜ Function Object をつくるんだろうって話

JS で名前空間分けられないから独自に $ であるとか OreOreModule とかで一度空間を作ってしまってそこでいろいろ定義するというのがありがちなパターンだけど、なんで Object じゃだめなんだろうって思ってちょっと調べた。 keyword prototype, new, Object…

Sencha Touch 2 + PhoneGap(Cordova)での開発メモ

死ぬほどハマったしいまでもわからないところあるけどすべてを投げ出してメモする。箇条書きのメモベース。 model, store, Ext.Ajax 関連 model の setData, getData は model 内の data と同じ つまり、 Ext.data.Model で定義した field があって、それら…

merge について

merge とはなにか と、だいそれては言えないけど、ひとつの誤解がとけた。それは「merge とは『別の』ブランチをとりこむことではなく、『指定の』ブランチを取り込むこと。なので、『今の』ブランチを取り込むことはありえる」ということ。 まあチケットベ…

JavaScript の this, call/apply, callback のメモ

具体的には Sencha Touch 2 がきつい とはいえ仕事でちゃんとJSかいた経験って思えばないわけで*1、だいぶ学んだ。ハマったところとわかったところをメモる。 this について 最近 JavaScriptのthisの覚え方 - Qiita [キータ] がおそらくのきっかけで this に…

Cookieの値に = が入っているときの自前パース

たぶんそれ jQuery.cookie でできるよ と思うけど、今回は jQuery が使えない(使えなくはないがそれだけのためにjQueryをいれたくない)という状況だし、小さな処理なので自前実装した。 具体的な文字列 こんな感じの value からある key のときの値を取り出…

はてなブログで簡易はてなカレンダーモジュール機能を実装する

ある人から「記事一覧機能はいいけど縦長すぎる。はてダみたいなのがほしかった」ほしいというのでどうやらそれっぽいものならできそうなのでつくってみた。所要時間は調査(5分)、実装(15分)、テストやデザインなどの調整(10分)って感じだったので30分くらい…

特定のオブジェクトのプロパティを一覧表示して実行する

デバッグの都合、JavaScriptから直接プロパティを参照したかった XHR 関係のレスポンスをみたいんだけど、事情によりデバッグがしづらいのでプロパティを全部アラートするようなものをかいた。以下コードコメントつき。 // XMLHttpRequest は送信済みで、失…

JavaScript で document.cookie の値を消す

超小ネタ ググればいろいろあるけどとりいそぎこれが簡単。Cookie の仕様上 expires を過去の日付にすればいい。 // 日付作成 var d = new Date(); // 1970/01/01 にする d.setTime(0) // expiresで消す document.cookie = 'hoge_cookie_key = hoge_cookie_v…

Mercurial で 既にリポジトリに入っているファイル名を変更する

事情により既にリポジトリに追加されているファイル名を変更したくなった。具体的には Sencha Touch 2 でリポジトリをつくるときにスキャッフォールドとして hoge.js みたいにいっぱい配置しちゃってたけど、実際は Hoge.js と大文字にしないと認識されない…

今年の抱負みたいなそういう

年末にふりかえりしたけどいちおうかいておこう。 やること 仕事関係のプログラミングや設計 Python/Django HTML/CSS/JS 技術要素としてはおそらく Python/Django だろうけど今は Sencha Touch 2やってたりするし HTML/CSS/JS 関係もあるのかな。まあウェブ…

Unite.vimを便利に使うたったひとつの考え方(Vim Advent Calander 2012 30日目)

vim

おまだれ Vim Advent Calendar 2012 : ATND 30日目の記事です。ほんとはもうちょっとちゃんといろいろ書こうと思ってたんですけど、いろいろ時間なかったり面倒で、小ネタです。 おまえの .vimrc どれよ NeoBunble, neocomplecache, neosnippet, Unite, vimf…

今年やったこと & これからについて考えること(キャリアプラン的ななにか)

年末なので棚おろし。今年はあとは大掃除して終わり。納会。 今年やったこと 1,2月: テストコードをかいてた(Python/Django) 正常系テストでチェックすべき項目留意点メモ - AtAsAtAmAtArA テストコードを書く上での留意点メモ - AtAsAtAmAtArA 3-8月: 某案…

Sencha Touch 2 で Ext.tab.Panel をネストさせるときハマった

タブパネルをネストさせたかった タブパネルって iOS の下によくあるメニューみたいなあれね。具体的には以下のようなコード。まず、ベースとなるタブパネルを定義する。 Ext.define('MyApp.view.BaseTab', { extend: 'Ext.tab.Panel', config: { // したに…