Sightseeing - Kamakura, Tokyo

My co-worker asked me about sightseeing in Japan, so I noted about it here.

She set the following conditions out.

  • She will stay at her friend's house in Yokohama for 10 days.
  • She will visit in November.
  • She has never been to Japan so far.
  • She prefer to day trips because she can back to Yokohama everynight.
  • She can buy Japan Rail Pass if necessary.

Well, I listed the candidates of sightseeing as follows:

I've checked fares/fees as of October 2008, but they basically show the costs from Yokohama station. They may be changed depends on your nearest station, so please take them only as a guide.

I've also estimated the cost (fares and lunch) for each place very ruoghly, but the cost does not include any shopping cost.

I've got pictures from Wikimedia Commons (except ones in Tokyo Disney Resort). They are pubshed as public domain.

Kamakura (鎌倉)

Kamakura (in Wikitravel)

Kamakura (in Wikipedia)

JR Yokosuka line (Yokohama - Kamakura)
One way fare
330 yen
Rough cost estimation
3,000 - 4,000 yen

Kamakura is a city located next to Yokohama. Kamakura is well known as one of ancient cities in Japan. Kamakura was used to be the capital of Japan around 1200 A.D.

There are a lot of historical temples and shirines in Kamakura.

Tsurugaoka Hachiman-gu (鶴岡八幡宮)
Tsurugaoka Hachiman-gū (in Wikipedia)
I think this shrine is the biggest shrine in Kamakura. It's quite famous in Japan. Especially lots Japenese visit there on the first of January.
Kotoku-in (高徳院)
Kōtoku-in (in Wikipedia)
This temple is renowned for Daibutsu (大仏), in other words, the Great Buddha (see the picture).
Jufuku-ji (寿福寺)
Jufuku-ji (in Wikipedia)
This temple was founded by Hojo Masako (北条政子) who was the wife of Minamoto no Yoritomo (源頼朝) who was the founder and the first shogun of the Kamakura Shogunate of Japan.
Hase-dera (長谷寺)
Kaikōzan Hase-dera (in Wikipedia)
This temple is one of the great Buddhist temples. It has one of the largest wooden statue in Japan.

You can take Enoden (江の電) to move around Kamakura and visit to Enoshima (江ノ島). One-day ticket is available (580 yen).

There are several famous temples in Kita-Kamakura (北鎌倉) as well. → Yamanouchi (in Wikipedia)

Tokyo Disney Resort (東京ディズニーリゾート)

Tokyo Disney Resort (in Wikitravel)

Tokyo Disney Resort (in Wikipedia)

JR Tokaido line (Yokohama - Tokyo), JR Keiyo line (Tokyo - Maihama)
One way fare
690 yen
Admission fee
5,800 yen (Tokyo Disneyland)
Rough cost estimation
10,000 - 15,000 yen

As you may know, Tokyo Disneyland is the most famous thema park in Japan.

I've visited there in January 2008. Please see my report for details.

The opening time of Tokyo Disneyland / DisneySea will be changed as follows:

Date Disneyland DisneySea
01.11.2008 (Sat) 8:00 - 22:00 9:00 - 22:00
02.11.2008 (Sun) 8:00 - 22:00 8:00 - 22:00
03.11.2008 (Mon) 8:00 - 22:00 9:00 - 22:00
04.11.2008 (Tue) 9:00 - 22:00 9:00 - 22:00
05.11.2008 (Wed) 9:00 - 22:00 9:00 - 22:00
06.11.2008 (Thu) 9:00 - 22:00 9:00 - 22:00
07.11.2008 (Fri) 8:30 - 22:00 9:00 - 22:00
08.11.2008 (Sat) 8:00 - 22:00 8:30 - 22:00
09.11.2008 (Sun) 8:00 - 22:00 8:30 - 22:00
10.11.2008 (Mon) 8:00 - 22:00 9:00 - 22:00
11.11.2008 (Tue) 8:30 - 22:00 9:00 - 22:00
12.11.2008 (Wed) 8:30 - 22:00 9:00 - 22:00
13.11.2008 (Thu) 8:30 - 22:00 9:00 - 22:00
14.11.2008 (Fri) 8:00 - 22:00 9:00 - 22:00
15.11.2008 (Sat) 8:00 - 22:00 9:00 - 22:00
16.11.2008 (Sun) 8:00 - 22:00 8:30 - 22:00
17.11.2008 (Mon) 8:00 - 22:00 8:30 - 22:00
18.11.2008 (Tue) 8:30 - 22:00 9:00 - 22:00
19.11.2008 (Wed) 8:30 - 22:00 9:00 - 22:00
20.11.2008 (Thu) 8:30 - 22:00 9:00 - 22:00
21.11.2008 (Fri) 8:30 - 22:00 9:00 - 22:00
22.11.2008 (Sat) 8:00 - 22:00 8:00 - 22:00
23.11.2008 (Sun) 8:00 - 22:00 8:00 - 22:00
24.11.2008 (Mon) 8:00 - 22:00 9:00 - 22:00
25.11.2008 (Tue) 8:00 - 22:00 9:00 - 22:00
26.11.2008 (Wed) 9:00 - 22:00 9:00 - 22:00
27.11.2008 (Thu) 9:00 - 22:00 9:00 - 22:00
28.11.2008 (Fri) 9:00 - 22:00 9:00 - 22:00
29.11.2008 (Sat) 8:00 - 22:00 8:30 - 22:00
30.11.2008 (Sun) 8:00 - 22:00 8:30 - 22:00

