2008-09-01から1ヶ月間の記事一覧

ActiveSupport、Hash#to_xml

>> require "rubygems" => true >> require "active_support" => true >> Hash.from_xml([{:foo => 1, :bar => 2}, {:baz => 3}].to_xml).to_xml => "\n<hash>\n <records type=\"array\">\n <record>\n <foo type=\"integer\">1</foo>\n <bar type=\"integer\">2</bar>\n </record></records></hash>

JDK5.0 新機能:java.util.concurrentパッケージ2、Callableインタフェース

「12.2. Callableインタフェース」まんま import java.util.Date; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Future; import jav…

Parsec.Char:oneOf

Prelude> :m Text.ParserCombinators.Parsec Prelude Text.ParserCombinators.Parsec> :t oneOf oneOf :: forall st. [Char] -> CharParser st Char module Main where import Text.ParserCombinators.Parsec vowel = oneOf "aeiou" run :: Show a => Parser…

C API、lua_checkstack()

/* * $ gcc -Wall -W -o 2008093000 -llua50 2008093000.c */ #include <stdio.h> #include <lua50/lua.h> int main(void) { lua_State *L; L = lua_open(); printf("%d\n", lua_checkstack(L, 10)); printf("%d\n", lua_checkstack(L, 10)); printf("%d\n", lua_checkstack(L, 100</lua50/lua.h></stdio.h>…

ActiveSupport、Hash#to_query

