読み書きプログラミング

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

日本語マニュアル更新

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

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

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

Iron-RouterとWeibo share button

Meteorアプリに新浪微博のシェアボタンを追加するに以下のようにします。 1. サーバーサイドで WebApp.addHtmlAttributeHook (request) -> 'prefix="wb: http://open.weibo.com/wb"' (CoffeeScriptで書いてますが、同様の内容をJavaScriptで書いてもOKです) …

Error: must use ordered observe with skip or limit

Meteorを0.8.0にアップデートした際、テンプレートのrenderedの仕様が変わったので、前のコードと同様の振る舞いをさせるために、renderedの中でobserveを追加しました。すると、 Error: must use ordered observe with skip or limit というエラーが出力さ…

Iron-Routerを使っている場合の0.8.0へのアップグレードと0.7.1.2へのダウングレード

Meteor 0.8.0がリリースされましたね。 今回のアップデートはレンダリングエンジンが一新されて、テンプレートのrenderedハンドラでHTML以外の色々な更新をしていたアプリには大きな変更になります。 以前のバージョンのレンダリングエンジンは、基本的にリ…

requestを使う

MeteorのHTTPはencodingがutf8固定で、バイナリ受信ができません。 なので、encodingを指定するために、npmのrequestを使いたくなりますが、非同期なのでMeteorの中では使い勝手が悪い。 そんなあなたにこの一行。(CoffeeScriptです) request = Meteor._wrap…

kombiloをMacで使う

kombiloは検索時の領域指定にマウスの右ボタンを押しながらドラッグという操作を要求します。 私はMacでMagic Trackpadを使っているのでこの操作はできません。 そんなユーザーのためのオプションも用意されていました。 kombiloを初めて起動して終了すると…

kombiloをOS Xにインストールする

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…

珍瓏を解くウェブアプリ

珍瓏というのは元々は詰碁を示す昔の中国語でしたが、近年では盤全体を使った詰碁やシチョウ問題を示します。 ここではシチョウ問題という意味で使っています。 コンピュータがシチョウを追いかけて取れるかどうか判定し、その手順を示すアプリを作りました…

Pachiの使い方

1月31日に囲碁電王戦が発表されましたね。2012年から電聖戦という電気通信大学と日本棋院提携でコンピュータ碁の進歩を確認するためのプロ棋士との置き碁戦が始まっていたのですが、やはり、(将棋)電王戦で大きな盛り上がりの実績のあるニコ生が取り組むとな…

タッチデバイスの判定

いつからでしょう?気がついたらデスクトップChromeがTouchEventをサポートしていました。 document.createEvent('TouchEvent')を実行しても例外を発生させてくれず、自作のアプリでマウスとタッチでイベントハンドラを切り替えていたものがデスクトップChro…

Iron Routerとsubscribeその2

前回、ページ遷移の高速化を行いましたが、実質、ページ遷移毎にsubscribeが更新されて、まだ不満がありました。イメージとして、最大のsubscribeが済んだら後はページ遷移でsubscribeの更新は起こらないようにしたい。 で、以下のような感じに修正しました…

MavericksにはOpenCLのcl.hppが添付されていない

なので、/System/Library/Frameworks/OpenCL.framework/Headersにhttp://www.khronos.org/registry/cl/api/1.2/cl.hppをコピーする。

Iron Routerとsubscribe

マルチページアプリの場合、通常ページ毎に扱うデータベースが異なるので、Iron RouterではbeforeかwaitOnを使ってsubscribeすることになります。 データ量の大きなものをアクセスする場合にはwaitOnを使うと表示まで時間が掛かるので、beforeを使ってリアク…

日本語マニュアル更新

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

Advent Calendar 11 - Iron Routerを一言で言うと

Meteorはシングルページウェブアプリのプラットフォームです。 マルチページにするにはmrtでIron Routerパッケージを追加します。 https://github.com/EventedMind/iron-router Iron Routerは(シングルページウェブアプリを拡張したためか)基本的にクライア…

Twitter公式サイトの画像プレビューは幅が435px以上の画像がプレビューされる

死活と詰め碁(@tsumego_bot)や囲碁対局中継「耳赤」を通じて画像投稿をしています。 ところが、この投稿画像、Twitter公式サイトでプレビューとして表示されない。画像は操作なく見えた方がいいので、なんでだろうと思いました。 png, gifはダメ? 調べた結…

