tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

【vim】.vimrcの変更の読み込む - `-bash: syntax: command not found`な感じで.vimrcの読み込みで失敗するという恥ずかしいメモ

はじめに

vimの設定をぼやーといじっていて.vimrcを読み込もうとしたら
エラーが出て小一時間悩んだのですが凡ミス過ぎて恥ずかしいので思わずメモに残しました。

出るエラーと原因

エラーはこんなんです。

$ source ~/.vimrc
-bash: syntax: command not found
-bash: colorscheme: command not found
-bash: autocmd: command not found
-bash: autocmd: command not found

もう見たら一発なんですが、当たり前だけどbashじゃないからね!
. とか sourcebashコマンドに使うものですしね!
恥ずかしい...(ノД`)・゜・。

対応

ただの凡ミスなので対応というまでもないですが、vimrcの読み込みにはvimを開いているコマンドモード時にこう打ちます。

: source ~/.vimrc

おわり

あたりまえすぎて悲しす(ノД`)・゜・。

【Mac】dateコマンドでunixtime <=> 日時 文字列を相互に変換するメモ

はじめに

何らかのシステムに携わっているときって扱う日付がunixtimeな時多いですよね。

例えば下記のようなときにMacでささっと変換できたら便利だと思います。

  • unixtimeなシステムで、データ確認のために人間がわかる表示で日時を確認したい
  • unixtimeなシステムに、debugのために現在日付をunixtimeに変換して入れたい

そういうwebサイトもありますがわざわざ検索して開いて入力して変換して、、、
というのもあれですしそんな時に手元でささっと変換するメモ。

アジェンダ

  1. dateコマンドそのもの
  2. dateコマンドでunixtimeを日時文字列に変換する
  3. dateコマンドで日時文字列をunixtimeに変換する

1. dateコマンドそのもの

dateコマンドはそのまま打つとosの現在日時を表示してくれます。

$ date
2016年 11月28日 月曜日 14時04分39秒 JST

utc時刻を得たいときは-uオプションで表示できます。

# まんま表示
$ date
2016年 11月28日 月曜日 14時05分51秒 JST

# UTCで表示
$ date -u
2016年 11月28日 月曜日 05時05分51秒 UTC

また、1日前1日後もオプションで指定することで表示できます。

# 今
$ date
2016年 11月28日 月曜日 14時09分08秒 JST

# 1日後
$ date -v +1d
2016年 11月29日 火曜日 14時09分08秒 JST

# 1日前
$ date -v -1d
2016年 11月27日 日曜日 14時09分08秒 JST

dateコマンドではないですが、calと打てばカレンダーで前後の日付も確認できますね。

$ cal
     11月 2016
日 月 火 水 木 金 土
       1  2  3  4  5
 6  7  8  9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30

そしてunixtimeで表示したい場合は ``をつけます

$ date +%s
1480310097

2. dateコマンドでunixtimeを日時文字列に変換する

ということで本題です。

これは簡単で-rオプションに続けてunixtimeを指定すると人間がわかる日時の文字列に変換してくれます。

$ date +%s
1480310553

$ date -r 1480310553
2016年 11月28日 月曜日 14時22分33秒 JST

なんとなく見にくいという場合はフォーマットも指定できます。

$ date -r 1480310553 +"%Y/%m/%d %H:%M:%S"
2016/11/28 14:22:33

3. dateコマンドで日時文字列をunixtimeに変換する

日時文字列からunixtimeへの変換はプログラムなんかでもよくある形を使います。
日付文字列を指定しますが、合わせてマシンがその文字列を理解できるようにフォーマット文字列も添えてあげます。

# 日時文字列をunixtimeに変換する
$ date -j -f "%Y-%m-%d %H:%M:%S" "2016-11-28 14:22:33" "+%s"
1480310553

# 変換したunixtimeを戻してみる
$ date -r 1480310553
2016年 11月28日 月曜日 14時22分33秒 JST

