tweeeetyのぶろぐ的めも

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

【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/

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

この辺りを参考に

おわり

めでたしめでたし

【git】gitでリモートのブランチをcheckoutする

はじめに

タイトルのままですがちょくちょく忘れるのでメモ

忘れないようにコマンドまんま

# fetchする
git fetch

# 該当のブランチがあるかたしかめる
git branch -r

# (あれば)originのブランチを元にローカルにブランチを切る
git branch hoge_branch origin/hoge_branch

# チェックアウトする
git checkout hoge_branch 

# もしくはbranch + checkoutはオプションで
git checkout -b hoge_branch origin/hoge_branch

もっというと

しかし、上のようにちゃんとやらずとも(!?)、もっとはしょることもできます

# リモート情報の取得
$ git fetch

# checkoutする
$ git checkout hoge_branch

おわり

こんな簡単なことなのにいつも忘れてしまうので自分戒め晒しメモ

【Jenkins】さくらVPSでJenkinsでgitと連携してみるメモ① - インストールと初期の認証設定

はじめに

今更ながらちょっと試したいことがあったのでjenkinsを入れてみます。
さくらVPSに入れる前提で話しますが他でもだいたい同じ流れです。

f:id:tweeeety:20160330232347p:plain

アジェンダ

  1. javaとJenkinsインストール
  2. Jenkinsのサービス確認と認証設定
  3. プラグインのアップデート

前提

$ cat /etc/redhat-release
CentOS release 6.5 (Final)

$ sudo /usr/sbin/apachectl -v
Server version: Apache/2.2.15 (Unix)
Server built:   Aug 13 2013 17:29:28

$ java -version
zsh: command not found: java

1. javaとJenkinsインストール

インストール

今回はyumで入れてしまうのでお手軽です。

# Javaのインストールの確認
# 念のためyumでインストール可能なやつを確認する
$ yum search java | grep openjdk                                                                                                                                                                                    [~ 21:32]
~
java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.7.0-openjdk-javadoc.noarch : OpenJDK API Documentation
java-1.7.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment
~

# javaインストール
$ sudo yum install java-1.7.0-openjdk

# jenkinsをインストール
$ sudo yum install jenkins
補足

jenkinsのインストールがコケる場合はyumリポジトリの追加が必要かもしれません

確認

$ sudo /etc/init.d/jenkins status
jenkins は停止しています

$ sudo /etc/init.d/jenkins start
Starting Jenkins                                           [  OK  ]

2. jenkinsのサービス確認と認証設定

サービス確認

すでに起動しているのでサービスとして確認します。
http://[さくらvpsのip]:8080/ にアクセスしてこんな感じで表示されればokです。
f:id:tweeeety:20160330232513p:plain

補足

もしiptablesを設定している場合は8080ポートを解放してください

認証設定

当たり前ですが、ipとポートを指定したらアクセスできた、
ということはこの状態では誰からでもアクセスも何でもできてしまいます。なので認証周りを設定します。

大きく下記の3点を行います

  • ユーザの作成とログイン
  • ユーザの作成を不可にする
  • グローバルセキュリティの設定③ - 匿名ユーザと作成ユーザの権限設定
ユーザの作成とログイン
  • 左メニューからJenkinsの管理を選択 f:id:tweeeety:20160330232742p:plain

  • 表示されるメニューのグローバルセキュリティの設定を選択 f:id:tweeeety:20160330232751p:plain

  • セキュリティ有効化にチェックします f:id:tweeeety:20160330232806p:plain

  • 項目が表示されるので下記のようにチェック

    • ユーザ情報 > jenkinsのユーザデータベースにチェック&ユーザにサインアップを許可にチェック
    • 権限管理 > ログイン済みユーザに許可にチェック f:id:tweeeety:20160330232822p:plain
  • 保存をするとログインを求められるので アカウントを登録からアカウントを作成するとログイン状態になっています f:id:tweeeety:20160330232845p:plain

ユーザの作成を不可にする

しかし、このままでは誰でもアカウントを作成できてしまうので
これ以上アカウントが作成できないように設定します。
設定する項目は先ほどと同じ場所です。

  • 左メニューからJenkinsの管理を選択
  • 表示されるメニューのグローバルセキュリティの設定を選択
  • 今度は「ユーザ情報 > ユーザにサインアップを許可」のチェックを外します
    • こうすることで新規ユーザの作成ができなくなります
グローバルセキュリティの設定③ - 匿名ユーザと作成ユーザの権限設定

ここで試しにログアウトしてみるとこんな感じです。   f:id:tweeeety:20160330233039p:plain

つまり、開発者、ビルド履歴などは見えてしまうためこれらの項目にも認証をかけます。
設定場所も先ほどと同じらへんです。

  • 左メニューからJenkinsの管理を選択
  • 表示されるメニューのグローバルセキュリティの設定を選択
  • 今度は「権限管理 > 行列による権限管理」にチェックします

    • また匿名ユーザの行にあるチェックをすべて外します f:id:tweeeety:20160330233518p:plain
  • 次に追加するユーザ/グループに先ほど作成したユーザを追加します

    • 表の匿名ユーザの下にユーザが追加されるので必ずすべての権限にチェックします!!!!!!!!!!!!!!
    • チェックしないとせっかく作成したユーザで何もできなくなりますw f:id:tweeeety:20160330233528p:plain
ログアウト確認

ログアウトしてこんな感じになっていればokです f:id:tweeeety:20160330233541p:plain

3. プラグインのアップデート

  • これはあれば、程度ですが認証情報を選択してプラグインの管理の下に
    (アップデートあり)の表示がある場合、一応アップデートしておきます。
    f:id:tweeeety:20160331011153p:plain

  • 手順としては簡単で、すべてにチェックしてダウンロードして再起動後にインストールを押すだけです。 f:id:tweeeety:20160331011224p:plain

  • 次の画面でインストール完了後、ジョブがなければJenkinsを再起動するにチェックすれば
    Jenkinsはダウンロード後に勝手に再起動するので待ちましょう f:id:tweeeety:20160331011230p:plain

参考

改めて導入するにあたり、下記の記事を参考にさせて頂きました!thx!

まとめ

記事が無駄に長くなりそうなので適当なところで切りました。
画像が多いので長く見えますがここまでは一瞬でできる内容です\(^o^)/