タグ

ブックマーク / mickey24.hatenablog.com (5)

  • うちのbotがエアコンの操作方法を覚えた - ぬいぐるみライフ?

    追記:2017-07-09 現在この機能は利用できません。最新の情報は雨予報bot「mickey24_bot」の使い方 ver 3.0 - ぬいぐるみライフ?をご覧ください。 ぼくの自宅のエアコン限定ですが,mickey24_botがエアコンを操作できるようになりました. どんな機能なの うちのbotにreplyで指示を送ると,うちのエアコンに赤外線が発射されます.指示の出し方の例は, @mickey24_bot 冷房を28℃に設定して@mickey24_bot 暖房を20℃に設定してなど.これで外出先からエアコンを操作しておけば,帰宅時にエアコンの効いた快適な部屋がぼくを出迎えてくれます. エアコンの運転モードは冷房と暖房,温度の設定範囲は16〜30℃(華氏温度は後日対応予定)です. どうやって実現してるの Arduino Unoに赤外線LEDを繋いで,Arduino Unoでエアコン用

    うちのbotがエアコンの操作方法を覚えた - ぬいぐるみライフ?
    InoHiro
    InoHiro 2012/09/12
    "だれでも操作できます" ワロタ
  • Rubyの文字列リテラルの種類と使い分け方 - ぬいぐるみライフ?

    Rubyでは文字列リテラルの記述にダブルクォート("),シングルクォート('),そして%記法が使える.Rubyでコードを書く上でそれぞれをどのように使い分ければいいか迷ったことがある人も多いのではないかと思う.というわけで自分なりの使い分け方を簡単にまとめてみることにした. 文字列リテラルの括りの種類 ダブルクォート ("str") バックスラッシュ記法 ("\n"など) や式展開 ("#{exp}") が使える 文字列中のダブルクォートはバックスラッシュでエスケープする必要がある ("\"") シングルクォート ('str') バックスラッシュ記法や式展開は使えない 文字列中のシングルクォートはバックスラッシュでエスケープする必要がある ('\'') %記法 (%!str! や %Q{str} など) 文字列を任意の非英数字で括ることができる. %!str! や %Q!str! はダブル

    Rubyの文字列リテラルの種類と使い分け方 - ぬいぐるみライフ?
    InoHiro
    InoHiro 2012/05/27
  • Rubyで任意のメソッドをメモ化する - ぬいぐるみライフ?

    Rubyベストプラクティスの5-4より.メタプログラミングの例として面白かったのでまとめてみる. メモ化とは メモ化とは,引数に対するメソッドの戻り値を保存しておき,再び同じ引数でメソッドが呼び出された時にその値を再利用することにより,同じ計算を何度もすることを防ぐ最適化手法のひとつ.全ての引数に対しメソッドの結果が不変の場合(同じ引数で何度呼び出しても毎回同じ戻り値を返す場合),メソッドをメモ化することができる. 以下はフィボナッチ数を再帰で計算するメソッドfibの例. def fib(n) (0..1).include?(n) ? n : fib(n-2) + fib(n-1); end この実装の場合,例えばfib(n)はn = 3で5回,n = 4で9回というように,nの値が大きくなるにつれて再帰呼び出し回数がどんどん増え,実行時間が爆発的に増大してしまう.私の環境だとfib(30

    Rubyで任意のメソッドをメモ化する - ぬいぐるみライフ?
  • 最小全域木問題(クラスカル法とプリム法) - ぬいぐるみライフ?

    最小全域木問題を解くためのアルゴリズム「クラスカル法」と「プリム法」を使ってみた. 最小全域木について クラスカル法 プリム法 PKUの問題 クラスカル法による解答 プリム法による解答 メモリ使用量と実行時間の比較 最小全域木について まず,全域木(Spanning tree)とは連結グラフの全ての頂点とそのグラフを構成する辺の一部分のみで構成される木のこと.つまり,連結グラフから適当な辺を取り除いていき,閉路をもたない木の形にしたものが全域木となる.ここで,グラフの各辺に重みがある場合,重みの総和が最小になるように辺を選んで作った全域木のことを最小全域木(Minimum spanning tree)という. 最小全域木を求めるアルゴリズムとしては以下の二つが有名である. クラスカル法 (Kruskal's algorithm) プリム法 (Prim's algorithm) いずれも貪欲

    最小全域木問題(クラスカル法とプリム法) - ぬいぐるみライフ?
  • C#でインクリメント/デクリメント演算子をオーバーロードする際の注意点 - ぬいぐるみライフ?

    C++では前置・後置で++/--のオペレータオーバーロードを別々に行う必要があるけど、C#の場合前置と後置でメソッド定義を別々にすることができない。 以下はMSDNライブラリからの引用。 operator ++ または operator -- の実装は、後置表記または前置表記のいずれを使っても呼び出すことができます。2 つの表記に対して演算子を個別に実装することはできません。 7.6.5 前置インクリメント演算子と前置デクリメント演算子 (C#) ということは、前置と後置で個別のメソッド定義ができないんじゃ、それぞれの戻り値の差別化はどうすればいいの?と疑問に思ったので調べてみた。 MSDNライブラリの説明 以下はMSDNライブラリによる前置・後置インクリメント/デクリメントの処理手順の説明。 ++x or --x x を評価して変数を生成します。 x の値を引数として、選択された演算子を

    C#でインクリメント/デクリメント演算子をオーバーロードする際の注意点 - ぬいぐるみライフ?
    InoHiro
    InoHiro 2008/10/31
    インクリメント/デクリメント演算子のオーバーロード
  • 1