Runner in the High

技術のことをかくこころみ

雑なDNSの理解

Domain Name Systemの略 インターネットに接続されているすべてのコンピューターはIPアドレスを割り振られているが、数字でサイトを記憶しておくのは難しいので、DNSで覚えやすい文字列への解決を行う。 ARPANET時代はひとつのHOSTS.TXTにすべて書き込まれた…

D言語で作るTCPサーバの最小構成

コネクションプーリングとかワーカスレッドの多重化とかやってないめっちゃ簡易版。 import std.stdio; import std.socket; import core.thread; void main() { Socket server = new TcpSocket(); server.setOption(SocketOptionLevel.SOCKET, SocketOption.…

なんらかの処理において、できるだけその処理は依存するモデルのデータ構造をしりすぎないほうがよい?

たとえばSPAにおいて 「あるカテゴリに紐づく記事一覧を取得する」 という実装があるとする このような処理を実装するにあたっては、各レイヤによって知ってよいことと、知っててはいけないものが変わってくる。 例えばバックエンドが、RDBMSのようなIDによ…

2017年を振り返る

振り返ります 1月 丁度大学の後期の期末試験を受けていた。2016年夏頃(後期)から大学に復帰したので、そのテストを消化してた。都市社会学のレポートを書くのに清澄白河をウロウロして写真を撮った記憶がある。ジェントリフィケーションについて書いた。そ…

入門ROM.rb 第3回: Repository

さーて、お待ちかねのROM.rb入門の第3回はRepositoryから。 前回の記事はRelationを説明していますので、読んでない人は参考までに。 izumisy-tech.hatenablog.com Repository リポジトリと聞くと文脈的にPoEAAやDDDっぽい雰囲気を感じる人が多いのではない…

入門ROM.rb 第2回: Relation

さて、入門ROM.rbの第2回は、まずRelationから。 ROM.rbとはなんぞやという方は第1回の下の記事からどうぞ。 izumisy-tech.hatenablog.com 入門なのでいきなりSinatraやRailsとどう使うか、ではなくワンソースでどういうAPIがあって、どう使うのか、というと…

Pumaのスレッドプールの実装を読んでみる

D言語でアプリケーションサーバを書いていて、そういえば普段良く使っているRubyのPumaだと、どういう実装をされているんだろう? というのが気になったので少し読んでみる。 server.rb まず読み始めるのはPuma::Serverクラスから。 クラスのインスタンス化…

D言語でforkを使う

core.sys.posix.unistdの中にある。使い方はforkそのまま。 import std.stdio; import core.thread; import core.stdc.stdlib; import core.sys.posix.unistd; void main() { auto pid = core.sys.posix.unistd.fork(); if (pid == 0) { writeln("child work…

D言語でstd.signalsを使ったオブザーバー実装

std.signalsというモジュールを使うとオブザーバー・パターンの実装が簡単にできる。 この例ではひとつのオブザーバーしか登録していないが、複数のオブザーバーを登録した上で一気にシグナルを発行できる。 dlang.org import std.signals; import std.stdio…

D言語でCtrl-Cのシグナルハンドラを登録する

whileループからCtrl-Cで抜ける処理を横取りしたいときに。 import std.stdio; import core.thread; import core.stdc.stdlib; import core.sys.posix.signal; extern (C) { void cleanup(int signal) { writeln("cleanup"); exit(1); } } void main() { sig…

10月にしたLTまとめ

唐突に、この10月にした4つのLTに関して振り返ってみようと思う。 これまで自分は勉強会などでいわゆるライトニング・トークというものをしたことがなかったが、内定先の師匠と話をしていてちょっと試しにやってみるのも悪くはないなと思い始めたのがきっか…

10月のOneTapBUY

先月書いていたOneTapBUYに関する記事から少し評価額で変化が合ったのでちょろっとだけ記事にしようと思う 前の段階では3000くらいの利益だったが、とうとう10000を切り始めた。投資額から見てこの伸び幅がすごいのかすごくないのかはわからないが、12万で1…

SAMパターンの大雑把な理解

SAMパターンというのを勉強している。 www.infoq.com この記事は少しだけはてブでバズったが、実際コレを読んだだけでは例えば実際に実装に落としたときにどういうデータ・フローになるのか、というところまでは若干理解しづらい。この記事の作者のDubrayはs…

Yeomanに代わるNode.jsのスキャフォルディングツール4選

ハッカソンや個人開発でよく使う自分でこしらえたアプリケーションのスケルトン・コードをGithubに置いて、それを気軽にスキャフォルディングしたい。こんな欲求はだれしもあると思う。スキャフォルディング・ツールの王道といえばYeomanだが、ちょっとYeoma…

Reactの優位性は関数っぽいアプローチができるところなのではないかと思う

何が言いたいのかというと、Vue.js, React, Angularなどここ最近のフロントエンド界隈を賑わせているフレームワークはたくさんあるけれども、その中でビューレイヤという責務に対して最も薄いアプローチをしているのがReactで、もっとも関数らしい副作用のな…

Unihertz Jelly Pro が届いた

IndieGoGoでBackしていたJelly Proというめちゃくちゃ小さいスマホがとうとう届いた。 つい最近GPD Pocketが届いたばかりな気がするのに、また性懲りもなくこういうガジェットを買ってしまったわけだけれど、これもまたほんとに買って正解なシロモノだった。…

入門ROM.rb 第1回: イントロダクション

RubyといえばRails、RailsといえばActiveRecordというくらいに、事実上ActiveRecordはRuby界隈におけるORマッパのデファクトスタンダードだ。しかしながら、Piotr Solnicaというソフトウェア・エンジニアは、ActiveRecordパターンが常にスケーラブルなアプリ…

OneTapBUYというのをやっている

つい最近OneTapBUYのCMをテレビで観たので、ふと思い出したので書く。 つい最近のホーム画面 今年(2017年)の5月くらいから始めて、ここまででだいたい10万くらい投資にまわした。画像の投資元本がぴったり10万じゃないのは、OneTapBUYの中に「利益分だけ売…

validatable-recordについて

www.npmjs.com validatable-recordというモジュールをすこし前に作った。Twitterでは軽く流したが、実際にはこれを作ろうと思ったモチベーションが少なからずあったので、自分自身の学びやのちのちの振り返りのためにも、そのモチベーションについてここに書…

GPD Pocket Ubuntu版が届いた

IndieGoGoでUbuntu版をbackしていたのがとうとう届いた。Windows版は「もう届いた」「小さくて最高」みたいなツイートやブログエントリーがネット上でちらほらと散見されたのにもかかわらず、Ubuntu版は随分時間がかかっているんだなと思い若干本当に届くの…

フレームワーク・ライブラリを選ぶということ

「とりあえず、ググったら大抵解決しそうなんでReduxを使おうと思います」 2016年の夏、僕はあるフリマアプリで有名なECスタートアップでインターン生として、商品を販売するユーザー向けのアプリケーションのプロトタイピングをしていた。ほとんどすべての…

モデルの中でセッションを使う

ときたまセッションに関連するロジックをモデルの中に作りたいときがある。ところが、原則的にRailsではセッションをモデルの中で操作することができない。 この問題を解決する最も簡単な方法は、モデルに生やしたメソッドへセッションのインスタンスを渡す…

コントローラを名前空間で分離して責務の分割をする

Deviseなどを使って、ひとつ以上のスコープを持つアプリケーションを開発している際に、RESTfulなコントローラとビューが1対1対応をしていると、コントローラがどうしても複数のスコープが絡みついた見通しの悪いコードになりがちである。 たとえば、ECカー…

【Quora】あなたが職場でやった悪いことを教えてください。

Read Josh Nymon's answer to What is the most immoral thing you have done in the workplace? on Quora Josh Nymon 上司の机の上でセックスをしたことがある。当時僕はとある家族経営の店で働いていて、そこでは土曜日にひとりで商品を客に発送しないとい…

いま大学生がSpeeeのbizTechインターンに参加すべき5つの理由

どうもみなさん、2015年夏のBizTechインターンに参加しました@IzumiSyです。現在は別の企業にてインターンをしているのですが、あまりにSpeeeのインターンが素晴らしすぎたのでアドベントカレンダーの一日を拝借して記事を書かせてもらいました。僕自身、趣…

開発マシンとしてのChromebook

Feedforceさんとiidさんの2社でインターンに参加してました。 iidさんのほうでは座学でリーンスタートアップを学んだのちに共感マップやリーンキャンバスを使って2週間のうちに企画→開発という業務の流れを体験し、Feedforceさんではアジャイル開発を用いな…

Chrome Dev EditorではGitで512kb以上のコミットをプッシュできない

Error whilst pushing changes #3456 - Chrome Dev EditorGit push fails for huge changes. #2553 - Chrome Dev Editor詳しくは上の2つのチケットを参照のこと。Chrome Dev Editor(CDE)ではjs-gitというGitをJavaScriptで実装したものを利用してコミット…

Acer C720のこと

最近ちょっとあってAcerのChromebook C720を手に入れたのでこれについて軽く記事を書こうかなと思った今日このごろ マシンの写真とかはそこらへんにごろごろしてるのでこんなもんで。【スペック】CPU: Intel(R) Celeron(R) 2955U @ 1.40Ghz 2coreMemory: 4GS…

chrome.browsingDataの呼び出し回数制限

どうやらchrome.browsingDataには規定時間内の呼び出し回数制限があるらしい。確かにコンマ何秒位の差で何度も呼び出されちゃオーバーヘッドも大きそうだしね。みたところ、1秒未満の間に何度も呼びだそうとすると、エラーになるらしい。もしかすると他にも…

EclipseでAndroidエミュレータ上のSQLiteのデータを見る

EclipseでAndroidエミュレータ上のSQLiteのデータを見るためのプラグインにはいろいろあるかとは思いますが、今回は最もシンプルで使いやすそうなQuestoid SQLite Browserとやらを使ってみます。 導入 ここからQuestoid SQLite BrowserをEclipseにインストー…