Twitter Facebook github

jEnvでバージョンの異なる複数のJavaを管理する

Rubyのrbenv、nodeのnodeenvなどと同じように、Javaにも複数のバージョンを管理するための*env、jEnvがあります。

今回は真っ新のMacにJavaの開発環境を構築する際に、1.7、1.8、9(EA)をインストールすることにしたので、その手順をまとめておきます。

HomebrewでJDKをインストール

jEnvでは、nodeenvなどと異なりjEnvコマンドからJDKをインストールすることはできません。
先にJavaをインストールする必要がありますが、今回は後々アップデート等が楽なHomebrew経由でインストールしようと思います。
もちろんOracleのホームページから直接インストーラーで導入してもかまいません。

Javaの古いバージョン、またEAのバージョンをbrewで導入するには、versionsのリポジトリをtapする必要があります。

バージョンを付けずにインストールすると、執筆時点ではJava8がインストールされます。
今回はその前後の7と9も追加でインストールしておきます。

Read More »

zshことはじめ

Macでzshを使うときのセットアップメモ。

環境

  • macOS Sierra 10.12.1
  • Homebrew 1.1.2

インストール

Macはデフォルトでzshが入っているので、常に使う場合はログインシェルを変更するだけで事足ります。

まずは次のコマンドでプリインストールされているシェルの一覧を表示させます。

これによると /bin/zsh にあるようですね。バージョンも確認しておきます。

執筆時点での最新版も同じ5.2のようなので、今回はこれをそのまま指定することに。
もし最新版ではないようなら、Homebrewなどで brew info zsh して新しい方を使うといいでしょう。

Read More »

iCal形式でインポートした予定をまとめて削除する

やらかしました・・・。

foursquareのチェックインをカレンダーに表示させ、ライフログとして活用しているのですが、新しいMacのセットアップ中に数千件のチェックインデータが含まれているiCalendar形式のカレンダーファイルを、普段使いのメインカレンダーにインポートしてしまいました。

MacのカレンダーアプリにはFantasticalを使っていて、Googleアカウントと同期させています。インポート中、マズイかも・・・?と思った時には既に遅く、既に同期されてしまった後でした。。
もちろんインポートをUndoするような気の利いた機能はないので、なんとか元に戻す方法を考えてみます。

こんなひとが対象

  • iCalendar形式(.icsファイル)で取り込んでしまったイベントをまとめて削除したい
  • Googleカレンダーで取り込んだ or Googleカレンダーと同期している

iCalendarの仕様を確認してみる

事が起きた後にicsファイルをテキストエディタで開いてみました。何事もない普通のテキストファイルのようです。
Googleに頼ってみると、RFC 5545 でしっかりとフォーマットが定められていました。

https://tools.ietf.org/html/rfc5545

BEGIN:VEVENT から END:VEVENT までが1件のイベントを表すようです。

Read More »

Skypeのチャット履歴を抽出する方法

備忘録として簡単にメモ。

Macの場合 "~/Library/Application Support/Skype/(自分のアカウント名)/main.db" に、SQLiteのデータベースとして保存されている。
バックアップを取る場合は上のファイルをコピーすればOK。

メッセージをクエリするには、sqlite3をインストールし、上のDBの Messages テーブルを対象とすればよい。

Messagesテーブルのスキーマ

.schema で出力してみる。

特定の相手とのメッセージを抽出するには?

海外のスタックオーバーフローで dialog_partner = ‘相手のID’ で抽出すれば良い、とする記事もあるけど・・・

これを実際にやってみると、Skype上ではちゃんと発言しているのに記録されていない歯抜けのメッセージが出てきたりする。

実際に抽出できていないメッセージを、抽出できたメッセージを比較したところ、どうやら dialog_partner カラムが空文字だったりして、どうも確実ではない様子。

そこで、上のSQLで convo_id というデータを得られるので、それを元に再度SELECTする。

これで自分の環境では、相手とのやり取りを漏れなく取得できる。

ファイルにエクスポートするには

導入中のChrome拡張がマルウェア化した話

注意喚起と反省をかねて書きます。

数年来、開発に使っていたChrome拡張の “jQuery Injector” が突如マルウェア化しました。
この拡張機能はjQuery未導入ウェブページにワンクリックでjQueryをロードできる開発者向けものです。(執筆時点でGoogle 拡張機能ストアからは削除済み)

なお、今回は私用のChromeアカウントで感染が判明し、仕事などで使用している個別のアカウントでは関連する拡張機能を導入しておりませんので、所属する会社や個々に依頼いただいている業務データなどへの影響はないことを先に明記いたします。

ことのはじまり

数日前から、ウェブブラウジングしていると希に “Sponsored by <ドメイン名>” というポップアップ広告が出現するようになりました。偶然にも最初の数回が初回アクセスの英語圏のサイトで起こったため、マルウェアによるものだと気付くのが遅れてしまいました。

何度か表示されている内に、拡張機能によるものだと推測し調査を始めました。

Read More »

生存報告

しんでます。

ブログ更新が突如途絶えて、心配のメールまでいただく次第だったので取り急ぎ生存報告まで。