-jオプションは詳細は、
PCの日付を変更してしまうので要注意と書いてあったりしますが権限がなければこんな感じでエラーになるので仮に忘れてもまぁ、、、

$ date -f "%Y-%m-%d %H:%M:%S" "2016-11-28 14:22:33" "+%s"
date: bind: Permission denied
date: settimeofday (timeval): Operation not permitted

まとめ

manを見ればわかりますがここまでで使ったオプションは下記のみです。

# `-u` : UTCで表示
$ date -u
2016年 11月28日 月曜日 05時05分51秒 UTC

# -v :-vに続けて`[+-](数値)(単位)`とすることで`n(単位)[前後]`を表示
# (例えば`n日前`とか)
$ date -v +1d
2016年 11月29日 火曜日 14時09分08秒 JST

# +%s : unixtimeを表示
$ date +%s
1480310097

# -r : -rに続けてunixitmeを指定
# フォーマットは`+"フォーマット文字列"`で
$ date -r 1480310553 +"%Y/%m/%d %H:%M:%S"
2016/11/28 14:22:33

# -j -f : -j -fに続けてフォーマット、日付文字列、+%s
$ date -j -f "%Y-%m-%d %H:%M:%S" "2016-11-28 14:22:33" "+%s"
1480310553

必要そうだったらフォーマットを毎回指定するのは面倒なのでaliasにしちゃってもよいかもしれませんね。

参考

おわり

書いたものの、コレ系は使う機会になるたびに調べてはを繰り返してるので
今後はここに来てさっと知りたい情報が得れれば自分的にはオッケーという自分めもでした

【Mac】macOSのバージョンをターミナル(terminal)で確認する

はじめに

タイトルのまんまですがあしからず。
これ他の記事でもついでに使ってたりするのに
いざversion出そうとするといっつも忘れちゃうので改めてこれだけ載せる自分メモ。

やる

おもむろに sw_vers と打つだけです。
software versionの略とかでしょうか。

$ sw_vers 
ProductName:  Mac OS X
ProductVersion: 10.9.5
BuildVersion: 13F1911

おまけ

あまりに載せる事がないのでおまけにmanでも載せておきます。

$ man sw_vers


SW_VERS(1)                BSD General Commands Manual               SW_VERS(1)

NAME
     sw_vers -- print Mac OS X operating system version information

SYNOPSIS
     sw_vers
     sw_vers -productName
     sw_vers -productVersion
     sw_vers -buildVersion

DESCRIPTION
     sw_vers prints version information about the Mac OS X or Mac OS X Server operating
     system running on the local machine.

     When executed with no options sw_vers prints a short list of version properties:

           % sw_vers
           ProductName:    Mac OS X
           ProductVersion: 10.3
           BuildVersion:   7A100

     The ProductName property provides the name of the operating system release (typi-
     cally either "Mac OS X" or "Mac OS X Server").  The ProductVersion property defines
     the version of the operating system release (for example, "10.2.4" or "10.3").  The
     BuildVersion property provides the specific revision of the operating system as gen-
     erated by the Mac OS X build system.

OPTIONS
     The output of sw_vers can be refined by the following options.

     -productName     Print just the value of the ProductName property.

     -productVersion  Print just the value of the ProductVersion property.

     -buildVersion    Print just the value of the BuildVersion property.

EXAMPLES
     % sw_vers -productName
     Mac OS X

     % sw_vers -productVersion
     10.3

     % sw_vers -buildVersion
     7A100

FILES
     /System/Library/CoreServices/SystemVersion.plist
     /System/Library/CoreServices/ServerVersion.plist

Mac OS X                        March 10, 2003                        Mac OS X
~
~

【vi】viやvimを一時停止してshellに戻る - からのviから抜けたシェルであることをわかりやすくする

はじめに

よくありがちかつ初歩的ですがviやvimからshellにもどって何かを実行したいときのメモ、
そしてviやvimからshellに戻ったことをわかりやすくしたいというメモです。

