さくらのVPSで初回起動時にコンソールに Updating RPMS on system と出力されたら気長に待とう

さくらのVPSで契約したサーバを初回起動して ssh すると Connection refused エラーで接続できませんでした。

エラーメッセージ: Connection refused

$ ssh root@160.16.55.xxx
ssh: connect to host 160.16.55.xxx port 22: Connection refused

仕方ないので、さくらのVPS専用の「VPSコントロールパネル」からサーバに接続して、コンソールを確認してみると Updating RPMS on system が出力されているところで処理が止まっていました。

Updating RPMS on system - CentOS

調べてみたところ、初回起動時にインストールされている RPM を全て更新する仕様らしく、そのため時間が掛かっているようでした。

20分ぐらい待ってコンソールを確認すると次の処理に進んでいて、しばらくすると無事に login プロンプトが表示されていました。

初回起動時だけなので困るのは最初だけですが、定期的に RPM が最新の状態の CentOS がデフォルトでインストールされると嬉しいですね。

iconv で変換できない不正な文字を除外するには -c オプションを使えばいい

Linux 上でデータベースから出力した CSV ファイルの文字コードを UTF-8 から Shift JIS に変換しようとしたら、変換できない文字が含まれていたみたいで illegal input sequence at position というエラーが発生して処理途中で終了してしまいました。

$ iconv -f utf-8 -t sjis -o output-sjis.csv input.csv
iconv: illegal input sequence at position 652782

-c オプションをつけると処理が途中で止まることなく、不正な文字を出力から除外して最後まで処理してくれます。

$ iconv -c -f utf-8 -t sjis -o output-sjis.csv input.csv

ヘルプにちゃんと記載されてました。

$ iconv --help
Usage: iconv [OPTION...] [FILE...]
Convert encoding of given files from one encoding to another.
 
 Input/Output format specification:
  -f, --from-code=NAME       encoding of original text
  -t, --to-code=NAME         encoding for output
 
 Information:
  -l, --list                 list all known coded character sets
 
 Output control:
  -c                         omit invalid characters from output
  -o, --output=FILE          output file
  -s, --silent               suppress warnings
      --verbose              print progress information
 
  -?, --help                 Give this help list
      --usage                Give a short usage message
  -V, --version              Print program version
 
Mandatory or optional arguments to long options are also mandatory or optional
for any corresponding short options.
 
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.

CSV ファイルを Excel で開くために Shift JIS に変換するなんて作業からは、そろそろ卒業したい気分です。

[Google スプレッドシート] 数字を Plain Text に変換するには TEXT(A1,”@”) 関数を使うといいらしい

Googleスプレッドシートで、vlookup の検索キーの部分を Plain text にしているのにエラーが出て無駄に時間を使ってしまうことがありました。

エラーメッセージ
Error
Did not find value in VLOOKUP evaluation.

原因は Plain text になっているように見えて、実はなってなかったという罠でした・・・。再度 Plain text で format したら正常に vlookup できました。

同僚にこの話をしたら、

TEXT(A1,"@")

で、プレーンテキストになりますよ。

ということを教えてもらいました。

以下、TEXT 関数を使って vlookup してみたサンプルです。

Google スプレッドシートの活用スキルがまだまだ足りない。

MongoDB shell で moment.js や underscore.js などの便利ライブラリを使えるように拡張する mesh.js が神

MongoDB shell で JavaScript の有名なライブラリを使えるように拡張する mesh.js が便利だったのでご紹介します。

mesh.js のインストール

まず mesh.js をダウンロードします。

curl -O https://raw.githubusercontent.com/skratchdot/mesh/master/mesh.js

次に MongoDB shell で mesh.js ファイルを読み込んで shell から使えるようにします。読み込み方は2パターンあります。

.mongorc.js に load メソッドで読み込むパターン

.mongorc.js ファイルに下記のように

load('/path/to/mesh.js');

MongoDB shell 起動時に読み込むパターン

MongoDB shell 起動時に mesh.js ファイルを指定して読み込むことができます。

mongo --shell /path/to/mesh.js

個人的には .mongorc.js に書く方が無意識に使えるので便利です。

[事例] moment.js が使えて日付演算がめっちゃ楽

