/home/by-natures/dev*

ソフトウェア開発者として働く人の技術的なメモ

Sensu の Slack ハンドラのテンプレート記述方法

Sensu に、通知を Slack に送るハンドラがあるのですが、通知内容を整形する方法を調査しました。 github.com 公式 GitHub にも簡単に紹介されているのですが、サンプルが見当たらなかったのでご紹介します: /etc/sensu/conf.d/slack.json 例として slack.j…

JMockit で File クラスをモックする

業務では JMockit(公式ページ)を利用してテストを書いているのですが、ファイル入出力を利用したクラスの単体テストが書きたいと思い、JMockit で File クラスをモックできないかを調べました。 JMockit とは Java の単体テスト向けフレームワークの1つで…

HiveServer2 でジョブ進捗は取得できない?

HiveServer2 を使っているのですが、Hive クエリ(というか MapReduce)は場合によっては時間がかかるため、ユーザーの方に「クエリの進捗を知る方法はないか」と尋ねられました。利用側からすると、数十分で終わるのか、数時間で終わるのか、なんとなく具合…

Hive の予約語で CREATE TABLE, SELECT する

MySQL など通常の RDBMS もそうですが、Hive にも予約語があり、そのままではカラム名に利用することができません。バッククオート(バックティック)を利用することで予約後をテーブルのカラムに利用することができます。 Hadoop Blog: How, in hive, to cr…

HiveServer2 を JDBC で利用する場合に cancel() できるのは 0.13.0 から

調べたことのメモです。 HiveServer2 を JDBC から使ってるのですが、cancel() メソッドを使えるのは Hive 0.13.0 以降とのこと。2014年3月に以下のチケットが解決されているので、Hive を更新できていない環境ではクエリのキャンセルが行えない可能性があり…

SpringFramework で OutputStream を扱う

大きなファイルを API を通じて返したい処理があり、そのままだとヒープ領域を圧迫して OOM エラーとなってしまうため、ストリーム処理で逐次データをクライアントへ返却するようにしました。 調べている最中に、まさに質問したかったことを Stackoverflow …

ヒープダンプやプロファイルを見るのに jvisualvm が便利

以前の記事で JMX へ接続するためのクライアントとして、jconsole を紹介しました: dev.bynatures.net この後作業していて、jvisualvm というコマンドでもヒープダンプを見ることができると知り、そちらの方が便利だったので紹介します。 詳しい紹介記事 ww…

MemoryAnalyzer で巨大なヒープダンプファイルを扱う

ヒープダンプを扱った際のメモです。 メモリを多く使うアプリケーションが OOM エラーで落ちる際に、ヒープダンプを出力すると後々に調査が可能だと知りました。アプリケーション起動時に XX:+HeapDumpOnOutOfMemoryError オプションを設定するか、JMX 経由…

NVD3 で multiBarChart を扱う場合、データには数値型を渡す

Java での開発は少しずつ慣れているのですが、JavaScript は入る現場ごとに使うフレームワークが変わる印象があります。4年前ほどにジョインしたプロジェクトでは ExtJS, 同時期に走っていた別のプロジェクトでは AngularJS を使っていて、チーム間の技術的…

JMX を jconsole/SpringBoot で使う

JMX を業務で触れたため、改めて調べたのでメモ。 とりあえず SpringBoot で動かす JMX に接続するためのクライアントに jconsole というツールがあります。Stackoverflow で "What is the best or most commonly used JMX Console" という質問を見ても jcon…

Jackson パッケージは fasterxml が新しい

少し前に、Jackson パッケージを使おうとしてハマったことがありました。 Jackson には com.fasterxml.jackson グループのモノと org.codehaus.jackson のモノがあります。Jackson は 2.0.0 以降からネーミングスペースが前者の com.fasterxml.jackson に移…

HiveServer2 のメモリ使用量はパーティション数が関係する

まだ詳しく調べられていないのですがメモ代わりに。 先日 HiveServer2 を利用する機会があり、負荷がどのぐらい掛かるかを確認していました。Cloudera の説明によると、同時コネクション数にも依存しますが数GB〜数十GBのヒープ領域が必要だとあります: Con…

YARN の DRF スケジューリングについて

