モーグルとカバとパウダーの日記 このページをアンテナに追加 RSSフィード Twitter

モーグルやカバ(EXカービングスキー)、山スキー(BC)の山行記録などがメインの日記です。
いろんな条件のいろんなところを、その時々の条件にあった滑り方で楽しむ、フリースキーをして遊んでいます。

検索で来られた方は、上の検索窓から再度検索していただくか、右サイドバーのカテゴリーやトピックスの項目で絞り込んでみてください。
仕事柄、コンピュータ系のネタも多いので、スキー関連ネタだけ読みたい方は[ski]、コンピュータ関連ネタは[pc]、スパム関連ネタは[spam]で絞り込んでください。

2016-02-02 (Tue)

[]古いWebアプリMySQLからエクスポート文字化け 古いWebアプリのMySQLからエクスポートで文字化けを含むブックマーク 古いWebアプリのMySQLからエクスポートで文字化けのブックマークコメント

perl+MySQLで書かれた古いWebアプリをリプレースする件があるのですが、まず今登録されているデータをエクスポートしてくるところからはまりました。


いわゆるレンタルサーバ上で動いておりシェルは使えないため、webの管理画面からphpMyAdminを使ってエクスポートするようになっていました。


で普通にエクスポートするとデータが全部文字化け


テーブルエンコード設定を確認すると「latin1_swedish_ci」になっていました。

そういや昔のMySQLって、エンコード指定しないデフォルトの状況だと「latin1_swedish_ci」になるんだったかな?


perlのコードからDBの中身はEUCであることがわかっていたので、エクスポート時の文字コードEUCに指定してみたり、エクスポートされて出力されたテキストファイルをEUCに変換したりしてみたのですが改善されませんでした。


で、ぐぐってみるとそのまんまな事例と解決法がありました。

8年前のエントリーで「XOOPS」の単語が時代を感じます。


latin1_swedish_ciで文字化け | Home and Abroad

http://waji-mart.com/homeandabroad/latin1_swedish_ci%e3%81%a7%e6%96%87%e5%ad%97%e5%8c%96%e3%81%91/


エクスポートしてきたテキストを秀丸で開いて「欧文」で保存する、というものでした。

欧文で保存してから再度開きなおすと、今度はちゃんとEUC文字コードが自動認識されて文字化けせずに開いてきました。

大変に助かりました。ありがたい!


EUCのデータだからとEUCで出力しようとがんばってた方向が間違ってたようです。

トラックバック - http://d.hatena.ne.jp/stealthinu/20160202

2016-01-28 (Thu)

[]vagrantサーバで時間を動かしてテストする vagrantサーバで時間を動かしてテストするを含むブックマーク vagrantサーバで時間を動かしてテストするのブックマークコメント

vagrantで動かしている仮想サーバ上に開発/テスト環境を作ってあり、そこで date で時間を進めてテストを行おうとしていました。

しかし、ntpdを動かしていないのに勝手に時間がすぐ戻ってしまい、なんで?となりました。

ただVMwareとかVirtualBoxのようなVMでは、ホストのサポートが無いとクライアントサーバの時間がずれてしまう現象が良くあるので、それを補正する機能が付いているのですが、VirtualBoxで動いているvagrantでもその機能がデフォルトで動いているのだろうな、と思いました。

で調べてみるとやっぱりそうで、デフォルトでは時間の同期が行われてしまうため、止めるためにはvagrantファイルに設定を追記する必要があるのだそうです。


Vagrantでホストマシーンとクライアントマシーンの時間を同期させない方法 - Qiita

http://qiita.com/wataru420/items/6441b69ec5fb90743fd1

config.vm.provider :virtualbox do |vb|
  vb.customize ["setextradata", :id, "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled", 1]
end

ということで、設定を追加してvagrant上で動いているクライアントサーバ再起動したところ、無事に同期しないようになりました。

トラックバック - http://d.hatena.ne.jp/stealthinu/20160128

2015-12-24 (Thu)

