kei0425tan’s blog

技術的なことを主に

GitLab Meetup Tokyo #7: 新年度応援&GitLab 11.0 参加してきました

はじめに

最近勉強会によく参加しています。
参加してしっぱなしなことが多かったので簡単にレポート書いておきます。

GitLab Meetup Tokyo #7

GitLabの交流会第7回だそうです。
場所はサイボウズ社オフィスでした。

最近のITオフィスはおしゃれですね。

こういうところでお仕事してみたいものです。

参加したきっかけ

たまたまネットでGitLab 11がリリースされることを知り、リリースノートをみたところ、今までの認識と全然違ったのでもっといろいろ知りたくなりました。

内容

日本初のGitLab本「GitLab活用ガイド」の作者の北山 晋吾さんによる、「GitLabによるComplete DevOps」の話が中心。

他はLTでした。

「GitLabによるComplete DevOps」

GitLabはただのGitHubのクローンじゃないよという話。
DevOpsが流行っていますが、さまざまなツールがあり、選定が難しくなっています。
GitLabはComplete DevOpsを提唱しており、プランニングからリリース後のフィードバックまですべてを統括して管理できることを目指しています。
開発者、運用者の壁をなくす!

11.0の新機能として、「GCP kubernetes」とも連携できるようになりました。
他にも、競合のGitHubとも連携が可能です。

「How does GitLab manage git repositories?」 (5分)

goで書かれたGitalyで操作しているそうです。連携はgRPC
f:id:kei0425tan:20180413082632p:plain
GitLabのロゴ
ずっとキツネだと思っていたのですが、実はタヌキだそうです。

「GitLabのイシュートラッカー活用術」 (5分)

イシュートラッカーが充実しているので活用しましょう。

「コンテナとGitLab」 (5分)

Dockerのコンテナ内でDockerを起動するdindのデモ

「無料のGitLab.com&その他で毎日オススメカブを見つけてる話」 (5分)

CI機能やGitLab Pagesを活用して、毎日オススメカブ情報を更新。すべて無料で実現。

「State of Community Contributions to GitLab CE & GitLab 11.0」 (5分)

GitLab11.0の紹介。

スポンサーLT (5分)

食事スポンサーのクリエーションライン社による会社案内。GitLabのコンサルもしてくれるそうです。

懇親会(ネットワーキング)

お寿司でした!

懇親会での話では、やっぱり、どこもなかなかgitを普及させるのには苦労しているようです。

おわりに

今までずっとGitLabはGitHubのクローンと思っていましたが、機能的にはGitHubよりも高機能になっていました。
GitHubでは単体ではなく、CIツールやDockerリポジトリなども組み合わせないといけないところが統合されているのが便利ですね。

ただし、結構重いです。Dockerコンテナでも動作しますが、チープなホストの場合、他のコンテナに影響しまくります。
あとは、バージョンアップが激しすぎです。(毎月22日)

jupyter notebookファイルをバージョン管理したい

jupyter notebookの形式をいろいろ調べています。

jupyter 便利なのですが、書き捨てにすることが多く、バージョン管理したいと思ってもなかなかできないので作ってみました。

どういうこと?

jupyter notebookのipynbファイルはjsonなんですが、いろいろと実行時に変わってしまうデータがあって、そのままバージョン管理すると差分だらけで大変。

どうして?

jupyterのjsonの形式は以下になります。

※ ただし、nbformat: 4, nbformat_minor: 2 のもの

  • ルート
キー 種別 内容
cells リスト セルのリスト
metadata 辞書 カーネル情報など
nbformat 数値 ファイルフォーマットバージョン
nbformat_minor 数値 ファイルフォーマットバージョン
  • セル
キー 種別 内容
cell_type 文字 セルの種類code,markdown,rawの3種類
source リスト セルの入力内容。1行毎
metadata 辞書 その他の情報。拡張などで利用
  • cell_type=codeの場合のみ
execution_count 数値 セルの実行回数(In [x]のxの数字)nullで指定なし。
outputs 辞書 出力

他にも、scrolledなどもあるが省略可能。

どうすれば?

こんなのを作ってみました。


gist53010bc269a7056e7f95ab9c19be6d20

使い方

いつもjupyter notebookを直接ライブラリ的に読み込んでいるのでこんな感じ。

%load_ext jupyter_cms
from mywb.ipynbconvert import save_py, load_py

コマンドラインで実行したい人は、mainつけてくださいね。

  • pyに変換

save_py('xxxx.ipynb', 出力ファイル名(省略可能))

  • 上記pyに変換したファイルからipynbに変換

load_py('xxxx.py', 出力ファイル名(省略可能))

注意

