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

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

なぜ、sudo rm でワイルドカード指定できないのか

sudo rm でワイルドカード指定したのに動かない。 $ sudo rm /var/log/elasticsearch/elasticsearch.*.log rm: cannot remove `/var/log/elasticsearch/elasticsearch*log': No such file or directoryワイルドカード拡張は、rmではなくシェルによって行われ…

JUnit DataPoint によるテストパラメータ定義

例えば、文字列を引数に取るメソッドをテストするにあたり、色んな文字列でテストしたい場合。 テストする文字列ごとにテストケースを作成するのは大変。 DataPoint を使うことで、それらのパラメータを配列で管理することができ、文字列一つずつを一つのテ…

Python CUIで迷路生成(3)

スタートとゴールの場所を指定するところまで。 set_start_goal ランダムに座標を指定し、そこが通路ならスタート”S”、またはゴール”G” をそこに設置する。 import sys import random class Maze(): PATH = 0 WALL = 1 START = 2 GOAL = 3 def __init__(self…

JUnit Enclosed によるテストケースのグループ化

既に存在しているテストクラスに新しいテストケースを追加するとき、どの位置に入れようか迷うときがあります。 出来れば、後で見たときに分かりやすい位置に入れたいですが、そもそも整理されていなければそれも難しいです。そこで Enclosedを使うことで、…

Python CUIで迷路生成(2)

内壁を生成するところまで。 棒倒し法により生成するが、その手順は 1. 迷路全体を構成する2次元配列を、幅高さ5以上の奇数で生成する 2. 迷路の外周を壁とし、それ以外を通路とする 3. 外周の内側に基準となる壁(棒)を1セルおき(x, y ともに偶数の座標)に配…

Java 例外(Exception) テスト

例外(Exception)のテストの書き方でよく知られているもので、Ruleアノテーションを用いた ExpectedException を使う方法があります。 例外のメッセージまで評価してくれるのがいいですね。 public class RuleTest { @Rule public ExpectedException expected…

Python CUIで迷路生成(1)

外壁を生成するところまでのステップ。 __init__ 1. Maze(迷路) クラスを生成し、maze, width, height の変数を定義する ※第一引数で縦のサイズ(height)、第二引数で横のサイズ(width)を与えるset_outer_wall 2. row という配列にそのセルが壁なのか、通路な…

プログラマーとしてアルゴリズムを学ぶべきなのか

アルゴリズムとデータ構造 並び替え・検索はシステムのプログラムを書く上で基本的な動作に挙げられると思います。 それらには色んな種類があります。ここで挙げるまでもないですが 並び替え バブルソート ヒープソート マージソート クイックソートなど 検…

人の拘りをただ単に受け入れること

ITエンジニアはプライドが高い集団 先日も書きましたが、ITエンジニアには拘りを持っている人が多いように思います。 エンジニアなので、職人気質なところが大いにあると思います。 それはまた、プライドが高い人が多いという意味になるかもしれません。プラ…

ITエンジニア 仕事への拘り

仕事への拘り 皆さんは仕事に自分なりの拘りを持っているでしょうか。 自分の周りには、ITエンジニア(自分を含め)がたくさんいます。 彼ら(自分を含め)を少しだけ注意深く見てみると、彼らには何らかの(人によっては強い)拘りがあるように思います。仕…

勉強会は大切なインプットの場

ITエンジニアに限った話ではないですが、勉強会によく参加されている方っていますね。 私の周りはITエンジニアだらけなので、参加者募集してるよー、何ならスピーカーも募集してるよーなんて話が聞こえてきます。 connpass.comとは言え、忙しい仕事の合間、…

WordPress にログインできないのはディスク使用量が100%になっていたからだった

久しぶりにVPSサーバ上で構築しているWordPressにログインしようとすると、ログインできませんでした。 状況としては、 パスワードは合っているはず(しばらく考えた後にエラー無しでログイン画面に戻るだけ) ※もし意図的にパスワードを間違えると”違います…

Docker の仮想環境を使って yum コマンドの練習

yum とは yum は RPMパッケージを統合管理するシステム。 RPM単体でもパッケージ情報や、依存関係の情報を保持しているが管理する機能がないため、それを担うのが yum。 DebianでのAPTの位置づけになる。 ディストリビューションのパッケージアップデートや…

Java プリミティブ型のメリットって

なんでしょうか。色んな意見がありそうですが。。1. null を許容しない 例えば、プリミティブ型の int を返すメソッドで return null と書くとコンパイルエラーになる。 個人的には、そんなに嬉しいかと言われると微妙です。 そもそも、null 許容しないなら…

Couchbase cbbackup でデータをバックアップ・リストアしてみる

Couchbase server では公式のデータバックアップツールとして、cbbackup というものがある。 cbbackup | Couchbase DocsLinux 上でインストールした Couchbase server に対して、バックアップを実行してみます。 環境 Version: 4.5.1-2844 Community Edition…

java.util.stream のソースを読んでみる filter 編

stream については、package java.util.stream; の JavaDoc には以下のように書かれています。 * A sequence of elements supporting sequential and parallel aggregate * operations. 並んでいる要素に対して、直列または並列処理をサポートするみたいなイ…

JGiven のレポート機能を試す(Java, JUnit)

JGiven ではいくつかのレポート機能が用意されているようです。 テキストのレポートを無効にする デフォルトでは、コンソール上にテキストのレポートが表示されます。 Something should happen Given サーバーが止まっている時に When プログラムを実行する…

JGiven をユーザーガイド見ながら試す(Java, JUnit)

JGiven とは 公式サイト から引用するとJGiven は、開発者にフレンドリーで実用的な Java の BDD ツールです。 ドメインエキスパートにとって読みやすいレポートを生成してくれます。 JGiven を使おうとしたきっかけ Java のプロジェクトに関しては、普段 JU…

terminator(端末)が起動しなくなった except (KeyError,ValueError)

Ubuntu14.04 上でいつの間にか terminator が起動しなくなりました。 デスクトップ上のランチャーを叩いても、何の応答もありません。 仕方なく、他の端末(XTerm)を起動し、/usr/bin/terminator を直接実行してみたところ、以下のエラーが表示。 File "/usr/…

タイガースとジャイアンツが含まれるツイート件数をカウントしてみた

データ取得期間 2018/11/11 - 11/13 内の数時間 データ取得方法 Twitter API(検索) を叩くバッチを1分間隔で実行。 検索条件のキーワードとして、”タイガース” もしくは、”ジャイアンツ”が含まれること。 リツイートは取得対象外 たまに単に球団名が列挙さ…

grep -E が正規表現対応オプションであると勘違いしていた

grep って、global regular expression print の略なので、それ自体が正規表現で一致したものを抽出するコマンドなんですね。 正規表現を使いたい時に、-E オプションを付けるものだと勘違いしていました。いま、以下のように2行が書かれたファイル(test.tx…

開発者が知っておくべき Couchbase についての 10項目

はじめに 公式ブログによって、こうやってまとめておいてくれると、読みやすいし初学者にとって助かります。 blog.couchbase.com第10位 Document access in Couchbase is strongly consistent, query access is eventually consistentCouchbase のデータには…

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

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

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" でみたいなところがあって、正直よく分かっていません。歴史 ドキュメン…