2012-01-01から1年間の記事一覧

関数を引数にとって関数を返す関数

「C 言語がポインタで躓くなら、関数型言語の躓きは『関数を引数にとって関数を返す関数』ではないか」と Twitter でつぶやいていた人がいたのでふと考えてみたのですが map :: (a -> b) -> [a] -> [b] なので f :: a -> b が与えられると map f :: [a] -> […

Struts と MySQL による Web アプリケーション(その 1)

今回は、前回のような一覧表を単に表示させるものではなく、実際に UI を用意してもう少しアプリケーションらしいものを作ってみようと思います。本記事では、これまでに作ったソース群をかなり流用しますので、まずそれを用意します。新たに CustomerSearch…

配列を集合に見立ててべき集合を生成する(Ruby 版・改)

set は Array クラスのオブジェクト(= 配列)。 powerset = (0..set.size).flat_map { |i| set.combination(i).to_a } いただいたコメントより引用。上手い、上手過ぎる。

フレームワークを使って Web アプリケーションを再構築しよう(その 2)

Commons DBCP の利用 Web アプリケーションで DataSource を取得する際、context.xml への記述ではなくて Commons DBCP を利用する方法もあります。実務上は context.xml を使うのが一般的らしいですが、こういうやり方もあるということを知っておくと何かと…

フレームワークを使って Web アプリケーションを再構築しよう(その 1)

前回 Servlet と JSP で Web アプリケーションを作りましたが、今回はそれを Struts を利用して書き変える作業をします。 Model の修正 Customer.java を以下のように修正します。 package jp.mydns.akanekodou.model; public class Customer { private Stri…

onfocus, onblur が動作しない

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>…

Servlet と JSP による Web アプリケーション(その 4)

さて、間に小ネタを挟んでしまいましたがそろそろ本題を進めましょう。 Controller を作ろう(その 1) package jp.mydns.akanekodou; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import ja…

Haskell におけるカリー化

前に Python でカリー化の話をしましたが、実は Haskell だと話がもっと単純になります。 f :: a -> b -> c という関数を定義したとしましょう。このとき型 a の変数 x に対して f x :: b -> c になっています。これはまさにカリー化の構図そのものです。

配列を集合に見立ててべき集合を生成する(Haskell 版)

「プログラミング Haskell」に subs という関数が書いてあった。 subs :: [a] -> [[a]] subs [] = [[]] subs (x : xs) = (subs xs) ++ map (x :) (subs xs) Haskell は神の言語か…? ちなみに一説によれば一行でも定義できるらしいのだが…。追記 : 可読性やメ…

配列を集合に見立ててべき集合を生成する(Ruby 版)

配列(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>…

Servlet と JSP による Web アプリケーション(その 3)

View を作ろう Model が終わったので次は View です。今回は一覧表を表示するだけで form もないのでさっくりと。 <%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" %> <%@ page import="java.util.List" %> <%@ page import="jp.mydn…

Servlet と JSP による Web アプリケーション(その 2)

Model を作ろう(その 3) データを格納する器はできましたので、次は実際にデータベースにアクセスしてデータを操作するクラスを作ります。DAO(Database Access Object)と言われるものです。まず最初にデータベースへのアクセス一般を制御するユーティリティ…

Servlet と JSP による Web アプリケーション(その 1)

さて今回からしばらくは、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 を付ける

HTML5 では table 要素から border 属性がなくなり、CSS で指定するようになっている。従来の <table summary="テーブル" border="1"> ... </table> に対応する border を付けたい場合は CSS で table { border : 1px outset black } th, td { border : 1px inset black } とすると良い。もちろん好みで違…

undefined method ?

Rails でマイグレーションファイルを利用してデータベースにテーブルを作成するときにマイグレーションで外部キーを設定する2通りの方法 - Katawara.*を参考にmigration_helper.rb module MigrationHelper def foreign_key(from_table, from_column, to_tabl…

何故フレームワークを使うのか(その 2)

前回 MVC モデルという新しい用語が出てきたので解説をしたいと思います。 「MVC」とは何ぞや ? MVC とは Model, View, Controller の頭文字をとったもので、グラフィカルユーザーインターフェースを提供するアプリケーションの開発において基本となるもので…

何故フレームワークを使うのか(その 1)

主に Web アプリケーションの作成においては、あらかじめ用意された何らかのフレームワークを使うことが一般的です。代表的なフレームワークとしては Java Struts JSF Wicket Scala Lift Play Framework Ruby Ruby on Rails PHP CakePHP FuelPHP Python Djan…

EL 式が評価されない ?

肝の部分だけの抜粋ですが <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 で PEAR をインストールする(Windows)

PHP

PHP 5.4.x の Windows 版バイナリには go-pear.bat が含まれていないため、PEAR のインストールには面倒であるが以下の手順を踏むことになる。1. 最新の go-pear.phar をダウンロードする ↓ここからダウンロードできる。 http://pear.php.net/go-pear.phar2.…

as パターン

Haskell には「as パターン」というものがあります。論より証拠で実例を見ていただきましょう。これは前に投稿した記事へのコメントから引用しています。 fib@(_ : tf) = 1 : 1 : zipWith (+) fib tf アットマークが as パターンです。この時 fib はどんなリ…

strcpy のマジキチな実装

C

実際のところどういう風に実装されてるのかは知りませんが、こういう書き方も可能だそうで。 void strcpy(char *s, char *t) { while(*s++ = *t++) { ; } } 素人にはおすすめできない。

servlet のロケーションを一括で指定する

前回 id:redcat_prog:20111030 で書いたように、servlet の文字エンコーディングを一括で指定することが filter によって可能であったが、それをさらに発展させてロケーションも一括で指定してしまおうというのが今回の目的。 package jp.mydns.akanekodou.f…

Java の isLeapYear が使えない件

プログラミング中に「そういや今年ってうるう年だっけ」という判定をしなければならないことはままあるかと思います。Java の場合、java.util.GregorianCalendar クラスに isLeapYear メソッドが用意されているのですが、これがいまいち使いにくい。何故かと…

Wicket Quick Start っぽいものを作ってみる(後編)

準備ができたので、実際にソースコードを書いていきます。大抵のサイトでは「Maven を使おう」と書かれていますが、そんな初心者泣かせなことはやりません。だいたい Maven 使うならそもそも必要なライブラリをわざわざ先に用意する必要がないw*1 *1:Maven …

Wicket Quick Start っぽいものを作ってみる(前編)

Apache Wicket は Java 用のフレームワークである。Struts に代表される従来のフレームワークとの決定的な違いは「HTML もオブジェクトとして扱い、可能な限り Java でできることは Java でやる」のが Wicket のコンセプトである、ということである。従来の…

Windows Vista のタスクスケジューラ

Windows Vista のタスクスケジューラでタスクを作ってみたんだが、何故か設定した時間になっても自動実行されない。手動実行はできるのでスケジューリングの問題のような気もするんだが、ググってみてもそれらしい解決策が見つからない…誰か Windows に詳し…

複合キーの功罪

RDBMS には「複合キー」という概念がある。まぁだいたいの RDBMS で使えるはずである。代表的なのは「複合主キー」である。主キーとして複数の列を使い、組み合わせとして同一のものがなければ良し(個々の列については重複する値があっても良い)、とするもの…

学習用 C 言語開発環境

C

学習用 C 言語開発環境 Ver 0.0.9.0 これから新規にプログラミングの勉強をしたい人にはいいかもしれませんね。エラー周りも基本的に日本語化されてるところなんかはかなり初心者向き。

Zen-Coding がヤバ過ぎる

"Zen-Coding" とは主に HTML や CSS を、簡略化された記法で記述したのちにマクロを用いて展開することで、一瞬でコードを生成してしまうという恐るべきツールである。物は試し、簡単な例をご紹介。まず HTML の親玉は html 要素ですね。 htmlhtml 要素の下…