Tomohiro のアーカイブ

Eclipseで目的のファイルを早く見つける

2016年12月6日

Eclipseでたくさんのファイルを擁するプロジェクトから〇〇というファイルを探したいけどどこに保存してあるか分からない・・・ そんな時、普通の検索機能(Control+H)を使っても良いけど大量のファイルがあると非常に検索に時間がかかる。そこでファイル名の検索に特化した検索機能を用いる。インデックスが予め作成されているのでサクサク検索できる。ファイル検索に特化した検索機能は **コマンド+シフト+R** で開ける。ちなみにクラス名も **コマンド+シフト+T**
続きを読む

SQLをお家で学習

2016年12月5日

Javaのプログラムの練習だとメモ帳とJVMがあれば出来るけど、データベースの練習は土台のデータも必要だし家のPCに環境構築するのも敷居が高い作業である。お家で簡単?にSQLの練習ができる2つの方法を発見したので取り上げてみた。 1.Raspberry Piにインストール http://make.bcde.jp/raspberry-pi/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%82%92%E4
続きを読む

SQLとJavaの関係

2016年12月5日

SQLの文をプログラムで書くとき、保守性の観点からJavaのソースコードに直接SQL文を書くことはおすすめしない。 Cayeneeというツールを使うとデーターベースをオブジェクトとして扱うことができる。 http://www.atmarkit.co.jp/fjava/products/cayenne/cayenne_1.html ツールを使うと自動でクラスも作成できるようです。 https://doc.aipo.com/create_app/05.html
続きを読む

SQLのPreparedStatement

2016年11月28日

SQLで、可変な値をSQL文中に使っているとき、パラメータとして文を書き、値を後から代入することにより、スッキリとしたソースコードになり、実行速度も上がる。 ``` SELECT name FROM students WHERE id= ? ``` studentsのデータベースから生徒の名前を取り出したいが、生徒のIDはいろいろ変化する可能性があるとき、可変な値をクエスチョンマーク(?)にしておく。値をセットするときは、Javaプログラム上で、 ```
続きを読む

Date型にnullは入らない

2016年11月21日

データベース上に保存されている日付をDate型として取り出すときに、データベースの日付データが空っぽ(何も記載されていない)ときの反応を決めたいとき、最初は ``` if((データベースの日付をData型に変換した変数) == null) ``` みたいに、空っぽ=nullみたいな認識でコードを書いていたが、ClassCastExceptionでエラーになってしまった。どうやらJava(に限らず他の言語でも)はDate型に何も入っていない(null)というのは
続きを読む

Javaの三種類のデータ構造を使い分ける

2016年11月15日

Javaには三種類のデータ構造があり、目的に応じて使い分けることができる。 1.配列 基本データ型(intとか)、参照型(Stringとか)両方を扱うことができる。 作成時は ```  String[] moji = new String[3]; ``` と書く。作成時に配列の大きさが固定される。 2.リスト 配列と似ているが、参照型のみ格納でき、配列と違って大きさが可変であるという特徴がある。作成時は ``` List name = n
続きを読む

Eclipseのimport自動挿入、削除

2016年11月14日

Javaでプログラムを書いたり消したりしていると、つい確認を忘れがちなimport文。 Eclipseには自動でimport文を挿入してくれたり、削除してくれる機能が搭載されている。 import文を整理したいと思った場合、メニューの ``` ソース→インポートの編成 ``` もしくはショートカットキーで「コマンド+シフト+o」と打つと、要らないimport文を消すことができる。 http://yyama1556.hateblo.jp/entry/2
続きを読む

ターミナルを使いこなす

2016年11月8日

Eclipseで作業をしているとき、ターミナルが使いこなせると複数プロジェクトにまたがる開発でも捗る。 Aipoだと、~/Documents/aipo/GitHub/にプロジェクトがまとめられているので、 ターミナルでこのフォルダを開いてからプロジェクトのフォルダに cdコマンドで移動するとコンパイルがやり易い。 前のフォルダは ``` cd - ``` で戻ることができる。Gitを利用している場合、ブランチの切り替えもターミナル上で行うことができる。
続きを読む

