Linux(CentOS)の日時変更(NTPサーバとの同期を含む)

一部ハマったところがあったため、一連の流れを残しておきます。


NTPサーバーと同期するために必要なものをインストールする。

# yum install ntp*

設定ファイルを開く。

# vim /etc/ntp.conf

以下の3つを追加する。

server 130.69.251.23    # ntp.nc.u-tokyo.ac.jp
server 133.31.180.6     # ntp.sut.ac.jp (tusntp.tus.ac.jp)
server 130.34.11.117    # ntp1.tohoku.ac.jp (zao.net.tohoku.ac.jp)

サービスを起動する。

# service ntpd start

起動時にNTPデーモンが立ち上がるように設定する。

# chkconfig ntpd on
# chkconfig --list ntpd
ntpd            0:off   1:off   2:on    3:on    4:on    5:on    6:off

同期が取れたかを確認する。

# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp.nc.u-tokyo. .GPS.            1 u   47   64  177   21.838  -12.036   2.196
+tusntp.tus.ac.j .GPS.            1 u   43   64  177   26.292   -9.527 134.285
+zao.net.tohoku. .GPS.            1 u   45   64  177   31.366  -13.566   3.725

日付を確認する。

# date
2013年  7月 18日 木曜日 07:46:58 PDT

PDT(Pacific Daylight Time : 太平洋夏時間)のままなので、JST(Japan Standard Time : 日本標準時)に変更する。 念のため、元あったファイルを退避しておく。

# mv /etc/localtime /etc/localtime.old

シンボリックリンクを作成する。

# ln -s /usr/share/zoneinfo/Japan /etc/localtime

日付を確認する。

# date
2013年  7月 18日 木曜日 23:52:47 JST

はてなブログのエントリーの記法の変更

今まで数年間お世話になっていたはてな記法からMarkdown記法に変更しました。ただそんだけのエントリー。

  • GitHubを使う機会が増えてMarkdown記法に興味を持ったこと
  • 業務のメモ書きに使い始めたこと

以上の理由から勢いではてなブログの記法も変更しました。

Markdown記法に対応しました - はてなブログ開発ブログ

blog::2310 » Markdown文法の全訳

Mou - Markdown editor for web developers, on Mac OS X

Windows向けMarkdownエディタまとめ | ぶろゲ


追記1: あれ、リンクにはてなブックマーク数表示できないの・・・?

追記2: 今まで通りの記法で普通に使えました。

OCJ-Pに合格しました

大分遅れての報告になってしまいましたが、Oracle Certified Professional, Java SE 6 Programmer(OCJ-P)に合格しました。

一発で合格しなかったのであまり大きいことは言えないのですが、終わり良ければ全て良し、ということで体験記を残しておきます。

必要な知識

Java SE 6 Programmer Certified Professional Exam

自身のスペック、結果、勉強期間、使用教材

  • Java経験: 約1年
  • 言語経験: Java, JavaScript
  • 正解率: 66%
  • 勉強期間: およそ3ヶ月
  • 使用教材: 黒本教科書、黒本問題集

徹底攻略Oracle認定JavaプログラマSE 6問題集 [CX-310-065]対応 (ITプロ/ITエンジニアのための徹底攻略)

徹底攻略Oracle認定JavaプログラマSE 6問題集 [CX-310-065]対応 (ITプロ/ITエンジニアのための徹底攻略)

徹底攻略Oracle認定JavaプログラマSE 5/6教科書 (ITプロ/ITエンジニアのための徹底攻略)

徹底攻略Oracle認定JavaプログラマSE 5/6教科書 (ITプロ/ITエンジニアのための徹底攻略)

感想

Java経験約1年と書いてはいますが、業務では主にJavaScriptを使っているためJavaをガリガリコーディングできる訳ではありません。 スレッド、ファイル操作、ポリモーフィズムなど一から勉強したものが多かったため結構しんどかったです。OCJ-Pは引っかけ問題が多く、2択まで絞り込んでもそれから1択に絞るのが難しく感じました。

勉強方法

平日は残業であまり時間が取れなかったため、土日メインで勉強していきました。パート毎に教科書→問題集→次のパートといった感じで知識をつけ、最低でも3回以上は問題を解き直しました。 最初の頃はコードも写経していましたが、途中から教科書、問題集だけに絞ったスタイルに変更しました。Studyplusに残した勉強時間を確認したところ、最低でも41時間は勉強していたみたいです。途中から勉強時間をつけなくなってしまったので正確な時間を出せていません。しまった。

役に立った情報

先輩社員に2ちゃんの情報が参考になると言われたので調べてみたのですが、当たっていることが多くて役立ちました。いらない情報も盛りだくさんですが。
【OCJ-P】Oracle認定Java資格 実用情報 8【SJC-P】

567 : 仕様書無しさん[sage] : 投稿日:2012/02/11 00:17:37
黒本問題集の第8章総仕上げ問題と似たような問題がたくさん出る
あと、変数のスコープに関する引っかけ問題が多いから気をつけろ

