tweeeetyのぶろぐ的めも

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

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

【Jenkins】Jenkinsをyumでインストールするときにリポジトリに追加する

はじめに

まんまですが yum install jenkins な事をしたいのですが
そのまんまではyumリポジトリにjenkinsが見えないので追加してから行います。

というだけの話し。

まんま打ってみる

こんな感じで怒られます

$ sudo yum install jenkins                                                                                                                                                                                          [~ 21:36]
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * epel: ftp.kddilabs.jp
 * rpmforge: ftp.riken.jp
Setting up Install Process
No package jenkins available.
Error: Nothing to do

yumリポジトリに追加します

# yumリポジトリ情報を確認
$ ls -l /etc/yum.repos.d/
-rw-r--r--. 1 root root 1971  3月 28 13:00 2012 CentOS-Base.repo
-rw-r--r--. 1 root root 1926 12月  9 12:05 2011 CentOS-Base.repo.orig
-rw-r--r--  1 root root  638 12月  1 09:07 2013 CentOS-Debuginfo.repo
-rw-r--r--  1 root root  630 12月  1 09:07 2013 CentOS-Media.repo
-rw-r--r--  1 root root 4528 12月  1 09:07 2013 CentOS-Vault.repo
-rw-r--r--  1 root root 1056 11月  5 12:52 2012 epel-testing.repo
-rw-r--r--  1 root root  957 11月  5 12:52 2012 epel.repo
-rw-r--r--  1 root root  739 11月 13 12:55 2010 mirrors-rpmforge
-rw-r--r--  1 root root  717 11月 13 12:55 2010 mirrors-rpmforge-extras
-rw-r--r--  1 root root  728 11月 13 12:55 2010 mirrors-rpmforge-testing
-rw-r--r--  1 root root 1113 11月 13 12:55 2010 rpmforge.repo
                                                    

$ sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
$ sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key

# 確認
$ ls -l /etc/yum.repos.d/j*
-rw-r--r-- 1 root root 75  3月 28 12:30 2016 /etc/yum.repos.d/jenkins.repo

# インストールしてみる
$ sudo yum install jenkins

終わり

めでたしめでたし

【mac】TinyPNGで使われているpngquant入れてpng圧縮してみるメモ - for mac

はじめに

pngquantをlinuxなサーバで使っていたのですがmacローカルな環境でも使いたくなったので入れたメモ
基本的な使い方などはlinuxのほうと同じです

入れる

homebrewから入れます。homebrewからって場合は以下を参考に。

# インストール
$ brew install pngquant

# 確認
$ pngquant --version
2.4.1 (April 2015)

簡単ですね!

補足

gitリポジトリからも入れられるようなのでその場合は下記で

$ git clone git://github.com/pornel/pngquant.git

使ってみる

# 圧縮前に確認
$ ls -al ~/path/to/pngがあるディレクトリ
-rw-r--r--@ 1 hoge  hoge  613641  3 17 16:56 圧縮したい.png

# 圧縮する
$ pngquant ~/path/to/pngがあるディレクトリ/圧縮したい.png

# 圧縮されたファイルは`-fs8`と入ったファイルが生成される
$ ls -al ~/path/to/pngがあるディレクトリ
total 1528
drwxr-xr-x  4 hoge  hoge     136  3 17 17:07 .
drwxr-xr-x  5 hoge  hoge     170  3 17 16:57 ..
-rw-r--r--  1 hoge  hoge  164856  3 17 17:07 圧縮したい-fs8.png
-rw-r--r--@ 1 hoge  hoge  613641  3 17 16:56 圧縮したい.png

613641から164856になったので1/4くらいにはなりましたね。

終わり

ローカルであればwebのTinyPNGでも良いんですが、いちいち開くのもめんどうだなーという事で入れてみました!
さくっとできて快適です\(^o^)/

【redis】redisを超おさらい。CentOS 6.2にかんたんにインストールから起動、set、getを確認

はじめに

いまさらのいまさらですが、redisを入れてみてから起動して確認するまでをかんたんにおさらい。
redisは入れるのも確認も簡単ですね╭( ・ㅂ・)و ̑̑ グッ

今回入れるのはCentOS 6.2です。

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

アジェンダ

  1. redis入れる
  2. 設定する
  3. 起動&確認してみる
  4. 起動スクリプト作成

1. redisとは