例えば、EC サイトで商品ページ productpages が公開日 published_at から1ヶ月毎の日付を確認したい場合は以下のように使えます。

> var productPage = db.productpages.findOne( ObjectId( "568f2d5f2e2195f01f663e3d" ) )
 
> productPage.published_at
ISODate("2016-01-08T04:08:59.822Z")
 
> var m = moment( productPage.published_at );
> m.toDate()
ISODate("2016-01-08T04:08:59.822Z")
 
> m.clone().add( 30, 'days' ).toDate()
ISODate("2016-02-07T04:08:59.822Z")
> m.clone().add( 60, 'days' ).toDate()
ISODate("2016-03-08T04:08:59.822Z")
> m.clone().add( 90, 'days' ).toDate()
ISODate("2016-04-07T04:08:59.822Z")

他にも時刻情報を Google スプレッドシートで扱いたい場合は moment.js の format メソッドを使って整形できるのは最高です。

> m.format('YYYY-MM-DD HH:mm:ss')
2016-01-08 04:08:59

まとめ

MongoDB shell で日付の演算をしたくなったら迷わずに mesh.js をインストールすると moment.js が使えて幸せになれそうです。

本人に「メンター制度をやる必要がある」という認識がないと良い結果にはならないのでは?

職場でメンターを引き受けるか考える過程で、メンター制度について調べたこと、考えたことを書き残しておきます。

まずは「メンター」という言葉についてです。

メンターとは、仕事上(または人生)の指導者、助言者の意味。メンター制度とは、企業において、新入社員などの精神的なサポートをするために、専任者をもうける制度のことで、日本におけるOJT制度が元になっている。メンターは、キャリア形成をはじめ生活上のさまざまな悩み相談を受けながら、育成にあたる。

次に、ネットで検索していくつかメンターについて書いてある記事を読んでみました。

メンターってなによ

メンターというのは、特定の分野において経験を持つ人が「世話焼き兄貴・姉貴」として、キャリアや仕事の進め方、トレーニング、コーチングなどをしていく人のことです。その対象のことをメンティと言います。
そのため、目的は対象となる人の迷いを取り除き、成長させ一人前にしていくことです。また、メンターを経験することでより大きな人数での指導的立場やサポートをしていくことの足がかりとしても大変有用です。

ここで重要なポイントは「メンティを成長させたいか?」という点だと考えてます。

対象のメンティの成長に関心がない場合は、メンター業務に対してモチベーションが上がることもないので、お互いのために引き受けるべきではないと思ってます。

ここでメンターに関して皆さんが具体的に出来ることをお話したいと思います。

ルール第1は、33%の法則です。皆さんの周りの人の33%は皆さんよりもレベルが低いです。皆さんは彼らのメンターになることができます。彼らを助けることで、皆さんは良いことをした、と気分が良くなります。皆さんよりも低いレベルの人がいると安心しますよね。
そして他の33%の人々は皆さんと同じレベルの人です。この人達は皆さんの友となり、仲間となる人達です。そして最後の33%は多くの人がその存在を忘れている人々です。彼らは10年、20年、皆さんの先を行っています。彼らは一緒にいると皆さんをすこし居心地悪く落ち着かない気持ちにしますが、これが皆さんには必要なのです。

覚えておいてください。よくある間違いは、自分より少しだけ優れた人をメンターに選ぶことです。自分も物事をよくわかっていないのに、同じ程度にしか物事をわかっていない人を選んではなりません。これを10Xルールと呼んでいますが、メンターには自分の10倍優れた人を選ぶべきです。100万ドル企業を築きたいのであれば、1000万ドル企業を築いた人にメンターとなってもらう。ものすごく成功した人にアプローチすることを恐れないで。彼らは直接会ってみると素晴らしい人ばかりです。

”メンターには自分の10倍優れた人を選ぶべき”なので、そうでない場合はメンティにとって効果は小さいと思うんですよね。

自分がメンティの立場だったら「少しレベルの高い人についてもらっても、何も変わる気がしない」と思いますね。

まとめ

メンターもメンティーの立場にもなったことがないのですが、どちらの立場でも本人に「メンター制度をやる必要がある」という認識がないと良い結果にはならないのではないでしょうか。