[]Picate (Picasaタグ編集ヘルパー)という簡易Webサービスを公開します Picate (Picasaタグ編集ヘルパー)という簡易Webサービスを公開しますを含むブックマーク Picate (Picasaタグ編集ヘルパー)という簡易Webサービスを公開しますのブックマークコメント

Picasaのタグ編集ヘルパー「Picate」

http://k2net.hakuba.jp/picate/


(追記)

Google、写真管理サービス「Picasa」終了へ、「Googleフォト」に統合 -INTERNET Watch

GoogleフォトではPicasaにあった「タグ」機能がないため、このPicateも使えなくなります。

残念…

(追記ここまで)


この記事はNSEGアドベントカレンダーの17日目の記事です。


前年度、うちの下の子どもが幼稚園の年長さんだったのですが、うちの幼稚園では父兄が卒園アルバムを制作することになっており、嫁がアルバム制作委員長となってしまいました。

アルバム制作委員長というのが大変な仕事だ… というのは、助言を聞きに言った歴代のアルバム制作委員長たちがみな「もう二度とやらない」と語っていたというエピソードを聞いて理解しました。


参考まで、下記に非常にためになるエントリーを上げておきたいと思います。


結果的に、ここまでは大変ではなかったのですが、やはり相応に大変な思いをしていました。

そして主にPCやネットワーク系のことで補佐をすることになった自分も、そこそこ大変でありました。


アルバム作るとき、大きく分けて

1. 写真を集める

2. 写真を選択する

3. 写真を加工する

4. 写真をまとめてページを作る

という感じの作業が必要です。

一般的にアルバムを作ると言った時にぱっとイメージする4の部分は、あくまで最後の、一番楽な?工程であり、その下準備が非常に、大変に労力がいるようでした。


特に選択する部分は、どの子がどんだけの枚数写っているかをチェックする必要があったり、その中でなるべく良い表情のものを選択する必要があったりと、実は一番神経を使うパートだったりするようです。


自分がこのアルバム作成の話を聞いて、どうやれば一番楽に出来るだろうかと考えた時、写真を集めたり選択する部分は「Picasa」でやればよかろう、という意見を出しました。

PicasaならGoogle+アカウントを作る必要があるものの、1アカウントで15GBまで無料で利用でき、Picasaアプリを入れなくても、Web上でグループ内で写真を見たり、アップロード出来る機能があり、写真にタグ付けをして整理することが出来るからです。

非常に多数の写真があるので、各種イベント毎の写真に対し、アルバム委員が分担してアルバムに載せる候補を「○○ちゃん」とか「プール参観」とかのタグをつけながら選択していく、ということを考えました。


…と思ってやってみてもらったのですが、確かにそう、機能はあるんだ、でもダメじゃんこれ… ということがいくつも出てきました。それが下記3点でした。

Google+ に自動で転送されてしまうため、Picasaウェブアルバムのサイトにいちいち戻る必要がある、とかは些細な事です)


まず、画像をアップロードでやってもらうのは、心理的に非常に敷居が高い、ということ。

これは、USBメモリーに入れてもらって、それを嫁がPicasaアプリから一括でアップロードする、ということで解決しました。

  • タグ共有の問題

最初はメンバーごとにアカウントを取ってもらい、共同編集アルバムを使ってアップロードや閲覧する、というスタイルで考えていたのですが、タグ情報は共有されない、という問題がありました。

そのため結局、アルバム委員用のアカウントを作成し、みなそのアカウントログインして表示やタグの編集をしてもらう運用にしました。

  • タグでの絞り込み表示ができない

そして一番えええ?と思ったのが、タグでの絞り込みをして表示することが出来ない、という問題です。

PicasaはPCのアプリケーションソフトWebサービスとがあるのですが、アプリケーションではタグごとに写真を抽出する方法がある(タグリストからそのタグを選択するという非常に当たり前なやりかたで)ものの、なんとWebサービス側ではそういう機能が提供されていないのです!

すでに結構タグ付けを行ってから、その機能が無くてすごく使いにくいという報告をうけた(自分たちは基本、アプリケーションのほうで確認していたため気が付かなかった)ため、急遽なんとかする必要が出来ました。


