西暦と和暦を変換する wareki コマンドを作りました
西暦と和暦を変換するコマンドを作りました => Docker に対応しました
書くこと
- なにができる?
- 使い方
- インストール
- 動機
- まとめ
なにができる?
- 西暦を和暦に変換
- 和暦を西暦に変換
これだけをしてくれるコマンドです。
使い方
西暦を和暦に変換
$ wareki 2018
H30
西暦を省略すると今年の和暦に変換
$ wareki H30 $ date "+%Y/%m/%d" 2018/05/10
和暦を漢字で出力
$ wareki --kanji 平成30
年月日を指定すると厳密に変換
$ wareki 1989/01/08 H1 $ wareki 1989/01/07 S64
和暦から西暦に変換
$ wareki --heisei 30 2018 $ wareki --showa 64 1989
ヘルプ
$ wareki --help NAME: wareki - 西暦を和暦に変換する USAGE: wareki [options] [AC] DESCRIPTION: AC に指定した西暦を和暦に変換します. 和暦の元号は西暦に応じて自動的に決まります. たとえば, 1989/01/08 を指 定すると H1 (平成1年) に, 1989/01/07 を指定すると S64 (昭和64年) に なります. AC は省略でき, デフォルト値はシステム日付になります. デフォルトでは, 元号は英大文字1文字で出力しますが (e.g. H) --kanji オ プションを指定することにより漢字で出力することもできます (e.g. 平成) また, --meiji, --taisho, --showa, --heisei オプションにより, 和暦か ら西暦に変換することもできます. OPTIONS: --meiji value, -M value 明治から西暦に変換します (default: 0) --taisho value, -T value 大正から西暦に変換します (default: 0) --showa value, -S value 昭和から西暦に変換します (default: 0) --heisei value, -H value 平成から西暦に変換します (default: 0) --kanji, -K 元号を漢字で出力します --help, -h このヘルプを表示します --version, -v バージョンを表示します
インストール
Homebrew
$ brew tap ebc-2in2crc/wareki $ brew install wareki
Developer
$ go get -u github.com/ebc-2in2crc/wareki/...
手動
https://github.com/ebc-2in2crc/wareki/releases からダウンロードした zip ファイルを展開した中にあるファイルを、パスの通ったディレクトリに入れる。
動機
「今年は平成何年だったかな?」が覚えられなくて作りました。ブラウザで「平成」をググればすぐに出てくるのですが、それも面倒だったので。
実装言語が Go なのは、以前チュートリアルをやったきり触っておらず文法そのほかすべてをきれいに忘れてしまったので、再入門するつもりで選びました。
まとめ
バグとかあると思いますし、「おそいよ!」とか「こーしたら使いやすくなる」とかあったら、イシュー作ったり声かけてもらえると嬉しいです。
ということで wareki コマンド の紹介でした。
外から得られた学びを自分たちの現場に適用するには? まずは、現場の状況や制約に照らし合わせることから始めよう - カイゼン・ジャーニーを読んで
私たちも数多くの挫折を味わってきました。やはり、現場を変えるなんて一人では進めることができないのでしょうか。
そんなことはありません、ということが言いたくて私たちはこの本を書きました。一人から行動を起こすことはできます。そして、その行動が次の進展をつくります。この本では、私たち自身がこれまで経験し、実践してきたことを下敷きにして、どのようにして始めて、周りを巻き込み、前進していくのかを具体的に示しました。
私たちは、この本が現場を変えていく人たちに寄り添う存在になって欲しいと願っています。(Foreword より)
早いものでもう4月。1年の4分の1が過ぎ去った事実をなかなか受け入れられない時期ですが、そんな時期に今年最高の1冊になるだろう素晴らしい本に巡り会えたので、感想を記しておきたいと思います。
読んだのは、Twitter のタイムラインで話題をさらっているカイゼン・ジャーニーです。
ストーリー仕立てでとても読みやすく、そして全編にわたって学びがあるのですが、その中でも「最初の一歩はこれ!」と強烈に思わされたことが、まさに第1部の第01話に書かれていました。
外に出て知見を得ていくにあたって、覚えておかなければならない大事なことがある。外から得られた学びを、そのまま自分たちの現場や仕事に適用しようとしても、たいていうまくいかない。自分たちの「状況」に照らし合わせてみることが必要だ。(013ページより)
ところで、これはどういうことなのでしょうか? すぐあとに「うまくいかない」具体例が書かれています。
これは、キーワードだけで技術やプロセス、プラクティスを引っ張ってきて、現場に手段のみを持ち込もうとしたときも同じことが言える。キラキラした言葉に心を持っていかれてはならない。(013ページより)
たとえば、自分の Twitter のタイムラインやはてなブログでは、
- 実業務ではアジャイルなど使い物にならない!と言われた
- Git を使えないどころか部内には知っている人が誰一人としていなかった
- テストコードを書くと工数がかかるからダメだと言われた
- プロジェクトに関係のない活動は一切禁止と言われた
こういったツイートやエントリーを目にしない日はない、IT 業界あるあるネタの1つです。
社内の状況や文化に不満を感じる日々、発奮して社外の勉強会に参加してみた→素晴らしいスピーチ! 実際に成されたカイゼンとその原動力となったプラクティス!→自分も社内でやってみよう!!→よくて無反応、ともすれば猛烈な反発にあう→社内の文化も組織も人もまるでだめ、向上心も技術者としてのプライドもない人たちばかり……ことの大小はあれ、Twitter やはてなブログでもよく目にする話しですし、多くの人が経験していることだと思います。
では、どうすればいいのでしょうか?
実際に現場をカイゼンする原動力となった技術やプロセス、プラクティス……そういったものを使わずして、自分たちの現場をカイゼンすることが出来るのでしょうか?
当然浮かび上がってくる疑問ですが、その疑問に対する答えも用意されています。
私たちは、他者の実践の背景にどんな状況、制約があったのかを理解し、自分たちの状況、制約の下ではどのように実践するべきなのか捉え直さないといけない。(013ページより)
自分は SI 業界の経験が長いので、たとえとして ERP パッケージを会社に導入することが浮かび上がりました。
たとえば、高価な ERP パッケージを買ってもそのままではおそらく業務は成り立ちません。会社の業務に合うようにカスタマイズするのか、逆にパッケージに合うように業務を変えてしまうのか、あるいは費用と効果がバランスする妥協点を見つけ出すのか……やり方の幅も深さもさまざまですが、少なくとも ERP パッケージを買って導入して終わり、ではありません。
つまり、技術やプロセス、プラクティスというものも、他者が成功した実践そのままを自分の現場に持ち込もうとしても、うまくいくはずがないということです。成功した他者が実践している技術やプロセス、プラクティスがどんなに優れていても、カイゼンに成功した他者と現在進行系で苦しんでいる自分の現場とでは、そもそも練度がまったく違いますから、成功した他者が実践していることをそっくりそのまま自分の現場に持ち込むのは非現実的です。
実際に現場をカイゼンする原動力となった技術やプロセス、プラクティスは当然持ち込むし使うとしても、なにを・いつ・どうやって・どこに・どれくらい持ち込むのか、これを考えて持ち込まなければなりません。
自分の現場はなにが足りていないのか? 組織の文化はどうなっているのか? その組織を構成する一人ひとりはどう考えているのか? 日々忙殺されている業務のなかで、何ができるのか・何からなら始めていけるのか? ……それを考えずして技術やプロセス、プラクティスを持ち込んでも労多くして功少なし、でしょうが、それを考えることができれば、それがカイゼンを成功させる第一歩になる。第1部の第01話の解説役である石神氏はそう説いています。
これを読んだとき、「この本は絶対にすごくいい本だ」と感じました。そして、実際に読み終わってもその印象はまったく変わりませんでした。
折に触れて読み返したい、そう思った本です。
最後に、誰もが気になる江島のモデルについて Afterword から引用させてもらって、感想を〆ます。
江島には特定の中身なんてなくて、状況を変えようと奮闘する人たちそれぞれの人にとっての分身なのだと思います。私たちは、この本の主人公が読者のみなさんの分身であって欲しいと思っています。
日本中の現場に、この本のようなお話が生まれることを願っています。今度は、あなたのお話を聞かせて欲しい。主人公はあなただ。(Afterword より)
zlib を利用してデータを圧縮 / 展開するコマンドを作りました
zlib を利用してデータを圧縮 / 展開 *1 するコマンドを作りました。
書くこと
- なにができる?
- 使い方
- インストール
- 動機
- まとめ
なにができる?
- データを zlib で圧縮
- zlib で圧縮 されたデータの展開
これらをしてくれるコマンドです。
使い方
ファイルの圧縮
$ echo -n 'zlib' > decompressed.txt $ zlib --compress < decompressed.txt > compressed.txt
圧縮ファイルの展開
$ zlib --decompress < compressed.txt zlib
展開と BASE64 デコード
$ echo -n 'eJyryslMAgAEZAGy' | base64 --decode | zlib --decompress zlib
ヘルプ
$ zlib --help zlib is row zlib compression commandline program. usage: zlib [options] -c, --compress compresses the input -d, --decompress decompresses the input -h, --help display this help -v, --version display program version
インストール
Homebrew
$ brew tap ebc-2in2crc/zlibcmd $ brew install zlibcmd
手動
https://github.com/ebc-2in2crc/ZlibCmd/releases からダウンロードした zip ファイルを展開した中にあるファイルを、パスの通ったディレクトリに入れる。
動機
zlib はほとんどのプログラミング言語がライブラリーを提供していますが、フロントエンドのツールが見当たらなかったので作りました。 *2
実装言語が Java なのは、書こうとしたときに「Java なら Inflater クラス使えば OK」と教えてもらったからです。書いているときはあとで Go で書き直すつもりでしたが、コンピュータ業界には Goを禁止 *3 している会社も少なからずあることを思い出し、これはこれで残すことにしました。
自分が扱うデータ量が少ないので、実行効率とかはあまり考えていません。
Ruby ならこんなに楽だった
#! /usr/local/bin/ruby require 'zlib' inz = Zlib::Inflate.new STDIN.each { |line| puts inz.inflate(line) }
まとめ
バグとかあると思いますし、「おそいよ!」とか「こーしたら使いやすくなる」とかあったら、イシュー作ったり声かけてもらえると嬉しいです。
ということで zlib コマンド の紹介でした。
Eclipse Oxygen で SVN プロジェクトをインポートして Validate Repository Location operation failed になったときのメモ
Eclipse Oxygen の Subversive プラグインで SVN プロジェクトをインポートして Validate Repository Location operation failed になったときのメモ。
環境
- mac OS Sierra
- Eclipse Oxygen (4.7.1a)
- Subversive 4.0.5
起こったこと
SVN プロジェクトをインポートすると Validate Repository Location operation failed と表示され、インポートができない。
メッセージにしたがって Preferences > Team > SVN > SVN Connector タブの SVN Connector を確認すると、たしかに空欄になっている。しかし、GetConnectors ボタンからコネクターをインストールしても状況は変わらない。
やったこと
Help メニュー > Install New Software を選択して、Work with: 右の Add ボタンでリポジトリーを追加する。
Work with: で追加したリポジトリーを選択して必要なものをインストール。
これで SVN プロジェクトをインポートできるようになる。
参考にしたページ
Mac の日本語入力ソース選択に Ctrl + Space を取られて Eclipse のコンテンツ・アシストが効かなかったときのメモ
Homebrew で MySQL のバージョンを指定してインストール
Homebrew で MySQL の古いバージョンをインストールしたときのメモ。
複数のバージョンをインストールするようなことは考慮していないので注意。
書くこと
- 環境
- やったこと
やったこと
インストールしたいバージョンがあるか確認
インストールしたい MySQL のバージョンがあるかを brew search で確認。
[shrimp]$ brew search mysql ==> Searching local taps... automysqlbackup mysql-cluster mysql-sandbox mysql@5.5 mysql mysql-connector-c mysql-search-replace mysql@5.6 mysql++ mysql-connector-c++ mysql-utilities mysqltuner ==> Searching taps on GitHub... caskroom/cask/mysql-connector-python caskroom/cask/mysql-shell caskroom/cask/sqlpro-for-mysql caskroom/cask/mysql-utilities caskroom/cask/navicat-for-mysql ==> Searching blacklisted, migrated and deleted formulae...
ここでは MySQL の 5.5 と 5.6 の Formula があるので、5.6 をインストールしてみる。
brew install する
brew search で確認したバージョンを指定して brew install する。
[shrimp]$ brew install mysql@5.6 ==> Downloading https://homebrew.bintray.com/bottles/mysql@5.6-5.6.37.sierra.bottle.tar.gz ######################################################################## 100.0% ==> Pouring mysql@5.6-5.6.37.sierra.bottle.tar.gz ==> Caveats A "/etc/my.cnf" from another install may interfere with a Homebrew-built server starting up correctly. MySQL is configured to only allow connections from localhost by default To connect: mysql -uroot This formula is keg-only, which means it was not symlinked into /usr/local, because this is an alternate version of another formula. If you need to have this software first in your PATH run: echo 'export PATH="/usr/local/opt/mysql@5.6/bin:$PATH"' >> ~/.zshrc For compilers to find this software you may need to set: LDFLAGS: -L/usr/local/opt/mysql@5.6/lib CPPFLAGS: -I/usr/local/opt/mysql@5.6/include To have launchd start mysql@5.6 now and restart at login: brew services start mysql@5.6 Or, if you don't want/need a background service you can just run: /usr/local/opt/mysql@5.6/bin/mysql.server start ==> Summary 🍺 /usr/local/Cellar/mysql@5.6/5.6.37: 345 files, 154.2MB
バージョンを確認
brew install でも出力されているけど、一応確認しておく。
[shrimp]$ /usr/local/opt/mysql@5.6/bin/mysql --version /usr/local/opt/mysql@5.6/bin/mysql Ver 14.14 Distrib 5.6.37, for osx10.12 (x86_64) using EditLine wrapper
あとは必要な初期設定をしていく。
Mac のファンクションキーを標準的なファンクションキーとして使う
新しい Mac を使い始めてファンクションキーのデフォルト動作がなじまなかったときのメモ。
Mac のファンクションキーのデフォルト動作
Apple サポート によると、Mac のファンクションキーのデフォルト動作は以下のようになっています。
デフォルトでは、これらのキーのいずれかを押すと、そのキーに印字されている記号が表す特殊な機能が実行されます。たとえば、スピーカーのマークが印字されているキーを押すと、音量を調整できます。
これらのキーを標準的なファンクションキーとして使う場合は、「fn」キー (通常、キーボードの左下にあります) を押しながらファンクションキーを押します。たとえば、「fn + F10」キー (スピーカーアイコンが刻印されているキー) を押すと、消音の入/切が切り替わるのではなく、「F10」キーに割り当てられた機能が実行されます。
個人的には後者の動きのほうがなじむので、そのように設定します。
やったこと
Apple サポート に書かれているとおりにするだけです。
1. Apple メニューの「システム環境設定」を選択します。
2.「キーボード」をクリックします。
3.「キーボード」タブがハイライトされていない場合は、クリックします。
4.「F1、F2 などのすべてのキーを標準のファンクションキーとして使用」を選択します。