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

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

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

音樂は SoundCloud に公開中です。

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

Programming は GitHub で開發中です。

JavaScript

JavaScript / TypeScript で grep しにくい對象を、ESLint plugin を作って抽象構文木を基に檢索する

JavaScript / TypeScript で grep しにくい對象を抽象構文木を基に ESLint plugin で檢索する方法を敎へてもらった。目標とする抽象構文木で error を出す ESLint plugin を書けば、行が分かれて grep / ag しづらい對象を網羅して檢索できる。 今調べるとそ…

esbuild で大量の file を生成すると webpack --watch が SIGBUS で落ちる

實は esbuild は關係が無い。だうやら大量の file を生成すると webpack --watch が SIGBUS で落ちるやうだ。esbuild が tsc よりとても速いから一氣に webpack に更新を食はせて、落ちる頻度が随分と上がる、といふ事があった。bundle せず大量の TypeScrip…

Web front で ANTLR4 を使ひ DSL を作る (但し Python で書く)

世に parser generator や parser combinator が生まれてから兔角、文脈自由或いはそれに近い文法の構文解析器を作るのは簡單で、私も度々作ってきた。 PEG (Parsing Expression Grammar) が表現し易く好きでよく使ってゐた。PEG.js – Parser Generator for …

throw しない函數が吐く console.error を補足する

error が有るのにそれを console に吐くだけで throw しない不屆きな函數が有る。壊れた data で處理が進んでは困るから throw して貰ひたい。或いは error を UI 上に表示したいから catch したい。詰まり console に吐かれた error を捕捉して何かを行なひ…

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

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

Develop Google Apps Script in ClojureScript

qiita.com What is Google Apps Script? Google Apps Script (以下 Apps Script) は、Google の server 上での serverless な JavaScript 實行環境です。serverless な JavaScript 實行環境ですので Cloud Function の仲間です。函數を起動できる event の種…

The Best of Access @ Elixir

Immutable data is a foundation of abstraction - it localizes program computation. So immutable data makes concurrency easy & decreases bugs. All data in Erlang/Elixir is immutable. We are happy to use functional programming techniques, wor…

ねぎ姉さんを見る

はい。 bookmarklet です。 javascript: { let n = "" + (Math.floor(Math.random() * 1213) + 1); while (n.length < 3) n = "0" + n; window.open(`http://negineesan.com/comics/negi/negi${n}.jpg`); } 貼り附けてやりましょうよ。 駄目でした。

OCamlでJavaScriptが幸せ

ML Advent Calendar 2016 - Qiita 12/11 參加。 JavaScript と云[い]ふ言語に變換[へんかん]する言語は沢山[たくさん]在った。活溌[かっぱつ]に活動してゐるものは未[ま]だ多いものの、多勢はTypeScriptやElmに流れたやうだ。TypeScript の型 system は軈[や…

JavaScriptのclassでprivateとprotectedを実現する

JavaScriptには古くから自然なclass構造が在る。ECMAScript2015では簡単な構文糖が附いた。 多くの他の電算機言語に於けるclassには 1. 委讓delegationの役目 2. 型表示の役目 3. 識別子のscopeを限る役目 が有る。一方JavaScriptのclassには 1. 委讓delegat…

JavaScriptで描画するページの初期値をページに埋め込む

SPA (single page application) なりなんなり、データからJavaScriptで描画し画面を更新してゆくときに、初期値をどう受け取るか問題になることがあります。ソフトウェアとして一番単純なのは、ページを受け取ったあとにサーバーとXHRなりで通信して受け取る…

PHP CLIにて、標準入力からストリームが與へられてゐるかだうか判定する

PHPはわりと便利で、簡単なスクリプトを書くのにも不自由しない。「PHPが動作する」ことを前提にしたシステムでは、PerlやRubyやPythonを導入したり学習させたりせずに、PHPでスクリプトを書いてしまへる。 #!/usr/bin/env php

ES6を使ふ。今直ぐ

node.jsとio.jsだが、node.js側が譲歩して、io.jsがnode.jsに戻るかもしれない。またnode.jsでもES6が少しは使へるやうになってきてゐる。Promise等[など]だ。ndenv (node-build) もio.jsに対応したが、それでわたしはnode.jsを使ひ続けてゐる。 AltJSでなく…

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

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

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

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

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

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の記法を使…

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…

JavaScriptで「普通に」継承する

軈てmoduleやclassが使へるやうに成れば此の記事は無駄に成る。さっさと無駄に成りたい。_extends()を書いた。JavaScriptで継承をする実装は世に星の数程有る訳だが、実はcodeを読んだ事が無い。継承が好きではなく殆どやらないし、やるにしてもJavaScriptの…

O(log(n)) の String.prototype.repeat (JavaScript)

C言語歴が無いものでbit演算を殆ど使った事が無かったから。冪乗のalgorithmだ。JavaScriptの整数値は最大で32bit (桁) しか無いけどね。 String.prototype.repeat = function (times) { var r; if (times <= 0) { return ''; } r = this.repeat(times >> 1)…

ES.next Promiseが未だ無い時にQで代用する

追記20140324 Bluebirdを使おう。 if (!global.Promise) { global.Promise = require('bluebird'); } 或いは <script src="bower_components/bluebird/js/browser/bluebird.js"></script> で済む。 cf. petkaantonov/bluebird https://github.com/petkaantonov/bluebird Chromeには目出度くPromiseが実装され、Operaにも降りてきました…

Factor で階乗。然して再帰に就いて抄

連鎖性 concatnative のprogramming言語の一つFactorに就いて書いた。 cf. 関数合成型 ( Forth 系) 言語 Factor への入り口 http://c4se.hatenablog.com/entry/2013/12/26/044415 幾つか間違ってゐる。例へば変数はstaticなものもdynamicなものも使へた。兎…

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の。独自定義出来るのか、ふうむ。…

node.jsでChild Processと大量のdataをやりとりする問題

Node.js Advent Calendar 2013 11日目です。昨日はnazomikanさんのjadeを知る - 株式会社ネクスト エンジニアBlogでした。 さっちゃんはHamlよりもERB (erubis) を使い、SassよりもScssを使ふ人間ですが、node.jsではいちおうjadeです。あ、此れがjade + les…

node.jsでdirectoryを再帰的に強制削除 (rm -rf)

追記 2015-05-03 delといふライブラリを使ふと便利だ。glob指定ができる。使ふべきだ。 cf. del https://www.npmjs.com/package/del node.jsのFile System moduleには、directoryを再帰的に扱うAPIが無いから、自分で再帰を書く。然も遅延させて再帰するから…

node.jsでCPUを使う重い処理のlibrary (child process使い) を1 fileで作る

追記 2013-12-11 問題と対策を書きました。 node.jsでChild Processと大量のdataをやりとりする問題 http://c4se.hatenablog.com/entry/2013/12/11/231318 node.jsでnon-blockingなのはIO丈なので、single threadのnode.jsでは、重い計算関数は矢張り他の処…