Aoinoのブックマーク (582)

  • 混乱しがちなサービスという概念について - かとじゅんの技術日誌

    社内でサービスがよくわからないという話になったので、考察を少しまとめておきます。 過去のエントリでも以下のように触れましたが、もう少しかみ砕いてみよう。 サービスという言葉はあいまい まず、簡単に前提の整理から。単に"サービス"って言葉が何を指すのか結構曖昧です。 サービスは簡単にいうと手続きとか振る舞いのことですが、細かくいうと、PofEAAでいうサービスと、DDDいうサービスは、目的が異なります。前者はアプリケーションのためにドメインモデルを再利用可能にするためのものです。後者はドメインの知識を表している振る舞いです。これはのちほど詳しく説明します。 まぁこのあたりは具体例がないと理解しがたいですが、レイヤーの違いによって責務が異なるという感じです。DDDのサービスの章では、サービスには、アプリケーション層、ドメイン層、インフラストラクチャ層と、複数のレイヤーに存在すると言及されていま

    混乱しがちなサービスという概念について - かとじゅんの技術日誌
    Aoino
    Aoino 2018/04/11
  • Meetupにログイン | Meetup

    まだMeetupのメンバーになっていない方は、ぜひログインしてください。オンラインまたは対面イベントを近隣で開催するグループを見つけて、興味や関心を共有する人と出会いましょう。

    Meetupにログイン | Meetup
    Aoino
    Aoino 2018/03/13
  • Homebrewでインストールされる/usr/local/bin/pythonが再びPython2に変更

    B! 199 0 68 0 先日Homebrewのパッケージの改変が行われ、pythonというFormulaはPython3をインストールするようになり、 /usr/local/bin/pythonpython3へのリンクになっていました。 これがまた変更され、 /usr/local/bin/pythonpython2へのリンクに戻されました。 python2 to python3 PEP 394 – The “python” Command on Unix-Like Systems 現在の状況 python3をpythonで呼びたい場合 Homebrewチームの暴走感 python2 to python3 1.5.0 — Homebrew 以前から予告されていたこととして、3月に入った時に Homebrewのpython Formulaがpython3をインストールするようになりまし

    Homebrewでインストールされる/usr/local/bin/pythonが再びPython2に変更
    Aoino
    Aoino 2018/03/12
  • Gist Syntax Themes

    Aoino
    Aoino 2018/03/10
  • 掛谷問題 ~線分を回せる面積最小の図形を求めて~ - Corollaryは必然に。

    この記事は、日曜数学Advent Calender 2016の22日目の記事です。 21日目の記事はみずすまし(nosiika)さんの「正方形+正方形=正方形の話」です。 中学生のときに見つけたピタゴラス数(3,4,5)(5,12,13)(7,24,25)(9,40,41)…にあんな性質があったなんて…! イントロダクション 今回、私が紹介するのは「掛谷(かけや)問題」についてです*1。 掛谷問題(1916)長さ1の線分を領域内で1回転させることのできる図形のうち、面積が最小の図形は何か? この問題、知らない方はちょっと考えてみてください。 名前にあるとおり、日数学者、掛谷宗一(1886 - 1947)が1916年の11月にこの問題を考え([2]より)、1917年に提出した問題です。そして、2016年12月にこの事実を知った私はこう思ったのです。 うおお!100周年だぁ!! 書きたいな

    掛谷問題 ~線分を回せる面積最小の図形を求めて~ - Corollaryは必然に。
    Aoino
    Aoino 2018/02/18
  • ActiveRecordの複数形処理 - OVERT MEMO

    ActiveRecordは要素クラスの名前を複数形に変えてテーブル名としてくれるのですが、なんだか不思議な感じがします。 # Users テーブルへアクセス class User < ActiveRecord::Base end # People テーブルへアクセス class Person < ActiveRecord::Base end Usersはわかるのですが、なぜPersonsにならないのだろう? 正体はActiveSupportに含まれるInflector(active_support/inflector.rb)にありました。ここには英文用の各種変換が含まれ、Inflector.pluralize(word)で複数形に変換できます。 そして重要なのがactive_support/inflections.rbです。Inflector定義の最後で読み込まれているのですが、ここに実際

    ActiveRecordの複数形処理 - OVERT MEMO
    Aoino
    Aoino 2018/02/12
  • RedisのLuaスクリプティング機能について – Rest Term

    the Lua interpreter built into Redis 僕のRedisについての知識はv2.2くらいで止まっていたので、それ以降のRedisに備わった機能を調べているんですけど、その中でもv2.6からサポートされたLuaスクリプト実行環境について今回は整理します。 技術Wikiの方にもRedisについてのメモを残しています。 * Redis – Tech Note 環境 CentOS 5.8 (x86_64) Redis 2.6.10 (malloc=jemalloc-3.2.0 bits=64) Pythonクライアント (redis-py 2.7.2) ※ Redis 2.6で利用できるLuaのバージョンは5.1です。 Lua言語について Lua – Wikipediaによると、 Lua は、C言語のホストプログラムに組み込まれることを目的に設計されており、高速な動作

    RedisのLuaスクリプティング機能について – Rest Term
    Aoino
    Aoino 2018/01/19
  • チャットワークのID生成器 - Chatwork Creator's Note

    2018/3/18 追記 TISさんのreactive system meetupで発表する機会をいただきました。ありがとうございます。発表資料をリンクしておきます。 Distributed ID generator in ChatWork from TanUkkii 18桁になったメッセージID 2017年5月28日をもってチャットワークのメッセージIDは10桁から18桁になりました。みなさんお気づきでしたか? これはメッセージリンクを取得してみることで確認できます。 それまでは32bitでかつ連番のIDでした。今は64bitになり、また単調増加性だけを保証し、連番ではなくなっています。 この記事では新メッセージIDとそれを発行するシステムについて記述します。 枯渇しそうだったメッセージID チャットワークのメッセージ数は2017年3月時点で18億を突破しました。 lp.chatwork

    Aoino
    Aoino 2018/01/18
  • Haskellライブラリ所感2016 - syocy’s diary

    (これは Haskell Advent Calendar 2016 の7日目の記事です) 今年使ったり調べたりした Haskell ライブラリを広く紹介していく企画です。 あくまで今年使ったものなので新しいものばかりではないです。 また記事の性質上、紹介するものが偏っていてもご容赦ください。 Hackage にはすごい数のライブラリが登録されていて、 頼もしいことですが目が回りそうにもなってしまいます。 この記事が Haskell のライブラリを調べる上での指針になったら幸いです。 なおこの企画と方向性が似ているものとして State of the Haskell ecosystem ( 2016年2月版 ) があります(英語)。 これは Haskell を取り巻く環境を知る上で非常によいドキュメントです。 ただ各ライブラリについては名前を挙げるだけにとどめられています。 この記事ではもう

    Haskellライブラリ所感2016 - syocy’s diary
    Aoino
    Aoino 2018/01/11
  • 「無理しない」ってもしかして無理なんじゃないの - きみのお祭り

    「無理しないで」と、今月何回他人に言ったっけ。秋だからか、体調を崩したり精神状態を崩したりする人の多いことこの上ない。みんなやんごとない事情のひとつやふたつを抱えている。 人間やたら無理をしがちだ。それもけっこうな頻度でけっこうな強度の無理をしがちなのだ。ハイパー忙しいモードから脱しているときは「どうしてそんなに頑張るわけ?」と無理をしている人を見て首を傾げたくなるが、ハイパー忙しいモードの渦中にいるときは自分の体調を感じている暇があったら手と頭を動かせという感じなので、無理をしてしまう気持ちも分かりはするのだけど。しかも、そんなときに「無理しないで」なんて言われると、優しさと分かっていながら「じゃあどうしろというのか」「わたしだって好きでこうなってるわけじゃない」という反発心が生まれることすらある。こういう状態は完全に赤信号だ。いますぐ野菜たっぷりのあたたかいスープべさせて、空調が完

    「無理しない」ってもしかして無理なんじゃないの - きみのお祭り
    Aoino
    Aoino 2018/01/11
  • Binary Compatibility for library authors

    By Jacob Wang Introduction A diverse and comprehensive set of libraries is important to any productive software ecosystem. While it is easy to develop and distribute Scala libraries, good library authorship goes beyond just writing code and publishing it. In this guide, we will cover the important topic of Binary Compatibility: How binary incompatibility can cause production failures in your appli

    Aoino
    Aoino 2018/01/10
  • Treasure Workflow for ビギナー ~digファイル書き方編~ - Secret Ninja Blog

    前回は、Treasure Workflowを扱う前のPC環境のセットアップをしました。 secret-ninja.hatenablog.com Treasure Workflowでは処理のワークフローを設定するために、.digという拡張子をつけたファイルを作成します。 今回はこのdigファイルの書き方を説明します。 タスクとオペレータについて digファイルには大きく分けて、タスクとオペレータの2種類とパラメータを使って記述をします。 下記の例でいうと、 +XXXX:と記載をしているのがタスクです。タスクは、1つの処理単位を表します。このタスクを直列に並べたり、階段的に配置することでタスクに依存関係を持たせることができます。 XXXX>:と書いてあるのがオペレータです。オペレータは処理内容を表します。オペレータの一覧はこちらにて参照可能です。また一つのタスクには1つのオペレータが基的には

    Treasure Workflow for ビギナー ~digファイル書き方編~ - Secret Ninja Blog
    Aoino
    Aoino 2018/01/09
  • Treasure Workflow for ビギナー 環境構築編 - Secret Ninja Blog

    Treasure Workflowでなにができるか? TreasureDataには、Treasure Workflowという機能があります。 これで何が実現できるか、というと データのインポートを実施したあとに、SQL Aを実行させて、その後にSQL Bを実行させる。という一連の流れをスケジュール化させることや、 SQL A が完了したら SQL BとSQL Cは並列に実行させて、その後SQL Dを実行し、その結果をAWS S3の実行日の日付をパス名にして出力する などができます。 つまり従来、TreasureDataではできなかった、処理の一連の依存関係を記述し、なおかつそれをスケジューリングすることができるようになります。 これは便利ですね。 補足: Treasure Workflowはサービス名となっており、内部的に使われているソフトウェアとしてOSSで公開されているdigdagがあ

    Treasure Workflow for ビギナー 環境構築編 - Secret Ninja Blog
    Aoino
    Aoino 2018/01/09
  • Monads are just monoids in the category of endofunctors

    tl;dr: I explain the mathematical background of a joke-explanation of monads. Contains lots of math and a hasty introduction to category theory. There is a running gag in the programming community, that newcomers will often be confused by the concept of monads (which is how sequential computations are modeled in purely functional languages) and getting the explanation “it is simple, really: Monads

    Aoino
    Aoino 2018/01/09
  • Snowflake形式のIDを採用した場合の苦労ポイント - yoskhdia’s diary

    高速にIDを採番できる仕組みを検討したとき、Snowflake形式のID生成は選択肢のひとつとして有力です。 Snowflakeを紹介する記事は見つかりますが、実際に採用して苦労した話はあまり聞かないため、備忘的に書いてみるエントリです。 Snowflakeとは 1つのIDは64bitScalaではLong型)に収まり、ID採番サービスを複数のデータセンターに分散可能かつ高速に採番可能に設計されたID生成の方式です。 先頭ビットにタイムスタンプを持つため、順序があることも特徴のひとつです。 Twitter社がオリジナルの考案者です。*1 github.com カヤック社からSnowflake形式でID生成可能なKatsubushiというオープンソースのソフトウェアがGithubで公開されています。 発表スライドも参考になります。 github.com 他のID生成方式 他にはDBのシーケ

    Snowflake形式のIDを採用した場合の苦労ポイント - yoskhdia’s diary
    Aoino
    Aoino 2018/01/06
  • 複合UNIQUEキーでも「INSERT ... ON DUPLICATE KEY UPDATE」構文は使える - 岩本隆史の日記帳(アーカイブ)

    MySQLには「INSERT ... ON DUPLICATE KEY UPDATE」という便利な構文がある。INSERTの内容がUNIQUE制約に引っかかる場合に指定カラムの値をUPDATEしてくれるものだ。 この構文について「複合UNIQUEキーの場合には使えない」とする記事を見た。 注意点としては、複合UNIQUEキーを指定しているテーブルでは(column2とcolumn1の組でUNIQUEなど)、 UPDATE文が複数レコードにマッチする可能性がありますので、UNIQUEキー制約が単一カラムにしかないテーブルでのみ使用します。内部的に実行されるUPDATE文のWHERE節がUNIQUEキーのORで判定するためです。(WHERE column1=’’ OR column2=’’)複合UNIQUEキー制約があるテーブルに対しては、次のREPLACE構文が使えます。 http://ww

    複合UNIQUEキーでも「INSERT ... ON DUPLICATE KEY UPDATE」構文は使える - 岩本隆史の日記帳(アーカイブ)
    Aoino
    Aoino 2017/12/15
  • Effective Aggregate Design by Vaughn Vernon

    Aggregates are one of the more challenging aspects of tactical modeling. Developers often end up with large clusters of objects that do not give good performance and scalability. In this three-part series, Vaughn Vernon walks through some common design pitfalls, discusses the pros and cons of various aggregate modeling choices, and provides rules of thumb to guide modeling of aggregates. He de-emp

    Effective Aggregate Design by Vaughn Vernon
    Aoino
    Aoino 2017/12/14
  • 「元グーグル」という肩書はいつか外したい――及川卓也さんが考える、日本の「残念なIT」からの脱出法 | HRナビ by リクルート

    DEC(デジタル・イクイップメント・コーポレーション)・マイクロソフト・グーグルと、時代を築いた外資系IT企業を渡り歩いた及川卓也さん。マイクロソフトではWindows NT、グーグル時代にはGoogle日本語入力Chrome OSなどのプロダクトに、エンジニアリングマネージャーとして携わっている。 今年5月にプログラマー向けの技術情報共有サービス「Qiita(キータ)」を運営するインクリメンツを経て、今年6月に独立。現在は、国内人材紹介大手のクライス&カンパニーの顧問に就任し、CTO・IT技術人材の採用支援や組織変革活動に力を入れている。そんな及川さんに、「日ITをどう見ているのか」という観点から話をお聞きした。 日IT産業はどこが残念なのか? ――組織変革やIT活用という面で、しばしば「残念」と評価されてしまうこともある日IT産業ですが、いわゆる外資大手IT企業での経験を

    「元グーグル」という肩書はいつか外したい――及川卓也さんが考える、日本の「残念なIT」からの脱出法 | HRナビ by リクルート
    Aoino
    Aoino 2017/12/01
  • Try はモナドじゃない - tkawachi Blog

    Principles of Reactive Programming 最初週の講義で言ってたこと。 忘れそうなのでメモ。 モナドであるためにはモナド則を満たさねばならない。 モナド則は以下の3つ。 Associativity: (m flatMap f) flatMap g == m flatMap (x => f(x) flatMap g) Left unit: unit(x) flatMap f == f(x) Right unit: m flatMap unit == m ちなみにすごいHaskellでモナド則は次のように書かれている。 結合法則: (m >>= f) >>= g と m >>= (\x -> f x >>= g) が等価 左恒等性: return x >>= f と f x が等価 右恒等性: m >>= return と m が等価 flatMap を >>=

    Aoino
    Aoino 2017/11/27
  • Scala用のDIライブラリAirframeを試してみた - たけぞう瀕死ブログ

    ScalaではJavaと違ってDIコンテナの必要性を感じることがあまりないのですが、フレームワークを作っているとユーザコードにフレームワークが提供するコンポーネントを供給したり、フレームワーク自体を拡張するための拡張ポイントを提供するためにDIコンテナ的なものを使いたいというケースがあったりします。 PlayではGoogle Guiceが導入されていますが、もう少し簡潔でScalaらしいDIコンテナはないものかと思っていたところ@taroleoさんがAirframeというライブラリを開発されていたのを思い出したので試してみました。 github.com 基的にはフィールドインジェクションぽい感じで、DIするフィールドを以下のように宣言しておきます。 import wvlet.airframe._ class AccountController { val accountService =

    Scala用のDIライブラリAirframeを試してみた - たけぞう瀕死ブログ
    Aoino
    Aoino 2017/11/27