そこで作られたのがこの


Picate (Picasaタグ編集ヘルパー)

http://k2net.hakuba.jp/picate/


という簡易的なWebサービスなのです。


このページを開くと、Googleアカウントログインしていない状況だと、最初にPicasaログインアカウントの入力が求められます。

これはOpenIDでのログインになりますので、こちら側ではなんら情報を取得したり保持したりはしていません。

というか実は、このページ内にあるjavascriptのみで機能が完結していますので、このページを自分のホームページ領域にコピーして、カスタマイズして使うことも出来ます。


ログインすると、そのアカウントPicasaに上げているアルバムのリストとそのリスト内で使われているタグのリストが表示されます。

f:id:stealthinu:20151224132015p:image


この中からアルバムを選択するか、タグを選択すると、そのアルバムでそのタグの付いている写真のみがこのページ下記に全て表示されます。


写真を選択すると、Picasa Webサービスの写真編集ページが表示されますので、タグの編集はそちらで行なうことが出来ます。


ソース見ていただくと、アルバムからタグの取得するところがなんだか複雑になっていることがわかると思うのですが、PicasaのWebAPIはなぜか、アルバム毎とタグ毎の写真取得APIはあるものの、アルバムとタグをどちらも指定出来るAPIがないのです。

なので仕方なく、一旦タグで抽出したものをスクリプト内でアルバムidでフィルタして実装しています。

他にも、ところどころ足りないところのあるAPIで、使いにくかったです。

あと編集後の反映が、Picasa WebサービスAPIから触るときにはタイムラグがあったり(それも酷い時だと日単位くらいで…)なかなか難しいところがありました。


でも、このPicateがあればPicasaを使って写真選択をみんなで行なう、というのは結構良い感じで動きました。

ので、これから幼稚園のアルバム制作しないといけない、という方はぜひご利用してみてください。


(関連)

Lenovo G560でムービーメーカーが起動できない問題 - モーグルとカバとパウダーの日記

ムービーメーカー2012で縦長になる問題 - モーグルとカバとパウダーの日記

GIMPで拡大縮小がうまくできなくなる問題 - モーグルとカバとパウダーの日記

[][]SNS時代のスパム手法 SNS時代のスパム手法を含むブックマーク SNS時代のスパム手法のブックマークコメント

この記事はNSEGアドベントカレンダーの24日目の記事です。


…といいつつ新規に作ったものではなく、これは去年の11月にとあるセキュリティ系の講演で喋った内容のプレゼン資料です。

今、スパマーたちはメールによるスパムから、SNSを使ったスパムへと軸足を移しており、SNSスパム手法はどんなものがあってどうやって広めたりマネタイズしているのか、を紹介したものです。


https://dl.dropboxusercontent.com/u/4412680/naganoispbouhan/snsspam.html

今のスパムの特徴が

であること、そして今後はより

  • システムの穴より人間の穴を狙う
  • SNSファースト・スマホファースト
  • 低率で大量配信より標的型で高率に
  • 「サービス」と「スパム」の差があいまいに

という方向へむかうであろうこと、を解説しています。

トラックバック - http://d.hatena.ne.jp/stealthinu/20151224

2015-12-10 (Thu)

[]JenkinsからSelenium IDEテストケースを使って自動テストを行う JenkinsからSelenium IDEのテストケースを使って自動テストを行うを含むブックマーク JenkinsからSelenium IDEのテストケースを使って自動テストを行うのブックマークコメント

この記事はNSEGアドベントカレンダーの10日目の記事と、

Selenium/Appium Advent Calendar 2015の22日目の記事です。

概要

Selenium IDEというWeb UIの自動テストを行うツールで作ったテストケースを、Jenkinsというビルドやテストの自動化を行うCI継続的インテグレーションツール)から呼び出して、定期的にWeb UIのテストを行う環境を構築します。


以前、Web UIのテスト自動化をしたいと考えていた時、