ながれ

  1. vi/vimからshellに戻る、shellからvimに戻る方法いくつか
  2. vi/vimからshellに戻っている中か確認する
  3. vi/vimからshellに戻っているコトをわかりやすくする

1. vi/vimからshellに戻る、shellからvimに戻る方法いくつか

いくつかと書いてますが大きく下記の2点があります。

  • :(コロン)コマンドで戻る
  • バックグラウンド/フォアグラウンドで戻る

:(コロン) コマンドで戻る

コマンドモード中に :shellまたは:shでshellに戻ることができます。
:shでshellに戻り、shellからviに戻りたい場合はexitを実行します。

次に説明するバックグラウンド/フォアグラウンドもありますが基本的にはこちらの方法のほうが良いかと思います。

バックグラウンド/フォアグラウンドで戻る

これはviに限った話しではありませんが、
ctrl + zで実行中のプログラムを一時停止することができます。
vi起動中にctrl + zでshellに戻り、shellからviに戻りたい場合はfgコマンドで戻ります。

ctrl + zで実行中のプログラムを一時停止し(バックグラウンド化し)できるのは
viだけでなく他のプログラムも複数可能なため、複数いる場合はjobsコマンドで確認してjob番号を指定します。

バックグラウンド/フォアグラウンドに関してはこちらをご参考に

2. vi/vimからshellに戻っている中か確認する

ここからは:shell:shで一時停止した場合のはなしです。

viからshellは前述の通りですが、shellからviの場合にexitを打ちますが
ときたまviからshellに戻ってない状態で打ってしまうとターミナル自体が終了してしまうことがあります。

ということで、exitを打つ前にviからshellに戻った状態かどうかを確認する方法です。
これはVIMまたはVIMRUNTIMEという環境変数を確認します。

通常時の(vimから戻るとか何もしてない)環境変数

何もしていない場合におもむろに打ってみると何も出力されません。

$ echo ${VIM}

$ echo ${VIMRUNTIME}
vimからshellに戻っている場合の環境変数

vimからshellに戻っている場合に環境変数を出力すると値が入っています。
これにより見分けます。

# 適当なファイルを開く
$ vi test.txt

# :sh コマンドでshellに戻る
$ echo ${VIM}
/usr/share/vim

$ echo ${VIMRUNTIME}
/usr/share/vim/vim73

3. vi/vimからshellに戻っているコトをわかりやすくする

こちらは下記のサイトを参考にさせて頂きました!thx!!
* vim から :shell で抜けたときにわかりやすくする

上記の変数を使ってシェルの設定を変更します。

ということで .bashrc に追加編集。
やることは簡単で変数があったときにシェルのプロンプトを変更してやります。

# .bashrcに追記します
[~ 00:06:50]$ vi ~/.bashrc
---- vi追記 ----
[[ -n "$VIMRUNTIME" ]] && \
    PS1='(VIM) \W \t $ '
---------------

# viから抜けてshellに戻った状態じゃないことを確認
[~ 00:06:57]$ echo $VIM

# 適当なファイルをviで開く
[~ 00:07:57]$ vi test.txt 

# :sh コマンドで抜ける 
(VIM) ~ 00:08:04 $ 

ということでviから抜けてshellに戻った場合は (VIM)という文字がつくようになりました。

おわり

抜けたときにわかりにくいんだよなーと思っていましたが思ったより簡単にできました。
参考にさせて頂いた記事さんありがとうございます\(^o^)/

【PlantUML】PlantUMLをAtomエディタでliveプレビューさせてみるメモ for Mac

はじめに

PlantUMLはテキストベースでUMLがかけるので便利ですが、書くのと確認を繰り返すときにやや面倒です。
今時フロント開発でもliveプレビュー環境は当たり前になってきているので
PlantUMLもliveプレビューしたいものです。
f:id:tweeeety:20160902231709g:plain

探したらすごく良記事があったので参考にさせて頂いて入れてみます。
http://pierre3.hatenablog.com/entry/2015/08/23/220217

ながれ