いろいろ書きたい技術ネタはあるけど、中々時間がとれなくて放置中・・・。とはいえ、この記事を書けるくらいの余裕がやっと出てきたので、今週からまたリハビリがてら少しずつアウトプット増やしていきます。

数ヶ月更新してなくて、アクセス減ってるんだろうなあなんて思いながらチェックしたら、今も月間何万PVといただいているようでほんとびっくりしてます。

とりあえずの近況

  • 車のサブスクリプションサービスで車オーナーになった
    • BMW i3 借りてる
    • 池袋の駐車場たかい
    • 正直あると便利だけど絶対にコスパ合ってない
  • 自社のほうは特に進展なし
    • そろそろ力いれたい
    • 求人してます
  • 投資業の方はいろいろあった
    • 500万から4ヶ月で1億円達成して、その後あるトラブルでほぼ全損
        - むしろ資産マイナスに
    • でも3月までにプラスまでリカバリできる計画
    • ここ数ヶ月は、自動売買の開発にプライベートな大半の時間を割いた
  • 痩せたい
  • 現実逃避がはかどる
    • ピアノがたのしい
    • 毎週映画館いってる

人生思った通りいかないなあっていうのを改めて実感しました。

でも1度しかない人生、平凡に過ごすよりは苦しいけど冒険した人生の方が絶対に楽しいと信じて。がんばって乗り切ります。

Beanstalkでデプロイ対象のファイルを柔軟に制御

前回 AWS Elastic Beanstalk を EB CLI からデプロイする方法について書きました。

この続きとして、今回はデプロイ対象のファイルを柔軟に制御する方法です。

gitと連携した eb deploy を実行した場合、Beanstalk環境にデプロイされるファイルもgitでステージされているファイルとなります。
この場合、.gitignore が存在すると、そのルールに従ってEB CLIがパッケージングを行います。

既存の問題点

何も設定せずとも .gitignore を参照してくれるのは便利な反面、困ったことも起こり得ます。
例えばデータベースへの接続情報やパスワードのソルトなど、セキュリティ上の観点などでgitの管理対象外にしているファイルが実際は存在するのではないでしょうか?

こうしたファイルは実行時には同時にパッケージングしてBeanstalk上にデプロイする必要があるため、gitignoreに含まれている故に無視されてしまっては困ります。

そこで便利なのが .ebignore です

Read More »

Elastic Beanstalk にEB CLIから簡単デプロイ

ごぶさたです。
今趣味で作っているプロダクトのテスト環境を、AWS Elastic Beanstakで実装してみたので備忘録をば。

Beanstalk でのデプロイメント

AWS Elastic Beanstalk (以下EB) で構築した環境へデプロイするには、ソースコード一式をzipに固めたソースバンドルファイルを作成し、マネジメントコンソール等からアップロードします。
この方法ではデプロイの度に手作業でzipアーカイブを作成しなくてはならず、CI環境を構築した自動化を行わない限り、毎回のデプロイに待ち時間が発生してしまいます。

もっと簡単にデプロイするために、今回は gitとEB CLIを使ったデプロイメントを紹介します。

gitを使ったデプロイといえば、SalesforceのHeroku等もPaaSとして有名なのですが、まさにソースバンドルのバージョン管理等も似た感覚で利用できます。Herokuと違い、直接インスタンスへのSSHも可能なので何か問題が発生したときも簡単に対応できます。

Read More »

Laravel 5.2 で withErrors が動作しない時は

かなりハマって悔しかったので備忘録。

現象

LaravelのAuth周りを使ってログイン機能を実装中、ログイン失敗時のフラッシュメッセージとして動かす予定だった withErrors が正常に動かない現象が起こりました。
具体的には AuthenticatesUsers クラスにある sendFailedLoginResponse メソッドがコールされたとき、ログイン失敗を示すメッセージがリダイレクト後のページで取得できず、
$errors 変数にはデータバッグは存在するものの、値が空の状態になりました。

結論

先に結論を書くと、webミドルウェアが二重適用していたことが原因でした。

php artisan route:list を実行すると定義されているルーティング一覧を確認できますが、
そのミドルウェア欄には web,web,auth のように web が二度呼ばれていることが分かりました。
Read More »

GitHubのプライベートリポジトリが無制限に!

といっても有料プランで、無料プランではプライベートリポジトリはまだ作成することはできません。。

個人的にはめちゃくちゃ嬉しいアップデートなので、みなさんにも使ってほしくて簡単に紹介します!

新しい料金体系?

2016年5月11日から、個人の有料プランにあるプライベートリポジトリの個数制限が撤廃され、有料プランを契約することで無制限に利用できるようになりました。

公式のプレスリリースはこちらです!

Introducing unlimited private repositories
https://github.com/blog/2164-introducing-unlimited-private-repositories

それではアカウントの種類ごとに紹介したいと思います。

個人プランはかなりお得!

GitHubでプライベートなリポジトリを使用したい場合、有料プランを契約する必要がありますが、料金は個人アカウントと、法人(Organization)アカウントで料金体系が異なります。

従来の個人アカウントは、持てるプライベートリポジトリの数に応じて次のような料金体系でした。

Read More »