社内se × プログラマ × ビッグデータ

プログラミングなどITに興味があります。

マルチスレッドプログラミング - Runnable interface の実装

前の記事では、Thread class を継承する方法を試しました。 マルチスレッドプログラミング - Thread class の継承 - 社内se × プログラマ × ビッグデータ今回は、Runnable interface を実装することで、マルチスレッドを実現していきます。 こんな感じで作成…

マルチスレッドプログラミング - Thread class の継承

Apache spark などマルチスレッドのプログラミングを行う上で非常に便利なライブラリが登場していますが、それがあまりにも便利すぎるが故に、それ以前のマルチスレッドプログラミングについても学んでおきたいところです。 そもそも Apache spark のライブ…

ダイレクトバッファについて調べる機会

きっかけは、Apache spark でアプリケーション動かしていた時に、java.lang.OutOfMemoryError: Direct buffer memory に出くわしたこと。 ダイレクトバッファのこともよく理解せずに、spark プログラミングするのは申し訳ない気持ちになったので。。 ダイレ…

Java challenge どこに違和感を感じればよかったのかが分からない

以下のコード、コンパイル通ると思いますか?っていうもんだい。 public class PolymorphismChallenge { public static void main(String[] args) { System.out.println(new Chris().getCharacter().getSimpleName()); } abstract static class STARSSoldier…

VirtualBox ゲストOS のネットワークが頻繁に Up/Down していたが NATネットワークに変えたら解消

この記事の続きになります。 http://blog.hatena.ne.jp/blueskyarea/blueskyarea.hatenablog.com/entriesネットワークが毎分切断するような状況だと、ダウンロードするにも途中で切れるから毎度再開しないといけないし、再開モードが機能しない場合は、そも…

Mockito のチュートリアル記事を読んだ感想

これです。 www.discoversdk.com実際のところ、Mockito って Maven のリポジトリを見ても、12/31/2014以降は新しいバージョンが出ていないくらい完成された?フレームワークなのかもしれない。 ただ、この記事は 5/25/2017 に更新されたのもので、個人的にそ…

VirtualBox ゲストOS のネットワークが頻繁に Up/Down するが原因は分かっていない話

本件、今のところ結局解決していないので、解決策には言及していません。 (追記)解消しました。 VirtualBox ゲストOS のネットワークが頻繁に Up/Down していたが NATネットワークに変えたら解消 - 社内se × プログラマ × ビッグデータ VirtualBox のゲス…

Eclipse 例外ブレークポイントで効率アップ?

Eclipse のデバッグ機能で Exception Breakpoint というものがあるそうで、何をするものか分からなかったので使ってみました。 デバッグ画面で Add Java Exception Breakpoint と表示されるボタンをクリックすると、例外が登録できる。 今回は、"NullPointer…

テキストファイルを1行ずつ処理するには

input.txt がよみこむテキストファイルの場合 こんな感じです。 while IFS='' read -r line && [[ -n "$line" ]]; do echo $line; done < input.txt なぜ、IFS='' するのですか? IFSってのはbashの環境変数で、デフォルトでは$' ¥t¥n'(スペース・タブ・改行…

awk でパターンにマッチする行のみを抽出する

こんな感じでスラッシュで挟んで指定すれば良いらしい。 $ xwininfo | awk '/Width/' Width: 1360 ただ、単に抽出するだけなら、 grep で十分かも。 $ xwininfo | grep 'Width' Width: 1360 抽出した結果を変数に入れて処理するには便利そう。 $ xwininfo | …

Java challenge cloneable

Java challenge 既出のコードです。 出力結果を考えてみます。 ソースコード public class CloneableChallenge { public static void main(String[] args) throws CloneNotSupportedException { Human human17 = new Human("cells"); Human human18 = (Human…

Java private フィールドをモックする

private フィールドをモックする junit 書きたいなと思って調べたら、すぐに出てきたのが mockito の whitebox. 以前使ったことがあった気がするけど、忘れていました。 とりあえず簡単なサンプルで public class WhiteBoxExample { private String message …

SparkSql で5教科の成績に評価を付けてみる

SparkSqlはSpark上でSQLを利用するためのコンポーネントです。 Sparkの分散環境上で大量データに対して高速なSQLを実行できます。SparkSqlでソートする練習のために、5教科の成績に評価を付けるプログラムを書いてみました。 例えば、今5人(A君~E君)がい…

Apache ZooKeeper の基本について調べてみる

概要 ・分散アプリケーションを構築する上では、同期、設定管理、グルーピング、名前管理などの機能が必要となる。 →これらの実装は複雑で面倒なもの →Zookeeper はこれらの機能を提供してくれる ・ただし、Zookeeper が提供するのは、基本機能要素そのもの…

Apache Spark の SparkConf について調べてみる

Spark のチューニングにおいて重要な要素の一つとなるであろう SparkConf について調べてみる。 概要 ・SparkConf クラスは、Sparkにおける主要な設定の仕組みである。 ・SparkConf のインスタンスは新しい SparkContext を生成するときに必要になる。 ・Spa…

Apache Curator Framework のリトライ処理について調べてみる

zookeeper サーバと接続出来なかった場合、そのリトライ処理はどのように実装されるのか? 概要 ・ Curator とは、Zookeeper 上に構築された一連の高レベルライブラリ →複雑な接続処理を容易にするAPIを提供してくれるもの 前提 ・ローカル環境で Zookeeper …

eclipse ローカルヒストリーをほんの少しだけ試してみました

ローカルヒストリーは、eclipse 上で編集した履歴を残しておける機能ですね。 普段、変更履歴は git で確認しているので、個人的には全く使ったことがなかったのですが、便利そうです。 ローカルヒストリーの使い方 eclipse 上でファイルを右クリック、比較…

Java 例外処理における 11 個の誤り

Java の例外処理における tips を見つけたんですが、自分にはとても分かりやすかったので、感想と共に書き残しておこうと思います。11 Mistakes Java Developers make when Using Exceptions https://www.linkedin.com/pulse/11-mistakes-java-developers-ma…

maven Dependency trees が便利

Maven の便利な機能の一つとして、ライブラリの依存性を確認できるものがあります。あるプロジェクトの中で色んなライブラリを活用していると、そのライブラリ間の依存性が問題になり、プログラムが正常に動作しない場合があったりします。ライブラリAとライ…

Java で何故 4.0 - 3.10 は 0.90 ではない ?

twitter で流れてきたツイートで以下のようなものがありました。Why 4.0 - 3.10 not equal to 0.90 ? public static void main(String args[]) { double x = 4.0 - 3.10; System.out.println(x == 0.90); } 結果: falseツイートに対する返信で、「double や …

Scala プログラミング練習(バブルソート)

色んな便利なライブラリのお陰で、アルゴリズムの勉強をせずとも複雑な処理が実現できています。 ただ、やはりアルゴリズムってプログラミングをする上では知っておきたいところです。 正直なところ、アルゴリズムの勉強ってきちんとやったことがないので プ…

Linux でディスク使用量を調べる

頻繁に使用するコマンドなのでメモ。 ディスク全体での使用量を調べる df -h $ df -h Filesystem Size Used Avail Use% Mounted on /dev/sda5 26G 22G 3.2G 88% / tmpfs 395M 1.2M 394M 1% /run ※ h オプションが無かったら、単位がつきません 指定ディレク…

JMockit でメソッド内から呼び出しているメソッドのみをモックする

表記のとおりです。 例えば、以下のような methodA と methodB があった場合、junitテストで methodA を呼び出した時の methodB の振る舞いを変更したいということです。 ※戻り値を 5 以外にしたい public class PartialMock { public int methodA(int a) { …

初 JMockit の感想

JUnit で使えるモックのライブラリには、mockito, jmockit, easymock などがあります。 個人的には mockito しか使ったことがなかったのですが、jmockit がよく使われているらしいので、試してみました。具体的な使い方などは既に多くの記事が存在しますので…

Spark Streaming で テキストファイルへのセーブ

ソースコードRDD には saveAsTextFile というメソッドがあり、引数に指定したディレクトリに簡単に出力することができます。 Spark Streaming における DStream にも saveAsTextFiles というメソッドがありました。ただし、Java での JavaDStream から使う場…

Spark Streaming の textFileStream で複数のディレクトリを対象にしてみる

ソースコード単に2つの DStream を作成してあげるだけです。 // create DStream from text file String logDir = "/tmp/logs"; String logDir2 = "/tmp/logs2"; JavaDStream<String> logData = jssc.textFileStream(logDir); JavaDStream<String> logData2 = jssc.textFileSt</string></string>…

fluentd で収集したファイルを Spark Streaming で GET

Spark Streaming ではファイルが更新されたとしても、その差分のみの取得はされない。 Spark Streaming ではあるディレクトリに生成された新規ファイルは自動的に取り込んでくれるよう。 そこで差分のみを fluentd で取得し、それを新規ファイルとして出力し…

TextFileStream でリアルタイム word count

Spark Streaming ではディレクトリを監視して、その中に入ったテキストファイルを取りこめるようなので試してみました。 ソースコードはこちら1.準備(コーディング) ディレクトリを監視し、テキストファイルを取り込むためには、textFileStream の引数に…

Spark Streaming 試してみました

初めての Spark を参照しながら、Apache Spark Streaming を試してみました。 ソースコードまずは概念、概要から・・・ 1. Spark は RDD を元に構築されていますが、Spark Streaming においては DStream と呼ばれる概念の元に構築されるらしい。 2. DStream …

Javaの演習問題やりました

Javaのプログラミングの練習したいと思って、「Java練習問題」でググって出てきたページ。 アルゴリズム編にチャレンジ。 https://eng-entrance.com/java-question-algorithm全部で4問。最初の3問はすぐに書けた(とりあえず動くレベルでも)けど、4問目は苦…

zkCli.sh にコマンドを渡して実行

zkCli.sh は zookeeper に標準で用意されているクライアントツール。 起動することで、対話式にコマンドを実行することが可能。また、zkCli.sh にパイプでコマンドを渡してあげることで、1コマンドであれば実行させることも可能。 例えば、/test という znod…

install されている python のバージョンチェック

コマンドラインで確認できるわけですが、スクリプト内でチェックして違う動作をさせたい時もあります。 version.py #!/usr/bin/env python import sys IS_PYTHON2 = sys.version_info[0] == 2 if IS_PYTHON2: print 'Hello, version 2' else: print 'Hello, …

bash で変数にパイプを入れる

例えば、以下のような変数を用意して、 GREPS="grep start | grep end"こんな感じで実行できないかなと。 less test.log | ${GREPS} $ less test-log | ${GREPS} grep: |: そのようなファイルやディレクトリはありません grep: grep: そのようなファイルやデ…

ps コマンドの grep で grep 自身のプロセスを除外するとき

v オプションを使ってps aux | grep java | grep -v grepこんな感じでよく書いていたけど、ps aux | grep [j]avaこれでも除外することが可能。どうもこの場合、grep 自身のプロセスは "grep [j]ava" という文字列として判断されるので grep java にはマッチ…

Apache Spark ブロードキャスト変数について調べてみる

Apache Spark プログラミングの機能に、ブロードキャスト変数というものがあるらしい。 どういうものか、調べてみる。 出来ればどういったケースで有用であるかを理解したい。 概要 ・ブロードキャスト変数は、ドライバで定義した定数を各エグゼキュータに転…

Apache Spark アキュムレータについて調べてみる

Apache Spark プログラミングの機能に、アキュムレータというものがあるらしい。 どういうものか、調べてみる。 出来ればどういったケースで有用であるかを理解したい。 概要 ・アキュムレータは主に情報を集計するためのものらしい。 ・アキュムレータは書…

苦手な正規表現を練習中

個人的に苦手な正規表現について、少しずつ練習していきます。 [お題] lesson03: 1文字の行にマッチさせる

正規表現で1文字の行にマッチさせる

ある任意の1文字は . で表現される。 ただこれだけでは、複数の文字列(例えば ABC など)もマッチされてしまう。 1文字だけの行を抽出したい場合は、 ^.$ と書けばよい。 ある任意の1文字から始まり、ある任意の1文字で終わる文字という意味になるので それ…

ZooKeeper アンサンブル接続、リーダー選出、データ同期

Zookeeper は分散システム管理を行うためのツールです。 http://oss.infoscience.co.jp/hadoop/zookeeper/docs/r3.3.1/index.html http://open-groove.net/zookeeper/zookeepr-config/ 難しい分散アプリケーションを構築するにあたって、便利な仕組みを提供…

Swing で作った Java アプリケーション マウスでなぞっている時だけスムーズに動く?

Swing で 簡単な Javaアプリケーション(ゲーム)を作ってみたところ、Windows上ではスムーズに動作するが、Linux(Ubuntu14.04) ではカクカクと表示されてしまう現象に出くわしました。 ブロック崩しのようなゲームで、ボールがウィンドウ上をあちこちに動…

はてなブログのアカウント作ってみました

ブログ自体は個人的なWebページで書いたりしていたものの エディタのカスタマイズなど面倒な点も多く感じてきたので ブログサービスを使ってみようと思い、はてなブログのアカウントを作りました。 プログラミングのことや、日々感じたことを気楽に書いてい…