Aoinoのブックマーク (582)

  • プログラマーのための圏論(上) - bitterharvest’s diary

    『プログラマのための圏論』はこれまでの分をまとめてPDFファイルにしました。参考にしてください。

    プログラマーのための圏論(上) - bitterharvest’s diary
    Aoino
    Aoino 2017/11/25
  • なぜ git rebase をやめるべきか - Frasco

    Git での開発を数年間経験した後、徐々に日々の仕事の一部として、より高度な Git コマンドを使うようになりました。私は Git rebase を見つけてすぐにそれを毎日の仕事に使いました。リベースに精通している人は、どれだけ強力で魅力的なツールであるのか知っているでしょう。しかし、リベースには、初めてリベースを触ったときにはわからなかったのですが、いくつかの課題があることに気が付きました。これを説明する前に、マージとリベースの違いをおさらいしておきましょう。 最初に、feature ブランチを master にマージする例を考えてみましょう。マージすることにより、新しいマージコミット g を作成します。下のコミットグラフではマージした際に何が起こるのかを説明しています。また、開発が盛んなリポジトリでよく見かける「線路」のようなグラフになっているのが見て取れるでしょう。 マージの例 ある

    なぜ git rebase をやめるべきか - Frasco
    Aoino
    Aoino 2017/11/24
  • Scala Futures vs Monix Tasks – Beyond the lines

    In this previous post we saw how Scala Futures work and why they need an implicit ExecutionContext to run their computation. While there is some trick to pass the ExecutionContext, it’s usually cumbersome and clutter the code. So the question really is: Do you need an ExecutionContext everywhere? Well, you do as long as you use Futures, but is there any alternatives? Future’s limitations Let’s tak

    Aoino
    Aoino 2017/11/24
  • スケーラブルな採番とsnowflake — Kyrt Blog

    snowflake は、Twitter 社が作成した、ユニークなID生成のネットワークサービスです。いくつかの簡単な保証で高いスケーラビリティを実現しています。Twitter 社が、MySQLから Cassandra に移行するにあたって、Cassandra にシーケンシャルな id 生成の仕組みが無かったことから作成したそうです。 snowflake についてはTwitter IDs, JSON and Snowflakeに書いてあります。 snowflake のコードは、Apache License, Version 2.0 でSnowflakeに公開されています。 スケーラブルな採番、背景的な話 Cloudでスケーラビリティのあるサービスを見据えてコードを書いていると採番に関する問題が必ず出てきます。従来、RDBの自動採番などに頼っていたのがコスト、スケーラビリティ、耐障害性の観点か

    スケーラブルな採番とsnowflake — Kyrt Blog
    Aoino
    Aoino 2017/11/24
  • Scalaを用いて分散IDワーカを実装する | チャットワーククリエーターズブログ

    お久しぶりです。かとじゅん(@j5ik2o)です。さて、僕は、ChatWorkに入社しても、相変わらず Scala や DDD を実践しているわけですが、今回は少し毛色が違う話をしたいと思います。先日、ChatWork Advent Calendar 2014 15日目の記事で、安達くんが、ID生成器の話を書いてくれたので、せっかくなので、ChatWork Advent Calendar 2014 23日目の記事として、Scala版も説明してみようかと思います。 PHPでID生成器を実装してみました | チャットワーククリエーターズブログ DBのシーケンスによるID生成ウェブサービスでは、時系列データを扱うことはよくありますが、タイムスタンプベースでユニークなIDを利用したいことがあります。方法論はいくつかありますが、お手軽なID生成といえば、DBのシーケンスを使ったものです。しかしながら

    Scalaを用いて分散IDワーカを実装する | チャットワーククリエーターズブログ
    Aoino
    Aoino 2017/11/24
  • 再帰のパターン - maoeのブログ

    Fun of Programming (Cornerstones of Computing)の3章「Origami programming」の冒頭にはこんな事が書かれている。 One style of functional programming is based purely on recursive equations. Such equations are easy to explain, and adequate for any computational purpose, but hard tu use well as programs get bigger and more complicated. In a sense, recursive equations are the 'assembly language' of functional programming, and

    再帰のパターン - maoeのブログ
    Aoino
    Aoino 2017/11/22
  • 存在チェックINSERT文 重複行を挿入しない方法 | ScrapEngineer

    データを登録する時に同一のデータがある場合は挿入したくないって時に使えるSQL。 同一のデータが入っている場合エラーが出たりで困ります。 これを使用すれば同一行は挿入しないようにしてくれます。 説明用サンプルテーブル CREATE TABLE IF NOT EXISTS `M_USER` ( `MAIL_ADDRESS` varchar(50) DEFAULT NULL COMMENT 'メールアドレス', `PASSWORD` varchar(50) DEFAULT NULL COMMENT 'パスワード', PRIMARY KEY (`MAIL_ADDRESS`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='ユーザマスタ' AUTO_INCREMENT=1 ; 通常のSQL INSERT INTO M_USER VALUES ('hoge

    存在チェックINSERT文 重複行を挿入しない方法 | ScrapEngineer
    Aoino
    Aoino 2017/11/22
  • 【Javaの仕様が決まるとき】JSRの歩き方(基本編)

    はじめに Javaでのプログラミング、特にJava EEを用いたコーディングとかをしていると、 僕は「あれこれってどういう仕様なんだろう」ってなることが結構あります。 僕「なんか良い無いですか?」 某氏「JSR読め」 ほほーそっか。仕様そのもの読んじゃえば間違いはないよな、と。 だがしかし、読み方がよく分からない!っていうか仕様ってどうやって決まってるの? Java公開されてるの? …とかそういう僕はレベルだったので、これを期に、Javaの仕様である(定義間違ってたら教えて下さい) JSRあるの読み方を調べてまとめてみようかなというお話です。 調べたっていうレベルですので、間違ってたり表現が適切で無い場合は、 どこかでご指摘ください。 基的な用語 ・JSR Java Specification Request。Java仕様要求。つまりJavaの仕様です。 ・JCP Java標準化機関J

    【Javaの仕様が決まるとき】JSRの歩き方(基本編)
    Aoino
    Aoino 2017/11/18
  • 知らなくても困らない Javaクラスのバイトコードの読み方 - A Memorandum

    クラスファイルの中身 クラスファイルの構造 javap コマンド javap 出力の概要 型とメソッドの読み方 オペランドスタック コンストラクタの実行 加算メソッド invoke 系命令 条件判断 for ループ まとめ 普段使いでは困ることはないですが、昨今はバイトコードマニピュレーションによる黒魔術が謳歌しているため、知っていると役に立つ場合もあるバイトコードの最低限の読み方を説明します。 クラスファイルの中身 以下のような簡単なソースコードを考えましょう。 public class Class1 { public int add(int x, int y) { return x + y; } } このソースコードをコンパイルして作成された Class1.class の中身のダンプを見てみます。 $ hexdump -C Class1.class 00000000 ca fe ba

    知らなくても困らない Javaクラスのバイトコードの読み方 - A Memorandum
    Aoino
    Aoino 2017/11/15
  • ScalaIO 2017に参加してきました - たけぞう瀕死ブログ

    11月2日、3日にフランスのリヨンで開催されたScalaIO 2017にスピーカーとして参加してきました。このエントリでは参加したセッションの中から印象に残ったものを紹介したいと思います。 Compiling like a boss! Scalaで分散コンパイルによるコンパイル速度の高速化を実現するHydraのセッション。事前のスケジュールではTriplequoteのお二方でのトークとなっていましたが、Iulianさんは不在でMircoさん単独でのトークでした。 ScalaDaysでのセッションとほとんど同じ内容だったと思いますが、今回のプレゼンテーションではIntelliJでのサポートが利用可能になる、Hydraのモニタリングが可能になるという2点のアップデートがありました。以下のスライドは今年のScalaDaysで使用したもののようですが、上記二点のアップデート以外は今回も同じ内容のも

    ScalaIO 2017に参加してきました - たけぞう瀕死ブログ
    Aoino
    Aoino 2017/11/15
  • [ 技術講座 ] Domain-Driven Designのエッセンス 第2回|オブジェクトの広場

    DDD難民に捧げる Domain-Driven Designのエッセンス 第2回 DDDの基礎と実践 株式会社オージス総研 アドバンストモデリングソリューション部 佐藤 匡剛 Domain-Driven Design Tackling Complexity in the Heart of Software Eric Evans 著 Addison-Wesley, 59.99ドル 560ページ ISBN: 0-321-12521-5 連載は、全3回の予定でEric Evansの書籍『Domain-Driven Design』(以降DDD)を紹介しています。前回はDDDの概要を説明し、第I部「Putting the Domain Model to Work」からDDDの基原則となる3つのパターンを紹介しました。今回は続く第II部と第III部から、(アンチパターンを1つ含む)16のDDDパタ

    Aoino
    Aoino 2017/11/10
  • Nintendo Switchの中ではReactが動いてる!Nintendo eShop開発秘話を聞いてきた

    Nintendo Switchの中ではReactが動いてる!Nintendo eShop開発秘話を聞いてきた 白石 俊平(HTML5 Experts.jp編集長) こんにちは、編集長の白石です。 この記事は、9月24日に開催されたHTML5 Conference 2017に登壇したエキスパートに、お話されたセッションのトピックを中心に語っていただこうとういものです。セッションの内容をより深く理解する手助けになるだけでなく、記事単体でも面白く読んでいただけることを目指しています。 今回は、「Nintendo SwitchとWeb」という講演をされていた任天堂さんに、Switch開発におけるWeb技術の活用方法や、開発秘話を伺ってきました。任天堂のお二人は京都から、リモートでの取材に応じていただきました。 Nintendo SwitchではWeb技術が大活躍! 白石 簡単に自己紹介をお願いで

    Nintendo Switchの中ではReactが動いてる!Nintendo eShop開発秘話を聞いてきた
    Aoino
    Aoino 2017/11/07
  • Online Courses - Learn Anything, On Your Schedule | Udemy

    Aoino
    Aoino 2017/11/06
  • 「プログラミングの常識」を時々見直す必要性について|Rui Ueyama

    自分の中のプログラミングの常識というものは、ときどき現実のハードウェアに合わせて調節しないといけない。ハードウェアが進歩し続けているので、コンピュータで簡単にできることと相対的に難しいことのバランスが変化し続けているからだ。ここでは特にストレージにフォーカスして書こうと思う。 昔はメモリが相対的にとても貴重な資源だったので多くのプログラマがメモリを節約することに血道を上げていた。例えばWindowsの初期の頃に設計されたデータ構造には、メモリをバイト単位ででもいいから節約したいという意図の痕跡がいまでも多く見受けられる。DRAMの次に速い記憶装置はHDDだったので、メモリが足りなくなればHDDにデータを保存せざるを得ないのだが、DRAMとHDDのランダムアクセスの速度差は、机の上のの開いているページを見るのと、そのAmazonで注文して到着するのを待つのと同じくらいのスケールで違うの

    「プログラミングの常識」を時々見直す必要性について|Rui Ueyama
    Aoino
    Aoino 2017/11/02
  • AWS-CloudDesignPattern CDP2.0候補

    AWSクラウドデザインパターンとは? AWSクラウドデザインパターン (AWS Cloud Design Pattern, 略してCDPと呼ぶ)とは、AWSクラウドを使ったシステムアーキテクチャ設計を行う際に発生する、典型的な問題とそれに対する解決策・設計方法を、分かりやすく分類して、ノウハウとして利用できるように整理したものである。 これまで多くのクラウドアーキテクト達が発見してきた、もしくは編み出しきた設計・運用のノウハウのうち、クラウド上で利用が可能なものをクラウドデザインのパターンという形式で一覧化し、暗黙知から形式知に変換したものであるといえる。 パターンの中には、クラウドでなくても実現できるもの、今まででも実現されていたものも含まれているが、クラウド上でも今まで通りのアーキテクチャが実現でき、かつクラウドを利用する事で、より安価にそしてより容易に実現できるものは、CDPとして収

    Aoino
    Aoino 2017/11/01
  • 実行中プログラムのイメージを得る - tmtms のメモ

    Twitter見てたらこんなこと言ってる人がいました。 Unix で実行中の実行ファイルのパスを確実に得る方法はない、というのは FAQ だと思うけど、実際にやりたいことは自分自身を別プロセスで新たに立ち上げたいということなので、メモリにロード済の自分自身から別プロセスを作る手段はないんだろうか— Yusuke Endoh (@mametter) 2017年10月25日 昔自分もそんなこと考えたなーと思いつつ、Linuxなら /proc/<pid>/exe が実行ファイルへのリンクになってるんで、 環境によるような気もするけど、自分の実行ファイルのパスは /proc/pid/exe から取れないですかね。— とみたまさひろ (@tmtms) 2017年10月25日 と言ってみたら、 Linuxならその手が使えますが、現在実行中の実行ファイルでも削除できちゃいますから、パス名を得る完璧な方法

    実行中プログラムのイメージを得る - tmtms のメモ
    Aoino
    Aoino 2017/10/27
  • さよならクックパッド

    先日、「記事を読みました!」と旧知の町田龍馬さんから連絡がありました。「現在開発中のビジネスモデルに関して、一度ご意見をいただきたい」とのことで、さっそく業(編集業)の合間、平日のランチタイムを利用して会いました。実に4年半ぶりの再会です。 町田さんのビジネスは、いわゆる「民泊(空き部屋に有料で旅行者を宿泊させる)」の代行業務です。彼の経営する「Zens株式会社(ゼンス)」は2013年9月の創業。米サンフランシスコまで行ってAirbnb共同創業者にプレゼンをして、その後も日に招き接待するなど、町田さんの行動力はハンパないです。今や社員とスタッフを合わせ49名の大所帯で、2015年12月には『Airbnb空室物件活用術』というも出してます。「しばらく会わないうちに、立派になったなぁ」と、1987年生まれの町田さんを目の前に、親戚のオジサンになった気分でした(笑)。 相談内容は何だったか

    さよならクックパッド
    Aoino
    Aoino 2017/10/26
  • English has been my pain for 15 years - <antirez>

    Paul Graham managed to put a very important question, the one of the English language as a requirement for IT workers, in the attention zone of news sites and software developers [1]. It was a controversial matter as he referred to "foreign accents" and the internet is full of people that are just waiting to overreact, but this is the least interesting part of the question, so I'll skip that part.

    Aoino
    Aoino 2017/10/26
  • ステートマシン猛レース - モナドとわたしとコモナド

    ストリーム処理ライブラリはHaskellにおいて競争の激しい分野の一つだ。ストリーム処理ライブラリとは大雑把に言うと、IOなどの作用を絡めながら値の列(ストリーム)を生成したり、処理したりする構造を提供するライブラリである。多くのライブラリは、以下の3種の構造を定義している。 生産者(プロデューサー): IOなどのアクションを伴いつつ値を生成する。 消費者(コンシューマー): 多くの場合モナド変換子になっており、await :: Consumer s m sのようなアクションを組み合わせ、値の列を処理するプログラムを書ける。 変換者(トランスデューサー): 入力を受け取りながら、出力もできる。 生産者と消費者が変換者の特殊な場合であるものも多い。 今回は、基中の基とも言える操作であるスキャンの速さを調べる。scan (+) 0は入力ストリーム[0,1,2,3, ...]を出力[0,1,

    ステートマシン猛レース - モナドとわたしとコモナド
    Aoino
    Aoino 2017/10/26
  • JSR 330を実装してみた — 裏紙

    JSR 330はDIの仕様です。 参照実装はGuiceです。 http://jcp.org/en/jsr/detail?id=330 仕様は薄いしTCKもあるので実装してみました。 https://github.com/backpaper0/radishtainer まあ何とかTCK通しただけですががが。 JSR 330の仕様では@Injectで注釈しているメソッドがインジェクション対象となりますが、サブクラスでオーバーライドされており、オーバーライドされたそのメソッドが@Injectで注釈されていなければインジェクション対象とはなりません。 で、メソッドがスーパークラスのメソッドをオーバーライドしているのかどうかはリフレクションで取得できるだろー、と思ってたけどできませんでした。 んで、スーパークラスに同じシグネチャのメソッドがあればオーバーライドしていると判断してええじゃろ、と思ってた

    Aoino
    Aoino 2017/10/25