会社で Hadoop The Definitive Guide(いわゆる象本)の第4版を読んでいるのですが、その中の YARN の章で、ジョブスケジューリングのアルゴリズムである Dominant Resource Fairness (DRF) の説明があります。 YARN で複数のリソース(CPU, メモリなど)を…

PermGen 領域に OOM エラー

OOM エラーに出くわしたのですが、よく発生する Heap 領域のものとは違うエラーが発生しました: java.lang.OutOfMemoryError: PermGen space Hive 関係のアプリケーションで発生していて、temporary function を大量に利用する処理を入れたばかりだったので…

アカデメイア ソフトウェア勉強会 #1 を実施しました

前職の方や異業種交流会で知り合った方と機械学習勉強会を運営していたのですが、今回はソフトウェア開発に特化させた勉強会を実施しました。 というのも、機械学習勉強会の参加者で「プログラミング自体を教えて欲しい」という方が多くいて、それならソフト…

機械学習勉強会 #10 (TensorFlow)

実施から時間が経ってしまったのですが、#9 に引き続き、先日 Google 社よりオープンソース化された TensorFlow という機械学習ライブラリを使った勉強会を2016年4月に実施しました。Google+ コミュニティや、前回の TensorFlow の勉強会の内容についてはこ…

機械学習勉強会 #9 (TensorFlow)

先日、約1年越しの機械学習勉強会を実施しました。今回のお題は、先日 Google 社よりオープンソース化された TensorFlow という機械学習ライブラリを実際に使ってみよう!というものです。 Google+ コミュニティや、前回の実施についてはこのブログの 第1回,…

サーバ側からクッキーの有効期限は取得できない

Stackoverflow を眺めていたら、こんな Question がありました: How to get cookie's expire time Flask - How to get a cookie expiration time? PHP / Python(つまりサーバ側)からクッキーの Expiration time を取得したい、というものです。 結論とし…

Google の機械学習ライブラリ TensorFlow メモ

2016年に知り合いの方が TensorFlow の勉強会を開くということで、運営のサポートをすることになりました。設営だけでなく、Python などの言語的なサポートも行うことになったため、この年末年始に勉強しています。 TensorFlow(Google の公式ページ) とは …

機械学習勉強会 #6 セミナー参加者募集中!(11/22(Sat))

私も運営メンバーに加わっている「機械学習勉強会」の第6回ですが、セミナー参加者を募集しています! 「機械学習勉強会」は、機械学習について学ぶきっかけをつくってもらうことが目的の勉強会です。また、社外の人とコミュニケーションを図ることで、みな…

memo: MapR 4.0.1

MapR セミナーのメモを備忘録代わりに残します。間違ってたらご指摘ください。 Drill も MapR-DB(より使いやすいHBase) も MapR なら利用可能ということで、Drill が AWS で利用可能になるのでしょうか…。そう思うと非常に期待が高まります。S3 になんでもか…

AWS OpsWorks を使ってみて分かった善し悪し

OpsWorks は AWS の1サービスで、Chef を使ったプロビジョニングを楽に行ってくれるサービスです。今のプロジェクトでは、自前の Ansible から OpsWorks へ移行しているため、社内で OpsWorks について紹介しました。 スライドの中では、実際に使ってみた所…

機械学習勉強会 #4, #5

機械学習勉強会の第4回, 第5回を実施しましたので、その様子をお伝えします。 第5回は、第6回に控えるチームごとの中間発表のための準備時間としたため、もくもく会としました。セミナーパートが無かったのでやや参加人数は少なかったですが、お菓子やジュー…

アドテック東京2014年 に参加しました

アドテック東京 に参加してきました。思えば就職してから毎年参加しているイベントなので、これでもう3回目の参加。なんだか感慨深い…。毎度のビジターパスでの参加ですが、キーノートは聞けますし、各企業ブースでゲリラ的にいろんな話をしているので、会場…

機械学習勉強会 #3

機械学習勉強会の第3回を実施しましたので、その様子をお伝えします。 第1回, 第2回 の様子もぜひご覧ください。 この勉強会は、「機械学習について学ぶきっかけをつくってもらう」ことが目的です。新しいことを学ぶモチベーションを維持するための仕組みと…

