サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「かわいい」
www.toyfish.blog
メモ。 Xcode のインストール Golang のシステム要件に Xcode 付属の gcc が含まれている。 ターミナルで以下のコマンドを実行して、インストールされていることを確認しておこう。 $ gcc -vまだ一度も使用していない場合、ここでライセンス条件への同意が要求される。 Homebrew のインストール 下記ページを参照。 http://brew.sh/index_ja.html 実行の様子は以下のとおり。途中で Enter の入力が要求される。 $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" ==> This script will install: /usr/local/bin/brew /usr/local/Library/... /
UNIX なら find コマンドで取れるが、Windows のコマンドプロンプトでやるにはどうするのか。 正解はこれ。 dir /b /s /b はファイル名のみ出力するオプション。/s は再帰。両者を組み合わせると、なぜかフルパスで出力される。 D:\sardine\temp>dir /b /s D:\sardine\temp\buildtest D:\sardine\temp\enumservices.cs D:\sardine\temp\enumservices.exe D:\sardine\temp\fuga D:\sardine\temp\buildtest\bavo.exe D:\sardine\temp\buildtest\moga.exe D:\sardine\temp\test\are.txt D:\sardine\temp\test\kore.txt [2005-04
ウィルススキャンをしながら、スキャン状況をぼーっと眺めていたら、何年も前に削除したはずのファイルがスキャンされていることに気付いた。 パスを見ると、リムーバブル HDD の Recycled というディレクトリに入っているらしい。 僕は、Recycled という名前を見て、「あぁ、それって確か、ごみ箱の実体だよな。『ごみ箱を空にする』をやれば OK かな」と思ったのだが、エクスプローラでごみ箱を開いても、問題のファイルは表示されない。どういうわけだ! 削除したファイルの亡霊だというのか……!! ……落ち着いて調べてみると、実はごみ箱が 2 つ存在していて、片方はエクスプローラからは見えていない、ということがわかった。問題の亡霊ファイルは、その見えない方のごみ箱に残っていたという話。 新手のスタンド攻撃かッ!? まずはこちらの画像を見て頂こう。とあるリムーバブル HDD を、左はデフォルト設
Spring Boot には、設定ファイルや環境変数から値を取得して、Bean にセットしてくれる便利機能がある。 が、マニュアル通りにやったつもりなのに値がセットされなくて、しばらくハマった。 原因は、setter を定義していなかったこと、だった。 ヌルヌルしてるよ! Bean のクラスに @ConfigurationProperties アノテーションを付けておくと、インスタンス化するときに設定ファイルや環境変数から値が取得され、プロパティにセットされる。 ……というのをマニュアルで読んで、試してみようと思って書いたクラスがこちら。 @Component @ConfigurationProperties(prefix = "settings") public class AdventurerSettings { private String job; private String l
Perl では整数を扱うことができるが、とても大きな値 (あるいはとても小さな負の値) になると、自動的に浮動小数点数に切り替わる。 では、整数のまま扱える値の範囲はどこからどこまでなのか。 符号付き? 符号なし? 多くのプログラミング言語では、「32 ビット符号付き整数」とか「64 ビット符号なし整数」のような型が用意されている。このような決まったサイズで 2 進数表現の整数がよく使われるのは、コンピュータ自体 (というか CPU) がそのような形式の整数を扱いやすいようにできているためだ。 Perl はどうかと思って調べてみたところ、Perl インタプリタをビルドした時の設定によって、整数として扱える範囲が変わるらしい。 32 ビット環境向けにビルドした場合 32 ビット符号なし整数と、32 ビット符号付き整数が使える 64 ビット環境向けにビルドした場合 64 ビット符号なし整数と、
Java 7 で追加された try-with-resources は C# の using ステートメントに倣った構文だが、まったく同じというわけではない。 C# の using ステートメントは下記のページで説明されているように try/finally の糖衣構文であって、それ以上でもそれ以下でもない。 using ステートメント (C# リファレンス) http://msdn.microsoft.com/ja-jp/library/yh598w02.aspx 一方、Java の try-with-resources では、catch 節を書くことができる。これは大きな違いのように思えるのだけど、Web 上で両者を比較しているページを見ても、触れられていないことが多い……ような気がする。 復習 catch 節を付けた場合について考える前に、付けない場合の例外処理について考えることにする。
Unicode で持っている段階では「正しい」のに、従来の日本語エンコーディングに変換する時点で、変換に失敗して "?" に化けてしまう文字がある。 例えば、"〜" (全角の波ダッシュ) を "Shift_JIS" として Unicode に変換した場合、"Windows-31J" に再度変換しようとすると、"?" に変わってしまう。これは、Java に載っている各コンバータのマッピングがずれていることが原因だ。 上記の "〜" の場合、"Shift_JIS"、"EUC-JP"、"ISO-2022-JP" の各コンバータでは、Unicode の U+301C (WAVE DASH) に対応付けられている。ところが "Windows-31J" のコンバータでは U+FF5E (FULLWIDTH TILDE) に対応付けられている。このため、入力と出力でコンバータを変えると、出力した時点で化
ないわー。なんで Log4j 2.0 使ってないの? 公式サイトとかあるの? あるよ。 Apache Log4j 2 http://logging.apache.org/log4j/2.x/ 何が変わったの? ロギングライブラリとしての基本的な考え方は変わっていない。Logger のインスタンスをクラスごとに作ったり、Appender を関連付けてコンソールやファイルに出力したり、trace/debug/info/warn/error といったログレベルを使い分けたり。 けれども、全体的に見直しがはかられて、「いまどきのロギングライブラリ」になっている。 というか、一言で言うと、SLF4J っぽくなっている。 おさらい: Log4j 1.2 ではこうやってた まずは Log4j の jar ファイルを持ってくる。Maven を使っている場合は、POM に依存ライブラリとして以下を追加してい
Apache Commons IO は、入出力に関するユーティリティを集めたライブラリで、かつてに比べれば存在感が薄れているとはいえ、現在でも広く利用されている。 しかし、そんなライブラリの中にも、使用すべきでないものがある。closeQuietly という名前でオーバーロードされている、IOUtils クラスの一連の static メソッドがそれだ。 API リファレンスに載っているコードサンプルは、次のようなものだ。このサンプル通りであれば問題なさそうではある (Exception で catch しているところがちょっとモヤモヤするが、そこは本題と関係ない)。 char[] data = new char[1024]; Reader in = null; try { in = new FileReader("foo.txt"); in.read(data); in.close();
Apple が OS X Mountain Lion の最新バージョン 10.8.3 をリリースした。新機能のひとつとして Boot Camp 5 があり、ついに Windows 8 のインストールに正式対応したという話だった。 それで、今日の帰りに Windows 8 Pro (64bit DSP 版) を買ってきたのだが、どうやらこれはただのフリスビーと化したようだ。 まじかよー アップデートするときの画面にも Windows 8 に対応したよとしか書いてなかったので、何も考えずに Windows 8 を買ってきてしまったのだが、実際にインストールしようとしても Boot Camp アシスタントが受け付けなかった。 ググってみると、Apple のサポート情報に次のようなページがあることがわかった。 Boot Camp: System requirements for Microsoft
Java の標準 API でよく知られている注意点のひとつに、「WeakReference 自体は強参照されるのでメモリリークしないように注意せよ」というのがある。 知っている人にとっては昔から既知の話題なんだけど、知らないと罠にはまってしまいがちなポイントでもある。 JDK の実装を担当するようなプログラマーであってもはまってしまうくらいなのだから。 WeakReference と注意点 java.lang.ref.WeakReference は、JVM が特別扱いする特殊なオブジェクトだ。もっと正確に言うと、WeakReference クラスのインスタンス変数が JVM で特別扱いされており、そのインスタンス変数だけは、通常の参照とは異なる「弱参照」になる。 通常の参照 (弱参照との対比で強参照とも呼ばれる) の場合、 List<String> list = new List<>();
今頃知った。PermGen も普通にヒープ内だと思ってました。 上記の新公式サイトで JDK 6u21 のリリースを知ってさっそく入れてみたところ、6u20 では普通に動いていた Eclipse 3.4 が、起動して少し操作しているとメモリ不足を訴えるようになった。一瞬「今日もー いつーもの ヒープ ぶそく」と思ってしまったけど、ログファイルを見ると、よく見るのとはちょっとだけメッセージが違っていた。くっ、ハズしたか……! OutOfMemoryError: PermGen space なに? PermGen 限定なの? あぁなんかそんなコマンドラインオプションがあったような。でも覚えてないな。覚えてない故の過ち。訳すと OutOfMemoryError というわけか。なるほどなるほどなるほど。 PermGen 領域のサイズを変更するには、java コマンドのオプションで HotSpot
Nokia 関連のニュースを探している途中、2ch の Qt スレッド経由で知った話。 今回 Nokia の Microsoft との提携――そして Symbian 廃止を決めた Stephen Elop 氏は、実質的に Nokia をタダで売ったようなものだとして、Nokia ファンや Symbian 開発者から批難されている。前職が Microsoft とあって「もしや Microsoft のスパイだったのか!?」なんて話も出ているけど、そもそも同氏が自社を ”売り飛ばす” のは、これが初めてじゃないらしい。 Macromedia をスピード売却? Stephen Elop 氏の経歴として「Nokia の前は Microsoft にいた。Macromedia や Adobe にいたこともある」などと紹介されている記事が多いが、実は Macromedia を Adobe に売った張本人が
C 言語でソースを書いて、ビルドして実行して、うまくいった。 ……が、ここで、プロトタイプ宣言なしで後方の関数を呼び出していたことに気づいた。あれ? こういう場合ってエラーになるんじゃないんだっけ? 元ラッパー「yo!」 void quark() { if (roots("dogeza") != 0) { exit(1); } } int roots(char *s) { //... } コンパイルしても、エラーは出ない。実行しても問題なく動く。僕が今回使っている環境では、警告も出なかった。 酸使い「ぼくじゃないよぼくじゃないよ」 原典にあたってないんだけど、いくつかのページを見ると、 プロトタイプ宣言のない関数を呼び出していると、コンパイラはとりあえず「引数は呼び出し元に書いてある通り。戻り値は int」という仮定を行う。 ということらしい。京都大学講師の安田豊さんによる、下記の授業用テ
もう流行りが終わったっぽいから書いても大丈夫かな。 「6÷2(1+2) = ?」の話。僕は 1 と答えた。 「正解」の解説によれば、乗算記号の省略は、そのまま字面上の省略にすぎないので 6÷2(1+2) = 6÷2×(1+2) = 9 だ、ということなんだけど。だとすると、「a2b÷ab」なんかも、 a2b÷ab = a2×b÷a×b = ab2 になるのか? 正直、解説を読んでもなお違和感があって、「ほんとー?」と思ってしまっている。「自分の間違いを認められないんだろう、つまらない人間だな!」とか言われそうだけど。 書いてないのは乗算記号が省略されただけ、というのが正しいとすると、数と変数をくっつける時には数を前に出せ、と教わったのと整合性が取れないような気がする。つまり、「正解」にしたがうなら 32b÷3b = 32×b÷3×b = 3b2 だけど、この場合も僕はやっぱり3と答えるだろ
例えば、Jenkins でテストが失敗して、原因がディスク空き容量不足だったとする。サーバ上で df コマンドを実行したくなるが、わざわざ ssh や telnet でサーバにログインするのはめんどくさい、という場合。 Jenkins の管理メニューからスクリプトコンソールを開いて、以下の Groovy スクリプトを入力。実行ボタンを押せば、すぐ下に結果が表示される。 "df".execute().waitForProcessOutput(out, out) 余談だけど、out という変数は Jenkins のスクリプトコンソールに出力するためのストリームを指しているようだ。JSP の暗黙オブジェクト out と同じですね。 Jenkins じゃなくて普通の環境で Groovy スクリプトとして実行する場合は "df".execute().waitForProcessOutput(Syst
時々、「JDK サポート期間」とかで検索して、僕の書いた古い記事にたどり着いている人がいるようだ。でも、2008 年のものなので、今となっては情報が古すぎる (当時は、2008 年中に Java 7 が出ることになってた)。 僕自身も「あれ? 今はどうなってるんだっけ」という感じなので、下記のページで調べ直してみた。 Java SE EOL Policy http://www.oracle.com/technetwork/java/eol-135779.html [2011-11-15 追記] 以下の記事は内容が古いです。より新しい情報については、下記を参照してください。 www.toyfish.blog [2012-03-04 追記] Java 6 SE のサポート期間は延長され、この追記を書いている時点では、2012 年 11 月までと発表されています。今後また変更される可能性あるので
VirtualBox 上の CentOS 5.6 に、Jenkins と Maven を入れるメモ。WebDAV で共有リポジトリも作る。あちこちのサイトの切り貼り。 以下ほぼ全部 root でやってしまったので、そのまま "#" で書く。たぶん本当は sudo とか使ってもうちょい安全にできるはず。 JDK のインストール Oracle JDK は下記のサイトにある。 http://www.oracle.com/technetwork/java/javase/downloads/index.html "Download JDK" ボタンを押すとページ遷移。ライセンスに同意して "Accept License Agreement" のラジオボタンを選択した後、"Linux x86 - RPM Installer" のリンクを右クリックし、URL をコピーする。今回は 32 ビット版を使うが
かっちょいープレゼンが作れるオンラインサービスがないかなと思ってぐぐったら、Prezi というのがあるらしい。 Prezi - The Zooming Presentation Editor http://prezi.com/index/ なんとか日本語でも使えそう。 マニュアル Prezi のサイトは原則英語。UI は簡単な英語だからまぁいいとして、マニュアルが英語だとちょっと読むのが大変。 ありがたいことに、森直彦さんという方が、独自に日本語訳を作成・公開されている。 Screw-Axis::doc - Prezi 日本語マニュアル http://dev.screw-axis.com/doc/prezi/ ただし内容は最新ではない。例えば、試用期間 30 日の後は有料になると書かれているが、現在は無料版アカウントも取得できる。その辺は実際に Prezi のサイトと見比べて、適宜読み替え
前回書いた、ScheduledThreadPoolExecutor だとズレが生じる現象についてだけど、どうやら時間の精度が問題だったらしい。 java.lang.System には、現在日時をミリ秒単位で取得する currentTimeMillis() と、ナノ秒単位で取得する nanoTime() があるけど、この 2 つは単位が違うだけじゃなくて、取得元が違うために一致しないことがあるらしい。 結論 いまの時点でわかってることを 3 行でまとめると、 Windows で時刻同期を行うと、currentTimeMillis() と nanoTime() の結果は一致しなくなる 時刻同期以外でもズレることがあるかもしれないけど不明 他の OS でどうなるかも不明 以下おおざっぱな説明。 取得元の違い それぞれのメソッドがどうやって現在日時を取得しているかについては、下記のページにわかりや
久々に Java の文法で「あれ、これどうだっけ?」というのが出てきた。きっと SJC-P (今だと OJC-P?) 受けた人なんかには常識の範囲なのだろうけど。 静的初期化子。static 初期化子とかスタティック・イニシャライザと表記されることもある。以下は、今日時点の自分用まとめ。 基本 静的初期化子は、クラスの初期化に必要な処理を書いたもののことだ。予約語 static の後ろにブロックを書く。例えば static フィールドをある値で初期化したい場合、宣言時に値を指定して static int a = 1; とすることもできるが、静的初期化子を使って static int a; static { a = 1; } と書くこともできる。この例のように初期値が単純なリテラルであれば静的初期化子を使うメリットはないが、Map に内容を入れておきたい場合とか、フィールドの初期化以外のこと
2010-07-16 Java: 公式サイトが引越し中 prog Java の開発者向け公式サイトはこれまで http://java.sun.com という URL で運営されていたが、7 月中に Oracle のサイトへ引っ越すらしい。新しい URL は http://www.oracle.com/technetwork/java/index.html になる。すでにトップページは存在している。 2010-07-16 Java: PermGen はヒープの外 prog 今頃知った。PermGen も普通にヒープ内だと思ってました。
2010-05-16 はじめての Steam for Mac game Mac 版の開始は 12 日だと聞いていたけど、それは現地時間での日付であったらしく、日本時間でいうところの 13 日だった。 前回 Windows 版で Portal の試用版 (Portal: The First Slice) を試したので、同じのを Mac 版で試すつもりだったけど、Mac 版リリ… 2010-05-16 はじめての RRoD game Xbox 360 の前面にあるリングライトは、電源を投入すると緑色に光る。また、故障を検知すると赤く光って教えてくれる。 購入してから 3 年半、ついにうちの Xbox 360 でもこの赤いリング (いわゆる RRoD) を見ることになった。金曜日の帰宅後に電源を投入し… 2010-05-16 .NET: はじめての MEF prog Managed Extens
先日リリースされた JDK 6u21 上で Eclipse を使うと、 java.lang.OutOfMemoryError: PermGen space というエラーが発生することがある。このメッセージはエラーダイアログに表示されたり、ワークスペース内のログファイルに出力されたりする。 というような話を先日の日記で書いて、「HotSpot のバージョンが上がったからかな?」なんて適当なこと言ってたら、実際は別の原因だったらしい。 対象環境 Oracle (旧 Sun) の JDK 6u21 (JDK 6 Update 21) 以降を使っていて、 その上で Eclipse 3.3/3.4/3.5/3.6 を使っている 解決方法 (回避方法) 前回も書いたけど、eclipse.ini に下記のような行を追加すればいい。-vmargs と書いてあるよりは後ろの行でないといけないことに注意。 -
Apache MINA は、ネットワークアプリケーションを開発するためのフレームワークで、サーバ/クライアントの両方をサポートしている。Apache Software Foundation が開発しているいくつかのソフトウェア (Apache Directory など) でも採用されているが、日本語の情報が極端に少ない。なので、自分で私家訳を作ってみることにした。 ドキュメンテーション日本語訳 http://wiki.github.com/sardine/mina-ja/ API リファレンス日本語訳 http://sardine.github.com/mina-ja/docs/apidocs/index.html 見てわかる通り、まだ最初のひとかじりくらいしか日本語になってない。最後までできるかもわからないけど、その場合は必要になった人が fork するなりして続けてくれればいいと思う。
Managed Extension Framework (MEF) は、いわゆる「プラグイン」とか「アドイン」とか呼ばれてる仕組みを .NET 上で簡単に実現するためのフレームワークで、.NET Framework 4 で新たに追加された。Visual Studio 2010 の「アドイン」は、この MEF を使用している。 同じような仕組みとして .NET Framework 3.5 で導入された Managed Add-in Framework (MAF) がすでにあるが、微妙に機能範囲が違っている。MEF は MAF よりも簡易な記述でプラグイン機構を実装できる一方、MAF にあるような、プラグインを別プロセスで実行したりアンロードしたりする機能はない。ちょっと検索してみたところ「MEF と MAF を併用することもできるよ」と書かれているページがいくつか見つかったが、僕自身 MAF
@IT で始まった下記連載で、Titanium という開発ツールが紹介されている。 Web技術でネイティブアプリを作れるTitanium http://www.atmarkit.co.jp/fwcr/design/index/index_titanium.html 連載のメインディッシュは Titanium Mobile を使った iPhone/Android アプリだが、Titanium Desktop というのを使うとデスクトップアプリも作れるらしい。以下、とりあえずインストールして、Hello World をビルドしてみたメモ。 インストール 開発元である Appcelerator のサイトから Titanium Developer をダウンロードする。この時点では、Titanium Desktop と Titanium Mobile の両方で同じ手順。 Appcelerator h
はてなブックマークで、話題になっている iPhone/iPod Touch アプリが見られるようになった。 http://b.hatena.ne.jp/apps/iphone (PC 用ページ) http://b.hatena.ne.jp/apps/iphone.touch (iPhone/iPod Touch 用ページ) で、アプリのアイコンも表示されてるんだけど、これはどういう仕組みなのか。 画像はどこにある? 例として、僕が気に入っているパズルゲーム「ルミネス - Touch Fusion」を見てみる。 http://b.hatena.ne.jp/entry/itunes.apple.com/app/id327536757 (PC 用ページ) http://b.hatena.ne.jp/entry.touch/itunes.apple.com/app/id327536757 (iPh
特に個人でドメインを取得するときに、重要なことをひとつだけ挙げろと言われたら、僕ならこう答える。 「whois に気を付けろ」 要約 3 行でまとめると、 ドメイン取る時は、個人情報非開示のオプションを必ず付けよう。 それも、最初から。 意味がわからないなら、ドメイン取るのは危険かも。 以下もうちょい詳しい説明。 whois とは ドメインを取得する際、レジストラ (ドメインを管理している業者) や代理店に対して申請した自分の名前や住所、電話番号は、whois データベースにも登録される。これは誰でも自由に閲覧できるようになっていて、例えばトラブルが発生した時にドメインの持ち主の連絡先を調べるのに使われる。 whois データベースは、Mac OS X や Linux などの OS に付属する whois コマンドか、whois 検索を行ってくれる Web サイトでかんたんに検索することが
次のページ
このページを最初にブックマークしてみませんか?
『toyfish.blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く