IT

nvim の J

IT

びっくりしたのでメモ。以下は Brainfuck のコードですね。 +>++> >[-] +++++++. これを nvim で J を押して一行に結合しようとしたところ >++>] なんと、2 行目を結合する際に > が消えてしまう現象が発生した。なんか引用符だと判断されてか、勝手に消えて…

プロキシサーバを作りたい

IT

Web 開発を行っていて、僕の環境だけ LiveReload が期待通りに機能せず、500 エラーが頻発するという現象に見舞われた。原因は LiveReload で、HTML から LiveReload 関連の script タグをいくつか取り除くだけでエラーが出なくなるので、ソースツリーには手…

最近の開発手法に GG

IT

今開発している Web アプリケーションは、Yesod という Haskell のフレームワークを使用している。これが非常に難しい。嫌な汗が出るぐらいヤバイ。でも、避けて通れない道なので頑張る。さて、それ以外の部分は: CoffeeScript で UI を書く → JavaScript …

Unicode の正規化でハマった話

IT

まずは以下のコードを見てください。 import java.io.File import java.io.FileOutputStream val file1 = new File("\u30C9ラえもん.txt") val fos1 = new FileOutputStream(file1) fos1.write("ぼく、ドラえもん。".getBytes("UTF-8")) fos1.close() val fi…

Mac Book Air のキーボード配列を設定したらめちゃくちゃはかどった

Mac Book Pro および Mac Book Air のキーボードは、数年使っているけどなかなか慣れないけど、何とかなった、という話。悩みだったのは以下。 Mac のノートは、右手側に option がないので、左手が死にそう control と caps の配置が Windows とは逆で、頭…

Ubuntu One サービス終了

IT

Ubuntu One がサービス終了となるようだ。 2014年4月4日号 Ubuntu Oneのサービス終了とサーバーサイドソース公開・ECS LIVA・MinnowBoard MAX・UWN#361:Ubuntu Weekly Topics|gihyo.jp … 技術評論社 6/1 でサービス終了、7/31 まではデータが保存されるそ…

xterm で cls

IT

コマンドプロンプトで cls を多用する。xterm にはメニューにバッファクリアはあるものの、マウスで選択したりするのは面倒で、なにか良い方法はないかと思っていたのだが、stackoverflow でズバリそのものの質疑応答を見つけた。unix - What commands can I…

Doxygen の文字化け

IT