Advent Calendar 10 - "Discover Meteor"が一日だけ無料公開

Meteor社自身もお勧めのMeteor本"Discover Meteor"が本日だけ全文無料公開されています。 http://free.discovermeteor.com/

Advent Calendar 9 - 番外編 Twitterの自動フォローバック〜私は見た!Twitterの闇の一端を〜

Meteor固有の話ではありませんが、面白いことが起こったので、実装含めてご紹介。Twitter APIとNPMのtwitterパッケージを使えば自動フォローバックが簡単に実装できます。 meteor add npm packages.json { "twitter": "0.2.4" }サーバー側 Twitter = Meteor.…

Advent Calendar 8 - MeteorでSNS

Meteorのaccounts関連のパッケージははアカウント管理にソーシャルサービス連携をサポートしています。 ユーザーにソーシャルサービスアカウントでアプリにサインインしてもらい時には、 accounts-facebook accounts-github accounts-google accounts-twitte…

Advent Calendar 7 - appcacheでアプリケーションキャッシュ

Meteorでアプリケーションキャッシュを有効にする方法は簡単です。 meteor add appcache ピリオド。 これでマニフェストを自動生成してくれます。マニフェストはサーバーを再起動する度に再生成されます。 ウェブアプリ(クライアント)はマニフェストが更新さ…

Advent Calendar 6 - Meteorでのユニットテスト

Meteorでのユニットテストは、Meteorの部分に関してスタブを作って、Mochaで流すのが一番よさそうです。すいません、以下、CoffeeScriptでのコーディングを前提にしています。 share = {} Meteor = require: require users: findOne: -> methods: -> startup…

Advent Calendar 5 - ライブHTMLの詳細

Meteorはでは、テンプレートHTMLにヘルパーメソッドでリアクティブなデータを盛り込むとそのHTMLの該当部分が自動的に更新されます。以下はMeteorの公式ドキュメントの例。 <body> {{> players}} </body> <template name="players"> {{#each topScorers}} <div>{{name}}</div> {{/each}} </template> Template.players.top…

Advent Calendar 4 - htmlタグへの属性追加方法

Meteorは、デフォルトではシングルページのウェブアプリケーションを作ることになります。 (iron-routerというパッケージを追加すると、マルチページにすることができます)MeteorのHTMLファイルは実際にはHTMLではなく、htmlタグを含まず、headとbodyとtempl…

Advent Calendar 3 - NPMの使い方

本格的なウェブアプリケーションを作ろうと思うと、既存のライブラリを活用することが事実上不可欠です。Meteorは、クライアント、サーバーともJavaScriptの世界ですから、クライアントではブラウザ用JavaScriptライブラリ、サーバーではNode.js用ライブラリ…

Advent Calendar 2 - autopublishとinsecureパッケージ

Meteorでアプリケーションを作るとき、最初に meteor create app-name を実行します。すると、app-nameという名前のフォルダーが生成され、中に必要なファイルやテンプレートが展開されます。 この状態でアプリケーションにはautopublishとinsecureというパ…

Advent Calendar 1 - Meteorとは

12月になると、各所でクリスマスまでプログラミング関連の記事を連載するAdvent Calendarが盛況になります。 私も遅ればせながらやってみようかと思いました。題材はMeteor。 http://www.meteor.com/ Meteorはウェブアプリケーションのプラットフォームです…

テーブルトップを紹介いただきました。

DraftPadとその後継Textwellの拡張方法を中心に独特の語り口調でiPadアプリを掘り下げるブログ「W&R: jazzと読書の日々」にテーブルトップをご紹介いただきました。 iPadのSafariで使えるOSXダッシュボード TableTop 元々(Macで)動いているものを(iPadで)動…

MeteorのHTTPはcontentにBufferも受け付ける。

Meteor.methodsでTwitterに写真付きstatusの投稿をするコードを書きました。 最初非同期で書いたのですが、そしたらクライアント側で投稿が成功したかどうか確認するタイミングが得られませんでした。 で、Meteorのhttpパッケージを使って書き直したのですが…

囲碁対局中継サイト「耳赤」

進行中の対局をリアルタイムで中継するサイトを作りました。明日の名人戦第五局で早速運営する予定です。 気になる局面から検討をすることもでき、その結果を画像として添付してツイートすることができます。囲碁が好きで、Twitterをしていて、中継を見るほ…