JenkinsとSeleniumでJavaScriptのテスト自動化、最初の一歩。第1回 日本Seleniumユーザーコミュニティ勉強会 − Publickey

のエントリーを読んで、JenkinsからSelenium IDEを使ったWeb UIのテストの定期実行できるということを知りました。

普通JenkinsからはSelenium Web Driverを利用すると思いますが、テストプログラムを書けなくてもSelenium IDEなら使えるという層がいる場合、Selenium IDEでのテストを使えるのは大きいです。

なのでこれはぜひ導入したいと思いました。


しかし、このエントリーではSeleniumhq Pluginを入れれば簡単に出来そうな感じに見えたのですが、実際に導入しようとすると結構色々とノウハウが必要でした。

そこで、Jenkins + Selenium IDEの導入方法と、その環境へのジョブの投入方法について説明します。

導入環境
注意点

環境構築

Jenkinsのインストール
selenium serverの準備
% cd /var/lib/jenkins
% ln -s selenium-server-standalone-2.42.2.jar selenium-server.jar
Jenkinsの設定

プラグインインストール

システム設定

  • 「Jenkinsの管理」→「システムの管理」選択
  • 「グローバルプロパティ」→「環境変数」をチェック
    • 日本語変換指定
      • CentOS5の場合XMODIFIERSの設定をしないとFirefoxの動作がうまくいかない
      • キー:XMODIFIERS
      • 値:@im=scim
    • Javaエンコーディング指定
      • レポートページの日本語が文字化けを防ぐ
      • キー:_JAVA_OPTIONS
      • 値:-Dfile.encoding=8859_1
  • 「Xvfb installation」選択
    • Name:Xvfb
    • ジョブ作成時に利用するXvfbを指定するための名前なので適当でよい。
  • Selenium Remote Control」
    • htmlSuite Runner:/var/lib/jenkins/selenium-server-standalone.jar
サーバFirefoxの準備
% yum install firefox xorg-x11-server-Xvfb

クライアント側(Windows)でXの表示可能にする
動作テスト

サーバFirefoxを起動してプロファイル生成と表示の確認

サーバFirefoxSelenium IDEプラグインを導入

サーバFirefoxからテストケースが実行可能か確認

テストケース内のパスの違いやFirewallの問題のため、Windows上では問題なかったテストケースサーバ上では動作しない場合がある。

そのため、サーバ上のFirefoxでもテストケースがきちんと動くか確認する。

  • /var/lib/jenkins などにテスト的に作成したテストスイート「example_suite_1.html」とテストケース「example_test_1.html」のようなファイルをアップロード
  • サーバ上のfirefoxを起動してSelenium IDEを開く(検索バー横に「Se」と書いてあるアイコンか「Tools」→「Selenium IDE」)
  • テストスイート「example_suite_1.html」を読み込み(Selenium IDEの「File」→「テストスイートを開く」)
  • テストスイート実行(「アクション」→「テストスイート全体を実行」)

selenium-server経由で自動テスト可能か確認

$ export XMODIFIERS="@im=scim"
    • CentOS5の場合、XMODIFIERSの設定をしないとFirefoxの動作がうまくいかなかったので注意
  • selenium-server経由でテストケースを実行
$ java -jar selenium-server-standalone.jar -htmlSuite *firefox http://www.example.com example_suite_1.html example_result_1.html
  • サーバ上のfirefoxの画面でテストが正常に動作し、終了後自動的にfirefoxが閉じられることを確認
    • テストが終了してもfirefoxが閉じられない場合、テストスイートではなくテストケースを実行していないか確認する。

画面出力をXvfbにして自動テスト可能か確認

  • Windows上でMobaXTermを起動
  • Xvfbを起動する
$ Xvfb :99 -ac -screen 0 1024x768x24 &
$ export DISPLAY=:99
$ export XMODIFIERS="@im=scim"
$ java -jar selenium-server-standalone.jar -htmlSuite *firefox http://www.example.com example_suite_1.html example_result_1.html
  • コンソールに何行かINFOが表示され最後に「15:09:34.372 INFO - Killing Firefox...」と出て終了し、「example_result_1.html」にテスト結果が書かれていることを確認