学ぶことの面白さとチーム開発について

ここ3ヶ月ほど、NHK ラジオ講座と TED Talk で英語のリスニングをしていて、定点観測しているわけでもないのでスキルが向上しているかは分かりませんが、そのおかげかいろいろな書籍を読むことも増えて、知的好奇心をかなり満たせている昨今です。 Live as i…

Flask の例外処理について考えてみる

Flask(フラスク)第2段です。 Flask の例外処理の方法について調べたところ、様々な例外処理の方法があることが分かりました。実装においては、好みのものや、アプリケーションにあったものを選択する必要がありますので、調べたことを簡単にご紹介します。…

Flask を使って Basic 認証付きの REST API クラスを作る

Flask(フラスク)は、「プログラミング言語Python用の、軽量なウェブアプリケーションフレームワークである。」 (Wikipedia) ということで、簡単に使うことができる Python のウェブアプリケーションフレームワークです。 インターネット上にもサンプルがた…

機械学習勉強会 #2

機械学習勉強会の第2回を実施しましたので、その様子をお伝えします。 第1回の様子はこちらをどうぞ。 この勉強会は、「機械学習について学ぶきっかけをつくってもらう」ことが目的です。新しいことを学ぶモチベーションを維持するための仕組みとして、月に1…

備忘録:MySQL への CSV データのロード

プログラムでロードすることはあっても、SQL から直接ロードすることがあまりないので、備忘録です。SET 構文が柔軟で便利です。 データベースは MySQL テーブルは既に作成済みの場合を想定 テーブルのカラム順と、CSV のカラム順は異なる Boolean, Date 型…

GoogleAppEngine: Datastore からのエクスポート方法

GAE は基本的にはプログラムから API を叩く必要があり、管理画面からボタンを押せばデータのエクスポートができる訳ではありません。いろいろと設定も必要だったので、メモしておきます。 以前の記事 GoogleAppEngine ことはじめ も合わせてどうぞ。 参考情…

機械学習勉強会 #1

ついに始動しました、機械学習勉強会! 「触ってみたい」「勉強したい」技術っていろいろありますよね。Hadoop や Spark なんかの分散技術も「やってみたいけど、結局実務で使わなきゃ覚えないし」なんて声もよく聞きます。 私にとって、その中の一つに「機…

「Hadoop 徹底入門 第2版」第2部まとめ(Hive での開発)

「Hadoop 徹底入門 第2版」を有志で読み進めているので、そのメモを貼ります。 今回は第2部 13章、Hive での開発方法と Tips です。 [toc]

「Hadoop 徹底入門 第2版」第2部まとめ(Java での開発)

「Hadoop 徹底入門 第2版」を有志で読み進めているので、そのメモを貼ります。 今回は第2部、8章〜10章、Java での開発方法と Tips です。 [toc]

「Hadoop 徹底入門 第2版」第1部まとめ(開発手段・クラスタ構成)

「Hadoop 徹底入門 第2版」を有志で読み進めているので、そのメモを貼ります。 今回は第1部、6章〜7章、Hadoop を動かす様々な方法とクラスタ構成の話です。 [toc]

「Hadoop 徹底入門 第2版」第1部まとめ(HDFS・MapReduce)

「Hadoop 徹底入門 第2版」を有志で読み進めているので、そのメモを貼ります。 今回は第1部、4章〜5章、コア技術である HDFS, MapReduce の説明です。 [toc]

「Hadoop 徹底入門 第2版」第1部まとめ(基礎知識・インストール手順)

