Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

2015-02-01から1ヶ月間の記事一覧

桑沢デザイン研究所の卒業制作展に行ってきました

ハイカラシティー渋谷…それもNHKの近くにある桑沢デザイン研究所。 業界では、ここの卒業生という肩書きで仕事が降ってくると噂の実力校です。 色々あって、ここの卒業制作展に行ってきました。 実は、参加まえは「凡人の完成で理解できないアヴァンギャルド…

Slimで条件付きコメントをつかう

条件付きコメントは、IEのバージョンによって挙動を変更したい場合に使えます。ただ、IE10からやや挙動が変わったらしく、IE9以前で動いていたものが意図通りに動かなくなった可能性があるそうです。 というわけで、公式に従って以下のようにしてみます。 he…

Google Drive本家謹製のルービックキューブアプリがある

Google Driveで新規アプリを検索していると…なにやら奇妙なものが… ルービック…キューブ…? 遊んでみるだけ 遊ぶだけなら、公式提供の試用版が出てます Realtime Cube Google Drive導入編 試しに導入してみると、たしかにアプリが追加されています。 起動す…

Gmailで過去三日以内に送ったメールを調べたい場合、「newer_than」が使える

Gmailで過去三日以内に送ったメールを調べたい場合、「newer_than」が使える。検索窓に in:sent newer_than:3d とやると、出てきます。逆に、 2015年2月10日から三日前までの間に送ったメールを調べたい場合 in:sent older_than:3d after:2015/02/10 …

SlimでHTMLエスケープをしない場合「==」

yieldなど、HTMLエスケープをしたくない場合は「==」で出力すればOKです - def hoge; '&!hoge'; end = hoge br == hoge これが、 &amp;!hoge<br />&!hoge と出力されます。 参考もと slim-template/slim · GitHub

Slimでタグを切り替えたい場合はDynamic Tagが便利

Slimでタグを切り替えたい場合はDynamic Tagが便利です。 これを使うと… たとえば特定のユーザにだけ表示したいinputタグ…なんてケースを実装するのが楽です。 実際のところ ruby: def nyu @flag ? {tag: 'p'} : {tag: 'b'} end - @flag = true *nyu NYU wit…

SlimのSplat attributes「*」で要素代入を楽にやる

Slimでタグにクラスをくっつける場合、配列やハッシュで渡す事ができます。 a.menu class="highlight" href="http://slim-lang.com/" Slim-lang.comとやれば、 <a class="menu highlight" href="http://slim-lang.com/">Slim-lang.com</a> と、よろしくコンバートしてくれます。ここで、Splat attributesという機能をつか…

slimで最初の数え上げ要素だけ特別な処理を加える

次のようなslim形式のテキストデータがあったとします。 $ cat hoge.txt ul li.first: a[href="/a"] A link - 10.times do |i| li: a[href="/#{i}"] #{i} link li.last: a[href="/B"] B linkこれをSlimのコンバータにかけると、 のように最初の要素だけA、数…

slimrbコマンドで軽くSlimを扱う

slimrbは公式が提供しているslimのパーサコマンドです。 ただ、別途redcarpetというマークダウンパーサのgemが必要なので 先に導入します。 $ gem install redcarpet つかいかた $ echo 'markdown: 123 456 * a * b ' | slimrb なんてことをやれば、 <p>123 456</p> <ul></ul>…

Ruby製OSX用通知ツールterminal-notifierが結構便利

terminal-notifierはRuby製OSX用通知ツールです。 導入 $ brew install terminal-notifierRubyの環境が入っている場合は $ gem install terminal-notifierでもいけます。 使い方 $ terminal-notifier -message 'Pop!'とやると、 のように右上に画面がポップ…

Kernel.#__method__はメソッド名自身を返す

Kernel.#__method__はメソッド名自身を返す変数です。 Kernelクラスにくっついたもので、組み込み変数ではないので注意。 def testMethod "This is " + __method__.to_s end testMethod #=> "This is testMethod" エイリアスを貼った場合、呼び出し先が優先…

pry#show-sourceは自前定義クラスやモンキーパッチの大元を見に行くことができる

