プログラミング

Rails Girlsを終えた人たちへ向けて

railsgirls.com に講師のうちの一人として参加させていただきました。 受講者として参加された方々に向けて今後の参考になるような情報を提供できればと思ったので列挙したいと思います。 Rails Girls - Japaneseにあるチュートリアルの5番くらいまで終わら…

hubot-slackでbotの発言にも反応させる

robot.hearではなぜかbotの発言に反応しなかったのでどうすれば良いのか調べて対応した。 結論から書くと、 hubot_slack = require 'hubot-slack' robot.hear regex, callback robot.listeners.push new hubot_slack.SlackBotListener(robot, regex, callbac…

自宅の照明の制御を自動化した

廊下の電球を人感センサー付きのものに交換しました……だけだとおもしろくないので、以前の取り組みを拡張してMi-LightとAndroidを連携させてフロアライトの制御も自動化した。 内容としては、 起床すると点灯する 外出すると消灯する 帰宅すると点灯する 21…

寝相を録画してみた

自分がどんな寝相をしているのか気になりませんか?僕は気になったのでシステムを構築・運用しています。 ハードウェア構成は単純で、Raspberry Piに赤外線ウェブカメラをつなげただけです。 Raspberry Pi 2 Model B (1)出版社/メーカー: Raspberry Piメディ…

目覚まし時計とフロアライトを連動させたりしてみた

Mi-Lightをセットアップしてから試行錯誤して、現在は以下のようにして使っている。 起床したら自動で点灯 21時半になったら照明の色を変える 就寝時刻になったら照明の色を変える 就寝したら自動で消灯 良かった点 安い。6000円程度で環境を構築できる Mi-L…

YAPC::Asia 2014に参加してきた

全体的に"ご紹介"みたいな内容が多かったように思う。 Perlに関係のないトークも多かった。 なので、自分が興味を持つ分野のトークを聞きに行くより、興味のない分野を一望するような聞き方をするのが良さそうに感じた。 界隈の人気者たちの人柄を伺えるのは…

Raspberry Piからブラウザ経由でエアコンを制御してみた

散々既出だけど自分でもやってみたらできた。以前のブレッドボードに追加する形で実装した。 Raspberry Piから赤外線を送受信できるようにしてlircを使う 主にこの2つのページを参考にした。 Raspberry Piで赤外線リモコンを学習し発信する (r271-635) Raspb…

mackerel.ioにRaspberry PiとArduinoを組み合わせてグラフを投稿してみた

Raspberry Piを安く譲ってもらえたので、AndroidとArduinoで自室の温湿度などを監視しているシステムをリプレースしてみた。 自室の温湿度などをグラフ化して監視するの、一度やってみるともはや止められなくなるくらいには便利なので、興味がある人にはぜひ…

オブジェクト指向に入門しつつある

オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)作者: バートランド・メイヤー,酒匂寛出版社/メーカー: 翔泳社発売日: 2007/01/10メディア: 単行本(ソフトカバー)購入: 11人 クリック: 307回こ…

PixivのうごイラをGIFアニメに変換するRubyスクリプト を書いた

変換したやつをfotolifeにアップロードしてみたけど縮小されててどれくらい荒くなるか分からないですね。 うごイラをGIFアニメに変換するやつ書いてみたけど処理がめっちゃ重い— Akimasa Shimobayashi (@shimobayashi) 2014, 6月 29 to_blob を記述するとな…

OSC52でゲストマシンとクリップボードのやり取りをしようとしたけど微妙だった

ホストマシンでtmuxを動かしているとかだったらpbcopyを使う定番の方法があるのだけど、VMのゲストマシンにssh越しで繋いでtmuxを使っている場合にはこれといって定番は無いという認識でいる。 そんなところで調べてみたらOSC52という仕組みがあって、これを…

よく使っているコマンドを調べて効率化につなげる

cat ~/.bash_history | awk '{print $1}' | sort | uniq -c | sort -r | head -10とかやると雑に上位10位が分かると思う。シェルの設定によっては分からない(重複した履歴を保存しない、履歴のサイズが不十分、など)。 僕の手元で実行してみると、圧倒的にgi…

/bin/sh について

多くの場合/bin/shはbashであることが多いようで、例えば手元のMacで見てみると、 $ /bin/sh --version GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin12) Copyright (C) 2007 Free Software Foundation, Inc. となっている。 一方、DebianやUbu…

