Sunday, August 12, 2012

Seven Languages in Seven Weeks : Erlang Day 2

I'm reading Seven Languages in Seven weeks. It's a great book to discover different kind of languages. I went through Ruby, Io, Prolog, Scala and Erlang. So far, Prolog has been the most puzzling of all. For example, the map coloring sample. The author shows how to colorize several states of the United States, without assigning the same color to adjacent states. I finally got the point after noticing that all states names begin with an uppercase letter. Aaaaaaahhhh ! Colors will be assigned to each state (a state is just a variable), and prolog will go through all combinations of colors, returning true only if all combinations in the coloring query return true. Although it was obvious in the food example, food_type(What, meat), for some reason it was not so obvious in the map coloring example...

On the contrary, I'm very interested in Erlang. One of the exercises is to tell in which state a Tic-Tac-Toe board is. Did X win ? Did O win ? No winner yet ? No more moves ? This is the solution I came up with, after several refactoring passes. I like the way we can interact with lists and tuples.

-module(tic).
-export([winner/1]).

winner(Board) ->
 [A,B,C,D,E,F,G,H,I] = Board,

% Filter the board for winning combinations
Result = lists:filter(
  fun({X,Y,Z}) -> (X=:=Y) and (X=:=Z) end,
  [{A,B,C},{D,E,F},{G,H,I},{A,D,G},{B,E,H},{C,F,I},{A,E,I},{C,E,G}]),

% Checking the winner
case Result of
 % There is a winner
 [First|_] -> {Winner,_,_} = First, Winner;
 % No winner
 _ ->
 % Is there any slot left to play ?
 case lists:any(fun(X) -> X=:="" end, Board) of
  true -> "no winner";
  false -> "cat"
 end
end.


Friday, August 3, 2012

London Olympics judo and Japanese television

(This one is in Japanese. The London Olympic 100kg+ Judo men final was not shown on Japanese television. I have a few words to say about that)

昨日、2012年8月3日、柔道男子100キロ超決勝の日。その決勝戦がNHKに放送されなかったのは、なぜ?女子の決勝戦、日本人選手が出場し、生中継で放送された。試合終了前、速報が流れ、アーチェリーに銀メダルを取ったという朗報。さ、女子の決勝戦が終わり、いよいよ待ち遠しの男子決勝戦…と思ったら、柔道の生放送終了。そのかわりにアーチェリー。

あの時間帯に、3つのチャネルがロンドンオリンピックを放送したいた。NHK総合、NHK BS1ともうひとつ。3つともアーチェリー。どういうこと?

柔道発祥国、日本。なのに、男子決勝戦見えずおしまい。ネットで調べて、フランス人選手が記録的に優勝したと。見たかったなぁ、決勝戦。今朝の朝日新聞は、男子が金を取れず、屈辱だと書いてある。日本人選手が決勝に出ないから放送しない理屈はなんでしょう?

柔道のしろうとでありながら、庶民観客として日本柔道をどう改革するべきか、提案する:
  • 変なプライドを捨てましょう。他の国を見て。銅メダルを取るだけで大喜び、大感動。日本選手は?金でないかぎり、泣く。実力がないのに金ばかりにこだわるのは、相応しくない。大会が始まる前に他の選手よりプレッシャーが大きくなるだけ。逆効果ではないでしょうか?
  • お家芸。大辞泉より:最も得意とする事柄。「柔道は日本の―」。それはないでしょう。昔はね。最も得意だったのかもしれないが、今はどうでしょうか?柔道に対して「お家芸」というのは、廃語にすべき。
  • テレビ放送。またプライドの問題でしょうが、日本人選手が出ないと放送しないという考え方は、やめましょう。決勝は決勝なので、遅くまで見ているのに、放送しないなんて。柔道の結果は屈辱か?日本のテレビ放送の方が屈辱的。柔道をそんなに好きだったら、そんなに期待していたら、そんなに伝統だと思っていたら、ちゃんと最後まで放送してね。
以上、素朴な柔道改革提案書。 (アーチェリーに恨みがございません)

Songs bought on iTunes abruptly stop playing

I bought two albums on iTunes last weekend. All my songs stopped after about one minute of play. I searched for similar problems on the net, and it appears that a lot of people are annoyed with this too. I found different recovery methods, but none of them worked for me. The most common recovery method was to remove the files and redownload them from iTunes. I removed the files, went to my purchase history on iTunes and redownloaded the whole album.

Unfortunately, the songs were still cut at approximately the same place...
What solved my problem was not to redownload the whole album at once, but to redownload each song one by one. Yes, it's annoying, but at least the songs were finally playing properly up to the end. Let's hope that iTunes is going to be fixed soon.