いまさらですが一応ブログの入りぽく、ということで。。。
説明下手なので参考サイトをまんま拝借させて頂きました。

  • データはメモリ上に入っている。インメモリデータベース。
  • ディスクにデータを適当なタイミングで書き込み可能(永続化できる)。
  • Key-Valueストア。キーと、それに対応したValueから構成される。ValueにはStringやListなど様々な型が使える。
  • Github、stackoverflow、ニコ生などで採用実績がある。
  • 初めて登場したのは2009年4月。ネット上の記事は2011年頃のをよく見る。
  • API一覧はここ。Command reference – RedisまたはKOSHIGOE学習帳 - [KVS][Redis] Redis コマンド一覧。

1. redis入れる

これはまんまやるだけですね

$ cd /usr/local/src/
$ sudo wget http://download.redis.io/releases/redis-2.8.12.tar.gz
$ sudo tar xzf redis-2.8.12.tar.gz
$ cd redis-2.8.12/
$ make make
$ sudo make install

補足

他のサイトなど参考にするとredisの前に下記もいれる必要があるかもです。
自分はすでに入っていたので今回にはいれてません

$ sudo yum -y install gcc make

2. 設定する

設定ファイルはredisを展開したディレクトリにいるのでコピーして使います。

設定ファイル編集
# confファイルを確認
$ pwd
/usr/local/src/redis-2.8.12

$ ls -al re*
-rw-rw-r-- 1 root root 31209 Jun 23  2014 redis.conf

# オリジナルは残しつつconfファイル作成
$ sudo mkdir /etc/redis
$ sudo cp -ap redis.conf /etc/redis/6379.conf

# 設定編集
# 設定項目のそれぞれの意味は下記に書いたのでそちらを参考に。
$ sudo vi /etc/redis/6379.conf
---- vi編集 ----
daemonize no

# daemonize yesにしたとき忘れないように念のため
pidfile /var/run/redis_6379.pid

port 6379

timeout 60

loglevel debug

logfile "/var/log/redis/6379.log"

databases 16
---------------


# 設定ファイルに合わせてディレクトリつくっておいたり
$ sudo mkdir /var/log/redis
設定補足

設定について書いておきます。最初はこのあたりだけで良いかと。

項目 説明
daemonize [yes/no] デフォルトはno。デーモンとして動作させたい場合はyes。またその場合はpidファイルのしても忘れずに daemonize no
pidfile [filepath] デーモンとして起動するときにpidを書き出すファイル pidfile /var/run/redis_6379.pid
port [portnumber] コネクションを受け付けるポート。デフォルト6378 port 6379
timeout [N秒] N秒数間コマンドが送信されなければクライアントとの通信を切断。0を指定するとタイムアウト無し設定 timeout 60
loglevel [level] サーバのログの情報量をdebug/verbose/notice/warningのいずれかで設定。値を見たらなんとなくわかるかと。 loglevel debug
logfile [filepath] ログファイルの指定。stdoutを指定すると標準出力に。stdout指定&daemonize中は /dev/null行きなので注意 logfile "/var/log/redis/6379.log"
databases [num] RedisはDB名というものがなく番号で管理されている。そのデータベースの番号。databases 16と指定した場合はデフォルトで0〜15のDB番号を使用できる。デフォルトのデータベースは0 databases 16

スナップショットの設定など、他も参考にしたい場合は下記が参考になりました。

3. 起動&確認してみる

redisの起動と確認にはserverとclientを立ち上げます。
background起動(daemonize)ではなくそのまま立ち上げてみるため
serverとclientをそれぞれ別のターミナルで立ち上げて確認します。

redis-server起動

$ sudo redis-server /etc/redis/6379.conf
補足1

daemonize yesで起動した場合にredis-serverを終了するには、
psなどでプロセスを確認してkillで落とすか、pidfileも指定してるはずなので下記のようにします。

$ sudo kill `cat /var/run/redis_6379.pid`
補足2

当たり前ですがログファイルの場所に権限がない場合なんかはsudoやrootで行ってください

$ redis-server /etc/redis/6379.conf 
*** FATAL CONFIG FILE ERROR ***
Reading the configuration file, at line 103
>>> 'logfile "/var/log/redis/6379.log"'
Can\'t open the log file: Permission denied

redis-cliでの対話モード確認

確認は主にclientから確認します。
key-valueのデータの確認に簡単なset-getをします。

