done is better than perfect

自分が学んだことや、作成したプログラムの記事を書きます。すべての記載は他に定める場合を除き個人的なものです。

「転職の思考法」を読んだ

ぶっちゃけ今すぐ転職したいかと言われるとそうでもないというか、なんとなく閉塞感を感じるし面白そうな仕事は任せてもらえてないしで不満は溜まっているわけではあるんだけど、世間的に言えばそれなりのお給料はもらえるという点では満足している。

とりあえずビ○リーチとかに登録して、履歴書を書いて見るわけだがこれがまあ書けない。社外からみて、というのがやはり難しい。うちのチームはそれなりに体外アピールをしやすいところではあるはずだが、それでも書けないとなると皆一体何書いているんだ?という疑問が湧いてくる。

「転職の思考法」でも、まずアドバイスとして出てくるのは「自身のマーケットバリュー」を測る、ということだ。いろんな軸が出てくるわけだが、どれもそれなりに難しい。「会社を変えても、価値のあるスキルをどれだけ持っているか」という問いにぱっと答えられる人がどれだけいるのだろう? そんなのぱっと答えられるような奴ならどこでも行けるんだから悩む必要なくない?と思ってしまった。

そんなことを思っていたが、「終わりに」で筆者が語っていた言葉を見て納得した。「転職の思考法」というのは、とどのつまり転職そのもの、というよりは自己を高めるといった自己啓発的なものなのだ。「転職がいつでもできるような人材になれるよう努力しろ」ということを筆者は言いたかったのだろう。 そのような人材であれば、たとえ転職しないにしても周りの環境を変える材料となるから。

もう少し努力してみるか、という気持ちにさせてくれる本だった。たとえ、転職しないにしても。

初心に返って(ry

一年ぶり以上でのブログ投稿。

お仕事が忙しかったという言い訳もありつつ、まあ基本的には面倒だからブログ投稿サボってました。

なぜまた投稿する気になったかというと、きっかけは友人の転職です。 わずか2-3ヶ月でぱっと決まっており、しかも年収xx万円増えるという大成功さ加減を見て、真剣に転職を考え始めました。

いろんな転職サイトを見ている中で、ふと気がついたのが「あれ、自己アピールが何も書けない・・・」でした。 社外に対して説明できるものが何もなく、ものすごい危機感。

これじゃイカンということで、勉強を再開しようかな、と考えてまずはアウトプットの場所をと思い、ブログを再開することにした、という経緯です。 三日坊主にならないよう気をつけつつ・・・

まずは、以下のようなことを定期的にやっていこうかと思っています。

  • [LeetCode|https://leetcode.com]を1日1問は解く
  • Kaggleの勉強を再開する
  • Kubernetesなどの最近イケているプロダクトを触る
  • Rustの勉強

こう見ると盛り沢山ですが、一つ一つやっていきたいと思います。

初心に帰ってKaggleで機械学習勉強し直し始めた話

就職してから2年と少し経ちましたが、最近色々辛くて大学生時代の意識高い系自分に戻りたくなりました。

あくまで意識高い なので、決して高スペックでもなかったですがまだ自分に無謀な期待を持っていた時代が懐かしい。

あの頃を思い出しつつ、あの頃雰囲気でしかわかっていなかった機械学習や統計をもう一度勉強し直すためにKaggleなど使って勉強することにしました。

(何度も再入門して挫折していることは内緒。たまにしか書かないブログにまで書いていることが本気の現れ、ということで一つ・・・)

まずは手始めにKaggleのチュートリアル的なコンペであるタイタニックさんをやろうと思います。

Titanic: Machine Learning from Disaster | Kaggle

高得点を狙うとかとうてい無理ですが、最近の道具の使い方や基本的な機械学習などについて思い出しながら(ほぼ再勉強しながら)やっていこうと思います。

この記事は決意表明だけですが、実際にはもう手をつけ始めています。次回からその稚拙な内容を書いていきます。

Log4jのDailyRollingFileAppenderはrollOverするタイミングでプロセスが実行していなくても、次にプロセスが実行されるタイミングでrollOverする話

自分用メモ

DailyRollingFileAppenderで、日付でのローテーションを行う設定をする場合、普段ローテーションするタイミングで サーバーなりプロセスなりが落ちていた場合どうするのでしょう。

まずは確認。DRFAだと普段はMidnightにローテーションされる

 At midnight, on March 8th, 2002, /foo/bar.log will be copied to /foo/bar.log.2002-03-08. Logging for the 9th day of March will be output to /foo/bar.log until it is rolled over the next day.

DailyRollingFileAppender (Apache Log4j 1.2.17 API)

じゃあMidnightにサーバー落ちてたらどうなるのっと。

その答えは以下

log4j/DailyRollingFileAppender.java at v1_2-branch · apache/log4j · GitHub

  /**
   * This method differentiates DailyRollingFileAppender from its
   * super class.
   *
   * <p>Before actually logging, this method will check whether it is
   * time to do a rollover. If it is, it will schedule the next
   * rollover time and then rollover.
   * */
  protected void subAppend(LoggingEvent event) {
    long n = System.currentTimeMillis();
    if (n >= nextCheck) {
      now.setTime(n);
      nextCheck = rc.getNextCheckMillis(now);
      try {
    rollOver();
      }
      catch(IOException ioe) {
    LogLog.error("rollOver() failed.", ioe);
      }
    }
    super.subAppend(event);
   }
}

つまり、まずファイルにログを書き出しする前にちゃんとローテーションされているかをチェックして、されていなければrollOverしてくれるっぽい

cowsay + fortuneで遊ぶ

参考のサイトを少しいじった程度です。以下を~/.zshrcに記入します。

function random_cowsay() {
    cows=$(ls -1 /usr/share/cowsay | tr '\n' ' ')
    cows_array=${(z)cows}
    num_cows_array=${(w)#cows}
    random_cows=$(expr $RANDOM % $num_cows_array + 1)
    cow_name=$cows_array[$random_cows]
    cowsay -f $cow_name "$(fortune -s)"
    # I dont know why the line is need below ...
    echo $RANDOM > /dev/null 2>&1
}
random_cowsay

Ref:

qiita.com

LPIC Level 3 (303-150)に受かった

タイトルが全てです。今回、諸般の事情により勉強時間が3日しか取れなかったのでアカンかなと思いましたが、なんとか受かりました。得点は550点と低飛行でしたが・・・;)

使った教材は定番の黒本

そしてこちらのサイトです。

Linux Questions & Answers | Category Archive | 117-303 (v.1)

特に上のサイトが良くて、かなりボリューム感ある演習ができます。

ただ、303-150の試験は2016年8月までで終わりみたいで、303-200の試験しか受けられなくなるみたいですね。早いとこ黒本の新板が出て欲しいところです。

受けた時はまず最初のほうの問題が意味不明なのが多く、落ちることを覚悟しました。後半のほうは見たことある系の問題だったので助かりました。