Elementsデザインのお仕事とかしないのでElementsでいいんです。GIMPPhotoshopが無い時はこっちを。FireAlpacaMacとWindowsで使えるフリーのペイントツール。Inkscapeドローツール。IllustratorもElementsみたいなの出してくれませんかね、Adobeさん。Store)ドローツール。セールの時にとりあえず手に入れたのであんまり使ってない。Pencilアプリケーションのプロトタイピングツール。MacとかiPhoneとかのステンシルがあって画面をデザインするやつ。その他AppCleanerアプリをクリーンにアンインストールするツール。.appのほかに関連する設定ファイルなども削除してくれる。TrueCrypt定番のディスク暗号化ツール。物理ディスク以外にファイルコンテナでの運用もできるので気軽に使える。Store)パスワード管理ソフト。Windowsやスマートフォン版もあって同期できる。これなかったらパスワードの管理どうするの?ってぐらい。パスワード管理ソフト。オープンソースのパスワード管理ソフト。Piにディスプレイもキーボードも繋がずに部屋の隅っこに転がしておいてリモートからアクセスするには、IPアドレスを知らないといけないわけだけど、せっかくのポータブルなRasPiに固定IPアドレスを設定するのも微妙な感じがするので、mDNSを活用してみることにした。Appleが好きなアレ。コンピュータ名.localでアクセスできるやつ。Linuxでもパッケージ名が違ったりするぐらいでだいたい同じ。rebootホスト名の設定アクセスするためのドメインが"ホスト名.local"になるので、なにはともあれホスト名を設定する。libnss-mdnsちなみにavahiがmDNS/DNS-SDの実装で主にresponderとして使う感じ*1で、nss-mdnsの方はNSSのhostsでmDNSによる名前解決をサポートするためのプラグイン。言うとavahi-daemonがこのマシンをmDNSで発見してもらうためのサーバで、nss-mdnsが別のマシンをmDNSで見つけるためのクライアントみたいな感じ。今回の用途だとavahi-daemonだけあればよくて、RasPiからどっかへ.localでアクセスする気がないならlibnss-mdnsはなくてもいいかも。avahiの設定/etc/avahi/servicesに応答させたいサービスの設定ファイルを作る。sshならこんな感じ。avahi.serviceで。</service></service-group>で、avahi-daemon再起動。restartあとiptablesとかでファイアウォールを設定している場合は、224.0.0.251:5353宛のUDPを通す必要がある。Piにアクセスできるようになったはず。nss-mdnsの設定/etc/nsswitch.confのhosts項目を書き換えるんだけど、インストールした時点で自動的に書き換えられてるはず。mdns4再起動とかは特にない。avahi-browseavahi-utilsに入ってるavahi-browseを使うとネットワーク内の利用可能なサービスを一覧表示できる。開発ツール完全に遅れてる感があるけど、今更ながらにSassとCompassの環境を整えてみた。前置きとかどうでもいい人は「インストール」とかその辺の見出しだけ読んでください。installとcompileとかwatchをちょろっとやってるだけなので、既に使いこなしてる人はそっとタブを閉じると時間が節約できます。Stylesheetshttp://sass-lang.com/SassはCSSをもっと便利で効率的にコーディングするための技術。競合するものとしてLESSやStylusもあるけど、最近はCompassとのセットでSassが流行ってる様子。Sassを使うとCSSがこんな風に書けるようになる。9%)これをコンパイルすると下のようなCSSが生成される。#2ca2af;}SassはHamlやSlimのようなインデントでネストを表現する。その他にも変数や関数や継承といったプログラミング的なことができる。CSS)という普通のCSSを拡張したような記法も用意されている。いうかSCSSはCSS3のスーパーセット的な文法になっていて、普通のCSSはSCSSとしても扱える。普通にCSSで書いて、少しずつ慣れていきたい場合はSCSSで書くと良いかもしれない。ちなみに上記の例をSCSSで書くとこんな感じになる。}}細かい機能については公式マニュアルや色々な解説サイトを見てもらうとして、早速使ってみる。インストールSassはRubyでできてるのでRubyが入っていることが前提となる。Macなら標準で入っているもの、Windowsなら別途RubyInstallerなどで入れたものを使う。rbenvで入れたものでもよい。Sassはgemになってるので普通にgemコマンドでインストールができる。sassこれでsassコマンドが使えるようになる。:コンパイルsass/scssファイルのコンパイルはこんな感じ。example.css出力ファイルを省略すると画面に表示される。出力されるCSSの形式を制御できる。デフォルトはnestedで、インデントされた感じで出力され、compressedにすると一行で出力される。ちなみに上の例はexpandedで出力した。ファイルを編集したら自動的にコンパイルする--watchというオプションを使用すると、ファイルの変更があったら自動的にコンパイルしてくれるモードで起動ができる。入力と出力はコロンで区切って指定するので注意。sass:cssこちらはファイルだけでなくディレクトリも指定できるので、sass:cssとか指定して起動しておくと便利。これを起動した状態でsass/example.sassを編集すると、自動的にコンパイルされたものがcss/example.cssに生成される。簡単な使い方はこんなところ。あとは-hを眺めるとかマニュアルを眺めるとかググるとかして新しい発見をしよう。Documentationhttp://compass-style.org/CompassはSassを利用したCSSフレームワーク集(?)で、色々なmixin集とかスプライトの自動生成とか便利な機能が揃ったもの。border-radius(2px);}こんな感じのCSSにしてくれる。2px;}他にもCSSリセットとかbox-shadowとか色々あって、それらをベンダープレフィクスだけでなくクロスブラウザも考慮して自動的に変換してくれる。スプライトさらにCompassを使うとスプライト用画像とそれを使うためのCSSも自動的に生成してくれる。all-my-icons-sprites;こんな画像ファイルとcssが生成される。0;}もう頑張って切り貼りしたりスプライト生成サイトを使わなくてもいい!ほかにもいっぱいいっぱい機能があるけど、それらについては公式マニュアルや色々な解説サイトを見てもらうとして、早速使ってみる。インストールCompassもRubyでできてるのでRubyが入っていることが前提となる。いうかSassを使ってるので必然的にRubyになる。Macなら標準で入っているもの、Windowsなら別途RubyInstaller(ryCompassもgemになってるので普通にgemコマンドでインストールができる。compassこれでcompassコマンドが使えるようになる。:プロジェクトの作成CompassはCSSや画像などの他にベースURLやコンパイルの仕方などを設定するファイルがセットになったプロジェクトディレクトリで作業することになる。example1するとexample1ディレクトリに初期ファイルが作成されて、簡単な使い方などが表示される。:ちなみに--css-dirなどのオプションで出来上がるディレクトリの名前などを指定したりもできる。createしてみると色々なオプションの説明が出てくる。config.rbの中にcss_dirなどの項目が書かれているので、ここを変更してもよい。コンパイルsassディレクトリの中のファイルを編集して、プロジェクトディレクトリでcompileを実行すると全てのファイルをコンパイルしてcssファイルを作成してくれる。sassコマンドの時みたいにファイルやディレクトリを指定する必要はない。compileファイルを編集したら自動的にコンパイルするCompassもwatchというコマンドを使用すると、ファイルの変更があったら自動的にコンパイルしてくれるモードで起動ができる。watchこちらもファイルやディレクトリを指定する必要はない。簡単な使い方はこんなところ。あとはhelpを眺めるとかマニュアルを眺めるとかググるとかして新しい発見をしよう。ちなみにコマンドのヘルプはhelpで表示できる。statsでCSSの項目を有効にする(2013-09-30追記)statsコマンドを使うとこんな情報が確認できるが、css_parserが入ってない場合はCSSの項目がDISABLEDになってしまう。gemを入れてあげると対応される。css_parsercss_parserを入れる。株式会社LIGCSS書くならCompass使った方がいいよ。SASS使ってる人なら特に。00:00SassとCompassを使ってみるTweet広告を非表示にするもっと読むコメントを書く2013-04-03binaryへのキャストって......?PHP昨日の「NULLへのキャストって......?」ではスルーしたけど、マニュアルの引用部分にあった(binary)も気になった人がいるはず。型キャスト使用可能なキャストを以下に示します。Manualリストには入ってないけど、最後にしれっと一文追加されてるやつ。具体的な説明がなにも書かれていないのでどう使うものなのかさっぱりわからない。先のマニュアルにはこのような例が載っている。リテラル文字列や変数を、バイナリ文字列にキャストします。string";?>しかし、PHPの文字列は元から(内部エンコーディングなどを持たない)ただのバイト列*1なので、わざわざキャストする意味がわからない。試しにこんなことをしてみるが、なにか変わったようには見えない。5.4.13のzend_language_scanner.lではこのように定義されていた。T_STRING_CAST;}実はPHP6への布石だった?どうもこれ、(かつての構想の)PHP6で内部実装がUnicodeになることへの布石だったようで、現在では特に意味が無いっぽい。Unicode文字列がデフォルトになった時にバイト列を表現するために用意されているものらしい。00:00binaryへのキャストって......?Tweet広告を非表示にするもっと読むコメントを書く2013-04-02NULLへのキャストって......?PHPPHPの型キャストは(array)とか(object)とか変態的なのがあるけど、最近(unset)なるものが存在することに気づいた。unset($var)のことではない。(unset)$varだ。型キャスト使用可能なキャストを以下に示します。NULL?>なるほど、NULLになるな。Overflowで2件ほど同様の疑問を投げかける投稿が見つかった。Overflow回答の中にはこんな例が出ていたけど、わざわざこう書く理由がわからないし、回答者自身も含めて「うーん」な感じで終わってる模様。null?>ソースコードをちらっと見てみたけど、型(?)の分だけ*1とりあえずキャスト用意しておきました感しかなくて意図がよくわからなかった。(array)$varちなみに(array)はこんな感じ。オブジェクトとNULLを除いて、自身を要素に持つ配列になる。(7)NULLは自身を値に持つ配列ではなくて、空配列になる。オブジェクトはなんか面倒なことになるので避けたほうがいい。いう感じで、1個の時はスカラ値でも渡せる関数...みたいなやつで時折見かける。'baz'));?>(object)$var(object)はこんな感じ。(7)stdClassのインスタンスになる。オブジェクトはそのまま。連想配列はわかるけど、普通の配列はどういう状況なのかよくわからない。いうか連想配列もキーによってはやばい感じがある。int(20)}オブジェクトへの変換オブジェクトがオブジェクトに変換される場合、それは修正されません。新しいインスタンスが生成されます。場合、新しいインスタンスは空となります。配列の値がプロパティの値となります。いう名前のメンバ変数が値を格納します。Manual*1:resource型などはなかった。Python今までPerlはperlbrew、Pythonはpythonbrewを使っていたのだけど、最近なんとかenvみたいなのが流行ってるらしいので乗り換えてみた。乗り換え動機pythonbrewはメンテナンスされなくなったらしい*1Rubyでrbenvを使ってるので同じようなやつで揃えたいplenvhttps://github.com/tokuhirom/plenv基本的にはINSTALLATIONの通りにやればいい。rbenvなんかと同じ。CentOS6に入れようとしたら、plenvを動かしてるシステムのPerlのModule::Metadataversion.pmが古かったらしくてエラーが出たので、それだけ新しく入れ直す必要があった。-l設定部分は模範的な感じで書いたけど、各自の環境に合わせて設定する。自分の場合.zshenvとかで色々仕掛けしてたりするので上記のようにはしなかった。migrate-modulesでモジュールを別環境に移行できたり便利そう。cartonhttps://github.com/miyagawa/cartonRubyでいうところのBundlerのようなやつ。プロジェクト(ディレクトリ)毎にモジュールのインストールとバージョンの固定ができる。installとかすると./local以下にインストールされて、carton.lockが生成される。JSONみたいに直接インストールすることもできる。pyenvhttps://github.com/yyuu/pyenvつづいてPython。こちらもインストール手順はほぼ同じ。