570 : 567[sage] : 投稿日:2012/02/12 21:10:34
黒本問題集の第8章総仕上げ問題を理解して解けるレベルになっていれば
高得点が取れると思う
ただし、parseIntとNumberFormatExceptionに関する問題と見せかけて
実はローカル変数の宣言位置のせいでコンパイルエラーになるとか、
tryの中で宣言・代入した変数の値をcatchの中で表示させようとして
コンパイルエラーになるとか、
そういう引っかけ問題がいくつかあるので注意した方がいい

ここは確かに当たっていると思います。2ちゃんでは紫本の方が評価高かったりしますが、黒本でも総仕上げ問題まできちんとやっておけば得点に繋がると思います。あと、意外とアサーションの問題が出るのできちんと覚えておいた方が良いと思います。

受験して良かった点

  • Javaを体系的に勉強することで基礎知識が身についたこと
  • 他の言語(JavaScript)にも使える知識があったこと

大学時代は大してプログラミングの勉強をしてこなかった自分にとって、知識の引き出しを一定の期間で一気に増やすという点では良かったと思います。 書き方や使い方は微妙に異なりますが、学んだ概念を他の言語にも利用できることが分かりました。

受験して悪かった点

  • 資格のための勉強をしてしまいがちで、業務に活かしにくいこと
  • 読めるけど書けないこと

資格はあるけどコーディング能力があるか、というとまた別のものだと思います。頭でっかち状態です。業務で使わないような細かい知識も結構問われるため、勉強しててこれ意味あるのかと感じることもありました。

最後に

上司からこの資格を取るようにと言われて臨んだ試験ですが、結果的には受験して良かったと思います。いろいろなことに浮気をしてしまう僕ですが、明確な目標があることで一直線に突っ走ることができました。ただ、最終的にはテストのための勉強になってしまったので、そこは何かを作る過程で実力に繋げていくしかないのかな、と感じました。

とりあえず一区切りついたので、ホッとしています。

Ext.grid.propertyGridの表示順に関するメモ

ExtJSという日本だとあまりメジャーじゃないJavaScriptライブラリを現在使っております。jQueryに比べてユーザーが少なくて、正直なところ結構辛い・・・。

Ext.grid.PropertyGridの表示順で嵌ったのでメモを残しておきます。使っているバージョンはExtJS3.4です。ExtJS4ではありませんのでご了承ください。

Ext.grid.property.Grid Example | Sencha Try
f:id:nikuyoshi:20130225163820p:plain

Java側で生成したJSONデータをExt.grid.PropertyGridでそのままの順番で表示したかったのですが、思い通りにデータを表示できませんでした。Stack Overflow, Sencha Forumで調べたところ、自動的にsortがかかってしまっているのが原因だということが分かりました。
propertygrid - Disable auto sorting on property grid in ExtJS - Stack Overflow
Ext JS 3.4.0 - Sencha Docs

Ext.data.JsonStoreクラスにJSONデータを格納する時、sortInfoというプロパティがオブジェクトに自動的に付与されているので、Ext.grid.PropertyGridのsourceプロパティで記述した順番というのは全く関係ないようです。

解決策としては、

  • Ext.grid.PropertyGridを継承してソート情報をクリア、その後setSourceでデータの詰め込む順番を指定してあげる

サンプルを以下に記載しておきます。

var hoge = Ext.extend.(Ext.grid.PropertyGrid,{
    initComponent: function(){
        var me= this;
        hoge.superclass.initComponent.call(me);
        delete me.propStore.store.sortInfo;
        return me;
    },
    setSource: function(source){
        var me = this,
            _source = {};
        if(me.propertyNames){
            Ext.iterate(me.propertyNames, function(propertyName){
                source.hasOwnProperty(propertyName) && (_source[propertyName] = source[propertyName]);
            }, me);
        } else {
            _source = source;
        }
        hoge.superclass.setSource.call(me, _source);
    }
});

Macのアプリケーション周りを快適にする

久々の有給でテンション上がりながらOCJ-Pの勉強してるnikuyoshiです。

いろいろと使いづらいと感じたので頻繁に使うアプリケーションの見直しをしました。
変更したのは以下の3つ。

  • Google日本語入力の数字入力のデフォルトを半角に切り替える
  • CUIVimで、挿入モードから抜ける時に英数入力に切り替える
  • Alfredの入力を自動で半角英数に切り替える

Google日本語入力の数字入力のデフォルトを半角に切り替える

設定から変更しました。簡単。
f:id:nikuyoshi:20130225155846p:plain

CUIVimで、挿入モードから抜ける時に英数入力に切り替える

KeyRemap4Macbookをぶちこみました。参考にしたサイトはこちら
ついでにKey Repeatの値も変更したので載せておきます。
f:id:nikuyoshi:20130225160110p:plain

Alfredの入力を自動で半角英数に切り替える

設定のAdvanced > KeyBoard > Force Keyboardを半角英数に変更しました。
f:id:nikuyoshi:20130225160127p:plain

