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

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

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

音樂は SoundCloud に公開中です。

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

Programming は GitHub で開發中です。

Programming

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

phpenv install (php-build無し) にconfigure optionを追加する

anyenvでphpenvを使うてゐます。php-buildは入れてゐませんでした。phpenvは獨力[独力]でphpenv installができます。 Threadを使ふにはZTS付きでcompileせねばならない Threadを使ひたかったのです。pthreadsのPECLパッケージを入れなければいけません。PECL…

コメントでJavaScriptに型注釈を書き実行時に自動で型検査をする

此の記事はNode.js Advent Calendar 2014の18日目です。昨日はSails.js と Vue.js で API ファースト + リアルタイムな Web アプリケーションをさくっと作るでした。明日は id:slowquery さんです。io.jsとは何故ですか。Proxyが使へればなんでもできさうな…

PHPで簡単に華麗にDIとAOPをキメる

PHP Advent Calendar 2014の11日目です。昨日は普通じゃないモッキングフレームワークAspectMockがパワフル過ぎるでした。明日は @shin1x1 さんです。おくすりをきめキメた。 経緯 AspectMockに続いて本日はAOPです。DIもあるよ。去年のPHP Advent Calendar…

Vimの全てを最新に保つ (VAC2014)

Vim Advent Calendar 2014の四日目です。昨日はVimにrevコマンドを実装してみたでした。明日は217さんです。いま一番もとめてゐるのは縱書き[縦書キ]ですが、Vimを最新に更新します。 Vimのソースコードを更新する Mercurialで公式のリポジトリから落として…

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

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

更新したgulp-sshが余計な機能をつけた挙句動かないので、SSHでコマンドを打つのを自作した

更新したgulp-sshが余計な機能をつけた挙句動かないので、SSHでコマンドを打つのを自作した。gulp-sshは中でssh2を叩いてゐる。それを直接使ふ。gulp-sshは捨てた。 /* global -Promise */ /* jshint node:true */ 'use strict'; var Promise = require('blu…

phpenvで入れたPHPにPECLパッケージを入れるには悩まずにPECLコマンドを使へば好い

以前phpenvで頑張ってPHPを入れました。 cf. phpenvでPHPをinstallするにはbuild-depを使ふと好い http://c4se.hatenablog.com/entry/2014/10/05/141652PEAR packageを入れたければ、phpenv付属のPyrusを使ふてもいいし、Composerを使へばよいです。ところが…

PHPでDI (依存性の注入) framworkを作るのはあなたでn人目です!

追記 2014-12-12 AOPも実装した0.2.0をリリースしました。 cf. PHPで簡単に華麗にDIとAOPをキメる http://c4se.hatenablog.com/entry/2014/12/11/013136 わたしがn-1人目です! (nは1以上の自然数)Simple Ray.Di style DI (Dependency Injector) extending P…

catで行を指定してその周辺を印字するにはsedを使ふ (行番号付き)

行番号を出力するにはcatに-n optionを付ける。あとはsedで切り抜く。 cat -n a.txt | sed -n "32,52p" 好い。面倒なので.bashrcに書く。 追記2014-10-07 syntax hilightingを行ふ為にPygmentsを使ふやうに追加した。 function cat-n() { local min=`expr $2…

phpenvでPHPをinstallするにはbuild-depを使ふと好い

新しくノートPCを買った。新しくPCは買ったが、PCは新しくない。四年前に製造されたらしい中古のPCで、Windows7は陽の目を見ずにUbuntuに道を譲った。わたしはMacOSはWindowsと同じ理由で同じくらい嫌いである。然して印刷作業に殆ど関はりが無いのでMacに用…

JPEG, PNG, GIFを一括でlossless最適化する

故有って複雑なdirectory構造の下、大量のJPEGとPNGを最適化することになりました。めんどくさいので自動化しませう。 Web designerの方は、いつもやってる事かとおもひます。 基本的に、それぞれの形式に合はせてツールを選んでコマンドを叩いてやればいい…

gulp.srcがちゃんと思うたpathを読んでるかdebugする

もっぱらGulpを使ってゐます。或いはmakeかRake。 Gulpでは、gulp.src() でpathを指定すると、そのfileをstreamとして読み出してくれ、それを pipe() の連鎖で処理していって、pipe(gulp.dest()) でfileに書き出します。gulp.src() にはnode-globの記法を使…

Debian (Ubuntu) でVimを、機能アリアリでbuildする

追記 2014-12-04 最新の情報は以下に移讓します。 cf. Vimの全てを最新に保つ (VAC2014) http://c4se.hatenablog.com/entry/2014/12/04/175937 UbuntuでVimをcompileしたり、最新のbuildに更新したり。aptの標準packageじゃ足りないので、機能マシマシで。 c…

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ができない気がする。できるのかもし…

Docker imageの名前だけを一覧する

持ち歩きの PC を Windows7 から Ubuntu に入れ替へました。 問題 入れてる Docker の image 名が長く成って覚えてないし、コピペしやうにもdocker ps -aの出力は長い。名前だけ一覧したい。 解決 AWK を使ふ。.bashrc に書く。 |sh| license: Public Domain…

vimproc で command の非同期実行を待ち callback してもらう

ヰ゛ムッ ヰ゛ムッ此の記事は TokyoVim#19 の会場で書いてゐます。VimScriptでJavaScriptみたいなcallback型で、コマンドを非同期に実行させませう。 vimproc を使ひます。ヰ゛ムッ ヰ゛ムッ ヰ゛ムッvimproc#popen2() 等で command を非同期に実行すると、…

Git の proxy をon / off する

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

Ciscoルーター、コマンドのメモ

Cisco 1800 ルーター。 去年書いたmemo。memoなので説明はしない。 * Initilize a router. * > en # erase startup-config # reload System configuration has been modified. Save? [yes/no] no Would you like to enter the initial configuration dialog?…

PHP で V8js を使ひ JavaScript を実行する

PHP で JavaScript を実行したい。裏で node.js を動かすと云ふ方法がある。毎回 node command を走らせてるとバカだから、裏で node.js の server を立ち上げておいて、其所と socket なり HTTP なりで通信する。めんどい。 其所でPHPから直接V8を呼び出す…

PhantomJSで簡単に非同期のtestを行ふ

JavaScriptは基本非同期で、callbackだったりevent drivenだったりする。最近はPromiseやgenerator (yield, async/await) も出てきてるが、此れも非同期だから、非同期処理を待つ事は考慮に入れなければならない。testを書く時も、当然個々のtest caseが、ほ…

JavaScriptで引数名から自動でDIする

疲れたのでJavaScriptでinjectionするものを書いた。 AngularJSを使ふのに結局失敗して、Polymerを使ってゐる訳だが、AngularJSには引数名を適当なものにしておくと、ちゃんと其の引数名に対応する値が渡される素敵な仕組みが有ると云ふ。Function.prototype…