28 February, 2009

二月が終わったぞ。

今日は私たち4人、HHHVというチーム、がハノイ工科大学のIT Binary Brain というコンテストを参加した。参加したチームの数は本当にすごかった。80チーム以上もあった。私たちはこのコンテストの前に何も復習しなかった。参加するのは楽しいためだけだった。

今日のコンテストのスタイルはMultiple Choice だった。時間はあまり長くて、ただ三十分で40個をしなきゃ。Huy A によると、質問は全部ITSSの質問と同じだったが、あいつはFEを合格したのに、今はほとんどわすれた。バカのHuy A!でも、私のチームは質問をほぼちゃんと答えた。時間が終わった後、私はうちへ帰った。結果はどうなるか、あさってまではわからない。もし私のチームが進むことができたら、。。。

今日は二月の最後の日だ。1F の出発の日は三月二十三日にきまっていた。つまり、後は三週間ぐらいだよね。

今日の歌:Over the rain~ひかりの橋


06 February, 2009

東京タワー

私のの日本語インテンシーブの授業には、テーマを選び、そのテーマを調べ、日本人もインタビューし、最後にレポートを書かなければならない。私のテーマは「東京タワー」で、以下は私のレポートだ。

東京タワー

1.はじめに
最近、私は「東京タワー]というドラマを見た。これはとてもいいドラマだと思う。このドラマには、ある人はそのように言った:「東京タワーは本当に東京のシンボールだよね。」。この言葉はいろいろかんがえらせた。いったい東京タワーはどんな建物か。どうして東京のシンボルになるのか。ほかには何か特別な意味もあるのか。日本人は東京タワーについてどう思うか。だから、私は東京タワーについてもっと調べたい、東京タワーをテーマにした。

2.調査の方法
• 2008年12月18日(木)に五人の日本人をインタビューした。
• インターネットでの資料から。
• 「東京タワー」というドラマを見た。

3.調査の内容
①東京タワーはどんな建物か
東京タワーは1957年(昭和32年)6月29日に建設が開始された。多くの人の作業により、着工からわずか1年3か月後の1958年(昭和33年)12月23日に完成した。東京タワーの元の目的は関東の地上デジタル放送だ。今はテレビ会社の9社が東京タワーを使用して、関東に通信放送を行っている。
「東京タワー]の名称は完成直前に開かれた審査会で決定した。じつは、一番多かった名称は「昭和塔」で、続いては「日本塔」「平和塔」だった。他には当時アメリカとソ連が人工衛星の打ち上げ競争をしていたことから「宇宙塔」という応募名称もあった。しかし、ある有名な人の推挙で、その結果「東京タワー」に決定した。
東京タワーの高さは333メトルで、日本に一番高い電波塔だと知られている。この高さの数字、333、ただ偶然の数字だが、多くの人にとってはとてもすばらしい数字だそうだ。東京タワーは観光客にとって特別な場所がある。それは、大展望台1階というところだ。この所の高さは145メトル、そこから東京の360度も見える。大展望台1階には「Look down window」というところがある。これは透き通る窓で、そんな高いところから小さな東京の道が見える場所だ。
東京タワーから夜の東京の観光はもっときれいだとよく言われている。東京タワーは日没から深夜0時までの間美しくライトアップされる。季節に合わせライトの色も変化させており、春・秋・冬は暖光色の高圧ナトリウムランプのライトアップ、夏は涼しげな白色のメタルハライドランプの照明になる。また、イベントなどで違う色にライトアップする場合もある。

②東京タワーの意味

1958年に完成した時の東京タワーは早く日本人の夢のシンボルになった。青い空に向かっている高くて、丈夫な東京タワーは多くの当時の日本人にとって、明るい未来に向かっている日本のイメージのように想像した。日本人にとって東京タワーは東京のシンボルだということはアメリカ人にとって自由の女神像はニューヨークのシンボルだということと同じだ。さらに、東京タワーはテレビ放送のために使われていることから、日本のテクノロジーの発展のシンボルもなった。このタワーの創造者、久吉前田(ひさきちまえだ)は東京タワーを「日本のテクノロジーの勝ち」と呼んでいた。
しかし、それは昔のことだ。50年後の今はそのシンボルはだんだん消えてしまう。その代わり、新たなシンボルになる:懐かしい昔の日本のシンボルだ。なぜこのことがあるのか。東京タワーの意味の変わりの原因は今の日本の経済不況である。昔と違って、今の日本人は未来のことを信じる気がだんだんなくなってしまった。
一橋大学の歴史先生の正則中村(まさのりなかむら)先生が言った、「東京タワーは未来の夢のシンボルだったが、今はこの夢はなくなってしまった。なんか日本の夢もなくなってしまった。」
最近の本とドラマにはこのタワーは今の日本のなくなってしまう部分のシンボルになる。これは世界一番経済発展する国になれるように当時の日本人だれでも持っている高い精神的やる気だ。
最近は東京に多くの高いビールが立てられているということで、だんだん東京タワーを見えにくくなる。特に、2011年には東京の一番高いビールという特徴がなくなる。新たなテレビ放送タワー、東京スカイツリーというタワー、高さ610メトル、は建てられている。東京スカイツリーが完成したら、テレビ放送は全部東京スカイツリーからで、東京タワーは観光的な目的だけで使われる。