現在の最新版 Doxygen 1.8.6 で不可解な文字化けに遭遇したのでメモ。 /** * @file * This header file provides useful functions for handling UTF-8 and UTF-16 string. * * @section VALID_UTF8 Valid UTF-8 sequences. * * <pre> * +--------------------+--</pre>…

Editor component まとめ

IT

「テキストエディタ実装したい病」が再発したので、いろいろ調べてみたまとめ。 SWT StyledText SWT StyledText は Canvas を継承して実装されている。継承してしまえば描画はやりたい放題で、文字以外の描画も自由自在。ただし、残念なことに特定のフォント…

各プラットフォームのフォントの高さについて

IT

フォントの高さ、というのがプラットフォーム毎に少しずつ違うようなので、簡単にまとめてみた。ここで言う「高さ」とは、一行表示する際に必要になる高さのこと。つまり、次の行との余白は含まない。 Microsoft (Win32 API) の場合 Height = Ascent + Desce…

Windows 7 の環境変数 PATH

IT

XP の頃は: c:\hoge\bin;%PATH%みたいな感じでシステム環境変数をユーザ環境変数で上書きできたのに、Windows 7 ではそれができず、上のように書くと: %PATH%;c:\hoge\bin;%PATH%こんな感じで展開されてしまう。要するに、ユーザ環境変数の先頭に自動的に…

UUID の重複する可能性

IT

UUID Wikipedia 日本語版によると UUIDは、分散システム上でどこかが統制を取らずとも、一意に特定可能な識別子の作成を目的としており、UUIDは重複や偶然の一致が起こりえないと確信して用いることができる。 UUID - Wikipedia という。しかしながら、高々 …

HEAD タグを 2 回書く

IT

昨日、<meta http-equiv=""> の仕様を調査していて同僚が見つけたページ。 http://support.microsoft.com/kb/222064/ja 驚いたのは、この問題の解決方法として <html> <head> </head> <body> </body> <head> 解決案 </head> </html> という具合に、HEAD タグを 2 回書いちゃってるところ。これが HTML の各バージョンで許容されている</meta>…

ファイル名に使用できない文字、使用できない名前

IT

ユーザが入力したファイル名が、その OS で使用できない文字を含んでいるかを事前にチェックして、ダメならユーザにメッセージを表示する」という要件があった。Windows なら サイト URL、フォルダ名、ファイル名に使用できない文字 あたりに情報がまとまっ…

各種テキストエディタのデータ構造と処理を邪推する

IT

鈴川エディタというテキストエディタをご存知でしょうか。私はついさっき*1知りました。触れ込みは以下の通り。 小さいメモリ(50MB以下)で大規模テキストファイル(300GB、2,000億行)を編集できる世界唯一の超巨大テキストエディター http://www.szkwjp.c…

正規表現エンジンメモ #2

IT

正規表現エンジンメモ - satosystemsの日記 の続きです。 SRegex http://www.syuhitu.org/other/regex/regex.html 「主筆」という Solaris で動作するテキストエディタを作成されている方の、主筆のための正規表現エンジン。 世の中に存在する正規表現ライブ…

Open Group の正規表現実装

IT C

こちらのサイト(http://www.syuhitu.org/other/regex/regex.html)を読んでいたら、気になる文章を発見。 (余談だが、ANSIの規格ではCのライブラリに正規表現ライブラリが含まれることとなっているらしい。 そのため、Borland C++ Compiler 5.5.1では使用…

Wink でキャプチャ、ffmpeg でエンコード、VLC Player で H264 に変換

IT

動画作成のメモ。僕は Wink というキャプチャソフトで SWF(flv ではない)を作成していたんだけど、お客様がそろそろ Flash をやめたいという意向があって、メジャーな動画形式にするということになった。Wink はものすごく使いやすいというわけではないん…

Prolog の紹介

IT

フィボナッチで各種言語をベンチマーク - satosystemsの日記 で Prolog のフィボナッチを以下のように実装しました。 fib(0, 0). fib(1, 1). fib(N, NF) :- A is N - 2, B is N - 1, fib(A, AF), fib(B, BF), NF is AF + BF. goal :- fib(38, NF), write([NF…

プログラミング言語の後付け仕様による微妙な制約

IT

JavaScript は、当初正規表現を扱えなかったのですが、やっぱり正規表現は使いたいよね〜、ということで Perl から正規表現リテラルをインポートしました。その結果、以下のような微妙な制約が生まれてしまいました。 /* 正規表現リテラルがコメントの終わり…

SSL を推奨しない国、中国

妻が義父のために、中国の「Yahoo! メッセンジャー」こと「QQ」のアカウントを作成した。目的は、孫の写真を簡単に共有することだ。QQ は当初はメッセンジャーだったんだけど、SNS 機能がついて、Facebook のようなウォールを持てる。なお、QQ というのは、…

モバイル OS 第三極

IT

新興・マイナー系モバイル OS の僕なりの感想。 Firefox OS 「独占的モバイルプラットフォームからの解放」をうたった OS。そのわりには Firefox Marketplace というものの準備が進められていて、なんだか自己矛盾のように感じる。マーケットはプラットフォ…

【絶対】PC の時計を 2099 年 12 月 31 日にしてはいけない【ダメ】

IT

下手すると PC が起動しなくなります。コンピュータには 2036 年問題というのがあって、簡単に言うと、2036 年のある時刻以降、内部時計が 1900 年に戻ってしまうというもの。まあこれぐらいならかわいらしい現象です。僕は実際に 2099 年 12 月 31 日 23 時…

正規表現エンジンメモ

IT

C++ の GapBuffer に対して正規表現を適用できないか、ということで調査を行ったメモ。GapBuffer というのは、誤解を恐れずに簡単に言ってしまうと、不連続メモリに格納されている文字列のこと。これを正規表現のためだけに連続領域に格納しようとすると、領…

バッチファイルで条件に一致する配下のファイル・ディレクトリすべてに対して何か処理をしたい場合

IT

以下のように行う。 for /F "usebackq" %%a in (`dir /b`) do ( echo %%a | find "<ファイル名・ディレクトリ名の一部>" >NUL if not ERRORLEVEL 1 ( rem 何かの処理 echo %%a ) )echo と find を使うところがポイント。 もっと複雑な条件なら、ファイル名・…

Cygwin 管理下のファイルを Windows で編集すると実行権限がついて困る、を解決

IT

表題の件、ずっと困ってたんですよ。ソースコードを Windows のエディタで編集したりすると、Cygwin 環境で勝手に実行権限がついてしまったり、新規作成したファイルが実行権限だったり。そうして作ったファイルを Git にコミットしてしまったりすると、実行…

~ がホームディレクトリを表す理由

IT

なぜUnix&Linuxではホームディレクトリを「~」文字で表現するのか。 - [モ]Modern Syntaxリンク先参照。なるほど。~ の下に ^ があるけど、どうやって 3 種類を打ち分けるんだろう。ちなみに ^ はアクサンシルコンフレックスと読む。今日初めて知ったという…

ゲームに使えそうな Unicode の文字一覧 🀙

IT

Unicode に麻雀牌の文字コードを発見。 麻雀牌 ロン!平和のみ フォントによっては表示されないかも(されないので、スクリーンキャプチャ)。 - - その他、ゲームに使えそうな文字一覧。 ドミノ トランプ チェス、サイコロ、トランプマーク、将棋マーク、…

Facebook への不正アタック

IT

Facebook から時々以下のようなメールが届く。Facebook なんてめったにアクセスしないので放っておいたんだけど、今日確信した。 これって不正ログインが試みられた証拠なんじゃないの。Google は二段階認証を設定しているので、初めての機器でログインしよ…

乱数とサイコロ

IT

疑似乱数生成機のアルゴリズムが線形合同法*1の場合、以下のようなサイコロの目の求め方は不適切だという。 int n = rand() % 6 + 1; 概念的には以下のように行う必要があるらしい。 int n = rand() / (RAND_MAX / 6 + 1) + 1; これなら、たまたま偶数や奇数…