文系seの備忘録

Excelの改行でひたすらスペースを打っていた機械音痴の文系seが日々の備忘録を綴る。

Windows環境でJenkinsのコンソール出力が文字化けした

実行したジョブはUTF-8で、Windowsの出力はMS932。
文字コードがずれてたので文字化けが発生したようす。

1.Windowsマシンに、文字コード出力設定を追加
2.Jenkinsのスレーブ設定に文字コード出力設定を追加
3.実行するジョブの先頭に、表示する文字コードを明記

で解決。



1.Windowsマシンに、文字コード出力設定を追加

システム環境変数に以下を追加
JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8



2.Jenkinsのスレーブ設定に文字コード出力設定を追加

起動方法 > JVMオプション に以下を追加

3.実行するジョブの先頭に、表示する文字コードを明記
Windowsバッチコマンドの実行 先頭に以下を追加
chcp 65001
文字コードは以下を参考に設定した
文字コードの設定(CHCP) - ウィンドウの操作 - コマンドプロンプトの使い方




以上を行ったうえでスレーブを再起動。
切断して再度起動すればOKです。



※ jenkinsサーバー自体を再起動する場合は
http://{JENKNS_HOST}/safeRestart
で行えます。

undefined method `hoge' for nil:NilClass (ruby)

こんなソースを書いたらおこられた。

for arr_i in 0...header.size do
header_str += header[arr_i].to_s
    ・
    ・
    ・


"+" がない?とかなんとか。。。。

NoMethodError:
undefined method `+' for nil:NilClass


んんんん?どういうこと?
rubyはプラスをつかえないの?


header_str = header_str + header[arr_i].to_s

って書き直したりしてみたりしても変わらず(当たり前)。。。


これ、javaでいうところのぬるぽなんですね・・・。
初期化してやったらうまくいきました。


for arr_i in 0...header.size do
header_str = ""
header_str += header[arr_i].to_s
    ・
    ・
    ・

javaとは出るエラーメッセージの内容が異なるので手こずりますね。

(未解決) windowsでrubyのversionを楽に切り替える「pik」

・pikのダウンロード
(programfiles内にダウンロードされます)
gem install pik


・pikディレクトリの作成
mkdir "C:\pik"


・PATHに C:\pik を追加
set PATH=%PATH%;C:\pik
エクスプローラーで右クリック > プロパティ > システムの詳細設定 > 環境変数 > システム環境変数 > PATHからでも設定可)


・今回使用するフォルダに必要なものをインストール
pik_install "C:\pik"


・インストールしてある複数のrubyのbinの場所をaddする
pik add C:\ruby-1.9.1-p376\bin
rubyをインストールしてなかったらインストールしてください
windowsではrubyinstallerを使ってrubyをインストールできます。
Downloads
インストールしたいバージョンをクリックしてそのまま進めば、Cドライブ直下にRuby187とかRuby193とかいうフォルダができます。



・addしたあとpik listでrubyのバージョン一覧を確認

pik list
187: ruby 1.8.7 [i386-mswin32] *
191: ruby 1.9.1p376 [i386-mswin32]
191: ruby 1.9.1p378 [i386-mingw32]

"* "がついているのが現在設定されているバージョン。



・別のバージョンに切り替えるとき

pik use ruby 1.9.1p376


・切り替わったか確認
pik list
187: ruby 1.8.7 [i386-mswin32]
191: ruby 1.9.1p376 [i386-mswin32] *
191: ruby 1.9.1p378 [i386-mingw32]

上記のように切り替わるはずなんだけど、ruby -vで確認すると ruby 1.8.7のままになってる。。。





pikを以下ページからダウンロードして再度やってみる

msiをダウンロードします。
Downloads · vertiginous/pik · GitHub


pik list
187: ruby 1.8.7 [i386-mswin32]
=> 191: ruby 1.9.1p376 [i386-mswin32]
191: ruby 1.9.1p378 [i386-mingw32]