1. macローカルな環境でPlantUMLを使えるようにする
2. Atomエディタを入れる
3. Atomでplantuml-viewerを入れる
4. Atomにlanguage-plantumlも入れる
5. AtomでPlantUMLを書きながらLiveプレビューってみる
6. Atomの`plantuml-viewer`のliveタイミングを調整する

1. macローカルな環境でPlantUMLを使えるようにする

PlantUMLをMacに入れるのは以前別記事で書いたので割愛します。恐らくそのままやればいけるはず
http://tweeeety.hateblo.jp/entry/2014/10/24/173359

2. Atomエディタを入れる

以下のAtom公式ページからdownload&インストールします
https://atom.io/

3. Atomにplantuml-viewerを入れる

Atomを起動してplantuml-viewerというpluginを入れます。AtomではPackagesという呼び方のようですね。

  • Packages -> Settings View -> Install Packages/Themesの順番にmenuを開きます f:id:tweeeety:20160902231122p:plain

  • Packageの検索にplantuml-viewerと入力して検索すると表示されるのでおもむろにInstallします f:id:tweeeety:20160902231140p:plain

  • 設定を少し変えるために Settings を開きます f:id:tweeeety:20160902231151p:plain

  • 今回は文字コードだけ変えるので Charsetutf-8と入力します f:id:tweeeety:20160902231206p:plain

なお、設定はこの画面の左ペインメニューにある Packages という項目から該当のパッケージのSettingを選択すればいつでも開けます

4. Atomにlanguage-plantumlも入れる

language-plantumlというplantUML用のシンタックスハイライトpackageもあるようなので入れておきます。
書いてるときの文字色も見やすいほうが良いですよね。

3. Atomにplantuml-viewerを入れると同様に、
Packages -> Settings View -> Install Packages/Themes からlanguage-plantumlを探してinstallする感じです。

シンタックスハイライトがつくとやや見やすくなります f:id:tweeeety:20160902231453p:plain

5. AtomでPlantUMLを書きながらliveプレビューってみる

ここまできたら早速使ってみます。
以前の記事で書いたplantUMLの内容まんまですが、こんな感じにクラス図を書いて sample.pumlという名前で保存します。

@startuml
scale 800 width
Class01 <|-- Class02
Class03 *-- Class04
Class05 o-- Class06
Class07 .. Class08
Class09 -- Class10
Class11 <|.. Class12
Class13 --> Class14
Class15 ..> Class16
Class17 ..|> Class18
Class19 <--* Class20
@enduml

肝心のliveプレビュー機能ですが説明にはこんな感じでショートカットが載ってます。 f:id:tweeeety:20160902231302p:plain

macでのliveプレビューのショートカットは、control + option + pです。
control + option + pしてみるとこんな感じで表示されます。

  • control + option + pやる前
    f:id:tweeeety:20160902231453p:plain
  • control + option + pやった後
    f:id:tweeeety:20160902231325p:plain

6. Atomplantuml-viewerのliveタイミングを調整する

liveプレビューがliveすぎて重いそうなので、これも参考記事のまんまですがやってみます。
やることの概要としては、plantuml-viewerの処理がjsで書かれているのでsettimeoutを使ってlive間隔を直接編集します。

  • plantuml-viewerのsetting画面を開いてView Codeを押します f:id:tweeeety:20160902231519p:plain

  • 新規に画面が開くのでlib/plantuml-viewer-view.jsを開きます f:id:tweeeety:20160902231533p:plain

  • liveプレビューする際に呼ばれるupdateImage()という関数の変わりとなる関数を作成します。
    PlantumlViewerViewというfunction定義があるのでその中の一番下に追加ですね。

function PlantumlViewerView (editor) {

  // 省略

  var updateImageTimerId = 0
  function queueUpdate () {
    if (updateImageTimerId) return
    updateImageTimerId = setTimeout(function () {
       updateImage()
       updateImageTimerId = 0
    }, 100)
  }
}
  • lib/plantuml-viewer-view.js内に4カ所ほどupdateImage()がいる(201608現在)のでqueueUpdate()に置き換えます