# 起動
$ redis-cli 
redis 127.0.0.1:6379> 

# set-getを確認してみる
redis 127.0.0.1:6379> set test hoge
OK

redis 127.0.0.1:6379> get test
"hoge"

# 複数setしてkeyの一覧を見てみる
redis 127.0.0.1:6379> set name fuga
OK

redis 127.0.0.1:6379> keys *
1) "name"
2) "test"

# setした値に有効期限(10秒)をつけてみる
redis 127.0.0.1:6379> setex name 10 piyo
OK

redis 127.0.0.1:6379> get name # 10秒未満
"piyo"

redis 127.0.0.1:6379> get name # 10秒経過
(nil)


# 終了
redis 127.0.0.1:6379> exit

redis-cliでのコマンドライン確認

$ redis-cli -p 6379 set test fuga
OK

$ redis-cli -p 6379 get test
"fuga"

4. 起動スクリプト作成

起動スクリプトを作成します。
daemonizeしていればbackgroundで起動します。

# 起動スクリプトをutilからコピー
$ cd /usr/local/src/redis-2.8.12/
$ sudo cp -ap utils/redis_init_script /etc/init.d/redis_6379

# 起動してみる
$ sudo /etc/init.d/redis_6379 start
Starting Redis server...

まとめ

redisって何度か入れてますが、ほんと簡単で試しやすくて良いですよねー!
いろいろ勉強すると奥が深いミドルウェアですがちょっと試すにもすいすいです
( ・ㅂ・)و ̑̑ グッ

【git】リモートのブランチそのものや1ファイルのみをローカルにチェックアウトするメモ

はじめに

タイトルまんまですが、既にあるブランチを手元で動かしたいときはよくやる操作です。
特にファイルだけのほうが忘れてしまうことが多いのでメモ。

アジェンダ

  1. チェックアウトする前に必要な操作(後述の2,3共用)
    • リモートのブランチを確認したり
  2. リモートのブランチをチェックアウトする
  3. リモートのブランチからファイルのみチェックアウトする

1. チェックアウトする前に必要な操作(後述の2,3共用)

リモートのブランチを持ってくるにせよ、ファイルをもってくるにせよブランチ名を確認したいですよね。

リモートのブランチを確認したり
# ローカルのリポジトリ情報を更新
$ git fetch

# ブランチが多過ぎて遅い場合は特定のブランチだけfetch
$ git fetch origin [取得したいブランチ名]

# 目的のブランチが含まれてるか確認
git branch -r | grep [取得したいブランチ名]
補足

リモートや追跡ブランチの確認については下記も参考に

2. リモートのブランチをチェックアウトする

コマンド

リモートのブランチ持ってくるコマンドはこんな感じ

git checkout -b [取得したいブランチ名] origin/[取得したいブランチ名]

一連のコマンド例

1. チェックアウトする前に必要な操作(後述の2,3共用) とかぶるけど一連って意味で1のコマンドも書いておきます

# 更新&確認
$ git fetch
$ git branch -r | grep [取得したいブランチ名]

# ローカルにブランチもってくる
$ git checkout -b [取得したいブランチ名] origin/[取得したいブランチ名]

3. リモートのブランチからファイルのみチェックアウトする

コマンド

リモートのブランチのファイルのみ持ってくるコマンドはこんな感じ

git checkout [取得したいリモートブランチ名] -- [取得したいファイルパス]

取得したいファイルパスについては、ちょっと癖があったので後述します。

一連のコマンド例
# 更新&確認
$ git fetch
$ git branch -r | grep [取得したいブランチ名]

# 取得したいブランチの取得したいファイルの内容を確認
# ※ 具体的に何を指定するかは後述します
git show origin/[取得したいブランチ名]:[取得したいファイルパス①]

# ファイルのみチェックアウト
$ git checkout origin/[取得したいブランチ名] -- [取得したいファイルパス②]
[取得したいファイルパス]についての補足

①②としているくらいなので若干指定するパスが違っています。
こんな感じ

  • [取得したいファイルパス①]
    • git showで確認したいときの[取得したいファイルパス①]は、リポジトリのルートからのパス
  • [取得したいファイルパス②]
    • チェックアウトするときの[取得したいファイルパス②]は、現在いるディレクトリからの相対指定のパス

まとめ

たまにしかやらない操作ってどうしても忘れちゃいますよね(><)