herokuで動かしているサービスが良く分からない挙動をしていた原因

sinatraのredirectメソッドは大域脱出する MongoLabの容量制限に引っかかると、保存には成功するものも黙って新しいデータが消される

Vimからワンステップで特定のテストメソッドを呼ぶ方法

VimMachine HeadRock¥200provided courtesy of iTunes これまで僕の環境でテストを実行しようと思ったら、Perlであれば TEST_METHOD=hoge carton exec prove t/path/to/test.tみたいなコマンドをいちいち打つ必要があって、これは人間がやることではないとい…

Mongoid 3.1.6でop_timeout, connect_timeout相当を設定したい

ネットで調べるとそれらしい情報出てくるけど大体Mongoid 2の情報で古くて使えない。 結局git cloneしてコードを追っていくのが一番マシという決断をしてそうしてみた。 そんでmongoid, mopedのコードを追っていった結果、 mongoid.ymlに development: sessi…

年末年始なのでpixivをフィードに変換するプロダクトをリプレースした

Instagram https://github.com/shimobayashi/i_love_pixiv これまで運用していたやつのコードがヤバすぎて保守したくない上に実行効率も悪かったので、pixiv gemに乗っかれるところは乗っかりつつなるべくEventMachineの流儀に従って書きなおした。 前のはHT…

EventMachineでジョブキューを高速に処理するたたき台2