You can check the schedule on the official website, but some information is available in Japanese page only (like the above time table).

It will take about 1 hour from Yokohama to Tokyo Disney Resort by train.

Some attractions are very popular, so you need to stand in very very long line. You may consider to use FASTPASS system to avoid long waiting.

I recommend you to select some attractions where you want to join in advance. I personally recommend the following attractions:

Asakusa (浅草)

Tokyo/Asakusa (in Wikitravel)

Asakusa (in Wikipedia)

JR Tokaido line (Yokohama - Shinbashi), Toei Asakusa line (Shinbashi - Asakusa)
One way fare
660 yen
Rough cost estimation
3,500 - 4,000 yen

Asakusa is located on the north-east part of Tokyo. Asakusa is well known as one of traditional town areas in Tokyo.

Senso-ji (浅草寺) is one of the most popular temples in Tokyo. Kaminarimon (see the picture) is a gate of Senso-ji.

If you visit to Asakusa, I recommend you to visit to Kappabashi (合羽橋) as well. In Kappabashi, there are a lot of shops supplying the restaurant trade. You may marvel at especially plastic display foods (we call them "sample shokuzai").

To visit to Kappabashi, you can use subway [Tokyo Metro Ginza line (Asakusa - Tawaramachi) 160 yen (one way, about 2 mins)].

Harajuku / Aoyama / Omotesando / Shibuya (原宿・青山・表参道・渋谷)

Harajuku (in Wikipedia)

Harajuku (in Wikipedia)

Tokyu Toyoko line (Yokohama - Shibuya), JR Yamanote line (Shibuya - Harajuku)
One way fare
390 yen
Rough cost estimation
3,000 - 3,500 yen

This area is well known internationally for youth style and fashion.

Local landmarks include Yoyogi park (代々木公園) and Meiji shrine (明治神宮). Meiji shrine is one of the biggest shrine in Japan.

If you visit to Harajuku, I recommnd you to walk from Harajuku to Shibuya (see the guidance in Wikitravel for details).

If you walk to Shibuya, the fare of returning to Yokohama will be 260 yen.

Ginza (銀座)

Tokyo/Ginza (in Wikitravel)

Ginza (in Wikipedia)

JR Tokaido line (Yokohama - Shinagawa), JR Yamanote line (Shinagwa - Yurakucho)
One way fare
450 yen
Rough cost estimation
4,000 - 4,500 yen

Ginza is well known as a upmarket are of Tokyo.

I recommend you to visit to Sony Building which is the showrooms of Sony. The first Apple Store in Japan is also located at Ginza.

You can see Japanese traditional style drama at Kabuki Theater (歌舞伎座). It may cost around 800 yen depends on the length of drama.

Tokyo Imperial Palace (皇居)

Tokyo/Chiyoda (in Wikitravel)

Tokyo Imperial Palace (in Wikipedia)

JR Tokaido line (Yokohama - Tokyo)
One way fare
450 yen
Rough cost estimation
3,000 - 3,500 yen

Tokyo imperial place, we call "Kokyo" in Japanese, is the place where Japanese imperial family lives. Tokyo imperial place is located 10-minite walk away from JR Tokyo station (Marunouchi central exit).

The place is basically is closed in normal days, however there is a official guided tour. You can apply the tour online if you want. The online service of application can be accessed from 5:00 to 24:00 in Japanese time.

This place is also known as the castle ruin of Edo-jo (江戸城). There is a moat around Kokyo.

Akihabara (秋葉原)

Tokyo/Akihabara (in Wikitravel)

Akihabara (in Wikipedia)

JR Tokaido line (Yokohama - Shinagawa), JR Yamanote line (Shinagwa - Akihabara)
One way fare
540 yen
Rough cost estimation
3,000 - 3,500 yen

