c4se記:さっちゃんですよ☆

.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)

.。oO(此のblogは、主に音樂考察Programming に分類されますよ。ヾ(〃l _ l)ノ゙♬♪♡)

音樂は SoundCloud に公開中です。

考察は現在は主に Scrapbox で公表中です。

Programming は GitHub で開發中です。

Ruby

JavaScript で、文字列を UTF-8 にした時の byte 數を計算する

Ruby irb> '冬'.bytes.map{ |n| n.to_s(16) } => ["f0", "af", "a0", "9a"] irb> '冬'.bytesize => 4 irb> '羽󠄀'.bytes.map{ |n| n.to_s(16) } => ["e7", "be", "bd", "f3", "a0", "84", "80"] irb> '羽󠄀'.bytesize => 7 冬の正字冬は"\u{2f81a}"で 4 byte、…

XML を表現する時 XML の階層が表現する code にも表れて欲しい (Python)

偶々 Clojure で Atom を、Python で SVG を生成する機會が有った。どちらも XML だ。Python には標準でxml.etree.ElementTreeと云ふ class が含まれてゐて、これで XML を讀み書き出來る。 Clojure だと XML を生成するには、 (require '[clojure.xml :as x…

多量のデータをストリームして省メモリで統計処理するgemを作った

log を撫でまはし乍らごそごそしてゐたら出來てゐたので gem にした。 github.com N 個のデータから成る large_data が在り Ruby の Enumerable として取得出來る時、標準偏差や分散等を計算しやうとしたら、単純にやると N 個のデータをディスクに置かなけ…

OSXでGitの罠を回避しつつ更新されたPNGを圧縮するスクリプト

画像の圧縮自体はImageOptimと云ふプログラムをコマンドで呼んでゐる丈だ。お終い。 HomebrewではCaskroom/cask/imageoptimに在る。そこでGitの話に成る。 利用シーンはご想像にお任せするが、gitでpullした後に、其のpullで更新されたPNGファイルをlossless…

殺したサーバーを一覧する

数秒で書き終はる鮮度系。 サービスには沢山の種類のサーバーがそれぞれ沢山たってゐ、sshから繋ぎ易いやうに .ssh/config に書いてあったりする。例へば此んなふうに。 Host momonga-web-01 HostName x.x.x.x Host momonga-web-02 HostName x.x.x.x Host mo…

private-values: 秘密情報や個人的なfileを共有リポジトリから隠す爲のツール

private-values 秘密情報や個人的なfileを共有リポジトリから隠す爲のツールです。 github.com インストール releasesからバイナリをダウンロードし、PATHを通したディレクトリに置いてください。 private-valuesは、何ではないか? private-valuesは組織的な…

絵文字の異体字セレクタを扱ひたい扱へない

※ 忘備録程度の情報です。 結論 絵文字には U+FE0E/U+FE0F が異体字セレクタとして付くことがあります。Unicode の STANDARDIZED VARIANTS といふ仕様の一部です。気をつけませう。 歴史 Unicode には異体字セレクタ (VARIATION SELECTOR) といふ規格がある…

Elixirで分散じゃんけんをシミュレートする

じゃんけんをシミュレートしてみる。練習問題だ。 人間を五人ほど作り、グー/チョキ/パーのなにを出させるかをそれぞれに決めさせ、勝負する。引き分けを考慮し、勝者が最後の一人になるまで繰り返す。 せっかくElixir (Erlang) でつくるのだから、各人間…

RubyのEnumeratorを条件分岐してみる。Unix pipeを拡張する一案

Unixにはパイプといふものがある。プログラムには「標準入力」と「標準出力」といふものがあり、標準入力からなにかを受け取れば、それに基づいて標準出力になにかを表示することにする。その標準入力は、なにか別のプログラムの標準出力からやってくる。標…

RubyのDIコンテナを20行で書く

PHPでアプリケーションを作ってゆく。大きくなると、classが増えてゆく。classが増えてゆき、constructorの引数が増えてゆく。classをnewする順番が決まってゆき、それに従はねばならない。同じインスタンスがあちこちで必要になる。DI (Dependency Injectio…

Rubyのコンソールでカウントダウンしながら待つ

エスケープシーケンスは覚えられない。 def wait sec = 60 str_len = sec.to_s.length sec.times do |i| print "%#{str_len}d" % (sec - i) sleep 1 print "\033[2K\033[#{str_len}D" end end \033[2Kで、カーソルの行をクリアする。\033[%dDでカーソルを左…

Rubyにeach_with_selfといふメソッドは無い。JavaScriptには有るのに

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 ] ] //…

モジュラ逆數[逆数]や冪剩餘[剰余]を求める (Ruby)

ほんたうはマクロ無しのExcelとGoogle Spreadsheetで求めたいのだが、とりあへずRubyでやる。追記 2014-12-04 Google Spreadsheetでやった。Google Apps Scriptを使はないのを前提としてゐる。 cf. RSA模型 https://docs.google.com/spreadsheets/d/1DwIFrzk…

Rubyで作ったFactorっぽい連鎖性記法が間違ってゐたので直した

RubyでFactorっぽい連鎖性 concatenative (関数合成) 記法を作るが完璧に間違へてゐたので直した。実際は此れは関数合成に成ってゐない。ループして順に評価してゐるだけだ。此れはconcatenativeではない。Factorでは全てのwordはいちおう、暗黙のstackを受…

Ruby自体をMaybe関手と見做して、ActiveSupportのtryを実装する

cf. n人目の所業だがRubyでMaybe monad (Option monad) を作った http://c4se.hatenablog.com/entry/2014/07/28/034752 cf. RubyにてMaybe関手を使って、ActiveSupportのtryを実装する http://c4se.hatenablog.com/entry/2014/08/02/222156 でRubyのnil chec…

RubyにてMaybe関手を使って、ActiveSupportのtryを実装する

此の間Maybe (Option) monadを作ってみた。 cf. n人目の所業だがRubyでMaybe monad (Option monad) を作った http://c4se.hatenablog.com/entry/2014/07/28/034752 Rubyだと普通はActiveSupportのtryとtry!を使ふ。 ActiveSupportのtryとtry! try!はreceiver…

RubyでFactorっぽい連鎖性 concatenative (関数合成) 記法を作る

Rubyでcurry化しない関数合成のcompose関数をみてゐたら、Factorに見えてきて、作れさうに思ふた。 再帰で階乗を定義できる所迄作る。 # coding=utf-8 # license: Public Domain class Factor def initialize *words @definitions = {} @stack = [] call *wo…

n人目の所業だがRubyでMaybe monad (Option monad) を作った

n人目の所業だがRubyでMaybe monad (Option monad) を作った。当たり前だが実用ではない (要らない)。 List monadを作るのは辛さうと云ふ丈の理由だ。HaskellとScalaを参照した。 # coding=utf-8 # license: Public Domain # Rubyでcurry化しない関数合成 ht…

Rubyでcurry化しない関数合成

Rubyではcurry化する方が難しいのだけれど。 Rubyの関数合成で調べれば延々と結果が出てくるので私のcodeを信用しないやうに。 cf. 「関数型Ruby」という病(2) - 関数合成 Proc#compose - ( ꒪⌓꒪) ゆるよろ日記 http://yuroyoro.hatenablog.com/entry/2012/…

ActiveUUIDのUUID文字列を直接扱ふにはUUIDToolsを使ふ

RubyでUUIDを生成したいならば、SecureRandomを使へばいい。SecureRandomはRubyに標準で入ってゐる。 cf. module SecureRandom http://docs.ruby-lang.org/ja/2.1.0/class/SecureRandom.html require 'securerandom' puts SecureRandom.uuid # output => 2e8…

RspecのJSON ExpressionsでNullableなマッチャー (若しくはORマッチャー) を作る

RspecにJSON Expressions ( https://github.com/chancancode/json_expressions ) を使ってゐる。便利かと云ふと便利ではない気がするが、変へる余裕も無いので使ってゐる。 其れなりにJSONの構造をマッチできるのだが、ORができない気がする。できるのかもし…

Git の proxy をon / off する

当校ではproxyを通さないとInternetに接続できないので辛い。Gitも繋がらないので辛い。とても辛い。 ~/.gitconfigでproxyをちゃんと設定できる。commandからも設定できる。どちらも同じことだ。やろう。set_git_proxy.bat の名で以下をPATHの通った所に保存…

mruby で libuv を試せなかったから Vert.x with JRuby をやる

Ruby Advent Calendar 2013 17日目です。昨日はRuby - socketライブラリを使ってwebサーバーを作ってみる - Qiita [キータ]でした。おおうっ! blocking I/Oだ。 もうすぐRuby 2.1も有るな。 最近node.jsばかり触ってゐるので、node.jsの核心であるlibuv htt…

他言語から見た Elixir (macro, protocol, binary構文)

@udzura さま(〃l _ l)?? さっちゃんですヾ(〃l _ l)ノ゙ (憤怒の相直されました(〃l _ l) Elixir Advent Calendar 2013 14日目です。昨日はElixir - Sigil大好き!一番好きな機能です。 - Qiita [キータ]でした。あーRubyの。独自定義出来るのか、ふうむ。…

「Dart風のautomatic field initializationをRubyで」をgemで公開した

した。 GitHub: ne-sachirou/AutoAttrInit.rb https://github.com/ne-sachirou/AutoAttrInit.rbRubyGems: auto_attr_init https://rubygems.org/gems/auto_attr_initcf. Dart風のautomatic field initializationをRubyで http://c4se.hatenablog.com/entry/2…

Range 'a' .. String::INFINITY (Ruby)

追記20131003 私のはまともにtestしてゐないクソ仕様なので、merborneさまのに追隨してください。 cf. RubyのStringにもInfinityを!- 反省回 - http://melborne.github.io/2013/10/01/string-infinity-regret/ 此のの間のDart風のautomatic field initializ…

Dart風のautomatic field initializationをRubyで

(草稿) Dart風の、constructor引数を自動的にinstance変数に代入するアレをRubyで http://c4se.hatenablog.com/entry/2013/09/12/184432 の続きだ。前回に挙げたbugは潰した。Lisence: Public Domain GitHub: ne-sachirou/AutoAttrInit.rb https://github.co…

RubyのS式を調べた。S式をRuby文字列に戻す方法も調べた

昨日の(草稿) Dart風の、constructor引数を自動的にinstance変数に代入するアレをRubyでにて、Ripperを使ひ、RubyのcodeをS式にした。S式の内容を調べた。序でに必要だったので、S式をRuby codeに戻す、簡単な方法も調べた。cf. How would I recompile Rippe…

(草稿) Dart風の、constructor引数を自動的にinstance変数に代入するアレをRubyで

追記: 20130923 当記事で挙げたbugは潰した。 Dart風のautomatic field initializationをRubyで http://c4se.hatenablog.com/entry/2013/09/23/075129bug bug。bugだらけ。特に、引数にdefault値を持たせられる形式に就いては、一部しか対処出来てゐない。re…

RubyでClojure風loop-recur (末尾再帰)

Clojureのloop-recurを、Rubyでやった。Elixirの古いversionにも有ったらしい。 末尾再帰の最適化 (TCO, tail call optimization) が出来ないsystemだと、助かるみたい。Ruby 2.0.0とかClojureみたいな。 def factorial n cloop n, 1 do |n, acc| if n == 0 …