技術開発日記

技術やら日々思ったことを綴ってます。

Scala の Collection の使い分け

Scalaで開発をしていると様々な場面で Collection を使うことがあると思うが、Collection と言ってもScalaには多くの種類のクラスが存在する。 しかも、その種類はかなり多いうえに分類も大変だ。 まず、mutable なのか imutable。 さらに IndexedSec なのか…

ConohaのVPSにSSHでログインする際の注意点

VPS

ConohaのVPSにSSHでログインする際の手順で /etc/ssh/sshd_config を編集後にsshdを再起動とあるが、実際には再起動だけではログイン出来ず、コンソール画面からVPSの再起動をしないとパスワードログインができなかった。 本来ならsshdの再起動だけで問題な…

iPhoneアプリを作ってみました

iPhoneアプリを作ってみました。もともと業務でテスト用のアプリがあるといいねっていうところから じゃー、ちょっと作って見ますといった割と軽いノリで作って見ました。 ただ技術的好奇心で本当に"作ってみた"というレベルなので、かなりお粗末なものにな…

Scalaを選ぶ理由

Scala スケーラブルプログラミングの1章を簡単にまとめ 互換性(Javaとの共存) Scalaプログラムをコンパイルすると、Java仮想マシンバイトコードになる パフォーマンスは通常Javaと同じぐらいになる Scalaは標準Javaライブラリの型も再利用している 例1)Sc…

AWS SNS を使ってプッシュ通知してみた【Java】

AWS

AWSの管理画面からプッシュする記事だったり、SDKを使っていても断片的なコードしかない記事が多かったので、アプリからサーバーサイドまでの一連の流れをまとめたものを作ってみました。 AWS SNS とは 簡単に言ってしまえばプッシュ通知をまとめて管理して…

Amazon Kinesis Log4j Appenderの jar が最新じゃない件

AWS

Amazon Kinesis Log4j Appenderの公式ドキュメントからjarをダウンロードしても最新の修正が反映されていないため、下記のエラーが発生。(2015/7/4時点)Amazon Kinesis サンプルアプリケーションの Log4J Appender、サンプル認証情報ファイル、サンプルログ…

音楽ストリーミングアプリ AWA を早速使ってみました

AWAという音楽配信アプリが今日リリースされたので、早速使ってみた感想。 AWAとは 主要レーベルの洋楽・邦楽数百万曲をいつでも楽しむことができる月額定額制の音楽ストリーミングサービスAWA - 音楽配信アプリawa.fm 個人的に感じたこと ・UIがスタイリッ…

タイプアノテーション

今までクラスやメソッドに対して宣言できたアノテーションが、Java8から変数の型やジェネリックスの型に対してもアノテーションを定義することができるようになりました。 ただ、注意点として、あくまて宣言できるようになっただけでデフォルトでJavaに入っ…

関数型インターフェイスが多すぎる理由を調べてみた

Java8について調べると、標準で用意されている関数型インターフェイス関数の多さにびっくりする。 Supplier、Consumer、Predicate、Function、UnaryOperator、BinaryOperator、etc.. 全部で40以上はある。正直はじめはこれ全部覚えるのかと、かなり憂鬱だっ…

Java8のOptionalの使い所

そもそもOptionalとは OptionalはT型のオブジェクトに対するラッパーで、オブジェクトがnullかどうかを判断したり、nullだった場合のデフォルト値を設定できるJava8から追加されたクラス。 Nullオブジェクトに近い感じでしょうか。 どういったところで使うの…

Java8の文字列結合

Java8から文字列の結合方法がいくつか追加されたので、簡単にまとめました。 StringJoiner Java8から新しく追加されたクラスjava.util.StringJoiner。 区切り文字、サフィックス、プレフィックスを埋めて文字列を連結できるので 便利ライブラリGuavaのJoiner…

JettyでcookieにSecure属性、HttpOnly属性の設定方法

JettyでJSESSIONIDとかの cookieにSecure属性、HttpOnly属性の設定をする日本語の情報を見かけなかったので、設定方法をまとめてみました。 対象はJetty9.X。 webdefault.xmlで設定する方法 $(jetty.home)/etc/webdefault.xmlにある設定ファイルを修正 <session-config> <session-timeout>30</session-timeout> <cookie-config> <secure></secure></cookie-config></session-config>…

最近おもしろかった本を5冊選んでみた

最近ブクログを更新したついでに、ここ最近読んだ中で個人的に面白かった本を選んでみました。 インフラの教科書 インフラエンジニアの教科書作者: 佐野裕出版社/メーカー: シーアンドアール研究所発売日: 2013/10/26メディア: 単行本(ソフトカバー)この商…

iOSでオレオレ証明書を許可する

WebViewとかで普通に https://www.google.co.jp/にリクエストを投げると問題なくページは表示されるのに、自分とこのサーバにhttpsでアクセスしたとたんに何も表示されず、コンソールログに下記のようなエラーが表示されました。 NSURLConnection/CFURLConne…

xcodebuildで32bit、64bitのライブラリをビルドするスクリプト

