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

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

リファクタリングと追加実装はコミットを分けてほしい

主にソースコードをレビューする立場である場合の視点になります。 チームで開発しているとき、リファクタリングと追加実装を同時にレビュー提出されることがあります。ただ、レビュー依頼のコメントには、リファクタリングのことは触れられていないので、レ…

Java 無名(匿名)クラスを意識して使ってみる

Javaでプログラムの基本は、クラスのインスタンスを生成し、そのインスタンスから目的のメソッドを呼ぶところにあると思いますが、結果的に一度しかインスタンス化されないクラス(オブジェクト)があったり、ある特定のクラスからしか必要とされないインス…

Java8 日時APIがわからない(現在時刻の取得編)

もうすぐ、JDK8(java8)の商用サポート期限が2019年1月で終了するという中、未だに Java8 日時API に混乱させられています。。 ※この手の情報は色んなところに既にまとめられていますし、自分は5年くらい遅れている気がしますが、自分の備忘録のために覚えた…

Apache Spark2.3 ブロードキャスト変数のパフォーマンス

ブロードキャスト変数は、リードオンリーの変数を効率的に各 Executor に送信する仕組みです。Apache Spark2 にて、ブロードキャスト変数のパフォーマンスをローカル環境で確認してみました。 スレッド数は 3 を指定しています。 ※ sparkConf.setMaster("loc…

Couchbase 同期・非同期 insert(upsert)のパフォーマンス比較

Couchbase Java SDK を使用して、10万件のデータをインサートする場合のパフォーマンスを比較しました。 通常は同期処理にてインサートが行われますが、非同期用のAPIも用意されていましたので、それの比較となります。Couchbase server は Docker で生成し…

Docker Couchbase Server の起動スクリプト

Docker で Couchbase Server のコンテナを作成し、サービスを起動するスクリプトです。 sudo /etc/init.d/couchbase-server start # waiting for finishing to start couchbase-server sleep 30s # Setup Administrator username and password curl -v -X PO…

Spark2 AccumulatorV2

Spark2 で Accumulator を使おうと思ったら、deprecated になっていました。 代わりに AccumulatorV2 を使うようにとのこと。 https://spark.apache.org/docs/2.3.0/api/java/旧 Accumulator と同じように使えるのかと思っていたら、AccumulatorV2 を継承し…

文字コードの歴史を少し知りたい

python のドキュメントですが、文字コードの歴史について書かれている部分がありました。 https://docs.python.org/2.7/howto/unicode.html文字コードと言えば、何も考えずに "UTF-8" でみたいなところがあって、正直よく分かっていません。歴史 ドキュメン…

Java インターフェース 実装してみる

前回の記事で、インターフェースのメリットが解った?ところで、実装をしてみます。 blueskyarea.hatenablog.com今回は、データベースからデータを取り出すところに、Dao インターフェースを実装します。 インターフェースの定義 Dao をインターフェースを定…

Java インターフェース メリット わからない

もう何度も実装したことがあるにも関わらず、そのメリットがいまいちピンときていなかったりします。 ネットで検索すると、メリットについて語っている色々な情報が出てきます。 その時は何となく理解できた気になるのですが、しばらくするとまたアレなんだ…

Python 言語について 新しく知った 9つのこと

Python の初心者です。 Pythonによるデータ分析入門(第二版) の第二章に Python 言語について書かれていた内容から、自分にとって新しい発見が多かったので、それを列挙します。 既に Python を学んだことがある方にとっては、常識的な内容かと思います。1…

Java シングルトンデザインパターン singleton design pattern

singleton design pattern 実装する機会は今までに何度もあったものの、改めて順序だてて考えてみます。 ”そのクラスのインスタンスは常に1つしか存在しないことを保証する”こと。 実装にあたって、気をつけたい点 1. どのようにして、インスタンス化を行う…

いまさら IPython を初めて使ってみる

いまさらですが、IPython は python のインタラクティブシェルを拡張したもので、タブ補完機能などが使えるみたいです。 Python for Data Analysis の本を読む機会があって、そこで初めて試してみました。起動 ipython コマンドで起動可能です。 実はインス…

ユーザー類似度の計算(協調フィルタリングの前段階) python

今回は Mario さん、Peach さん、Koopa さんに5つのゲームを遊んでもらい、それぞれに5段階点数で評価をつけてもらいました。 ※登場人物はフィクションです その結果が以下です。 data.py review={ 'Mario': { 'OCTOPATH TRAVELER': 3.5, 'MARIO TENNIS AC…

5つのプログラミング テクニック(参照元あり)

参照元の記事は以下です。自分なりに読み解いてみたいと思います。 https://nobugsproject.com/2017/04/07/5-great-programming-techniques-every-developer-should-know/この手の英語の記事はたくさんあって、それぞれ違う観点で書いてあったりするから面白…

hbase shell non-interactive mode

hbase shell は実行したいコマンドを渡すことで、起動しなくてもコマンドの実行結果を受け取れます。 # echo "list" | hbase shell list TABLE 0 row(s) in 0.4830 seconds []コマンドの終了コードも受け取れます。 # echo $? -> 0これは便利なのですが、も…

hadoop namenode スタート直後は hdfs コマンドが動かない ?

Hadoop の構築スクリプトを作っています。 namenode を起動した後に、必要なディレクトリ hdfs 上に作成するため、以下のようにスクリプトを記述。 /usr/hdp/2.6.2.0-205/hadoop/sbin/hadoop-daemon.sh start namenode hdfs dfs -mkdir -p /user/my_dataとこ…

python 0埋め 削除する

datetime の日付0埋めを削除する方法については、検索したら解説が見つかります。 普通の文字列、例えば "0000120" を "120" にするにはどうすれば良いのだろう?"python 0埋め 除去(削除、解除)" など色んなキーワードで検索したけどヒットしない。 除去す…

ERROR: The node /hbase-unsecure is not in ZooKeeper.

エラー内容 Docker で HBase の Container を作っているのですが、hbase shell を起動した時に発生したエラー。 Docker とは何の関係もないエラーです。 ERROR: The node /hbase-unsecure is not in ZooKeeper. It should have been written by the master. …

Unity Unable to list target platforms

Unity で作成したゲームを Android の実機にビルドしようとしたら、以下のエラーが発生。 Unable to list target platforms.コンソールには以下のエラーが表示されているが、意味が分からない。 確かにしばらく Unity を触っていなかったけど、以前は問題な…

JMockito 一部のメソッドのみをモック化する(Java モック)

これの JMockito 版です。 blueskyarea.hatenablog.com モック化するクラス public class PointCard { public PointCard() { } public String getMemberName() { return "hoge"; } public long getPoint() { return 1000L; } } テスト対象のクラス public cl…

JMockito 引数に応じて返す値を変化させる(Java モック)

これの JMockito 版です。 blueskyarea.hatenablog.com テストコード(JUnit) @RunWith(JMockit.class) public class BirthMonthTest { // Without mock @Test public void testGetBirthStoneWithoutMock() { BirthMonth birthMonth = new BirthMonth(2); ass…

JMockito あるメソッドが任意の値を返す(Java モック)

これの JMockito 版です。 blueskyarea.hatenablog.comMockito 版の記事と同じクラスをテスト対象にしました。 テストコード(JUnit) import mockit.Expectations; import mockit.Mocked; import mockit.integration.junit4.JMockit; @RunWith(JMockit.class)…

python bash のコマンドを実行

調べてみると色んなやり方が見つかりましたが、自分にとって一番シンプルだったやり方を。 import subprocess bashCommand = "ls -alt" output = subprocess.Popen(bashCommand, stdout=subprocess.PIPE, shell=True).communicate()[0] print(output) コマン…

pyspark TypeError: namedtuple() missing 3 required keyword-only arguments

$ /usr/local/spark/bin/spark-submit --master local[1] textStream.py Traceback (most recent call last): File "/home/mh/workspace/spark/pyspark-practice/textStream.py", line 1, in <module> from pyspark import SparkContext ------- pyspark TypeError: </module>…

VirtualBox 仮想ディスクのサイズを変更

VirtualBox で使用している仮想ディスクの使用率が99パーセント近くになってしまったので、ホストOSからのディスクサイズの割り当てを増やすことを決断。 Vagrantを使用しているため、仮想ディスクは VMDK 形式になっています。 ただこの形式は、サイズ変更…

Java ソート条件を動的に指定してみたい

Java8 で書いてます。 静的に指定 // Item("name", "price", "reviewAve", "reviewNum") Item itemA = new Item("itemA", 1000, 3.3f, 100); Item itemB = new Item("itemB", 2000, 4.5f, 20); Item itemC = new Item("itemC", 3000, 4.5f, 10); List<Item> items </item>…

Java 自作クラスを Map のキーにする

Map のキーは、int 型 や String 型で済ませることが多い。 自作クラスを Map のキーにする機会はたぶん今までなかった。 今回たまたま、それをする機会があったのだけど、get する時に果たして Map に格納されているものと等しいキーとして認識してくれるの…

GCログを取得し、GCViewer で見てみる

0. GCViewer のインストール // git clone でダウンロード $ git clone https://github.com/chewiebug/GCViewer.git// git clone した pom.xml と同じディレクトリで $ mvn clean install// target ディレクトリ内にある jar を実行 $ java -jar gcviewer-1.…

ヒープサイズを変えつつ jstat コマンドで GC の様子を見てみる

jstat コマンドで GC の様子を見てみる - 社内se × プログラマ × ビッグデータ ここで使ったプログラムをヒープサイズを変えつつ GC の様子を見てみます。 $ jstat -gcutil -h10 [pid] 1000ケース1: -Xms1024m -Xmx1024m S0 S1 E O M CCS YGC YGCT FGC FGCT …