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

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

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

音樂はSoundCloud等バラバラの場所に公開中です。申し訳ないがlinkをたどるなどして探してください。

考察は現在は主に此のblogで公表中です。

programmingは、ひろくみせるものはGitHubで、個人的なものはBitBucketで開発中です。

c4se

Programming

日本の祝日を扱ふholiday_jpをElixirに移植したholiday_jp-elixirを作った

日本の祝日を扱ふholiday_jpをElixirに移植したholiday_jp-elixirを作った github.com 普段はRubyやElixirやPythonやCrystalを扱ってゐる。祝日と云ふのは本質的に難しい。何時が祝日であるかは国民の祝日に関する法律と云ふ法律に依って決まる。一年のいつ…

JSONを整形してからdiffをとるtool、diff-with-jsonを作った

JSONを整形してからdiffをとるtool、diff-with-jsonを作った。 github.com JSONをjq commandに通して整形し、colordiffが在れば其れを、無ければdiffを使って差分を表示する。 次のa1.jsonとa2.jsonが在ったとしやう。 // a1.json {"m":42,"n":57} // a2.jso…

OCamlでJavaScriptが幸せ

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

Crystalで殺せ

Crystalで殺せ // Speaker Deck Crystalで作る簡單インタラクティブCUI。Crystalで面倒臭い作業を殺せ Gitの要らないlocal & remoteブランチを撰んで消すツールを作ったで書いたtoolを紹介したものだ。其の後多量のbranchが在ってもscroll出來るUIを作ってゐ…

private-values : Delete private values and private files from your git repos.

private-values // Speaker Deck private-values: 秘密情報や個人的なfileを共有リポジトリから隠す爲のツールで紹介したtoolだ。今あたらしい機能を一つ考へてゐる。複數のteamで使へるやう、site (假り名) と云ふ概念を入れやうと思ってゐる。後方互換性は…

Serverless Frameworkとは何か、何故使ふのか

Serverless Frameworkを本番環境に投入するために // Speaker Deck Tutorialは以下に書いた。本當に簡單なのだ。 Serverless Framework (1.0) でAWS LambdaとAWS API Gatewayを設定する、單純なサンプルを書いた 纏め丈轉記しておかう。 What? サーバーレス…

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

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

Rustをスクリプト言語としてコンパイルせずに呼び出す

コンパイルはする。 crystal runやgo runやrdmdやrunghcのやうに、事前ビルドのコマンドを走らせる事無くインタープリタのやうに實行する機能がRustには無いらしいので自作した。 #!ruby -rdigest/sha2 o="/tmp/#{Digest::SHA512.file __FILE__}-#{File.base…

Serverless Framework (1.0) でAWS LambdaとAWS API Gatewayを設定する、單純なサンプルを書いた

Serverless Framework (1.0) でAWS LambdaとAWS API Gatewayを設定する、單純なサンプルを書いた。 github.com 説明は全部GitHubの方に書いてある。 サーバーレスアーキテクチャの好い所は、インフラの管理とアプリケーションの處理とを分離出來る事だ。イン…

Gitの要らないlocal & remoteブランチを撰んで消すツールを作った

git cleanup-branch で消せる。 github.com featureブランチ等、Gitのmerge濟みのブランチがlocalにもremoteにも溜まってゆく。注意してゐれば溜まらないのだが、注意を怠ると溜ってゆく。git branch -a --merged で一覧し、消したいブランチを撰び、git bra…

Serverless Framework (1.0.0-beta2) が在ります

Serverless Framework (1.0.0-beta2) が在ります。 Serverless // Speaker Deck Slideshare版です: Serverless

Terraformのmoduleを書く

AWSの設定をTerraformで行ってゐる。マネージメントコンソールからからやると簡單な設定であってもAWS CLIやTerraformからやらうとすると大變なものに成る場合も在る。コンソールでは一つに纏められてゐるものが個々別のオブジェクトとして其々操作しなけれ…

DynamoDBで楽観的lockを行なふ

DynamoDBにはトランザクションは無いしロック等無い。RDS使へ。好い加減にしろ。 然しDynamoDBには魅力が在るし、少々トランザクション出來なからうが此れを使ひたいといふ欲求の在る場面もある。楽観的ロック位いは出來ないだらうか。 楽観的ロックと云へば…

Pythonのunittestを書かう。其れを自動実行しやう (rake test + guardを置き換へやう)