HTMLのタグの閉じ忘れを確かめる

2016年11月7日

長いHTMLコードになったり、いろいろ書き換えたりしていると、タグの閉じ忘れや消し忘れが発生する。 ブラウザ上で表示する分には特に問題ないことも多いが、「綺麗なコード」を目指す上では好ましくない。 目視でチェックするのも良いが、Chromeだと拡張機能を用いて構文をチェックできる。 [HTMLエラーチェッカー](https://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8
続きを読む

Aipoのアプリ内の印刷機能

2016年11月1日

Aipoのアプリ内での印刷機能を実装するにあたって、関係するファイルをまとめた。 testアプリの場合 **ajax-test-detail.vm** 詳細画面の表示をレイアウトするファイル。印刷ボタンを実装するときに用いる **ajax-test-detail-print-vm** 印刷ボタンを押した後に表示される画面のレイアウト **TestScreenPrint.java** 印刷画面に遷移する際に鍵となるクラス。ここが正しく記述されて
続きを読む

ビルドエラーの原因究明

2016年10月24日

大規模なシステムになるとどこでエラーが起こっているのかわからず、必要以上にソースコードをいじって わけがわからないことになることに・・・ ビルドエラーや、テスト中にエラーが発生した場合、ターミナルで以下のコマンドを打ち込むと ログを表示でき、エラーの原因究明に繋げられる。 ``` tail -f -n 3000 /usr/local/opt/apache-tomcat-7.0.57/logs/all.log ``` 一例だと ``` java.l
続きを読む

IEのXSSフィルタが扱いにくい

2016年10月19日

[前回のハック](http://hacknote.jp/archives/22994/)でクロスサイトスクリプティング(XSS)について取り上げた。 webアプリケーションサイドでXSSが発生しないように対策するのは当然なのだが、最近のブラウザには大概XSS脆弱性があった場合に、 スクリプトの実行を防ぐ仕組み(XSSフィルタ)がある。 ChromeやSafariといったWebkitレンダリングエンジンを採用してるブラウザとマイクロソフト系のブラウザ(Internet
続きを読む

クロスサイトスクリプティング(XSS)の対策

2016年10月17日

入力フォームに入れられた文字列をHTMLに組み込みたい、 例えば名前を入れると次ページで「〇〇さん、いらっしゃい」と表示したい時、 何も対策されていないと任意のJavascriptコマンドが実行されてしまう。 要するに、入力フォームに ``` alert('こんにちは'); ``` と書けば、次ページのHTML文内にこのスクリプトが組み込まれることになり、 「こんにちは」とダイアログが表示できてしまう。 悪意のある人間がやれば、別サイトに誘導した
続きを読む

URLのリンクを張る2つの方法

2016年10月12日

HTMLの基本的なリンクの張り方 ``` ぐーぐる ``` > target="_blank" は別ウィンドウで開くことを意味する。リンクに名前をつけたいときは、上記の「ぐーぐる」の部分に名前を書くことで、つけられる。(アンカーテキスト) さて、URLのリンクを張る時に、ドメインのみを表示する機能を実装しようとした。 ex)http://www.google.com/abcdef.html → http://www.google.com
続きを読む

日本語URLのエンコード

2016年10月5日

URLの入力フォームを半角英数字のみ受け付けるように設定した場合、日本語が含まれるURLはどうなるのかと思った。 ex )https://ja.wikipedia.org/wiki/東京都 参考サイト http://d.hatena.ne.jp/mitaina/20090831/1251726446 基本的にURLに2バイト文字は含まれてはいけないらしい。 最近のブラウザは日本語が含まれるURLが入力された場合、エンコードにより1バイトに変換される。 上
続きを読む

多言語対応の仕組み

2016年10月3日

フォーム画面内の「タイトル」という文字を置き換えてみようとソースコード内を検索するも見つからず・・・・ ``` test_name.setFieldName(ALLocalizationUtils .getl10n("TODO_SETFIELDNAME_TITLE")); ``` ここに秘密が隠されていた。多言語化対応のためにメニュー内の項目は別ファイルに設定されていた。 日本語は"AipoLocalization_ja.propert
続きを読む