pryがCtrl-Yでサスペンドしてしまう

Macのターミナル上でRubyのpryを使っている際、Ctrl-Kなどでカットした文字列を貼り付けようとCtrl-Yをタイプすると、サスペンドしてしまうことがあります。ちなみにirbだと発動しません。 $ pry [1] pry(main)> [^Yをタイプ] [1]+ Stopped pry $ これはDSUS…

Node.jsでUNIX-likeにパイプ処理

巨大なテキストデータを標準入力(pipe等)から受け取り、1行ずつ何か処理をして、結果を標準出力(これもpipe等)に書くプログラムを書こうとしてハマるパターン。 (なお文字コードのことはここでは忘れたことにするので、別途対応が必要かもしれない。) 例え…

プロンプトのgitブランチ表示を定期更新

zsh

Gitのブランチ名をzshのプロンプトに表示させているのですが、別端末でブランチを切り替えたりすると、普通は現状が反映されません。心配だったらenterキーを押せば良いのですが、端末がたくさん開いてるときに限って間違ったブランチで作業してしまいそうに…

flymakeでrubocopを環境に合わせて実行

rubyを書く際にコーディングスタイルをrubocopでチェックしたい時、手動でチェックしていると忘れることがあるので違反があったらその場でエディタに警告して欲しいわけですが、これをemacsのflymakeでやる方法のメモ。.emacsなどをいろんな環境で共有してい…

コマンドの入出力が繋がった端末を移動させる

時間のかかるコマンドを起動した後、「あ、tmux(とかscreen)の中で実行すればよかった…」と気づくことがたまにあるわけですが、そんな時に強制的に端末を移動させる方法として、gdbをアタッチし、そのコマンドのファイルディスクリプタ(fd)の示す先を変更し…

iPhoneのバッテリー残量を取得

iPhoneのバッテリーがかなりヘタってちょっと使うとすぐに電源が落ちてしまうようになってしまったので、自分で交換してみました。やり方を紹介したページを見つつ、バッテリー\2000 + 工具セット \1000 で無事交換成功し、日中そこそこ使っても丸一日持つよ…

Amazon Dash Buttonは20分で照明のリモコンになった

遅ればせながら、Dash Buttonを受け取ったので、さくっと照明のリモコンにしました、という話。 すでにAmazon Dash Buttonのハックはやり尽くされている感がありますね。。 参考リンク: Amazon Dash ButtonをただのIoTボタンとして使う - Qiita うちの場合、…

その後Amazon Dash Buttonは「にゃーんボタン」になった

( Amazon Dash Buttonは20分で照明のリモコンになった - Okiraku Programming の続き ) Dash buttonで照明をつけられるようにしたものの、うちの照明はすでにSiriでも操作できるため物理ボタンは今さら必要ないと気づいたので、Dash buttonを「にゃーん」とT…

SLコマンド on touch bar

Mac

新しいMacBook Proのtouch barで走るSLコマンドを作りました。 (touch barシュミレータでしか動作確認してませんが。) オリジナルのようにオプション(-a, -l, -F)には対応していません。 ソース(Swift)は以下。ビルド済みのバイナリも入ってます。 https://g…

ESP8266でNAT(NAPT)でWi-Fiを中継する

