サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
CES 2025
c4se.hatenablog.com
qiita.comの 12/12 (火) です。 去る 12/2 (土) に Go Conference mini 2023 Winter IN KYOTO で「作ってよかったgraceful shutdownライブラリ」と云ふ事を喋りました。 event report は以下。 scrapbox.io ここでは喋った事を紹介します。 speakerdeck.com はてなでは Go を (も) 使って application を作ってゐます。或る時「Go の code は記述量が多い」事が話題になりました。その中の一つに、graceful shutdown を實現するのに、似た code を每囘長々と書いてゐる事が擧がりました。そこで graceful shutdown の記述を改善できないか探索する事にしました。 graceful に起動・終了するとはどう云ふ事か? と云ふ一般論は省略
こんにちは。Mackerel Advent Calendar 2020 11 日目である。 最近は自宅で仕事をしてゐて、自宅の network が相當惡い事に氣附いた。頻繁に通信が途切れる時間帯が在る。特に夕方から夜更けにかけて、まるで通信制限でもかかってゐるかのうやうにずっと遲い。多くの Web site で畫像を讀み込めなく成る程に遲い。これに氣附いたのは歸宅作業で體力を使ひ果たさず遊ぶ樣に成ったからであらう。周りの家の方々も同じく夜に通信が増えたのかもしれない。歸宅と食事は疲れる。歸宅と食事を止めよう。 どれ程遲いか確認してみた。speedtest-cli を使ふ。 sivel/speedtest-cli: Command line interface for testing internet bandwidth using speedtest.net brew install sp
Mackerel Advent Calendar 2019 - Qiita 12/11 以前にKubernetes 上で動く Elixir アプリを監視するを書いた。これが完成した。 確かに Erlang/Elixir の system は落ちない。programmer が落ちないやうに書けば落ちなく出來るからだ。基本的な道具は BEAM VM (Erlang VM) と Supervisor の木である。 勿論落ちる事は在る。tuple の入れ子が深過ぎて SEGV したり、memory を使ひ過ぎて OOM Killer に落とされたりだ。memory の使ひ過ぎは、ETS からの data copy (通常の代入や message passing と違ひ、同じ data でも毎囘 copy される)、:erlang.binary_to_term/2 (理由は ETS のに近い)、at
Kubernetes3 Advent Calendar 2019 - Qiita 12/11 昔 Kubernetes を技術撰定した事が有ったのでその時の話をする。以下の slide の時の話だ。 ステートフルで大規模アクセスのある soft-realtime なゲームサーバーを easy につくる 採用後の具体的な運用の話はしない。流石に昔話に過ぎる。 何が嬉しいか? 前提 : 代替手段でも充分、と云ふだけでは代替手段を撰ぶ理由には成らない 自分の學習 cost は氣にしない。學習せずに濟む手段は私には常に無いので 検討を始めた時には何となく動く Elixir application は既に在り、infrastructure に求められる事も判ってゐた。Elixir application を動かす。多くの WebSocket を安定して繋ぐ。極端に好い network 性能は求めない
JSON を整形してから diff をとる tool、diff-with-json を作った。 github.com JSON を jq command に通して整形し、colordiff が在れば其れを、無ければ diff を使って差分を表示する。 次の a1.json と a2.json が在ったとしやう。 // a1.json { "m": 42, "n": 57 } // a2.json { "m": 42, "n": "parrot" } .n を 57 から"parrot"に変へたものだ。此れを diff で diff -u -L a1.json -L a2.json a1.json a2.json として差分を出すと斯う成って了ふ。 --- a1.json +++ a2.json @@ -1 +1 @@ -{"m":42,"n":57} +{"m":42,"n":"parro
ML Advent Calendar 2016 - Qiita 12/11 參加。 JavaScript と云[い]ふ言語に變換[へんかん]する言語は沢山[たくさん]在った。活溌[かっぱつ]に活動してゐるものは未[ま]だ多いものの、多勢はTypeScriptやElmに流れたやうだ。TypeScript の型 system は軈[やが]て ES.next に成[な]り JavaScript其[そ]の物に成るかもしれない。Elm は軈て ECMAScript で自然に FRP (Functional Reactive Programming) が行なへる機能が提案され役目を終へるだらう。OpalやHaste等[など]は其々[それぞれ]Ruby と Haskell と云ふ人氣[にんき]の在る言語を JavaScript實行[じっこう]機でも使へる tool として活溌に續[つづ]くだらう。 別の
DynamoDB にはトランザクションは無いしロック等無い。RDS 使へ。好い加減にしろ。 然し DynamoDB には魅力が在るし、少々トランザクション出來なからうが此れを使ひたいといふ欲求の在る場面もある。楽観的ロック位いは出來ないだらうか。 楽観的ロックと云へば私にとっては ActiveRecord の lock_version だ。UPDATE items SET name = "New Name", lock_version = 43 WHERE id = 1 AND lock_version = 42 等のやうに、比較と更新をアトミックに行なへれば此れは實裝出來る。 DynamoDB ではテーブルを跨がなければ、比較と更新がアトミックに出來る。從ってテーブルを跨がない楽観的ロックは實裝出來る。詰りテーブルを跨がないトランザクションは實裝出來る。 以下の DynamoDB テーブ
Python アプリケーション毎に環境を分ける (pyenv + virtualenv (or venv) + pip)の續きのやうなもの。 Ruby Python Lint Rubocop flake8 テスト RSpec unittest モック RSpec mock (or unittest.mock) 時間に依存したテスト Timecop (or ActiveSupport::Testing::TimeHelpers) freezegun テストランナー Rspec unittest タスクランナー Rake Invoke ファイル監視 Guard watchdog + Invoke Lint 追記 20161107 flake8-pep257 は flake8-docstrings に置き換へられた。 PEP8 と PEP257 と云ふコーディングスタイル標準が在る。flake8
追記 20161018 Serverless Framework をお勧めします。1.0 が出ました。 Serverless Framework (1.0.0-beta2) が在ります - c4se 記:さっちゃんですよ ☆ サーバーレスって奴です。 API Gateway から Lambda を呼ぶ 此の節は前説なので、図だけ見つつ次の節へ読み飛ばすことも出來ます。 version を制御しない所からはじめてみます。 GET http://api1.sample.example/user/{id} POST http://api1.sample.example/user/{id} を実装してゆきます。 事前に以下のものを作成します。 上では「sample.example」と成ってゐるドメインを取得しておいてください。例へば私であれば「c4se.jp」です。其れを Route53 に Ho
12/25 www.pinterest.com 12/24 www.pinterest.com by supermomonga jp.pinterest.com github.com vimeo.com 12/23 www.pinterest.com by 蘇摩清良 www.pinterest.com gist.github.com by s_hiiragi www.pinterest.com gist.github.com by 橘榛名 www.pinterest.com 12/22 www.pinterest.com image/svg+xml by Nさん www.pinterest.com by 小夏 jp.pinterest.com by 奈良阪 jp.pinterest.com 12/21 www.pinterest.com by 帽子屋 jp.pinterest.com by
じゃんけんをシミュレートしてみる。練習問題だ。 人間を五人ほど作り、グー/チョキ/パーのなにを出させるかをそれぞれに決めさせ、勝負する。引き分けを考慮し、勝者が最後の一人になるまで繰り返す。 せっかくElixir (Erlang) でつくるのだから、各人間をプロセスにしてみる。 まずPersonモジュールをstructにする。Elixirはstructが入って大変便利になった。それまではrecoedを使ってゐたもので、プロセスの関数を含むモジュールとrecordのモジュールは別にしなければならなかった。Ruby人間としてstructは助かる。 spawnしてPersonを五人作る。PersonのプロセスIDが得られるので、これで話しかけられる。 さて、五人に手を出してもらう。そして五人が何の手を出したか確認せねばならない。おお。五人全員の手が揃わなければならないのだ。四人で勝ちを決めても五
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も言ってゐる。
PHP Advent Calendar 2014の11日目です。昨日は普通じゃないモッキングフレームワークAspectMockがパワフル過ぎるでした。明日は @shin1x1 さんです。 おくすりをきめキメた。 経緯 AspectMockに続いて本日はAOPです。DIもあるよ。 去年のPHP Advent CalendarではRay.DiとRay.Aopをキメました。 cf. PHP でRay.DiとRay.Aopをやってみる http://c4se.hatenablog.com/entry/2013/12/20/015945 お花屋さんでWebサイトを作ってゐるうちにDIが欲しくなりPimpleを使うてゐましたが、いつか見たannotationでしゅるっとDIするやつやりたい>ω< でもアレめんどくさい><← といふのでPimpleを拡張して自作しました。 cf. PHPでDI (依存性
Vim Advent Calendar 2014の四日目です。昨日はVimにrevコマンドを実装してみたでした。明日は217さんです。 いま一番もとめてゐるのは縱書き[縦書キ]ですが、Vimを最新に更新します。 Vimのソースコードを更新する Mercurialで公式のリポジトリから落としてゐるとおもひます (落としてください)。 ~/dev/vim に落としてあるとします。 cd ~/dev/vim hg pull -u 以上です。 Vimをコンパイルする Debian (Ubuntu) でVimを、機能アリアリでbuildする http://c4se.hatenablog.com/entry/2014/09/21/181104に書いてあります。以上です。 これらを自動でやると、 cd ~/dev/vim hg pull -u cd src CC=clang ./configure --
追記 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 Pimple. cf. Ranyuen/Di https://github.com/Ranyuen/Di 既存のDI framwork PHPでDI (Dependency Injection, 依存性の注入) framworkは沢山あります。Javaだとなんですか? EJBとSpring Framworkと…? Phalconを使ふてゐるのならPhalconのDIを使っとけばいいと思ひます。しかし (逆説の
故有って複雑なdirectory構造の下、大量のJPEGとPNGを最適化することになりました。めんどくさいので自動化しませう。 Web designerの方は、いつもやってる事かとおもひます。 基本的に、それぞれの形式に合はせてツールを選んでコマンドを叩いてやればいいのですが、叩くコマンドを覚えてられないので、それも自動化します。gulp-imageminを使ひます。 先ずnode.jsを入れます。Windowsでも簡単です。公式サイトからMSIを落としてきてダブルクリックするだけですが、LinuxやMac (Homebrew) を使ひ慣れてる方ならばChocolatyがおすすめです。 cf. Chocolatey Gallery | Node JS 0.10.32 https://chocolatey.org/packages/nodejs cmdやターミナルを立ち上げて、node -v
もっぱらGulpを使ってゐます。或いはmakeかRake。 Gulpでは、gulp.src() でpathを指定すると、そのfileをstreamとして読み出してくれ、それを pipe() の連鎖で処理していって、pipe(gulp.dest()) でfileに書き出します。gulp.src() にはnode-globの記法を使へるのですが、ちゃんと思うたfileを読んでくれてるのか、書いた指定がまちがうてないか不安になります。 cf. isaacs/node-glob https://github.com/isaacs/node-glob cf. isaacs/minimatch https://github.com/isaacs/minimatch gulp-debugを使ふ方法もあるのですが、出力する項目の融通が効かないので、簡単なpluginを自作します。 npm install
Rubyでcurry化しない関数合成のcompose関数をみてゐたら、Factorに見えてきて、作れさうに思ふた。 再帰で階乗を定義できる所迄作る。 # coding=utf-8 # license: Public Domain class Factor def initialize *words @definitions = {} @stack = [] call *words end def call *words while words.length > 0 word = words.shift if word.class.method_defined? :call arity = word.arity result = if arity < 0 word.call *(@stack.pop(-arity) + [self]) elsif arity == 0 word.call e
Rubyではcurry化する方が難しいのだけれど。 Rubyの関数合成で調べれば延々と結果が出てくるので私のcodeを信用しないやうに。 cf. 「関数型Ruby」という病(2) - 関数合成 Proc#compose - ( ꒪⌓꒪) ゆるよろ日記 http://yuroyoro.hatenablog.com/entry/2012/08/09/203959 cf. 「関数型Ruby」という病(3) - カリー化(Proc#curry, Proc#flip) - ( ꒪⌓꒪) ゆるよろ日記 http://yuroyoro.hatenablog.com/entry/2012/08/10/232443 cf. 「関数型Ruby」という病(6) - 関数合成と文脈、Proc#liftとProc#>=、そしてモナ - ( ꒪⌓꒪) ゆるよろ日記 http://yuroyoro.hatenablog
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 => 2e895d5b-ab74-45de-9cee-67c8659d5aa0 puts SecureRandom.uuid # output => 0b8ef286-0d6c-41a9-9b48-b087fb5b565a しかしActiveRecordをUUIDに対応させるlibrary、ActiveUUIDは、はUUIDToolsを使ってゐる。何が違ふのかは知らない。 cf. jash
JavaScriptは基本非同期で、callbackだったりevent drivenだったりする。最近はPromiseやgenerator (yield, async/await) も出てきてるが、此れも非同期だから、非同期処理を待つ事は考慮に入れなければならない。testを書く時も、当然個々のtest caseが、ほぼ確実に非同期に成る。 Gruntに於ける非同期処理 Gruntには非同期を待たせる仕組みがある。grunt.registerTask() のcallback内で使へるthisの、async() methodで、非同期処理の終了を通知する為の関数が得られる。全てが終わった時に此れを呼んでやれば好い。done() の引数はError若しくはnull/undefinedだ。 // Gruntfile.js module.exports = function(grunt) { gr
cf. 東京モード学園、学生いじめ問題で責任逃れに終始~問題行為認めるも「仲良い関係」と主張(1/2) | ビジネスジャーナル http://biz-journal.jp/2014/01/post_3782.html cf. 東京モード学園コンピューター専門学校HALでイジメ発覚・・・学校統括者・永来真一「加害者側が『イジメはコミュニケーション』て言ってるからイジメとは断定できないよね」と責任回避:ハムスター速報 | 360°News http://360news.jp/news/129662 コンピューター専門学校のHAL東京であったいじめを、学校側が揉み消さうとしてゐると云ふニュースだ。どんな横槍の義務感もない。こんな一例を取り上げるのは、わたしがHAL東京の現役の生徒だからだ。 このニュースを知って、おれは心底残念におもった。まず、わたしは事実を確かめうる立場にない。教師にきけばわか
Vim Advent Calendar 2013 33日目の記事です。昨日はVimConf2013が無事終わりましたでした。にょ……。 今年はVimに関する記事を書きたいときは、記事を下書きしておいてVACに投稿しやうと思ひますね☆ lightline.vimを導入したのでついでに書く。 復たn度目的な記事です。別になんら新しいことではないけど、此う云ふのは何度書いても目についてゐない人は居る。 Vimで文字数を数へる なんとなく文字数を知りたい訳です。Vimで文字数を数へる丈の事であれば、恐らく最も簡単なのは、 :%s/.//gn :nohl で好い。行数を数へるのであれば、 :%s/.//n :nohl でできる。n flagを付ければ、実際には置換せず置換結果の個数だけ受け取れる。:h :substituteを参照。 然し入力が鬱陶しいし、hilightされて鬱陶しいし、記憶されてい
連鎖性 concatnative のprogramming言語の一つFactorに就いて書いた。 cf. 関数合成型 ( Forth 系) 言語 Factor への入り口 http://c4se.hatenablog.com/entry/2013/12/26/044415 幾つか間違ってゐる。例へば変数はstaticなものもdynamicなものも使へた。兎も角、 再帰 recursion 兎も角、 id:itochan 再起関数が面白そう。 と思うのは、「5」は「5をstackへpushする関数」って書いてて、合成関数「5 *」でそのpushをはしょってるから(最適化?)。 n! みたいのの関数の説明が見たい。 …factorだけに。 http://b.hatena.ne.jp/entry/c4se.hatenablog.com/entry/2013/12/26/044415 と云ふcom
マイナー言語 Advent Calendar 2013 25日目です。飛び入りました。昨日はSQL - 僕の記事を見て魔法少女(Presto使い)になってよ - Qiita [キータ]でした。Prestoって言ったらOperaのPresto(滅びました。 Nemerle 好いですね。 cf. クエリな午後: マイナー言語 Advent Calendar 2013 #16: Nemerle について http://lambdalice.blogspot.jp/2013/12/advent-calendar-2013-16-nemerle.html F#とかHaxeとかOCaml系には有りますが、Nemerleは洞うなのかしら。Elixirと同じくsyntax as Rubyな感じ。OOP + FPなScalaとは洞うなんでしょ。 KittenはForth系の連鎖性言語ですね!! cf. Ki
追記 2014-12-19 Ray.Di, Ray.Aopを参考に、より簡単なinterfaceのDI/AOPライブラリを実装しました。お使ひください。 cf. PHPで簡単に華麗にDIとAOPをキメる http://c4se.hatenablog.com/entry/2014/12/11/013136 PHP Advent Calendar 2013 19日目です。みなさまに於かれましてはネコと和解されましたでせうか。昨日はPHP 文字列リテラルにおける変数展開ノ全テ - do_akiの徒然想記でした。うげ、複雑な構文2って然ふだったのか。securityとしては洞うなの……。 PHPの開発にGrunt使へ、と云ふ話しを予定してゐたのですが、ADVENTARの方のPHP Advent Calendar 2013でPHP 開発でも Grunt を使う - ngの日記に書かれてしまひました。
@udzura さま(〃l _ l)?? さっちゃんですヾ(〃l _ l)ノ゙ (憤怒の相直されました(〃l _ l) Elixir Advent Calendar 2013 14日目です。昨日はElixir - Sigil大好き!一番好きな機能です。 - Qiita [キータ]でした。あーRubyの。独自定義出来るのか、ふうむ。 最近Elixir書いてない……(〃l _ l) 最近はnode.jsです。Ruby, PHP, JavaScriptを回し使ってます。 と思ったら、WindowsでもElixirのpre-compiledが手に入る様に成ってますね。隔世の感です。ErlangもElixirもWindowsで不便しませんねえ……。Elixir使ふ度にVMをひとつあげてたのですけれども、それも変わりますね。日用Elixir。 Erlang VMにRubyの見栄えを被せてClojure
Vim Advent Calendar 2013 11日目です。昨日は @alpaca_taichou さんのNeoComplete vs YouCompleteMe | アルパカエンジニアのブログでした。 わたしはNeoCompleteだけでした……、C言語系余り書かないので(〃l _ l)。。 今日は小ネタです。去年はVim で音楽を作ったりしましたが、n人目的な小ネタです。 folding (折り畳み) 折り畳み使ってますか。別に使わなくて好いんですけど……。 例へば (「例へば」と「喩へば」を使ひ分ける構へ) setl fdm=marker とすると、 {{{ }}} で囲んだ部分を折り畳めます。module毎にfileを分けてない場合とか便利です(ヽ´。ω、゜) // {{{!dubug // }}}!dubug とか // {{{!ie6 // }}}!ie6 とか云ふ使い方も
追記 2015-05-03 delといふライブラリを使ふと便利だ。glob指定ができる。使ふべきだ。 cf. del https://www.npmjs.com/package/del node.jsのFile System moduleには、directoryを再帰的に扱うAPIが無いから、自分で再帰を書く。然も遅延させて再帰するから結構アレ。 cf. node.jsで非同期にdirectory中の全てのfileを読み込む http://c4se.hatenablog.com/entry/2013/10/18/124837 rm -rf .に当たる処理を書いた。結構アレ。 /** * Extends standard FileSystem module. * * <p><a href="http://c4se.hatenablog.com/entry/2013/10/18/124837"
次のページ
このページを最初にブックマークしてみませんか?
『c4se記:さっちゃんですよ☆』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く