// 省略
function PlantumlViewerView (editor) {
  ScrollView.call(this)

  // 省略

  function attached () {
    disposables = new CompositeDisposable()
    //updateImage()を置き換え
    queueUpdate()
    if (atom.config.get('plantuml-viewer.liveUpdate')) {
      disposables.add(editor.getBuffer().onDidChange(function () {
        if (loading) {
          waitingToLoad = true
          return
        }
        //updateImage()を置き換え
        queueUpdate()
      }))

  // 省略
  // あと2つくらいあるのでそっちも

これでめでたくliveプレビュー環境が整いました!!!

参考

おわり

参考記事をまんま参考にさせて頂きましたがやりたかったことができました!
pierre3のブログ さんに感謝感謝です\(^o^)/

【git】submoduleを変更するときのメモ - git submodule sync

はじめに

gitでsubmoduleを変えたいときの殴り書きメモです。
各状況で使えるわけではないと思いますが、自分用なのであしからず。

こんな時

とあるリポジトリにsubmoduleを含んでいて
そのsubmodule側の挙動を確認とかデバッグとかしたいときなんかのケースです。

一時的にそのsubmoduleを自分のリポジトリにforkしてデバッグ仕込んで、とかやりたいですよね。

知ってたらたいしたことないんですが、
git submodule update というコマンドがあるために
名前からしてそれで更新できそうなので他の設定が違うんだと思い込んでハマりました。

やる

概要

リポジトリのurl(向き先)を変更したいときにやることは主に2つ

  • .gitmodules を開いてurlを変更する
  • git submodule syncを打つ

やってみる

上記のこんな時 のケースで、submoduleのリポジトリがそれぞれこんなだった場合です

  • 元々設定されてる : git@github.com:hoge/hogehoge.git
  • forkしたやつ : git@github.com:fuga/fugafuga.git
$ pwd
/path/to/メインリポジトリ

$ vi .gitmodules
---- vi編集 ----
[submodule "hogehoge"]
        path = hogehoge
        url = git@github.com:hoge/hogehoge.git
        ↓
        url = git@github.com:fuga/fugafuga.git
---------------

$ git submodule sync

終わり

変にgit submodule update でできそうな感じがあるので、
できると信じてハマって時間使うともったいですよね、というメモでした

【VirtualBox】VirtualBoxのlinuxで時間を合わせる - RequestTimeTooSkewedエラーでたのでntpdate ntp.nict.jpする

はじめに

どの環境でもって訳でもないので自分用のただの備忘録的なメモ

現象

とあるbatchやworkerを起動したら急にこんな感じのエラーでコケだしていた

RequestTimeTooSkewed: The difference between the request time and the current time is too large

携帯で今の時間を確認すると23:40:11virtualboxlinuxを確認するとこんな感じに

$ date
Tue Jun 28 23:15:31 JST 2016

結構遅れてる。。。。。 ということで時間を合わせることに。

やる

これはもう打つだけです

$ sudo ntpdate ntp.nict.jp
29 Jun 00:01:45 ntpdate[30732]: step time server xxx.xxx.xxx.xxx offset 951.221456 sec

$ date 
Wed Jun 29 00:01:49 JST 2016

# 携帯で時間をみると `00:01` 。合格

この辺りを参考に

補足

補足するまでもないんですがntpが使えなかったのでインストールもしました。
さらにyum installもできなかったので使えるようにするところから。。。
これはvirtualboxや環境によるのであしからず

リポジトリの設定を変えます。変えるファイルは /etc/yum.repos.d/CentOS-Base.repo
[base][updates]の2カ所、mirrorlistを使ってたところをbaseurlに変更

$ sudo vi /etc/yum.repos.d/CentOS-Base.repo
----vi編集----
①
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
↓
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

②
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
↓
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/

-------------

この辺りを参考に

おわり

めでたしめでたし