マジックコマンドなどそのまま出力されるため、そのまま実行は難しいです。
バージョン管理用ファイルになればよいかと思います。(diffもたぶん見やすいかと)

ダウロードpyとの違い

  • マジックコマンドも表記のまま出力
  • マークダウンコメントを"""で対応
  • In [xx] は省略しているため、実行順など記録しないので差分をとりやすい。
  • メタデータなどの保持(cells以外全て)

※ この前ネットサーフィンしてみたら、このフォーマットで書くと分かりやすいとのことだったのでパクってみました!

jupyterで書いたノートブックをはてなブログに載せたい

今日も朝活しています。
なかなか時間取れないことが多いけど朝はいいですね。

プロントのチーズオムレツセット490円


どういうこと?

最近、jupyterを結構使っています。

前まではとりあえずやってみて、あとから何やったかよくわかんなくなっちゃうことが多かったのですが、jupyterにコメントを書きながらやることが多くなりました。

じゃあ、それをはてなブログにそのまま載せられたらいいのになーって思って調べてみました。

どうして?

ブログ面倒なので少しでも楽に書けたらいいな。

どうすれば?

はてなブログについて

はてなブログにはAPIがあって、投稿とか簡単にできるそうです。

はてなブログAtomPub - Hatena Developer Center

ここの「ブログエントリの投稿」をみると投稿はXML形式で行うようです。

どういう形式なのか具体的によくわからなかったので、「ブログエントリの取得」でエントリも取得できるようです。

ここからはエントリを取得したりしながら色々調べてみたいと思います。

将来的には、jupyterの拡張とかしてボタン一つでアップロードできたらいいな。。。。


※ この前ネットサーフィンしてみたら、このフォーマットで書くと分かりやすいとのことだったのでパクってみました!

朝活2

今日も早く起きれたので朝活

今日はドトールにしました。


ドトールのいいところ

  • 電源がある
  • wi-fiがある
  • タバコが吸える

悪いところ

  • 騒がしい

今日はモバイルバッテリーを充電し忘れたので電源欲しさにドトールにしました。

でも、ついついスマホで遊んじゃってあんまりはかどってないなぁ。
がんばらないと。

朝活

皆様お久しぶりです。

最近ずっと時間がとれなくておさぼりしていました。

なので、今日はちょっと早起きしてプロントで書いています。


プロントはwifiもあっていいですね。
今日はトーストセット390円でした。

これからもなるべくできるときにはやりたいなー

bitcoin買ってみた!

最近、bitcoin流行ってますよね。

ずっと前からビットコイン知ってたんですけど、もう遅いかなってずっと思ってずるずるここまできちゃいました。

でも、やらないよりはやったほうがいいだろってことでやっとはじめました。

bitFlyer ビットコインを始めるなら安心・安全な取引所で

nvmを入れたらscpが動かなくなったときの対処

久しぶりにホスト間でファイルをコピーしようとして、scpを使ってみたら、うまくコピーできなくなっていました。

どういうこと?

scpを実行すると謎?のメッセージが出力されてどうもコピーされていないようです。

$ scp hostname:/home/user/filename .
Now using node v8.2.1 (npm v5.3.0)
$

進捗がでないし、ログインしたときに表示されるnvmのメッセージが表示されています。

どうして?

nvmをインストールするときに、一般的に以下のコマンドを利用します。

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash

これを実行すると、.bashrcに自動的に以下が追加されます。

# nvm
if [ -s ~/.nvm/nvm.sh ] ; then
source ~/.nvm/nvm.sh
nvm use default
fi

一方、scpを実行すると、内部でシェルが起動されるため、.bashrcを実行します。
そのため、nvm use defaultが実行され、「Now using node v8.2.1 (npm v5.3.0)」が表示されてしまいます。
SCPはシェル実行時に標準出力があるとそれを表示して動作を停止してしまう仕様のようです。

どうすれば?

ようするに、シェル実行時に標準出力がなくなればよいのです。

標準出力しない

「Now using node v8.2.1 (npm v5.3.0)」を出力するのは、nvm use defaultです。なので以下のようにしましょう。

# nvm
if [ -s ~/.nvm/nvm.sh ] ; then
source ~/.nvm/nvm.sh
nvm use default > /dev/null
fi

.bash_profileに移す

上記でもよいのですが、そうすると普通にログインした時に、nodeのバージョンが表示されません。
別に表示されなくてもほとんど困らないのですが、せっかく今まで表示されていたので普通に表示させたいですよね。
なので、該当箇所を.bash_profileにそっくり移動してあげましょう。



※ この前ネットサーフィンしてみたら、このフォーマットで書くと分かりやすいとのことだったのでパクってみました!