タグ

ブックマーク / takezoe.hatenablog.com (57)

  • GoogleのMachine Learning Crash Courseをやってみた - たけぞう瀕死ブログ

    少し前にGoogleが社内教育用のコンテンツとして使用しているというMachine Learning Crash Courseが公開されていました。PredictionIOのコミッタをやっていながら機械学習はほぼ素人というのもどうかと思っていたこともあり、社内で毎日1時間ずつこの講座を進めてみることにしました。 developers.google.com 15時間で終わるということになっていますが、英語の動画やテキストの理解に時間がかかってしまい、最終的には40時間くらいかかってしまったものの、なんとか完走することができました。機械学習やディープラーニングの基礎について25のレッスンがあり、それぞれのレッスンは以下のコンテンツから構成されています。 動画による概要の解説 より詳細な内容を説明したテキスト ブラウザ上でビジュアルな実験が可能なプレイグラウンド ノートブックを使用したプログラミ

    GoogleのMachine Learning Crash Courseをやってみた - たけぞう瀕死ブログ
  • 最終兵器トラックポイント付きメカニカルキーボード「TEX Yoda II」レビュー - たけぞう瀕死ブログ

    最終兵器「TEX Yoda II」 初代を買い逃してから早数年、2代目が発表され入手できる日を心待ちにしていたのですが、先日ようやくゲットすることができました。数日使ってみてのレビューです。 ついに最強のトラックポイントを入手した。 pic.twitter.com/79WaHfi6ME— Naoki Takezoe (@takezoen) 2018年3月8日 Massdropで組み立てキットも販売されていましたが、面倒なので以下のサイトから赤軸、バックライトなしの組み立て済みモデルをオーダーしました。到着まで3週間ほどかかりました。また、関税がかかったため受け取り時に支払いが必要でした(送付先を会社にしていたので社で怒られが発生した)。 mechanicalkeyboards.com 触ってみてまず感じたのはトラックポイントの感度が良すぎるということです。スイッチの高さの分、家Think

    最終兵器トラックポイント付きメカニカルキーボード「TEX Yoda II」レビュー - たけぞう瀕死ブログ
  • GitBucketに見る長期的なメンテナンスの必要なScalaアプリケーションにおいてScalaのバージョンアップのために留意しておくべきこと - たけぞう瀕死ブログ

    Scalaのバージョンアップはなぜ大変なのか? GitBucketはもうかれこれ5年近く開発を継続しており、Scalaのメジャーバージョンアップも何度か経験してきました。ScalaのバージョンアップはJavaと比べるとかなり苦労することが多いのですが、それはScalaのバージョンアップに伴うアプリケーションコードの修正よりも、むしろ以下の2点による部分が大きいのではないかと思います。 フレームワークやライブラリの仕様がアグレッシブに変わる Scalaのメジャーバージョン間でバイナリ互換性が保証されていない まず前者についてですが、これまでPlay FrameworkやSlickなど標準的なフレームワークやライブラリもかなり活発に仕様変更が行われてきました。フレームワークの開発が活発に行われているという状況はメリットも多い反面、後方互換性のない変更が多いとバージョンアップがつらいというデメリ

    GitBucketに見る長期的なメンテナンスの必要なScalaアプリケーションにおいてScalaのバージョンアップのために留意しておくべきこと - たけぞう瀕死ブログ
  • The Type Astronaut's Guide to Shapeless - たけぞう瀕死ブログ

    先日Scala eXchangeに参加して、海外での予想以上のShapelessの人気ぶりを目の当たりにしたのでちょっと勉強してみようと思い、Underscore社が提供している「The Type Astronaut's Guide to Shapeless」というを読んでみました。 Underscore社のWebサイトからは電子版を無料でダウンロードできますし、ペーパー版も有料でオーダーできます。また、ペーパー版はAmazonなどでも購入できます。 The Type Astronaut's Guide to Shapeless 作者:Gurnell, Dave発売日: 2017/05/04メディア: ペーパーバック ちなみにこのはオープンソースで原稿自体はGitHubで公開されています。 github.com Shapelessはケースクラスやシールドトレイトを使った列挙型で表現され

    The Type Astronaut's Guide to Shapeless - たけぞう瀕死ブログ
  • Akka HTTPでWebJarsとTwirlを使う - たけぞう瀕死ブログ

    仕事でちょっとしたツール(Webアプリ)を作るのに試しにAkka HTTPを使ってみています。Akka HTTPでJSONを使う方法については以前このブログでも紹介しましたが、 takezoe.hatenablog.com 今回はいわゆるHTMLを返すシンプルな作りの管理ツールなのでJavaScriptCSSライブラリはWebJarsで、HTMLのレンダリングはTwirlを使うようにしてみました。 WebJars ThoughtWorksのリポジトリにAkka HTTPでWebJarsを使うためのライブラリがありました。 github.com メンテが止まっているようですが、リポジトリ内のWebJarsSupportは現在のAkka HTTPでもそのまま利用できます。実装としては非常にシンプルで、webjars-locatorで取得したクラスパス内のリソースをgetFromResourc

    Akka HTTPでWebJarsとTwirlを使う - たけぞう瀕死ブログ
  • 最強のMarkdown編集環境としてのAtom - たけぞう瀕死ブログ

    ブログなどちょっとした文章の編集から書籍の執筆までMarkdownを活用しています。これまで試した各種テキストエディタのMarkdown編集支援機能や、Markdown編集専用のツールはどれも満足の行くものではなかったのですが、最近はAtomに以下のようなパッケージを入れた環境が理想に近いMarkdown編集環境を得ることができました。 少し前にエンジニアHubさんで各社のエンジニアの方がオススメのAtomパッケージを紹介するという企画記事があり、私もMarkdown関連のパッケージを紹介させていただいたのですが、この記事では各パッケージを簡単にしか紹介できなかったので、ここでは少し詳しく紹介したいと思います。 employment.en-japan.com document-outline atom.io サイドバーにMarkdownの見出しをツリー状に表示してくれるパッケージです。書籍

    最強のMarkdown編集環境としてのAtom - たけぞう瀕死ブログ
  • 最強のGitフロントエンドはForkかもしれない - たけぞう瀕死ブログ

    昨日Macで使えるGitフロントエンドの紹介を書いたところ、友人のPishenさんからForkというツールもあることを教えていただきました。 How about https://t.co/fDZq7jzQoo ?— Pishen Tsai (@pishen) 2017年8月30日 Webサイトはこちら。現時点ではMac版(動作にはMacOS X 10.11以降が必要)のみですが、Windows版も提供予定のようです。 git-fork.com リリースノートを見ると昨年から開発されていたようですが、完全にノーマークだったので早速試してみました。 1ウィンドウで複数リポジトリをタブ切り替えで操作できる ブランチの状況も把握しやすい履歴ビュー(見た目的にはSourceTreeに近い) コミット時点のファイルツリーを確認できる 動作は軽快(ただし安定度についてはまだ不明) ターミナルから起動する

    最強のGitフロントエンドはForkかもしれない - たけぞう瀕死ブログ
  • Idris + Atomによる型駆動開発入門 - たけぞう瀕死ブログ

    4月から社内でType-Driven Development with Idrisの読書会をやっています。 takezoe.hatenablog.com 最近ようやくChapter 3まで進み、実際に自分でコードを書くエクササイズなども出てきました。このではAtomを使うことが推奨されているのですが、Atom用のIdrisパッケージが非常に強力で、型駆動開発の魅力を存分に感じることができます。そこで、今回は実際にAtomでのIdrisプログラミングがどのようなものかについて紹介したいと思います。 github.com たとえば以下のようなシグネチャを持つVect(要素数を型情報に持つリスト)用のマップ関数を実装するとします。Vect n aの各要素に(a -> b)という関数を適用してVect n bを返すというものです。 my_vect_map : (a -> b) -> Vect n

    Idris + Atomによる型駆動開発入門 - たけぞう瀕死ブログ
  • MozillaのスクレイピングフレームワークFathomを試してみる - たけぞう瀕死ブログ

    こちらのOSDNの記事で知ったのですが、MozillaでFathomというJavaScript用のスクレイピングフレームワークを開発しているようです。仕事でクローラーを作ったりしていたこともあり、面白そうだと思ったので軽く調べてみました。 mag.osdn.jp 以下のGitHubリポジトリで開発されています。GitHub Pagesに詳しいドキュメントもあります。 github.com OSDNの記事で触れられている開発者のErik Rose氏のブログエントリはこちら。 hacks.mozilla.org ドキュメントやErikさんのブログエントリなどをざっと眺めてみたところ、それほど複雑なものではなく、ある程度曖昧なルールとスコアリングを定義しておき、最もスコアの高い要素の選択するというのが基的なコンセプトのようです。 なにはともあれ試してみます。まずは適当なディレクトリを掘り、np

    MozillaのスクレイピングフレームワークFathomを試してみる - たけぞう瀕死ブログ
  • Re-engineering Legacy Software - たけぞう瀕死ブログ

    クリスさんがManningで執筆された書籍です。少し前に購入していたのですが、きちんと読めていなかったので英語を読む練習を兼ねて読み直してみました。 Re-engineering Legacy Software 作者: Chris Birchall出版社/メーカー: Manning Pubns Co発売日: 2016/05/09メディア: ペーパーバックこの商品を含むブログを見る レガシーコードをいかに改善するかという、クリスさんの経験に基づく(?)現場感溢れる内容で、読んでいると勇気を与えられる反面、こちらの心まで痛くなってくる部分が多々ありますw もちろん全てのシチュエーションに当てはまるものでもないとは思いますが、リファクタリングの価値を説明する際のテクニックや、リファクタリングするかリライトするかの判断基準や実際の進め方、モノリシックなアプリケーションを分割する際のパターンやメ

    Re-engineering Legacy Software - たけぞう瀕死ブログ
  • JDBCレイヤでDBのシャーディングを行うsharding-jdbcを試してみた - たけぞう瀕死ブログ

    DBのデータ量が増えてきた場合の対策の1つとしてユーザIDなどをキーにデータベースを分割するシャーディングと呼ばれる手法があります。これをJDBCのレイヤで実現してしまうsharding-jdbcというライブラリを見つけました。 github.com sharding-jdbcは中国のdangdang(当当)というEC大手企業が開発したOSSで、SQLをパースし、SQLに含まれるシャードキーを抽出して接続先のデータベースや、参照するテーブルを切り替えてくれるというものです。 使ってみる まずはpom.xmlに以下の依存関係を追加します。 <dependency> <groupId>com.dangdang</groupId> <artifactId>sharding-jdbc-core</artifactId> <version>1.4.1</version> </dependency>

    JDBCレイヤでDBのシャーディングを行うsharding-jdbcを試してみた - たけぞう瀕死ブログ
  • マイクロサービスにレジリエンスをもたらすHystrixを試してみる - たけぞう瀕死ブログ

    github.com HystrixはNetflixが開発しているオープンソースのJavaライブラリで、主として分散システムにおけるサービス間のやり取りをラップして以下のような機能を提供します。 スレッドプールの分離 フォールバック、サーキットブレーカー タイムアウト キャッシュ モニタリング 例えば外部サービスに障害があり呼び出しがエラーになる場合や、処理に時間がかかった場合にフォールバック値を返すことで呼び出し元の処理を継続できたり、外部サービスの呼び出しでエラーが多発する場合は一時的に呼び出しをショートカットして呼び出し先の回復を待ったりといった制御を行うことができます。 マイクロサービスではあるサービスの障害や遅延が他のサービスに波及する危険性がありますが。このような仕組みをサービス間の通信に導入することでサービス全体のレジリエンスの向上が期待できます。 今回はHystrixの基

    マイクロサービスにレジリエンスをもたらすHystrixを試してみる - たけぞう瀕死ブログ
  • 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を試してみた - たけぞう瀕死ブログ
  • Scala Warriorをリリースしました - たけぞう瀕死ブログ

    昨年から密かに作り続けていたScala WarriorというWebアプリケーションをScala関西 Summit2016にあわせてリリースしました。 github.com これはRuby WarriorにインスパイアされたScala学習用のゲームで、Scalaコードを書いて侍を操作しステージをクリアしていくというものです。 実装にはScala.jsを活用しており、プレイヤーが入力したコードをScala.jsでJavaScriptにコンパイルし、それをクライアントにサイドに返却してブラウザ上で実行しています。エディタではCTRL+SPACEでコード補完、CTRL+Sでコンパイル結果の確認ができます。このあたりのコードはscala-js-fiddleを参考にさせていただきました。 とりあえず動くものをリリースしたというだけでステージ数も少ないのですが、今後少しずつ改善していければと思っています

    Scala Warriorをリリースしました - たけぞう瀕死ブログ
  • Twitter製の大規模ソフトウェア向けビルドツール「Pants」を試してみる - たけぞう瀕死ブログ

    PantsはTwitter社が開発した大規模ソフトウェア向けのビルドツールです。今年の5月に1.0がリリースされました。 github.com 主にPythonで書かれているようですが、JavaScalaPythonGolangのビルドに対応しており、Thriftのコード生成やMarkdownからのドキュメント生成などもサポートしているようです。 同種の大規模向けビルドツールにはGoogle製のBazelやFacebook製のBuckがあります。 github.com github.com いずれも元は社内用に開発されたツールがOSS化されたものですが、GoogleのBazelは2009年頃からGoogle社内で使われておりかなり歴史のあるツールのようです。 BuckやPantsはBazelを参考にしているようですが*1、BuckはAndroidアプリのビルドが高速だったり、Pant

    Twitter製の大規模ソフトウェア向けビルドツール「Pants」を試してみる - たけぞう瀕死ブログ
  • ThinkPadキーボード(の前モデル)こそ至高のキーボード - たけぞう瀕死ブログ

    結構前に会社の人にThinkPadキーボードの前モデル(55Y9024)を譲ってもらって職場のMacBookで使っているのですが、このキーボードが非常に使いやすいです。 レノボ・ジャパン ThinkPad USB トラックポイントキーボード(日語) 55Y9024 出版社/メーカー: Lenovo発売日: 2009/08/25メディア: Personal Computers購入: 23人 クリック: 680回この商品を含むブログ (40件) を見る 上記のAmazonの写真は英語配列ですが、自分が使っているのは日語配列のものです。 現行のThinkPadキーボードも使っていて自宅ではこちらを使っているのですが、以下のような違いがあります。 キータッチが良い(X201あたりのタッチを思い出します) ファンクションキーが押しやすい(4つ毎にスペースがあるので間違えにくい) Macでのトラッ

    ThinkPadキーボード(の前モデル)こそ至高のキーボード - たけぞう瀕死ブログ
  • Netflixのオープンソースソフトウェア - たけぞう瀕死ブログ

    ここのところHystrixについて調べていたのですが、Netflixは他にもGitHub上で様々なOSSを公開しています。 github.com Javaのものが中心ですがPythonGo、Cで書かれているものもあります。ライブラリ的なものからミドルウェアや運用ツールまで多岐に渡っており、NetflixAWSを利用しているということもありAWS上での利用に特化したものもあります。また各プロダクトのドキュメントもしっかりしており、以下のような専用のサイトも立ち上げられており、社内で開発したものを積極的にOSS化するという方針が伺えます。 netflix.github.io HystrixやEurekaなどを筆頭に有名なものも多いのですが、なにぶん数が多くどのようなものがあるのかを把握するのも割と一苦労な感じなのですが、Netflixでは自社のOSSを紹介するMeetupが継続的に開催され

    Netflixのオープンソースソフトウェア - たけぞう瀕死ブログ
  • 組み込みMySQLを使ったユニットテスト - たけぞう瀕死ブログ

    GitBucketがMySQL、PostgreSQL対応したのでマイグレーションのテストをMySQLやPostgreSQLで実行できるようにしたいなぁと思って方法を考えています。 テスト用のDBを立てたりDockerを使ったりするのが一般的な方法なのではないかと思いますが、Javaで利用可能な組み込みMySQLなんていうものも存在するようなので試してみました(以前@makingに教えてもらいました)。 github.com 使い方はとても簡単で、Mavenの依存関係を追加して <dependency> <groupId>com.wix</groupId> <artifactId>wix-embedded-mysql</artifactId> <version>1.0.3</version> <scope>test</scope> </dependency> こんな感じで使えます。 Mysq

    組み込みMySQLを使ったユニットテスト - たけぞう瀕死ブログ
  • リアクティブなマイクロサービスフレームワーク「Lagom」を試してみる - たけぞう瀕死ブログ

    Lagomとは? LagomはLightbend社(旧Typesafe社)がリリースした新しいマイクロサービス向けのフレームワークです。 www.lightbend.com 元々Scalaの開発元であったLightbend社が開発しているだけあり、PlayやAkka、sbtといったScalaベースの技術基盤上に構築されていますが、現時点ではJava向けのAPIのみ提供されているJava用のフレームワークとなります。*1 これまでもSpring Bootなど手軽に使えるAPIサーバ向けのWebフレームワークは存在したわけですが、Lagomは最初からリアクティブなマイクロサービスの構築を前提に設計されており、いわば「マイクロサービスネイティブ」とも呼ぶべきフレームワークになっています。 実際にLagomを使うかどうかはさておき、新しいコンセプトのフレームワークなので学ぶことも多いのではないかと

    リアクティブなマイクロサービスフレームワーク「Lagom」を試してみる - たけぞう瀕死ブログ
  • Akka Persistenceでメッセージの到達保証をしてみる - たけぞう瀕死ブログ

    前回はAkka Persistenceでアクターの状態を保存するということをやってみましたが、今回は「メッセージを永続化することでメッセージがアクターに到達することを保証する」ということをやってみたいと思います。 アクターはこんな感じになります。 class SampleActor extends PersistentActor with AtLeastOnceDelivery { override def persistenceId: String = "sample" var state: State = ... override def receiveRecover: Receive = { case SnapshotOffer(_, snapshot: Int) => state = snapshot // リストアされたメッセージを処理 case e: Event => { up

    Akka Persistenceでメッセージの到達保証をしてみる - たけぞう瀕死ブログ