自動テスト項目の作成

大まかな流れ

  • Jenkinsの管理画面から自動テストの「ジョブ」を作成する
  • テストで使われるSelenium IDEのテストファイルをsftpで置く
  • 動作確認と定期実行指定
新規ジョブ作成
  • Jenkinsのダッシュボードから「新規ジョブ作成」
  • ジョブ名:
    • 半角英数の他のジョブ名と重ならない適当な名前
    • サーバ上のworkspaceディレクトリ名がそのままその名前で付けられるため、日本語ではなく半角英数で付けることを推奨。
    • この例では「example_test」とする。
  • フリースタイル・プロジェクトのビルド」を選択。
  • 「OK」を押すと詳細設定ページヘ遷移。
  • ソースコード管理
    • 「なし」を選択。
  • ビルド・トリガ
    • 一旦、なしで設定。
    • テストして問題なく動いたら「定期的に実行」で定時テストにする。
  • ビルド環境
    • 「Start Xvfb before the build, and shut it down after.」をチェック。
    • 「高度な設定」を選択
    • Xvfb screen:「1024x768x24」
    • スクリーンショット撮ることを考えて画面サイズと色数の指定をする。
  • ビルド手順の追加」→「SeleniumHQ htmlSuite Run」を選択
    • browser:Firefoxでテストする場合は「*firefox
    • startURL:対象となるサーバURLhttp://www.google.com/」など
    • suiteFile:Selenium IDEで作った『テストスイート』ファイル。テストケースでは『ない』ことに注意。
    • この例では「selenium/example_suite_1.html」とする。
    • resultFile:テスト結果が書かれるHTMLファイル名。レポート生成のため別フォルダにすること。
    • この例では「result/example_result_1.html」とする。
  • ビルド後の処理の追加」→「Publish Selenium Report」
    • 「SeleniumHQ htmlSuite Run」の「resultFile」と同じものを指定。
    • この例では「result/example_result_1.html」とする。
  • ビルド後の処理の追加」→「Publish Selenium Html Report」
    • 「SeleniumHQ htmlSuite Run」の「resultFile」の『ディレクトリのみ』であることに注意。
    • この例では「result/」とする。
    • ここで間違ってresultFileと同じものを指定するとぬるぽを吐いてしまうため要注意。
    • またresultフォルダを別にせずテストケースと同じところに出力していると、そちらも解析しようとして失敗する。
  • 「保存」を押すとプロジェクトのページヘ遷移。
テストスイート・テストケースファイルの登録
テストの動作確認と定期実行設定
  • テストの動作確認
    • Jenkinsのダッシュボードに先ほど登録した「example_test」プロジェクトが出ているので選択。
    • ビルドの実行」を選択すると自動テストが開始する。
    • ビルド履歴」に出てくる日時の横▼から「Console Output」を見るとテストの実行状況が確認出来る。
    • Selenium Report」を見ると各テストの結果詳細を確認できる。
    • ワークスペース」からファイルを確認出来るため、スクリーンショットの確認も可能。
  • 定期実行の設定
    • プロジェクトの「設定」を選択
    • ビルドトリガ」→「定期的に実行」をチェック
    • スケジューリング:毎日早朝4時にテストする例「H 4 * * *」

*1CentOSは諸事情により6ですらなく5です。しかし6でもあまり変わらないと思います。

トラックバック - http://d.hatena.ne.jp/stealthinu/20151210

2015-11-10 (Tue)

[]gitで取ってきたファイルのタイムスタンプをcommit日付に直す gitで取ってきたファイルのタイムスタンプをcommit日付に直すを含むブックマーク gitで取ってきたファイルのタイムスタンプをcommit日付に直すのブックマークコメント

git clone等で取得したファイルのタイムスタンプは、commitされた日時ではなく、そのgitコマンドを発行した日時になってしまいます。

なんかオプション指定でもすれば、commitした日時にできるのかな?と思ったのですが、簡単にはできないみたいで、gitwikiタイムスタンプを変更するperlスクリプトが書かれていました。


