タグ

ブックマーク / syohex.hatenablog.com (14)

  • websocket.elでマルチバイト文字を扱う時の注意 - Shohei Yoshida's Diary

    追記 修正されたようですので、自分で回避していた方は最新版にアップデートしてください。 websocket.el + Amon2でリアルタイム Markdown Viewer - Life is very short で書いた、websocket.elで使った Realtime markdown viewerで 日を使うとエラーになっていた問題は websocket.elにマルチバイト 文字列をそのまま送っていたことが原因でした。 websocket.elの websocketのフレームに収める部分で利用する unibyte-stringという関数は 0-255の文字コードしか受付ません。 なのでマルチバイト文字列を渡す場合は、それをバイト列にする 必要があります。Perlで言うところの Encode::encodeの処理が 必要になるわけです。 Emacs Lispの場合は encod

    websocket.elでマルチバイト文字を扱う時の注意 - Shohei Yoshida's Diary
    Itisango
    Itisango 2012/08/28
    websocket.elでマルチバイト文字を扱う時の注意
  • fizzbuzz systemcall in FreeBSD - Shohei Yoshida's Diary

    Linuxは知らないですが、FreeBSDはわりと簡単システムコールが 追加できるので、紹介します。 試した環境 FreeBSD 8.3-Release i386 コード #include <sys/param.h> #include <sys/proc.h> #include <sys/module.h> #include <sys/sysproto.h> #include <sys/sysent.h> #include <sys/kernel.h> #include <sys/systm.h> struct fizzbuzz_args { int a_number; char *a_buf; }; static int fizzbuzz(struct thread *td, struct fizzbuzz_args *uap) { int num = uap->a_number, le

    fizzbuzz systemcall in FreeBSD - Shohei Yoshida's Diary
  • Emacsで人生を振り返る。 - Shohei Yoshida's Diary

    Macのスクリーンショットで1日の作業を記録して動画で振り返り - 西尾泰和のはてなダイアリー に着想を得て、capture-mylife.elというものを作ってみました。 まあ上記のことを実現する Emacsフロントエンドなだけですが・・・。 リポジトリ syohex/emacs-capture-mylife · GitHub 必要なもの キャプチャリング scrot or import(Linux) screencapture(MacOSX) nircmd.exe(Windows) 動画化 avconv or ffmpeg デスクトップ全体のキャプチャリングはすべて対応していますが、 アクティブな Windowのキャプチャリングについては scrotをインストール した Linux環境に限られます。importコマンドや xwdコマンドでも実現 できるはずなのですが、デスクトップ全体だ

    Emacsで人生を振り返る。 - Shohei Yoshida's Diary
    Itisango
    Itisango 2012/08/04
  • 気になった Emacs記事 2012/JUL/23 - Shohei Yoshida's Diary

    2週間ぶりに書きます。 Emacsのorg-modeで数式をインライン表示する方法 - ぱたへね orgモードを使って数式を表示するという tips。すごいですね。数式を 書きたい時ってすごく稀ですけどあって、分数なんかが出てしまうと テキストだけだとどうも見づらくなってしまうんですけど、これを知って おけばそんなときでも大丈夫。 ただ Texっていうのは個人的に難易度が高いですね。Texってもう 6年 ぐらい書いていないけど、大学の時から嫌いでしたね。余談ですが、 社会人になってとある偉い人から、「Texを使うと、Texを書くという ことに頭がいってしまい、内容が希薄になる」と言われてなるほどなぁと 個人的には思いました。Texを使うなら息を吸うように扱うことができる ようにならないと、いちいちググらないと書けないような私はあまり 使うべきではないでしょうね。 http://alfalf

    気になった Emacs記事 2012/JUL/23 - Shohei Yoshida's Diary
    Itisango
    Itisango 2012/07/23
    気になった Emacs記事 2012/JUL/23
  • Simple Scheme interpreter in Perl - Shohei Yoshida's Diary

    昨日 Brainfuckを書いてみたので、今日は Scheme(Lisp)の処理系を書いてみました。 当然格的なものではなく、簡単なものです。 Lispy: Scheme Interpreter in PythonPerl版になります。 kidd/hascheme · GitHub に lis.pyにインスパイアされて書いたという Scheme in Perlがあったの ですが、格的な感じだし、いろいろモジュール使いまくっていたので、 とりあえず元のものに忠実に作ってみました。 コード 実行 ファイルを標準入力にリダイレクトした場合、元の式と結果を表示するように してみました。Schemeとは若干挙動が違うものがあるようにも思えますが、 lis.pyと同じように動作していると思われます。 % perl lis.pl < test.txt 12345678 => 12345678

    Simple Scheme interpreter in Perl - Shohei Yoshida's Diary
  • helm-gtags.elを書いた - Shohei Yoshida's Diary

    ここの内容は古いのでこちらを参照してください。 はじめに GNU globalの helm interfaceである helm-gtags.elを書きました。 私が helmに移行できない最大の理由として helm-gtags.elがないと いうのがあったんですけど、待ってても出ないんで自分で作りました。 なお anything-gtags.elとは互換性はありません。 anything-gtags.elは gtags.elの結果を加工して、anythingインタフェースで 表示するということで、gtags.elの設定をしていれば anything-gtags.elを requireするだけで、anythingインタフェースで使えるという利点があります。 ただこのような作りのため、処理に時間がかかりカーネル規模のソースで利用 した場合、表示まで若干時間がかかりました。helm-gtags.

    helm-gtags.elを書いた - Shohei Yoshida's Diary
  • Emacs実践入門を読みました - Shohei Yoshida's Diary

    先週忙しくて遅れてしまいましたが、 「Emacs実践入門」のレビューです。 読者対象 中の下程度のスキルの私が言うのもおこがましいですが、Emacsを知らない 人、あんまり知らない人が一冊目に購入するのがいいんじゃないかなと思い ました。幅広い内容が掲載されていますが、基は抑えつつコンパクトに まとまっているので、読みやすかったです。基的なことから Webアプリ ケーションの開発に必要なことまで載っていて、これから使っていこうと する気持ちにもさせてくれるんじゃないかなと思います。 また幅広い内容が載っているので中級者以上の人も何個かは知らないことが あって、知識を広げられると思うので買って損ということは間違いなくないと 思います。 ちょっと残念と思った部分 カラー画像でないこと。結構画像が多く掲載されていてどんな感じになるか わかりやすいんですけど、色がないので幾分見づらいところがあ

    Emacs実践入門を読みました - Shohei Yoshida's Diary
    Itisango
    Itisango 2012/03/11
    "Emacs実践入門を読みました"
  • Perlで書き初め - Shohei Yoshida's Diary

    あけましておめでとうございます。 今年も何卒よろしくお願いします。 新年の初めなので書き初めをしたいと思います。 元ネタ 週記くらい | Common Lispで書き初め vallog: 2012年が明けたので書き初めしました。lispで。 ソース 試行錯誤して微調整した感じですが。 #!/usr/bin/env perl package App::Kakizome; use strict; use warnings; use GD; use Encode; use Encode::Locale; sub new { my $class = shift; bless {}, $class; } my $mainfont = $ENV{HOME} . '/.fonts/aoyagireisyosimo.ttf'; my $subfont = '/usr/share/fonts/truetyp

    Perlで書き初め - Shohei Yoshida's Diary
  • シェルと Emacsの PATHを共有する - Shohei Yoshida's Diary

    追記 2013/OCT/23 exec-path-from-shellを使う方がおすすめです. Emacsでの環境変数の設定に exec-path-from-shellを使うようにした - Life is very short ターミナルエミュレータで Emacsを起動する場合は環境変数の 引継ぎが行われるので問題ないですが、ランチャ等から GUI版を起動する ときなどは、.zshrc等で設定した環境変数が反映されないという問題が あります。 よくある問題なので、対応を書かれている方も大勢います。 = EmacsからEvernoteを使う(+ exec-pathの設定) - ぺっくブログミラー@peccul exec-pathにshellのPATHを追加する - すぎゃーんメモ Emacs 上で快適に Bash や Zsh を利用する設定 : 紹介マニア .emacsの方に PATHを直接

    シェルと Emacsの PATHを共有する - Shohei Yoshida's Diary
    Itisango
    Itisango 2011/11/17
  • 今すぐフォローすべき Emacs界のスーパーエンジニア - Shohei Yoshida's Diary

    「今すぐフォローすべきスーパーエンジニア」まとめ 流れに乗り遅れた感がハンパないんですけど, Emacs界がなかったのでまとめてみました. 順番は頭に出てきた順番です. 作者とかメンテナとか開発者っていう 表現が間違っていたらごめんなさい. 最後の方は力尽きてます. 中には Twitter IDが見つからなかった人もいました. 他にも書いてほしいとか, 抜けてるぞ, ってのがあったら 教えてください. 追記します. @rubikitchさん Emacsテクニックバイブルの作者で anythingのメンテナ ブログ http://rubikitch.com/に移転しました @kiwanamiさん deferred.el, calfw, e2wm等の作者 Emacsで 3Dゲームを作ったりしてます. とても広い視点で Emacsを見ている方です. まさに Emacsは環境だなと思わせてくれます

    今すぐフォローすべき Emacs界のスーパーエンジニア - Shohei Yoshida's Diary
  • 第四回 関西 Emacs勉強会に参加してきました。 - Shohei Yoshida's Diary

    (kansai-emacs #x04) for 参加者 : ATND に参加してきました。 自己紹介 自己紹介に加えて、普段使っている拡張を紹介したり、おすすめの拡張を紹介したり、 はては会社の求人をしたり。 発表 @hitode909さん 自作プログラムの紹介 youtube_looper Tシャツ販売サイト お経のページ smartchrモード => 'GG'でありがとうございますを素早く入力 dialscroll => マウスをくるくる回すと Emacsがスクロール.(某社のノート PCのようという意見も) はてなステッカー配布 => あとでいただきました。 elispがほとんど書けないということを知って驚いた。 いろいろ書いているから、詳しいのかなって思ったけど、 ソースを見ると、少数のことを駆使して書いているという感じだった。 積極的に書く姿勢は見習いたいなぁと思った。 @nit

    第四回 関西 Emacs勉強会に参加してきました。 - Shohei Yoshida's Diary
    Itisango
    Itisango 2011/10/09
    第四回 関西 Emacs勉強会に参加してきました。
  • List::UtilsBy::XSが書けました。 - Shohei Yoshida's Diary

    List::UtilsBy::XSを書いてます。 - Life is very short の作業がとりあえずひと通り終わりました。 List::UtilsByのテストユーティリティがなぜか無限ループして しまうことや、Lightweight Callback APIの制限があったり しますが、List::UtilsByから持ってきたテストは概ね通っています。 リポジトリ syohex/p5-List-Utils-By · GitHub ベンチマーク Perl 5.14.1の結果は以下のようになりました。 Benchmarking List::Util and List::UtilsBy::XS Bench: sort_by Rate pp xs pp 7729/s -- -37% xs 12217/s 58% -- Bench: nsort_by Rate pp xs pp 9050/s

    List::UtilsBy::XSが書けました。 - Shohei Yoshida's Diary
    Itisango
    Itisango 2011/10/06
  • 重複しない乱数の生成 - Shohei Yoshida's Diary

    Perlで乱数生成 - ハブ君の寝言 を見て、昔自分もそんな感じで書いてたなぁと思い出しつつ、 今の知識で書いてみました。 手法1 0から nまでの配列を生成 0から nまでの乱数を生成 (2)で得られた indexと配列の最後の要素を交換 n = n-1とし, (2)に戻る. これを n > 1の間繰り返す 都合上コードでは若干順番がずれてます・・・ sub use_swap { my $num = shift; my @array = (0..($num-1)); my $random_range = $num; while ($random_range > 1) { my $n = int( rand($random_range) ); $random_range -= 1; @array[$n, $random_range] = @array[$random_range, $n];

    重複しない乱数の生成 - Shohei Yoshida's Diary
    Itisango
    Itisango 2011/06/17
    重複しない乱数の生成
  • GCCの各オプティマイズレベルで有効になる最適化を調べる - Shohei Yoshida's Diary

    GCC 4.4ぐらいから見たいなのですが、-Qオプションを使うと、 最適化等でどのオプションが有効になるかがわかるみたいです。 具体的には以下のようなコマンドです。 % gcc -O2 -Q --help=optimize # 個々のオプションについて 'enabled' or 'disabled'が確認できるそれで各レベルでの違いを見てみた。 まとめるのが面倒なので以下のようなスクリプトを走らせる #!/usr/bin/env perl use strict; use warnings; my @levels = qw(-O0 -O1 -O2 -O3 -Os); my @base = qw(gcc -- -Q --help=optimize); my %optimize; for my $level (@levels) { my @cmd = @base; $cmd[1] = $leve

    GCCの各オプティマイズレベルで有効になる最適化を調べる - Shohei Yoshida's Diary
  • 1