u-ryo's blog

various information for coding...

Date Fromat Validation by Java

| Comments

Javaで日付フォーマットの検証をしたいと言われました。 ぱっと思いつくのは、SimpleDateFormatsetLenient(false)にしてparseする、 ですが、これだとException投げるんですよね。 Exception catchをlogicに使うのは良くない、 ということで、他を探してみると意外となかなかないんですねこれが。 commons-langのDateUtils.parseDateStrictlyもException返しますし。

色々探してみると、Apacheのcommons-validatorというのがありました。

1
2
3
4
5
6
7
8
9
10
11
@Grab('commons-validator:commons-validator')
import org.apache.commons.validator.routines.CalendarValidator

pattern = "yyyy/MM/dd"
validator = CalendarValidator.getInstance()

assert validator.isValid("2016/02/29", pattern)
assert !validator.isValid("2016/02/30", pattern)

assert validator.isValid("2016/08/31", pattern)
assert !validator.isValid("2016/08/32", pattern)

Let's Encrypt

| Comments

Let's Encrypt、 漸く使えるようになりました。 具体的にどうやって使ったらいいんだろう、 と思ってたんですが、結構簡単に使えますねこれ。 素晴らしい、です。 おかげでbotnetのC&C server等でも広く使われるようになったとかってことですが。

ともあれ、 日本語の要諦サイトLet's Encrypt 総合ポータルもあり、 だいぶわかりやすくなってます。

