/var/log/study

つまり雑記

Emacsでドキュメントを読む

2017年、何としてもemacsを捨てたい気持ちと、emacsの使い方を学んでしまいより快適な環境が手に入ることによる喜びで葛藤が生まれています。

そんなことはさて置き、emacsで諸々のドキュメントを読む方法を軽く纏めます。

man

標準パッケージの woman を使えば良い

M-x woman の後に適当に知りたいコマンドを叩く

python

helmを使う前提になってしまうが、以下を参考に、helm-pydoc.elを使う

syohex.hatenablog.com

golang

github.com

go-modeから引ける

M-x godoc の後に、適当にパッケージ名を入れる

ansible

以下を使う

yaml-modeと連携するので、yaml-modeを先にインストールしておくのがベター

github.com


以下は軽く調べて無かったもの

  • Dockerfileのためのドキュメントを見る.el
  • docker-compose.ymlのためのドキュメントを見る.el

2015年以降に増えたgTLDにご注意を

仕事でネームサーバーを扱うことになるかもしれなくて、DNSとはどのような働きをするかを調べてるうちに、 ふと思い立って、 .cloud ドメインがあるかないかを調べてみた。

結果としてはあったのだが、それはさて置き、それ以外も調べた結果、現在所属している会社的に取られたらまずそうなドメインを2こほど抑える結果となった。

調べた過程で分かったこととして、 fujitsu.cloudntt.cloud あたりは全然関係のない外国の方が抑えている

なにやら2015年あたりに増えたgTLDあたりが割とノーマークになっている様子

現在のTLDのリストは以下で観れる

厄介なのは、 .コム (xn--tckwe) などの文字列に対してaliasが貼ってあるドメイン。政府などがあるが、読みを見るに中国のドメインっぽい。「グーグル」なんてドメインもあるらしい。

真面目に調べたら、これ抑えられていなくて良いのか?というやつが山ほどある気がするので、転売目的の方などに取られて不要なお金を支払う羽目になる前に各自ご注意を.

メンテナンス用データを生成するツールについて僕の思う事

結論

bin/rake db:migrate

機械的に 実行されるような環境が最強だって事に気がついた.

不要な中間形式もなく、誤ったデータを使う可能性もかなり減らせる.

良いと思う所

手動で bin/rake db:migrte すると考慮すべきパターンが増えるため, 機械的に が超重要. 考慮すべき間違いが減る. おそらくは, 間違ったデータを挿入しないか否かだけを考慮すべき状態になる.

また上記のコマンドは暗黙的に、gitできちんとワークフローを回していれば、productionやstagingに取り入れられて問題ないとされるデータしか入ってこないはずなのも良い点である.

但し書き

bin/rake db:migrate

でokなのは、ActiveRecordを使ったプログラミングがみんな出来る前提なので、そこら辺だけ要考慮

BSD系のコマンドを読む下準備

TypeScriptのブログを書くと言っていたけど, そんな暇もなさそう.

業務で色々なプロトコルに触れて(OSIで言うところのデータリンク層~アプリケーション層まで), わからないことだらけで困っているのが現状です.ただ分からないと嘆くだけでは前進できないので, せめてwebシステム開発の出身なんだから, HTTPサーバーを切り口に色々と勉強しよう!と思ったわけです.web上の人達もサラッとhttpサーバー書きました!みたいなノリなので.

まぁ結果としては、C言語を殆ど触ってこなかった自分としてはムズい.

もう少しレベルを下げて, まずC言語を取得しよう!というところに焦点を当てて勉強をしようと思った際に見つけた記事が以下

lsコマンドをハックしてみよう - Yahoo! JAPAN Tech Blog

なるほど. 過去の(現在でも?)yahooでは新人にBSD系のコマンドを読んで学習することを推奨しているのか.ならば自分も取り組めるのではないか?というところで, 本日はその下準備.

必要なもの

前提

普段は CentOS + zsh + tmux + emacs で作業をしているので, それっぽい環境に近づけたい

