Archives
Groovy TLS
久しぶりにGroovyを触った
Groovyで作成したプログラムがTLSで通信できるようにしないといけなくなったので少し調べた。
Javaの場合
javaで強制的にTLS1.2を使うようにするにはJVM起動時オプションを渡す Java7はデフォルトでTLS利用可能 Java8はデフォルトでTLS1.2使える
JVM起動オプションに
-Dhttps.protocols=TLSv1.1,TLSv1.2
-Djdk.tls.client.protocols=TLSv1.1,TLSv1.2
を指定する。Eclipse等IDEの場合はJREの起動VMオプション設定に追加する。
Groovyの場合
System.properties[‘https.protocols’] = ‘TLSv1.1,TLSv1.2 ’
System.properties[‘jdk.tls.client.protocols’] = ‘TLSv1.1,TLSv1.2 ’
これシステムプロパティを書き換えてるので、同時に他社のJVMプログラムとかあったりすると影響与えそうなんだけど……
Socket.io
Node.jsとSocket.io
Node.jsの復習ついでにSocket.ioを試した。
メモ
- emitで送信者から送信者以外全員に送信
- broadcastで全員に送信
- socket.idを指定することで特定の相手にのみ送信
/namespace#room#id
で特定の相手に送信できる。idのみだとダメっぽい。- redisにメッセージを押し込んでおくと複数プロセスでメッセージを共有できる
オマケ
alpineのredisのdockerイメージを使うと軽くてお得。
以下でredisのtail -fぽい感じで全部見れるので便利
$> redis-cli -h ${HOST} -p ${PORT} monitor
Setup OTRS
OTRSをインストールしてみた
オープンソースのチケット管理システム的なもの主にサービス・サポート部署で使うようなもの
セットアップ
環境はUbuntu16.04
基本はダウンロードしてきて実行するだけ。 本体はWeb公開領域におけばいいかな?
つまったところ
- anynevを使おうとして詰まった、anyenvをシステムワイドに使う場合は割り切ってrootで設定する
- plenvをインストールすることはすんなりいくが、モジュールパスなどで使おうとすると詰まる
- ->システムのperlを結局使うことに
- cpanmでDBD::mysqlをインストールする場合、以下の事が必要
- 先にMySQLがインストールされていること
- Ubuntuの場合はlibmysqlclient-devがインストールされていること
- というか/opt/otrs/bin/otrs.CheckModules.pl の実行で必要なモジュールが確認できる
- モジュールが依存するライブラリも存在するので合わせて入れること
感想
domainやメールの設定がちゃんとできていれば特に躓くこと無くセットアップできそう。 最終調整?セットアップがGUIのため、Ansibleでセットアップとかは難しそう。
anyenv systemwide
anyenvをシステムワイドにインストールしようとした
環境はUbuntu16.04
anyenvをシステムワイドにインストールしてrbenvいれようとしたら、sslのチェックを無視しないと入らなかった。 rbenvからrubyをインストールしようとしたらダウンロードに失敗してできない。
結論から書くと
apt-get install ca-certificates
して、ca-certificates入れてからrbenv install を再度試したら成功した。
Selenium WebDriver Setup
Selenium WebDriver を試してみた
環境は
- Ubuntu 16.04
- Python 3.6.1
ついでにChromeのheadlessモードも試す。
事前準備
pyenvで3.6.1を入れてお試し環境にセットする
gecko driverをダウンロード Release v0.17.0 · mozilla/geckodriver · GitHub ※任意のバージョンを入れる。
PATHを通す。今回は/usr/local/sbin/
に置いて勝手にPATHが通るようにした。
Chromeを最新にする
バージョン59にする。 ChromeDriverDownloads - ChromeDriver - WebDriver for Chromeをダウンロードしてgeckodriverと同じくPATHの通った場所に配置する。
create wordpress theme
WordPressのテーマを作成してみた
レスポンシブな自作レイアウトをWordPress用テーマを作成してみた。
今確認してみたら、いくつかおかしい箇所が見つかった(´・ω・`)
大雑把な構成
以下のファイルを作成した。
name | description |
---|---|
404.php | 404 Page |
category.php | カテゴリー一覧ページ |
date.php | 年月アーカイブページ |
footer.php | フッター共通パーツ |
front-page.php | TOPページ |
functions.php | 機能を記述するファイル |
header.php | ヘッダー共通パーツ |
index.php | 割り当てるテンプレートが見つからなかった場合に使われるベースページ |
page.php | 固定ページテンプレート |
sidebar.php | 共通サイドバーパーツ |
single.php | 1記事のページ |
style.css | 全体のCSSここにテーマ名とかも記述する |
tag.php | タグ一覧ページ |
parts/articles.php | 特定の記事の一覧を出力するパーツテンプレート |
parts/top-header.php | 共通のブログヘッダーパート |
絶対TOP表示に使うマン
WordPressには特定の名前のテンプレートは決められた使われ方をする。
その中でfront-pageはTOPに使われる最上位の名前、他いくつかあって、それらが見つからなかった場合、index.phpが使われる。
パーツを呼び出す
- header.php : get_header() で呼ぶ
- footer.php : get_footer() で呼ぶ
- sidebar.php : get_sidebar() で呼ぶ
- path/to/part.php : get_template_part(‘path/to/part’) で呼ぶ
まとめ
- 簡単な画面構成なら簡単に作れる感じ。
- ページネーション作り忘れた!
- 固定ページへのURLなんか間違えた…
VSCode
VSCodeでよく使うショートカットなど
基本はEmacsを使うけどWindows環境で何かする場合はVSCodeの方が使いやすいので忘備録てきな
画面
コマンドパレット: Cmd+Shift+p クイックオープン: Cmd+p 統合ターミナル: Cmd+` Zenモードとの切り替え: Cmd+k -> z
エディター
マルチカーソル: Cmd+Opt+矢印 同じ単語(選択済み?)選択: Cmd+F2 選択した単語を同じもののうち、編集してもよさそうなやつだけ編集: F2
setting ntp on Ubuntu
EC2のUbuntu14.04にntpを設定
事の発端は、AWSのS3へのアクセスのための認証に使用しているCognitoコードで認証エラーがでるようになった。
エラー内容はInvalidSigunatureException なんかタイムスタンプが早すぎるみたいなエラー内容。
Nodeのアプリを再起動しても、AWSのCognitoの設定をみても解決せず。 タイムスタンプが早すぎるって意味わかんねーよってdateコマンドを実行してみたら、あら時刻ずれてるじゃない。。
要はCognitoでトークンを生成するためのタイムスタンプがずれるのでどうしたってエラーになっちゃう問題。
時刻がずれていることが原因と分かったので、暫定措置として時刻をあわせる(日本標準時)。 ※サーバーはUbuntu14.04
sudo ntpdate ntp.nict.jp
※前提としてntpdateがインストールされていること
いろいろ調べていたら、EC2でUbuntuを使うならNTPサーバーを利用して下さい的な感じだった。
NTPを入れる
根本解決のため、NTPサーバー機能をいれる。
sudo apt-get install -y ntp
そんで設定ファイルを編集する。 /etc/ntp.conf
- デフォルトの時刻サーバーをコメントアウト
- 代わりに
server ntp.nict.jp
を3行書く
上記の設定と内容の説明については他人の記事をご参照ください。
編集したらNTPサーバービスを再起動する
ぐお、タイムゾーンが
作業したサーバー(どちらもUbuntu14.04)のうち、1つがUTC、1つがJSTのタイムゾーンになってて、キモティ悪かったので、揃える。
sudo timedatectl set-timezone Asia/Tokyo
これでOK
Zabbix remote command
Zabbixのアクション定義でリモートコマンドを実行する
サーバーを監視するソフトウェア?Zabbixで、トリガーを元にアクションを起こす場合、メール通知やSlackにPostする以外に対象のホストもしくは任意のサーバーにコマンドを投げて実行することが出来る。
Agent側の設定
Zabbixエージェント側(コマンドを投げつけられる側)の設定ファイルの
#EnableRemoteCommands = 0
となっている箇所をコメントアウトを解除して値を1に変更する。
Zabbix-Agentサービスを再起動してエージェント側は最低限の準備完了
Zabbix: アクションの設定
アクションの設定で実行内容を「リモートコマンド」にして、タイプを「カスタムスクリプト」にする。
コマンドはエージェント側にスクリプトを用意している場合は、それを、用意していない場合は直接コマンドを書く。
パイプが使えるので、何か実行して結果をテキストファイルに追記するとかが可能。
Zabbixは敷居が高いけど便利ですね。
Mastodon git clone
Mastodonをgit cloneして中を見てみる
今流行りのMastodonをgit cloneしてみた。
中は設定ファイルが沢山とrails関係、フロント用のnode_modules、テスト関係、それからVagrantfileやDocker関係のファイル。
ファイル群について
今日は内容をざっと見るところまで。
内訳は、以下です。ディレクトリを意味するものは最期に「/」をつけています。
- ライセンスとかReadmeとかDocumentとか
- CONTRIBUTING.md
- ISSUE_TEMPLATE.md
- LICENSE
- README.md
- docs/
- buildpack
- .buildpacks
- Heroku用設定ファイル
- .slugignore
- Procfile
- デプロイツール(サービス)用
- scalingo.json
- コードレビュー用?設定ファイル
- .codeclimate.yml
- エディターの設定統一用設定ファイル
- .editorconfig
- git
- .git/
- .gitignore
- 環境変数設定ファイル(もしかしたらRails専用かも?)
- .env.production.sample
- .env.test
- .env.vagrant
- Ruby on Rails関係
- .rspec
- .rubocop.yml
- .ruby-version
- Capfile
- Gemfile
- Gemfile.lock
- Rakefile
- app/
- app.json
- bin/
- config/
- config.ru
- db/
- lib/
- log/
- public/
- spec/
- tmp/
- vendor/
- JavaScriptのトランスパイルとかビルドとかフロントエンド開発用とか
- .nvmrc
- .babelrc
- .eslintignore
- .eslintrc
- node_modules
- package.json
- storybook/
- streaming/
- yarn.lock
- CI テスト用
- .travis.yml
- Vagrant
- .vagrant/
- Vagrantfile
- Docker
- .dockerignore
- Dockerfile
- docker-compose.yml
きになったところ
- BabelでES7?やデコレータをトランスパイルするためにPlugin入れてる
- ドイツの人が作ったからかScalingoなんていうヨーロッパ圏で流行ってるのかもしれないデプロイツール入ってた
- プルリクされるの前提だからか今時当たり前なのか知りませんがコードレビューサービス用やコーディングルール統一用の設定ファイルが入っていた
- Storybook面白そう
- yarn使ってる?
- Vagrantでのプロビジョニングがshell(Docker出てきて以降シェルゴリが一般的になった気がする。。。)
- Vagrantで、rubyはrbenvで入れるのに、nodeはパッケージで入れてる(バージョンにこだわりはない?)
- VagrantではOSにUbuntu14.04(trusty)を使用している(DebianでもOpenSUSEじゃないんだ)
- Dockerの場合はAlpineなのね。
- Railsのことさっぱりだけど、どうやらsidekiqというgemを使って非同期なキューの処理を実現しているらしい、redisをバックエンドに使うようだ
- Webサーバー用意してリバースプロキシって構造ではないんですね。
- Rails = Unicornというイメージでしたが、Rails5からはPumaが標準搭載とのことでPumaを使っているらしい
多分なんですけど、envファイルを読み解けば、自分用の公開インスタンスを立てることはできそう。 VPSか、Herokuか、単体のDockerコンテナにするかは分かりませんが。