読み書きプログラミング

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

Iron Routerのフックの覚書

Iron Routerには以下の5つのフックが定義できるようになっている。 onRun onRerun onBeforeAction onAfterAction onStop その他に呼び出しのタイミングを考慮する上で、 subscriptions waitOn オプションがある。ここまでで1つ覚えておくことは、onRun, onSt…

アプリを検索クローラーに見てもらう

作ったMeteorアプリをGoogleで検索すると、URLとタイトルは引っかかるのですが、中身が空白です。 ウェブアプリは仕方がないのかと思っていたのですが、ちゃんと枠組みがあるのですねぇ。 Making AJAX applications crawlable Meteorにもspiderableというパ…

ImageIdentifyをREST APIとして使う

Twitter友達からWolfram Language Image Identification Projectを教えていただきました。こんな記事がありますね。 http://gigazine.net/news/20150527-wolfram-language-image-identification-project/ で、これをREST APIとして使えるかどうか調査しまし…

MeteorでRatchet

モバイルCSSフレームワークRatchetのMeteorパッケージはいくつかありますが、ほとんどは、オリジナルのファイルをラップしたものでした。 1つだけ、ページ遷移のアニメーションをサポートしたものがあったので、そのご紹介と私の改良を簡単に書きます。 htt…

日本語マニュアル 5.36.1

英語マニュアルをちょっと見てみたら更新量が少なかったので、日本語マニュアルも更新しました。 http://maxima.osdn.jp/maxima.html sourceforge、URLが変わったんですね。Maxima,最近あまり活動が活発ではないのでしょうか? 構文を関数型っぽいモダンな…

Iron RouterとappcacheとUIWebView

appcacheを入れたMeteorのアプリがUIWebViewで動かないことが多々あるという不具合に半年前気がついたのですが、ようやく原因がわかりました。因果関係は置いておいて、原因は、 iOSのUIWebViewやWKWebViewは、window.locationにURL文字列を代入した時、高確…

複数のアプリで1つのアカウントデータベースを使うその2

以前に、remote DDP serverのデータベースでユーザー管理を行う方法を書きました。 複数のアプリで1つのアカウントデータベースを使う この記事でも書いた通り、OAuthなどcallback URLを使う認証の場合はうまくいかないので、以下のように考えてみました。1.…

OpenCV3をMacにインストールする

追記(2015/07/24): HomeBrewにフォーミュラhomebrew/science/opencv3が追加されて、特に苦労することなくインストールできるようになっていました。 OpenCV3 ベータ版が昨年11月に公開されました。 Python3でOpenCV3のプログラムを書いてみたいと思い、イン…

サインインユーザーの現在閲覧ページモニタ

前回に続いて、サインインしてるユーザーの閲覧状態をモニタするコードです。苦労したところは、サーバー側を更新した時のイベントです。明示的なAPIはないので、リアクティブなMeteor.status()を使いました。 # (C) 2015 ICHIKAWA, Yuji (New 3 Rs) ### Iro…

Current Visitorsパッケージ

Meteorのパッケージを初めて登録してみました。 Iron Routerを使っている時に、各ページを見ている訪問者数を取得するパッケージです。 https://github.com/new3Rs/current-visitors

ニコニコウェブ公開

新サービス発表します。 ニコニコウェブ http://niconicoweb.meteor.com/ 既存のサイトを、ニコニコ生放送のようにみんなでコメントしながら楽しもうというサービスです。入力欄にURLを入れると、見たいページに飛びます(実際にはiframeで埋め込み表示です)…

日本語マニュアル 5.35.1

Maxima 5.35.1に合わせて日本語マニュアルを更新しました。 http://maxima.sourceforge.jp/maxima.html 勝手ながら今回で、Maxima 日本語マニュアルのメンテナンスを卒業します。 翻訳を始めたのはおそらく2009年の春。足掛け6年弱ですか。バージョン5.18か…

ブラウザで多言語音声合成する時のワークアラウンド

ブラウザで音声合成ができる便利な時代です。 それも多言語サポートされていて、speechSynthesis.getVoices()をコールすると、様々な言語用のVoiceが取得できます。ところが、少なくともMac版Google Chromeでは、初回のspeechSynthesis.getVoices()コールで…

Iron Routerとappcache

Meteor/Iron Router1.0以前ではappcacheと組み合わせると、パラメータを含むURLもアクセス履歴に応じてアプリケーションキャッシュに保存されてしまうという不具合がありました。 1.0になった時これを回避するために、パスのハッシュ化が取り入れられました…

"Npm is not defined"

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

pageshow/pagehideイベント

Mobile Safariに限らずかもしれませんが、load/unloadイベントがdeprecatedになって、pageshow/pagehideという名前になったようです。load/unloadの動作が不安定だったからでしょうね。新しいpageshow/pagehideはページ遷移でトリガーされます。 アクティブ…

四路の純碁アップデートしました。

ハートラミーゴ(http://ameblo.jp/heartlamigo/)人気にあやかって、ハートラミーゴっぽいデザインにしてみました。 http://y-ich.github.io/yonro/

iOS8での不具合について

iOS7まではウェブクリップでWeb Audioを使うとホームボタンと電源ボタンが効かなくなるという致命的なバグありました。 iOS8ではこれは直っているようです。代わりに、ウェブクリップではAudioタグの再生ができないという新たな不具合が見つかりました。 con…

日本語マニュアルを5.34.1に更新しました。

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の実…

複数のアプリで1つのアカウントデータベースを使う

Meteorは基本シングルページウェブアプリです。 なので、デスクトップ用ページとモバイル用ページを作りたい場合、レスポンシブデザインということになりますが、レスポンシブデザインには限界がありネイティブアプリのようなUIは実現できません。なので、デ…

Twitter Streamingを使う時にはエラーイベントも処理しておく

果たしてパッケージの問題なのか、Meteorとの副作用なのか、Node.jsのTwitterパッケージを使ってストリーミング受信すると、例外が発生してMeteorが再起動することが時々起こっていました。Twitterパッケージの中でJSON.parseに失敗すると、errorイベントを…

Twitter widget.js周辺のworkaround

サイトにTwitterボタンを入れていて、次はLINEで送るボタンを入れてみました。 すると、 Cannot read property 'match' of undefined という例外がwidget.jsの中で発生するようになって、Twitterボタンが正常に表示されません。 「LINEで送るボタン」は配置…

RMagickでTwitterに投稿するGIFアニメーションを作成する時に注意すること

6月19日にTwitterがGIFアニメーションをサポート開始しました。直接GIFアニメーションを見えるようにするのではなく、投稿時にGIFアニメーションをMP4に変換してそのリンクをツイート配信する枠組みです。RMagickでGIFアニメーションを作成して投稿してみた…

SGFパーサで四苦八苦

囲碁のプログラムのため、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

[JavaScript] URIにマッチする正規表現

URIにマッチする正規表現が欲しかったので、URLにマッチする真の正規表現 – RFC3986定義のURIの話を参考にさせていただいて、簡略化とリファクタリングをしました。 ホストのipv6addressとipvFutureは長い割りに今のところ使うシーンを思いつかなかったので…