基本的には、

  1. certbot-autogit又はwget https://dl.eff.org/certbot-autoで取得
  2. 認証原理は、
    1. certbot-autoがLet's Encrypt側から指定されたhttp://.../.well-known/XXXXXXにfileを作る
    2. Let's Encrypt側がそのfileをGET、認証
  3. なのでstandalone(certbot-autoが臨時のhttp serverを建て、Let's Encryptからのrequestを受ける)が基本
  4. その間本来のWWW serverを止めねばならないが、止めたくない時は「--webroot」でDocumentRootを指定し、certbot-autoにfileを作らせる
  5. 初回の(というか最後に成功した)command optionsを/etc/letsencrypt/以下に保存しておき、次回以降「renew」commandでは省略可
  6. renewを付けて走らせても、証明書期限が30日を切っていないと発動しない(無理やり更新するには--force-renew optionが必要)
  7. --post-hookも指定して、apacheのreloadを自動化(これはrenewが走らないと発動しない。単純にrenewの終了status codeだと0になるので「&&」で繋ぐだけでは判別不能だった)
  8. 証明書取得がうまく行くと、/etc/letsencrypt/live/someserver.co.jp/以下に各種cert filesのsymbolic linkが作成されるので、/etc/apache2/site-enabled/default-ssl中でSSLCertificateFile等の示す先をここのcert.pem等にする(Apache2.4以上やnginxなら証明書+中間CA証明書にfullchain.pemが使える)

こちとら、apache2 serverを止めたくない状況だったので、

1
$ sudo cerbot-auto certonly --webroot -w /var/www/ -m support@company.co.jp -d someserver.co.jp --agree-tos

(-w: webroot-path, -d: domain, -m: mail address)

更新は、/etc/cron.daily/certbotを作って、

1
2
#!/bin/sh
cerbot-auto renew -q --post-hook 'service apache2 reload'

で良さそうです。sudo chmod a+x /etc/cron.daily/certbotを忘れずに。

certbot-autoは、実行するといきなりapt-get updateしてからpython2.7とか入れるのと幾つかのpackagesをupdateするので注意です。

また、Let's EncryptにしてからSSL Server Testをかけてみると、「Incorrect SNI alerts」というのが出るようになりました。 これは、/etc/apache2/site-enabled/default-ssl<VirtualHost _default_:443>ServerName XXXXXXとすることで解決しました。 cf. SSLテストで”Incorrect SNI alerts”を解決する

command log

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
sudo chown root:root certbot-auto
sudo mv -i certbot-auto /usr/local/bin/
sudo certbot-auto certonly --webroot -w /var/lib/tomcat7/webapps/ROOT/ -m ls-support@jmtech.co.jp -d cx4.locationsupporter.info --agree-tos
sudo vi /etc/apache2/sites-enabled/default-ssl
================================================
	SSLCertificateFile /etc/letsencrypt/live/cx4.locationsupporter.info/cert.pem
	SSLCertificateKeyFile /etc/letsencrypt/live/cx4.locationsupporter.info/privkey.pem
	SSLCertificateChainFile /etc/letsencrypt/live/cx4.locationsupporter.info/chain.pem
================================================
echo '#!/bin/sh' > certbot
echo "cerbot-auto renew -q --post-hook 'service apache2 reload'" >> certbot
chmod a+x certbot
sudo chown root:root certbot
sudo mv -i certbot /etc/cron.daily/

Lum-chan(Urusei Yatsura)

| Comments

古巣のJIPDECに派遣されて、 桂史郎くんから「またラム食べに行きましょう」 って言われて、 「ラムちゃん、行くんですね。 大丈夫だっちゃ、とか言うべきでしょうか」 って返したら、高嶋さんしか反応してくれなくて。 でも、それで調べてたら、 うる星やつら、 全部見られるんですね。 ルパン三世もそうでしたけど。 何か、今頃になって見ちゃいました。 リアルタイムだと、中学から高校の頃。 その頃って確かにこういうの、見てなかったです全然。 改めて見てみましたが、子供向けのドタバタですねー。 確かにこれならいつまでも続けられそうですね。 でも、なんて言うか、何か見ちゃうですね。 どうせ今見るなら、昔見といた方が良かったのかな。 これ、ラブコメでもあるから、今のぼくにはちょっとキュンときちゃいますね。

というわけで、 command line 1行で見られるようになったので、 忘れないうちにメモ。

yourupload

youruploadのURL: http://yourupload.com/watch/3OHj93 の最後の5文字を使って、

1
export R=3OHj93;mpv --referrer=http://www.yourupload.com/jwplayer/jwplayer.flash.swf `wget -q -O - http://www.yourupload.com/embed/$R|grep og:video|sed 's/.*content="\(.*\)\/video.mp4.*/\1\/video.mp4/g'`

mp4

mp4のURL: http://mp4upload.com/embed-bbzw7vbui2r4-650x370.html を利用します。

1
export U=http://mp4upload.com/embed-bbzw7vbui2r4-650x370.html;mpv --referrer=http://www.mp4upload.com/player/J6/jwplayer.flash.swf `wget -q -O - $U|grep '"file": "http:'|awk -F\" '{print $4}'`

どちらも、何故か一回で行かない時があります。 二度三度、retryすると、cacheにたまってうまく行くようになりました。 何ででしょう?

My First IPO

| Comments

最近IPOに申し込んでいて、初めてIPO当選したんですが(コメダ)、今日上場だったんですね。 成り行き売かけといたら、1,960円で買ったんですが初値は1,867円、93円の損でした。 なんともはや。 時期が悪すぎます。イギリスがEU離脱を決めるなんて。トホホ。

Magic Square

| Comments

3次魔方陣

  1. 爪のついたZ字順に1〜9を配置
  2. 2と8を入れ替える
1
2
3
4
5
6
7
2 3 4
1 5 9
6 7 8

8 3 4
1 5 9
6 7 2

4次魔方陣

  1. 1〜16を左上から右へ4列記入
  2. 縦、横の真ん中の2列の上下端を交差させて入れ替える
1
2
3
4
5
6
7
8
9
 1  2  3  4
 5  6  7  8
 9 10 11 12
13 14 15 16

 1 15 14  4
12  6  7  9
 8 10 11  5
13  2  3 16

奇数次魔方陣

ヒンドゥーの連続形式

こういうのがさらっと出てくる山口さんって、 やっぱり凄いですね。