Akihabara is well known as Electric town.

There are many consumer appliance stores around Akihabara. You can buy PC, peripherals and gadgets at a reasonable price.

Akihabara is located in the central Tokyo (Chiyoda ward), so you can probably visit there at the same day of Tokyo imperial palace.

Other places

You can consider to visit the following places as well (I've linked to the Wikitravel).

localizer.js - multilingualization in JavaScript

I just consider internationalization on JavaScript. It should have simple and visceral interface.

For instance,

document.write(_('Hello world!'));

We can get a localized string via the function _.

The name of function, _ is used in a standard internationalization gettext.

var __Localizer = function()
  this.strings = {};
  this.getLocalizedString = function(str)
    if (__Localizer.strings[str] && __Localizer.strings[str] != '')
      return __Localizer.strings[str];
    return str;
  return this;
__Localizer = new __Localizer();
_ = __Localizer.getLocalizedString;

__Localizer is defined as a global object here.

To configure the list of localized strings against __Localizer.strings, the following javascript will be loaded:

__Localizer.strings = {
  'Hello world!' : 'Hallo Weld!'

The localized data script (locale/de.js) can be included in header of HTML document as follows:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>samples - localizer</title>
<script type="text/javascript" src="localizer.js"></script>
<script type="text/javascript" src="locale/de.js"></script>

I think it's better to consider to use lang or xml:lang attribute in html element. The following code will load localized data automatically depends on lang attribute:

var __Localizer = function()
  this.strings = {};
  this.getLocalizedString = function(str)
    if (__Localizer.strings[str] && __Localizer.strings[str] != '')
      return __Localizer.strings[str];
    return str;
  var path = '';
  var jses = document.getElementsByTagName('script');
  for (var i=0,n=jses.length;i<n;i++)
    if (jses[i].src.indexOf('localizer.js') == -1) continue;
    path = jses[i].src.replace('localizer.js','');
  var html = document.getElementsByTagName('html')[0];
  if (html)
    var lang = html.getAttribute('xml:lang') || html.getAttribute('lang');
    if (!lang) lang = 'en';
    document.write(['\n<','script type="text/javascript" src="',path,'locale/',lang,'.js"></','script>'].join(''));
  return this;
__Localizer = new __Localizer();
_ = __Localizer.getLocalizedString;

We can use document.createElement to generate a script element, but document.createElement may not work under some browsers. So I use document.write instead of document.createElement.

The script is named as "localizer.js", and language data should be put into "locale/" directory as follows.

  • localizer.js
  • locale/
    • en.js (English)
    • ja.js (Japanese)
    • de.js (German)
    • ... any other language data

A sample HTML document looks like:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "">
<html xmlns="" xml:lang="ja">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>sample - localizer.js</title>
<script type="text/javascript" src="localizer.js"></script>
<p>&quot;Hello world!&quot; is translated in Japanese.</p>
<p>However this document is writtin in English, so it looks nothing to be changed. You can also see <a href="en.html">English page</a>.</p>
<hr />
<p><script type="text/javascript">
  document.write(_('Hello world!'));
// -->

We can see "Hello world!" in source code, however this string will be translated in Japanese because of xml:lang attribute ("ja").

If there is no resource for corrsponding language, the string won't be translated.

This script is distributed under MIT license. => Download localizer and samples.

Tokyo Disney Resort

I have stayed at Tokyo Disney Resort overnight from 8 Jan. Tokyo Disney Sea on the first day, then Tokyo Disney Land on the next day.

My daughter is crazy about Disney Princess recently. This visit would be one of biggest events during the trip to Japan.

I've been to Tokyo Disney Land several times ever. My last visit, however, was over 10 years ago. Tokyo Disney Sea didn't exist at that time.

Tokyo Disney Sea

This is the first visit of Tokyo Disney Sea for me.

The environment of park (buildings and objects) were quite impressive for me in comparison with Tokyo Disney Land.

[Picture]Tokyo Disney Sea Entrance.  There is a big globe at DisneySea AquaSphere.

[Picture]to Mediterranean Harbor.  in the atmosphere of mediterranean town.

[Picture]looks like in Venice.  beatiful night scene

We've attended the following attractions:

  • Ariel's Greeting Grotto (Mermaid Lagoon)
  • Mermaid Lagoon Theater (Mermaid Lagoon)
  • The Magic Lamp Theater (Arabian Coast)
  • Tower of Terror (American Waterfront)
  • DisneySea Transit Steamer Line (American Waterfront)

There are not lots because we've put the weight on seeing shows.

Ariel's Greeting Grotto is a tiny attraction as taking photo with Ariel who is main character of Little Mermaid. My daughter has talked with the mermaid; "Ariel talked in Japanese with English accent!", she said.

I don't like the attraction such as Free Fall, however I didn't have any idea regarding Tower of Terror. Probably I won't ride it any more!

The Magic Lamp Theater was a pretty good. It's not only magic show but it is Disneyfied very well.

We've seen the following shows:

  • Meet & Smile (Mediterranean Harbor)
  • The Legend of Mythica (Mediterranean Harbor)
  • Over the Waves (American Waterfront)
  • BraviSEAmo! (Mediterranean Harbor)

The Legend of Mythica and BraviSEAmo! are grand production, however Meet & Smile was the best show for me on that day.

[Picture]Disney characters greeted at Meet & Smile.  The Disney characters danced nearby.

Tokyo Disney Resort had not crowded on that days. We had easygoing opportunity to go around the park. All attractions had no wating queue.

I strongly recommend to visit Tokyo Disney Resort at the mid of January.

Tokyo Disney Land

To tell the truth, an accident that a float had been broken during a parade happened on 8 Jan, so all parades were cancelled when we've visited Tokyo Disney Land.

Thus we've been around there to attend attractions mainly.

[Picture]The symbol of Tokyo Disney Land, Cinderella Castle.  It's a trademark of Tokyo Disney Land.

[Picture]A scene in Toontown.  I like such funny builings in Toontown.

[Picture]We've found Wendy and Peter Pan.  Wendy and Peter Pan performed a skit.

We've attended the following attractions:

  • Buzz Lightyear's Astro Blasters (Tomorrowland)
  • Space Mountain (Tomorrowland)
  • Star Tours (Tomorrowland)
  • Jolly Trolley (Toontown)
  • Roger Rabbit's Car Toon Spin (Toontown)
  • Snow White's Adventures (Fantasyland)
  • Pooh's Hunny Hunt (Fantasyland)
  • Dumbo The Flying Elephant (Fantasyland)
  • Jungle Cruise (Adventureland)
  • Pirates of the Caribbean (Adventureland)

I felt a sense of speed for Space Mountain as much as I expected. It has been renewed at once, so that's reason why I felt so possibly. I wondered for my daughter too fast, but she quite enjoyed it.

The both of my wife and daughter disappointed Star Tours which I suggested. I'm sorry!

There are few attarctions regarding Disney Princess. One of them is Snow White's Adventures. I think Snow White's Adventures looks like a haunted house, but my daughter like that attraction.

I looked forward to Pooh's Hunny Hunt personally. It's one of the most popular attractions.

[Picture]looks like inside a book!  We enjoyed a waiting zone as well.

The hunny pots go around the course in the building. However there is no rail, they seem to move freely.

Disney characters marched in the park because of parade cancel.

[Picture]The march instead of parade.  Greeting march instead of the parade.

We can see the characters nearby and shaked hands.

merging hashs in perl

I've investigated the merge of hashs (associative arrays) in perl. Then I've recorded it as a note for myself.

Probably the following code is the most intuitive.

%hash = (%hash, %addition);

To add %addition into %hash.

my %hash = (
  'key1' => 'value1',
  'key2' => 'value2',
my %addition = (
  'key3' => 'value3',
  'key4' => 'value4',
  'key1' => 'override1',
%hash = (%hash, %addition);

When the above code is run, %hash will be as follows:

  'key1' => 'override1',
  'key2' => 'value2',
  'key3' => 'value3',
  'key4' => 'value4',

A value of key1 is overwritten.

We can use while or foreach loop to merge hashes.

The following code uses while and each:

while (my($key,$val) = each (%addition))
  $hash{$key} = $val;

The following code uses foreach and keys:

foreach my $key (keys %addition)
  $hash{$key} = $addition{$key};

We can also use map to merge hashes such as:

map { $hash{$_} = $addition{$_} } keys %addition;

At last, we can use slice. Using "slice" is like a hack, I'm not familiar with this way.

@hash { keys %addition } = values %addition;

We should use @hash instead %hash to use slice.

Using hash reference, we can code as follows:

# normal merge
$hash = {%{$hash}, %addition};
# use while
while (my($key,$val) = each (%addition))
  $hash->{$key} = $val;
# use foreach
foreach my $key (keys %addition)
  $hash->{$key} = $addition{$key};
# use map
map { $hash->{$_} = $addition{$_} } keys %addition;
# use slice
@{$hash} { keys %addition } = values %addition;

I've taken benchmarks for those ways. The code for the benchmarks is in sequel part of this article.

read more ...