読み書きプログラミング

日常のプログラミングで気づいたことを綴っています

ダックタイピングの手引き? - Rubyでの静的型付けの心理学

「Dropboxは全部Pythonで信頼性の高いソフトウェアを作った」の中で「人生を変えた記事」として"Subject: How to duck type? - the psychology of static typing in Ruby"というメーリングリストへの投稿記事が紹介されていましたので、訳してみようかと思い…

計算機ウェブアプリをiOS7にまねてみました。

iPad用iOS 7にはやっぱり計算機アプリがないということなので、iOS 7パクリの計算機ウェブアプリを作りました。 http://y-ich.github.io/Calculator/calculator7.html フラットデザインって、ずいぶんHTMLやCSSのコードが減りますね。

iOS 7ではウェブ(クリップ)アプリでwatchPositionが正常動作

iOS 6では「ホーム画面に追加」したウェブアプリではwatchPositionのコールバックが1度しかコールされないという不具合がありましたが、iOS 7では直っていることを確認しました。 <html> <head> <meta charset="UTF-8" /> <meta name="apple-mobile-web-app-capable" content="yes" /> <title>watch location</title> </head> <body> <script type="text/javascript"> navigator.geo…</body></html>

Android Chromeで初回ロード時、touchstartがトリガーされない。

ご存知でしたら対処法教えてください。 Android Chromeで、タブを作成して以下のページにアクセスすると、#touch divをタッチしてもtouchstartがトリガーされません。ページをリロードすれば、トリガーされるようになります。初回ロードでもトリガーするよう…

Wolfram|AlphaのTwitter bot多言語化しました。

Twitterから問いかけると、Wolfram|Alphaが答えてくれるTwitter bot @wb_botを多言語化しました。40カ国語以上です! (Microsoft Translator APIを利用させていただきました。)@wb_botにメンションする形で探索式を入力すると、答えがリプライされます。 @wb…

MacのDashboardのようなサイト「テーブルトップ」

新Nexus 7を買って少しずつ触っています。iPadと比較していい点悪い点色々ありますね。ウィジェットはやっぱりいいなーと思いました。それほど役に立つという訳ではありませんが、華がある。で、iPadでもウィジェットを使いたくてサイトを作りました。 http:…

日本語マニュアル更新

Maximaの日本語マニュアルを5.31.0に更新しました。 http://maxima.sourceforge.jp/maxima.html

日本語マニュアル更新

諸般の理由により、年初以来、Maximaの日本語マニュアルの更新をさぼっていたのですが、5.30.0に更新しました。 http://maxima.sourceforge.jp/maxima.html

音声ガイド付きストリートビューナビゲーション

(注: 2013年10月9日、サイトをmaps2013.herokuapp.comからy-ich.github.ioに引っ越しました。) http://y-ich.github.io/maps/navi.html 最近、自転車で動き回っています。この前は住んでいる天理市から三重県の鳥羽市まで行ってきました。 ろくに地図を確か…

Mobile Safariで好きなタイミングで音を鳴らす

iOS Safariのaudio要素はユーザーイベントで再生をしないと音が出ないようになっています。iOS6でWeb Audio APIがサポートされ、この制約を緩和するノウハウが色々なブログで公開されています。 今回、このノウハウを実際に使うことになったので、CoffeeScri…

Mobile Safariで自動ロックを抑制する

ナビゲーションアプリ、パズルのようなゲームをウェブアプリで作ると、iPhoneの自動ロックを抑制したくなります。ネイティブアプリならidleTimerDisabledプロパティを使うところです。 解はあって、それは10秒以下の短いaudioを鳴らし続けることです。 Mobil…

ルートの標高、勾配を調べられるAthlete-Maps

http://y-ich.github.io/maps/athlete-maps.html自分用のツールなので、無愛想ですが、URLだけ。

四路の純碁ソルバ

四路の純碁ゲームの兄弟、「四路の純碁ソルバ」を作りました。 http://y-ich.github.io/yonro/solver.html 問題を出すと、コンピュータが一生懸命解きます。

Mobile SafariでスムーズなBootstrap モーダル

