よこなのへたのよこずき

noteもよろしくね

転勤した話

退職エントリならぬ転勤エントリですが、
京都所属にしてもらいました。京都市内に住んでます。

色々と理由があって決めました~٩(•౪• ٩)


よくある質問

  • お客さんが京都にいるの? -> NO
    自社開発なのでチガウヨ
  • 京都でのプロジェクトのため? -> NO
    東京に残ったとしてもやる仕事は同じだしチガウヨ
  • とばされたの? -> NO
    一応希望を聞いていただき自分で決めたことなのでチガウヨ

割とよく東京来る(今も東京に居る)し勉強会顔出したりするので
関東のみなさまこれからもどうぞよろしくお願いいたしますー。
関西のみなさまこれからどうぞよろしくお願いいたしますー。

f:id:ihcomega:20150926202258j:plain 区役所と間違えて行った京都市役所(かなしい)

IntelliJ IDEAのContent Rootを設定する

9月27日(日)はJava女子部のGradle勉強会です。
@mike_neckさんがGitHub専用のリポジトリを置いてくださっています。
その内容が充実しているためとても勉強になるだろうと大変楽しみ!!!

で、予習の際、IntelliJ IDEAについて得た知見を書いておきます。
Content Rootという概念('o')

先に私の身に起こった事象を説明するんだけど
上のGitHubリポジトリ行くとこんな風にいっぱいフォルダやファイルがあるのね。
f:id:ihcomega:20150924073703p:plain

こいつを普通にcloneしてIntelliJ IDEAで開くとこうなった。
f:id:ihcomega:20150924073716p:plain
おう、ファイルしかない。明らかな不足・・・!

( ˘•ω•˘ ).。oஇ

何でこうなっているかというと、Content Rootが指定されてないからみたい。

✈ Content Rootとは

  • 軽くぐぐるとどうやらJetBrains用語?
  • IntelliJ IDEAのContent Root説明ページはコチラ

    上記説明ページの Basicsという部分だけ少し読んでみると
    Content Root = 一番上の階層にあるフォルダ のことみたい(イメージ通り…)
    何かひとつのモジュールを構成する全ファイルが入ったフォルダ、のように書いてある。
    なおContent Rootは複数指定できるけど、大概ひとつで十分。
    Content Rootが必要ないケース*1もあるでしょう、とのこと。

✈ Content Rootの設定の仕方

IntelliJ IDEAのバージョンは14.1.4 ULTIMATE

  1. + ;Project Structureというウィンドウをひらく
  2. Project SettingsModules+ Add Content Rootする
  3. 選ぶ f:id:ihcomega:20150924161717p:plain
    ここだよ↑

今回だとjavajo-gradleを選択して・・・
できた!
f:id:ihcomega:20150924073719p:plain

設定画面を閉じると…よい感じですね(左側Project部分のトリミング) f:id:ihcomega:20150924075652p:plain

ハッピー!でも今までこんなことなかったな・・・。

まぁまぁ。というわけで、
9月27日(日)はJava女子部のGradle勉強会です。
9月27日(日)はJava女子部のGradle勉強会です。
9月27日(日)はJava女子部のGradle勉強会です。

おしまい。