「Hadoop 徹底入門 第2版」を有志で読み進めているので、そのメモを貼ります。 今回は第1部、1章〜3章、Hadoop の基礎知識からインストール手順までをご紹介します。 また、概要をこちらのスライドにまとめてありますので、合わせてご覧ください。(社内勉強…

GoogleAppEngine ことはじめ

社内で GoogleAppEngine を使って、とある社内施策を運用しているので、簡単に特徴などをご紹介します。 [toc] GoogleAppEngine とは? Google のインフラ上で動かせる PaaS PaaS(= Platform as a Service)ということで、Heroku などと同じような立ち位置…

「第7弾 週末ランサーズ」~NoSQLのイノベーションの歴史~ に参加しました

ランサーズさんの勉強会に参加してきましたので、その様子をお伝えします。 [toc] 週末ランサーズとは? ランサーズ株式会社 主催の「週末ランサーズ」は、以下の目的で主催されています: WEBエンジニア・クリエイターのための「週末ランサーズ」とは、普段…

JavaScript Framework "ExtJS" の使いどころ

Qiita の AdventCalendar "JavaScript - Client Side - Advent Calendar 2013" 向けのエントリーです。遅れて申し訳ないです。。 ExtJS についてのエントリーをいくつか書かせていただきましたが、結局 ExtJS ってどうなの?という辺りをまとめたいと思いま…

「第3弾 週末ランサーズ」に参加しました

「週末ランサーズ」とは… 普段WEBサービスを作る若手エンジニアの方たちが集まり、技術について語り、開発し、交流を深めることを目的とする勉強会です。 ということで、ランサーズ株式会社さんが主催しているエンジニア向けの勉強会です。 まだ始まった…

Integer と Long を equals で比較すると false になる

タイトルを見れば Java に携わっている方ならすぐに察しが付くかと思うのですが、実際に動いているコードでこの問題が発生すると中々気付かなかったのでメモとして共有します。 数値型のオブジェクト同士を == で比較してはいけない Java において、オブジェ…

ExtJS: チャートでは複数ストアは扱えない

ブログは記事数が100を超えると意思を持ち始める…というそうですが、先ほどこのブログの記事数を数えたら100を優に超えていました。閲覧数上位が趣味エントリーで占めているのも頷けます(^_^; 本当はジャンルごとにブログを分けたほうがよいのですが…複数ブ…

ExtJS: Border レイアウトの代わりに hbox / vbox を使う方法

ExtJS シリーズ第2段、今回はレイアウトについてご紹介します。前回と同様、ExtJS 4.2.0 を想定しています。 色々ある ExtJS のレイアウト方法 Ext.panel.Panel クラスの layout コンフィグなどを見てみると、多くのレイアウトが選択できることが分かります…

ExtJS: CheckboxModelのselectメソッドで指定したデータにフォーカスするのを避ける方法

ExtJS を使ったプロジェクトに携わっていたのですが、ようやくリリースを迎えられて一区切り付きました。 何でも揃った JavaScript フレームワークの ExtJS ですが、何でも揃いすぎて利用用途が大型のブラウザアプリケーション向けになっているようで、技術…

正規表現を否定する方法

「正規表現」に対する理解は学術的・実用的な点で大きく異なります。学問の中で出てくる「正規表現」は、特定の言語を表す規則を定義するもので、有限オートマトン(DFA)と言語クラスが等しいものです。この場合の正規表現の定義は非常にシンプルで、規則を…

第1回 ローンチ・キャンプに参加しました

ESM が主催する、新しいITサービス・コンテンツ等、ビジネスを立ち上げる体験ができる 1day イベント「第1回 ローンチ・キャンプ」に参加しました。 ESM とは… 起業を考えている&応援してくれるエンジニアとビジネスプラン保有者の出会いの場、プランを発表…

Data Scientist Casual Talk in 白金台 をお手伝いしてきました

「Data Scientist Casual Talk in 白金台」(Zusaar のイベントページへ)と突然言われても、何のイベントだ!?と思われるかもしれません。 このイベントは、2013年8月8日に技術評論社から「データサイエンティスト養成読本」という本が出版されたことを記…

参加しました → 第2回Treeblue「UXマーケティングで全てが変わる。今の時代に求められる新しいマーケティングとは?」

(↑クリックでイベントページへ。画像はイベントページからお借りいたしました) 株式会社 ZEPPELIN(ツェッペリン)さんで行われた、Treeblue というイベントに参加しました。 このイベントは、デザイナとエンジニアが共同で作業するワークショップを目指し…

Agile Conference Tokyo 2013 に参加しました

ThoughtWorks Inc.と株式会社テクノロジックアートの共催で行われた、Agile Conference Tokyo 2013 に参加しました。 アジャイル開発も近年では、導入を始める大手企業も増え、 更なる広がりを見せると同時に、最新のアジャイル開発プロセスにも注目が集まっ…