昨日の続き。 この書き方ならパフォーマンスにも問題無さそうだしネストしたタスクも綺麗に書けて良さそう。 require 'rubygems' require 'eventmachine' MAX_RETRY_COUNT = 3 CONCURRENCY = 2 class Mailer < EM::DefaultDeferrable def initialize(mail_ad…

EventMachineでジョブキューを高速に処理するたたき台

追記: EventMachineでジョブキューを高速に処理するたたき台2 - 下林明正のブログ 具体的にはクローラーみたいなのを書きたいシチュエーションを想定しているんだけど、 ジョブIDの配列みたいなのは予め分かっている 最大試行回数を考慮したリトライが可能 C…

任意のコマンドをtor経由で実行する

SOCKS経由でtor使えたら便利そうと思って簡単に調べた。 Macなら、 brew install tor tor& brew install torsocks torsocks curl curlmyip.com みたいな感じで使えた(tsocksでも使えた)。 試しに torsocks.conf を書き換えてSOCKSv5を使うようにしてみると、…

perlbrew 0.65をMac(Mountain Lion)でインストールしようとするとおかしな挙動をする

patchperlとかいうやつのインストールに失敗している インストールスクリプト実行後perlbrew install-patchperlとかやっても同じメッセージが出るだけで失敗する 調査したところ、perlbrewのhttp_user_agent_commandとかいうサブルーチンがおかしな値を返却…

TRPGのオンセでBGMを共有するためのスクリプト書いた

shimobayashi/hawring 最近TRPGのオンセを遊ぶことが多いのだけど、BGMを良い感じに共有するソリューションが無くて困っていたのでつくった。 ラインミックスみたいなのは普通の人には色んな意味で無理だ。 ページ開いてmp3とかドラッグアンドドロップすると…

GradleでBuild Variantsを使ってAndroid開発ができると便利ですね

Gradle+Android Studioにするメリットとしては、 プロジェクトのインポートが楽になる Eclipseのようにプロジェクトの作成に熟練を要しない Build Variantsを利用して、ターゲット毎にapkを作り分けられる というあたりがあると思う。特に後者が個人的には魅…

overflowではみ出た要素がクリッカブルになってしまうAndroid 4標準ブラウザのバグ

Android 4標準ブラウザのバグっぽいのを見つけた。 overflow: autoではみ出した要素は見えないようにして その中でposition: relativeなリンクを宣言して はみ出て見えなくなっているそのリンクをタップすると、本来ならばタップできないはずなのに、貫通し…

DevFest Japan 2013

興味あるところだけTweetしていたので貼り付けておく。 ハイライト Gradle ベターantっぽい。デバッグビルドだけの設定とか上手く引き回す仕組み探せばありそうだな— Akimasa Shimobayashiさん (@shimobayashi) 2013年5月25日 “Y.A.M の 雑記帳: Google I/O …

iOS版PhoneGapでリモートのGoogle Analyticsが動かない場合の対処法

特にエラーログとか出てないけど__utm.gifアクセスしてないしどう考えても動いてなくて、おかしいと思って調べていたら海外で同じ問題にぶち当たって解決したっぽい人を見つけた。 Tracking beacon, utm.gif, is not sent when Cordoava javascript is inclu…

レスポンシブウェブデザインはもう古い?これからはリバーシブルウェブデザインだ!

タイトルは釣りです。 以前オフィスランチを食べながら同僚と話していたものを実装してみました。 このページをスマートフォンで開くとリバーシブルなウェブページを楽しむことができます。 Android 4.1で動作を確認済み。iOS 6.1でも動作を確認しましたが、…

Android Studio導入してみた

http://techbooster.org/android/environment/16139/ この辺り眺めながら適当にインストール プロジェクトのインポート若干混乱した。サブプロジェクトがあるようなディレクトリを何も考えずにインポートすると、サブプロジェクトのlibsまでルートプロジェク…

angular.jsを触って一人用ぴっぐテンみたいなのつくった

昨日酔っ払って「明日飲みに行きましょう」とか言ってたら何故かハッカソンをやることになっていたので、Bombermineで使われてたし他にも話を聞いて気になってたangular.jsとかいうライブラリをビール飲みながら触って時間を潰していた。 以前からぴっぐテン…

App Storeではレビュワーの価値観を超えるアプリは世に出ない

勉強と思ってアプリをつくって提出していたがどうにもレビューを通りそうにないので、面倒になってApp Storeで公開するのを諦めた。 勉強が目的でアプリの内容は何でも良かったので、今回は手頃なFlashでつくったポケモンの努力値カウンターをiPadに移植した…

PhoneGapを利用したアプリケーションにMobile App Install Ads(Facebook SDK)を組み込む方法

前提 https://developers.facebook.com/docs/tutorials/mobile-app-ads/ の内容に従えば良い https://developers.facebook.com/docs/tutorials/mobile-app-ads/jp/ に日本語訳があるが、現文章に若干追従していないように見える 正常に組み込むことができた…

UnityでつくったアプリをiOS向けにもビルドしてみる

いくつか Android用のコードは#if UNITY_ANDROIDみたいなプリプロセッサで飛ばした アイコンが非常に汚くなる Unityが勝手に縮小している 自前で縮小し直すも、prerenderのチェックを外してもアルファチャンネルが上手く透過されない(Appleはとにかく角丸に…

ひさしぶりにUnityでAndroid向けにビルドをしてPlayでAPKの更新をした

ちょうど1年くらい前にごちゃごちゃメモしていたわけだけど、 開発環境がWindowsからMacに変わってUnityのバージョンも若干上がって手を加えることになったのでメモしておく。 先ず最初に何も変更せずビルドしようとしたが、うまくビルドできなかった。 Wind…

AndroidのWebViewでCSSをあてたsubmitボタンがタップしてもdisabledっぽい見た目にならない件について

ちゃんと調べてませんが、少なくとも手元のAndroid 4.0端末でWebViewに限らずWebKitっぽいやつは表題のような問題がある雰囲気でした。 これでどう困るのかというと、submitしてんのにそれっぽい見た目にならなくてユーザーを不安にさせてしまいます。 ちな…

wgetだけであるページに含まれる全てのリソースに対してGETクエリを発行する方法

wget --spider -r 1 -p --span-hosts --domains=example.org http://example.com/ 例えばこのコマンドを実行すると、http://example.com/ にある exapmle.org に設置されているリソース全てに対してGETクエリを発行する(この場合は http://example.com/ は e…

Perlは文字列と数値をそれほど区別しないけどMongoDBは区別するので気をつけようという話

初心者のハマりがちなミスみたいな感じで虚しい…。 DBIx::Lite経由で数値$numを取得する MongoDB::Collection#find({ num => $num })みたいなクエリを発行する 結果が空になる!!どうして?! 結論としては、$numが実のところ文字列になっていたので、 文字…

Custom Classに指定したUIViewのinitWithFrameが呼び出されない件でハマった

諸事情によりiOS開発をまた勉強するかーと思って電卓レベルの凄く簡単なアプリを作ろうとXcodeとの格闘をはじめた。 Storyboardを使ってUI部品を配置して、殆ど同じUI部品を配置するつもりだったのでなんとか共通化できないかと考えたところ、そういえばCust…

徳丸本を読みました

今更ですが読みました。 体系的に学ぶ 安全なWebアプリケーションの作り方 脆弱性が生まれる原理と対策の実践作者: 徳丸浩出版社/メーカー: ソフトバンククリエイティブ発売日: 2011/03/03メディア: 大型本購入: 119人 クリック: 4,246回この商品を含むブロ…

シェルスクリプトでエラーが起きたら処理を中断する方法を知った

ネタとしては小さすぎるけど便利すぎるのでメモしておこうと思った。 "set -e": 実行コマンドが0以外の終了コードの場合、シェルスクリプトを終了する - 元RX-7乗りの適当な日々 set -eと書くとエラーが起きた時に中断してくれるっぽい(厳密には間違っている…

俗にいうHTML5で実装されたまともそうなゲームを初めて見つけた気がする

Bombermine — Massively Bomberman Online with up to 1000 players on the single map 大体こういうのはHTML5で実装すること自体が目的になっていてゲームとしてはお粗末なものばかり見てきたのだけど、 ようやく初めてきちんとしたゲームを見た気がする。 …

perlbrew環境下でPERL5LIBを使うのはやめよう

テキトーにセットアップした時の名残か何かでPERL5LIBが設定されていたけれど、これのせいで色々と問題が起きていた…。 perlbrewとPERL5LIBの相性は悪い - Islands in the byte stream 社内IRCで聞いてもやめておきなさいという話しかなかったし、実際にやめ…

Gunosyから来るメールをRSSフィードに変換するスクリプト書いた

shimobayashi/gunosy2feed · GitHub 実行すると標準出力にRSSフィードを出力するので、cronに登録して定期実行し結果をリダイレクトして書き出すことを想定している。 GmailのフィルターでGunosyから来るメールはGunosyラベルが付けられていることを期待して…

git pullをすると何故か古いコミットオブジェクトと衝突をする

gitを使って開発をしていて、 トピックブランチを統合ブランチにマージ 衝突したので解消してコミット git pushしようとしたら統合ブランチが更新されていた git pullしようとしたら何故か古いコミットと衝突してしまいpullできない、pushできない、困った!…

Perlのoverloadについて

@shimobayashi 演算子を左右に引数を取る関数だと見ると、オーバーロードになります— デブさん (@kuzuha) 2013年2月20日 @shimobayashi function + (scalar a, scalar b) {} を上書きしてないですよね、function + (SomeObject a, SomeObject b) {} を新たに…

サイドバーにバラ曲線を描画するようにしてみました

以前2chでバラ曲線というものの存在を知って、 なんとなく気になっていたのでcanvasの練習がてら実装してみた。 はてなブログはドメインが管理用のものと分けられているので好き勝手にJavaScriptを設置できる。 そんなわけで、サイドバーに設置してみた。 リ…

Cosm Graphsを更新した際に知ったJavaScriptの小ネタ

Cosm Graphs shimobayashi/cosm-graphs · GitHub 諦めていたグラフのオーバーレイ表示に対応しました。 いくつか有用な話題があったのでメモしておこうと思う。 canvasのsame origin policyをJSONPを経由して回避する canvasで画像処理をする際にもsame orig…

妥協してCSSをインライン展開する

先日PhantomJSを使ってCSSをインライン展開する - 下林明正のブログというエントリーを書いたけど誰からも相手にされないという感じで、引き続きなんとかしたいという気持ちだった。 CSSの擬似セレクターとかにまできちんと対応しようと思うと先日のエントリ…

PhantomJSを使ってCSSをインライン展開する

CSSをインライン展開したいという需要がある。 例えばHTMLメールを送る場合、外部CSSは解釈されない、headタグ内のstyleタグも解釈されない、各タグのstyle属性に記述するのが一番だ、というようなシチュエーションがある。 そんなわけで、CSSを簡単にインラ…

Cosmでつくったグラフを良い感じに表示するようにした

Cosm Graphs 1分毎にグラフを更新してくれる ルーラーを表示してくれる 1スケールあたり1時間半相当で、5スケールあるので7時間半分ある。これは、一般的な睡眠リズムと睡眠時間に合わせてある rキーでトグルできる ルーラーは、table要素をposition: absolu…

MySQLのTIMESTAMP型の罠

MySQL :: MySQL 5.1 リファレンスマニュアル (オンラインヘルプ) :: 6.3.1.1 TIMESTAMP の特性 TIMESTAMP カラムはデフォルトで NOT NULL になっているため、NULL 値を含めることはできません。NULL を指定すると、現在のタイプスタンプが割り当てられます。…