上記でダウンロードすると、バージョンの表示が "*" でなく矢印なんですね。

でも使い方はまったく同じです。


さあ、バージョンをきりかえてみます。
pik use ruby 1.9.1p376


きりかわったかな??

ruby -v
ruby 1.8.7 [i386-mswin32]


・・・orz
はい。だめでした~。


原因わからず。

わかったらまた更新します。

                                    • -

2016/07/15追記

まだ動かない原因は謎ですが、いろいろ試してみたのでメモ。

インストーラーでpikをダウンロードすると、
 1.c:\pik
 2.C:\Users\ユーザー名\.pik
の2つのフォルダが作成される。

c:\pikには以下3ファイルが作成されている
・pik_runner.exe
・pik.ps1
・pik.bat

C:\Users\ユーザー名\.pik は空のディレクトリ。

pikコマンドを実行するとc:\pik\pik.batが実行される。
pik add でバージョンを追加すると C:\Users\ユーザー名\.pik 内に
・config.yml
・pik_run.bat

の2つが新たに作成される。


それで、ググってわかったのが c:\pik\pik.bat内の

"%PIK_HOME%"ってとこを %USERPROFILE% に変えてあげる必要があるということ。
Windows では %HOME% という環境変数は定義されていないため、変更してあげないといけない(要はバグとのこと)。


pik use rubyのバージョン を実行すると C:\Users\ユーザー名\pik_run.batが実行される。


うーーーん。。。なんだかこのpik_run.batってやつが怪しい気がする。。

pik_run.but内に記載されてるSET PATH=~~ってとこは動的に変わるっぽいんだけど、このパスはどっから持ってきてんだろう?
だめだ。わかんない。

「jenkins実践入門」を読んで

先日amazonにて購入したjenkins実践入門

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

Jenkins実践入門 ?ビルド・テスト・デプロイを自動化する技術 (WEB+DB PRESS plus)

一通り読んでみました。



jenkinsとは何か?というところからインストールの仕方、ジョブの作成・実行方法など
簡潔に記載されていて読みやすかったです。


ほんとに基礎なので、業務で本格的に色々やりたいってなったらさらに詳しい内容が欲しくなるかと思います。




せっかく本を読んだのでjenkinsを落として動かしてみてみました。



思ったこと、出くわしたトラブルなどをあげておきます。


・実行ファイル名が長すぎると「Request-URI Too Large」と表示され実行結果URLが開けない
  結果をHTML形式で表示させるformatterとかがあるみたい。
  でもプレーンテキストでログ確認できるからまあいいかな
  
・実行するノードを分けることのメリット
  mandaの負荷の軽減だけでなくジョブごとに実行環境を分けたいってときに有効。

・ローカルで実行してたときにはおこらなったエラーがいろいろ起こってあせる
  おなじマシンから実行してるわけじゃないので、ファイルへのアクセス権限とかでエラーが見られた
  ⇒ シェルスクリプトに exportでパスを通した

と、実際動かしてみると本には書いてなかったことが沢山おこりました。
でも入門書として手元に置いておくのにはぴったりかなと思います。



jenkinsってよく聞くけど何なんだろう・・・って感じだったのが、だいぶ動かせるようになりました。