Setting the timestamps of the files to the commit timestamp of the commit which last touched them

https://git.wiki.kernel.org/index.php/ExampleScripts#Setting_the_timestamps_of_the_files_to_the_commit_timestamp_of_the_commit_which_last_touched_them


で、これと同様のことをshellスクリプトで行うものが下記サイトにありました。


コミット日付をタイムスタンプに復元したい

http://www.shigemk2.com/entry/git.timestamp


今まわりの人にMobaXTermを勧めていることもあって、MobaXTerm上でこれを使えるようにしたかったのですが、MobaXTermで使われているbusyboxだとdateの挙動の違いで動かなかったため、一部を修正して使えるようにしてみました。


git-set-file-times for busybox

https://github.com/stealthinu/git-set-file-times4busybox

for FILE in `git ls-files`; do
  TIME=`git log --pretty=format:%ci -n1 ${FILE} | sed -e "s/\([+-][0-9]\{2\}\)00$/\1:00/"`
  echo -e "${TIME}\t${FILE}"
  touch -t "${TIME}" ${FILE}
done

busyboxのdateコマンドでは「+0900」という書式でのTZ指定はエラーになってしまうため「+09:00」という形に置き換えるようになっています。

トラックバック - http://d.hatena.ne.jp/stealthinu/20151110

2015-10-29 (Thu)

[]git pushでCannot access…というエラーとその対応 git pushでCannot access…というエラーとその対応を含むブックマーク git pushでCannot access…というエラーとその対応のブックマークコメント

とある共用で使いたい環境にあるansibleの設定ファイルをgitで管理していて、ローカルのgitbucketのリポジトリにpushしようとしたのだけど

Cannot access URL http://gitbucket.local/toarurepo/toarurepo.git/, return code 22

のようなエラーが出てpush出来なかったのでした。


gitbucketの認証を通す必要があるらしいのはわかったのだけど、どう設定してよいかわからずぐぐる

Cannot push Git to remote repository with http/https - Stack Overflow