Bootstrap便利ですね。 でも、iPhone, iPadで使うとエフェクトのアニメーションがぎこちなくて重いアプリのように見えます。少し手を入れればスムーズになります。 bootstrap.cssの以下の部分を下のように直せばOK。 .modal.fade { -webkit-transition: opac…

Mobile SafariでBGM鳴らすときの注意事項3点

要素のサイズを0にする iOS Safariではdisplay: noneにしてもaudio要素が200x16の基本サイズを持ち、レイアウトに影響を与えます。 CSSでサイズを0にしておきましょう。 audio { width: 0px; height: 0px; } 先頭から再生を始めるには例外処理を入れておく c…

四路の純碁ゲーム

久しぶりにウェブアプリを作りました。どうぞ一度お遊びください。 http://y-ich.github.io/yonro/ iPhone, iPadでの表示を意識しています。デスクトップだと表示が大きすぎるかもしれないので、「縮小」などで対応いただければ幸いです。 WebKit系で確認し…

ウェブで、iOS7のような動く壁紙を作る

iOS7では壁紙にパノラマ写真を選ぶと壁紙が動くそうです。 面白い。でも、ウェブで簡単にできますね。やってみましょう。 端末の姿勢(オイラー角)を扱うのに、Three.jsを使いました。 <html> <head> <meta charset="UTF-8" /> <title>Wall paper</title> <style type="text/css"> html, body { height: 100%; } body { background-image</meta></head></html>…

コールバックを介して値を取得する関数を配列の要素毎に適応するための関数

配列の要素毎に関数を適用するmapは記述を簡潔してとても便利です。でも、ネットワークを介してデータを取得するなどコールバックされた時に値がわかる場合には使えません。なので、そのための関数を作ってみました。 (jQueryのDeferredを使っています。) as…

囲碁思考エンジンFuegoをMacにインストールする

Mac

コンピュータ将棋が大変なことになってきました。(第二回電王戦) 次はコンピュータ囲碁の番です?一から作るのは大変ですが、幸いFuegoというモンテカルロ木検索も実装したオープンソースの囲碁思考エンジンがあります。これをMacにインストールするのに手間…

地図を片手に

http://books-on-map.herokuapp.com/index.ja.html ウェブサイトに地図閲覧機能を追加するアプリです。青空文庫などへの利用を想定しています。

インスタンス変数にメソッドを委譲する

継承は使いたくないけど、インスタンス変数のメソッドをサポートしたい場合、同じ名前のメソッドを定義してそのインスタンス変数に委譲することになります。関数delegateは、委譲するクラス、委譲されるクラス、そのインスタンス変数名を与えると、委譲する…

BootstrapとGoogle Maps JavaScript APIの干渉をなくす

CSS

Twitter BootstrapのCSSとGoogle Maps JavaScript APIで生成した地図は干渉する部分があり、例えば、InfoWindowの陰が醜くなったりします。 これは以下のCSSを追加することで解消できます。 #map img { max-width: none; } ここで、mapはGoogle Mapsを埋め込…

Underscore.jsに依存しないParallel.js

Adam Savitzkyさんの[Parallel.js](http://adambom.github.com/parallel.js/)、Web Workerのために別のスクリプトを用意する必要もなく、mapreduceもできて小さいながらかっこいいライブラリです。ですが、せっかくの軽量ライブラリがUnderscore.jsに依存し…

オフラインでも使える効果音再生

以下はクリック音を出すサンプル。keySound.play()で音が出ます。 keySound = _context: new webkitAudioContext() play: -> return unless keySound._buffer? source = keySound._context.createBufferSource() source.buffer = keySound._buffer source.co…

タッチイベント関連備忘録

TouchEventのTouchesの要素はライブ要素。オブジェクトとして変数に割り当ててもプロパティの値が変わるので、例えば、touchstartで開始の座標を保存したいならTouchesの要素を変数に割り当てるのではなく、そのプロパティの値を割り当てる。 touchmoveのscr…

表示中のページ内の画像に落ち着きがなくなるブックマークレット

(WebKitブラウザ専用です。) 以下の行をコピーしてアドレスバーで実行して下さい。ブックマークに登録すればどのページでもワンクリックで動作するようになりますが、そこまでしてもらうほどのものかどうか…でも画像検索サイトで使うと楽しいですよ! javasc…

画像を枠一杯に合わせて縦横中央寄せ

CSS

以下、間違いがありました。display: tableを指定すると、width, height設定に関わらず、中身に応じてサイズが変わってしまいました。修正案検討中。画像を背景に指定して、background-size: contain;を使えば一発ですが、そうもいかない時もあります。(画像…

任意の値のプロパティとプロトタイププロパティを取り出す

ウェブアプリでエディタを作っていて、自動補完を実装するために、プロパティを抽出するコードを書きました。 propertyList = (value) -> switch typeof value when 'string' then Object.getOwnPropertyNames value.__proto__ when 'undefined' then [] els…

Siphon2ベータ公開しました。

iPadなどタブレットに合わせたプログラミング用エディタSiphon2をベータ公開しました。 http://y-ich.github.io/Siphon2/ (注: 2013年10月9日、サイトをdl-web.dropbox.comからy-ich.github.ioに移しました。)一年ほど前に、ウェブ上で色々なことができるの…

日本語マニュアル更新

Maximaの新バージョン(5.29.1)が出ていたので、日本語マニュアルを更新しました。 http://maxima.sourceforge.jp/maxima.html