タグ

ブックマーク / c4se.hatenablog.com (357)

  • Subversionのlogメッセージを検索する svn-grep - c4se記:さっちゃんですよ☆

    gitであれば git log --grep なにか でできる。SVNには何も用意されてゐない。 以下の関数を .bashrc に書く。 function svn-grep() { TMP_ID=$(uuid -v4) cat << RUBY > /tmp/$TMP_ID require 'nokogiri' log = Nokogiri::XML STDIN.read logentries = log.css('logentry').select{|logentry| logentry.css('msg').first.content.include?(ARGV[0]) } system "svn log -v #{logentries.collect{|logentry| '-r' + logentry['revision'] }.join(' ')}" RUBY svn log --

    Subversionのlogメッセージを検索する svn-grep - c4se記:さっちゃんですよ☆
    Kureduki_Maari
    Kureduki_Maari 2015/11/06
    .。oO(書きました) Subversionのlogメッセージを検索する svn-grep - c4se記:さっちゃんですよ☆
  • Haskellでmain = (〃|_|) .。oO("さっちゃん☆") - c4se記:さっちゃんですよ☆

    [.。oO(さっちゃん Advent Calendar) http://atnd.org/events/22829 ]10日目 今日はHaskell初心者以前のさっちゃんが、しぇらーしいさまの手になる以下のコードがなぜ動くのか読んでみたいとおもいます。あ、Opera忘年会で会ったら呼んでください。詠んでくださってもいいです>ω< -- http://favstar.fm/users/shelarcy/status/130666089607725056 -- http://favstar.fm/users/shelarcy/status/142682424680259584 import System.IO (〃|_|) = \str -> hSetEncoding stdout utf8 >> hPutStrLn stdout str (.。) = ($) (oO) = id main =

    Haskellでmain = (〃|_|) .。oO("さっちゃん☆") - c4se記:さっちゃんですよ☆
    Kureduki_Maari
    Kureduki_Maari 2015/10/17
    .。oO(助かります) Haskellでmain = (〃|_|) .。oO("さっちゃん☆") - c4se記:さっちゃんですよ☆
  • JavaScriptで描画するページの初期値をページに埋め込む - c4se記:さっちゃんですよ☆

    SPA (single page application) なりなんなり、データからJavaScriptで描画し画面を更新してゆくときに、初期値をどう受け取るか問題になることがあります。ソフトウェアとして一番単純なのは、ページを受け取ったあとにサーバーとXHRなりで通信して受け取るものです。SPAを作るときは、もともとさういふ仕組みを作っていってゐるわけですから、加えてなにもする必要がありません。 サーバーでJavaScriptを実行し、初期値を素に描画した状態を、Webブラウザに渡す方法もあります。node.jsやPhantomJSやSlimerJSなどを使へばできます。 それから初期値をそのままページに埋め込んで、それを読みだしてやる方法があります。別途道具を用意してやる必要のない方法です。 PHPでそれをやります。DOMに埋め込んでやるやり方もあるでせうが、JSONでJavaScri

    JavaScriptで描画するページの初期値をページに埋め込む - c4se記:さっちゃんですよ☆
    Kureduki_Maari
    Kureduki_Maari 2015/07/25
    .。oO(書いてた) JavaScriptで描画するページの初期値をページに埋め込む - c4se記:さっちゃんですよ☆
  • 絵文字の異体字セレクタを扱ひたい扱へない - c4se記:さっちゃんですよ☆

    ※ 忘備録程度の情報です。 結論 絵文字には U+FE0E/U+FE0F が異体字セレクタとして付くことがあります。Unicode の STANDARDIZED VARIANTS といふ仕様の一部です。気をつけませう。 歴史 Unicode には異体字セレクタ (VARIATION SELECTOR) といふ規格がある。 cf. 異体字セレクタ https://ja.wikipedia.org/wiki/%E7%95%B0%E4%BD%93%E5%AD%97%E3%82%BB%E3%83%AC%E3%82%AF%E3%82%BF Unicode は文字の区別をする集合であり、字形 (グリフ) の区別はしないといふ方針で一応は定められてゐる。しかし「それは字形ではなく文字の違ひである、Unicode は実用に耐えない」といふ主張は後を絶たなかった。そこで、文字の直後に数百種類の特殊な不可視コ

    絵文字の異体字セレクタを扱ひたい扱へない - c4se記:さっちゃんですよ☆
    Kureduki_Maari
    Kureduki_Maari 2015/06/02
    .。o(φ) 絵文字の異体字セレクタに就いて - c4se記:さっちゃんですよ☆
  • PHP CLIにて、標準入力からストリームが與へられてゐるかだうか判定する - c4se記:さっちゃんですよ☆

    PHPはわりと便利で、簡単なスクリプトを書くのにも不自由しない。「PHPが動作する」ことを前提にしたシステムでは、PerlRubyPythonを導入したり学習させたりせずに、PHPでスクリプトを書いてしまへる。 #!/usr/bin/env php <?php echo $argv[1]; シェルでは実行ファイルにオプションを渡せる。オプションは空白區切りになる。PHP CLIではオプションは $argv といふarray變數で受け取れる。$argv[0] にはPHPファイル名が入る。これは php some_file.php arg1 arg2 として呼び出した場合と同じ動作である。 またシェルでは実行プロセスに標準入力と標準出力と標準エラー出力がある。PHP CLIではそれぞれ STDIN, STDOUT, STDERR といふ定數で讀み書きできる。$line = fgets(ST

    PHP CLIにて、標準入力からストリームが與へられてゐるかだうか判定する - c4se記:さっちゃんですよ☆
    Kureduki_Maari
    Kureduki_Maari 2015/05/12
    .。oO(φ) PHP CLIにて、標準入力からストリームが與へられてゐるかだうか判定する - c4se記:さっちゃんですよ☆
  • や行のえ「𛀁」とア行の工「𛀀」をAndroid上で表示させるフォントを作る。 - c4se記:さっちゃんですよ☆

    先日に、JIS第三水準以上の漢字をAndroidで表示する方法を提案した。その続きとなる。 先日の方法は、GoogleとAdobeの制作したNotoフォントの一部を抜き出し、Webフォントとして実用できる小さなファイルサイズにするものだった。ところでNotoフォントにはや行のえ「𛀁」とア行の工「𛀀」が無い。これを解決する必要があった。橫假名には「𛀁」があるからだ。 cf. Unicode舊字をAndroidで表示する為に、Notoフォントの部分フォントを作りWebフォントにする http://c4se.hatenablog.com/entry/2015/05/03/051133 や行のえ「𛀁」とア行の工「𛀀」 や行のえ「𛀁」とア行の工「𛀀」とはなんだらうか? 日語の音韻は五十音図にまとめられてゐる。縱に「あいうえお」、横に「あかさたなはまやらわ」、と竝べ、最後に「ん」を附け

    や行のえ「𛀁」とア行の工「𛀀」をAndroid上で表示させるフォントを作る。 - c4se記:さっちゃんですよ☆
    Kureduki_Maari
    Kureduki_Maari 2015/05/11
    .。oO(φ) や行のえ「𛀁」とア行の工「𛀀」をAndroid上で表示させるフォントを作る。 - c4se記:さっちゃんですよ☆
  • 新字を舊字に (ほぼ) 自動で変換する - c4se記:さっちゃんですよ☆

    嘗て俗字⇒正字変換機といふものを書いた。Web UIで、新字を舊字に変換するツールだ。今回は此れをWEB UIではなく、PHPで自動にやるやつをやる。 cf. 俗字⇒正字変換機 http://c4se.hatenablog.com/entry/20090519/1242715608 c4seのコンテンツを書いてゐて、編集方針を、漢字はできる限り舊字を使ふ編集方針にした。日本語入力には正字正かなIMEプロジェクトGoogle日本語入力用正字正かな辭書を使ってゐる。しかし舊かなはともかく、わたしは舊字が書けないので、正確に舊字に変換することができずに間違ふ。新かなや新字が変換候補にでなくするといふ選択肢は無い。それが必要な機會は多い。 そこで自動変換することをかんがへる。 1. 新字を舊字に強制変換する。 2. 新字を舊字にする候補を提示し、選択に從ひ変換する。 の二段階に分ける。 新字を舊

    新字を舊字に (ほぼ) 自動で変換する - c4se記:さっちゃんですよ☆
    Kureduki_Maari
    Kureduki_Maari 2015/05/03
    .。oO(φ) 新字を舊字に (ほぼ) 自動で変換する - c4se記:さっちゃんですよ☆
  • Unicode舊字をAndroidで表示する為に、Notoフォントの部分フォントを作りWebフォントにする - c4se記:さっちゃんですよ☆

    c4seを六年ぶりに更新してゐる。さすがにリニューアルした。 http://c4se.jp である。このblogは最近は舊かなで書いてゐる。c4seは漢字も全て舊字にすることにした。参画してゐる橘榛名の意向に依るものだ。 今回は舊字とWeb fontの話である。 さて、コンピューターは文字を表示することができる。文字列に関する議論は濟んだとみなして、ある一文字を認識できたところからはじめよう (つまり符号化=文字コードについては考へずに済む) 。それぞれの文字は或る整数値で表される。この整数値は、巨大な對照表 (コードポイント) により文字と結びついてゐる。或る人間が、この文字はこの整數で表すと決めたのだ。この對照表に基づき、別の人間がフォント (字體) といふものを作ってゐる。この整數は、こういふ形で表示するとよい、とコンピューターに提示するものだ。文字といふ抽象物を整數に対応すると決め

    Unicode舊字をAndroidで表示する為に、Notoフォントの部分フォントを作りWebフォントにする - c4se記:さっちゃんですよ☆
    Kureduki_Maari
    Kureduki_Maari 2015/05/03
    .。oO(φ) Unicode舊字をAndroidで表示する為に、Notoフォントの部分フォントを作りWebフォントにする - c4se記:さっちゃんですよ☆
  • PHPのordはASCII文字にしか対応してゐない。Unicode版を書く - c4se記:さっちゃんですよ☆

    PHPのordはASCII文字にしか対応してゐない。この毛唐め。少し期待してUnicode文字にもやってみるが、見事対応してゐない。南蠻人め。 cf. PHP: ord - Manual http://php.net/manual/ja/function.ord.php しかしASCIIは狭すぎる。西欧にもUnicode文字を使はねば書けない文字はある。ちゃんと解決法はある。mb_関数が使へれば簡単だ。 <?php function uOrd($char) { return unpack('N', mb_convert_encoding($char, 'UCS-4BE', 'UTF-8'))[1]; } var_dump(uOrd('學')); 文字をUTF-8符号から、Unicodeのコードポイントを直接表した符号に変換する。それをバイト列として見て、コードポイント数値を抜き出す。 cf

    PHPのordはASCII文字にしか対応してゐない。Unicode版を書く - c4se記:さっちゃんですよ☆
    Kureduki_Maari
    Kureduki_Maari 2015/05/03
    .。oO(φ) PHPのordはASCII文字にしか対応してゐない。Unicode版を書く - c4se記:さっちゃんですよ☆
  • Elixirで分散じゃんけんをシミュレートする - c4se記:さっちゃんですよ☆

    じゃんけんをシミュレートしてみる。練習問題だ。 人間を五人ほど作り、グー/チョキ/パーのなにを出させるかをそれぞれに決めさせ、勝負する。引き分けを考慮し、勝者が最後の一人になるまで繰り返す。 せっかくElixir (Erlang) でつくるのだから、各人間をプロセスにしてみる。 まずPersonモジュールをstructにする。Elixirはstructが入って大変便利になった。それまではrecoedを使ってゐたもので、プロセスの関数を含むモジュールとrecordのモジュールは別にしなければならなかった。Ruby人間としてstructは助かる。 spawnしてPersonを五人作る。PersonのプロセスIDが得られるので、これで話しかけられる。 さて、五人に手を出してもらう。そして五人が何の手を出したか確認せねばならない。おお。五人全員の手が揃わなければならないのだ。四人で勝ちを決めても五

    Elixirで分散じゃんけんをシミュレートする - c4se記:さっちゃんですよ☆
    Kureduki_Maari
    Kureduki_Maari 2015/05/03
    .。oO(φ) Elixirで分散じゃんけんをシミュレートする - c4se記:さっちゃんですよ☆
  • RubyのEnumeratorを条件分岐してみる。Unix pipeを拡張する一案 - c4se記:さっちゃんですよ☆

    Unixにはパイプといふものがある。プログラムには「標準入力」と「標準出力」といふものがあり、標準入力からなにかを受け取れば、それに基づいて標準出力になにかを表示することにする。その標準入力は、なにか別のプログラムの標準出力からやってくる。標準出力は、なにか別のプログラムの標準入力へゆく。かうしてプログラムを繋いでゆくことができる。 しかもイベント駆動である。実際には標準入力からはpull、標準出力へはpushなので、イベント駆動ではないが、標準入力からpullしやうとしてプログラムは、そこで停止し、標準入力がやってくれば (前のプログラムが標準出力へ書き出せば) 動き始める、といふ動作ができる。 このパイプを多次元にするのは難しい。実質的な成功例は無いとおもふ。 .on('〜', () => {}).on('〜', () => {}) とイベント駆動で書いてやれば、同等になるが、醜い。U

    RubyのEnumeratorを条件分岐してみる。Unix pipeを拡張する一案 - c4se記:さっちゃんですよ☆
    Kureduki_Maari
    Kureduki_Maari 2015/05/03
    .。oO(φ) RubyのEnumeratorを条件分岐してみる。Unix pipeを拡張する一案 - c4se記:さっちゃんですよ☆
  • RubyのDIコンテナを20行で書く - c4se記:さっちゃんですよ☆

    PHPでアプリケーションを作ってゆく。大きくなると、classが増えてゆく。classが増えてゆき、constructorの引数が増えてゆく。classをnewする順番が決まってゆき、それに従はねばならない。同じインスタンスがあちこちで必要になる。DI (Dependency Injection, IoC) の出番だ。 はじめはPimpleを使うてゐたが面倒になり、既存のDIライブラリは複雑な手続きが必要で、面倒だったので自分で作った。Ranyuen/Diだ。 cf. Ranyuen/Di https://github.com/Ranyuen/Di cf. PHPで簡単に華麗にDIとAOPをキメる http://c4se.hatenablog.com/entry/2014/12/11/013136 こんなに苦労して作ったDIコンテナだが、Rubyでは20行で書けるとMatzも言ってゐる。

    RubyのDIコンテナを20行で書く - c4se記:さっちゃんですよ☆
    Kureduki_Maari
    Kureduki_Maari 2015/05/03
    .。oO(φ) RubyのDIコンテナを20行で書く - c4se記:さっちゃんですよ☆
  • ElixirにてListのランダムな要素を取得する - c4se記:さっちゃんですよ☆

    追記:20170702 Enum.random/1を使ふのが好い。 Enum – Elixir v1.4.5 Rubyだと xs.sample である。JavaScriptだと xs[Math.floor(Math.random() * xs.length)]; となる。Elixirでもこれに近いことを行ふ。Erlangのrandomモジュールを使ってみると Enum.at(xs, :random.uniform(Enum.count xs) - 1) となる。これでよささうに見える。しかし何回か試してみるとわかるが、randomの乱数列はシードが一定なのだ。手動でシードしてやらなければやらない。 :random.seed :os.timestamp IO.inspect Enum.at(xs, :random.uniform(Enum.count xs) - 1) IO.inspect

    ElixirにてListのランダムな要素を取得する - c4se記:さっちゃんですよ☆
    Kureduki_Maari
    Kureduki_Maari 2015/04/20
    .。o(φ) ElixirにてListのランダムな要素を取得する - c4se記:さっちゃんですよ☆
  • Lessで@keyframesにvendor-prefixを付ける - c4se記:さっちゃんですよ☆

    よく知られてゐるやうに、Lessでベンダープレフィックスを付けるには以下の通りにすると簡便だ。 .vendor(@property, @value) { -khtml-@{property} : @value; -moz-@{property} : @value; -ms-@{property} : @value; -o-@{property} : @value; -webkit-@{property} : @value; @{property} : @value; } div { .vendor(animation-duration, 0.3s); } ベンダープレフィックスは現在滅んでいってゐる。 cf. CSSやJSのvendor-prefixは、来もなにも、標準的な規定までの準備として、未来のためにつくられ、つけられたものであった http://c4se.hatenablog.c

    Lessで@keyframesにvendor-prefixを付ける - c4se記:さっちゃんですよ☆
    Kureduki_Maari
    Kureduki_Maari 2015/04/20
    .。oO(φ) Lessで@keyframesにvendor-prefixを付ける - c4se記:さっちゃんですよ☆
  • ES6を使ふ。今直ぐ - c4se記:さっちゃんですよ☆

    node.jsとio.jsだが、node.js側が譲歩して、io.jsがnode.jsに戻るかもしれない。またnode.jsでもES6が少しは使へるやうになってきてゐる。Promise等[など]だ。ndenv (node-build) もio.jsに対応したが、それでわたしはnode.jsを使ひ続けてゐる。 AltJSでなくES6を使ふ 今、自サイトを作り直し始めた。五年間更新してゐなかったものだ。サーバー側はRanyuen/Littleを使ひPHPで書いてゐるが、クライアント側は当然JavaScriptである。完全な個人プロジェクトなので惜しみなくES6を使へるとおもって、traceur-compilerを導入してみた。 traceur-compilerとはGoogleの制作してゐる、ES6 (ECMAScript6) からES5へのコンパイラだ。わたしはAltJSを好かないが、ES6は

    ES6を使ふ。今直ぐ - c4se記:さっちゃんですよ☆
    Kureduki_Maari
    Kureduki_Maari 2015/04/20
    .。oO(φ) ES6を使ふ。今直ぐ - c4se記:さっちゃんですよ☆
  • MacVimをluajitつきで入れる (brewを使ふ) - c4se記:さっちゃんですよ☆

    Macを使はねばならなくなった。Operaを入れた後に、bashのプロンプト (PS1) を真っ先にカスタマイズした。 Vimを入れねばならぬ。MacVimはHomebrewで入る。Xcodeを入れてbrewを入れる。 ターミナルを開き、 brew options macvim から、指定できるオプションが確認できる。 --custom-icons Try to generate custom document icons --override-system-vim Override system vim --with-lua Build with lua support --with-luajit Build with luajit support --with-python3 Build with python3 support --without-cscope Build witho

    MacVimをluajitつきで入れる (brewを使ふ) - c4se記:さっちゃんですよ☆
    Kureduki_Maari
    Kureduki_Maari 2015/04/13
    .。o(Vim記事しか書いてない><。 MacVimをluajitつきで入れる (brewを使ふ) - c4se記:さっちゃんですよ☆
  • 反原発も再稼働もともに反〈原発〉でなければならない - c4se記:さっちゃんですよ☆

    1 四年前に東北地方の東沿岸におおきな震災と津波の災害がおそった。現在の下がり調子のわが日にはこれだけでもおおきなことだったが、福島県沿岸の原子力発電所が巨大な事故をおこしたことが、おもい問題だとかんがへられた。このことについては、おもい問題だとされてゐるのは原子力発電 (原発) 技術じたいの問題ではまったくなく、その事故の原因も事故の問題がこれだけおもいものになった理由も、ふるくからある言葉の問題であって、これを解かなければ問題をみとおすことはできないと主張してきた。 cf. 原発については賛成でも反対でもないし http://c4se.hatenablog.com/entry/2012/07/09/225244 ひとつだけ附け加へられさうなので、いってみる。原発技術にたいしてどのやうな態度がありうるのか? かたほうには反原発の態度があり、もうかたほうには再稼働の態度がある。反原発の態

    反原発も再稼働もともに反〈原発〉でなければならない - c4se記:さっちゃんですよ☆
    Kureduki_Maari
    Kureduki_Maari 2015/04/12
    .。oO(φ) 反原発も再稼働もともに反〈原発〉でなければならない - c4se記:さっちゃんですよ☆
  • 麻井シキの最近の詩について - c4se記:さっちゃんですよ☆

    シキはとんでもないところを通り過ぎやうとしてゐる。わたしの知るかぎり彼女の前にはだれもゐない。必然の足取りで麻井シキは進んでゐる。 わたしは偶然に、シキの詩業をほぼはじめから見てきた。ここ数年の麻井シキはみずからの詩を否定してきた。はじめて書いたといふ詩で彼女の技法はすでに完全なすがたを見せてゐる。だからこれは、彼女の詩業をすべて否定することだった。 〈詩の終わり〉 歌が終わって 静寂が訪れた 詠い終わって 静寂が訪れた 静寂は静かだ 静寂は寂しい 然う、長鳴鳥が鳴き止んだ 歌が終わって 清涼が振り籠める 詠い終わって 清涼が振り籠める 清涼は清らか 清涼は涼しい 然う、常世の長鳴鳥が鳴き止んだ 沈黙―― 闇に灯が点って 青白い火に 黄色い閃光が瞬いて 空気を掻き回して車座に回り 衝突し合い 互いに間合いを詰め乍ら螺旋を描き 二重にぶれて 軈て一つに縮まったかと聞こえれば 弾き飛ばされるの

    麻井シキの最近の詩について - c4se記:さっちゃんですよ☆
    Kureduki_Maari
    Kureduki_Maari 2015/04/06
    .。oO(φ) 麻井シキの最近の詩について - c4se記:さっちゃんですよ☆
  • Vimのホームディレクトリ$HOMEを変更する (Win8でホームが日本語になってゐるので) - c4se記:さっちゃんですよ☆

    Windowsのホームディレクトリはなにかとトラブルが起きる。わたしの主PCは今Windows 8.1で、初回ログイン時の罠でホームディレクトリの名が漢字になってしまった。ゆえにトラブルも一入[ヒトシオ]である。 cf. Win7 64bitで #LMMS の設定を保存できない (& 雑音しか再生されない)、の解決 http://c4se.hatenablog.com/entry/20110701/1309499299 cf. Win8のホームディレクトリに日語 (非ASCII文字) が入った為にScala sbtが起動しないのを解決する http://c4se.hatenablog.com/entry/2013/04/07/073738 cf. Homeフォルダが日語に成ってしまったWindows8に、VirtualBoxをinstallする http://c4se.hatenabl

    Vimのホームディレクトリ$HOMEを変更する (Win8でホームが日本語になってゐるので) - c4se記:さっちゃんですよ☆
    Kureduki_Maari
    Kureduki_Maari 2015/03/11
    .。oO(Vimを書いた) Vimのホームディレクトリ$HOMEを変更する (Win8でホームが日本語になってゐるので) - c4se記:さっちゃんですよ☆
  • Rubyにeach_with_selfといふメソッドは無い。JavaScriptには有るのに - c4se記:さっちゃんですよ☆

    JavaScriptではforEach()などのループにthisが渡される。要素の番号も一緒にわたってくる。 var a = [6, 5, 4]; a.map(function (elm) { return elm * 2; }). forEach(function (elm, i, a) { console.log([elm, i, a]); }); // [ 12, 0, [ 12, 10, 8 ] ] // [ 10, 1, [ 12, 10, 8 ] ] // [ 8, 2, [ 12, 10, 8 ] ] Rubyのeachはそんな引数はくれない。そこでeach_with_indexとクロージャを組み合はせることをする。 a = [6, 5, 4] a2 = a.map{|elm| elm * 2 } a2.each_with_index{|elm, i| p [elm, i,

    Rubyにeach_with_selfといふメソッドは無い。JavaScriptには有るのに - c4se記:さっちゃんですよ☆
    Kureduki_Maari
    Kureduki_Maari 2015/03/01
    .。oO(記事を書きました) Rubyにeach_with_selfといふメソッドは無い。JavaScriptには有るのに - c4se記:さっちゃんですよ☆