サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
買ってよかったもの
laclefyoshi.hatenablog.com
Markdownドキュメント内で外部のファイルの内容を引用したい場面が多々ある。プログラムや設定ファイルの説明などを加工としているときに多い。 外部ファイルの内容をコピーしてMarkdownドキュメントにペーストしても解決するが、外部ファイルの内容が変更された時には、Markdownドキュメント側も変更する必要があり、保守が大変になる。 cogというコードジェネレータを使ってこの問題を解決した。 Ned Batchelder: Cog 例えば以下の様なMarkdownファイルを用意する。 以下はZookeeper用Dockerfileである。 <!-- [[[cog import cog filepath = "/home/laclefyoshi/Documents/zookeeper/Dockerfile" label = "#lst:zookeeper_dockerfile" form
LaTeXだと\labelと\refを使えばいい具合に相互参照できる(参照番号を付けてくれる)が、Markdownだとそういう記法は無い。 pandocというドキュメントコンバータを使うと、Markdown(など)の形式のドキュメントを入力にして、様々な処理を加え、Markdownや他の形式のドキュメントを出力することができる。その「様々な処理」はpandocに内蔵されたものの他、プラグインで拡張することができる。 そして、プラグインの1つにMarkdownドキュメント内での相互参照を実現するpandoc-crossrefがある。 GitHub - lierdakil/pandoc-crossref: Pandoc filter for cross-references 例えば以下の様なMarkdownファイルを用意する。 はじまり [@fig:a_image]に示す画像は特に意味が無い。
検索しているとなにかとNetflixのgithubリポジトリがヒットするので、全部(2015/07/18現在分)調査してみた。 github APIで https://github.com/Netflix のリストを全部取得して、名前・概要・URL・最終更新日時 (なんの更新だ?) を抽出。 AWS用のプロダクトが多かったのでまずそれらと、その他という分類にした。その他はほとんどがJavaライブラリ・システムだが、一部WebアプリケーションやPythonライブラリがある。 日本語での説明はReadmeやWikiを見て書いているが、理解が正しくないかもしれない。 AWS用 aws-autoscaling Tools and Documentation about using Auto Scaling URL: https://github.com/Netflix/aws-autoscalin
以下の内容をより実用的・網羅的にまとめ、Kindle電子書籍としてリリースした。 Druidによる時系列データ解析入門 作者: 佐伯嘉康発売日: 2015/07/25メディア: Kindle版この商品を含むブログを見る 概要、参考資料 Druidは、リアルタイムに(ストリーミングな)時系列データを収集するコンポーネントと、収集したデータセットに対し集計クエリを受け付け処理結果を返すコンポーネントからなるデータベースシステムである。 Google技術でいうところのDremel (VLDB2010) とPowerDrill (VLDB2012) との中間に位置するらしく、つまりCloudera Impalaとも似ている。Druidが基準にしている性能指標は、6TBのデータを1桁秒で処理することであると挙げられているが、それを実現するためのシステム要件はそれほど高くない(メモリは特にあればあるだ
Chrome 33のベータはCustom Elementsを導入, 音声合成APIをサポート | TechCrunch Japan Web Speech API Specification Macではsayコマンドでお馴染みの合成音声が、Google Chromeでも使えるようになったらしいので試してみた。Webページ経由ではなく、Google ChromeのJavaScriptコンソールを用いた。 サンプルコードにある通り、message と voice を定義する必要がある。 https://gist.github.com/laclefyoshi/8627514 voice一覧の後半に、AlexからZavoxはMacの読み上げ (say)で使われる声と同じものが現れた。おそらく、Macに (日本語用音声である) KyokoさんやOtoyaくんをインストールすれば、ここに現れると思われる
最近は様々なWebサービスがJSON形式のデータを提供している。これはJSONが軽量の書式で、JavaScriptを使ったWebサービスが普及しているから、JSONデータを流通させることでサービス間の連携を容易にするためだと考えられる。 そこで、ある程度のデータを集計するためにはJSONデータを上手く処理出来る必要がある。そして、僕はデータマイニングツールにRを使っている。RでJSONデータを処理するためにはどうするか。 Googleで検索して、rjsonというライブラリを見つけた。RオブジェクトとJSONデータを相互変換出来るようだ。 Rで処理するデータ例として、Google Elevation APIから取得した標高データを用いた。標高データは {位置 (緯度, 経度), 標高}の組から成る。試しに、北海道 (43.0 (北緯), 141.4 (東経))から沖縄 (26.2 (北緯),
Google Chromeの開発版で、拡張機能APIにソケット通信が追加されたそうだ。ネットワークプログラミングマニアとして、早速ドキュメントを読んでみた。 参考: Chrome supports TCP & UDP Sockets ドキュメント: http://code.google.com/chrome/extensions/experimental.socket.html しかし、参考ページにあるサンプルコード通りには動かなかったので、ドキュメントとエラーメッセージを見ながら実際に動くものを作ってみた。ちなみに、experimental.socket.htmlはドキュメントのどこからもリンクが張られていないので、まだ本当に実験段階の「使われるレベルにない」APIのようだ。 動作環境としてGoogle Chrome 21.0.1137.1 canary (Windows/Mac
ScalaのActorライブラリを使えば、Actor modelに基づく簡単に並行処理プログラムを書くことが出来る。ところで、Wikipedia日本語版のアクターモデルの項は英語版の古い版の訳のようだが、ところどころおかしい。 試しに、2つのActorが数字をカウントするプログラムを書いて実行してみた。 $ scalac ActorTest.scala $ scala ActorTest c1: 1 c2: 1 c2: 2 c1: 2 c2: 3 c2: 4 c2: 5 c2: 6 c2: 7 c2: 8 c2: 9 c2: 10 c1: 3 c1: 4 c1: 5 c1: 6 c1: 7 c1: 8 c1: 9 c1: 10 2つのActorの出力が混ざっている。MacBookPro5,5 (Intel Core 2 Duo)で動かしたので、それぞれのActorが各CPUに配置されて実行
前にGoogle ChromeをAppleScriptで操作する - DiaryExceptionという記事を書いたが、1つ見落としていたことがあった。 AppleScriptの中にJavaScriptを書いて、表示中のWebページを加工することが出来る。 Safariを操作するAppleScriptの中にはdo JavaScriptという命令を書くことが出来、この命令でSafariに表示されているWebページをJavaScriptで加工することが出来る。Google Chromeだとこの命令はexecute javascriptという名前で実装されている。 例として、bitbucketのページを開き、ログインをするという動作をAppleScriptで記述した。 bookmarkletでも同様のことは出来るが、AppleScriptで記述することの強みとして、Webブラウザの外側の様々なア
卒論や修論の締切りが近づき、ぎりぎりになって実験のデータの集計や考察をすることになり、「どうすればいいのか分からない」状態では困る。そんな状態で集めたデータでは、そもそも集計するために適しているかさえも分からないだろう。 一般的に、実験データを集計したり考察する際には統計学の知識が役に立つ。統計学の裏付けをもってして、自分の集計や考察が正しいと言うことが出来る。 これからそういう状況になるだろうと考えている人達、あるいは、道具としての統計学を身に付けておくことに興味がある人達に、幾つか本を勧めたい。 勧める本を以下のレベルに分けた。 基礎/入門: 「正規分布」「平均」「分散」とは何かを他人に正確に説明できない人へ 基礎/入門: 統計による予測 基礎/入門: 統計によるアンケート調査 実践: 「時間がない。今すぐにデータを集計してペーパに載せる結果を得たい」人へ 副読本: 「統計を使ったうん
Arduinoで、定期的に何か動作をさせたい場合がある。そういう場合は、タイマやスレッドを用いることが出来る。勿論、Arduino環境らしく、ライブラリで簡単に使えるようになっている。 タイマ Arduinoでタイマを使うなら、定番はhttp://arduino.cc/playground/Main/MsTimer2らしいが、最近はArduino Playground - FlexiTimer2も使われるようになっているようだ。両ライブラリはメソッド互換があるので、FlexiTimer2を使うことにする。 FlexiTimer2を使って、2個のLEDを点滅させるプログラムを書いた。1つは1000ミリ秒、もう1つは2000ミリ秒間隔で点滅する、はずだった。しかし、結果は片方は2000ミリ秒間隔で点滅を繰り返したが、もう片方は点灯すらせず沈黙したままだった。 つまり、FlexiTimer2では
App Storeで買うとver.1.3.1が170円。自分でビルドするとver.1.3が無料。経験はプライスレス。 http://code.google.com/p/growl/source/checkoutから、ソースをチェックアウトする。 ターミナルでソースのトップディレクトリに入り、generateHgRevision.shを実行 (hgRevision.hを生成)する。TARGET_BUILD_DIRがセットされていないので、カレントディレクトリを指定する (カレントディレクトリ直下にinclude/hgRevision.hが生成される)。 GrowlVersion.h内の#include "hgRevision.h"を#include "include/hgRevision.h"に書き換える。 Xcode 4.2でGrowl.xcodeprojを開く。ビルドターゲットをGrow
WebSocketとDeviceMotion Eventで遊ぶ - DiaryExceptionで、iOS 4.2.1にしたiPod touchでWebSocketとDeviceMotion Eventが使えることが分かったので、HTML/JSを用いたアプリケーション(Webアプリケーション)から離れて、iPod touchからArduinoを操作するアプリケーションを考えた。 3章に分けて解説する。 設計 実装 実演 設計 iPod touch (Webページ) <-WebSocket通信-> WebSocketサーバ <-TCP通信-> Arduino の、各要素間通信でやり取りするデータは、JSON形式によって記述する。 iPod touchのSafariで表示するWebページにはボールがあり、色をフォームで赤/緑から選択する。ボールの位置は、iPod touchの傾き:Device
検索機能付きのAndroidアプリを作るために、ドキュメントを読んでいるとCreating a Search Interface | Android Developersという項目があり、SQLiteに全文検索モジュール:SQLite FTS3 and FTS4 Extensionsがあることを知った。 Androidアプリに組み込む前に、FTS3を使ってみた。 $ sqlite3 database.sqlite SQLite version 3.7.6 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> CREATE VIRTUAL TABLE AddressBook USING fts3(name TEXT, address TEXT); -- FTS3を使う表はVIRT
Pythonだと >>> round(1.5) 2.0 >>> round(2.5) 3.0 >>> round(3.5) 4.0 >>> round(4.5) 5.0 Rだと > round(1.5) [1] 2 > round(2.5) [1] 2 > round(3.5) [1] 4 > round(4.5) [1] 4 round(偶数.5)の結果は実装によって異なるらしい。端数処理 - Wikipediaによれば、整数に丸めるには少なくとも2つの方式があり、算数で習った「四捨五入」と、元の値に近い偶数側に丸める「最近接偶数への丸め」が含まれる。 四捨五入だと整数間のちょうど真ん中の数値であるX.5が常に正側に丸められることで、丸めた値の総和が下の値の総和よりずっと大きくなる一方で、最近接偶数への丸めはX(偶数).5の場合負側に丸められるため、全体としてバイアスが小さくなるという性
デスクトップ通知とは、デスクトップで全てのアプリケーションより上のレイヤにバルーンあるいはポップアップの形式でメッセージを表示するものを指す。 結果の出力に時間のかかるプログラムを端末で動かしている場合など、プログラムを動かしている端末から目を離したい場合が時々ある。しかし、プログラムがエラーにより落ちたり、あるいは正常に終了した場合に、端末から目を離していてはすぐに対応することが出来ない。 そこで、プログラムからデスクトップ通知を用いることで、全てのアプリケーションより上のレイヤに任意のメッセージを表示することが出来るので、プログラムの挙動に対しすぐに対応することが出来る。 Mac環境のデスクトップ通知: Growl Macでデスクトップ通知と言えばGrowlがある。 AppleScriptによるGrowlによるデスクトップ通知を出すプログラムは以下のようになる。 tell applic
ATMEGA168/328用マイコンボード(I/Oボード): マイコン関連 秋月電子通商-電子部品・ネット通販を3枚ほど買ったので、Arduino互換機を作ることにした。 秋月でチップ:ATmega8とATmega168Pを購入したが、このままではArduinoとして使えない。bootloaderを書き込む必要がある。 Arduino開発環境の[Tools]-[Burn bootloader]というメニューアイテムを見ると分かるが、ATmegaにbootloaderを書き込むための手段には幾つか選択肢がある。普通は、手持ちの、あるいは、自作したprogrammerを使ってbootloaderを書き込むのだが、最近「Arduino ISP」という選択肢が出来た。手持ちのArduinoをprogrammerにしてATmegaにbootloader書き込むというわけで、余分な出費が無くて良い。
rst.elはここにある。 灰色背景になって、章タイトルが見難い。 rst.elには (setq frame-background-mode 'dark) とすると、色が黒背景に対応したものに変わると書いてあるのだが、何か他の設定とバッティングしているのか上手くいかないので、全部手動で設定してみた。 参考にしたのは、org-modeの配色(Carbon Emacsだと /Applications/Emacs.app/Contents/Resources/lisp/textmodes/org.el)。折角なのでgreyによる背景グラデーションはそのまま採用した。 M-x customize-face > rst-level-1-face ~ rst-level-6-faceまでをorg-level-*に合わせて変更 M-x customize > [Faces group]-[Rst Fac
iPod touch(第2世代と第4世代)のiOSを4.2.1にアップデートした。Safari on iPhone & iPad 4.2: Accelerometer, WebSockets & better HTML5 support | Breaking the Mobile Webによれば、SafariのHTML5対応が強化されたらしい。 試しに遊んでみる。 WebSocketとDeviceMotion Eventの組み合わせに着目して、複数のボールがiPod touchのモーションによって動き、そのボールの位置がWebSocketを通してWebページを閲覧している全てのデバイスに通知/共有される、というシナリオを考えた。 図にすると以下のような感じ。1つのデバイスが1つのボールを制御し、WebSocketを通じて共有されるデータは「どのボールがどの位置にあるか」という単純なデータと
Google Chromeはver.7以降でAppleScriptに対応している。正確に書くと、Google ChromeのプロセスにAppleEventを送ることが出来るようになった。 AppleScriptはAppleScriptエディタを使って書いて実行するか、エディタで書いてosascriptコマンドで実行することが出来る。 つまり、他のアプリケーションやshellからGoogle Chromeを操作する、Google Chromeの情報を取得することが可能になった。 例えば、Google Chrome内で選択したテキストをそのままEmacsのバッファに挿入したい場合、(AppleScriptを使わなければ、Google Chromeでテキストを選択→Command-c→Emacsに移動→(kill-ringとpasteboardが連動していることを前提にして)C-yとする必要があ
WeeChat, the extensible chat clientはchat clientの1つで、僕は主にIRCクライアントとして使っている。weechatと同様CUIのIRCクライアントで有名なものにはIrssiなどがあるが、weechatはGTKによるGUIもある(らしい/使ってない)。 weechatはPythonやPerl、Ruby、Lua、Tcl(!)でプラグインを書くことが出来、WeeChat :: scriptsに既に便利なプラグインが幾つか登録されている。 僕も先日、notifo(iPod touchにPush Notificationを送るサービス)を使ったnotifyプラグインをPythonで書いてweechatチームに送り、無事Script: notifo_notify.pyとして公開してもらった。 簡単に使い方を書いておこう。 他のプラグインと同様、autol
face.comの顔認識APIが公開された(1年で70億枚の顔写真をスキャンしたFace.comが顔認識APIを無料で一般公開 | TechCrunch Japan)。珍しいAPIなので、何に使えるか考えて、とりあえず、カメラに近付いた人の顔の認識に使ってみることにした。 ただ近付いたと分かるだけでもつまらないので、Arduinoの状態をim.kayac.comに送信してiPod touchで確認する - DiaryExceptionのネタを流用して、顔が近付いたらiPod touchに知らせる。 少し長いエントリーになったが、以下の4つの章に分けられる。 画像アップローダの設置 各サービスのアカウント登録 実装 実行 画像アップローダの設置 face.comの顔認識APIは画像のURLを引数に取るため、PC(ローカル)にある画像を解析対象とさせることは出来ない。そこで、予め画像アップロー
radiko.jp(ラジコ) | ラジオがインターネット(アプリやパソコン)で無料で聴けるが始まったが、プレスリリースの通り、Flash Playerによる再生、IPアドレスによる地域判別による利用制限など、お固い仕様となっている。 録音に関しては、スピーカ出力を入力に持ってくるループバックなどが使えるので大抵のPCでは問題は無い。玄箱/Linuxでしようと思うと、結構難しいかもしれない。 radikoでは配信しているラジオ局の1週間分の番組データを配信/表示している。これは、URLさえ知っていれば、利用可能区域外でも参照可能のようだ(東京から大阪の番組表を参照出来たから)。 簡単に、Pythonで番組データを解析、時間とタイトルを表示するスクリプトを書いた。UNIX哲学 - Wikipediaに含まれる「標準入出力を扱うプログラムを書け。標準入出力は普遍的インターフェースなのだ。」に倣い
お知らせ Flash Player Adobe Flash Player は最新版をご利用下さい。 Ver.1.0以降、既存ユーザ含め、初回起動時に設定が必須になりました。ご利用地域をオプション設定にて、ご指定下さい。 Ver.1.2以降、現在放送中の曲情報を取得するために、各局サーバに接続する動作を追加いたしました。従って、本拡張機能アップデート後、本拡張機能が無効になることがありますが、Google Chrome拡張機能管理画面で再度「有効にする」を選択いただくと、使用できるようになります。 概要 radiko player - Chrome Web Store 背景 radiko.jp(ラジコ) | ラジオがインターネット(アプリやパソコン)で無料で聴けるを開くのが面倒、局の選択と再生/停止が出来ればラジオとして十分、という「Small is beautiful」(Unix phil
radiko player - Chrome Web Store Google Chrome用拡張機能radiko player - DiaryException(サポートページとして) Google Chromeのタブでradiko.jpを開くことなく、バックグラウンドでradiko.jpを再生し続けます。 東京、大阪のradiko.jp可聴域に対応しています(ただし、東京地域のみテスト済み)。 - 21:50追記。インタフェースを見栄え良くした。
GitHub - zxing/zxing: ZXing ("Zebra Crossing") barcode scanning library for Java, Androidに割と使い易そうなバーコードリーダ/ライタライブラリがあったので、使ってみた。 少し前からメインマシンになったMacbook ProにはiSightが付いている。解像度の低いWebカメラも持っている。これらのカメラをバーコード読み取り器に使うのが良いだろう。となると、ソフトウェアからiSightなりWebカメラなりのカメラ画像を読み取る必要がある。Objective-Cで書けばなんとかなるが、zxingはJava用ライブラリなので、JVMから操作出来なければいけない。JNIやJNAを使うコードを書くのも面倒なので、Processingの processing.video ライブラリを採用する。ついでに、ソフトウェア
http://apiwiki.twitter.com/Streaming-API-Documentation Tweet全体をstatuses/sampleで眺めても、興味の無い話題ばかりなので、statuses/filterで単語を指定してTweetを絞り込んで眺める。 いかにも非同期なのでTwistedでする(9.0.0リリース記念(嘘))。 #!/usr/bin/python # -*- coding: utf-8 -*- from twisted.internet import reactor from twisted.web import client # HTTPPageDownloader, HTTPClientFactory import base64 # for Basic authorization import urllib import simplejson imp
Google URL Shortener goo.gl(6文字)。bit.ly(6文字)と同じというのが、対抗意識ばりばりというか、じゃあGoogleの強みとして述べているセキュリティとか速さをどれくらい体験出来るのかな、ということになる。 goo.gl短縮URLを作るための、APIは公開されていないのだが、Google Toolbarのxpiファイルをunzipし、lib/toolbar.js というファイルを読むと getUrlShorteningRequestParams_ という関数が見付かる。これが、Google URL Shortenerに投げるPOSTデータを生成している。 JavaScriptコードをPythonに変換してみた。関数名などは出来るだけそのままにしたが、一部は異なる記述を使っているので、JSコードを参照されたし。 #!/usr/bin/python # imp
iPhone OS 3.0以降に搭載されているApple Push Notification Service機能について、日本語版ヘルプには書かれていないが、英語版の方に、TCP Portの5223番を解放しろ、と書いてある。 iPhone、iPad、iPod touch で通知機能を使う - Apple サポート Use notifications on your iPhone, iPad, and iPod touch - Apple Support im.kayac.comを使いたくて、ちょっとテストしてみたら上手くPushされず、ヘルプの存在を知らずに、Twitterで出来ないなあとつぶやいたところ、すぐに中の人が教えてくれた。心から感謝。 さて。 PythonスクリプトでWebにある情報をPush出来ても面白くないので、現実世界の情報を自分のiPod touchにPushすること
次のページ
このページを最初にブックマークしてみませんか?
『DiaryException』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く