[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = http://username:password@git.repository.url/repo.git</a>

のようにしてurl中に「username:password」を埋めれることがわかりました。


ただ、さすがにpassword埋めるのはいやだなと思い、usernameの設定だけをしたのですが、今度は

(gnome-ssh-askpass:13543): Gtk-WARNING **: cannot open display:

というようなエラーが。なんじゃこりゃ。

パスワードを入力させるためのダイアログをXで開かせようとしてる感じ。


これもぐぐってみると下記エントリで解決法がありました。

tmpz84 Blog: 認証付き Git リポジトリに clone したときのエラー

$ unset SSH_ASKPASS

こちらの例はcloneの時だったようですが、同様にして解決できました。

トラックバック - http://d.hatena.ne.jp/stealthinu/20151029

2015-10-26 (Mon)

[]Selenium IDEJavaScriptのエラーが出た時はSelenium再起動する Selenium IDEでJavaScriptのエラーが出た時はSeleniumを再起動するを含むブックマーク Selenium IDEでJavaScriptのエラーが出た時はSeleniumを再起動するのブックマークコメント

Jenkins + Selenium IDEで自動実行させたいものがあり、SeleniumからjQueryを使ってフォームのチェックを選択するようにしていました。


Seleniumは「getEval」コマンドを使うことでJavascriptを実行でき、一旦下記のようにして「$」を設定してやれば、その後は普通にjQueryを使うようにgetEval内でjQueryコマンドを発行できます。

$ = this.page().getCurrentWindow().jQuery

この辺のことは

SeleniumJavaScriptを使う方法いろいろ(変数関数などの利用) - colori

https://colo-ri.jp/develop/2008/04/seleniumjavascript.html

が大変参考になります。


で、これでjQueryを使ってフォームの該当チェックボックスの選択をしたりしていたのですが、ちょっと条件を変えたいことがあり、変更していたところ突然動かなくなってしまいました。

getEval内のJavaScriptにエラーがあったのですが、それを修正しても動かないのです。

それで条件を単純に変えてみたり、元の条件に戻したりやってみたのですが、なかなかエラーが解消されず…

で、他のPCで同じようなことをテストで試してみたところ、さっくりと通ることがわかりました。


もしやと思い、一旦Selenium IDEを落として、再度同じテストケースを読み込んで試したところ、なんの問題もなく通りました。

どうもgetEval使ってJavaScriptのエラーが一旦起きると、再度テストケースを走らせても内部の状況がクリアされずに走るため、テストケースの修正をしてもまたエラーが起きてしまうようです。

なので、Selenium IDEでgetEval使ってJavaScriptを動かしているとき、JavaScriptでエラーが出た場合、テストケースを修正したら、一旦Selenium再起動して試す必要があるようです。

トラックバック - http://d.hatena.ne.jp/stealthinu/20151026

2015-09-28 (Mon)

[]CentOS6にGitBucketをインストールするときの注意点 CentOS6にGitBucketをインストールするときの注意点を含むブックマーク CentOS6にGitBucketをインストールするときの注意点のブックマークコメント

2年くらい前にCentOS5にGitLab5を入れようとしてすごく大変だった思い出があり、githubクローンインストールは僕の中で非常に大変な作業という印象があったのですが…

GitBucketがあまりにも簡単にインストールできてもうびっくりで感動でした。

ただ、一箇所だけハマったところがあったので、その注意点を書くためにこのエントリを書いてます。


GitBucketはScalaで書かれたgithubクローンで、Scalaなのでjavaで動きます。

今回はCentOS6に入れたのですが、Tomcat7以上で動くとのことで、Java7とTomcat7のインストールを行います。

これは下記エントリのようにjpackageのリポジトリを使ってインストールすると簡単です。


GitBucketを5分で導入する方法 | りぐん怪獣じゃないもん!


ただ、そのままだとGPGの署名チェックで失敗するので、下記エントリのように /etc/yum.repos.d/jpackage.repo の「gpgcheck=0」に修正してやります。

CentOS6にJDK8・Tomcat7の環境を構築した時に詰まった話 | Hack


なんとこれだけでインストール終わりです。

あとはブラウザでアクセスするだけ… GitLabであんなに苦労したのは何だったのかと。


しかし、自分の環境ではこれだけではうまく動いてくれませんでした。

上のエントリーで

GitBucketの管理ディレクトリtomcatのホームディレクトリに作られるんだけどホームディレクトリがないとエラーになる。

と書いてあるように、GitBucketの管理ディレクトリ .gitbucket がtomcatのホームディレクトリに作られます。

普通にyumインストールすると、tomcatユーザのホームディレクトリは /usr/share/tomcat7 になりますが、ownerはrootになっているため、tomcatの権限で .gitbucket を作るときに失敗してしまいます。


そこで、chownでownerを変更してやります。

$ sudo chown -R tomcat.tomcat /usr/share/tomcat7

tomcatのページは表示されて、GitBucketのwarファイルの自動展開も行われているのに、ページの表示が行われない場合、ここをチェックしてみると良いと思います。


まとめると

yum install java-1.7.0-openjdk-devel
yum install yum-plugin-priorities
rpm -Uvh http://mirrors.dotsrc.org/jpackage/6.0/generic/free/RPMS/jpackage-release-6-3.jpp6.noarch.rpm

/etc/yum.repos.d/jpackage.repo 修正

gpgcheck=0

yum install tomcat7-webapps
wget https://github.com/takezoe/gitbucket/releases/download/2.0/gitbucket.war
mv gitbucket.war /var/lib/tomcat7/webapps/
chown -R tomcat.tomcat /var/share/tomcat7
service tomcat7 start
トラックバック - http://d.hatena.ne.jp/stealthinu/20150928

2015-09-01 (Tue)

[]DNSのTXTレコードを複数書く場合 DNSのTXTレコードを複数書く場合を含むブックマーク DNSのTXTレコードを複数書く場合のブックマークコメント

自社のメールがGmailでどれだけスパム判定されてるか、グーグルのPostmaster Toolsで調べてみた | 編集長ブログ―安田英久 | Web担当者Forum

を見て、これは試してみねば、と思い、早速試してみようとしたのですが、メールアドレスドメインを登録するのに、DNSのTXTレコードgoogleの認証を設定する必要がでました。


しかし、すでにSPFレコードの設定が書いている場合、2つ目のTXTレコード設定を追加するにはどうするんだっけ?となりました。


SPFレコードに複数のIPを指定する場合や、複数行での記述をしたい場合、山井先生の書かれたこのページの説明がとても参考になります。

間違いから学ぶSPFレコードの正しい書き方 : 迷惑メール対策委員会


ですが今回の場合、SPFレコードとは別にgoogleの認証コードも書きたい、というもので、これまでTXTレコードを複数行書いたことがなかったので自信なくて…


結局、単純に複数行併記すれば良いようです。

例では1行目にSPFレコードを、2行目にgoogleの認証コードを指定しています。

example.jp.   IN   TXT   "v=spf1 +mx ~all"
example.jp.   IN   TXT   "google-site-verification=xxxxxxxxxxxxxxxxxxxxxxxxxx"

こっちの記述のほうが正しい(良い)というのがあればご指摘ください。

トラックバック - http://d.hatena.ne.jp/stealthinu/20150901

2015-08-31 (Mon)

[]vagrant上のCentOSyumがエラーになった件 vagrant上のCentOSでyumがエラーになった件を含むブックマーク vagrant上のCentOSでyumがエラーになった件のブックマークコメント

vagrant上でCentOS6.6を動かしていたのですが、ある時からyum installやupdateをしようとすると

[Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"

他のミラーを試します。

というエラーが出るようになりました。


これは /etc/yum.repos.d/CentOS-Base.repo の mirrorlist や baseurl で

baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

のように設定されているところで $releasever が「6.6」になっているとうまくいかず、404になるURLを確認してみると

http://mirror.centos.org/centos/6.6/readme

This directory (and version of CentOS) is deprecated. For normal users,

you should use /6/ and not /6.6/ in your path. Please see this FAQ

のように書かれており「6.6」ではなく「6」でアクセスするようにせよ、と書いてあります。

これはググるとよくこの問題が出てきます。


なので、baseurlのコメントを外してmirrorlistのほうをコメントにしてやり、$releaseverを「6」に置換えてやることでとりあえず yum が動くようにはなりました。


なのですが、他のCentOS6環境だと何も設定変更しなくても yum update で6.7に上がっているのに、なぜここだけは6.6から自動的に上がらないのだろう?と不思議でした。


下記エントリでvagrant上でCentOS6動かしていると、IPv6が効いていると全く同じエラーが出る、と書かれていたためIPv6を切ってみたのですがやはりダメ。

vagrant環境下で [Errno 14] PYCURL ERROR 6 – “Couldn’t resolve host エラー | blog@human


そこで $releasever の値を「6」にするのはどこでやっているのかを調べると、

Red Hat Customer Portal

/etc/centos-release (/etc/redhat-release はここへのシンボリックリンク)のバージョンだ、ということだったので、ここのテキストを直接編集したのですが、自分の環境では変化がありませんでした。

ただ、通常はこれで変わってくれるようで、/etc/yum.repos.d/CentOS-Base.repo の中身を修正して回るより良いと思います。


さらにもう少し調べると

/etc/yum/vars/releasever ファイルでリリースバージョンを固定する | blog.hansode.org

というのがありました。

そこで /etc/yum/vars/releasever を確認すると、「6.6」となっていました。

デフォルトだとこのファイル自体が存在していません


実は vagrant の CentOS6.6 イメージを hansode さんが作られたもの(hansode/centos-6.6-x86_64)を使っていたので、もろにこの設定がされていたものを意識せずに使っていたため、この状況にハマってしまっていたのでした。


というわけで /etc/yum/vars/releasever を削除することで、普通に yum が使えるようになりました。

トラックバック - http://d.hatena.ne.jp/stealthinu/20150831