読者です 読者をやめる 読者になる 読者になる

togatttiのエンジニアメモ

過度な期待はしないでください。旧麹町で働くエンジニアのメモ帳です。

Raspberry Pi 3でPhantomJSを使う

github.com これをcloneすれば、すぐ使える。

parallel-slurpで、ファイルを並列で取得する

複数のホストから、ファイルをダウンロードする必要があったので、方法を調べた。 parallel-slurp(pslurp)という便利なものがあったので、使うことにした。 インストール OSは、Ubuntuなので、APTでインストールする。 # apt install pssh manを読むと、やり…

browsertimeで、Webページの描画過程を録画する

browsertimeを使い、Webページのロード時間を計測しながら、描画過程を録画する。 うまくいくとこんな感じで、録画できる。 browsertimeで生成されたmp4ファイル、HTMLの記述例などは、GitHubに置いた。 https://github.com/kentatogashi/example-browsertim…

外部サーバにSquid3でプロキシを立てる

プロキシを設定したときの走り書きです。 環境は、Ubuntu14.04.3 LTSです。 インストール # apt-get install -y squid3 設定ファイル /etc/squid3/squid.confをコピーして使う。特定のACLからの80と443ポートへのアクセスをフォワードするように 最低限の設…

FreeBSD10のHTTP/2設定手順

FreeBSD10で、HTTP/2の検証をしようと思ったので、設定手順を残す。 Webサーバは、Apacheを使う。 環境 OS FreeBSD10.3 必要なソフトのインストール クリーンインストール後からの作業を想定しているので、 すでに稼動しているサーバとは手順が異なるかもし…

ファイルの各行にUUIDを付加するスニペット

ログ収集ツールのfluentdのuuid_keyを使う場合、ログにUUIDを振る必要がある。 こんなときシェルスクリプトで、whileやfor、uuidgenを組み合わせて、追記していたが、 行が膨大な場合、処理の遅延が気になったので、C言語で処理するプログラムを書いた。 プ…

プレミアリーグを得点時間帯ごとにクラスタリングする

概要 スポーツの結果予想のために、最近、少しずつ機械学習に取り組んでいる。 今日は、機械学習 k-means(k平均法)を用いたクラスタリングを試してみる。 素材は、サッカーの時間帯別の得点率で、これを使いチームをクラスタリングする。 テスト用に作成し…

Kibana5.0.0に、認証、認可を実装する

概要 Kibanaを管理者以外の誰かに使わせる場合、そのユーザを認証し、閲覧できるインデックスを限定したいことがある。 Shieldという有償プラグインで認証、認可が可能らしいが、お金をかけずに実現したかった。 dev.classmethod.jp 今回は、OpenRestyを使い…

KibanaをNginxのリバースプロキシで動かす

