不要になったファイルをdeadwood.txtとすると以下の手順でgit管理から外せる
1. git rm でまずファイルを削除
$ git rm --cached deadwood.txt
2. deadwood.txtを.gitignoreに追加する
上記手順だとdeadwood.txtのファイル自体は削除されず、gitから消されるだけ。
なお、.gitignoreに追加するだけでは反映されないことがあるらしい。
その場合下記手順を実行する。
1. $ git rm -r --cached .
2. $ git add .
git rm -r は、オプションなしで行うと全て消し去り、インデックスにステージしてしまう。
# それにしてもITってインデックスって言葉いろいろな意味で使い過ぎでは…。
参考:Qiita - .gitignoreの設定を反映させる
ラスカルの庭
2014年2月17日月曜日
2014年2月10日月曜日
Rubyの排他的論理和(xor)
料金設定に関するコードで、
Rubyでは、シンプルに「^」(ハット)で書けるらしい。
演算子「^」は引数は真偽値か数値しか取らない。排他的論理和が必要な場合、引数がBooleanでない場合にはブール値に変換してやる必要がある。
これをしないと、型によっては想定外の結果が返ってくる。
7はtruthy、4はtruthyだから、truthy^truthy=falsy、と思っていると、戻り値が3(truthy)。
そこで、ブール値への変換ですが、例えば「!!」を使う。
Railsだったらpresent?を使うと便利かも。
unless a xor b # 擬似コードつまり「排他的論理和の否定」という条件が普通に必要になりました。
Rubyでは、シンプルに「^」(ハット)で書けるらしい。
a ^ b # aとbの排他的論理和 true ^ true #=> false true ^ false #=> true false ^ true #=> true false ^ false #=> false
演算子「^」は引数は真偽値か数値しか取らない。排他的論理和が必要な場合、引数がBooleanでない場合にはブール値に変換してやる必要がある。
これをしないと、型によっては想定外の結果が返ってくる。
7 ^ 4 #=> 3 [1,2] ^ [3,4] #=> NoMethodError: undefined method `^' for [1, 2]:Array^というメソッドを持っていない型はエラーが出るし、数値だとビット演算の結果が返ってくるので、7(10) ^ 4(10) = 111(2) ^ 100(2) => 011(2) => 3(10)となるわけ。
7はtruthy、4はtruthyだから、truthy^truthy=falsy、と思っていると、戻り値が3(truthy)。
そこで、ブール値への変換ですが、例えば「!!」を使う。
!!a ^ !!b #=> aの真偽値とbの真偽値の排他的論理和 !!7 ^ !!4 #=> false !![] ^ nil #=> trueString(!!"hoge")だと確かに変換はされましたが、
warning: string literal in conditionwarningが出ました。ユーザ定義クラスとか配列だと特に問題なかった。
Railsだったらpresent?を使うと便利かも。
a.present? ^ b.present?ただ、present?は、{}(Hash)、[](Array)、""(String)はfalseを返すのでご注意。
"".present? #=> true !!"" #=> falseその方が都合がいいケースはもちろんあるでしょう。
2014年1月24日金曜日
CreateJSからWebGLを使う
CreateJSがWebGLを公式にサポート!爆速になったHTML5での描画パフォーマンスを検証してみた
従来版とWebGL版の比較が面白い。
この気持ち悪い黄色いのを生成する数はページ下で指定できる。
デフォルトを500に設定してみると違いが顕著にわかる。
従来版とWebGL版の比較が面白い。
この気持ち悪い黄色いのを生成する数はページ下で指定できる。
デフォルトを500に設定してみると違いが顕著にわかる。
2014年1月23日木曜日
Rubyのmoduleのmix-in
moduleをincludeしてclassにmix-inした際には、module内のインスタンスメソッドをそのclassのインスタンスメソッドとして呼べるようになる。
module Asdf
def qwer; "qwer"; end
end
class Zxcv
include Asdf
def sdfg; qwer; end #=> "qwer"
end
class Xcvb
def sdfg; Asdf.qwer; end #=> NoMethodError: undefined method `qwer' for Asdf:module
end
それだけ。ただそれだけ。
2014年1月20日月曜日
ライセンスに関して
ライセンス
GitHub 上で公開されているソースコードの半分はライセンス的に問題あり原記事タイトルは"Half of GitHub Code Unsafe To Use (If You Want Open Source)"
要は、「GitHub上のコードの半分はオープンソースライセンスが指定されていないので、勝手に使うのは著作権侵害になるよ」という指摘。(中のコメントにもあるように多少この記事タイトルの日本語訳には語弊がありそう。)
1st post
技術関連の記事を書く場所が無かったのでこちらに。
とは言っても大概自分用メモ帳どまりかとは思う。
Runnableをそもそも知らなかった。
コードを書いて実行できるウェブサービスで最近知ったのはjsdo.itとかwandboxとか。CoffeeScript公式のTRY COFFEESCRIPTも便利。
とは言っても大概自分用メモ帳どまりかとは思う。
RunnableとDart
Runnableの上にGoogleがDart専用チャネルを作った…新言語の試用が容易にRunnableをそもそも知らなかった。
コードを書いて実行できるウェブサービスで最近知ったのはjsdo.itとかwandboxとか。CoffeeScript公式のTRY COFFEESCRIPTも便利。
Railsのリアルタイム通知
先人の方々の資料
Rails3でのリアルタイム通知実装のベストプラクティスは?(Pusher以外)
Railsでserver pushを行う場合の選択肢: polling、Comet、Flash XML、XMPP/BOSH、WebSocket
websocket-rails / websocket-rails (github)
Rails3でのリアルタイム通知実装のベストプラクティスは?(Pusher以外)
Railsでserver pushを行う場合の選択肢: polling、Comet、Flash XML、XMPP/BOSH、WebSocket
websocket-rails / websocket-rails (github)
この方はChannelを使っている。
登録:
投稿 (Atom)