Oct 19, 2009

Amazon.com Larger Font Bookmarklet

I like to read book reviews in Amazon.com with iPhone.
Amazon.com show optimized pages for iPhone.
I think its font size is so small.
Then I made a bookmarklet.

Amazon.com larger font bookmarklet

You can view pages with larger font when you run this bookmarklet.



var e = document.getElementsByTagName('div');
var n = e.length;
for (var i = 0; i < n; i++) {
e[i].style.fontSize = '14px';
}

Oct 12, 2009

Making Web Application with Haskell #3

I make a web application with Haskell.
It's a simple application.
You input your name, then the application output your name.
See below.






The other day I made the application with Network.CGI.
Today I make it with Text.XHtml wich is included in GHC.



import Network.CGI
import Text.XHtml

inputForm :: Html
inputForm = form << [paragraph << "Who are you?",
textfield "name",
submit "" "send"]

greet :: String -> Html
greet n = h1 << ("Hello, " ++ n ++ "!")

page :: String -> Html -> Html
page t b = header << thetitle << t +++ body << b

cgiMain :: CGI CGIResult
cgiMain = do name <- getInput "name"
let x = maybe inputForm greet name
output $ renderHtml $ page "Hello" x

main :: IO ()
main = runCGI $ handleErrors cgiMain



This code is simpler than the previous code.

Oct 9, 2009

Making Web Application with Haskell #2

I make a web application with Haskell.
It's a simple application.
You input your name, then the application output your name.
See below.






The other day I made the application without any library.
Today I make it with Network.CGI wich is included in GHC.



import Network.CGI

inputForm :: String -> String
inputForm script = concat [
"<form action=\"", script, "\" method=\"GET\">",
"<p>Who are you?</p>",
"<input type=\"text\" name=\"name\" />",
"<input type=\"submit\" value=\"send\" />",
"</form>"]

putName :: String -> String
putName name = concat ["<h1>Hello, ", name, "!</h1>"]

body :: Maybe String -> String -> String
body name script =
case name of
Just x -> putName x
Nothing -> inputForm script

html :: Maybe String -> String -> String
html name script = concat [
"<html>",
"<head><title>Hello</title></head>",
"<body>",
body name script,
"</body>",
"</html>"]

cgiMain :: CGI CGIResult
cgiMain = do
setHeader "Content-type" "text/html; charset = UTF-8"
script <- scriptName
name <- getInput "name"
output $ html name script

main :: IO ()
main = runCGI (handleErrors cgiMain)



Complete!

Oct 7, 2009

Making Web Application with Haskell #1

I make a web application with Haskell.
It's a simple application.
You input your name, then the application output your name.
See below.






Today I make the application without any library.
I use standard input and output.



import System.Environment

inputForm :: String -> String
inputForm script = concat [
"<form action=¥"", script, "¥" method=¥"GET¥">",
"<p>Who are you?</p>",
"<input type=¥"text¥" name=¥"name¥" />",
"<input type=¥"submit¥" value=¥"send¥" />",
"</form>"]

getName :: String -> String
getName q = drop 5 q

main = do
putStrLn "Content-type: text/html; charset = UTF-8¥n"
putStrLn "<html>"
putStrLn "<head><title>Hello</title></head>"
putStrLn "<body>"
script <- getEnv "SCRIPT_NAME"
query <- getEnv "QUERY_STRING"
case query of
"" -> putStrLn $ inputForm script
_ -> putStrLn $ concat ["<h1>Hello, ", getName query, "!</h1>"]
putStrLn "</body>"
putStrLn "</html>"



Complete!

Oct 3, 2009

Sum from 1 to 10 without loop

Can you sum from 1 to 10 without loop? It's a programming quiz which is in now in Japan.

You may solve it with inject method in Ruby.


puts (1..10).inject(:+)


Is it not interesting? Then, I write it with continuation.


n, s = callcc {|$c| [1, 0] }
n, s = $c.call [n.succ, n + s] if n <= 10
puts s


Additionally, you can use recursion without loop.

Jun 27, 2009

Conway's Game of Life on your iPhone

You can try Conway's Game of Life on your iPhone.
It's some kind of artificial life simulation.

Life for iPhone (iTunes)







Life for iPhone (iTunes)

You will be able to keep seeing its mysterious pattern.

Jun 16, 2009

Fibonacci in Ruby

a method for Fibonacci number:

def fib(n)
if n < 2
1
else
fib(n - 2) + fib(n - 1)
end
end


result:

puts fib(10) #=> 89

Jun 12, 2009

I came back!

I'll write in this blog again.


class Programmer
def says(message)
puts message
end
end

shunsuk = Programmer.new
shunsuk.says "I came back!"