準備

  1. VMに対してisoでFreeBSDをインストール
    1. tuiに乗せられて適当にエンターを押していけば問題なし
    2. その過程で適当にユーザーを作る
    3. 作ったユーザーを wheel グループに属させる
    4. pkg install sudo
    5. visudowheel ユーザーに sudo する権限を与える
  2. 適当に作ったユーザーでsshし、zsh tmux emacs git あたりをインストール
    • 手軽にzsh環境を整える為に、oh-my-zshを導入
    • emacsの環境を整えるのに、Cask を使っているので、それをインストールする為に, curl python を導入
  3. GitHub - freebsd/freebsd: FreeBSD src tree (read-only mirror) から git clone してくる

詰まったこと

  • yahooブログには適当にファイルを揃えろって書いてあったし, 適当にlsディレクトリ配下をコピペして持ってきたけど動かなかった.
    • 執筆当時はそれで良かったのかもしれない
  • BSDの初期環境はCentOSと違いすぎて色々と戸惑った.
    • sudo 無い
    • ココらへんは無いものだらけだって事が分かったら後はスムーズに作業出来た

Angular2のチュートリアルに取り組んだ感想

angular.io

上記のページの配下の

Tutorial: Tour of Heroes - ts - TUTORIAL

に取り組んだ後の感想を書く.

背景

12月の配属発表で, 今後はJSを書くことはほぼ無い事が確定したと思っている.

であるならば, 正月くらいは今後触らないであろう技術に積極的に触っていくのが吉では無いかと考えた.

去年はES6とReactでSPAもどきを作るくらいは頑張ってみたが, その組み合わせ自体は良いと思いつつ, ビルドの環境を作るのが面倒だし, ボイラープレートを適当に拾うのも面倒だし, ReactとES6以外のライブラリどうするか問題があるし.

本職としてJSを書き続けるならまだしも, 片手間でJSを書くのに色々と選ぶのは面倒くさい.

そんななかで, Angular2はTypeScriptを採用して, フルスタックにライブラリ(RouterやHTTPクライアント)を持っていることをふと思い出した.

JSに関する事前知識

  • Angular
  • Backbone
  • CoffeeScript
  • 上記はいずれもプロダクションのコードを書いた経験あり

  • ES6は体験済み

  • Reactも体験済み
  • ただし両者ともプロダクションでの経験ではない

  • TypeScript未経験

  • RxJSも未経験

取り組んだこと

2016/12/31 ~ 2017/1/2 にかけて開いてる時間をちょこちょこ使い,

Tutorial: Tour of Heroes - ts - TUTORIAL

上記の英語のうち, Angularに関する解説はほとんどすっ飛ばし, 何がやりたいのか?だけを拾って, ひたすらサンプルコードを書き写す作業に取り組んで, TypeScriptとAngular2の雰囲気をつかんだ.

感想

ほとんどの解説を飛ばしたので, よくわかってないところ, 認識が間違っている事はたくさんある前提で

環境

github.com

上記のリポジトリを引っ張ってきて, npm install && npm start で即始められる体験は最高に良かった.

が, 上記のボイラープレートは, ファイルの変更とブラウザとを同期するタイプなので, 最初のうちは, TSのコンパイルが失敗してたのを見落とすと??? という感じの状況が長く続いた.

またこのボイラープレートは, コンパイル対象の ts ファイルと同じディレクトリに js.mapjs ファイルを吐く. 要は 'js' と 'js.map' と 'ts' が混在することになる

色々考えると tsjs は別ディレクトリに吐かれて欲しいので, プロダクション環境で使うときに要検討の箇所になると思う.

すこし調べた感じだと、TypeScriptのコンパイラの設定でどうにかなりそう.

Angular2に関して

チュートリアル程度ならば、

ビルドの環境を作るのが面倒だし, ボイラープレートを適当に拾うのも面倒だし, ReactとES6以外のライブラリどうするか問題があるし

上記の問題はほぼ解消

サーバーサイドのプログラミングを書いているときと、似ているような考え方で写経できたという感想.

  • module
  • service
  • component
  • 通常のClass

