2014-01-01から1年間の記事一覧
ブラウザで音声合成ができる便利な時代です。 それも多言語サポートされていて、speechSynthesis.getVoices()をコールすると、様々な言語用のVoiceが取得できます。ところが、少なくともMac版Google Chromeでは、初回のspeechSynthesis.getVoices()コールで…
Meteor/Iron Router1.0以前ではappcacheと組み合わせると、パラメータを含むURLもアクセス履歴に応じてアプリケーションキャッシュに保存されてしまうという不具合がありました。 1.0になった時これを回避するために、パスのハッシュ化が取り入れられました…
Meteor 1.0、調子よく動いていたのですが、突然、"Npm is not defined"というエラーがクライアント側で出るようになりました。NPM関連なので、meteorhacks:npm, npm-containerパッケージをremoveしてaddしてみましたが直りません。packages/npm-containerフ…
囲碁中継サイト「耳赤」にニコ生風コメント表示機能を追加しました。 汎用性あるかと思いますので、その部分だけ切り出したコードを公開します。 https://github.com/y-ich/nico-comment-window
Mobile Safariに限らずかもしれませんが、load/unloadイベントがdeprecatedになって、pageshow/pagehideという名前になったようです。load/unloadの動作が不安定だったからでしょうね。新しいpageshow/pagehideはページ遷移でトリガーされます。 アクティブ…
ハートラミーゴ(http://ameblo.jp/heartlamigo/)人気にあやかって、ハートラミーゴっぽいデザインにしてみました。 http://y-ich.github.io/yonro/
iOS7まではウェブクリップでWeb Audioを使うとホームボタンと電源ボタンが効かなくなるという致命的なバグありました。 iOS8ではこれは直っているようです。代わりに、ウェブクリップではAudioタグの再生ができないという新たな不具合が見つかりました。 con…
http://maxima.sourceforge.jp/maxima.html
囲碁中継「耳赤」サイトのモバイル版を作りました。 http://mimiaka-m.meteor.com 明日から名人戦。中継頑張ります!!!
(オリジナル記事よりもっと簡単にかけたので更新しました。(2014年12月23日)) Stackoverflowでも色々苦労されているようです。サーバー側でこんなコード(CoffeeScript)を書きました。 NumOfSessions = new Meteor.Collection 'numofsessions' Meteor.publish…
英語を勉強してみたいという方が近くにいたので、翻訳機能付きチャットボットを作りました。 (飾りっ気一切なしのサイトです…) http://foreign-chatter.meteor.com/ 最初、Pythonの勉強にと思って、必要な材料集めて予備実験をしたのですが、チャットUIの実…
Meteorは基本シングルページウェブアプリです。 なので、デスクトップ用ページとモバイル用ページを作りたい場合、レスポンシブデザインということになりますが、レスポンシブデザインには限界がありネイティブアプリのようなUIは実現できません。なので、デ…
果たしてパッケージの問題なのか、Meteorとの副作用なのか、Node.jsのTwitterパッケージを使ってストリーミング受信すると、例外が発生してMeteorが再起動することが時々起こっていました。Twitterパッケージの中でJSON.parseに失敗すると、errorイベントを…
サイトにTwitterボタンを入れていて、次はLINEで送るボタンを入れてみました。 すると、 Cannot read property 'match' of undefined という例外がwidget.jsの中で発生するようになって、Twitterボタンが正常に表示されません。 「LINEで送るボタン」は配置…
6月19日にTwitterがGIFアニメーションをサポート開始しました。直接GIFアニメーションを見えるようにするのではなく、投稿時にGIFアニメーションをMP4に変換してそのリンクをツイート配信する枠組みです。RMagickでGIFアニメーションを作成して投稿してみた…
囲碁のプログラムのため、Jison(BisonのJavaScript版)を使ってSGFパーサを書きました。四苦八苦したので、その備忘録。まず、すんなり書けた第一版。 /* description: Parses SGF string and generates corresponding object. note1: This parser doesn't in…
Maximaの日本語マニュアルを5.33.0に更新しました。 http://maxima.sourceforge.jp/maxima.html
URIにマッチする正規表現が欲しかったので、URLにマッチする真の正規表現 – RFC3986定義のURIの話を参考にさせていただいて、簡略化とリファクタリングをしました。 ホストのipv6addressとipvFutureは長い割りに今のところ使うシーンを思いつかなかったので…
Meteorアプリに新浪微博のシェアボタンを追加するに以下のようにします。 1. サーバーサイドで WebApp.addHtmlAttributeHook (request) -> 'prefix="wb: http://open.weibo.com/wb"' (CoffeeScriptで書いてますが、同様の内容をJavaScriptで書いてもOKです) …
Meteorを0.8.0にアップデートした際、テンプレートのrenderedの仕様が変わったので、前のコードと同様の振る舞いをさせるために、renderedの中でobserveを追加しました。すると、 Error: must use ordered observe with skip or limit というエラーが出力さ…
Meteor 0.8.0がリリースされましたね。 今回のアップデートはレンダリングエンジンが一新されて、テンプレートのrenderedハンドラでHTML以外の色々な更新をしていたアプリには大きな変更になります。 以前のバージョンのレンダリングエンジンは、基本的にリ…
MeteorのHTTPはencodingがutf8固定で、バイナリ受信ができません。 なので、encodingを指定するために、npmのrequestを使いたくなりますが、非同期なのでMeteorの中では使い勝手が悪い。 そんなあなたにこの一行。(CoffeeScriptです) request = Meteor._wrap…
kombiloは検索時の領域指定にマウスの右ボタンを押しながらドラッグという操作を要求します。 私はMacでMagic Trackpadを使っているのでこの操作はできません。 そんなユーザーのためのオプションも用意されていました。 kombiloを初めて起動して終了すると…
kombiloは棋譜データベースプログラムです。以下からソースをダウンロードできます。 http://www.u-go.net/kombilo/ cd kombilo sudo easy_install configobj setuptools pyttk pip brew install boost brew tap homebrew/science brew install pmw export P…
珍瓏というのは元々は詰碁を示す昔の中国語でしたが、近年では盤全体を使った詰碁やシチョウ問題を示します。 ここではシチョウ問題という意味で使っています。 コンピュータがシチョウを追いかけて取れるかどうか判定し、その手順を示すアプリを作りました…
1月31日に囲碁電王戦が発表されましたね。2012年から電聖戦という電気通信大学と日本棋院提携でコンピュータ碁の進歩を確認するためのプロ棋士との置き碁戦が始まっていたのですが、やはり、(将棋)電王戦で大きな盛り上がりの実績のあるニコ生が取り組むとな…
いつからでしょう?気がついたらデスクトップChromeがTouchEventをサポートしていました。 document.createEvent('TouchEvent')を実行しても例外を発生させてくれず、自作のアプリでマウスとタッチでイベントハンドラを切り替えていたものがデスクトップChro…
前回、ページ遷移の高速化を行いましたが、実質、ページ遷移毎にsubscribeが更新されて、まだ不満がありました。イメージとして、最大のsubscribeが済んだら後はページ遷移でsubscribeの更新は起こらないようにしたい。 で、以下のような感じに修正しました…
なので、/System/Library/Frameworks/OpenCL.framework/Headersにhttp://www.khronos.org/registry/cl/api/1.2/cl.hppをコピーする。
マルチページアプリの場合、通常ページ毎に扱うデータベースが異なるので、Iron RouterではbeforeかwaitOnを使ってsubscribeすることになります。 データ量の大きなものをアクセスする場合にはwaitOnを使うと表示まで時間が掛かるので、beforeを使ってリアク…