…あたりまえと言えば、あたりまえなのですが… 以前記事を書いたshow-sourceはメソッド以外にも、クラスを見にくこともできます。pry上で次のようなクラスを定義したとします。 class Hoge def initialize(val) val.to_s end def method_missing(name, *args,…

%wリテラルは微妙に遅い…?

%wリテラルは、文字列で構成された配列を作る際に便利です。 たとえばこんな具合。 %w(a b c) #=> ["a", "b", "c"] 内部的には、要素をそれぞれ文字列化=>配列に格納 という手順を踏んでいるそうです。(現在実装元を捜索中) 比較 というわけで、比較して…

Object#public_methodsに偽の値を渡すと、スーパークラス由来のメソッドを除外してくれる

class Hoge def initialize(val) val.to_s end def method_missing(name, *args, &blk) 42 end end などというクラスがあった場合、何もつけずにpublic_methodsをやると 198個(awesome_printのモンキーパッチを含む)のメソッドが出てきます。 Hoge.new(…

Hashに破壊的に要素を追加したり更新をする場合はupdateで十分

既存のhashの要素を追加したり、Hash同士をくっつけたりする場合はHash#updateがあれば大抵は事足ります。 見ての通り、破壊的メソッドなので使用には注意が必要です。 非破壊なものを望む場合は、Hash#mergeが使えます。 中身の更新 {a: 1, b:2}.update(b: …

シンタックスハイライトをしてくれるgem「coderay」

coderayはシンタックスハイライトをやってくれるgemです。 はてなブログでもRubyコードを貼り付けると色分けしてくれますが…ああいった感じの事をやってくれます。対応言語は幅広く… C, C++ Clojure (new) CSS Delphi diff ERB Go Groovy HAML (new) HTML Ja…

dfコマンドでディスクの使用量や残り容量を見る

dfコマンドは、ディスクの使用量や残り容量を確認できるコマンドです。 $ df ~/ Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/sda6 102226264 6255524 90777884 7% /"h"オプション(human-readable)をくっつけると、人が読みやすい形に成型…

Shoes4がいつの間にかGem化していた(ただしpre)

Shoes4はSWTベースのRuby用GUIライブラリです。 以前にも、 shoes4をmac osXで動作確認 - Bye Bye Moore shoes4をgem化したりして使い易く - Bye Bye Moore RubyでGUIアプリを遣う際の選択肢 - Bye Bye Moore といった記事で取り上げています。 久々に公式を…

メソッドがどのクラス|モジュールにくっついているか調べる

Rubyにおいては、メソッドはMedhodクラスという入れ物で管理されています。 こいつをつかうと、 buff = String.new.method(:upcase) #String#upcase() Awesome_printのapメソッドのようなカーネルにくっついているメソッドもこの通り。 buff = AwesomePrint.…

nilや空文字が入った配列を接続して文字を作る際のtips

Effective_Rubyによれば… 「Rubyは型判断システムの関係でnilが入り込むのだから、最初っから対策をねじ込んでおけ(意訳)」との事。 実際のところ nilが含まれている配列を"-"で繋げて一つの文にする事を考えます。 ["Shuzo", nil, "Kino", nil].join('-')…

Rubyにおける定数

あまり使う局面はないかもしれませんが、Rubyでも定数を使うことができます。 FOO = "yeah!" puts FOO #=> yeah! 一応、上書きすることもできますがエラーがおきます。 FOO = 12 #(pry):22: warning: already initialized constant FOO #(pry):19: warning: …

「,=」と出ていたら、それは多重代入です。

Rubyにも多重代入があります。 a, b = [1, 2] ap a #=> 1 ap b #=> 2 コーディング規則では大抵推奨されてない方法です。ところがドッコイ、awesome_printのようなスゴイヤバイ級Rubyistが集うgemだとそうでもないようです。 たとえば、次のような記法が… va…

次世代のコンテンツ保護技術「PUF」

LSIの個体差から「指紋」を生成し「IoT暗号」実現、三菱電機が新技術 - クラウド Watch 知人から、こんなニュースを紹介してもらいました。ここで言われている技術はPUFという技術です。 日本語で「物理的複製困難関数」とも訳されています。 以前記事にした…

【読書メモ】プログラミング言語AWK

プログラミング言語AWK作者: Alfred V.Aho,Brian W.Kernighan,Peter J.Weinberger出版社/メーカー: シイエム・シイ発売日: 2001/03/01メディア: ?購入: 1人 クリック: 22回この商品を含むブログ (9件) を見る旧い型ですが、その筋の方に大人気の魔道書「プロ…

冷戦時代をシミュレートするボドゲTwilight struggleは実際危険

Twilight struggle …ゲームボードだけ見てもヤバさがありますイベントカードは更にヤバめです。 …印パ戦争(震え声 実際ゲームやるとこんな感じで両陣営のマーカーが… 謎の仮想戦記展開があり得ます 解放された朝鮮半島と ドイツ

awesome_printでRubyオブジェクトをさらに見やすくする(その5)

awesome_printには色を指定するオプションがあるのですが… その関係なのかなんなのか、色をつけるメソッドが付加されます。 "hoge".red #"\e[1;31mhoge\e[0m" "hoge".redish #"\e[0;31mhoge\e[0m" 公式によると、サポートしている色は次の通り :gray, :red, …

awesome_printでRubyオブジェクトをさらに見やすくする(その4)

awesome_printはrails consoleでも活用できます。 下準備 Gemfileのdevelopmentグループに、pry-railsとawesome_printを記述 group :development, :test do # Call 'byebug' anywhere in the code to stop execution and get a debugger console gem 'byebug…

awesome_printでRubyオブジェクトをさらに見やすくする(その3)

awesome_printはObject#methodsの使い勝手もグレードアップします。例えばpでやった場合 "".methods #=> [:<=>, :==, :===, :eql?, ..., :__send__, :__id__] ppでやっても pp "".methods #[:<=>, # :==, # :===, #..., # :__send__, # :__id__] と、大して…