Angularのコードは上記したように分類が出来るっぽい. MVCモデルとマッピングするとしたら, componentがContoller, serviceがModel, htmlがviewになるのかな? componentの中で, templateのhtmlとそれに対するcssをパスで設定出来るのは結構良いのではないか? と思った. ただし, templateはAngular1の頃と同様に、 ngIf みたいな文法が入ってくるのは個人的に好みではない.

jQueryのコードと比較して, Angular2やReactの様に, コードに対してテンプレートが紐付いている状態は色々と考えることが少なくて済むのは非常にデカイ.

DIは良いよね!って感じなんだけど, DIするにはInjectable書けばそれっぽくなるでしょ?くらいの理解しか現状ない. たぶんAngular2のDIを知るとかよめばすんなり理解できそう.

この次に取り組むべきだと感じたこと

  • TypeScriptの文法を固める
    • tscの仕様をもう少し探る
  • RxJSとは何か?を学ぶ
  • Angular2に関する理解を深めるために、チュートリアルの解説を読みながら再度取り組む

以上のような流れになると思うので, TypeScriptの文法とtscを抑えると思う. ので, たぶん次の記事はTypeScriptの話になる.

FireFoxのユーザープロファイルを消したら軽くなった

メモ程度の話し

ターゲットのOSはmac

/Applications/Firefox.app/Contents/MacOS/firefox-bin -P

上記のコマンドで、ユーザープロファイルが意図しない数になっていたらそれを消したら軽くなるはず。

なにやらユーザープロファイルを使い分けるテクもあるらしい. が、自分はそんなテクを使ってなくて本来1つしかないはず. なのに2つのプロファイルがあったので消した.

自分の環境ではFirefox, osともに再起動しても, Addonを消しても, 履歴を消しても全然軽くならなかったfirefoxが軽くなった.

OSXからESXi 6.5.0 にvCenter6.5.0をインストールする際のエラーに対処する

やりたいこと

タイトルどおり、vCenter6.5.0をESXi6.5.0に対してインストールしたい

問題点

途中で色々とエラーが出る.

エラーログを見る感じ、インストールの過程で必要なファイルが見れないとのこと

自分の試行錯誤中のエラーログは以下のような感じ

2017-01-07T14:21:58.757Z - error: Could not find ovaFile /^VMware-vCenter-Server-Appliance-.*_OVF10.ova$/ in /private/var/folders/lk/jk8fbl3s4qgc7fzz7r3wxn300000gn/T/AppTranslocation/vcsa
2017-01-07T14:21:58.757Z - info: ovaFile: null
2017-01-07T14:21:58.758Z - error: OVF probe error: Error: OVA file is not available

参考URL

sflanders.net

上記のページを読みながら取り組みましょう.

ざっくりとした流れ

VMware-VCSA-all-6.5.0-4602587.iso (これは自分が 2017/1/7にmy vmware からダウンロードしたiso) をマウントする.

すると以下のようなディレクトリ構成になるはず.

.
├── dbschema
├── migration-assistant
├── readme-de.txt
├── readme-es.txt
├── readme-fr.txt
├── readme-ja.txt
├── readme-ko.txt
├── readme-zh-CN.txt
├── readme-zh-TW.txt
├── readme.txt
├── umds
├── vcsa
├── vcsa-cli-installer
└── vcsa-ui-installer

そのなかから vcsa-ui-installer/mac/Installer を起動する.

インストーラーの案内に沿ってポチポチ押すと、途中でエラーが発生するので,そこで出て来るアラートに, log というリンクがあるから, そこを押すとログファイルがダウンロード出来る.

ログファイルの一番下に、

/private/var/folders/lk/jk8fbl3s4qgc7fzz7r3wxn300000gn/T/AppTranslocation/

上記のようなパス(おそらく環境によって異なるはずなの)が記載されているはずなので、そこに対して、マウントしたisoのvcsaをまるっとコピーする.

cp -a /Volumes/CDROM/vcsa /private/var/folders/lk/jk8fbl3s4qgc7fzz7r3wxn300000gn/T/AppTranslocation/

すると自分の環境ではインストーラーが上手く進み始めた