環境 Ubuntu 16.04 Elasticsearch 5.0.0 GA Kibana 5.0.0 使用するIPは、192.168.0.2とする。 メモ 試行錯誤した結果、設定ファイルのLocationディレクティブをこうすると動作した。 location ~ (/app/kibana|/bundles/|/status|/elasticsearch|/plugins|/ti…

Elasticsearchクラスタの共有リポジトリ設定

Snapshot機能で、使用する共有リポジトリの設定方法を示す。 概要 クラスタに、共有リポジトリを設定するためには、どのノードからもアクセスできるようにファイルシステムを共有する必要がある。 今回は、NFSで、共有ファイルサーバを構築し、共有リポジト…

Elasticsearchのデータをバックアップして、別ノードにリストアする

Elasticsearchを運用していて、あるノードのデータをバックアップして、それを別のノードにリストアする方法を探した。 以前は、elasticsearch-knapsackやesclientといった方法があったらしい。 Elasticsearchのデータを簡単にimport/exportする - (゚∀゚)o彡 …

IPアドレスから、都道府県庁の緯度、経度を取得するスクリプト

Kibana4のグラフ描写で、緯度、経度が必要だったので取得するスクリプトを書いた。 書いたスクリプトはこれ。 IPアドレスから、緯度、経度を取得するスクリプト · GitHub 準備 $ gem install geoip $ wget http://geolite.maxmind.com/download/geoip/databa…

GitLab8.6.1にアップグレードで出たエラーの対処

運用しているGitLab (8.0.2)のバージョンが古かったので、 8.6.1にアップグレードしたところ、エラーが出たのでメモを残す。 環境 OS Ubuntu 14.04 GitLab アップデート前 8.0.2 アップデート後 8.6.1 インストールは、 gitlab/gitlab-ce - Packages - packa…

sedで、範囲指定してから、文字列置換を使う

sed

sedで、範囲指定してから、文字列置換する方法を備忘録として残しておく。 例えば、以下のようなファイルがあるとする。 $ cat sample_http.conf <VirtualHost example.com:80> User www Group www Port 80 SSLDisable ServerAdmin admin@example.com ServerName example.com </VirtualHost> <VirtualHost example.com:443> User www </virtualhost>…

Docker Machine にコマンドを追加する

MacOSで使う、 Docker Machine に、gcc、makeコマンド等を入れる方法を調べたので残す。 docker machineで、使われているOSは、TinyCoreLinuxというものらしい。 TinyCoreLinuxでは、tce-loadを使いパッケージをダウンロード、インストールすることができる…

SeleniumサーバをDockerで構築する

SeleniumサーバをDockerコンテナとして構築する。 すでにGitHubにdocker-seleniumというプロジェクトが出ているが、 今回は日本語環境で利用したかったので、ゼロから作り直した。 github.com 使い方 $ git@github.com:kentatogashi/docker-selenium-ja.git …

作業用Bashスクリプトのテンプレート

よく自分で書く作業用Bashスクリプトのテンプレートを残す。 気にかけていることは、 -e オプションで、エラー時点で処理終了 エラー時は、$LINENOで、該当行数出力 -x オプションで、デバッグ あたりは、必ずできるようにしてる。 余裕がある時は、 出力を…

JenkinsをDocker環境にリプレイスする

JenkinsサーバをDockerコンテナとしてリプレイスする手順を示す。 前提 Jenkinsのバックアップは、ThinBackUpプラグインを使用して取得 thinBackup - Jenkins - Jenkins Wiki Jenkinsのプラグインは、ThinBackupではバックアップされないので、手動で取得 Do…

2分でWordPressをセットアップする(Docker編)

Dockerで、WordPressのセットアップが2分でできた。 Apache、MySQL、PHP等のミドルウェアも、Docker コンテナで完結する。 コンテナは、Docker Hub にある、WordPressとMySQLの公式版を使う。 準備 $ docker-machine ssh dev $ cat setup_wp.sh #!/bin/sh do…

Ansibleで、クライアントPCのファイルの存在チェック

Ansibleを使うとき、クライアント側の実行結果をトリガーにして何かする場合、 local_actionとregisterモジュールを組み合わせれば良い。 クライアントPC側で、あるファイルの存在を確認するためには、statモジュールを使う。 使用例 一般的なAnsibleのディ…

Designate の413エラーの対処

OpenStack Designate で、ゾーン登録時に、エラーが出たので対応方法を残しておく。 下記の作業は、designateが置いてあるホストで、行う。 事象 ゾーン登録時に、下記のエラーが出た。 413 Request Entity Too Large ソースコードを調べると、どうやら、Des…

OpenStack Keystoneで、Designateを認証する

Designateは、既にインストールされていることを前提とする。 OpenStack Designate を試す : あかぎメモ ちなみに、これで、Designate の仮装環境を用意した。 ここで紹介すること KeyStone セットアップ テナント登録 DesignateへのKeystone設定 Keystoneを…

Jenkinsのジョブをコマンドラインから生成する

Jenkinsのジョブをコマンドラインから、生成する方法を調べてみた。 OSは、Ubuntu14.04。 結論から言うと、XMLファイルをjenkins-cli.jarの create-jobコマンドに与えればよい。 Jenkins CLI - Jenkins - Jenkins Wiki 以下の実行パスや、URLは各自の環境に…

Firefoxの証明書警告を自動でスキップする

自動テストで、Seleniumを使っているが、自己割当証明書のドメインをテストする たびに、例外証明書として、登録するのが手間だと思ったので、自動化でできないか調べてみた。 証明書警告とは、このような表示。。 自動で、証明書警告をスキップするためには…

Slackでアニメ放送時間の通知Botを作ってみた

最近、Slackを使ったアプリネタを見る機会が増えてきた気がします。 なので、自分でもやってみようと思いました。 今回は、アニメ放送時間の一時間前になったら、定期通知するBotを作ってみます。 具体的には、 Web UIにアニメの放送時間を登録 Cronファイル…

Gitの環境変数をrootに引き継ぐ

開発者ごとのGitのCommiter、Author情報を.bashrcで管理し、rootにスイッチしても 引き継ぐようにしたかったので、調べた。 ただ、.bashrcに書いただけだと、sudo suして、スイッチした後にリセットされる。 $ cat ~togashik/.bashrc export GIT_AUTHOR_NAME…

MongoDBにxvideoのデータを突っ込む

概要 データ解析に興味を持ち始めたので、素材として、xvideoのデータを突っ込んだ。 特に、特に、疾しい気持ちがあったわけではなく、本当に、ぱっと、浮かんだのがこれだっただけ。。 手順 xvideoのCSVデータを準備 CSVからmongoDBにつっこむ xvideoのCSV…

Vagrant環境にLive Reloadを設定する

概要 LiveReload はファイルの変更を検知して、ブラウザを自動リロードするJavaScript製のライブラリ。 これを使うことで、cssやviewを修正したときに、手動でリロードせずに変更箇所を確認することができるようになる。 今回、Vagrantのゲスト内でRailsアプ…

Vagrant Cloudを使って、仮想マシンを構築する

Vagrant Cloudを使って、仮想マシンを構築する。 各種バージョン $ vboxmanage --version 4.3.14r95030 $ vagrant -v Vagrant 1.6.3 今回、作りたい仮想環境はUbuntu14.04。 Vagrantcloudに登録する Vagrant Cloud ログイン後、「Discover」から、好きなボッ…

Seleniumにfirefoxプロファイルを設定する手順

Seleniumを使う際のfirefoxプロファイルを設定する手順を メモしておく。 環境とバージョン Ubuntu(デスクトップ)は14.04 Firefoxは31.0 Selenium Serverは2.42.1 firefoxプロファイルの作成 コマンドラインを開いて、下記コマンドを実行する。 $ firefox -P…

Thorに任意のコンストラクタを設定する

Thorはコマンドラインツールを作成するrubyのライブラリで、基本的な使い方は 以下のURLに書いてある。 Ruby - Thorの使い方まとめ - Qiita Thor - Home 複数のコマンドを使うときは、コンストラクタで変数をまとめておいて、 各コマンドに渡す形の方が、見…

SeleniumRCでPreparing Firefox profile...で止まるときの対処法

Selenium RCで自動テストするとき、テストスイート実行前にFirefoxが 10回に一回くらい、停止してしまいテストができない状況があった。 調べても原因がいまいち分からずじまいだったが、ようやく対処法 を見つけたので、メモしておく。 といっても、状況は…

RubyGemsにパッケージ公開した

search_mboxというRubyのパッケージを公開した。 といっても、メールを指定した条件に合わせて、検索するだけの即席で簡単な自己満足パッケージ。 メッセージIDとSubjectとBodyを取得する。 ソースと使い方はここに書いた。 kentatogashi/search_mbox · GitH…

Rubyで外国為替レートを取得する

Rubyで外国為替レートをリアルタイムで取得する必要があったので、メモしておく。 欲しい情報は1ドル単位の円相場。 実際に、GoogleとかYahooなどのファイナンス情報をスクレイピングして持ってくる 方法もあったが、APIがあったのでそれを使う。 Rate Exch…

Passengerを使いRailsアプリを公開する

RailsアプリをApacheで公開する必要があったので、Passengerを使うことにした。 その備忘録を残しておく。 同じ内容をGistでも残した。 setup_passenger.md 環境 CentOS6.5 Apache/2.2.15 Phusion Passenger version 4.0.41 ruby 2.0.0p451 準備 Railsアプリ…

「第五回ゆるぎー Jenkinsがチームにもたらしてくれたこと」に参加してきた

「第五回ゆるぎー Jenkinsがチームにもたらしてくれたこと」に参加してきた。 Welcome to Jenkins CI! | Jenkins CI 今回は社内でJenkinsを導入したという@uasanoさんが講師だった。 前半はJenkinsとは何か、というのとJenkinsをチームに導入した後の変化に…

SeleniumRCの構築手順とチュートリアル

概要 SeleniumRCを利用して、アプリケーションのテストを行う手順を備忘録として示す。 また、Pythonでチュートリアルも書いた。 イメージ図 ローカルPCとSeleniumRCとアプリケーション等の関連を示した図 補足 SeleniumRCをVPS上で起動させる。 ローカルPC…

Macでcrontabを使う

Mac

MacOS10.9.2でcrontabを使う。 crontabで使う実行スクリプト指定 $ crontab -e 挿入画面を開いて、時刻と実行コマンドを指定する。 */1 * * * * /bin/bash /Users/togattti/my_app/sendmail.sh 実行スクリプトの確認 $ crontab -l crontabの解除 $ crontab -r

Perl Beginners#12 に参加してきた

昨日Perlの初心者から〜中級者を対象にしているというPerl Beginnersに 参加してきたので、勉強メモをつらつら、だらだらと残しておく。 ちなみに今回のテーマは"イケてない"と"クール"とだった。 早速、基調講演とLTに分けて、書いていく。 基調講演 dokech…

Perlでデバッグ時に変数名と値を同時に出力する

変数をデバッグする時に、複数の値を一度に確認したい。 そういうときに、変数名と値がセットになっている分かりやすい。 いい方法を探していたら、Data::Dumper::Namesというモジュールがあったので、メモしておく。 Data::Dumper::Names - search.cpan.org…

PERL5LIBなどの環境変数をセットするワンライナー

cpan,cpanmで任意のディレクトリにインストールされたPerlモジュール をlocal::libでPERL5LIBなどの各環境変数にセットするワンライナーをメモしておく。 cpanm local::lib && eval $(perl -I ~/perl5/lib/perl5 -Mlocal::lib) を実行すると、必要な環境変数…

Seleniumのテスト対象を別ウィンドウに切り替える

はじめに Seleniumのテストの最中に、target="_blank"などをクリックして新しくウィンドウを開くとき、 そのウィンドウを対象にしたテストを行う方法について調べた。 Seleniumのバージョンは2.35.0. 言語はPerlを使い、WWW::Selenium::Test,Test::Moreモジ…

ChefのChildConvergeErrorの対処法

VM

VirtualboxとVagrantで立てた仮想UbuntuにChefを使い、自動設定しているときに、下記のエラーがでた。 Ubuntuのバージョンは13.04。 FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1) ERROR: RuntimeErr…