TopCoderを始めました

資格試験の気分転換に、以前から気になっていたTopCoderに手をつけてみました。導入含め、約1時間ほどかかりました。

TopCoderを知ったきっかけ
業務でアルゴリズムの知識が必要になる時があったのですが、大学時代に学んだ知識を瞬時に取り出せず、悔しい思いをしました。何か良いトレーニングはないものかと探し、その時に見つけたのがTopCoderです。国内だけでなく、世界のプログラマーと争えます。いわゆる競技プログラミングです。詳しい話は省略します。

早速解いてみたのですが、知識が全然ない自分でも簡単な問題なら解けました。全て英語で書かれていますが、予想以上に敷居が低くて驚きました。こんな簡単な問題も一部出題されているとは思いもしませんでした…。

左にTopCoderの問題、右にiTerm2(Vim)を置いてコーディングしました。
f:id:nikuyoshi:20130103021310p:plain

public class Time{
    public static void main(String[] args){
        String a = whatTime(0);
        String b = whatTime(3661);
        String c = whatTime(5436);
        String d = whatTime(86399);
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
    }
    public static String whatTime(int seconds){
        if(seconds > 86399) return "Error!";
        int second = seconds % 60;
        System.out.println(second);
        int minutes = ((seconds - second) / 60) % 60;
        System.out.println(minutes);
        int hour = ((seconds - minutes * 60 - second) / 3600) % 24;
        System.out.println(hour);
        String time = hour + ":" + minutes + ":" + second;
        return time;
    }
}

問題を解いた後の気づき
時間制限を設けて*1早く解こうとすると、ものすごい醜いコードを書いてしまうのに気づきました。そもそも、アルゴリズムの勉強のために始めたのですが、まさか違う問題が浮き彫りになると思いませんでした。一度も競技プログラミングに参加したことがなかったので、まさかこうなるとは…。

早く、かつ美しいコードが書けるように今後も時間を見つけては解いていきたいと感じました。

*1:過去問だったので自分で設定しました

2012年を振り返る

年を越してしまいましたが去年同様、一年を振り返りたいと思います。去年のはこちら

去年の抱負、目標

  • 仕事に慣れる
  • ブログのエントリー数を増やす
  • C++, Pythonで何かものを作る
  • 通信関連の知識をつける
  • 英語の力をつける(TOEIC700くらい?)

学生から社会人へ

当たり前ですが、今年一番の大きな変化でした。時間・締め切りに対する意識変化、年齢・言語・分野・会社が異なる人との付き合い、金銭的な余裕などあげたらキリがありませんが、未だかつてない変化を感じました。大規模な買収でグローバルカンパニーとなっていく中、良いタイミングで入社できて良かったと強く感じています。優秀な同期・先輩ばかりで、良い刺激を受けて仕事ができる環境に身を置き、毎日が新鮮です。2013年度は社会人2年目ということで、責任も立場も変わる年だと思います。去年同様、攻めの姿勢を貫いていきます。

エンジニアとしての第一歩

Java, JavaScript, Linux, Apache, MySQLの知識が業務で必要になり、腰を据えて勉強を始めた年となりました。バックエンドからフロントエンドまで幅広い知識が必要で、毎日勉強しないとついていけません。業務外でも技術を貪欲に吸収する姿勢をこれからも失わないようにしていきます。OCJ-WCを今年度内に取って業務に活かしたい。
Pythonは業務で用いることはありませんが、楽しいので趣味として今後も継続していきたいと考えています。業務の知識を優先して勉強しているので後回しにしていますが、合間を見てモノ作りをしていきます。*1

英語

iKnowを6月から、英会話(iKnowLive)を10月から始めてリスニング力、スピーキング力が以前よりつきました。帰国子女と比べたら英語力はまだ全然ありませんが、2013年も継続して勉強していきたいと思っています。TOEICで目標としている点数があるので、今年度内に目標を達成したいと考えています。
f:id:nikuyoshi:20130101210257p:plain

先輩から教えて頂いたこと

来年の自分のためのメモ書き。

  • 分からないなら、恥をかいてもきちんと聞け。
  • 同期、周りを気にしないで、がむしゃらに目の前のことに取り組め。

2012年でできるようになったこと

  • 自分の意見を持っているのに、うやむやにしてしまう癖が直ったこと
  • ソースコード、ドキュメントで細部にも配慮ができるようになったこと
  • 既にある問題を見つけて提案できるようになったこと

2012年でできなかったこと

  • 優先順位付けがまだ甘いこと

2013年の抱負

  • 英語力向上
  • エンジニアとして、大きな成果物を1つ以上残す
  • 優先順位付けを素早く正確に行えるようにする

2012年は自分が思っている以上に周りから評価をして頂きました。それにうかれることなく、謙虚に、2013年も「攻め」の姿勢で仕事に取り組んでいきます。

本年もよろしくお願い申しあげます。

*1:正直なところ、「はじめてのPython」を先に読み進めたいんですけどね…。