ESP8266(ESP-WROOM-02)を最近よく使っています。ESP8266を使ったセンサを、Wi-Fiアクセスポイントから遠い、直接電波の届きにくい場所に置きたかったため、ESP8266をもう一つ使ってWi-Fiの到達範囲を拡張する中継機にした(といってもブリッジではなくNAPTル…

keyhacでNICOLA配列を実現する

Mac

macOS Sierraにアップデートしたところ、キー配列をカスタマイズするKarabinerが利用できなくなってしまいました。 Karabinerは非常に様々なカスタマイズに対応していたため、不便な思いをしている人も多そう。 私はNICOLA配列(いわゆる親指シフト入力)で…

USB直結のスクリーンセーバーブロッカー

USB直結スクリーンセーバーブロッカーを作ったツイートのまとめです。USBポート直結できるスクリーンセーバーブロッカー - Curated tweets by NeoCat なおArduino互換のため、Arduino IDEでボードの種類としてArduino Leopardを選択すればプログラムの書き込…

マイナンバーカードでSSHしてみた

マイナンバーカードでSSHする - AAA Blog という記事が出ていたので、マイナンバーカードを使ったSSHログインをLinux上でやってみました。環境は出たばっかりのFedora 24です。カードリーダーは、上記の記事のような非接触式ではなく、接触式のICカードリー…

C++11/14でrange based forで指定回数Loopする

C++

for (int i = 0; i < 10; i++) { ... } って何度も書くのがだるいので、range based forを使って楽にしたい。要するに、 for (auto i : 10_) { ... }で10回ループできるようにしたいね、という話。他の変数の回数分ループするなら int x = 3; for (auto i : …

zshでネットワーク経由のファイル転送

zsh

zsh(とtar)を使ってネットワーク経由のファイル転送を効率的に行う方法についてです。 ARMボード(RaspberryPiとかPCduino等)を使っていると、scpなどでホスト間で大きなファイル転送をする際に、CPUネックになりがち。rsyncやscpするときに暗号をarcfour…

近接センサでRaspberryPi LCDのバックライトを点灯

Raspberry Pi 2に7インチタッチディスプレイをつけて、パッと見たい情報(天気予報とか時計とかバス時刻表とか)を表示するのに使っているのですが、常時つけっぱなしになっているのが気になっていました。周囲に人がいるときだけオンになったらいいなと思い…

スマートメーターの瞬時電力や履歴をWebブラウザで見る

前の記事の続き。 スマートメーターからリアルタイムに消費電力を取得する - Okiraku Programming 前回の記事ではArduinoで電力を取れるようにしたわけですが、ログを取って統計処理したり、Webでリアルタイムに見れるようにしようとすると、やっぱりLinuxの…

スマートメーターからリアルタイムに消費電力を取得する

少し前からスマートメーターの導入が始まっています。東電は2020年度末までに一般家庭などへの導入を完了させるそう。 http://www.tepco.co.jp/smartmeter/index-j.html 東電の場合、電力メーター情報発信サービス(Bルートサービス)を申し込むと、優先的…

twicliの☆を♡にする

Twitter公式では、お気に入り(fav: ☆アイコン)が、いいね(like: ♡アイコン)に変更されました。 twicliでも♡アイコンを使いたい方は、以下のユーザスタイルシートを適用することで変更できます。 手順は、+タブ→設定とクリックして、ユーザスタイルシート…

MicroView + FM Tuner

OLEDディスプレイ搭載ArduinoのMicroView (Uno互換) と、FM Tuner Si4703 評価ボードを組み合わせてFMラジオを試作しました。 電源はリチウムイオン電池+LiPro Charger。 動いてるところ。表示は1行目から周波数、ボリューム、感度 ([S]はステレオ受信)、放…

Open vSwitchやNamespaceの関係図をコマンド一つで描く

LinuxでSDNっぽいことをOpen vSwitchでやろうとすると、BridgeやらNamespaceやらInterfaceやらが増えまくって全貌の把握が困難になってきます。また、なぜかpingが通らないときなど、あっちこっちでtcpdumpして回るのは大変です。そこで、コマンド一つでOpen…

FedoraやCentOS 6/7、RHEL 6/7のinitramfsを展開する

FedoraやCentOS 6/7、RHEL 6/7のinitramfsでは、先頭にEarly CPIO image(CPUのmicrocodeなどが入っている)がつくようになり、本体の起動RAMディスクイメージ(圧縮cpio image)はその後に来ます。本体を展開するには、先頭部分を飛ばす必要があるため、dracu…

HTTPS接続がCan't verify SSL peersというエラーになるときは

久しぶりにMacでとあるPerlスクリプトを実行したら OAuth::Lite::Consumer が特にエラーも出さずに失敗してしまった。 いろいろ試しているうちに、下記のようなスクリプトを実行すると % perl -MLWP::UserAgent -e 'print LWP::UserAgent->new()->get("https…

MouseCapeでIBeamカーソルを見やすくする

Mac

Mac OS X 10.9くらいから、Iビームのマウスポインタが暗い背景で非常に見にくくなってしまいました。ターミナル等で背景色を黒っぽい色にしていると、テキストを選択しようとした時などにマウスポインタがどこにあるかわからず、非常に不便です。 MouseCape…

「リツイート直後のツイートを探す」twicliプラグイン

Twitterで、自分のツイートがリツイートされた後、感想などが直後にツイートされることがあります。しかし、特にリプライ先の指定がされているわけでもないので、フォローしていないユーザーがどんな反応をしたかは自分にはわからないことが多いですよね。 …

Google AppEngine (Python) からファイルアップロード

Google AppEngineで外部サイトにHTTPリクエストを発行する際に使う urlfetch は、post関数を持っていません。通常のテキストデータの送信であれば、POSTメソッドの発行自体は method=urlfetch.POST を fetch() の引数に渡すことで可能です。しかし、ファイル…

Fedora21でdebuginfo-install

Linuxでカーネル空間で テトリスや2048で遊ぶ デバッグをするために必要なkernel-debuginfoですが、Fedora 21でインストールしようと下記のようにdebuginfo-installコマンドを叩くと、 # debuginfo-install kernel ... Could not find a package for: kernel…

iPhoneの充電電流ログ

iOS

電流センサが転がっていたので、iPhone 6の充電電流をロギングしてみました。縦軸は電流(mA)、横軸は時間(分)です。 グラフには現れませんが、電池のみならず充電器側の能力(たぶん電圧、というか出力インピーダンス)もモニタリングしながら流す電流を決め…

Ringでリモコン

あのRingが届きました。 iPhoneアプリで好きなジェスチャーとアクションを対応付けして使います(もちろん設定後は、アプリがバックグラウンドに回っていてもRingの操作を受け付けてくれます)。 標準アクションだけでもいろいろな操作に対応していますが、…

U2F対応キーを買ってみた

Chrome 38 (Win/Mac/Linux) がUSBセキュリティキーに対応し、あわせてGoogleの2段階認証もこれに対応しました。従来のスマートフォンによる認証と比べてキーを挿す*1だけとお手軽なほか、似たような外見・URLのフィッシングページに誘導されてもブラウザが正…

MacのPreviewで画像ベースのPDFファイルサイズを小さくする

Mac

スキャナ等で取り込んだJPEGファイルをPDF変換する際、Previewで単純に形式をPDFにして保存すると、とんでもなくファイルサイズが大きくなって驚くことがあります(1MBのJPEGファイルが10MB超になるとか)。 システム標準でReduce File SizeというQuartzフィ…

zshのcorrectallでドットファイルを無視

zsh

zshの機能に、コマンドやファイル名のスペルミスを修正してくれるCORRECTとかCORRECT_ALLという機能があります。具体的には、correctを指定しておくとコマンドのスペルミスすると修正候補を提示してくれるので、n (修正せずそのまま実行)、y (修正して実行)…

Gmailでプッシュ配信されるメールを取得

Gmailをはじめとする、IMAPのメールサーバ*1から、プッシュ配信されるメールを取得する方法を調べたのでメモ。新規メールを監視してリアルタイムに何らかの処理を実行するといったことが可能になります。使うライブラリは require 'net/imap' まず接続と認証…

JavaScriptでMacに歌ってもらう

最近のChrome, SafariのJavaScriptには音声合成APIが入っています。 使い方は簡単で、JavaScriptコンソール等で var msg = new SpeechSynthesisUtterance('こんにちは!'); msg.lang = "ja-JP"; // 言語指定 window.speechSynthesis.speak(msg); のようにする…

12言語polyglotで足し算

CodeIQのコーディングパズルで、同一のソースコードで複数の言語処理系で動作するプログラム(いわゆるpolyglot)として、標準入力からの2つの数を加算して出力するものを書くというお題"hybrid A+B problem"が出ていました。12言語(Bash, Brainfuck, C, CL…

コマンドでideone.comにソースを送信・実行

普段あまり使わない言語で書かれたコードをちょっと実行してみたい、あるいは、実行環境を持っていない人にもコードや実行結果を共有したい、といったとき、Web上で60以上の言語処理系を試せるideone.comが便利です。 一方、手元でコードを書いている場合な…

ADS-B受信用アンテナ作製

先日のエントリ(Raspberry Piで航空機からの位置情報信号ADS-Bを受信してみた - Okiraku Programming)の続きです。 SDRチューナーに付属のアンテナでも最大100nm(180km程)の距離にある航空機の信号を拾えていましたが、ものは試しということで、グランドプ…

Linuxカーネル空間で2048で遊ぼう

最近大ヒットしたゲームと言えば2048。上下左右にタイルを動かして数字をくっつけ、2048を作るだけのシンプルなゲームですが、それだけにハマりやすい。 [参考記事: 「2048」:19歳のイタリア人が、ミニゲームでインターネットを征服!|WIRED.jp] 2の累乗…

Raspberry Piで航空機からの位置情報信号ADS-Bを受信してみた

最近ニュースで航空機の捜索が話題になっていましたが、その中でADS-Bという単語が出てきました。ADS-B(Automatic Dependent Surveillance-Broadcast)は、航空機から1090MHzの周波数で発信されている、識別子、GPSによる現在位置、高度、対気速度などを含…

QEMU guest agentを使って仮想マシンのIPアドレスを取得

LinuxのKVMで、ゲストのIPアドレスを取得する方法の覚え書き。 VMのNICの接続先が仮想ネットワークであれば、 /var/lib/libvirt/dnsmasq/virbr0.leases等にDHCPサーバが仮想マシンにリースしたIPアドレスが入っていますので、ここから取得できます。 一方、…

twicliでUser Streaming APIを利用する

twicliでUser Streaming APIを利用できるようにするプラグイン stream.js を実験的に公開しました。 これを導入することで、 タイムラインを数分ごとの更新ではなく、リアルタイムで追いかけることができるようになります。 実験的ということで、不安定だっ…

販促品のLEDファンのデータを書き換えてみた

とあるカンファレンスのIntelブースで、販促品(?)のLEDつきファンを貰いました。 スイッチを入れるとファンが回転し、羽根に入っている7つのLEDが空中に文字を描き出すというもの。 もともとは求人広告として、「We're Hiring!」の文字とURLをアニメーション…

ロボットボールSpheroをLeap Motionでジェスチャー認識してコントロールしてみた

Leap Motionで手の位置やジェスチャーを認識し、それに合わせてロボットボールSpheroを走らせてみました。手を握った状態から開くと、コントロール開始。 手を開いたときの位置を基準に、前後左右に手を動かすだけで、Spheroを思うがままに走らせることがで…

emacs daemonの設定メモ

ちょっと設定を見直したのでそのときのメモです。 拡張をいろいろ追加すると起動に時間がかかるというemacsの欠点を補う方法として、emacs --daemonというものがある。これは要するにemacsをデーモンとしてバックグラウンドで起動しっぱなしにしておき、使い…

iOS7のSiriのMPTCP通信をキャプチャしてみた

iOS7のSiriはMPTCP (Multi-path TCP) に対応しているとのこと。参考: iOS 7は3G・4G通信とWi-Fiなどを同時使用して回線速度を安定させる「MPTCP(マルチパスTCP)」に対応していることが判明 - GIGAZINE 参考: iOS 7でMPTCPがサポートされた話 | nunnun's webl…

HaskellでUTF-8をバイトごとに分解

めも。 % cabal install utf8-string でCodec.Binary.UTF8.Stringを導入し、encodeStringする。 unpack-utf8.hs import Codec.Binary.UTF8.String import System.Environment main = do cs <- getArgs print $ head cs print $ encodeString $ head cs 実行…

英語配列キーボードでも英数/かなキーが欲しい

Mac

MacBookの日本語配列キーボードを使う際、英数キー、かなキーがスペースバーの両横にあるため、一発で英語入力/日本語入力を確実に切り替えることができるのが気に入っていたのですが、最近英語配列キーボードを使い始めたため、これらがなくなってしまい、…

室温をSiriでコントロール

ボストンに引っ越しました。 こちらのアパートは日本と違って各部屋のエアコンというものはなく、全室空調になっています。その温度設定をするのがサーモスタットと言われているこういうコントローラ。 要するに、室温をセンサで読み取って、設定値より高く …

twicliのTwitter API 1.1対応について

3月5日に、Twitter社により、従来使われてきたAPI「バージョン1」が廃止され、「バージョン1.1」のみに変更されます。 これに対応するにはTwitterクライアント側での対応が必須になっており、twicliにおいても移行が必要です。そこで、twicliのバージョンア…

ArduinoとKinectでラジコンヘリを飛ばしてみた

KinectとProcessing、Arduinoを使って、ラジコンヘリを飛ばすしかけを作ってみました。 動画: 赤外線ラジコンヘリ 飛ばすのはFS-IRH100 (F103)という室内用のラジコンヘリ。 赤外線方式のコントローラが付いてきます。 2000円台という安さながら、慣れるとか…