shokosブログ

プログラミング

java

定数固有メソッド実装

Enumで抽象メソッドを定義して、それを定数ごとにOverrideできるってことを、今日Effective Java読んではじめて知りました。 定数固有メソッド実装というらしい。かっこいい。具体的にはこんな書き方ができる。 package jp.ne.hatena.syoko_sasaki; public e…

ダウンロードしたcsvファイルの中身が想定通りかどうか確かめるテスト

wicketでつくったページからダウンロードしたcsvファイルの中身が想定通りかどうか確かめるテスト!!!mainのパッケージに置いたshokos.csvをダウンロードして、testのパッケージに置いたまったく同じ内容のexpected.csvと比較するテストを書きます。ファイ…

Ajaxまわりのtestができなくて悩んでいる話

お仕事で作っているwebアプリケーションはAjaxごりっごり取り入れているのですが、残念ながらWicketTesterでAjaxまわりのテストはできないのです。Seleniumならできるかなーと思って実験してみたのだけど、けっきょくできなかった話。TextFieldにいれた数字…

はじめてのseleniumめも

業務自動化計画その2、selenium簡単な導入方法めも!まずはpom.xmlの設定 <dependency> <groupId>org.seleniumhq.selenium.server</groupId> <artifactId>selenium-server</artifactId> <version>1.0.1</version> </dependency> <dependency> <groupId>org.seleniumhq.selenium.client-drivers</groupId> <artifactId>selenium-java-client-driver</artifactid></dependency>

今日の新刊をメールでお知らせしてくれる処理

わりと高頻度で漫画を買っているわたしです。発売日当日に本屋さんで買わないと気が済まない性格なので、コミックダッシュ! - 漫画(マンガ)、コミックの蔵書管理と新刊発売日のチェックをサポートする総合サイト | コミックダッシュ!で管理している漫画の…

eclipseからTomcatを起動する方法

基本的にローカルでweb作業するときはeclipseでjetty起動していましたが、Tomcatを使う機会が出てきました。war作ってwebappsの下においてTomcat起動がめんどくさすぎてダウナーになって、Twitterでeclipseから起動できないのー!?って聞いたらたくさんリプ…

HTMLのタグを除去する

最近、プログラミング書く以外のお仕事が増えてきました。(証跡残したり) めんどくさがりなので色々自動化していきたいなーと思い、ちょこちょこスクリプト書いています。よく使いそうなもの第一弾、HTMLのタグを除去する。 package jp.ne.hatena.syoko_sa…

Wicketはこんなにいろいろテストを書くことができるんだよ!

Wicketはこんなにいろいろテストを書くことができるんだよ! 常々からWicketのテストの充実さ(Ajaxまわり除く)に助けられているので、どんなことができるのか一部ご紹介します。 package jp.ne.hatena.syoko_sasaki; import java.awt.Label; import junit.…

Wicketでステータスコードを指定してレスポンスする方法めも

Wicketでステータスコードを指定してレスポンスする方法めも超ざっくり!WebPageをextendsしたclassでconfigureResponseを下記のようにOverrideする。 @Override protected void configureResponse() { super.configureResponse(); if (getWebRequestCycle()…

昨日の続き

完成したので載せますー。BIASED-RANDOMに2回問い合わせをしたとき、1,0が返ってくる確率=0,1が返ってくる確率となるので、それを利用しました。1,1と0,0だったらやり直しする仕様です。 public static int get0or1(double p) { if (p <= 0 || p >= 1) thro…

乱数を使用したアルゴリズム

こちらの本を勉強しはじめました!amazon:アルゴリズムイントロダクション第5章の練習問題を解いてみました。【問題】 RANDOM(0,1)に対する呼び出しだけを用いて、手続きRANDOM(a,b)を実現せよ。 ※RANDOM(a, b)とは、a〜bの整数のこと。 package jp.ne.hate…

乱数を使用したアルゴリズムその2

前回ご紹介した、アルゴリズムイントロダクションにのっている、第5章の練習問題5.1-3に挑戦。 毎回、まず自力で考えてギブアップして、ヒントもらったり教えてもらったりして解いています。 がんばれわたし! そして教えてくれる優しいお兄さんに感謝!実…

cayenneめも(ORDERするところでハマったお話)

うちのプロジェクトは、ORマッピングツールはcayenneを使っています。 今日ちょこっとハマったところがあったのでメモ。・やりたいこと Aテーブルのhogeカラムが"foo"のものを問い合わせする。 Bテーブルのhogeカラムでソートする。(ASCで)なにも考えずに…

起きていますかメール

わたしのいるチームは11時集合なのですが、集まりがあまりよくありません。 11時半くらいに、出社していない先輩に「◯◯さん起きていますか?」とメール。 ↓ 返信が来たらIRCに「◯◯さん今起きたそうです!」と書きこむ。 といった業務フローをだいたい毎…

CSV出力

きょうは久しぶりにjavaの日記!!!!!!!!!!!!!!!CSV出力の方法を書きます。supercsvを使います。 SuperCSV API まずはsupercsvをダウンロード。いつものようにプロジェクトのpom.xmlに以下を追加して、mvn eclipse:eclipse <dependency> <groupId>net.sourceforge.su</groupid></dependency>…

年齢++

サザエさんとタメになりました調子こいて、「@shokos お誕生日おめでとう」 って@が飛んできたら 「@hoge ありがとう」 って返すプログラミングを書いたつもりで実行したところ、盛大に失敗して過去の@に対して無条件にありがとうって返してしまいました。し…

マージこわい

マージをおそるおそるしたので方法メモ 失敗したときの影響範囲を考えるとgkbrしました トランクで更新した作業をブランチにマージする方法1ブランチにスイッチする 2トランクの作業内容をマージする(コミットログを確認しながら)マージするときに亀…

setDefaultFormProcessingについて

FormのボタンにsetDefaultFormProcessing(false)をつけると、バリデーションが無効になるらしい!Formにsubmitボタンの他にリンクじゃなくてボタンが必要なときに使えるなと思いました。 バリデーションは無効になるけれど、モデルに値はちゃんとセットして…

コンストラクタについてメモ

デフォルトコンストラクタについて知ったのでメモclassをコンストラクタなしで宣言すると、引数なしのデフォルトコンストラクタが勝手にできる。コンストラクタを宣言するとデフォルトコンストラクタはなくなってしまう。 public class ConstructorTest { pu…

メモ

ホスト名とIPの取得の仕方 String hostName = InetAddress.getLocalHost().getHostName(); String ip = InetAddress.getLocalHost().getHostAddress();

equalsやhashCodeの話追記

きのう書いたequalsの実装だと、下記の実行結果がfalseになってしまいました Bean b1 = new Bean(1L, "a"); Bean b2 = new Bean(2L, new String("a")); System.out.println(b1.equals(b2)); なのでリファクタリング @Override public boolean equals(Object …

equalsやhashCodeの話

たとえばidとnameをもつこんなクラスがあったとして class Bean { private Long id; private String name; public Bean(Long id, String name) { this.id = id; this.name = name; } public Long getId() { return id; } public String getName() { return n…

とある転職サイトにのっていた問題をといてみた

とある転職サイトにのっていた問題をといてみました247などの整数を渡すと2+4+7をしてくれという問題です public static int plus(int num) { int result = 0; for (int i = num ; i ! = 0 ; i = i / 10) { result += i % 10; } return result; } なにも調べ…