③「東京タワー」というドラマの東京タワー
このドラマを見ると、東京タワーの意味がもっとはっきりわかるはずだ。このドラマの時代は20年前で、ある田舎の男の子の話だ。その男の子は東京タワーが発展した東京のシンボルだとかんじていた。彼はそのピカピカする東京タワーを見ると、東京は本当にすばらしくて、いい仕事を見つけられる、いい生活できる場所だと信じていた。だから、田舎から東京に引越しした。さらに、東京タワーについてではないが、このドラマに東京タワーのイメージがよく現している。お母さんと息子の感情の話も、恋愛の話も東京タワーがある話もよくある。例えば、
「お二人が夜に一緒に東京タワーを見たら、ぜひ二人の恋愛はよくなるよ。」とか、
「お母さんは東京タワーを見ることができる、うれしいよ」など。
だから、東京タワーは東京のライフスタイルの代表的な意味があると思う。

4.まとめ
世界で、それぞれの都市はシンボル的な場所とか、建物とか、あるはずだ。東京タワーはそんな建物の一つで、多くの人にとって、発展している東京のシンボルになる。しかし、それだけではなく、日本の歴史の長い間の代表的な建物として知られている。50年のうちに、東京タワーは日本人の明るい未来の夢のシンボルから懐かしくてきれいな昔のことのシンボルになる。このタワーは本当に有意義な建物だ。

5.参考文献
1.http://ja.wikipedia.org/wiki/%E6%9D%B1%E4%BA%AC%E3%82%BF%E3%83%AF%E3%83%BC
2.http://discover-jp.blogspot.com/2006/11/tokyo-tower.html
3.http://search.japantimes.co.jp/cgi-bin/nn20081230i1.html
4.http://www.iht.com/articles/2008/12/30/asia/tokyo.php
5.「東京タワー」というドラマ




03 February, 2009

テト休みの後

じゃ、テトが終わった。また勉強のことを続ける。今、なんだか日本語の授業には、あまり勉強できないと思う。だんだん自分の日本語能力が減っていると感じる。日本に行くまでにはほぼ2ヶ月だけだが、今は準備はまだしない。ちょっと心配だ。
来週は試験の二つを受けられなきゃが、今はまだ何も勉強しない。とても心配だ。いつこんな疲れた日が終わるのか、今この質問は頭の中いっぱいだ。
今日の歌:「明日晴れるかな」

26 December, 2008

ZARD - 負けないで

この間、いろいろなことが起こる。もうすぐ日本に留学するが、がっかりしたことばかりを会う。しかし、今は一番大切な時だとわかるから、なんと言っても負けないで、最後までがんばらなくちゃ。



ふとした瞬間に 視線がぶつかる
幸福のときめき 覚えているでしょ
パステルカラーの季節に恋した
あの日のように 輝いてる あなたでいてね

負けないで もう少し
最後まで 走り抜けて
どんなに 離れてても
心は そばにいるわ
追いかけて 遥かな夢を

何が起きたって ヘッチャラな顔して
どうにかなるサと おどけてみせるの
“今宵は私(わたくし)と一緒に踊りましょ”
今も そんなあなたが好きよ 忘れないで

負けないで ほらそこに
ゴールは近づいてる
どんなに 離れてても
心は そばにいるわ
感じてね 見つめる瞳

負けないで もう少し
最後まで 走り抜けて
どんなに 離れてても
心は そばにいるわ
追いかけて 遥かな夢を
負けないで ほらそこに
ゴールは近づいてる
どんなに 離れてても
心は そばにいるわ
感じてね 見つめる瞳

11 October, 2008

はじめの ブログ エントリ

今日から日本語でエントリ を全部書くように決めた。
いい練習だと思うから。

30 April, 2007

Get 300 free 3D icons for your site

If you want to create your site, probably you will want to look for attractive icons to make your site more colorful, impressive. Here is a set of 300 free, beautiful 3D icons that can suit your need:

From Lifehacker:

