Archives

2017.12.12 study-daily

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プログラムとかあったりすると影響与えそうなんだけど……

[Read More…]

2017.12.07 study-daily

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

[Read More…]

2017.11.28 study-daily

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でセットアップとかは難しそう。

[Read More…]

2017.08.10 study-daily

anyenv systemwide

anyenvをシステムワイドにインストールしようとした

環境はUbuntu16.04

anyenvをシステムワイドにインストールしてrbenvいれようとしたら、sslのチェックを無視しないと入らなかった。 rbenvからrubyをインストールしようとしたらダウンロードに失敗してできない。

結論から書くと

apt-get install ca-certificates して、ca-certificates入れてからrbenv install を再度試したら成功した。

[Read More…]

2017.06.30 study-daily

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の通った場所に配置する。

[Read More…]

2017.05.08 study-daily

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なんか間違えた…

[Read More…]

2017.04.30 study-daily

VSCode

VSCodeでよく使うショートカットなど

基本はEmacsを使うけどWindows環境で何かする場合はVSCodeの方が使いやすいので忘備録てきな

画面

コマンドパレット: Cmd+Shift+p クイックオープン: Cmd+p 統合ターミナル: Cmd+` Zenモードとの切り替え: Cmd+k -> z

エディター

マルチカーソル: Cmd+Opt+矢印 同じ単語(選択済み?)選択: Cmd+F2 選択した単語を同じもののうち、編集してもよさそうなやつだけ編集: F2

[Read More…]

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

[Read More…]

2017.04.23 study-daily

Zabbix remote command

Zabbixのアクション定義でリモートコマンドを実行する

サーバーを監視するソフトウェア?Zabbixで、トリガーを元にアクションを起こす場合、メール通知やSlackにPostする以外に対象のホストもしくは任意のサーバーにコマンドを投げて実行することが出来る。

Agent側の設定

Zabbixエージェント側(コマンドを投げつけられる側)の設定ファイルの

#EnableRemoteCommands = 0

となっている箇所をコメントアウトを解除して値を1に変更する。

Zabbix-Agentサービスを再起動してエージェント側は最低限の準備完了

Zabbix: アクションの設定

アクションの設定で実行内容を「リモートコマンド」にして、タイプを「カスタムスクリプト」にする。

コマンドはエージェント側にスクリプトを用意している場合は、それを、用意していない場合は直接コマンドを書く。

パイプが使えるので、何か実行して結果をテキストファイルに追記するとかが可能。

Zabbixは敷居が高いけど便利ですね。

[Read More…]

2017.04.18 study-daily

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コンテナにするかは分かりませんが。

[Read More…]