*1:たとえば、"他のモジュールに対して依存するモジュール群を提供するため"といった役割で使う時とか(参考:Modules without content roots: Collections of dependencies

Ansibleが便利だと聞いたので試そう

せろさんとかたんごさんとかあねしがよく話しているAnsible!

Homebrew使ってMacに必要なものを揃えるやつ書いた!ちょっと必要だったので!
よく分からないシェルスクリプトも書いたけどよく分からない!

github.com

本格的な(?)カックイイ使い方は知りません!!!
寝てないからか、夜中だからか、テンション高くなってしまった!おわり

初めましてfluentd!

fluentdのこと知らなすぎて
真顔で設定ファイルとにらめっこすることしか出来なかったので(・_・)
クイックスタートガイドの一部を読んだ。

✫fluentd

ログ収集用のツール。いろんなログに対応しておりプラグインがたくさん

✫使われている技術・特徴

✫fluentdイベントのライフサイクル

  1. イベントが発生し、fluentdにインプットがあるとタグを発行する。
  2. タグを識別し、マッチするアウトプットの形式(設定)を判断する。
  3. マッチしたアウトプットに合わせて適切にイベントを送信する。
    ※アウトプットしたあと、イベントに新しいタグを付与して再利用することも出来る。

✫configファイル

☁configファイルの場所

  • パッケージインストールした場合
    /etc/td-agent/td-agent.conf
  • Gemインストールした場合(インストール時に指定)
    /etc/fluent/fluent.conf

☁ディレクティブ

configファイルには6つのディレクティブを指定する。

  • source
    • インプットデータがどこからどういう方式で送られてくるか指定する。
    • typeパラメータが必須。http(http通信を行う)、forward(TCP通信を行う)を指定するのが標準的。
    • tagtimerecordというパラメータでルーティングが出来る。
  • match
    • どういう処理をするか指定する。処理の終点!
    • イベントを他システムにアウトプットするのがよくある使い方。
    • マッチするパターンが必須。マッチパターンにtagの指定がある場合のみアウトプットする。
    • typeパラメータが必須。typeはどのアウトプットプラグインを使うか指定する。file(ファイルに出力する)、forward(TCP通信を行う)を指定するのが標準的。
    • matchの記法はこちらを参照。
    • 設定ファイル内で一番最初にマッチした(上に書かれた)処理を実行し、それより下に記載した処理はマッチしても実行しない。
  • filter
    • どういう処理をするか指定する。処理の通過点!
    • matchと同様の使い方をするが、一度マッチした後も、それより下にもマッチする処理があれば全て実行する。
  • system
    • 各種設定を行う。
    • log_levelsuppress_repeated_stacktraceemit_error_log_intervalsuppress_config_dumpwithout_sourceという値が対象。
  • label
    • filterやアウトプットをグループ分けする。
    • 各パラメータにプレフィックス@が必要となる。
  • @include
    • 異なる設定ファイルの情報をインポートし再利用する。
    • ファイルパス、グロブ、URLで指定できる。

☁configファイルについてその他

プラグイン

おおまかに分類すると6種類ある。

  • Input
    ソケットを生成してログを収集したり、定期的にログを取得したりする。
  • Parser
    インプットのフォーマットを変更する。
  • Filter
    特定フィールドの値によって絞り込んだり、フィールドを追加・削除したりする。
  • Output
    結果を出力する。即時出力する(Non-Buffered)か、チャンクのキューにバッファしてから出力する(Buffered)か、一定時間毎に出力する(Time Sliced)かの3パターンある。 ※チャンク(chunk)はイベントの集まり
  • Formatter
    アウトプットのフォーマットを変更する。
  • Buffer
    Bufferedアウトプットにて、バッファの設定を行う。

✫その他

ちなみにこれ会社のwikiにも書いといたやつ…w
うすっぺらい情報だけどこれくらい分かってればとっつきやすいでしょう!
あ、あとどうでもいいけどエントリのフォントサイズあげた。

MySQLのステートメントターミネータ知らなかった

そんなの学校で習いませんでした・・・
名前カッコイイ。

SELECTとかSHOWとか使うときに
; (セミコロン)じゃなくて\G (バックスラッシュ+G)を入力するのです。
そうすると、何やら縦表示になるのです。カラムが多いとやや見やすくなるのです。

以下、例。

mysql> SELECT * FROM HELP_KEYWORD LIMIT 3;  
+-----------------+--------------+  
| help_keyword_id | name         |  
+-----------------+--------------+  
|               0 | JOIN         |  
|               1 | HOST         |  
|               2 | SERIALIZABLE |  
+-----------------+--------------+  
mysql> SELECT * FROM HELP_KEYWORD LIMIT 3\G
*************************** 1. row ***************************
help_keyword_id: 0
           name: JOIN
*************************** 2. row ***************************
help_keyword_id: 1
           name: HOST
*************************** 3. row ***************************
help_keyword_id: 2
           name: SERIALIZABLE

ひぇぇ。先輩が作業しているのを見て、な、なんだ今の・・・ってなりました。
横長なテーブルをセミコロンちゃん使って見ていた自分、さようなら。

数値型おさらい&金勘定ことはじめしてきた #javajo

数値型おさらい&金勘定ことはじめに参加しました。
講師はJJUG幹事の@miyakawa_takuさん!癒し系インテリお兄さんです。

リンクたち

♡資料:

この資料だけ見ても大変分かりやすい上に、説明も丁寧で感激しました。

togetterまとめ:

togetter.com

♡講師タクサンのブログ:

Java女子部勉強会「数値型おさらい&金勘定ことはじめ」で喋りました - 映画は中劇
質疑応答の様子を書いてくださっています!

感想やら

…はい!もう書くことないです!上に綺麗にまとまっているんだもん。
しかしあまりに内容がない(リンク集的な)記事になってしまったので、
タクサンブログに書いてある2つ目の質問について、ご回答を詳しく記載します
(勉強会中にタクサンが見せてくださった*1のを改めてやってるだけです)。

このページに対する質問があがりました↓。

左から3桁分とって丸めるのかな?と思いきや、「1番下の"0.0001"は"0.00"にならない!?何故!?」と。

…ふむたしかに、roundって結局何をしてくれやがるメソッドなのかパッと見分からない。

さて、どうして上記のようになるかというと・・・
BigDecimal#round(MathContext mc)が丸めるのは、
スケールを取っ払った(BigDecimal#unscaledValue()っちゅーメソッドで取り出せるintValueという)値だからー!

これ↓を見れば、納得〜なはず(・・・合ってるかな?)
たしかに、"0.0001"のスケールなしの値は1だから、精度3で丸めても何も起きないよね。

まぁこのメソッドはまず使わないという説明だったので掘り下げたところで…という話かもしれません。
内容がない記事、という状況かわらず(=_=)まいっか。

おまけ

そうそう、なんでこのテーマでJJUG CCC登壇しようと思ったんですかっていう謎の疑問を投げかけたところ

  • double / float使ったシステムを見てウーンと思ったり、Twitterでこのネタが盛り上がっているのを見たりしたから
  • 「このキャッチーでポップ(で何とかでかんとか)なタイトルを思いついてしまったから」(うろ覚え)

とのことでした。w

振り返り

やっぱりご参加者のみなさんは緊張されてるようでしたが、後半は結構質問もあがったりして👍
まぁタクサンは、こうおっしゃってくださったし↓、

同じ週に開催したJava女子部もくもく会にも
ご参加くださったみたいでよかったです🍬是非またお願いしますw

うん、とても楽しかった。 理解の難しいチャレンジングな勉強会もよいですが、
すっきり分かったああああああと思える機会はやっぱり時々必要。

*1:オレオレJVM言語Kinkで

IntelliJ IDEAのコード補完でmainメソッドを出したい

ようやくIntelliJ IDEAのライセンスをゲットしました。
そしてふと、書きかけでドラフトに残していたこの記事の存在を思い出しました・・・
せっかくなので更新!

 

以前、こんなエントリで、mainメソッド入りテンプレートをつくる話をしました。

ihcomega.hatenadiary.com

この時うすうす、空のクラスにmainメソッド追加したほうが早い気はしてたんです…
というわけで、mainメソッドをさくっと出す方法を書いておきます。

eclipseだと"main"と入力して Ctrl + Spaceですよね、確か。

 NetBeansではこうらしい↑。

ちなみに

じゃ、IntelliJ IDEAは?

同じく、"psvm"と入力してTabで出ます。デフォルトは。
でも、変更したければコード補完はここで設定できます(OS X × IntelliJ IDEA 14.1.3)!
+ ,押して Preferences -> Editor -> Live Templates (-> other ->pvsm)

f:id:ihcomega:20150609005643p:plain

私は、"psvm"とか子音の羅列につき打ちづらいので
"main"でmainメソッドが出るようにしました。らくちんだ。ついでに配列を可変長引数にかえてみたり。

ちなみにこの補完の設定のとこ、色々見られて楽しいです。以下、勉強になるトークをお届け。

さて。結論としては、なーんだ、やっぱり空のクラスにmainメソッド作るほうが楽やん。
でも、上で貼った先日の記事に対して@yusukeさんがこうおっしゃっていてちょいとハッピー!