"Media repository Wikimedia Commons has a collection of 300 dazzling 3D icons, all of them free to use under Creative Commons licensing.

The Crystal Clear collection is divided into sections to simplify your perusal: Applications, Devices, File Systems, KDM and MIME-Types. Each icon measures 32x32 pixels and comes in the PNG format. They're an impressive lot, perfect for site builders who want to add dashes of style and color. Alas, there's no way to download the entire batch; you have to grab each icon individually. But that's a small price to pay for such attractive freebies.

Crystal Clear icon collection [Wikimedia Commons] "

30 March, 2007

Pointers in C

Pointer is a complicated, often confusing definition in C programming. Here is an article that probably help you understand pointer in C programming much better !



Pointers


Objectives:

Having read this section you should be able to:

1.program using pointers
2.understand how C uses pointers with arrays


Point to Point:

Pointers are a very powerful, but primitive facility contained in the C language. Pointers are a throwback to the days of low-level assembly language programming and as a result they are
sometimes difficult to understand and subject to subtle and difficult-to-find errors. Still it has to be admitted that pointers are one of the great attractions of the C language and there will be

many an experienced C programmer splutering and fuming at the idea that we would dare to refer to pointers as 'primitive'!

In an ideal world we would avoid telling you about pointers until the very last minute, but without them many of the simpler aspects of C just don't make any sense at all. So, with apologies,
let's get on with pointers.

A variable is an area of memory that has been given a name. For example:

int x;

is an area of memory that has been given the name x. The advantage of this scheme is that you can use the name to specify where to store data. For example:

x=lO;

is an instruction to store the data value 10 in the area of memory named x. The variable is such a fundamental idea that using it quickly becomes second nature, but there is another way of
working with memory.

The computer access its own memory not by using variable names but by using a memory map with each location of memory uniquely defined by a number, called the address of that
memory location.

A pointer is a variable that stores this location of memory. In more fundamental terms, a pointer stores the address of a variable . In more picturesque terms, a pointer points to a variable.

A pointer has to be declared just like any other variable - remember a pointer is just a variable that stores an address. For example,

int *p;

is a pointer to an integer. Adding an asterisk in front of a variable's name declares it to be a pointer to the declared type. Notice that the asterisk applies only to the single variable name that it
is in front of, so:

int *p , q;

declares a pointer to an int and an int variable, not two pointers.

Once you have declared a pointer variable you can begin using it like any other variable, but in practice you also need to know the meaning of two new operators: & and *. The & operator

returns the address of a variable. You can remember this easily because & is the 'A'mpersand character and it gets you the 'A'ddress. For example:

int *p , q;

declares p, a pointer to int, and q an int and the instruction:

p=&q;

stores the address of q in p. After this instruction you can think of p as pointing at q. Compare this to:

p=q;

which attempts to store the value in q in the pointer p - something which has to be considered an error.

The second operator * is a little more difficult to understand. If you place * in front of a pointer variable then the result is the value stored in the variable pointed at. That is, p stores the

address, or pointer, to another variable and *p is the value stored in the variable that p points at.

The * operator is called the dereferencing operator and it helps not to confuse it with multiplication or with its use in declaring a pointer.

This multiple use of an operator is called operator overload.

Confused? Well most C programmers are confused when they first meet pointers. There seems to be just too much to take in on first acquaintance. However there are only three basic ideas:

1.To declare a pointer add an * in front of its name.
2.To obtain the address of a variable us & in front of its name.
3.To obtain the value of a variable use * in front of a pointer's name.

Now see if you can work out what the following means:


int *a , b , c;
b = 10;
a = &b;
c = *a;


Firstly three variables are declared - a (a pointer to int), and b and c (both standard integers). The instruction stores the value l0 in the varable b in the usual way. The first 'difficult'

instruction is a=&b which stores the address of b in a. After this a points to b.

Finally c = *a stores the value in the varable pointed to by a in c. As a points to b, its value i.e. 1O is stored in c. In other words, this is a long winded way of writing

c = b;

Notice that if a is an int and p is a pointer to an int then

a = p;

is nonsense because it tries to store the address of an int, i.e. a pointer value, in an int. Similarly:

a = &p;

tries to store the address of a pointer variable in a and is equally wrong! The only assignment between an int and a pointer to int that makes sense is:

a = *p;


Swap Shop:

At the moment it looks as if pointers are just a complicated way of doing something we can already do by a simpler method. However, consider the following simple problem - write a
function which swaps the contents of two variables. That is, write swap(a,b) which will swaps over the contents of a and b. In principle this should be easy:


function swap(int a , int b);
{
int temp;
temp = a;
a = b;
b = temp;
}


