サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
パリ五輪
kenpoco.hatenadiary.org
以前に、同じタイトルのエントリを書いたのですが、それよりもスマートなやり方がわかったので、書いておきます。 やりたいことについては前のエントリで書いたとおり。 XMLHttpRequestで送ったリクエストが、サーバで認証エラー(セッションタイムアウトなど)となる このときサーバは認証エラー(=401)を返すのではなく、ログインページへのリダイレクトを返す クライアント(XMLHttpRequest)は、リダイレクト応答をうけとり、自動的にリダイレクト先を追跡する 結果、クライアントはログインページのHTMLを取得する(このときステータスコード=200) しかし、そもそもクライアントはJSON形式のデータを期待しているためスクリプトエラーとなる 前のエントリでは、XMLHttpRequestでレスポンスヘッダが使えることに着目して、"Content-Type"ヘッダが"text/html"
以前、JavaでFriendクラスのような事を実現する方法というエントリを書いたのですが、もう少しすっきりした書き方を見つけたので紹介&再掲載しておきます。 【やりたいこと】Fooクラスのfooメソッドを、別パッケージのBarクラスにのみ公開したい まず、Fooクラス、Barクラスを作成。 Foo.java public class Foo { private void foo() { System.out.println("foooooo"); } } Bar.java package b; public class Bar { private void bar() { new Foo().foo(); // ←コンパイルエラー } } 上記のBarクラスは、当然コンパイルエラーとなる。そこでまず、Fooクラスに特定のFriendからのアクセスを許可するためのBridge的な内部クラス(
「NULLを含むカラムにINDEXを張っても使用されないので、できればNULLを意味するデフォルト値を設定しよう」という記述を何回かみたことがあって、てっきりそうだと思い込んでいました。が、MySQLのマニュアルには、 column_name IS NULL を使用した検索では、column_name にインデックスが 張られている場合にインデックスが使用されます。 http://dev.mysql.com/doc/refman/4.1/ja/mysql-indexes.html と書いてありました。たぶん「NULLが含まれていると駄目な場合もある」のだと思いますが、上記のようなケース(IS NULLの比較)では問題ないようです。 自分で調べてみるものです。
XMLHttpRequestオブジェクトから送信したリクエストに対し、サーバがリダイレクト応答(ステータスコード=302)を返したときのハンドリングってどうやればいいんだろうか?と悩んだのでその記録。 解決したかったのは、以下のような問題。 XMLHttpRequestで送ったリクエストが、サーバで認証エラー(セッションタイムアウトなど)となる このときサーバは認証エラー(=401)を返すのではなく、ログインページへのリダイレクトを返す クライアント(XMLHttpRequest)は、リダイレクト応答をうけとり、自動的にリダイレクト先を追跡する 結果、クライアントはログインページのHTMLを取得する(このときステータスコード=200) しかし、そもそもクライアントはJSON形式のデータを期待しているためスクリプトエラーとなる 調べてみたところ、XMLHttpRequestはリダイレクト応答
java.util.logging.Loggerを初めて使ったのですが、ちょっとハマってしまった点などあったので紹介しておきます(主に設定ファイル=logging.propertiesまわり)。 ○問題 logging設定ファイルはシステムクラスローダによりロードされる logging設定ファイルでHandlerの設定をする際、クラス単位でしか設定できない ユーザコードで設定を変更しても、VM起動時に読み込んだ設定が有効になったまま ファイルにログを出力する際、Logger単位でファイルをロックしてしまう。 1. logging設定ファイルはシステムクラスローダによりロードされる これは何が問題かというと、サーバ上で動かすアプリケーションで、Formatterを自作しようとしたとき問題となります(そして、こういった局面は結構あると思います)。 サーバ上で動かすアプリケーションの場合、通常、
Oracleの場合は、Start With〜Connect By Prior〜というSQLで階層化されたデータを取り扱うことができます。では、MySQLではどうか?下記のサイトでしっかり解説してありました。 Managing Hierarchical Data in MySQL 階層化されたデータをMySQLで扱う(上記の日本語訳) 要約すると、 階層化データを扱うには、Adjacency List モデルとネストセットモデルの2つがある Adjacency List モデルは直感的でわかりやすい。更新も簡単。 しかし、Adjacency List モデルで表されたデータを検索するのはやや面倒(MySQLでは。) 一方、ネストセットモデルで表されたデータは検索しやすい しかし、ネストセットモデルは更新が面倒 といったところです。どちらの方法にもそれぞれメリット・デメリットがありますが、Ad
MySQLで、3M程度のデータを登録しようとすると、以下のような例外が発生。 com.mysql.jdbc.PacketTooBigException: Packet for query is too large (3526504 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable. at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3068) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1834) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1976) at com.mysql.jdbc.Co
僕がいま係っているシステムで、別システムのログインパスワードを文字列でデータベースに格納することになりました。これを実現するために、Javaで文字列の暗号化/復合化を行う方法を調べたので、その結果を記しておきます。(※既に別の方々が解説している内容をまとめただけですが。) まず、大きく以下の工程にわけて考えます。 文字列を暗号化する(バイト配列を得る) 暗号化されたバイト配列を文字列化する(暗号化文字列を得る) 暗号化された文字列をバイト配列化する(暗号化バイト配列を得る) バイト配列を復号化する(文字列を得る) 「1. 文字列を暗号化する(バイト配列を得る)」 Java Tips:手軽に暗号化・復号化するには? このページにばっちり解説してあるとおりです。 import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec
JavaからGroovyスクリプトを実行する方法。やり方はいくつかあるのですが、その中から比較的シンプルなやりかたを紹介。 new GroovyShell().parse(new File("....name.groovy")).run(); これだけです。....name.groovy のところを該当のスクリプトファイル名に置換すれば動作するはずです。詳しいことは、Javadoc(http://groovy.codehaus.org/api/index.html)で確認してください。ちなみに、Groovy1.5 と、Groovy1.6 ではそこそこ変更されているようでした。 また、実行されるスクリプトの中身についてですが、ルーズステートメントと、クラス定義の両方がある場合に、エラーが発生することがあるようます。というのは、Foo.groovyの中のルーズステートメントは、実行時にFoo.
ローカルディスク上に存在する静的HTMLで、外部ファイルをインクルードするためのスクリプト(つまり、XMLHttpRequestオブジェクトの代わり)。 以前にも同じようなエントリを書いたのですが(http://d.hatena.ne.jp/kenpoco/20080228/1204198090)、いくつか不具合があったので修正してます。 IE6,7に対応(前回はFirefox2のみ)。 インクルードするファイルの拡張子が.HTMLと.TXTで動作が異なっていたので、その対応。 インクルードした後で、その内容を変更するための仕組みを追加。 最近HTMLを作る機会が多いので自分で使ってみてるのですが、けっこう重宝してます。全ページに同じようなヘッダー部分がある場合なんかに、ヘッダー部分を1ファイルにまとめておけるので、その後の修正がかなり楽。 【使用例】 ------------------
JavaScriptのライブラリを使わずに開発しているときに、ブラウザの判定をするのって意外と悩むので、調べた結果をまとめておきます。Prototype.js、JQuery、MooTools、Dojo について調べました。 ●Prototype.js の場合 Browser: { IE: !!(window.attachEvent && !window.opera), Opera: !!window.opera, WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1, MobileSafari: !!navigator.userAgent.m
一時的にデータを退避しておくときに、SELECTした結果をそのままワークテーブルにぶちこみたくて調べてみたら、結構簡単にできるんですね。複数のデータベースに対応したかったので、各データベースについて調べてみたところ、大体同じようなSQLでできるみたいでした。 [MySQL] create table table_name (select * from other_table) [Oracle] create table table_name as select * from other_table [SQLServer] select * into table_name from other_table ※Postgreでもきっとできると思いますが、調査してません。
symfonyではアップロードファイルを、任意の場所に移動させる moveFile というメソッドがあるのですが、このメソッドは失敗したときにエラーを出してくれない。 $this->getRequest()->moveFile('filename', $destFileName)なので失敗していて、かつ原因がわからない場合は、lib/symfony/sfWebRequest.class.php の @move_uploaded_file(...となっているところの「@」をはずしてやるとよい。まあ、大抵はディレクトリのパーミッションの問題だったりするんだけど。 MySQLの REPLACE 文は、プライマリーキー(正確にはPrimaryKey、またはUniqKey)を条件にして一致するものがある場合は DELETE&INSERT、一致するものがなければ INSERT のみを行うという事ができ
マニュアルを読まずにネット見ながらコーディングしてたら意外に苦戦。忘れないようにメモ。 type curtype is ref cursor; procedure foo(cu in curtype) is row table_name%rowtype; begin loop fetch cu into row; exit when cu%notfound; -- any process -- end loop; end; declare cu curtype; begin open cu for select ....; foo(cu); close cu; end; オープンしてから渡さないとだめみたいでした。
EclipseでEmacs風のキーバインドをするときの注意点。基本的には Scheme を「Emacs」にするだけで大体解決するんだけど、自分好みにするにはいくつかカスタマイズが必要。 Ctrl+H [In Window]の[Delete Previous]を割り当てる Ctrl+Spc [Text Editing]の[Set Mark]を割り当てる Ctrl+M 何も割り当てないようにする Ctrl+Mは「何も割り当てないと改行になる」っていうのがわからなくて、ひたすら探してました・・。
アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣 作者: Venkat Subramaniam,Andy Hunt,木下史彦,角谷信太郎出版社/メーカー: オーム社発売日: 2007/12/22メディア: 単行本(ソフトカバー)購入: 35人 クリック: 995回この商品を含むブログ (291件) を見る“アジャイルプラクティス”という本を読んで、「これはいい考え!」と思った内容があったので、メモ。 「コメントには、なぜその意図を(why)書こう。そのコードが何をしているか(what)ではなく。」 コメントって、いつも書きながら「どこまで書くべきか」についてすっきりしない感じがあったんだけど、「内容ではなく意図を書く」っていうのは正解かも。「意図(why)」っていうのは、コメント以外では伝わりづらいと思うし、逆に、「内容(what)」って言うのはメソッド名とか、変数名とかである
このページを最初にブックマークしてみませんか?
『on the center line.』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く