xcodebuildを使って32bitと64bitの静的ライブラリをビルドする簡単なスクリプトを作りました。最終的な成果物としては、指定した出力先に、ビルドしてlipoでくっつけた32bitと64bitの静的ライブラリが配布される感じです。 #!/bin/sh #---------------------…

アプリ起動時のUIApplication#openURLの動作

Xcode5でビルドしたアプリをiOS7の端末で起動させると初回起動になぜかUIApplication#openURLが正常にブラウザを起動してくれない現象が発生。 正確にはアプリが起動して10秒ぐらい何も表示されない状態が続く。ちなみにiOS6、Xcode4だと問題なし。 今のとこ…

退職しました

私事ですが、7月末日をもって約4年半お世話になったレッドフォックス株式会社を退職しました。 とはいえ、最終出社日が7月12日だったので7月のほとんどは毎日読みたかった本を読んだり、今まで見たかった映画とかアニメを見たりしていた、引きこもりのニート…

Eclipse 4.3 Kepler

Eclipse 4.3 Kepler が昨日リリースされたみたいなのでさっそく入れてみました。 ダウンロード ダウロード先はこちら(Eclipse Downloads) ちなみに日本語版のAll in One はこっち(Eclipse 日本語化 | MergeDoc Project) Eclipseの細かい設定はこちらの記事に…

ランダム文字列生成

先日CodeIQでランダムパスワードを生成するプログラムの問題(挑戦者求む!【ウチに来ない?】[Java]ランダムパスワードの作成 by CodeIQ運営事務局 アプリケーションエンジニアを募集する企業│CodeIQ) で解答した際に使ったランダム文字列生成のメモです。そ…

TOEIC 900点取りました。

先月のTOEICで900点取ることが出来たので、僕なりにやってきたことを少し紹介します。 Listing podcast 定番と言えば定番だけど、一番ながら勉強が出来るだけあってかなりの時間節約になりました。 Business English Pod (iTunes - Podcast - www.BusinessEn…

JUnitとNoSuchMethodError

java.lang.NoSuchMethodError: org.mule.util.CollectionUtils.isNotEmpty(Ljava/util/Collection;)Z JUnitでテスト中に上記エラーが出た場合の対処法(mavenを使用している場合)。 ローカルのmavenリポジトリデフォルはこんな感じの所に置いてある。 C:\User…

僕と村上春樹

新刊のニュースのこともあってか、なんとなく村上春樹に関して思うことを、落書き程度に残してみたい。そもそも、僕が彼の作品を始めて手に取って読んだのは大学入って1,2年経った頃だったと思う。 その頃の僕は、基本的に音楽しか興味がなかった時期で、 授…

throwsするべきかtry/catchするべきか

JUnitで例外が発生する場合のテストを書くとき、throwsするべきかtry/catchするべきかを 悩んでいる場合、特別な理由が無い限りはthrowsにするべきという指摘を頂いた。じゃ、なんでtry/catchではなくthrowsのがいいか。1.コードが綺麗になる。 2.エラー…

commit、revision戻し、mergeのメモ

svn

コンソール上でもsvnのコマンドがすぐ叩ける用にメモ。以前のリビジョンに戻す方法。 例としてリビジョン300を100に戻したい場合。 svn merge -r 300:100 https://sample.co.jp/branch/xxx/yyy trunkの内容をbrunchにmergeする確認。 例として、trunkのリビ…

Log4jのエラーハンドリング

log4jってファイルIO系のエラーが発生したときは内部でエラーハンドリングしてまうため、 書き込みが失敗した場合とかはそのことを呼び出し側に知らせてくれない。 ということを最近知りました。。。これはlog4jの思想というか考え方らしく、log4jを使ってい…

リードオンリー・インタフェース

セキュスペの勉強がてらにIPAのサイトを見ていたら、リードオンリーインタフェース という考え方があって、なるほどーって思ったりしたので、その内容を少し。「カプセル化のすすめ」と題したその内容は簡単に言うとは普段getterとsetter を書いているクラス…

twitter4j

若干今更感はあるけど、twitter4jを触る機会があったので、とりあえず、以下の3機能を簡単に実装してみた。・OAuth認可をつかってツイートする。 ・指定したユーザのタイムラインを取得する。 ・ツイートの検索をする。■準備 1.なにはともあれ、まずはtwi…

シングルトンの変数

シングルトンの生成の方法はよく議論されるところなんだけど、 それとは別にシングルトンクラスの変数の初期化に関して少し予想外の挙動が起きたので、 メモしておきたいと思う。 public class Sample { public static void main(String args[]) { Single.ge…

Ruby技術者認定試験Goldの受験感想

Ruby技術者認定試験Goldに合格したので、今後受験する予定の人がいれば参考にしてみてください。勉強期間:1日2時間 * 週4,5 の1ヶ月半 Ruby経験:0 参考書: Ruby公式資格教科書 Ruby技術者認定試験 Silver/Gold対応 (EXPERT EXPASS)作者: 増井雄一郎,小…

環境による改行コード

Junitでテストを書いていたら、どうしても文字列が一致しないのケースがあって少し調べて見たら、どうやら改行コードの指定の仕方に問題があったみたい。テストケースは以下のような感じ。 @Test public void test() { // ファイルとかから文字列を取得 Stri…