ファイルを開こうとしたらシンタックスエラー syntax error near unexpected token `('

コマンドからcatでファイル開こうとしたらシンタックスエラーでた

syntax error near unexpected token `('


原因:linuxはbushを使っているがUbuntuはdashを使っているため上記エラーが出る

解決方法:dashで実行するように変更
変更方法はubuntuの公式ページにいくつかのってる
DashAsBinSh - Ubuntu Wiki



今回はほぼまっさらな環境だったので以下を実行

sudo dpkg-reconfigure dash
このコマンド実行で/bin/sh のリンクを bash に変更

再起動しておわり。

oracle 11gデフォルトパスワードの有効期限切れ ORA-28001: the password has expired

サーバー立ち上げようとしたときある日とつぜんエラーでた

SQLException: ORA-28001: the password has expired


パスワードの有効期限切れとな。。。

単純にパスワードを更新してあげればよいが、また期限切れになると同じエラーが出る。

これを回避するためにoracleのパスワードの期限を無期限に設定しておく。

以下コマンドを実行

alter profile default limit password_life_time unlimited;


postgreSQL コマンドまとめ

postgreSQL コマンドまとめ




<DB定義の変更系>


・型変更
ALTER TABLE <テーブル名> ALTER COLUMN <カラム名> TYPE <データ型>;

・テーブル名変更
ALTER TABLE <変更前テーブル名> RENAME TO <変更後テーブル名>;

・カラム追加
ALTER TABLE <テーブル名> ADD <カラム名> <型情報>;
ex. ALTER TABLE sample_table ADD user_name varchar(255);
ALTER TABLE sample_table ADD address varchar(1023) NOT NULL;
※ 特定のカラムのあとに追加したい場合
alter table <テーブル名> add column <カラム名> after <前のカラム名>;

カラム名変更
ALTER TABLE <テーブル名> RENAME <古いカラム名> TO <新しいカラム名>;
ex. ALTER TABLE sample_table RENAME name TO user_name;]

・カラム削除
ALTER TABLE <テーブル名> DROP COLUMN <カラム名>;

・NOT NULL制約の追加
ALTER TABLE <テーブル名> ALTER COLUMN <カラム名> SET NOT NULL;

・NOT NULL制約の削除
ALTER TABLE <テーブル名> ALTER COLUMN <カラム名> DROP NOT NULL;

・カラムのデフォルト値変更
ALTER TABLE <テーブル名> ALTER COLUMN <カラム名> SET DEFAULT false;

・テーブルの中身を空にする
truncate table <テーブル名>;

・テーブルをDBから削除する
DROP TABLE <テーブル名>;

・DBから全てのテーブルを削除する
drop schema <スキーマ名> cascade;
create schema <スキーマ名>;
※ 全てのテーブルが同じスキーマにあることを前提として、スキーマごとdrop&再作成する操作。


<データの追加・更新・削除>

・データの挿入
insert into <テーブル名> values ('000001', '1971-07-13');

・データの更新
UPDATE <テーブル名> SET <カラム名> = '新しい値' WHERE <カラム名> = '前の値';

・データの削除
DELETE FROM <テーブル名> WHERE price = 10;
ex. sample_tableから'東京'以外を削除する
DELETE FROM sample_table WHERE kind <> '東京';



<確認・集計系>

・テーブル一覧
方法1: select * from <テーブル名>;
方法2: \d (psqlから実行)

・レコード数取得
SELECT COUNT(*) FROM <テーブル名>;

・ 重複を除いてレコード数取得
SELECT COUNT(DISTINCT <カラム名>) FROM <テーブル名>;

・グループごとに集計
select <カラム名>, count(*) from <テーブル名> group by <カラム名>;
ex. 男女別の回答件数を集計
select male_and_female, count(*) from sample_table group by male_and_female;

・ソート
SELECT * FROM <テーブル名> ORDER BY <カラム名> ASC;
ex.SELECT * FROM sample_table ORDER BY user_name ASC, user_id DESC;
※ ASC:昇順、DESC:降順



<psglコマンド>

psglコマンドとは?
PostgreSQL付属のツールで、DBの管理やSQL文の実行ができる"\"から始まるコマンド。

SQL文のヘルプ
\h SQLコマンド名
ex. 「\h select」でselect文の構文が表示される

・指定したファイル内のsqlを実行
\i ファイル名
一度に大量のsqlを実行したい場合にはこちらのほうが便利

・psglを終了する
\q

・DBの切り替え
\c DB名




【参考】
PostgreSQL 9.5.2文書
https://www.postgresql.jp/document/9.5/html/index.html
・データをグループ化して合計や平均を計算
http://www.dbonline.jp/sqlite/select/index14.html