>> require "rubygems" => true >> require "active_support" => true >> Hash.from_xml([{:foo => 1, :bar => 2}, {:baz => 3}].to_xml).to_query => "records%5B%5D%5Bbar%5D=2&records%5B%5D%5Bfoo%5D=1&records%5B%5D%5Bbaz%5D=3" >> Hash.from_xml([].t…

JDK5.0 新機能:java.util.concurrentパッケージ2、scheduleWithFixedDelay()

「12.1. スケジューリング」まんま import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; public class C2008092900 implements Runnable { int number; long start; publ…

Parsec.Char

Prelude> :m Text.ParserCombinators.Parsec Prelude Text.ParserCombinators.Parsec> :t CharParser Data constructor not in scope: `CharParser' Prelude Text.ParserCombinators.Parsec> :i CharParser -- CharParser is a type constructor type CharPa…

C API、lua_gettop()

/* * $ gcc -Wall -W -o 2008092900 -llua50 2008092900.c */ #include <stdio.h> #include <lua50/lua.h> int main(void) { lua_State *L; L = lua_open(); printf("%d\n", lua_gettop(L)); lua_pushvalue(L, 1); printf("%d\n", lua_gettop(L)); lua_pushvalue(L, 2); printf("%d</lua50/lua.h></stdio.h>…

ActiveSupport、Hash::XML_TYPE_NAMES, Hash::XML_FORMATTING, Hash::XML_PARSING

>> require "rubygems" => true >> require "active_support" => true >> Hash::XML_TYPE_NAMES => {"Time"=>"datetime", "Symbol"=>"symbol", "FalseClass"=>"boolean", "Float"=>"float", "BigDecimal"=>"decimal", "Date"=>"date", "DateTime"=>"datetime…

JDK5.0 新機能:java.util.concurrentパッケージ2、scheduleAtFixedRate()

「12.1. スケジューリング」まんま import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; public class C2008092800 implements Runnable { int number; long start; publ…

発展: 順列表現

まんま module Main where import Text.ParserCombinators.Parsec --import Text.ParserCombinators.Parsec.Char import Text.ParserCombinators.Parsec.Perm perm0 = permute (f (<$$>) char 'a' (<||>) char 'b' (<||>) char 'c') where f a b c = [a,b,c]…

C API

『入門Luaプログラミング』 201ページより、って試してみたら、 うちの環境だと、lua.h は lua50/lua.h。ライブラリは、-llua50 luaL_openlibs, luaL_dostring なしとエラー(luaL_openlibs は 5.1 で追加されたものと解説があった) lauxlib.h を見ると、luaL…

ActiveSupport、Hash.from_xml

>> require "rubygems" => true >> require "active_support" => true >> Hash.from_xml([].to_xml) => {"nil_classes"=>[]} >> Hash.from_xml([{:foo => 1, :bar => 2}, {:baz => 3}].to_xml) => {"records"=>[{"foo"=>1, "bar"=>2}, {"baz"=>3}]}

JDK5.0 新機能:java.util.concurrentパッケージ2、schedule()

「12.1. スケジューリング」まんま import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; public class C2008092700 implements Runnable { int number; long start; publ…

発展: ユーザ状態

省略だらけで良く分からない…

コルーチン

まんま #!/usr/bin/env lua function foo1(a) print("foo", a) return coroutine.yield(2*a) end co = coroutine.create(function (a,b) print("co-body", a, b) local r = foo1(a+1) print("co-body", r) local r, s = coroutine.yield(a+b, a-b) print("co…

ActiveSupport、Array#rand

>> require "rubygems" => true >> require "active_support" => true >> [1, 2, 3, 4, 5].rand => 4 >> [1, 2, 3, 4, 5].rand => 4 >> [1, 2, 3, 4, 5].rand => 1 >> [1, 2, 3, 4, 5].rand => 2 >> [1, 2, 3, 4, 5].rand => 1 >> [1, 2, 3, 4, 5].rand => 1…

JDK5.0 新機能:java.util.concurrentパッケージ、newCachedThreadPool()

「11.3. スレッドプール」まんま import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class C2008092600 implements Runnable { private int number; public C2008092600(int number){ this.number = number; } p…

発展: セパレートスキャナ

まんま module Main where import Text.ParserCombinators.Parsec type Token = (SourcePos,Tok) data Tok = Identifier String | Reserved String | Symbol String | Price Int deriving Show --scanner :: [Char] -> ([Token],[String]) -- type Parser a …

クロージャ

まんま #!/usr/bin/env lua a = {} local x = 20 for i=1,10 do local y = 0 a[i] = function () y=y+1; return x+y end end for x in a do print(x) end で、 1 2 3 4 5 6 7 8 9 10

ActiveSupport、Array#split

まんま >> require "rubygems" => true >> require "active_support" => true >> [1, 2, 3, 4, 5].split(3) => [[1, 2], [4, 5]] >> (1..10).to_a.split { |i| i % 3 == 0 } => [[1, 2], [4, 5], [7, 8], [10]]

JDK5.0 新機能:java.util.concurrentパッケージ、newFixedThreadPool()

「11.3. スレッドプール」まんま import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class C2008092500 implements Runnable { private String tab = ""; public C2008092500(int tab) { for (int i = 0; i <= t…

Lexeme パーサ

説明の順序とコードが出現する順序がごちゃごちゃで、再現させにくい… digitToInt って何だ? Char.digitToInt にあった まんま(完成品?) module Main where import Char import Text.ParserCombinators.Parsec import Text.ParserCombinators.Parsec.Token…

ローカル変数を関数からアクセス

まんま #!/usr/bin/env lua local counter = 0 function inc(x) counter = counter + x return counter end print(inc(1)) print(inc(1)) print(inc(2)) print(inc(2)) で、 1 2 4 6

ActiveSupport、Array#in_groups_of

まんま >> require "rubygems" => true >> require "active_support" => true >> %w(1 2 3 4 5 6 7).in_groups_of(3) {|g| p g} ["1", "2", "3"] ["4", "5", "6"] ["7", nil, nil] => nil >> %w(1 2 3).in_groups_of(2, '&nbsp;') {|g| p g} ["1", "2"] ["3"…

JDK5.0 新機能:java.util.concurrentパッケージ、newSingleThreadExecutor()

「11.3. スレッドプール」まんま import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class C2008092400 implements Runnable { private String tab = ""; public C2008092400(int tab) { for (int i = 0; i <= t…

字句解析

まんま module Main where import Text.ParserCombinators.Parsec import Text.ParserCombinators.Parsec.Expr import Text.ParserCombinators.Parsec.Token( TokenParser, makeTokenParser, reservedOpNames ) import qualified Text.ParserCombinators.Par…

可視ルール

まんま #!/usr/bin/env lua x = 10 do local x = x print(x) x = x+1 do local x = x+1 print(x) end print(x) end print(x) で、 10 12 11 10

ActiveSupport、Array#extract_options!

>> require "rubygems" => true >> require "active_support" => true >> [1, 2, 3].extract_options! => {} >> [1, 2, 3, {:a => :b}].extract_options! => {:a=>:b} 何?何?

JDK5.0 新機能:一ミリ秒未満のスリープ

「10.5. 一ミリ秒未満のスリープ」 public class C2008092300 { public static void main(String[] args) { System.out.println("start"); try { Thread.sleep(1000); } catch(java.lang.InterruptedException e) { } } } で、 start何が新しいの?