前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

Java

ひらがなをカタカナに変換する。

課題 ひらがなで入力された文字列をカタカナに変換したい。 対応 1文字ごとにひらがなかどうかを判定し、文字コードをカタカナの位置までずらす。ひらがな判定に固定値でユニコード範囲を使用してもいいのだけど、 UnicodeBlockにHIRAGANAが定義されているの…

抽象クラスのstaticフィールドの影響範囲について

疑問 staticフィールドはクラスと静的に結びつくが、それが抽象クラスだった 場合にはその値は具象クラスごとに変わるのだろうか、それとも共通なのだろうか。 確認 抽象クラス public abstract class AbstractGeorgia { protected static int count = 0; pu…

PDFを画像に変換する

Pdf-rendererを使用。 日本語フォントはPDFに埋め込まれていないとエラーになります。 package org.codelibs.pdf2image; import java.awt.Image; import java.awt.Rectangle; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOE…

for文

サイズ格納用の変数を必要としないループ。 あまり使った事ないけど高速かつ省メモリ for (int i = mLoaders.size()-1; i >= 0; i--) { mLoaders.valueAt(i).start(); }

Localeについて

Locale.JAPANは日本(国) Locale.JAPANESEは日本語(言語) Localeを引数に取るメソッドには言語を渡す(目安程度)

MacにインストールしたJDK1.7をEclipseで認識させる

OracleのサイトからJDK1.7をダウンロードしてインストールすると以下のPATHに インストールされるのでそのPATHのHomeディレクトリを環境設定で指定する。 /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home/

UnixのTimeStampとJavaのDate.getTime()の値は別物

UnixはUTCでの1970年1月1日真夜中(0時0分0秒)からの経過秒数、Javaは1970 年 1 月 1 日 00:00:00 GMT からのミリ秒数を返す。ちなみにUTCとGMTは微妙に異なるものらしく、詳しくはここに書いてある。http://java.sun.com/javase/ja/6/docs/ja/api/従って、…

サーバーサイドJAVAでFacebookにログイン

自分のWebサイトからFacebookでログイン出来るようにしたい、サーバーからFacebookに対していろいろやりたい。そんな人の為に。参考 https://developers.facebook.com/docs/authentication/server-side/ ステップ ユーザーをOAuthダイアログにリダイレクト …

世界のナベアツアルゴリズム

3でアホになるナベアツアルゴリズムを考えてみた。ルールは数式縛り。従ってindexOf()とかは反則。巷にはもっとよい回答があるのだろうけど、とりあえず思いつくところではこんなもんか。 package way.algorithm; public class Nabeatsu { static final int…

JSPとSESSIONID

JSPのPageディレクティブにはsessionという属性がある。このデフォルト値はtrueのため、何も指定しないとJSP画面を表示した時点でSessionIDが生成されてしまう。セッションが不要なケースではsession="false"として明示的にセッションを使わないように指定す…

StringUtils.isEmpty()とStringUtils.isBlank()の違い

isEmptyとisBlankの違いは空白を考慮するかどうか System.out.println("isBlank(null):" + StringUtils.isBlank(null)); System.out.println("isBlank(\"\"):" + StringUtils.isBlank("")); System.out.println("isBlank(\" \"):" + StringUtils.isBlank(" "…

PostgreSQLのSQL実行時の注意

Postgresのマニュアルによると 引用符が付かない名前は常に小文字に解釈されますが、識別子を引用符で囲むことによって大文字と小文字が区別されるようになります。 という事らしい。SQLを大文字で書いてもResultSetMetaDataから取り出すときには小文字にな…

Filter

Servletのレスポンスに対して、返却されたHTML内のAタグに書かれたURLの一部を変換するという要件があり、フィルターを使って行うことに。変換自体は正規表現を使ってできたのだけど、jsp:includeしているフッターが表示されなくなった。また現在の方法だと…

JCAPTCHAで画像認証

最近ユーザー登録や、ブログの投稿時などに画像内に書かれた文字を入力して認証を行うサイトが増えているが、それを自分のサイトでやるためのフレームワーク。http://jcaptcha.sourceforge.net/文字数、画像サイズ、文字の崩れ、背景画像などいろいろ細かい…

CaseInsentiveHashMap

DbUtilsでクエリーの検索結果を取得した際、1レコードを表すMapのインスタンス。Map内の全てのキーを小文字で保管し、get()メソッドに対しては大文字小文字を区別せずに値を返す。そのため、HashMapのインスタンスどにputAll()などしてしまうと全て小文字キ…

Javaスクールの危険

「私の知るSchemeとHaskellとCのポインタが使える人はみな、Javaを使い始めて2日で経験5年のJavaプログラマよりいいコードを書くようになる。」だそうな。http://local.joelonsoftware.com/mediawiki/index.php/Java%E3%82%B9%E3%82%AF%E3%83%BC%E3%83%AB%E3…

Servletとスレッド

Webアプリケーションのビジネスロジックで、とあるメソッドの同期を取りたいとする。そこでメソッドにsynchronized を宣言して実行してみたが、どうも上手く同期されていないようだ。そこでふと思ったのだが、Servlet自体がスレッドで複数実行されているため…

Macアドレスを取得せよ。

アクセスしてきた接続元のPCのMacアドレスを知るにはどうすればよいか。Javaには直接接続元のMacアドレスを取得するAPIはないようなので、OSのARPコマンドを利用してみる。ARPコマンドを実行すると以下のような結果が得られる。 C:\Documents and Settings\A…

末日の取得

Javaには末尾の取得関数がないと思っていたら、あった。getActualMaximum()がそれらしい。試しに下記のようにしてみると、1つ問題が。 Calendar c = GregorianCalendar.getInstance(); int date = c.getActualMaximum(Calendar.DATE); System.out.println(da…

数字のゼロ埋め

ある数字を表示上 "0001"など、ゼロ埋めして表示したい場合、java.text.DecimalFormatを使用する。 // "0015"を得たい場合 DecimalFormat df = new DecimalFormat("0000"); String s = df.format(15);