2012-01-01から1年間の記事一覧
「C 言語がポインタで躓くなら、関数型言語の躓きは『関数を引数にとって関数を返す関数』ではないか」と Twitter でつぶやいていた人がいたのでふと考えてみたのですが map :: (a -> b) -> [a] -> [b] なので f :: a -> b が与えられると map f :: [a] -> […
今回は、前回のような一覧表を単に表示させるものではなく、実際に UI を用意してもう少しアプリケーションらしいものを作ってみようと思います。本記事では、これまでに作ったソース群をかなり流用しますので、まずそれを用意します。新たに CustomerSearch…
set は Array クラスのオブジェクト(= 配列)。 powerset = (0..set.size).flat_map { |i| set.combination(i).to_a } いただいたコメントより引用。上手い、上手過ぎる。
Commons DBCP の利用 Web アプリケーションで DataSource を取得する際、context.xml への記述ではなくて Commons DBCP を利用する方法もあります。実務上は context.xml を使うのが一般的らしいですが、こういうやり方もあるということを知っておくと何かと…
前回 Servlet と JSP で Web アプリケーションを作りましたが、今回はそれを Struts を利用して書き変える作業をします。 Model の修正 Customer.java を以下のように修正します。 package jp.mydns.akanekodou.model; public class Customer { private Stri…
function clear(elements) { if(elements.value == elements.defaultValue) { elements.value = ""; } } function init(elements) { if(elements.value == "") { elements.value = elements.defaultValue; } } ってやって textarea 要素に <textarea cols="5" rows="30" onfocus="clear(this)" onblur="init(this)">ここに入力</texta</textarea>…
さて、間に小ネタを挟んでしまいましたがそろそろ本題を進めましょう。 Controller を作ろう(その 1) package jp.mydns.akanekodou; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import ja…
前に Python でカリー化の話をしましたが、実は Haskell だと話がもっと単純になります。 f :: a -> b -> c という関数を定義したとしましょう。このとき型 a の変数 x に対して f x :: b -> c になっています。これはまさにカリー化の構図そのものです。
「プログラミング Haskell」に subs という関数が書いてあった。 subs :: [a] -> [[a]] subs [] = [[]] subs (x : xs) = (subs xs) ++ map (x :) (subs xs) Haskell は神の言語か…? ちなみに一説によれば一行でも定義できるらしいのだが…。追記 : 可読性やメ…
配列(Array クラスのインスタンス) set があるとして powerset = Array.new (0..2 ** set.size - 1).each do |n| subset = Array.new set.each do |i| subset << i if n & 1 == 1 n >>= 1 end powerset << subset end やっぱり Ruby いいですね ! (ステマ)
// List を集合に見立ててべき集合を生成する static <T> List<List<T>> powerset(List<T> set) { List<List<T>> powerset = new ArrayList<List<T>>(); for(int i = 0; i < Math.pow(2, set.size()); i++) { List<T> subset = new ArrayList<T>(); int n = i; for(T x : set) { if((n & 1) == 1)</t></t></list<t></list<t></t></list<t></t>…
View を作ろう Model が終わったので次は View です。今回は一覧表を表示するだけで form もないのでさっくりと。 <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> <%@ page import="java.util.List" %> <%@ page import="jp.mydn…
Model を作ろう(その 3) データを格納する器はできましたので、次は実際にデータベースにアクセスしてデータを操作するクラスを作ります。DAO(Database Access Object)と言われるものです。まず最初にデータベースへのアクセス一般を制御するユーティリティ…
さて今回からしばらくは、Servlet と JSP によるもっとも基本的な Web アプリケーションを作成してみます。まずはお約束の環境から。 OS : Windows Vista Home Premium SP2 Java : JDK 7 update 5 Tomcat : 7.0.28 データベース : MySQL 5.5.24 JDBC ドライ…
HTML5 では table 要素から border 属性がなくなり、CSS で指定するようになっている。従来の <table summary="テーブル" border="1"> ... </table> に対応する border を付けたい場合は CSS で table { border : 1px outset black } th, td { border : 1px inset black } とすると良い。もちろん好みで違…
Rails でマイグレーションファイルを利用してデータベースにテーブルを作成するときにマイグレーションで外部キーを設定する2通りの方法 - Katawara.*を参考にmigration_helper.rb module MigrationHelper def foreign_key(from_table, from_column, to_tabl…
前回 MVC モデルという新しい用語が出てきたので解説をしたいと思います。 「MVC」とは何ぞや ? MVC とは Model, View, Controller の頭文字をとったもので、グラフィカルユーザーインターフェースを提供するアプリケーションの開発において基本となるもので…
主に Web アプリケーションの作成においては、あらかじめ用意された何らかのフレームワークを使うことが一般的です。代表的なフレームワークとしては Java Struts JSF Wicket Scala Lift Play Framework Ruby Ruby on Rails PHP CakePHP FuelPHP Python Djan…
肝の部分だけの抜粋ですが <logic:iterate id="city" name="citylist" property="list" scope="request" indexId="index"> <tr class="tr<%= index % 2 %>"> <td><bean:write name="city" property="cityId" /></td> <td><bean:write name="city" property="prefName" /></td> <td><bean:write name="city" property="cityName" /></td>…</tr></logic:iterate>
PHP 5.4.x の Windows 版バイナリには go-pear.bat が含まれていないため、PEAR のインストールには面倒であるが以下の手順を踏むことになる。1. 最新の go-pear.phar をダウンロードする ↓ここからダウンロードできる。 http://pear.php.net/go-pear.phar2.…
Haskell には「as パターン」というものがあります。論より証拠で実例を見ていただきましょう。これは前に投稿した記事へのコメントから引用しています。 fib@(_ : tf) = 1 : 1 : zipWith (+) fib tf アットマークが as パターンです。この時 fib はどんなリ…
実際のところどういう風に実装されてるのかは知りませんが、こういう書き方も可能だそうで。 void strcpy(char *s, char *t) { while(*s++ = *t++) { ; } } 素人にはおすすめできない。
前回 id:redcat_prog:20111030 で書いたように、servlet の文字エンコーディングを一括で指定することが filter によって可能であったが、それをさらに発展させてロケーションも一括で指定してしまおうというのが今回の目的。 package jp.mydns.akanekodou.f…
プログラミング中に「そういや今年ってうるう年だっけ」という判定をしなければならないことはままあるかと思います。Java の場合、java.util.GregorianCalendar クラスに isLeapYear メソッドが用意されているのですが、これがいまいち使いにくい。何故かと…
準備ができたので、実際にソースコードを書いていきます。大抵のサイトでは「Maven を使おう」と書かれていますが、そんな初心者泣かせなことはやりません。だいたい Maven 使うならそもそも必要なライブラリをわざわざ先に用意する必要がないw*1 *1:Maven …
Apache Wicket は Java 用のフレームワークである。Struts に代表される従来のフレームワークとの決定的な違いは「HTML もオブジェクトとして扱い、可能な限り Java でできることは Java でやる」のが Wicket のコンセプトである、ということである。従来の…
Windows Vista のタスクスケジューラでタスクを作ってみたんだが、何故か設定した時間になっても自動実行されない。手動実行はできるのでスケジューリングの問題のような気もするんだが、ググってみてもそれらしい解決策が見つからない…誰か Windows に詳し…
RDBMS には「複合キー」という概念がある。まぁだいたいの RDBMS で使えるはずである。代表的なのは「複合主キー」である。主キーとして複数の列を使い、組み合わせとして同一のものがなければ良し(個々の列については重複する値があっても良い)、とするもの…
学習用 C 言語開発環境 Ver 0.0.9.0 これから新規にプログラミングの勉強をしたい人にはいいかもしれませんね。エラー周りも基本的に日本語化されてるところなんかはかなり初心者向き。
"Zen-Coding" とは主に HTML や CSS を、簡略化された記法で記述したのちにマクロを用いて展開することで、一瞬でコードを生成してしまうという恐るべきツールである。物は試し、簡単な例をご紹介。まず HTML の親玉は html 要素ですね。 htmlhtml 要素の下…