UbuntuにChefでLAMP環境構築する

VM

前回作成したUbuntu環境に合わせる。 VagrantとVirtualBoxでUbuntuを構築する手順 - 麹町で働くWebエンジニアのメモ帳 まず、Chefやknife-soloは事前にインストールしておく。 Chefは公式サイトのInstall Chef | Chefから下記コマンドでインストールする。 c…

VagrantとVirtualBoxでUbuntuを構築する手順

VM

MacOS(10.9.1)のローカル環境にVirtualBoxとVagrantとChefを使って、仮想のUbuntuを立ち上げる。 また、VirtualBoxとVagrantも最新のものに入れ直した。 Rubyは2系を利用している。 $ ruby -v ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64…

Perlでデバッグ用の出力処理を書いた

デバッグ用ファイルの出力処理を書いた。 Perl5.10で標準ライブラリとして使うことのできるTime::Pieceモジュールで、日時指定などを行っている。 これまで日時指定といえばTime::Localモジュールを使っていたが、Time::Pieceの方が、 明示的に名前を指定で…

Packageでメソッド呼び出す時の第一引数について

下記のようなコードで、メソッドを呼び出そうとするとき。 use strict; use warnings; package Hoge; sub print_class { my $class = shift; print $class; } 1; アロー演算子だと第一引数にはPackage名のHogeが渡される。 Hoge->print_class; ::だと明示的…

Perlのリファレンス、デリファレンス入門

前提 PerlのプログラムはCPUメモリの中で動作する。 値を入れた変数や特定の処理を保持したサブルーチンなどのデータはメモリ領域上のどこかに保存される。 リファレンスとは メモリ領域の中のどこに変数やサブルーチンが保存されているかを示す場所情報、 …

FindBin::libsを使ってlibまでのパスを取得する

FindBin::libsを使ってみたので、メモしておく。 普通のFindBinを使っても同じことができるけど、こっちのほうがすっきりしてる気がする FindBin::libsとは FindBin::libs Perlモジュールなどが置いてあるディレクトリ(libとか)までのパスを取得して、 その…

telnetとnetstatでポート番号の状態を確認する

最近Cent0S6.5をVPSで立ち上げて、Apacheを起動させたときに Webページを表示できなかったことがあった。 前提 httpd.confファイルは正しい。 httpdプロセスも動いている。 それではポート番号はどうだろうか。 telnetで外部からポート番号が空いているか調…