ビットの海

ゆるふわソフトウェアエンジニアしゃぜのブログ

Visual Studio Code で yaml to json

marketplace.visualstudio.com

YAML to JSON っていう extension でやってみる。

$ code foo.yaml

して、

f:id:shase428:20211018155743p:plain

適当な yaml を書き、cmd + shift + p して、「YAML to JSON:Convert selection or document」をぽちっとする。

f:id:shase428:20211018155923p:plain

こんな感じの json になる。

そのまま保存すると、 foo.yaml に保存されてしまうので、 cmd + shift + s で別のファイル名を指定して、必要に応じて保存する。

あと、当然だが、yaml のコメントは json にすると消えてしまう。

Mac で しゅっと Embulk 動かす (2021年9月版)

以下はもう古いです。

新しい記事 : Mac で しゅっと Embulk 動かす (2022年5月版) - ビットの海


たまにしか触らないと、Java 8だったっけとか、dl.embulk.org 死んでるんだっけ、とか毎回忘れるわけですよ。 あと、 /usr/libexec/java_home -v の指定で、patch バージョン要らんとかも毎回忘れる。

brew install adoptopenjdk8

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`
java -version

export EMBULK_VERSION="0.10.33"
curl --create-dirs -o ~/.embulk/bin/embulk -L "https://github.com/embulk/embulk/releases/download/v${EMBULK_VERSION}/embulk-${EMBULK_VERSION}.jar"
chmod +x ~/.embulk/bin/embulk

~/.embulk/bin/embulk --version

「経営学のフィールドリサーチ」を読んだメモ

随分前に買ったけど、本棚でホコリを被っていて、本棚整理で出てきたので何気なく手にとってみたら面白かった本。

概要としては「企業とその組織の実例(ケース)を研究するための方法論についてやさしく解説することを目的とした」(エピローグより)ということだそう。

内容としては上記のとおり、ケース・メソッドとケース・スタディをあわせた、フィールドリサーチをどうやってやっていくか、という実践的な内容です。

別に自分は研究者ではないけれど、特にSEをやっていたときに、既存の(システム運用などの)業務を改善せよ、みたいなことを仕事として渡され、何もわからずやっていた時期がちょっとだけあります。

SEを辞めて事業会社でソフトウェアエンジニアをするようになってから、アウトプットとしてのドキュメントを求められるような仕事はしなくなったものの、事業会社の中で、何かを改善せよ、みたいな話はポツポツ出てくるものです。

そのときに、自分が当事者として経験した業務ではない場合(たとえば、運用たことのないシステムなど)、コンサル風な感じで、現状把握をして、こうしたらいいんじゃない?みたいな(ときにはその改善自体を実践)することはよくあります。

自分は、人文系のフィールドワーク等の学問を学んだことや、コンサルの会社に居たわけでもないので、概ね我流でなんとかそういう場面を切り抜けてきたのですが、ふと、このアプローチってどうなんだろうと我に帰ることがあります(昔は フィールドワークコンサルティング というのも参考にしたりしていました)。

というわけで、多分この本をポチったと思うんですが、フィールドワーク関連の面白さはさることながら、経営学という学問のおもしろさも感じることができました。

特に以下のような記述は、多分に刺激的ではないでしょうか?個人的にはまさに!と思ったりしました。

第3章 部分と全体ーケーススタディをどう使うのか、より

ほとんどの企業にとって、唯一の目的は、利潤の最大化なのです。在庫コストの最小化はそのための一手段にすぎません。それを分解して、在庫問題というように切った瞬間から、もう最適化の基準としては在庫コストの最小化でやるしかなくなるわけです。

ところが、在庫コストを最小化するために、提示されたソリューションを実践すると、営業部門、他の工場、サプライヤーなど、いろいろなところに迷惑をかける結果になるわけです。これはなぜかというと小さく問題を切り出すために、企業のある一つの断面しか見られなくなってしまうからです。ところが、変数は一つの断面に収まりませんから、それを動かすとモデルの外で必ず影響が出てしまいます。そうなると企業全体にとっての最適化にはならないのです。

bashで yyyy-mm-dd の連続生成

  • GNU dateを使用
  • なんかもうちょっとスッキリと書けないものか...。
#!/bin/bash

START_DATE="20201224"
END_DATE="20210103"
DATE_CMD="gdate"

for (( DATE=${START_DATE} ; ${DATE} <= ${END_DATE} ; DATE=`${DATE_CMD} -d "${DATE} 1 day" '+%Y%m%d'` )) ; do
  TARGET_DATE=`echo ${DATE:0:4}-${DATE:4:2}-${DATE:6:2}`
  echo ${TARGET_DATE}
done

実行結果

2020-12-24
2020-12-25
2020-12-26
2020-12-27
2020-12-28
2020-12-29
2020-12-30
2020-12-31
2021-01-01
2021-01-02
2021-01-03

Elasticsearch チートシート

クエリパラメータ

  • responseの整形
    • ?pretty
  • カラムヘッダの表示
    • ?v

Index操作

  • index一覧
    • GET /_cat/indices?v
  • index削除
    • DELETE /{index_name}}
  • index open
    • POST /{index_name}/_open
  • index close
    • POST /{index_name}/_close

Alias操作

  • alias 一覧
    • GET /_cat/aliases
  • aliasにindexをremoveして、add
POST /_aliases
{
  "actions" : [
    {"remove": {"index": "{index_name_v1}", "alias": "{alias_name}" }},
    {"add" :   {"index": "{index_name_v2}", "alias": "{alias_name}" }}
  ]
}'

検索

  • 無条件検索
    • GET /{index_name}/_search

監視

古い index の自動削除設定

PUT /_cluster/settings
{
    "persistent": {
        "xpack.monitoring.exporters.__no-default-local__": {
            "type": "local",
            "enabled": true
        }
    }
}

GET _cluster/settings?filter_path=*.xpack.monitoring.exporters

neovim で vim-test から pytest を実行する

久しぶりにvimの話。 こんな感じでneovimで、vim-testからpytestを実行します。

f:id:shase428:20210218000200p:plain

pluginと設定

今回は2つのpluginを使用します。

name description
vim-test/vim-test 汎用テストRunner。様々なテストツールに対応。
kassio/neoterm neovim向けの高機能terminal

自分は dein の tomlでplugin管理をしているので以下のような感じで追記します。

  [[plugins]]
  repo = 'kassio/neoterm'

  [[plugins]]
  repo = 'janko-m/vim-test'
  depends = ['neoterm']
  hook_add = '''
    let g:neoterm_default_mod='belowright'
    let g:neoterm_size=10
    let g:neoterm_autoscroll=1
    let g:neoterm_shell = '$SHELL -l'
 
    let g:test#strategy = 'neoterm'
    let g:test#preserve_screen = 1
    let g:test#python#runner = 'pytest'
    let g:test#python#pytest#executable = g:project_pytest
  '''

少しだけ解説すると

let g:test#strategy = 'neoterm'

^ vim-testのstrategyとしてneotermを指定しています(ほかにもいろんなツールに対応しています)

let g:test#python#runner = 'pytest'

^ この部分でtask runnerを指定しています。

let g:test#python#pytest#executable = g:project_pytest

^ この部分は g:project_pytest をinit.vimのほうで定義していて、実際にprojectで使うpathのpytest(venv/binのpytest)を指定しています。

これらを設定した状態で、vim-testのコマンド( :TestFile など)を実行すると、neotermが立ち上がり、pytestが実行されるようになります。

キー周りのカスタマイズはおいおい...。

エンジニア35歳定年説を過ぎて36歳になって思うこと

はじめに

  • 10年前の2011年1月(当時26歳)にはじめての転職をしたんだけど、それから10年かーとしんみりしてしまった。
  • 初めての転職のときに、今何を考えているか、のブログを書いていて(現在非公開)10年後の46歳のときに振り返りしたら面白そうだなと思って書いてみる。
  • 別に36歳で転職するって話ではない。
  • 具体的な技術の話は出てきません 。

  • 2007年に新卒でSEになり、数社を転々としてまだソフトウェアエンジニアをしている
  • 子供が2人(3歳と0歳)
  • インフラやったり、開発やったり、プロマネやったり、データ周りやったり中途半端なキャリアとスキル

今考えていること、思うこと

人生の主人公が交代

子どもがいる人だとわかると思うけど、子どもがいると人生の主人公が交代していく感覚がある。将来ある子どもを差し置いて、自分のために投資するのがだんだん非合理に思えてくる(今の時点ではそこまでではないけど薄々)。

とはいえ、同級生で早く結婚して子どもがでかくなった友人曰く「10歳でかなり自立した(例:親と買い物とか行かなくなった)」って話なので、10年ぐらい子育てしたらまた違う景色が見えていそう。なので、過度に自分を殺しすぎずなんとか10年を過ごしたい。

40歳がリアルに見える

22歳で社会人になって30歳の状態みたいなのがまったく見えなかったけど、26歳になると(なれるかはともかく)理想の30歳時点の自分みたいなのがぼんやり定義できるようになった。

で、30歳のときは40歳を想像できなくて、キャリアも多少迷走感があったんだけど、35歳すぎると、40歳がリアルになってくる。他の人はわからないけど、自分は5年後ぐらいになるとリアリティが出てくるらしい。介護保険料の徴収開始やだな、とかも思っている。

なので、50歳の自分はまったく想像できない。親の介護問題に悩んでいるのかもしれない。

いきのこれるのか

手を動かすのを辞めなければ(あと健康であれば)エンジニアで食っていく、という最低ラインはなんとかなるかなと楽観的。とはいえ、最低ライン以上のスペシャリティを持った存在になれる(それを維持できるか)は見通せない。

周りと見渡すとエンジニアを卒業してしまった同年代も多いし、景気変動はあるし、若い人が知の高速道路を通ってやってくる。

強い専門分野が無いのが本当に致命的だなと思っている今日このごろ。

今はとりあえず40歳前後までエンジニア行けるところまで行こうかなと。

他の仕事もできないので、広い意味でIT業界/IT関連職種でなにかやっているんだろうなとは思う。

スキルのアンラーニング

新卒の頃一番やってたのは、OSとVMwareとハードウェア(サーバ・ストレージ・ネットワーク)周りのインテグレーションで、クラウド全盛の時代、このあたりの知識を活かすポジションはどんどんなくなっているし、キャリアチェンジしたのもあってもう10年ぐらいこういう基盤触っていない。

(例えば、とあるベンダーのSANストレージとLinuxのDevice mapper multipath の設定で悩んだ経験とかもう一生知識の引き出しからは出さないと思う)

パタヘネみたいな計算機の仕組みとかCとかTCP/IPみたいな枯れたものはともかく、ちょっとした製品知識、クラウドの知識、プログラミング言語知識、フレームワーク知識みたいなのは、速攻で陳腐化する運命なので、絶えず気合でアンラーニングするという気持ちでいれば食えるぐらいのスキルはなんとかなるかなと。単に食える以上となると難しいんだけど。

根本的には大学院とか行って、がっつりインプットしたい気持ちはあるけど、子どもとの兼ね合いになってくる。

健康

健康を気にするって時点で、オッサン化したなって気はする。幸い今の段階で持病等はない。1つあるとすれば、代謝が落ちてるせいか太りやすいのと運動不足な点。

40前後で1回ガッツリ人間ドック行ったほうがいいかなとは思っている。

20代は死ぬほど残業してたけど、もうあんな生活はできない。

遠い将来

人生をかけてxxを実現したい、みたいな大目標はまったく無いので、中目標、小目標を適時設定して日々それを達成して楽しく過ごしたい。

急成長スタートアップを立ち上げて〜みたいな志向もまったくないんだけど、人生のどこからスモールビジネス(開業)はやってみたいなとは思っている。