Pythonアプリケーション毎に環境を分ける (pyenv + virtualenv (or venv) + pip)の續きのやうなもの。 Ruby Python Lint Rubocop flake8 テスト RSpec unittest モック RSpec mock (or unittest.mock) 時間に依存したテスト Timecop (or ActiveSupport::Test…

Pythonアプリケーション毎に環境を分ける (pyenv + virtualenv (or venv) + pip)

Rubyではrbenv + Bundlerでやる。HaskellではStackで。Elixirではexenv + Hexで。Node.jsではndenv + npmで。PHPではphpenv + composerで。 API GatewayとLambdaの組み合はせでリリースするバージョンを制御する の樣にLambdaで色々やってゐるので此の邊りを…

AWS EC2インスタンスの一覧を.ssh/config形式で吐く (Crystalで)

aws ec2 describe-instances でJSONとして取得する。 JSON.mappingでCrystalのclassに対応させる。 よしなに。 #!/usr/bin/env crystal run require "json" module Instances class Tag JSON.mapping( value: {type: String, key: "Value"}, key: {type: Str…

API GatewayとLambdaの組み合はせでリリースするバージョンを制御する

追記20161018 Serverless Frameworkをお勧めします。1.0が出ました。 Serverless Framework (1.0.0-beta2) が在ります - c4se記:さっちゃんですよ☆ サーバーレスって奴です。 API GatewayからLambdaを呼ぶ 此の節は前説なので、図だけ見つつ次の節へ読み飛…

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

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

astyleを使ひdotnet/CodeFormatterがコンパイルできない環境でC#をlintする

題名で此の記事の内容は終はる。 私はVim (NeoVim) 使ひなので、IDEは殺す。IDEのコードフォーマッターはコマンドラインから呼び出せない限り殺す。Unity附属のMonoDevelopは殺す。 C#にはCodeFormatterと云ふ公式のコードフォーマッターが在る。此れを使ひ…

C#で指定した型の定數を返すジェネリック函數を書くのに式木を使ふ

小ネタを出してゆく。C#で數値の定數を得たい。指定した型の數値の定數を得たい。即ち次の樣なインターフェイスを想定する。 using System; public class ConstNumber { public static void Main() { int one = GetOne<int>(); Console.WriteLine(one); } private</int>…

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

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

Erlang/OTPのリリース番号をerlコマンドで確かめる

ネタは腐るほど溜まってるが腐ってるので氣力( erl -noshell -eval 'io:format("~s~n", [erlang:system_info(otp_release)]), init:stop().' erlang:system_info/1 を使ふ。 Serverspecだと describe command(%{erl -noshell -eval 'io:format("~s~n", [erla…

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

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

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

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

Subversionのlogメッセージを検索する svn-grep

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.…

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

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

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

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

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

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

や行のえ「?」とア行の工「?」をAndroid上で表示させるフォントを作る。

先日に、JIS第三水準以上の漢字をAndroidで表示する方法を提案した。その続きとなる。 先日の方法は、GoogleとAdobeの制作したNotoフォントの一部を抜き出し、Webフォントとして実用できる小さなファイルサイズにするものだった。ところでNotoフォントにはや…

新字を舊字に (ほぼ) 自動で変換する

嘗て俗字⇒正字変換機といふものを書いた。Web UIで、新字を舊字に変換するツールだ。今回は此れをWEB UIではなく、PHPで自動にやるやつをやる。 cf. 俗字⇒正字変換機 http://c4se.hatenablog.com/entry/20090519/1242715608 c4seのコンテンツを書いてゐて、…

Unicode舊字をAndroidで表示する為に、Notoフォントの部分フォントを作りWebフォントにする

c4seを六年ぶりに更新してゐる。さすがにリニューアルした。 http://c4se.jp である。このblogは最近は舊かなで書いてゐる。c4seは漢字も全て舊字にすることにした。参画してゐる橘榛名の意向に依るものだ。 今回は舊字とWeb fontの話である。 さて、コンピ…

PHPのordはASCII文字にしか対応してゐない。Unicode版を書く

PHPのordはASCII文字にしか対応してゐない。この毛唐め。少し期待してUnicode文字にもやってみるが、見事対応してゐない。南蠻人め。 cf. PHP: ord - Manual http://php.net/manual/ja/function.ord.phpしかしASCIIは狭すぎる。西欧にもUnicode文字を使はね…

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

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

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

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

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

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

ElixirにてListのランダムな要素を取得する

Rubyだと xs.sample である。JavaScriptだと xs[Math.floor(Math.random() * xs.length)]; となる。Elixirでもこれに近いことを行ふ。Erlangのrandomモジュールを使ってみると Enum.at(xs, :random.uniform(Enum.count xs) - 1) となる。これでよささうに見…

Lessで@keyframesにvendor-prefixを付ける

よく知られてゐるやうに、Lessでベンダープレフィックスを付けるには以下の通りにすると簡便だ。 .vendor(@property, @value) { -khtml-@{property} : @value; -moz-@{property} : @value; -ms-@{property} : @value; -o-@{property} : @value; -webkit-@{pr…

ES6を使ふ。今直ぐ

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

MacVimをluajitつきで入れる (brewを使ふ)

Macを使はねばならなくなった。Operaを入れた後に、bashのプロンプト (PS1) を真っ先にカスタマイズした。 Vimを入れねばならぬ。MacVimはHomebrewで入る。Xcodeを入れてbrewを入れる。 ターミナルを開き、 brew options macvim から、指定できるオプション…

Vimのホームディレクトリ$HOMEを変更する (Win8でホームが日本語になってゐるので)

Windowsのホームディレクトリはなにかとトラブルが起きる。わたしの主PCは今Windows 8.1で、初回ログイン時の罠でホームディレクトリの名が漢字になってしまった。ゆえにトラブルも一入[ヒトシオ]である。cf. Win7 64bitで #LMMS の設定を保存できない (& …

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…