the only complication being the need to use a third variable temp to hold the value of a while the value of b overwrites it. However, if you try this function you will find that it doesn't work.

You can use it - swap(a,b); - until you are blue in the face, but it just will not change the values stored in a and b back in the calling program. The reason is that all parameters in C are
passed by value. That is, when you use swap(a,b) function the values in a and b are passed into the function swap via the parameters and any changes that are made to the parameters do
not alter a and b back in the main program. The function swap does swap over the values in a and b within the function, but doesn't do so in the main program.

The solution to this very common problem is to pass not the values stored in the variables, but the addresses of the variables. The function can then use pointers to get at the values in the
variables in the main program and modify them. That is, the function should be:


function swap(int *a , int *b);
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}



Notice that now the two parameters a and b are pointers and the assignments that effect the swap have to use the dereference operator to make sure that it is the values of the variables

pointed at that are swapped. You should have no difficulty with:

temp = *a;

this just stores the value pointed at by a into temp. However,

*a = *b;

is a little more unusual in that it stores that value pointed at by b in place of the value pointed at by a. There is one final complication. When you use swap you have to remember to pass the
addresses of the variables that you want to swap. That is not:

swap(a,b)

but

swap(&a,&b)

The rule is that whenever you want to pass a variable so that the function can modify its contents you have to pass it as an address. Equally the function has to be ready to accept an address

and work with it. You can't take any old function and suddenly decide to pass it the address of a variable instead of its value. If you pass an address to a function that isn't expecting it the
result is usually disaster and the same is true if you fail to pass an address to a function that is expecting one.

For example, calling swap as swap(a,b) instead of swap(&a,&b) will result in two arbitrary areas of memory being swapped over, usually with the result that the entire system, not just

your program, crashes.

The need to pass an address to a function also explains the difference between the two I/O functions that we have been using since the beginning of this course. printf doesn't change the
values of its parameters so it is called as printf("%d",a) but scanf does, because it is an input function, and so it is called as scanf("%d",&a).


Pointers And Arrays:

In C there is a very close connection between pointers and arrays. In fact they are more or less one and the same thing! When you declare an array as:

int a[10];

you are in fact declaring a pointer a to the first element in the array. That is, a is exactly the same as &a[0]. The only difference between a and a pointer variable is that the array name is a
constant pointer - you cannot change the location it points at. When you write an expression such as a[i] this is converted into a pointer expression that gives the value of the appropriate
element. To be more precise, a[i] is exactly equivalent to *(a+i) i.e. the value pointed at by a + i . In the same way *(a+ 1) is the same as a[1] and so on.

Being able to add one to a pointer to get the next element of an array is a nice idea, but it does raise the question of what it means to add 'one' to a pointer. For example, in most
implementations an int takes two memory locations and a float takes four. So if you declare an int array and add one to a pointer to it, then in fact the pointer will move on by two
memory locations. However, if you declare a float array and add one to a pointer to it then the pointer has to move on by four memory locations. In other words, adding one to a pointer

moves it on by an amount of storage depending on the type it is a pointer to.

This is, of course, precisely why you have to declare the type that the pointer is to point at! Only by knowing that a is a pointer to int and b is a pointer to float can the compiler figure out
that

a + 1

means move the pointer on by two memory locations i.e. add 2, and

b + 1

means move the pointer on by four memory locations i.e. add 4. In practice you don't have to worry about how much storage a pointer's base type takes up. All you do need to remember is

that pointer arithmetic works in units of the data type that the pointer points at. Notice that you can even use ++ and -- with a pointer, but not with an array name because this is a constant
pointer and cannot be changed. So to summarise:

1.An array's name is a constant pointer to the first element in the array that is a==&a[0] and *a==a[0].
2.Array indexing is equivalent to pointer arithmetic - that is a+i=&a[i] and *(a+i)==a[i].

It is up to you whether you want to think about an array as an array or an area of storage associated with a constant pointer. The view of it as an array is the more sophisticated and the

further away from the underlying way that the machine works. The view as a pointer and pointer arithmetic is more primitive and closer to the hardware. In most cases the distinction is
irrelevant and purely a matter of taste.

One final point connected with both arrays and functions is that when you pass an entire array to a function then by default you pass a pointer. This allows you to write functions that
process entire arrays without having to pass every single value stored in the array - just a pointer to the first element. However, it also temps you to write some very strange code unless you

keep a clear head. Try the following - write a function that will fill an array with random values randdat(a,n) where a is the array and n is its size. Your first attempt might be something
like:


void randdat(int *pa , int n)
{
for (pa = 0 ; pa < pa =" rand()%n" i="0" pa =" rand()%n" i="0" or="" i="0">