You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
Javaで日付を扱うときDateやCalendarを使います。 これらのクラスを使うとき、結構手順を踏まないと目的の日付を取得出来ません。 コードも長くなってメンテナンスもしにくくなります。 そんな問題を解決したのが、日付に特化した「Joda-Time」ライブラリです。 よく使うもので大きく分けると「日付」と「期間」という2つの括りになります。 内容が長くなるのでこの2つで分けて記事にしました。 期間編はこちらです。shinsuke789.hatenablog.jp 日本語のドキュメントがあまりなかったので、時間をかけてまとめてみました。 まとめてみて感じたのが、結構簡単に日付を扱えるということ、作成した日付に対して連続で違う処理を行えることがかなりいいと感じました。 ただ、柔軟すぎてどのメソッドを使ったらいいか迷いますので、ここでは簡潔に書けて必要なものだけ上げました。 目次 Joda-
JPHPというJavaで書かれたPHP処理系があります。これは2013年10月にはじまった新しいプロジェクトで、大半をメイン開発者一人で開発しているようですが、既に一定以上の完成度です。また、内部的にはPHPファイルを解釈して直接Javaバイトコードにコンパイルしており、かなり高速なPHP処理系になっています。 他のPHP処理系と異なり、既存のPHPコードをWebサーバ上で動かすことを重視していないようにも見えますが、興味深いプロジェクトですので紹介します。 JPHPを動かしてみる さっそくJPHPを試してみましょう。現時点ではGitHubからソースコードを持ってきてビルドする必要があります。JDK7以上が必要ですので注意してください。JPHPのドキュメント「Getting Started」の通り、次のようにしてJPHPがビルドできます。 $ git clone https://githu
JSR 133に、Javaのメモリモデルについての情報がある。 そして、この情報は和訳されている様子。 http://www.javareading.com/bof/cookbook-J20060917.html reorderとか、volatileの話など、かなりマニアックな情報だ。 さらに、FAQの話もある。先のダブルチェックはNGという話もここに情報が・・・ http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html このようにすれば、複数スレッドからアクセスされても安全な実装になるらしい。 public class InitializeOnDemandHolder { private static class LazyHolder { public static InitializeOnDemandHolder sin
Singleton 作成時のダブルチェックロッキングは動作が保証されていません。 マルチスレッド絡みのバグなので、障害が発生しても非常に見つけにくい物です。 ダブルチェックロッキングを使用した例 public static SingletonTest getInstance() { if (instance_ == null) { synchronized (SingletonTest.class) { ・・・・・・1 if (instance_ == null) ・・・・・・2 instance_ = new SingletonTest(); ・・・・・・3 } } return instance_; }
遅延初期化(lazy initialization)とは、メンバフィールドやメンバフィールドが参照するオブジェクトの生成を、インスタンスが実際に必要になるまで延期することである。これにより、クラスのコンストラクタにおいて、フィールドの値を計算したり参照されるオブジェクトを生成したりする必要がなくなる。また、クラスやインスタンスの循環初期化を防止することにもつながり、その他の最適化も可能になる。 遅延初期化にはクラスメソッドあるいはインスタンスメソッドが用いられる。どちらが用いられるかはメンバオブジェクトが static であるかどうかによる。メソッドは、インスタンスが生成済であるかどうかを確認し、生成されていない場合にはインスタンスを生成する。インスタンスが生成済みの場合、単純にインスタンスを返す。 // 遅延初期化をシングルスレッドで行う、正しいバージョン final class Foo
数年ぶりとかいうレベルでJavaのスレッドに触ったもんだから色々忘れてたので、忘れてたことまとめておく。 ダブルチェックロッキングパターンって何でダメなんだっけ? Javaではダブルチェックロッキングパターンって場合によってはクリティカルにヤヴァい事があります。やばいってことは覚えてたんだけど、どういう理由で、どういう場面でやばいのか忘れてました。 private Object checkObj; public void dcheck(){ if( checkObj == null) synchronized{ if(checkObj==null){ Object o = new Object(); checkObj = o; } } ……… } 上のコードがクリティカルにヤヴァいパターンです。 ダブルチェックロッキングパターンってのは主に、マルチスレッド環境でシングルトンなオブジェクトを
Java™ IDL は分散オブジェクト、つまりネットワーク上の異なるプラットフォームで相互に作用するオブジェクトのためのテクノロジです。Java IDL を使うと、Java プログラミング言語で書かれているか、または C、C++、COBOL などの言語で書かれているかに関係なく、オブジェクトは相互に作用することができます。 これが可能なのは、Java IDL が業界標準の分散オブジェクトモデルである Common Object Request Brokerage Architecture (CORBA) に基づいているからです。CORBA の重要な特長は IDL にあります。IDL は言語に中立なインタフェース定義言語です。CORBA をサポートする言語にはそれぞれ独自の IDL マッピングがあり、Java IDL は名前が示すとおり Java のマッピングをサポートしています。IDL と
Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
Racketとは CやC++よりも簡単に出来るプログラミング環境 CやC++のメタ制御にも使える 例: パラメータを3 4 ... 9 まで変更しながらCのプログラムを実行する Perl Python Ruby などが類似した使われ方をする メタ制御にはRacketの方が便利な場面が多い Perl Python Ruby にはC++に既にある機能が重複している。RacketはC++にない機能が沢山ある amb や miniKanren など C++ Perl Python Ruby にない機能はScheme言語の入門サイトを見るとよい 参考 racketの紹介 http://kurohuku.blogspot.jp/2012/12/racketlang.html モードの解説が詳細すぎるので、その部分は始めての人は読み飛ばす Scheme によるプログラミング入門 http://www.
日本語版ではTexinfoファイルがLaTeXファイル上の変更を反映しておりません(すみません)。そのため直接、xelatex jsicp.texを実行して下さい。 The file preamble.tex contains all the configuration and style declarations. Note that the LaTeX file sicp.tex will be generated on the fly, overwriting the previous version. To keep sicp.texi and sicp.tex in sync, I make changes to sicp.texi, which is already a hybrid of Texinfo and LaTeX code. This is fine, becaus
またまたRaspberry Piネタです。 普段ラズパイは無線LAN子機だけつないでbotスクリプトを走らせていますが、無線LAN子機が発熱して度々ネットワークから切断され、SSHでログインできない現象が発生していました。 単に接続が切れているのか、ハングアップしているのか区別できるようにしたかったところ、AquesTalk Piという音声合成ソフトを見かけたので、これを使ってラズパイに時刻を喋らせることにしました。 スピーカは¥100ショップで売ってるようなパッシブスピーカ(アンプ機能の無いスピーカ)を使用しました。 AquesTalk Piについてはこちらから。 Python2.7で書いてみました。2~10分のランダム間隔で時刻を喋ります。 import time import os import random def time2strings(): talk10 = [u'', u'
WebSocketとは HTML5仕様を構成する要素の一つで一方向通信しかできなかった既存のHTML通信とは違って、 JavascriptのWebSocket APIとサーバサイドのWebSocket機能でクライアントとサーバ間の両方向通信を可能にする技術だ。 WebSocketの特徴 WebSocketは、通信ごとにHTTPコネクションを開く・閉じるのを繰り返すのではなく、 いったんHTTPコネクションを開いたら、コネクションを開いたままにしておいて、データをやりとりする。 コネクションが維持される間は、Ajaxのようにクライアントからサーバへの通信だけでなく、 サーバからクライアントに直接データを送ることもできる。 以下は、ChromeでWebSocketの公式サイトにあるデモを試したキャプチャである。 "Rock it with HTML5 WebSocket"という文字列を何回もS
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く