2110327 Algorithm Design, first semester, 2556

Slides

We use as our main slide but I will also use some other slides from previous years as well.

Lecture Log

  • (2013-06-03) Introduction, Stable Marriage Problem.

  • (2013-06-05) Special Lecture from Dr. Damrong Guoy.

  • (2013-06-10) Finished the Stable Marriage Problem. We talked about Pseudo-code. We will use Pseudo-code as a medium for communication. Covered the main slide pp. 25–31. The classroom Exercise was to solve the following problem.

    “Sum of Four Elements Problem”
    Input: four arrays of integers, each of size N. a[1..n],b[1..n],c[1..n],d[1..n] and a number X.
    Output: Either “Yes” or “No”. It will be “Yes” if and only if there exists a[i]+b[j]+c[k]+d[l] == x.

  • (2013-06-12) Showed the solution of the above problem in O(N^2), using hash or O(N^2 lg N) using binary search or AVL Tree. Intro to Analysis. What is the goal of analysis? Why we measure the growth of the function instead of the actual time. We can measure by either experiment (write a program and count the number of executed basic command), or by analysis (derive a function that describes the number of executed command and analyze the function). Done a classroom exercise. Cover the main slide pp. 63 – 75

    The solution of the Sum of Four Elements is as follow

  • (2013-06-17) Revisit the asymptotic notation (O,\Theta,\Omega, etc.) Covered the main slide pp. 79–97.

  • (2013-06-19) We finished the Analysis of Algo with the Master Method. We covered the main slide pp. 76–78 and 98–109. Classroom exercise is to analyze this

  • (2013-06-24) Introduction to Divide and Conquer (D&C). Examples are a binary search and a sequential search, both in recursive mode. We talked about Maximum Contiguous Sum of Subsequence. Classroom exercise is to write N^3 or N^2 of the MCS and to analyze another solution. We covered the slide from 2010

The pseudo-code of the solutions are as follow

  • (2013-06-26) We had a quiz for 30 minutes on Analysis. Merge Sort are covered. See this page for the code of Merge Sort.

  • (2013-07-01) Quick sort. x^m mod k, Closest pair, Strassen

  • (2013-07-03) The rest of sorting, shell sort.

  • (2013-07-08 and 2013-07-10) Class skipped, I went to www.IOI2013.org

  • (2013-07-15) Introduction to Dynamic Programming, Memoization. Fibonacci, C(n,r)

  • (2013-07-17) SUPER MAKE UP CLASS!!! We start at 8.00 until 12.00. at 9.00, we also had a quiz. We talked about dynamic programming. Longest Common Subsequence, 01-Knapsack, Matrix Chain Multiplication. In-class exercise is lots of memoization of the said algorithm.

  • (2013-07-31) Class skipped. Sorry guys.

  • (2013-08-05) After a loooong break and midterm, we met at last. Introduction to graph algorithm. BFS. In class exercise is find a “friend-of-friend” and “freind-of-freind-of-friend….”.

  • (2013-08-07) Finished the BFS and talked about DFS. There is a homework to modify DFS to detect a cycle in a graph.

  • (2013-08-14) Topological Sorting, Strongly Connected Component.

  • (2013-08-19) Prim’s and Kruskal’s. Disjoint Set. In-class exercise is to write Prim’s before seeing the actual implementation.

  • (2013-08-21) Cut Property. Greedy Algorithm. Activity Selection.

  • (2013-08-26) Shortest Path. Dijkstra’s Algorithm

  • (2013-08-28) More on Dijkstra’s Algorithm. Negative weight edge, Bellman-Ford

  • (2013-09-02) Bellman-Ford, Floyd-Warshall

  • (2013-09-04) State Space Search. Basic Combinatorial problem. Sum-of-subset problem.

  • (2013-09-09) N-Queen, Permutation, BFS and DFS. In-class exercise is to write n-queen.

File attachments: 

new OpenVPN

Tags: 

มีเพิ่มเติม 2 บรรทัด ให้ push routing ไปยัง client บรรทัดแรกบอกว่าทั้งหมดในจุฬาให้ใช้ผ่าน vpn บรรทัดที่สองบอกว่าต่อเข้า server ovpn ผ่านทาง network ปรกติ

push route 161.200.0.0 255.255.0.0
push route remote_host 255.255.255.255 net_gateway 1

Desktop linux again

openSUSE 12.3 and openSUSE 13.1

Fix YaST2 and rvm

YaST is ported to ruby and out-of-the-box DOES NOT work with rvm. I have to

gem install fast_gettext

to fix this.

network not working

check this http://forums.opensuse.org/english/get-technical-help-here/network-inter…
Stop the service first

systemctl is-active network.service && \
systemctl stop network.service

Enable NetworkManager

systemctl --force enable NetworkManager.service

Enable the service again

systemctl start network.service

repositories

  • add packman repositories

package

  • via communities repositories (PackMan, etc.)

sudo zypper install git subversion mercurial gcc-c++ kate emacs gvim gnucash filezilla krusader texlive gimp inkscape wine smb4k artha vlc comix keepass dropbox wine wine-mp3 virtualbox sysstat

  • Other packages
    • codeblock
    • steam
    • synergy

VirtualBox

Copy the file /usr/lib/udev/rules.d/60-vboxdrv.rules to /etc/udev/rules.d/, open it with a text editor, and remove the leading ‘#’s from the last 4 lines below the comment in line #2. This is needed to give you the needed permissions, but is disabled by default in the openSUSE package because of security concerns.
It should work then after a reboot.

LibreOffice 4

zypper ar -f http://download.opensuse.org/repositories/LibreOffice:/Stable/openSUSE_12.3/LibreOffice:Stable.repo
zypper in libreoffice -r "Stable Version of LibreOffice (openSUSE_12.3)"

my widget looks ugly, have to install package libreoffice-gnome

Codec

http://opensuse-guide.org/codecs.php

Font Config

ต้องใช้ไฟล์ ~/.fonts.conf (มีอยู่ใน hg linux-file แล้ว)
อย่าลืม ln -s linux-file/.fonts.conf

อย่าลืมติดตั้ง font ต่าง ๆ อ่าน http://www.binarytides.com/gorgeous-looking-fonts-ubuntu-linux/

Mouse Problem

  • vi /etc/X11/xorg.conf.d/50-synaptics.conf
  • add
        Option "VertResolution" "100"
        Option "HorizResolution" "65"
        # disable synaptics driver pointer acceleration
        Option "MinSpeed" "3"
        Option "MaxSpeed" "20"
        # tweak the X-server pointer acceleration
        #Option "AccelerationProfile" "2"
        Option "AdaptiveDeceleration" "1"
        Option "ConstantDeceleration" "16"
        Option "VelocityScale" "32"

to the InputClass of synaptics, making the section become

Section "InputClass"
        Identifier "touchpad catchall"
        Driver "synaptics"
        MatchIsTouchpad "on"
# This option is recommend on all Linux systems using evdev, but cannot be
# enabled by default. See the following link for details:
# who-t.blogspot.com/2010/11/how-to-ignore-configuration-errors.html
        MatchDevicePath "/dev/input/event*"
        Option  "HorizScrollDelta"      "0"
# enable tap-to-click as default (bnc#722457)
        Option "TapButton1" "1"
        Option "TapButton3" "2"
        Option "TapButton2" "3"
        Option "VertResolution" "100"
        Option "HorizResolution" "65"
        # disable synaptics driver pointer acceleration
        Option "MinSpeed" "3"
        Option "MaxSpeed" "20"
        # tweak the X-server pointer acceleration
        #Option "AccelerationProfile" "2"
        Option "AdaptiveDeceleration" "1"
        Option "ConstantDeceleration" "16"
        Option "VelocityScale" "32"
 
EndSection

Samba

Set the Promp

use http://www.kirsle.net/wizards/ps1.html
read this as well http://www.fvue.nl/wiki/Bash:_How_to_change_tab_and_window_title_of_console
check this two for 256 colors as well
* http://www.askapache.com/linux/bash-power-prompt.html#256_Color_Prompt_C…
* http://www.logilab.org/blogentry/20255
* http://misc.flogisoft.com/bash/tip_colors_and_formatting

the current prompt is

function EXT_COLOR () { echo -ne "\[\033[38;5;$1m\]"; }
function EXT_BGCLR () { echo -ne "\[\033[48;5;$1m\]"; }
export PS1="`EXT_COLOR 204`\u`EXT_COLOR 84`@`EXT_COLOR 141`\h`EXT_COLOR 84`:`EXT_COLOR 208`\w`EXT_COLOR 84`>\[\033[0m\]"

mount ntfs

/dev/disk/by-id/ata-SAMSUNG_MZ7PC256HAFU-000L7_S0Y5NSACC01704-part3 /dae        ntfs-3g rw,user,users,nosuid,nodev,relatime,uid=1000,gid=users,fmask=003,dmask=002,default_permissions,allow_other,exec 0 0

Pimp my Firefox

I love my KDE in black but firefox won’t agree with this. Create this file ~/.mozilla/firefox/XXXX.default/chrome/userContent.css

input {
border: 2px inset white ;
background-color: white ;
color: black ;
}
 
textarea {
border: 2px inset white ;
background-color: white ;
color: black ;
}
 
select {
border: 2px inset white;
background-color: white;
color: black;
}
 
input[type="radio"],
input[type="checkbox"] {
border: 2px inset white ;
background-color: white;
color: ThreeDFace l
}
 
*|*::-moz-radio {
background-color: white;
}
 
button,
input[type="reset"],
input[type="button"],
input[type="submit"] {
border: 2px outset white;
background-color: #eeeeee;
color: black;
}
 
body {
background-color: white;
color: black;
display: block;
margin: 8px;
}

Misc.

HG repo

.hgrc เริ่มต้น

[ui]
username=Nattee Niparnan <nattee@gmail.com>
 
[hostfingerprints]
isl2-dev.cp.eng.chula.ac.th=26:7f:97:cc:de:4c:fa:b8:60:3b:31:96:62:3a:5d:02:00:7f:ce:ed
 
[auth]
isl2-dev.prefix=https://isl2-dev.cp.eng.chula.ac.th/hg
isl2-dev.username=ไม่บอก
isl2-dev.password=ไม่บอก

Back in business!

ไม่ได้เขียน blog มาปีนึง ถือโอกาสวันขึ้นปีใหม่ 2013 ปลุกชีพ blog ขึ้นมาอีกสักครั้ง

คราวนี้ย้ายโฮสต์จาก Clnox มาเป็น Site5 เลยอัพเกรดเป็น Drupal 7 ไปด้วยในตัว แต่เนื่องจากเว็บเดิมมี custom module กับ theme ที่รันบน Drupal 6 เป็นหลัก บวกกับความขี้เกียจ port (จริงๆ คือเขียน module บน Drupal ไม่เป็นแล้ว เพราะไม่ได้ทำนานจัด T_T) เลยกะว่า ทำใหม่ง่ายกว่า แล้วค่อย import เว็บเดิมมาเก็บไว้ที่ archive.suksit.com

จังหวะนี้เลยเอาระบบ 3rd party comment management มาลองใช้ไปด้วยในตัว เห็นเพื่อนหวูดใช้ Disqus อยู่ เลยเลือกใช้ Livefyre เพื่อความแปลกใหม่ ^^

โปรดติดตามตอนต่อไป :)

BarCamp Bangkok 5

เพื่อไม่เป็นการละเลยกฎของ BarCamp ข้อสอง “You do blog about BarCamp” ก็ขอบันทึกลง blog ไว้สักหน่อย

BarCamp Bangkok ครั้งนี้เป็นครั้งที่ 5 ห่างจากครั้งที่ 4 ไปปีกว่า (แต่ระหว่างนั้นก็มีคนจัด BarCamp Bangkhen ไปสองรอบ) รูปแบบของงานเปลี่ยนไปจากงานครั้งอื่นๆ เยอะ จากงานที่มีคนเข้าร่วมหลายร้อยคน (ครั้งที่ 2-4) ก็เหลือแค่ไม่ถึงร้อยคน ตัดรายละเอียดรุงรังที่ทำให้การจัดงานวุ่นวายโดยไม่จำเป็นออกนั่นคือ

  • ไม่เลี้ยงข้าว
  • ไม่มีแจกเสื้อ
  • ไม่มีเน็ตฟรี

บวกกับการจำกัดจำนวนคนเข้าร่วม (เนื่องจากสถานที่ไม่ใหญ่) บังคับให้คนลงทะเบียนต้องระบุหัวข้อที่จะพูดก่อนวันงาน ทำให้ BarCamp คราวนี้เป็นงานที่มีหัวข้อน่าสนใจเยอะกว่าครั้งที่ผ่านๆ มาอย่างชัดเจน

session ที่ได้เข้าก็มีเรื่อง Hadoop / OpenStreetMap / Websocket / MeshBKK / CDN / Manycore System แล้วก็พูดเองไป session นึง

ตอนแรกที่ลงทะเบียน กะว่าจะพูดเรื่อง PHP Microframework แต่ตอนหลังเปลี่ยนใจมาพูดเรื่อง Firefox OS แทน สไลด์ประกอบก็ตามด้านล่าง

ด้วยรูปแบบที่จำกัดคนเข้าร่วมสกรีนคนประเภท มาหาเพื่อน/มาฟังคนดัง/มาเอาเสื้อฟรี ออกไป ทำให้บรรยากาศในงานเอื้อต่อการพูดคุยแลกเปลี่ยนระหว่างคนที่มาร่วมงานด้วยความสนใจจริงๆ ไม่ค่อยมีจับกลุ่มคุยเฉพาะเพื่อนตัวเอง

Free Beer

ถ้าจัดงานในมหาลัย ก็ไม่สามารถมีอะไรแบบนี้ได้

ก็ขอบคุณคณะจัดงานทุกท่าน ที่ทำให้ BarCamp Bangkok กลับมาสนุกอีกครั้ง

Data Structure, second semester 2012

Mini Fan for Raspberry Pi

I buy tiny fan that should be used with SoC on Raspberry Pi. Unfortunately, it is not included heat sink and no matching power connector in board.

Connect Bluetooth module to Raspberry Pi

I try to connect Bluetooth module (not USB dongle) to Raspberry Pi’s UART (Tx, Rx). Only LED on Bluetooth module blinking. It seems does not work. My PC that connects USB Bluetooth dongle sees Bluetooth device that connect to Raspberry Pi but terminal program in that PC cannot work.

Person name around the world

This is very interesting. See also Arabic name

2110327 Algorithm Design, first semester, 2555


RDC 2013

Programming iRobot Create

#include <stdio.h>
#include <iostream>
 
#include "RobotConnector.h"
 
#include "cv.h"
#include "highgui.h"
 
using namespace std;
 
#define Create_Comport "COM4"
 
bool isRecord = false;
 
int main()
{
    CreateData  robotData;
    RobotConnector  robot;
 
    ofstream    record;
    record.open("../data/robot.txt");
 
    if( !robot.Connect(Create_Comport) )
    {
        cout << "Error : Can't connect to robot @" << Create_Comport << endl;
        return -1;
    }
 
    robot.DriveDirect(0, 0);
    cvNamedWindow("Robot");
 
 
    while(true)
    {
        cvWaitKey(30);
        double vx, vz;
        vx = vz = 0;
 
 
        if (robotData.bumper[0]) {
            cout << "bump left" << endl;
        }
        if (robotData.bumper[1]) {
            cout << "bump right" << endl;
        }
 
 
        double vl = vx - vz;
        double vr = vx + vz;
 
        int velL = (int)(vl*Create_MaxVel);
        int velR = (int)(vr*Create_MaxVel);
 
        int color = (abs(velL)+abs(velR))/4;
        color = (color < 0) ? 0 : (color > 255) ? 255 : color;
 
        int inten = (robotData.cliffSignal[1] + robotData.cliffSignal[2])/8 - 63;
        inten = (inten < 0) ? 0 : (inten > 255) ? 255 : inten;
 
        //cout << color << " " << inten << " " << robotData.cliffSignal[1] << " " << robotData.cliffSignal[2] << endl;
 
        robot.LEDs(velL > 0, velR > 0, color, inten);
 
        if( !robot.DriveDirect(velL, velR) )
            cout << "SetControl Fail" << endl;
 
        if( !robot.ReadData(robotData) ) {
            //cout << "ReadData Fail" << endl;
        }
 
        if( isRecord )
            record << robotData.cliffSignal[0] << "\t" << robotData.cliffSignal[1] << "\t" << robotData.cliffSignal[2] << "\t" << robotData.cliffSignal[3] << endl;
 
        cout << "Robot " << robotData.cliffSignal[0] << endl;
    }
 
    robot.Disconnect();
 
    return 0;
}
File attachments: 
Attachment Size
iRobot Create.pdf 3 MB
Hl-340.exe 219.32 KB
AutoRDC2012_V2.rar 423.15 KB
State_Machine.pptx 63.06 KB
AutoRDC2012_V3.rar 422.18 KB
RDC2013_v1_main.cpp 3.42 KB

Trip 2011 – part 18

เป็นการดองบล็อกยาวข้ามปีแบบที่ไม่เคยมีมาก่อน ในที่สุดก็กลับมาเขียนเรื่องเที่ยวของวันเกือบสุดท้ายในลอนดอนต่อแล้ว

สถานที่แรกที่ไปเที่ยววันนี้คือ Tate Britain (คนละอันกับ Tate Modern แต่อยู่ในเครือเดียวกัน) วิธีเดินทางง่ายๆ ก็นั่ง tube ไปลงสถานี Plimlica แต่วันนี้ลองนั่งรถบัสชมเมืองดูบ้าง

ร้านขายของเล่น Dark Sphere ชื่อเท่ดี มีการ์ดเกมขายด้วย

โฆษณาเบียร์ Heineken บอกว่ากินไวน์มันไม่สนุกและบ้าเท่ากินเบียร์หรอก

ในที่สุดก็มาถึงด้านหน้าของ Tate Britain

The Home of British Art

ผลงานที่จัดแสดงภายในก็อย่างที่ชื่อบอกไว้ นั่นคือ Home of British Art เน้นงานศิลปะของศิลปินอังกฤษเป็นหลัก ซึ่งถ้าไม่ค่อยรู้จักศิลปินอังกฤษ (เช่น Blake, Turner, Constable) ดูแล้วอาจจะไม่ค่อยอินเท่าไหร่

ดูงานที่ Tate Britain เสร็จแล้วเดินออกมาจะเจอกับจุดจอดจักรยานเช่า วันนี้ก็ลองปั่นจักรยานดูสักหน่อย โดยการใช้งานก็เดินไปจิ้มที่จุดจอดจักรยาน เสียบบัตรเครดิตหรือเดบิตเข้าไป จากนั้นเครื่องจะให้รหัสปลดล็อกจักรยานมา เพื่อเอาไปปลดล็อก เอาจักรยานมาขี่ได้ โดยจะเสียค่าบริการครั้งแรก 1 ปอนด์ต่อ 24 ชั่วโมง และสามารถใช้งานจักรยานได้ 30 นาที ถ้าเอาจักรยานไปเก็บที่จุดจอด (ซึ่งมีกระจายอยู่ทั่วเมือง) ภายใน 30 นาทีก็ไม่เสียอะไรเพิ่ม (ระบบจะหักเงินจากบัตรเครดิต/เดบิตของเรา) ถ้าเกิดว่าเราเอาจักรยานไปเก็บแล้ว กดรหัสเอาออกมาใหม่ ภายใน 24 ชั่วโมงก็จะไม่เสียค่าบริการ ซึ่งถ้า manage ดีๆ แล้ว เราสามารถปั่นจักรยานได้ทั้งวันโดยเสียค่าเช่าแค่ 1 ปอนด์เท่านั้น (คือต้องเอาจักรยานไป dock ที่จุดจอดทุกๆ 30 นาที) ก็เป็นอีกทางเลือกให้คนชอบปั่นจักรยาน ซึ่งถนนหนทางในลอนดอนก็ทำออกมาค่อนข้างเป็นมิตรกับนักปั่นอยู่ และไม่มีรถราใหญ่ๆ ให้น่ากลัว

อีกปัจจัยคือ การเดินทางไปแหล่งท่องเที่ยวถัดไป คือ Imperial War Museum มันเดินทางลำบาก (วันอาทิตย์ tube บางเส้นทางปิดทำการ ถ้าจะนั่งก็ต้องอ้อมเยอะ)

ปั่นข้ามแม่น้ำเทมส์มาได้สักพัก ก็มาถึง Imperial War Museum

ด้านหน้า Imperial War Museum

Imperial War Museum เป็นพิพิธภัณฑ์ที่จัดแสดงงานเกี่ยวกับสงครามในยุคสมัยก่อน ที่เน้นเป็นหลักก็ส่วนของสงครามโลกครั้งที่สอง

ส่วนหนึ่งจากกำแพงเบอร์ลิน

ด้านในพิพิธภัณฑ์แบ่งเป็นหลายชั้น โถงด้านหน้าเป็นส่วนแสดงอาวุธสงครามทั้งรถถัง และเครื่องบินรถแบบต่างๆ ส่วนด้านในจะเป็นส่วนแสดงประวัติศาสตร์ของสงคราม

เครื่องบินรบสมัยสงครามโลก

ส่วนที่น่าสะเทือนใจมากๆ ในการชมพิพิธภัณฑ์นี้คือ ส่วนแสดงงานจะค่อยๆ เล่าถึงความเป็นมาของสงครามโลกครั้งที่สอง แสดงให้เห็นความโหดร้ายของสงครามและ build คนดูไปจนกระทั่งถึงห้องใหญ่ที่เป็น climax ของงานคือห้องที่พูดถึงค่ายกักกันของนาซี ดูแล้วขนลุกมากๆ

กว่าจะออกมาจาก War Museum ก็เย็น ซึ่งตอนค่ำวันนี้มีภารกิจต้องไปดูคอนเสิร์ตอีกงานหนึ่ง ซึ่งจองตั๋วไว้ตั้งแต่ตอนอยู่เมืองไทยแล้ว นั่นคือคือคอนเสิร์ตโปรโมตอัลบั้ม Write About Love ของวง Belle and Sebastian

Belle and Sebastian เป็นวงอินดี้ชื่อดังจาก Glasglow ซึ่งมีฐานแฟนเพลงในบ้านเราออกจะเยอะอยู่พอสมควร แต่ก็ไม่เคยมีวี่แววว่าจะมาแสดงสดในย่านเอเชียตะวันออกเฉียงใต้ ดังนั้น การเดินทางมาดูถึงลอนดอนนี่ก็ถือว่าเป็นโอกาสที่หาได้ยากอยู่

ซื้อตั๋วล่วงหน้าตั้งแต่ก่อนจะมา ได้ในราคาตั๋ว 2 ใบ 54.5 ปอนด์ สถานที่แสดงก็เล่นที่ Roundhouse ที่เดียวกับที่ดู Explosions in the Sky

คอนเสิร์ตนี้ซื้อตั๋วล่วงหน้าแต่เนิ่นๆ เลยได้ที่ค่อนข้างดี เกือบจะติดขอบเวทีเลยทีเดียว

สินค้า Merchandise หน้างาน ไม่ได้ซื้อเพราะว่ามันแพง T-T

วงเปิด ชื่ออะไรไม่รู้ จำไม่ได้

Belle and Sebastian มาแล้ว

เห็น Staurt Murdoch กันชัดๆ

คอนเสิร์ตจบ แก้วเบียร์เกลื่อน

เพลงส่วนใหญ่ที่เล่นจะเน้นไปที่อัลบั้มล่าสุดกับอัลบั้มแรก ดูจบแล้วรู้สึกคุ้มค่าตั๋วมาก ไม่ต้องมาหวังลมๆ แล้งๆ ว่าวงจะมาเล่นแถบเอเชียตะวันออกเฉียงใต้นี่เมื่อไหร่

คอนเสิร์ตจบก็นั่ง tube กลับที่พัก ในสถานีเจอป้ายโฆษณาคอนเสิร์ต High Voltage น่าดูดีเหมือนกัน มีวงที่อยากดูหลายวง แต่ก็ไม่มีโอกาสแหละนะ เพราะอีกไม่กี่วันก็ต้องกลับไทยแล้ว

โปสเตอร์โฆษณาคอนเสิร์ต High Voltage

ดองไว้นานมาก ตอนถัดไปตอนสุดท้ายละ

ลิงก์ตอนเก่าๆ

Drupal feed importer

Recently, I have a chance to use drupal commerce with feed importer. Feed importer is very good because I can easily transfer data from MySQL to the website.

However, sometime the import process crash and I am stuck with importing page with xx% status and nothing can be done via UI.

To fix this, I have to manually edit the status of the import. Basically, all I have to do is to

> update feeds_source set state = ‘b:0;’;
update feeds_source set fetcher_result=’b:0;’;

Check this .

07-huffmanTree.c

#include <stdio.h>
#include <stdlib.h>
 
//-------------------------------------------------------
struct SHuffmanNode;
typedef struct SHuffmanNode *HuffmanNode;
 
typedef HuffmanNode DType;
int cmp(DType d1, DType d2);
char *toString(char *buf, DType d);
//-------------------------------------------------------
struct SBHeap {
    DType *data;
    int length;
    int size;
};
typedef struct SBHeap *BHeap;
//---------------------------------------------
BHeap newBHeap(int length) {
    BHeap h = (BHeap) malloc(sizeof(struct SBHeap));
    h->data = (DType *) malloc(length * sizeof(DType));
    h->length = length;
    h->size = 0;
    return h;
}
void freeBHeap(BHeap h) {
    free(h->data);
    free(h);
}
//---------------------------------------------
int sizeOfBHeap(BHeap h) {
    return h->size;
}
int isEmptyBHeap(BHeap h) {
    return h->size == 0;
}
int isFullBHeap(BHeap h) {
    return h->size == h->length;
}
//---------------------------------------------
void printBHeap(BHeap h) {
    printf("heap:[ ");
    int i;
    char buf[100];
    for (i=0; i<h->size; i++) {
        printf("%s ", toString(buf, h->data[i]));
    }
    printf("]\n");
}
//---------------------------------------------
void addBHeap(BHeap h, DType x) {
    if (isFullBHeap(h)) {
        printf("add : heap is full\n");
        exit(1);
    } else {
        int k = h->size;
        while( k > 0 ) {
            int p = (k-1)/2;
            if (cmp(h->data[p],x) <= 0) break;  // min heap
            h->data[k] = h->data[p];
            k = p;
        }
        h->data[k] = x;
        h->size++;
    }
}
void _heapify(BHeap h, int k) {
    int c;
    while ( (c = 2*k+1) < h->size) {
        if (c+1 < h->size && cmp(h->data[c+1], h->data[ c ]) < 0) c++;
 
        if (cmp(h->data[ c ],h->data[k]) >= 0) break;
        DType t = h->data[k];
        h->data[k] = h->data[ c ];
        h->data[ c ] = t;
        k = c;
    }
}
DType removeMinBHeap(BHeap h) {  // min heap
    if (isEmptyBHeap(h)) {
        printf("heap is empty !\n");
        exit(1);
    } else {
        DType min = h->data[0];
        h->data[0] = h->data[h->size-1];
        _heapify(h, 0);
        h->size--;
        return min;
    }
}
//---------------------------------------------
struct SHuffmanNode  {
    char    c;
    int     freq;
    HuffmanNode left;
    HuffmanNode right;
};
//-------------------------------------------------------
int cmp(HuffmanNode n1, HuffmanNode n2) {
    if (n1->freq == n2->freq) return 0;
    return (n1->freq < n2->freq) ? -1 : 1;
}
char *toString(char *buf, HuffmanNode n) {
    sprintf(buf, "[%c:%d]", n->c, n->freq);
    return buf;
}
//---------------------------------------------
HuffmanNode newHuffmanNode(char c, int f, HuffmanNode left, HuffmanNode right) {
    HuffmanNode n = (HuffmanNode) malloc(sizeof(struct SHuffmanNode));
    n->c = c;
    n->freq = f;
    n->left = left;
    n->right = right;
    return n;
}
void freeHuffmanNode(HuffmanNode n) {
    free(n);
}
HuffmanNode buildHuffmanTree(char c[], int f[], int n) {
    BHeap h = newBHeap(n);
    int i;
    for (i = 0; i < n; i++) {
        addBHeap(h, newHuffmanNode(c[i], f[i], NULL, NULL));
    }
    for (i = 0; i < n - 1; i++) {
        HuffmanNode n1 = removeMinBHeap(h);
        HuffmanNode n2 = removeMinBHeap(h);
        addBHeap(h, newHuffmanNode('*', n1->freq + n2->freq, n2, n1));
    }
    return removeMinBHeap(h);
}
 
void printCodesR(HuffmanNode r, char codes[], int k) {
    if (r->left == NULL && r->right == NULL) {
        codes[k] = '\0';
        printf("%c : %s\n", r->c, codes);
    } else {
        codes[k] = '0'; printCodesR(r->left, codes, k+1);
        codes[k] = '1'; printCodesR(r->right, codes, k+1);
    }
}
void printCodes(HuffmanNode r) {
    char codes[40];
    printCodesR(r, codes, 0);
}
//---------------------------------------------------
void visit(HuffmanNode r) {
    char buf[100];
    printf("%s ", toString(buf, r));
}
void inorder(HuffmanNode r) {
    if (r == NULL) return;
    inorder(r->left);
    visit(r);
    inorder(r->right);
}
void preorder(HuffmanNode r) {
    if (r == NULL) return;
    visit(r);
    preorder(r->left);
    preorder(r->right);
}
void postorder(HuffmanNode r) {
    if (r == NULL) return;
    postorder(r->left);
    postorder(r->right);
    visit(r);
}
//-----------------------------------------------------
int main(int argc, char *argv[]) {
    int n = 13;
//    char c[] = {'1', '2', '3', '4', '5', '6', '7',
//                '8', '9', 'A', 'B', 'C', 'D'};
//    int  f[] = {24, 16, 15, 11, 8, 4, 4, 4, 4, 4, 2, 2, 2};
    char c[] = {'A', 'B', 'C', 'D', 'E', 'F'};
    int f[] = {40, 21, 15, 14, 8, 2};
    n = 6;
    HuffmanNode r = buildHuffmanTree(c, f, n);
    printf("inorder   = "); inorder(r); printf("\n");
    printf("preorder  = "); preorder(r); printf("\n");
    printf("postorder = "); postorder(r); printf("\n");
    printCodes(r);
    return 0;
}

05-linkedlist.c

#include <stdio.h>
#include <stdlib.h>
 
//-------------------------------------------------------
typedef float DType;
int cmp(DType d1, DType d2);
char *toString(char *buf, DType d);
//-------------------------------------------------------
int cmp(float d1, float d2) {
    if (d1 == d2) return 0;
    return (d1 < d2) ? -1 : 1;
}
char *toString(char *buf, float d) {
    sprintf(buf, "%6.2f", d);
    return buf;
}
//-------------------------------------------------------
struct SLinkedNode;
typedef struct SLinkedNode *LinkedNode;
 
struct SLinkedNode  {
    DType data;
    LinkedNode next;
};
LinkedNode newLinkedNode(DType d, LinkedNode next) {
    LinkedNode n = malloc(sizeof(struct SLinkedNode));
    n->data = d;
    n->next = next;
    return n;
}
//----------------------------------------------------------
// Singly-linked list with header node
//----------------------------------------------------------
struct SLinkedList;
typedef struct SLinkedList *LinkedList;
 
struct SLinkedList  {
    int size;
    LinkedNode header;
};
LinkedList newLinkedList() {
    LinkedList list = malloc(sizeof(struct SLinkedList));
    list->size = 0;
    list->header = newLinkedNode(0, NULL);
    return list;
}
void freeLinkedList(LinkedList list) {
    LinkedNode q, p = list->header;
    while (p != NULL) {
        q = p->next;
        free(p);
        p = q;
    }
    free(list);
}
//---------------------------------------------------------
int sizeOfLinkedList(LinkedList list) {
    return list->size;
}
int isEmptyLinkedList(LinkedList list) {
    return list->size == 0;
}
void printLinkedList(LinkedList list) {
    printf("LinkedList[ ");
    LinkedNode p = list->header->next;
    char buf[100];
    while( p != NULL) {
        printf("%s ", toString(buf, p->data));
        p = p->next;
    }
    printf("]\n");
}
//---------------------------------------------
LinkedNode _nodeOf(LinkedList list, int pos) { // if pos = -1 return header
    int i;
    LinkedNode p = list->header;
    for (i=-1; i<pos; i++) {
        p = p->next;
    }
    return p;
}
DType getLinkedList(LinkedList list, int pos) {
    if (pos < 0 || pos >= list->size) {
        printf("getLinkedList : out of range\n");
        exit(1);
    }
    LinkedNode p = _nodeOf(list, pos);
    return p->data;
}
LinkedNode _addAfterLinkedNode(LinkedList list, LinkedNode p, DType x) {
    p->next = newLinkedNode(x, p->next);
    list->size++;
    return p->next;
}
void addLinkedList(LinkedList list, DType x, int pos) {
    if (pos < 0 || pos > list->size) {
        printf("addLinkedList : out of range\n");
        exit(1);
    }
    LinkedNode p = _nodeOf(list, pos-1);
    _addAfterLinkedNode(list, p, x);
}
void addFirstLinkedList(LinkedList list, DType x) {
    addLinkedList(list, x, 0);
}
void addLastLinkedList(LinkedList list, DType x) {
    addLinkedList(list, x, list->size);
}
int indexOfLinkedList(LinkedList list, DType x) {  // -1 = notfound
    LinkedNode p = list->header->next;
    int i;
    for (i=0; i<list->size; i++) {
        if (cmp(p->data, x) == 0) return i;
        p = p->next;
    }
    return -1;
}
DType removeLinkedList(LinkedList list, int pos) {
    if (pos < 0 || pos >= list->size) {
        printf("removeLinkedList : out of range\n");
        exit(1);
    }
    LinkedNode p = _nodeOf(list, pos-1);
    LinkedNode n = p->next;
    DType x = n->data;
    p->next = n->next;
    free(n);
    list->size--;
    return x;
}
/*-----------------------------------------
LinkedNode reverse(LinkedNode p) {
    if (p == NULL) return NULL;
    if (p->next == NULL) return p;
    LinkedNode q = p->next;
    LinkedNode r = reverse(p->next);
    q->next = p;
    p->next = NULL;
    return r;
}
void reverseLinkedList(LinkedList list) {
    list->header->next = reverse(list->header->next);
}
-------------------------------------------
*/
void reverseLinkedList(LinkedList list) {
    LinkedNode p1 = NULL;
    LinkedNode p2 = list->header->next;
    LinkedNode p3;
    while(p2 != NULL) {
        p3 = p2->next;
        p2->next = p1;
        p1 = p2;
        p2 = p3;
    }
    list->header->next = p1;
}
int equalLinkedList(LinkedList list1, LinkedList list2) { // 0 = not equal, 1 = equal
    if (list1->size != list2->size) return 0;
    LinkedNode p1 = list1->header->next;
    LinkedNode p2 = list2->header->next;
    while (p1 != NULL && p2 != NULL) {
        if (cmp(p1->data,p2->data)!=0) return 0;
        p1 = p1->next;
        p2 = p2->next;
    }
    return p1 == NULL && p2 == NULL;
}
LinkedList createLinkedList(DType data[], int n) {
    LinkedList out = newLinkedList();
    int i;
    for (i=n-1; i>=0; i--) {
        addFirstLinkedList(out, data[i]);
    }
    return out;
}
//----------------------------------------------
int main(int argc, char *argv[]) {
    LinkedList q = newLinkedList();
    addLastLinkedList(q, 1);
    printLinkedList(q);
    addLastLinkedList(q, 2);
    printLinkedList(q);
    addLinkedList(q, 3, 0);
    printLinkedList(q);
    addFirstLinkedList(q, 9);
    printLinkedList(q);
    removeLinkedList(q, 1);
    printLinkedList(q);
    addLinkedList(q, 13, 1);
    printLinkedList(q);
    addLinkedList(q, 22, 3);
    removeLinkedList(q, 2);
    printLinkedList(q);
    reverseLinkedList(q);
    printLinkedList(q);
    //------------------------
    float data[] = {2,22,13,9};
    LinkedList copy = createLinkedList(data, 4);
    printf("copy + equals = %d\n", equalLinkedList(copy, q));
    int i, n;
    int correct = 1;
    for (i=0, n=sizeOfLinkedList(q); correct && i<n; i++) {
        int x = getLinkedList(q, i);
        if (indexOfLinkedList(q, x)!=i) correct = 0;
    }
    if (indexOfLinkedList(q, -999) != -1) correct = 0;
    printf("indexOf = %d\n", correct);
    return 0;
}

03-bheap.c, original

#include <stdio.h>
#include <stdlib.h>
 
//---------------------------------------------
typedef float DType;
int cmp(DType d1, DType d2);
char *toString(char *buf, DType d);
//-------------------------------------------------------
int cmp(float d1, float d2) {
    if (d1 == d2) return 0;
    return (d1 < d2) ? -1 : 1;
}
char *toString(char *buf, float d) {
    sprintf(buf, "%6.2f", d);
    return buf;
}
//-------------------------------------------------------
struct SBHeap {
    DType *data;
    int length;
    int size;
};
typedef struct SBHeap *BHeap;
//---------------------------------------------
BHeap newBHeap(int length) {
    BHeap h = (BHeap) malloc(sizeof(struct SBHeap));
    h->data = (DType *) malloc(length * sizeof(DType));
    h->length = length;
    h->size = 0;
    return h;
}
void freeBHeap(BHeap h) {
    free(h->data);
    free(h);
}
//---------------------------------------------
int sizeOfBHeap(BHeap h) {
    return h->size;
}
int isEmptyBHeap(BHeap h) {
    return h->size == 0;
}
int isFullBHeap(BHeap h) {
    return h->size == h->length;
}
//---------------------------------------------
void printBHeap(BHeap h) {
    printf("heap:[ ");
    int i;
    char buf[100];
    for (i=0; i<h->size; i++) {
        printf("%s ", toString(buf, h->data[i]));
    }
    printf("]\n");
}
//---------------------------------------------
void addBHeap(BHeap h, DType x) {
    if (isFullBHeap(h)) {
        printf("add : heap is full\n");
        exit(1);
    } else {
        int k = h->size;
        while( k > 0 ) {
            int p = (k-1)/2;
            if (cmp(h->data[p],x) <= 0) break;  // min heap
            h->data[k] = h->data[p];
            k = p;
        }
        h->data[k] = x;
        h->size++;
    }
}
// begin with an underscore -> private function
void _heapify(BHeap h, int k) {
    int c;
    while ( (c = 2*k+1) < h->size) {
        if (c+1 < h->size && cmp(h->data[c+1], h->data[geshifilter-c]) &lt; 0) c++;&#10;        if (cmp(h-&gt;data[c],h-&gt;data[k]) &gt;= 0) break;&#10;        DType t = h-&gt;data[k];&#10;        h-&gt;data[k] = h-&gt;data[c];&#10;        h-&gt;data[c] = t;&#10;        k = c;&#10;    }&#10;}&#10;DType removeMinBHeap(BHeap h) {  // min heap&#10;    if (isEmptyBHeap(h)) {&#10;        printf(&quot;heap is empty !\n&quot;);&#10;        exit(1);&#10;    } else {&#10;        DType min = h-&gt;data[0];&#10;        h-&gt;data[0] = h-&gt;data[h-&gt;size-1];&#10;        _heapify(h, 0);&#10;        h-&gt;size--;&#10;        return min;&#10;    }&#10;}&#10;//---------------------------------------------&#10;BHeap buildBHeap1(DType d[], int n) {&#10;    BHeap h = newBHeap(n);&#10;    int i;&#10;    for(i=0; i&lt;n; i++) {&#10;        h-&gt;data[i] = d[i];&#10;    }&#10;    h-&gt;length = n;&#10;    h-&gt;size = n;&#10;    for(i=n-1; i&gt;=0; i--) {&#10;        _heapify(h, i);&#10;    }&#10;    return h;&#10;}&#10;BHeap buildBHeap2(DType d[], int n) {&#10;    BHeap h = newBHeap(n);&#10;    int i;&#10;    for(i=0; i&lt;n; i++) {&#10;        addBHeap(h, d[i]);&#10;    }&#10;    return h;&#10;}&#10;//---------------------------------------------&#10;int main(int argc, char *argv[]) {&#10;    float d[] = {1,4,2,7,8,0,9};&#10;    int n = 7;&#10;    BHeap h = buildBHeap1(d, n);&#10;    int i;&#10;    printBHeap(h);&#10;    for (i=0; i&lt;n; i++) {&#10;        printf(&quot;removeMin : %6.2f : &quot;, removeMinBHeap(h));&#10;        printBHeap(h);&#10;    }&#10;    return 0;&#10;}&#10;

[/geshifilter-c]

02-queue.c, original

#include <stdio.h>
#include <stdlib.h>
 
//-------------------------------------------------------
typedef float DType;
int cmp(DType d1, DType d2);
char *toString(char *buf, DType d);
//-------------------------------------------------------
char *toString(char *buf, float d) {
    sprintf(buf, "%6.2f", d);
    return buf;
}
//-------------------------------------------------------
struct SQueue {
    DType *data;
    int length;
    int size;
    int front;
};
typedef struct SQueue *Queue;
//-------------------------------------
Queue newQueue(int length) {
    Queue q = (Queue) malloc(sizeof(struct SQueue));
    q->data = (DType *) malloc(length * sizeof(DType));
    q->length = length;
    q->size = 0;
    q->front = 0;
    return q;
}
void freeQueue(Queue q) {
    free(q->data);
    free(q);
}
//---------------------------------------------
int sizeOfQueue(Queue q) {
    return q->size;
}
int isEmptyQueue(Queue q) {
    return q->size == 0;
}
int isFullQueue(Queue q) {
    return q->size == q->length;
}
//---------------------------------------------
void printQueue(Queue q) {
    int i;
    printf("queue:[ ");
    int f = q->front;
    char buf[100];
    for (i=0; i<q->size; i++) {
        printf("%s ", toString(buf, q->data[f]));
        f = (f + 1) % q->length;
    }
    printf("]\n");
}
//---------------------------------------------
void enqueue(Queue q, DType x) {
    if (q->size == q->length) {
        int newlength = 2*q->length;
        DType *a = (DType *) malloc(newlength * sizeof(DType));
        int i;
        for (i=0; i<q->size; i++) {
            a[i] = q->data[q->front];
            q->front = (q->front + 1) % q->length;
        }
        free(q->data);
        q->data = a;
        q->length = newlength;
        q->front = 0;
    }
    int b = (q->front + q->size) % q->length;
    q->data[b] = x;
    q->size++;
}
DType dequeue(Queue q) {
    if (isEmptyQueue(q)) {
        printf("queue is empty !\n");
        exit(1);
    }
    DType x = q->data[q->front];
    q->front = (q->front + 1) % q->length;
    q->size--;
    return x;
}
//---------------------------------------------
int main(int argc, char *argv[]) {
    Queue q = newQueue(1);
    enqueue(q, 1);
    enqueue(q, 2);
    enqueue(q, 3);
    enqueue(q, 9);
    dequeue(q);
    enqueue(q, 11);
    enqueue(q, 12);
    dequeue(q);
    printQueue(q);
    return 0;
}

Speedtest TOT 3G

Speedtest TOT 3G 365 4.49/1.67Mbps seems high speed at Retro Live Cafe QSNCC.

AKB48 Twenty-Four Hours

ปีที่แล้วได้ข่าวว่าสาวๆ วง AKB48 กำลังจะออก photobook ในธีม “สาวแว่น” กำหนดออก 20 ธันวา รู้สึกว่าน่าสนใจดีแต่ตอนปลายปีดันวุ่นๆ แล้วก็ลืมไป

อาทิตย์ก่อนนึกขึ้นมาได้ว่ามันควรจะออกแล้ว ก็ไปส่องดูตามเว็บปรากฏว่ามีขายแล้วจริงๆ แต่ถ้าจะสั่งจากเว็บนอกอย่าง YesAsia ก็จะโดนค่าส่งแพงไปหน่อย โชคดีที่ร้านหนังสือ Kinokuniya บ้านเราเอาเข้ามาขายด้วย ราคา 1000 yen สั่งเข้ามาแล้วขาย 560 บาท บวกเพิ่มพอสมควรแต่ก็ยังถูกกว่าสั่งจากเมืองนอก (ถ้าค้นดูในเว็บซื้อออนไลน์ของ Kino จะขึ้นราคาไว้ที่ 483 บาท แต่จะมีค่าส่งอีก 150)

ปกหน้า

เนื้อใน

แว่น แว่น แว่น

ปกหน้า
ปกในด้านหน้า
Yuko Oshima
Minami Minegishi
Mariko Shinoda
แว่น x6
แว่นเท่
รวมหลายๆ คน
Tomomi Kasai
ปกในด้านหลัง

ใครสนใจก็ลองไปหาดูที่ Kinokuniya สาขา Central World ได้

00-array.c skeleton

#include <stdio.h>
#include <stdlib.h>
 
//--------------------------------------------------
int *newIntArray1D(int n, int initVal) {
    int *a = (int *) malloc(n*sizeof(int));
    int i;
    for (i=0; i<n; i++) {
        a[i] = initVal;
    }
    return a;
}
//--------------------------------------------------
int **newIntArray2D(int r, int c, int initVal) {
    // create 2D array of r rows and c column
    //return a;
}
//--------------------------------------------------
int *copyIntArray1D(int *a, int oldSize, int newSize) {
    // create another copy of a, having newSize members
    //return b;
}
//--------------------------------------------------
void printArray1D(int *a, int n) {
    int i;
    printf("[ ");
    for (i=0; i<n; i++) {
        printf("%d ", a[i]);
    }
    printf("]\n");
}
//--------------------------------------------------
void printArray2D(int **a, int r, int c) {
    //print 2D array
}
//--------------------------------------------------
int binarySearch(int d[], int n, int x) {
    // find the index of d[] that contains x, d must be sorted
    // return the index or -1 if not found
}
int sequentialSearch(int d[], int n, int x) {
    // find the index of d[] that contains x, d must be sorted
    // return the index or -1 if not found
}
//--------------------------------------------------
void swap(int d[], int a, int b) {
    int t = d[a];
    d[a] = d[b];
    d[b] = t;
}
//--------------------------------------------------
int max(int d[], int n) {
    // find the maximum value of d
}
int min(int d[], int n) {
    // find the minimum value of d
}
//--------------------------------------------------
int cmp(const void *a, const void *b) {
    return (const int *)a - (const int *)b;
}
void sortInt(int d[], int n) {
    qsort(d, n, sizeof(int), cmp);
}
//--------------------------------------------------
int main(int argc, char *argv[]) {
    int r = 3, c = 4;
    int **a = newIntArray2D(r, c, 0);
    int i, j;
    for (i=0; i<r; i++)
        for (j=0; j<c; j++)
            a[i][j] = i + j;
    printArray2D(a, r, c);
    return 0;
}

Here are some more usage example of Array data structure

1. max example

int main(int argc, char *argv[]) {
    //declare variable
    int n;
    int *a;
 
    //create array
    n = 3;
    a = newIntArray1D(n, 0);
    a[0] = -10;
    a[1] = -3;
    a[2] = -30;
 
    printf("max = %d\n",max(a,n));  // should display -3, not 0
    return 0;
}

2. search and min example

int main(int argc, char *argv[]) {
    //declare variable
    int n;
    int *a;
 
    //create array
    n = 5;
    a = newIntArray1D(n, 0);
    a[0] = 1;
    a[1] = -1;
    a[2] = 3;
    a[3] = 4;
    a[4] = -10;
 
    printf("Min = %d\n",min(a,n));  // should display -10
    printf("Found %d at position %d\n",2,sequentialSearch(a,n,2));  // should display -1
    printf("Found %d at position %d\n",4,sequentialSearch(a,n,4));  // should display 3
 
    sortInt(a,n);
    printArray1D(a,n);
    return 0;
}

struct example

#include <stdio.h>
#include <stdlib.h>
 
typedef struct Student_TAG {
    int year;
    int id;
    float gpax; // 4.00
} Student;
 
void printStudent(Student x) {
    printf("Year is %d\n",x.year);
    printf("ID is %d\n",x.id);
    printf("GPAX is %.2f\n",x.gpax);
}
 
void diffGPAX(Student a,Student b,Student *c) {
    (*c).gpax = (*c).gpax + (a.gpax + b.gpax) * 0.1;
}
 
Student createStudent(int year) {
    Student x;
    x.year = year;
    x.id = 0;
    x.gpax = 4.00;
    return x;
}
 
int main()
{
    int n = 100;
    Student *cp;
 
    cp = (Student *)malloc(n * sizeof(Student));
 
    cp[0].gpax = 10;
    cp[1].gpax = 10;
    cp[2].gpax = 0;
 
    diffGPAX(cp[0],cp[1],&cp[2]);
    printf("%.2f\n",cp[2].gpax);
 
 
    //printStudent(sukhum);
 
}

Reverse solution

#include <stdio.h>
#include <stdlib.h>
 
typedef int* ArrayOfInt;
 
// write reverse function here
void reverse(int n,ArrayOfInt *a) {
 
    int *t = (int *) malloc(n * sizeof(int));
 
    for (  int i = 0;i < n;++i) {
        t[i] = ( *a )[n - i -1];
    }
 
    *a = t;
    //This will, in fact, cause memory leak.
}
 
int main()
{
    int n;      // number of element
    ArrayOfInt a;     // array of integer
 
 
    //dynamic memory allocation
    scanf("%d",&n);
    a = (ArrayOfInt) malloc(n * sizeof(int));
 
    printf("Please enter %d integer(s).\n",n);
    for (int i = 0;i < n;++i) scanf("%d",&a[i]);
 
    reverse(n,&a);
 
    printf("Result are: ");
    for (int i = 0;i < n;++i) printf("%d ",a[i]);
 printf("\n");
}

2110497 Hands on Robotics, second semester, 2011

Information

Time: Every Wednesday, 13:00 – 16:00
Place: TBA.

Resource

  • First book to read, here. (updated)

Labs

Attachment Size
book1.pdf 69.66 MB
create-demo.rar 2.47 MB

bombik.com got Plagiarized (again)

เมื่อกี้ @bombik โทรมาบ่นว่าโดนก๊อปบทความอีกแล้ว(ความเดิม) คราวนี้มีคู่กรณีใหม่ โดยบทความที่โดนก๊อปเป็นเรื่องการสร้าง fan page ใน Facebook เข้าไปดูในหน้าเว็บที่เป็นปัญหาแล้วพบว่าบทความในเว็บดังกล่าวทำผิดสัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-ไม่ใช้เพื่อการค้า-ไม่ดัดแปลง 3.0 ประเทศไทย (BY-NC-ND) ที่ระบุไว้ในหน้าเว็บ bombik.com โดยไม่ระบุที่มาของบทความ และมีการแก้ไขดัดแปลงบทความให้แตกต่างไปจากต้นฉบับอีกด้วย

ขั้นตอนแรกคงทำเหมือนเดิมคือส่งเมล์ไปตามแอดเดรสที่ระบุไว้ในหน้าเว็บก่อน เนื้อหาของอีเมล์มีดังนี้

สวัสดีครับ

ผมพบว่ามีการนำข้อมูลเนื้อหาและรูปภาพจาก bombik.com ไปใช้ในเว็บ readyplanet.com โดยไม่มีการอ้างอิงที่มา ตาม URL ด้านล่างนี้ครับ

http://oxygen.readyplanet.com/Tips-And-Tricks/วิธีการทำ-FanPage-ใน-Facebook.html

โดยมีการดัดแปลงแก้ไขมาจาก http://bombik.com/node/299/วิธีการทำ-fanpage-ใน-facebook-และการทำปุ่ม-like

บทความทั้งหมดใน bombik.com ใช้สัญญาอนุญาตของครีเอทีฟคอมมอนส์แบบ แสดงที่มา-ไม่ใช้เพื่อการค้า-ไม่ดัดแปลง 3.0 ประเทศไทย (http://creativecommons.org/licenses/by-nc-nd/3.0/th/) โดยผู้ที่นำบทความไปใช้ต้องระบุที่มาของบทความด้วยเสมอ

ดังนั้นขอให้คุณแก้ไขบทความในเว็บ readyplanet.com ตามรายการข้างต้น โดยการระบุที่มาของบทความให้ถูกต้องด้วยครับ หรือหากไม่ต้องการอ้างอิงที่มา ทาง bombik.com ขอให้คุณลบบทความดังกล่าวออกทั้งหมด เนื่องจากเป็นการนำไปใช้โดยผิดสัญญาอนุญาตที่เจ้าของผลงานได้ระบุไว้ครับ

ศึกษิต
ผู้ดูแลระบบ และผู้ร่วมจัดทำเว็บไซต์ bombik.com

ส่งเมล์เสร็จ คลิกไปคลิกมาในเว็บ พบว่า oxygen.readyplanet.com น่าจะอยู่ในความรับผิดชอบของ คุณทรงยศ คันธมานนท์ “ผู้ก่อตั้งและพัฒนาเว็บไซต์สำเร็จรูป ReadyPlanet และเป็นผู้ริเริ่มทำนิตยสารออนไลน์ อย่าง Oxygen” เดี๋ยวเขียน blog นี้เสร็จ ว่าจะ tweet ไปแจ้งทาง @songyot ด้วย เผื่อจะได้รับความช่วยเหลือในการดำเนินการด้วยอีกทาง

ขอ quote ข้อความจาก ต้นกำเนิด Oxygen แหล่งอากาศสำหรับคนทำเว็บ มานิดนึง

ปกติเราจะใช้ทีมงานที่มีความสามารถ มีความรู้ทางด้านการเขียน และก็รักที่จะเขียน เพราะงานใน Oxygen เป็นงานเขียนค่อนข้างจะเยอะ เว็บไซต์นี้ก็จะคล้ายๆ กับสื่อมวลชนอันนึงเหมือนกัน เพียงแต่ว่ามันเป็นอยู่ภายในกลุ่ม ของคนที่เกี่ยวข้องกับ ReadyPlanet

ถ้านโยบายของทาง ReadyPlanet เป็นแบบข้อความข้างต้นจริง อาจจะถึงเวลาพิจารณาคุณภาพการทำงานของทีมงานแล้วล่ะ

UPDATE1: (8 Dec 2011 21:25)

ได้รับอีเมล์ตอบกลับอย่างไว รายละเอียดตามนี้

เรียนคุณศึกษิต

เจ้าหน้าที่ดำเนินการส่งเรื่องให้ฝ่ายที่เกี่ยวข้องและอยู่ระหว่างการตรวจสอบค่ะ หากมีความคืบหน้าประการใดจะแจ้งให้ทราบค่ะ

UPDATE2: (9 Dec 2011 11:16)

ได้รับอีเมล์อีกฉบับ แจ้งว่าจะระบุที่มาของข้อมูลไว้ท้ายบทความ

เรียน คุณศึกษิต

สวัสดีครับ ผมบุรินทร์ เกล็ดมณี ผู้บริหารของ ReadyPlanet.com ครับ

ผมได้รับทราบเรื่องที่เกิดขึ้นและต้องขออภัยเป็นอย่างสูงครับ เจ้าหน้าที่ของบริิษัทฯ จัดทำเว็บไซต์ oxygen เพื่อให้ความรู้ด้านออนไลน์และด้วยการขาดความละเอียด จึงมิได้ระบุอ้างอิงที่มาของข้อมูลเอาไว้ ผมจะได้เพิ่มเติมอ้างอิงที่มาของข้อมูลที่ท้ายบทความ โดยทันทีครับ

จึงเรียนมาเพื่อทราบ

บุรินทร์ เกล็ดมณี

UPDATE3: (9 Dec 2011 14:05)

ตอนนี้หน้าบทความดังกล่าวใน URL ที่ระบุไปในอีเมล์ตอนแรกเข้าไม่ได้แล้ว แต่ยังมีบทความเดิมอยู่ที่ URL http://oxygen.readyplanet.com/index.php?lay=show&ac=article&Id=539209408 และยังคงไม่มีการระบุที่มาของบทความ… รอดูกันต่อไป

UPDATE4: (9 Dec 2011 22:43)

คุณทรงยศตอบกลับมาในอีเมล์ แจ้งว่าคนที่เป็นคนลงบทความดังกล่าวไม่ได้ทำงานที่บริษัทมาสักระยะแล้ว และตรวจสอบแล้วพบว่าทีมงานได้แก้ไขบทความดังกล่าว โดยระบุที่มาเพิ่มเติมในส่วนท้ายของบทความแล้ว

Conclusion

สรุปว่า happy ending… ผม และ @bombik ขอขอบคุณ คุณทรงยศ และ คุณบุรินทร์ ที่ช่วยดูแลและดำเนินการให้เนื้อหาในเว็บไซต์เป็นไปตามสัญญาอนุญาตที่ระบุไว้ มา ณ ที่นี้ด้วยครับ

Trip 2011 – part 17

ในที่สุดก็มาถึงวันสุดท้ายในปารีส ขนาดว่าใช้เวลาไปตั้ง 6 วันแล้ว ยังเที่ยวได้ไม่ทั่วเลยด้วยซ้ำ มีอีกหลายที่ที่อยากไปแต่ก็ไม่ได้ไป ด้วยเหตุผลประการต่างๆ อยู่ไกลบ้าง เดินทางลำบากบ้าง ไม่มีเวลาบ้าง เช่น

  • L’Opéra – โรงละครโอเปรา ที่ด้านในมีสถาปัตยกรรมสวยงาม เคยมีอุบัติเหตุโคมไฟตกลงมาทับคนตาย จนเป็นแรงบันดาลใจให้นิยาย Phantom of the Opera
  • Les Invalides – สุสานนโปเลียน แหล่งประวัติศาสตร์ทางการทหารของฝรั่งเศส
  • La Defense – เขตเมืองใหม่ ที่ตั้งของประตูชัยใหม่ (Grand Arc)
  • Le Bon Marché – ตลาดบองมาเช่ (ซะที่ไหนเล่า!) ห้างเก่าแก่ที่ส่วนขายของกินมีวัตถุดิบระดับเทพเยอะมาก
  • Galeries Lafayette – ห้างหรูหรา ตกแต่งสวยงาม
  • Saint Sulpice – โบสถ์ที่มีเงื่อนงำจากในเรื่อง The Da Vinci Cide

ยังไม่รวม Louvre กับ d’Orsay ที่อยากมีเวลาไปอีกสักที่ละวันนึงเต็มๆ แต่เวลามีเท่านี้ก็ต้องทำใจ หวังว่าในอนาคตถ้ามีตังค์จะได้กลับมาอีก

ตอนขามา นั่งเครื่องบิน low cost ตอนขากลับก็ขอเปลี่ยนบรรยากาศเป็นนั่งรถไฟบ้าง โดยสายที่จะนั่งกลับลอนดอนนี้คือรถไฟสาย Eurostar ตั้งต้นที่สถานี Gare Du Nord ทางทิศเหนือของปารีส ซื้อตั๋วเอาผ่านหน้าเว็บตั้งแต่ที่เมืองไทย (ยิ่งซื้อแต่เนิ่นๆ ก็ยิ่งราคาถูก)

การเดินทางก็จะคล้ายๆ กับขึ้นเครื่องบิน เพราะเป็นการเดินทางข้ามประเทศ คือต้องมีการเช็คอิน ตรวจพาสปอร์ต ตรวจสัมภาระ ซึ่งรวมๆ ก็ใช้เวลาพอสมควร ถ้าใครจะเดินทางก็ต้องเผื่อเวลาเอาไว้ด้วย

สถานี Gare du Nord มีชานชาลาสำหรับ Eurostar แบ่งให้ชัดเจน

รถไฟออกแล้ว มองเห็นท้องทุ่งชนบทฝรั่งเศส

รถไฟวิ่งออกจากปารีส ผ่านสถานีที่ Lille แล้วก็มุดอุโมงค์ Channel Tunnel จากฝั่งภาคพื้นยุโรปลอดใต้ทะเลไปโผล่ที่เกาะอังกฤษ เป็นระยะทาง 50 กิโลเมตร

บนรถไฟมีอาหารขาย ก็สั่งมารองท้องเป็นมื้อสายสักหน่อย

อันนี้คล้ายๆ ข้าวผัดแกงเขียวหวานมั้ง

อันนี้เป็นพิซซ่า

ข้างในหน้าตาเป็นแบบนีี้

พิซซ่าอุ่นแล้วก็ประมาณนี้

อาหารบนรถไฟมันก็คืออาหารแช่แข็ง ที่ให้พนักงานเอาไปอุ่นก่อนเสิร์ฟน่ะเอง รองท้องพอได้ แต่จะเอาความอร่อยก็คงไม่ค่อยมีให้เท่าไหร่นัก

ตอนที่รถไฟมุดลงอุโมงค์ใต้น้ำ ไฟจะดับหมด มองเห็นแค่แสงไฟฉุกเฉินภายในอุโมงค์ผ่านไปแวบๆ เท่านั้น อยู่มืดๆ ประมาณ 15 นาทีก็จะออกมาโผล่ที่ปลายอีกด้าน

พอจะเข้าเขตอังกฤษก็ต้องเปลี่ยนซิม ถอด Orange ออก กลับมาใช้ยี่ห้อ 3 ที่ซื้อไว้ตั้งแต่ตอนมาถึง

สามซิม สามประเทศ

สภาพภายในตู้โดยสาร นั่งสบายกว่าเครื่องบินมาก

ใช้เวลาเบ็ดเสร็จจากปารีสสองชั่วโมงนิดๆ ก็วิ่งมาถึงลอนดอนแล้ว

สถานี St.Pancras International

สัญลักษณ์ต้อนรับกีฬาโอลิมปิกปี 2012

รูปปั้น Will & Kate

ออกมาจากสถานี St.Pancras แล้วก็ไปตามหาที่พักที่จองไว้ ซึ่งหาไว้แถวสถานีพอดี เดินออกมาประมาณ 10 นาทีก็ถึง

แบกเป้เดินหาที่พัก

หลังจากเช็คอิน เก็บของเข้าที่พัก นอนพักให้หายเหนื่อยได้หน่อยหนึ่ง ก็ถึงเวลาออกไปเที่ยวต่อ ที่หมายคือ Abbey Road สถานที่สำคัญแห่งหนึ่งในประวัติศาสตร์ดนตรี

สำหรับคนที่ไม่ได้เป็นแฟนเพลง The Beatles ก็อธิบายไว้นิดนึงว่า ที่นี่เป็นที่ตั้งของ Abbey Road Studio สถานที่บันทึกเสียงอัลบัมของวงดังๆ อย่าง The Beatles และ Pink Floyd มาก่อน

เหมือนจะเป็นทัวร์เด็กนักเรียน มากันหลายสิบคน

กำแพงแถวนั้นให้แฟนๆ ขีดเขียนกันได้ตามใจชอบ พอมันเริ่มเต็มแล้วจะมีคนเอาสีมาทาทับ

อาจจะเป็นเรื่องน่าเบื่อสำหรับคนที่ต้องขับรถผ่านแถวนี้ หรือว่าคนบ้านอยู่แถวนี้ เพราะว่าบรรดานักท่องเที่ยวที่มา ก็จะพยายามเดินข้ามทางม้าลายแล้วไปหยุดตรงกลางถนน ตั้งท่าให้เพื่อนถ่ายรูปให้ เลียนแบบปกอัลบั้ม Abbey Road ของ The Beatles จนหลายๆ ครั้งก็ทำให้การจราจรติดขัด

ถนนว่างเป็นเมื่อไหร่ ต้องมีคนเดินลงไปตั้งท่าถ่ายรูป

เดินเที่ยวถ่ายรูปจนพอใจแล้วก็กลับเข้ามาเดินเล่นแถวๆ Oxford Street

ร้าน Nike ไวมาก ตกแต่งร้านฉลองชัยชนะของบาร์เซโลนาเมื่อคืน

แผงขายของข้างทาง พอมีให้เห็นบ้าง

มื้อเย็นวันนี้ ไกด์คนไทยในอังกฤษที่ช่วยนำเที่ยว เกิด homesick อยากกินอาหารไทยขึ้นมา ก็เลยตกลงกันว่าไปหาร้านอาหารไทยกิน ค้นใน Google Maps ได้ร้าน Budsaba Eathai ที่อยู่แถวนั้นมา ก็เข้าไปลองดู

ส้มตำไทย (ในลอนดอนคงหาปูหรือปลาร้าลำบาก)

แกงอะไรสักอย่าง จำชื่อไม่ได้แล้ว

ผัดหมี่อะไรก็ไม่รู้ ลืม

กินแล้วไม่รู้สึกว่ากินอาหารไทยอยู่ รสชาติมันต่างจากอาหารไทยในบ้านเรามากๆ เข้าใจได้ว่าส่วนใหญ่ทำให้ฝรั่งกิน (ลูกค้าในร้าน 80% ไม่ใช่คนเอเชีย) คนเสิร์ฟก็เป็นฝรั่ง พูดไทยได้นิดหน่อย พอเห็นเป็นคนไทยมากิน ก็พยายามถามว่า เป็นยังไง อร่อยไหม ก็ต้องตอบไปตรงๆ ว่า มันห่างไกลจากที่คาดหวังไปหน่อย

บรรยากาศภายในร้าน จะเป็นโต๊ะใหญ่ๆ ลูกค้าแบ่งๆ กันนั่ง

กินเสร็จแล้วก็ขึ้น tube ไปโผล่ที่สถานี Tower Hill เพื่อไปดู Tower of London

นักดนตรีเปิดหมวกในสถานี

Tower of London เป็นปราสาทเก่า ตั้งอยู่ริมแม่น้ำ Thames มีประวัติอะไรหลายๆ อย่างเยอะเหมือนกัน แต่ถ้าจะเข้าไปดูต้องเสียเวลาสักประมาณครึ่งวันกว่าจะทั่ว ก็เลยเดินถ่ายรูปจากรอบนอกแทน ไม่ได้เข้าไปข้างใน

Tower of London ถ่ายจากระยะไกล

เดินเลย Tower of London มาทางแม่น้ำ Thames ก็จะเจอกับสะพาน Tower Bridge ที่มีชื่อเสียง แฟนการ์ตูนคินนิกุแมนคงคุ้นเคยกันดี

แฟนบอลบาร์เซโลนาที่ยังไม่กลับบ้าน อยู่ฉลองแชมป์กันในลอนดอน พบเห็นได้ทั่วไปตามสถานที่ท่องเที่ยว

Tower Bridge มุมกว้าง ตรงกลางสะพานสามารถเปิดให้เรือแล่นผ่านได้

จาก Tower Bridge มองไปที่ฝั่งใต้ของลอนดอน

เดินข้าม Tower Bridge มาอีกฝั่งหนึ่งจะเป็นเขตที่เรียกกันว่า More London วิวดี มีตึกสวยๆ ให้ถ่ายรูปเยอะ

ตัวหนังสือข้างหลังเขียนว่า From Our Rich Ancestry

The Scoop เป็นเวทีที่เป็นแอ่ง ต่ำกว่าระดับพื้น มีขั้นบันไดลงไป ตอนที่ไปเค้าแสดงละครกันอยู่

ตึกสวยดี แถวนี้มีพวกบริษัทหรูๆ อย่าง E&Y หรือ PWC อยู่ด้วย

มองกลับไปเห็น Tower Bridge ส่วนตึกด้านขวานั่นคืออาคาร City Hall

เดินถัดจากแถว City Hall มาจะเจอเรือรบจอดอยู่ลำนึง เป็นเรือรบเก่าชื่อว่า HMS Belfast เอามาจอดทิ้งไว้ แล้วตัดแปลงเป็นสถานที่ท่องเที่ยว ให้คนเสียเงินเข้าไปดูข้างใน

ถ้าเป็นสถานที่ท่องเที่ยวแบบเสียเงิน ก็ไม่ค่อยจะอยากเข้าไปดูสักเท่าไหร่

ตึกแถวนั้น ด้านนอกเป็นกระจกใส ไฟสวยดี เหมือนจะเป็นโรงพยาบาลอะไรสักอย่าง

สะพาน London Bridge (is falling down, falling down) ตอนกลางคืน มีไฟสีแดงด้วย

ถ้าเดินเลย London Bridge ไปอีกก็จะเป็นแถวๆ Borough Market ที่เคยไปเดินมาแล้วเมื่อวันก่อน ก็เลยเดินเลี้ยวข้ามสะพาน London Bridge ไปขึ้น tube สถานี Monument กลับที่พัก

เดินข้าม London Bridge กลับมาฝั่งเดิม

ตอนออกมาจากสถานี King’s Cross รู้สึกหิวๆ (คงเพราะเดินเยอะ) ก็เลยแวะร้านจีนแถวสถานี ซื้อของกินใส่กล่องกลับมากิน ที่อังกฤษจะต่างจากบ้านเราคือ ถ้าซื้อใส่กล่องกลับมากินที่บ้าน จะราคาถูกกว่านั่งกินในร้าน

หมูย่างธรรมดา

หน้าตาคล้ายๆ ก๋วยเตี๋ยวเส้นหมี่บ้านเรา

น้ำซุปเอาไว้กินกับเส้นหมี่

ปิดท้ายด้วยเบียร์ราคาถูก ผู้สนับสนุนฟุตบอลถ้วย Carling Cup อย่างเป็นทางการ

อาจจะดูแปลกๆ ที่ไปเที่ยวอังกฤษแต่กินข้าวร้านจีนซะเยอะ เหตุผลก็คือว่ามันถูกกว่าร้านอย่างอื่นอย่างมีนัยยะสำคัญน่ะแหละ

ลิงก์ตอนเก่าๆ

Trip 2011 – part 16

เข้าสู่วันที่ 6 ของการอยู่ในปารีส วันนี้มีที่ต้องไปหลายจุด ก็เลยต้องรีบตื่นแต่เช้า ที่หมายแรกเริ่มต้นที่สถานที่ท่องเที่ยวที่เปิดเช้าที่สุดในทั้งหมด นั่นคือ สุสาน Père Lachaise ในเขต 20

อาจจะฟังดูแปลกๆ ที่มาเที่ยวสุสาน แต่ว่าสุสานอันนี้ไม่เหมือนป่าช้าบ้านเรา บรรยากาศไม่น่ากลัวแบบนั้น จะออกแนวสงบๆ มากกว่า

จุดที่ทำให้สุสาน Père Lachaise นี้กลายมาเป็นแหล่งท่องเที่ยวได้คือ ที่นี่นอกจะเป็นสุสานธรรมดาแล้วเป็นที่ฝังศพบุคคลสำคัญทั้งคนฝรั่งเศสและคนชาติอื่นไว้หลายคน หลุมศพของคนดังๆ ก็มักจะหน้าตาสวยๆ ทั้งนั้นเลยด้วย

บรรยากาศภายในสุสาน

สุสานนี่ก็ไม่ใช่เล็กๆ พื้นที่ทั้งหมดประมาณ 278 ไร่ จะเปรียบเทียบให้เห็นภาพก็ราวๆ 3/4 ของสวนลุมบ้านเรา เส้นทางเดินภายในมีตัวเลขบอกตรอกซอกซอยทั้งหมด แต่ก็ควรมีแผนที่ติดมือไว้ ไม่อย่างนั้นหลงทางแน่นอน

ถ้าไม่คิดจะเดินชิลๆ อยากจะมาดูแค่บางหลุมศพ แนะนำให้หาข้อมูลมาก่อนว่าจะดูของใครบ้าง แล้วดูป้ายที่อยู่ด้านหน้าทางเข้า จะมีชื่อคนดังๆ พร้อมหมายเลขบอกตำแหน่งให้ว่าใครอยู่ตรงไหน จดหมายเลขตำแหน่งไว้ให้เรียบร้อย หาเส้นทางที่สั้นที่สุดที่จะต้องเดิน แล้วค่อยเข้าไป เพราะต้องเดินค่อนข้างเยอะ และภายในก็ไม่ค่อยมีจุดให้นั่งพักเหนื่อยดีๆ สักเท่าไหร่ ร้านค้าขายของก็ไม่มี ควรเตรียมเสบียงและน้ำใส่ขวดติดไปด้วย

Delacroix

จิตรกร Eugene Delacroix ผลงานดังๆ ก็ภาพ Liberty Leading People ที่ Coldplay เอาไปเป็นปกอัลบั้ม

Theodor Gericault จิตรกรชื่อดังอีกคน มีภาพ The Raft of the Medusa อยู่ที่หลุมศพด้วย

นอกจาก Delacroix กับ Gericault แล้วยังมีศิลปินคนดังอีกหลายคน (เห็นชื่อผ่านตาจากที่ Louvre, d’Orsay ก็เยอะ) เช่น Ingres, Jacques Louis David, Camille Pissarro, Georges Seurat

หลุมศพที่ดูจะชื่อดังที่สุดในนี้คือหลุมศพของ Jim Morrison นักร้องนำของวง The Doors มีคนเอาดอกไม้มาคารวะหลุมศพอยู่เรื่อยๆ

หลุมศพ Jim Morrison ธรรมดากว่าที่คิด

ถ้าจะให้ได้อารมณ์ ควรเปิดเพลง I’m Jim Morrison, I’m Dead ของ Mogwai ไปด้วย

Mireille Albrecht ใครก็ไม่รู้ แต่หลุมศพเก๋ดี

นอกจากหลุมศพแบบเป็นคนๆ ไปแล้วก็มีที่สร้างสำหรับระลึกถึงเหตุการณ์ด้วย

อันนี้ของเหยื่อค่ายกักกันที่ Sachsenhausen

The Communard's Wall เป็นจุดที่ฝ่ายซ้ายฝรั่งเศส 147 คนโดนยิงตายและทิ้งศพไว้

อีกหลุมหนึ่งที่ดังไม่แพ้ Jim Morrison ก็คือหลุมศพของ Oscar Wilde นักเขียนคนดัง (ซื้อ Dorian Gray มาดองไว้นานมากแล้วยังไม่ได้อ่านสักที) เป็นหลุมศพที่อยู่ในหนัง Paris Je t’aime ตอนที่ Wes Craven กำกับด้วย

รอยลิปสติกมากมาย

มีแต่คนมาเขียนไว้เต็มไปหมดจนแทบไม่เห็นชื่อ Oscar Wilde

สังเกตว่าหลังจากหนัง Paris Je T’aime ออกฉายในปี 2006 รอยลิปสติกก็เพิ่มขึ้นมาก ลองดูเทียบกับในคลิปด้านล่างนี่ก็ได้

นอกจากนี้ก็ยังมีคนดังอื่นๆ อีกหลายคนอย่าง Édith Piaf (นักร้องอมตะตลอดกาลของฝรั่งเศส) หรือ Marcel Proust (คนเขียน In Search of Lost Time) ก็อยู่ที่นี่
ที่จริงแล้วปารีสยังมีสุสานอีกแห่งหนึ่งที่มีคนดังเยอะเหมือนกันคือสุสาน Montparnasse อยู่แถวๆสวน Luxembourg ที่ไปเมื่อวันก่อน มีหลุมศพของคนดังเยอะเหมือนกัน เช่น Jean Paul Sartre (นักปรัชญา), Simone de Beauvoir (นักปรัชญา), Phillipe Leotard (นักปรัชญา), Eric Rohmer (ผู้กำกับหนัง) แต่ด้วยเวลาจำกัด (เหตุผลเดิมๆ) ก็เลยไม่ได้ไป

จบจาก Père Lachaise แล้วก็ไปที่เป้าหมายถัดไปคือ La Cinémathèque

ระหว่างทางเจอร้านอาหารไทย แต่ก็ไม่รู้จะมากินอาหารไทยถึงปารีสทำไม

แถวๆ La Cinémathèque เจอร้านจีนถูกๆ ก็แวะเข้าไปกินมื้อเที่ยงรองท้อง

ซุปอะไรสักอย่าง มีลูกชิ้น กินกับข้าว

อันนี้น่าจะเป็นเนื้อทอดกระเทียม

กินอิ่มแล้วก็เดินต่อมาถึง Cinémathèque จนได้

La Cinémathèque นี่ก็จะประมาณหอภาพยนตร์แห่งชาติ มีเก็บ film archive, มีที่ให้ทำ workshop, มีฉายหนัง แล้วก็พิพิธภัณฑ์เกี่ยวกับหนัง

ด้านหน้า La Cinémathèque

ส่วนจัดแสดงที่เป็นประวัติศาสตร์ภาพยนตร์ ใช้ Museum Pass ผ่านได้ฟรี (ใช้ให้คุ้ม) ก็จะมีแสดงประวัติศาสตร์ ที่มาที่ไป พัฒนาการเรื่องภาพเคลื่อนไหว ตั้งแต่สมัยก่อน มีอุปกรณ์สมัยเก่าๆ ให้ลองเล่น รวมถึงเทคนิคการถ่ายทำ, Costume, และตัวอย่างจากหนังฝรั่งเศสเก่าๆ ด้วย

จาก Metropolis

ขนาดของส่วนที่จัดแสดงไม่ใหญ่มาก ประมาณ TCDC บ้านเรา เดินประมาณชั่วโมงหนึ่งก็ทั่ว (มี Audio guide บริการด้วย) ทีแรกกะว่าจะดูนิทรรศการเวียน ซึ่งจังหวะที่ไปเป็นนิทรรศการ Stanley Kubrick พอดี แต่เนื่องจากว่า late จากแผนเดิมไปมากแล้ว ยังมีที่ต้องไปอีกเยอะ  (และต้องจ่ายค่าเข้าเพิ่ม) ก็เลยต้องตัดใจ

โปสเตอร์นิทรรศการ Kubrick

Metro สถานี Madeleine มี stained glass ข้างในด้วย

ขึ้นมาจาก Metro สถานี Madeleine เพื่อมุ่งหน้าตรงไปที่สวน Tuileries

อะไรไม่รู้ อยู่ตรง Place de la Madeleine

รถหน้าตาย้อนยุค

ร้านขายขนม Laduree ก็ยังมีลูกค้าคึกคัก

ระหว่างทาง จะผ่าน Place de la Concorde เป็นลานกว้าง เมื่อก่อนมีชื่อว่า Place de la Revolution มีความสำคัญทางประวัติศาสตร์คือ ในยุคปฏิวัติฝรั่งเศส ที่นี่เป็นที่ตั้งของกิโยติน และเป็นที่ประหารพระเจ้าหลุยส์ที่ 14, Marie Antoinette รวมถึง Robespierre ด้วย

ปัจจุบันเป็นลานกว้าง มีเสา Obelisk ตั้งอยู่ ด้านหลังที่เห็นไกลๆ นั่นคือหอไอเฟล

รถสามล้อถีบสไตล์ปารีสก็มี แต่ไม่รู้ว่าราคาจะแพงกว่าบ้านเราแค่ไหน

เดินจาก Place de la Concorde มาหน่อยนึงก็ถึง Jardin des Tuileries

สวน Tuileries คนเยอะมาก ฝุ่นเยอะมาก

สวน Tuileries นี่ที่จริงแล้วก็อยู่ติดๆ กับ Louvre แต่วันที่ไป Louvre ก็ใช้เวลาไปซะเต็มวัน ไม่เหลือมาดู l’Orangeries ซึ่งเป็นพิพิธภัณฑ์เล็กๆ ที่อยู่ในสวนนี่

งานที่แสดงใน l’Orangeries นี่ส่วนใหญ่ก็เป็นภาพเขียน Impressionism (อีกแล้ว) ก็มีงานของคนดังๆ หลายคน เดินดูง่าย ไม่สับสน ขนาดเล็กกว่า d’Orsay ที่ไปเมื่อวาน เดินสบายๆ

คอลเลคชันไม่ใหญ่มาก แต่คุณภาพคับแก้ว

สิ่งหนึ่งที่ดีและน่าเอาอย่างของประเทศตะวันตก (ทั้งอังกฤษและฝรั่งเศส) คือถ้าเป็น senior citizen เอ้อ… แปลว่าอะไรดี ไม่ใช่ราษฎรอาวุโสนะ แต่เป็นพลเมืองของรัฐที่อายุมากกว่าเกณฑ์ที่กำหนดแล้ว ก็จะได้สวัสดิการหลายๆ อย่าง เช่น ซื้อตั๋วรถได้ในราคาถูก, เข้าพิพิธภัณฑ์ได้ฟรีหรือได้ส่วนลด ฯลฯ

ลุงป้าแก่ๆ มาดูงานศิลปะด้วยกัน ก็น่ารักดี

ผลงานชิ้นเด่นที่แสดงใน l’Orangeries คือภาพ Water Lilies ของ Claude Monet แสดงยาวบนกำแพงในห้องรูปไข่สองห้อง

Water Lilies

ออกจาก l’Orangeries และสวน Tuileries แล้วก็เดินข้ามฝั่งมายังฝั่งใต้ของแม่น้ำ Seine โดยใช้สะพาน Pont des Arts

Pont des Arts กูเกิลทรานสเลตแปลให้ว่า Bridge of Arts

Pont des Arts เป็นสะพานไม้สำหรับให้คนเดินข้าม ดูๆ ไปก็เหมือนที่พักผ่อนหย่อนใจแบบหนึ่ง มีทั้งคนเล่นดนตรี วาดภาพ ขายของ นั่งคุย กินขนม ฯลฯ

กิจกรรมหนึ่งที่มีคนมาทำกันเยอะคือ ถ้าเป็นคู่รักมาด้วยกัน มักจะเอาแม่กุญแจมาคล้องที่สะพาน อธิษฐานแล้วโยนลูกกุญแจลงแม่น้ำ ไม่รู้เหมือนกันว่าวัฒนธรรมนี้มันมีที่มาที่ไปยังไง แต่เทศบาลปารีสก็ต้องคอยถอดเอารั้วบนสะพานมาเปลี่ยนอยู่เรื่อยๆ เมื่อแม่กุญแจมันเต็ม

แม่กุญแจหลากหลายแบบ

สองหนุ่มนี่มานั่งเล่นกีตาร์

ข้ามละพานมาแล้ว เดินเลียบริมแม่น้ำก็มีแผงของขายให้นักท่องเที่ยวได้เสียเงินกันตลอดแนว

หนังสือการ์ตูนเก่า

Pont แปลว่า สะพาน, Neuf แปลว่า 9

เจอ Messi ด้วย

วันที่เดินเที่ยวอยู่นี่เป็นวันที่ 28 พฤษภาคม ซึ่งเป็นวันที่ฟุตบอล UEFA แชมเปี้ยนส์ลีก รอบชิงชนะเลิศกำลังจะเตะกันที่สนามเวมบลีย์ที่ลอนดอน ทำให้เห็นคนใส่เสื้อบาร์เซโลนาเดินกันขวักไขว่ ส่วนอีกทีมนึงที่จะเตะกับบาร์เซโลนานั่นไม่ค่อยมีแฟนบอลใส่เสื้อให้เห็นสักเท่าไหร่

บริเวณที่กำลังเดินอยู่นี่เรียกกันว่า Latin Quartier เป็นโซนที่ร้านมีอาหารให้เลือกกินเยอะและหลากหลาย

ร้านอาหารเยอะ คนเยอะ

รู้สึกว่าอาหารที่มันย่างแบบหมุนๆ นี่น่ากินไปซะหมด

บาร์บีคิวก็มี

เวลาเดินผ่านบางร้าน เจอเศษจานแตกหน้าร้านก็ไม่ต้องตกใจ เป็นธรรมเนียมเก่าของการกินอาหารกรีก

มีคนเอาจานมาปาทิ้งให้ดูกันเห็นๆ เลย

ฝ่าดงผู้คนและร้านอาหารมาได้แล้วก็จะเจอกับร้านหนังสือ Shakespeare and Company ร้านหนังสือชื่อดัง ถ้าใครได้อ่าน Time Was Soft There (แปลไทยแล้วในชื่อ ปารีส / พำนัก / คน / รัก / หนังสือ ) หรือได้ดูฉากเปิดในหนัง Before Sunset ก็คงจะอยากมาที่นี่สักหน

หน้าร้าน ก็เป็นร้านหนังสือเล็กๆ เก่าๆ ธรรมดา

ด้านหน้ามีที่ให้นั่งอ่านได้

ด้านในร้าน

เนื่องจากอ่านภาษาฝรั่งเศสไม่ออก และไม่มีหนังสืออะไรอยากได้เป็นพิเศษ ก็ออกมาโดยไม่ได้ซื้ออะไรติดมือมาสักเล่ม ขี้เกียจแบก และของเก่าที่บ้านก็ยังอ่านไม่หมดเลยด้วยซ้ำ

ความรู้สึกวันนี้เหมือนชะโงกทัวร์มาก มีแค่ Père Lachaise กับ l’Orangerie ที่พอมีเวลาเดินเอาบรรยากาศบ้าง

ที่ต่อไปที่จะไปคือ Musée du quai Branly เป็นพิพิธภัณฑ์ที่จัดแสดงงานศิลปะ วัฒนธรรม อารยธรรมจาก เอเชีย, อาฟริกา, โอเชียเนีย, และอเมริกา หรือง่ายๆ ก็คือวัฒนธรรมที่ไม่ใช่ยุโรปน่ะเอง

ด้านหน้า Musée du quai Branly

Musée du quai Branly นี่เป็นพิพิธภัณฑ์เปิดใหม่ (เพิ่งเปิดเมื่อปี 2006) ทำให้การออกแบบดูทันสมัย ไม่สับสน มีการแบ่งโซนต่างๆ อย่างดี

ทางเดินที่นำไปยังส่วนแสดงงาน เป็นฉายภาพเคลื่อนไหวของคำศัพท์ต่างๆ ไหลไปตามทางเดิน

งานที่จัดแสดงส่วนใหญ่จะเป็นของพื้นเมืองแปลกๆ เช่น รูปเคารพ อุปกรณ์ประกอบพิธีกรรม หรืออาวุธ ของชนพื้นเมืองจากหมู่เกาะในแถบแปซิฟิก บางอย่างก็ดูแปลกตา บางอย่างก็ดูหลอนๆ รวมกับการจัดแสง และสถานที่ที่ไม่ค่อยจะมีคนอยู่แล้วยิ่งดูหลอนหนักเข้าไปอีก

ของแปลกที่ปกติก็ไม่ค่อยจะมีโอกาสได้เห็น

พิพิธภัณฑ์มี App สำหรับ iPhone / iPad / Android เอาไว้ให้โหลด ช่วยเป็นไกด์ตอนเดินดูงานได้

หนังสือนำเที่ยวบางเล่มบอกว่า ไม่ควรพาเด็กเล็กๆ มาเที่ยวที่นี่

เนื่องจาก Musée du quai Branly นี่อยู่ในเขต 7 ใกล้กับหอไอเฟลนิดเดียว โปรแกรมวันนี้ก็เลยจัดหอไอเฟลไว้เป็นลำดับสุดท้าย จากที่วันแรกเห็นในระยะไกลมาแล้ว

เดินทะลุด้านหลังพิพิธภัณฑ์ออกมานิดเดียวก็เจอหอไอเฟลแล้ว

เดินไปถ่ายรูปหอไอเฟลได้แป๊บนึงก็รู้ตัวว่าต้องไปหาของกินก่อน เพราะบอลใกล้จะมาแล้ว ก็เลยแวะร้านจีน (ที่ดูเหมือน) ราคาถูกแถวนั้น รองท้องมื้อเย็นไปก่อน แล้วไปหา Cafe นั่งสั่งเบียร์ Kronenberg 1664 มา Pint หนึ่ง เพื่อดูบอล (รอบชิง UEFA แชมเปี้ยนส์ลีกตามเวลาบ้านเราเตะกันตอน 01:45 แต่ที่ปารีสนี่ก็ 2 ทุ่ม 45 เท่านั้นเอง)

Cafe หัวมุมถนน ใกล้สวน Champ de Mars เป็นทำเลใกล้หอไอเฟล ทำให้ราคาเบียร์แพงขึ้นไปมากกว่าเขตอื่นๆ แต่ก็คิดเสียว่าเอาบรรยากาศการเข้ามาดูบอลใน Cafe ในปารีส ปรากฏว่าบรรยากาศต่างกับใน pub ของอังกฤษลิบลับ ที่นี่ดูบอลกันเงียบๆ ไม่ส่งเสียงเชียร์อะไรเท่าไหร่ อาจจะเป็นเพราะความต่างระหว่าง Cafe กับ pub และทีมจากฝรั่งเศสไม่ได้ลงเตะด้วย (หรือว่าปารีเซียงเป็นพวกรักษามาดเวลาอยู่ใน Cafe ก็ไม่แน่ใจเหมือนกัน)

บอลจบด้วยสกอร์ 3-1 แฟนบาร์เซโลนาก็ดีใจกันไป คาดว่าในลอนดอนคงอยู่กันเยอะ แต่ในปารีสนี่ไม่ค่อยมีให้เห็น (แต่เท่าที่สังเกตคนส่วนใหญ่ใน Cafe ก็เชียร์บาร์เซโลนานะ)

ออกมาถ่ายรูปหลังบอลจบ เวลาราวๆ เกือบห้าทุ่ม แต่คนแถว Champ de Mars ก็ยังเดินกันขวักไขว่อยู่

ไอเฟลยามค่ำคืน มุมจากสวน Champ de Mars

ปกติทุกชั่วโมง จะมีโชว์การแสดงแสงไฟบนหอไอเฟลด้วย กินเวลาประมาณ 10 นาที เป็นประกายระยิบระยับ สวยดี (ประมาณในคลิปนี้)

ด้านล่างก็ยังมีคนต่อคิวขึ้นไปข้างบนอยู่

การขึ้นหอไอเฟล สามารถขึ้นไปได้สองทาง คือเดินขึ้น หรือไม่ก็ขึ้นลิฟต์ ซึ่งถ้าเดินขึ้น จะขึ้นได้แค่ชั้นสอง แต่ถ้าขึ้นลิฟต์จะไปได้ถึงชั้นสูงสุด และทั้งสองวิธีล้วนเสียเงิน (แพงด้วย!) แถมยังมีคนต่อคิวยาวเหยียดแบบนี้ ก็เลยไม่ขึ้นดีกว่า ถ่ายรูปเอาแถวข้างล่างนี่แหละ

ถ่ายจากมุมข้างใต้ ใช้เลนส์ Lumix G 9-18mm (ทริปนี้ใช้คุ้มมาก)

ป้ายไฟ สลับภาษาฝรั่งเศส-อังกฤษได้ Bienvenue แปลว่า Welcome

ในมุมมองส่วนตัว คิดว่าหอไอเฟลมันเป็นสิ่งก่อสร้างที่ค่อนข้างมหัศจรรย์อยู่เหมือนกัน มีแรงดึงดูดคนที่ถือกล้องให้ถ่ายมันได้ในหลายๆ มุม แต่ละมุมก็จะได้ความรู้สึกต่างกันไป คิดๆ ดูแล้ว อาจจะเป็นสิ่งก่อสร้างที่มีคนถ่ายภาพไว้มากที่สุดอันหนึ่งในโลกเลยก็ว่าได้

ชักภาพเอาไว้ไปใช้เป็น avatar ใน facebook, twitter ได้

จบวันที่ 6 ในปารีส วันรุ่งขึ้นเป็นวันสุดท้ายในปารีสแล้ว

ลิงก์ตอนเก่าๆ

Kimju — Once is More Than Enough

เรื่องของเรื่องคือเมื่อวานตอนเย็นตั้งใจจะพา @bombik กับเพื่อนไปกินบุฟเฟต์สุกี้ญี่ปุ่นที่ร้าน Torii แต่ปรากฏว่าปล่อยไก่ตัวเบ้อเริ่ม เพราะไม่รู้ว่ามันปิดทุกวันอังคาร T_T เลยเดินมึนๆ ไปหาของกินที่เมเจอร์รัชโยธินแทน

เดินไปเดินมาก็ตัดสินใจเข้าร้านบุฟเฟต์ปิ้งย่างเกาหลีชื่อ Kimju ที่อยู่ใกล้ๆ Box Office ด้วยเหตุผลง่ายๆ ว่า “ยังไม่เคยลอง” บวกกับราคาบุฟเฟต์ที่ติดอยู่หน้าร้าน 288.- บาท ดูแล้วก็ค่อนข้างโอเค เลยตกลงเข้าไปลองกินกัน

Kimju Buffet

สำหรับคนที่หาข้อมูลว่าร้านนี้เป็นอย่างไร น่าไปลองชิมหรือไม่ ขอตอบแบบย่อๆ ไว้ก่อนเลยว่า

“มัน กาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาาากส์ มาก”

เสิร์ชหาร้านอื่นได้เลยครับ เวลาในชีวิตของคุณมีค่าเกินกว่าจะไปนั่งกินอาหารในร้านพรรค์นี้ แต่ถ้าอยากรู้ว่ามันกากยังไง เชิญอ่านต่อได้ตามสะดวก

กาก 1: พนักงาน นั่งโต๊ะปุ๊บ เราถามก่อนเลยว่า 288.- นี่มีบวกอะไรอีกมั้ย ได้คำตอบว่าไม่บวกแล้ว ราคานี้เลย แต่พอเช็คบิลออกมาปรากฏว่าโดน service charge ไปอีก 10% จริงๆ คือไม่รอบคอบเองด้วย เพราะเหมือนจะมีดอกจันตัวเล็กๆ อยู่ในเมนู แต่ไม่ได้อ่าน

เครื่องเคียงและน้ำจิ้ม

กาก 2: กิมจิ อย่างแรกที่มาเสิร์ฟบนโต๊ะคือเครื่องเคียงและน้ำจิ้ม เห็นสีกิมจิครั้งแรกก็คิดอยู่ในใจว่าไม่น่าอร่อย แต่พอกินเข้าไปแล้ว กลายเป็นว่า โคตรจะไม่อร่อย! จบกัน กินปิ้งย่างเกาหลี แต่กิมจิไม่อร่อย

อยากจะเดินออกจากร้านซะเดี๋ยวนั้น แต่เสียดายตังค์ เพราะกินของมันไปแล้ว คงไม่ปล่อยให้พวกผมเดินออกไปโดยไม่จ่ายค่าบุฟเฟต์ เลยต้องก้มหน้าก้มตากินต่อไป

กาก 3: น้ำจิ้ม น้ำจิ้มสองอันที่ให้มาตามรูปด้านบน อันนึงเหมือนจะเป็นเต้าเจี้ยว อีกอันเหมือนเป็นพริกในน้ำมัน รสชาติก็ประมาณว่า ลองเอาเนื้อย่างจิ้มกินอย่างละคำ แล้วหลังจากนั้นก็กินแต่เนื้อย่างเปล่าๆ โดยไม่ได้แตะน้ำจิ้มอีกเลย ไม่ใช่ว่ากินเนื้อย่างเปล่าๆ แล้วมันอร่อย แต่เป็นเพราะน้ำจิ้มมันไม่ได้ช่วยเพิ่มรสชาติอะไรขึ้นมาเลย นอกจากความเลี่ยน -*-

มากินคราวนี้จัดเต็ม โดยบวกเพิ่มอีก 100 รวมราคาเป็น 388.- บาท เพื่อจะได้กิน “เนื้อโคนุ่มพิเศษ” และ “อาหารทะเล” ก่อนจะพบว่า…

อาหารทะเล

กาก 4: อาหารทะเล กุ้งนี่นอนมาแบบกะปลกกะเปลี้ย แค่คีบขึ้นมา หัวกับหางก็หลุดออกจากตัว ท่าทางจะตายมาหลายรอบกว่าจะได้มาอยู่บนจาน แน่นอนว่าหาความสดไม่ได้แม้แต่น้อย ส่วนเนื้อปลากินไปนิดหน่อย บอกไม่ได้ว่าสดหรือเปล่า หมึกไม่ได้กิน แต่คาดว่าจะอยู่ในอาการเดียวกันกับกุ้ง

เนื้อหมู

กาก 5: เนื้อ, หมู เนื้อกับหมูที่เสิร์ฟมาบนจาน หน้าตาแตกต่างจากในเมนูอย่างสิ้นเชิง สีคล้ำๆ เละๆ แหยะๆ ถ้าไม่เละก็คือมาเป็นแบบแข็งเป๊ก ประมาณว่าละลายน้ำแข็งยังไม่เสร็จดี รสชาติเหมือนไม่ได้ผ่านการหมักใดๆ มาทั้งสิ้น บวกกับน้ำจิ้มไม่อร่อย ก็ต้องกินแบบเปล่าๆ กันไป แถมเนื้อนุ่มพิเศษก็ไม่ได้นุ่มอย่างที่คาดหวังไว้ (มาถึงขั้นนี้ยังจะหวังอะไรอีก >_<)

เนื้อวัว

กาก 6: น้ำมัน!? เนื้อ, หมู ทุกจาน จะมาพร้อมน้ำราดอะไรซักอย่างที่ดูแล้วน่าจะเป็นน้ำมัน ไม่รู้จะใส่อะไรมานักหนา ประโยชน์อย่างเดียวที่เห็นคือ ยิ่งกินยิ่งเลี่ยน น่าจะทำให้อิ่ม(อยากอ้วก)ไวขึ้น ยิ่งจานหลังๆ ยิ่งราดมาจนท่วม แสรดดด

เป็นการกินบุฟเฟต์ที่ทรมานโคตรๆ ครั้งแรกในชีวิต คิดอยู่ในใจตลอดเวลาที่นั่งกินว่า ขอให้พนักงานมันเดินมาถามทีเถอะว่า “อาหารอร่อยมั้ยครับ” กรูจะได้ตอบอย่างไม่ลังเลว่า “ไม่อร่อยเลยครับ แต่เสียดายตังค์เลยต้องกิน”

อาหารเพียงอย่างเดียวนอกจากข้าวกับเครื่องดื่ม ที่พอจะเหมือนมนุษย์มนากับเขาบ้างก็คือ “ซุป” ที่รสชาติโอเค ได้อาศัยเติมไปสามสี่รอบ ช่วยให้อิ่มได้โดยไม่ต้องทรมานจากการกินปิ้งย่างจนเกินไป

ซุป

สรุปว่าแปลกใจมากที่ร้านอาหารที่ราคาสวนทางกับรสชาติแบบ exponential ขนาดนี้มันอยู่รอดมาได้ แถมมีหลายสาขาอีกต่างหาก หรือบางทีอาจจะเป็นผมเองที่ไม่ซาบซึ้งกับรสชาติอาหารเกาหลีอย่างแท้จริงก็เป็นได้ -_-a

กินสามคนพันห้านี่เปลี่ยนเป็นกินฟูจิหรือ MK แบบเต็มสูบได้เลยนะ เผลอๆ จะเหลือเงินทอนด้วยซ้ำ =.=

Trip 2011 – Part 15

ปารีสวันที่ 5 โปรแกรมวันนี้เริ่มต้นกันที่โบสถ์ Sacre Coeur ซึ่งอยู่เขต 18 ไกลจากที่พักพอสมควร การเดินทางก็ Metro เหมือนเดิม ไปลงที่สถานี Abbysses

บรรยากาศในตู้ขบวน Paris Metro

เขต 18 ของปารีสอยู่ทางตะวันตกเฉียงเหนือ ภูมิประเทศมีลักษณะเป็นเนินเขา และโบสถ์ Sacre Coeur นี่ก็อยู่บนเนินนั่นแหละ ซึ่งวิธีขึ้นไปก็มีให้เลือกระหว่างขึ้นรถรางไป หรือไม่ก็เดินขึ้นบันได

ทางขึ้นรถราง แน่นอนว่าเสียตังค์

เนื่องจากอากาศดี และไม่อยากเสียเงินค่ารถราง ก็เลยใช้วิธีเดินขึ้นเนินมาเรื่อยๆ ตามอย่างหนัง Amélie ฉากในคลิปข้างล่าง

อากาศดี เดินได้ชิลๆ

ข้อควรระวังนิดนึงของการเดินขึ้นคือ จะมีแก๊งขายของ พยายามจะมาบังคับขายของให้นักท่องเที่ยว ก็พยายามเดินหลีกๆ เอา

มองกลับลงไปด้านล่าง

ขึ้นมาถึงแล้ว ด้านหน้ามีรูปปั้น Joan of Arc อยู่ด้วย

โบสถ์ Sacre Coeur มีลักษณะคือด้านนอกเป็นสีขาวเด่นทั้งหลัง ถ่ายรูปตัดกับท้องฟ้าสีฟ้าแล้วก็สนามหญ้าสีเขียวๆ ได้สวยดี ส่วนข้างในก็เป็นโบสถ์ธรรมดา ไม่มีอะไรพิเศษ

มองลงไปเห็นปารีสทั้งเมือง

เดินถ่ายรูปจนทั่วแล้ว ก็เดินต่อลงมาด้านล่าง จะเป็นย่านที่เรียกกันว่ามงมาร์ต (Montmartre) ในอดีตเป็นที่อยู่อาศัยของพวกศิลปินดังหลายคน และบรรยากาศในปัจจุบันก็ออกไปในสไตล์เก๋ๆ ติดดินหน่อยๆ

ตลาดขายของ

ภาพล้อนโปเลียน ดัดแปลงจากภาพ Napoleon Crossing the Alps โดย Jacques Louis David

ภาพวาดเจ้าชายน้อยบนประตู

นักดนตรีเปิดหมวก

ย่าน Montmartre นี่ยังเป็นฉากที่ถ่ายทำหนังหลายเรื่อง เช่น Amélie, La Vie en Rose, Moulin Rouge

Graffiti ยังมีให้เห็นทั่วไป

เดินลงมาจนถึงด้านล่างของเนินเขาจะเป็นตลาด มีของกินขายเพียบ

เป็ดหรือห่านก็ไม่รู้เหมือนกัน

ถ้าเดินไปตามถนน Rue Lepic จะเจอ Cafe ร้านนึงชื่อว่า Cafe Des Deux Moulins ชื่อ Cafe แปลว่า กังหันลมสองอัน

ด้านหน้า Cafe Des Deux Moulins

Cafe ร้านนี้เป็นสถานที่ถ่ายทำหนัง Amélie คือเป็นร้านที่นางเอกทำงานอยู่

ด้านในร้าน ก็คล้ายๆ กับในหนัง แต่ไม่มีตู้ขายบุหรี่

Amélie !

Cafe ที่ฝรั่งเศสนี่นอกจากกาแฟแล้ว ก็จะมีขายอาหารง่ายๆ รวมทั้งเบียร์ด้วย

Kronenbourg 1664 หมดแก้วแล้วก็ไปต่อ

ชักภาพเมนูหน้าร้าน

ภาพ Van Gogh บนกำแพงแถวนั้น

โปรแกรมมื้อเที่ยงวันนี้จะซื้อของกินไปนั่งกินในสวน ก็เลยแวะร้านขายของกินแถวนั้นที่มีอยู่ละลานตามาก

สำหรับคนรักเนื้อ มีให้เลือกหลายชนิด ของแปลกๆ ที่ไม่ค่อยเห็นตาม supermarket บ้านเราเพียบ

คนขายเนื้อ

เดินผ่านร้านการ์ตูน นอกจากการ์ตูนฝรั่งเศสอย่างของ Enki Bilal ก็แอบมีการ์ตูนญี่ปุ่นขายด้วย

Ratatouille มันหน้าตาแบบนี้นี่เอง

แปลว่า น่องไก่ อะไรสักอย่าง

ขนมปังฝรั่งเศส ขาดไม่ได้

หลังจากซื้อของกินเรียบร้อยแล้วก็เดินไปนั่ง Metro เพื่อไปสวนสาธารณะที่จะนั่งกิน (จริงๆ จะไปซื้อแถวสวนก็ได้ แต่ไม่รู้ว่ามีอะไรขายหรือเปล่า ก็เลยซื้อเสียตั้งแต่แถวนี้ที่มีให้เลือกเยอะๆ)

ร้านนี้ขายอะไรก็ไม่รู้

ก่อนไปลง Metro เจอ Moulin Rouge ของจริง ก็เป็น "กังหันสีแดง" ตามชื่อ

นั่ง Metro ไปเขต 6 เพื่อไปที่สวน Jardin du Luxembourg เป็นสถานที่ที่เค้าว่าเหมาะสมแก่การนั่งปิคนิค

มาถึงสวน Luxembourg แล้ว

ไวน์ที่ซื้อมาจากร้าน Nicolas บนเกาะ Saint Louis เมื่อวาน

กินไวน์แกล้ม ขนมปัง แฮม ตับบด น่องไก่ ชีส และ Ratatouille

สวน Luxembourg นี่เป็นสวนสาธารณะที่ใหญ่ที่สุดเป็นอันดับสองในปารีส (รองจากสวน Tuileries) ภายในมีบ่อน้ำ น้ำพุ รูปปั้นสวยๆ ให้ถ่ายรูป มีสนามหญ้าให้นั่งพักผ่อน ย่านนี้อยู่ใกล้ Sorbonne ซึ่งเป็นมหาวิทยาลัยชื่อดังของฝรั่งเศส ในสวนจึงมีหนุ่มสาวหน้าตา intellectual มาพักผ่อนกันเยอะเป็นพิเศษ ไม่มีนักท่องเที่ยวพลุกพล่านเหมือนที่อื่นๆ เหมาะกับการมานั่งพักผ่อนชิลๆ มาก

บรรยากาศในสวน ด้านหลังเป็นสระน้ำ และ Luxembourg Palace

รูปปั้นในสวน

กินอาหารกลางวันจนอิ่ม พักผ่อนเอาแรงอีกเล็กน้อย ก็ได้เวลาเดินทางต่อ

โฆษณา Google Maps บนโต๊ะใน Cafe ใกล้ๆ

สถานที่ท่องเที่ยวอีกแห่งหนึ่งที่อยู่ใกล้ๆ กับสวน Luxembourg คือ Pantheon (ฝรั่งเศสอ่าน ปงเตออง) ข้างในเป็นที่เก็บศพคนดัง เช่น Voltaire, Victor Hugo, Pierre & Marie Curie ฯลฯ แล้วก็ขึ้นชื่อเรื่องสถาปัตยกรรมแบบ Neo-Classic ที่สวยงาม แต่พอดีเวลาไม่ลงตัว ก็เลยไม่ได้เข้าไปดู

Pantheon อยู่ใกล้แค่นี้ แต่ไม่ได้ไป

เป้าหมายต่อไปคือ Musée Rodin ระหว่างทางเดินไปขึ้น Metro ก็ผ่านพิพิธภัณฑ์อีกแห่งหนึ่งคือ Musée de Cluny เป็นพิพิธภัณฑ์เกี่ยวกับยุค middle age ซึ่งก็ไม่มีเวลาเข้าไปดูอีกเหมือนกัน

เกาะรั้ว Musée de Cluny

Metro สถานี Cluny-la Sorbonne เพดานสวยดี

นั่ง Metro มาจนถึงสถานี Varenne เดินต่ออีกนิดนึงก็ถึง Musée Rodin ใช้ Museum Pass เข้าได้เลย

ป้ายบอกทางเข้า

Musée Rodin เป็นที่จัดแสดงผลงานของ Auguste Rodin นักปฏิมากรรมคนสำคัญของฝรั่งเศส ซึ่งเคยใช้ตึกนี้เป็นสตูดิโอมาก่อน โดยก่อนตาย Rodin ได้ทำข้อตกลงกับรัฐบาลไว้ว่าจะยกผลงานทั้งหมดให้เป็นสมบัติชาติ แลกกับการสร้างพิพิธภัณฑ์แห่งนี้ ทำให้ที่ Musée Rodin นี้ผลงานเกือบทั้งหมดที่จัดแสดง จะเป็น collection งานของ Rodin และงานของคนอื่นบางส่วนที่ Rodin เคยครอบครอง (ในนั้นมีภาพเขียนของ Van Gogh และ Renoir ด้วย)

ผลงานที่จัดแสดงก็จะกระจายอยู่ตามจุดต่างๆ ในสวน และในตัวตึก เดินดูได้สบายๆ บรรยากาศร่มรื่น

The Thinker ผลงานชื่อดังของ Rodin

The Gate of Hell ผลงานชื่อดังอีกชิ้นหนึ่ง

ลองซูมใกล้ๆ The Gate of Hell

บรรยากาศรวมๆ นักท่องเที่ยวไม่เยอะ เดินสบายๆ

ตัวอย่างผลงานที่อยู่ในตัวตึก

ถ้าใครชอบงาน sculpture ก็ไม่ควรพลาด

กว่าจะออกจาก Musée Rodin ก็ตกเย็นแล้ว เป้าหมายสุดท้ายของวันนี้ก็คือถนนช็องเซลีเซ่ (Champs-Élysées) หนึ่งในถนนที่มีชื่อเสียงที่สุดในโลก ถนนที่เต็มไปด้วยร้านค้าหรูหรา ฟู่ฟ่า ที่สุดในยุโรปเลยก็ว่าได้

ร้านขายของของสโมสร Paris Saint-Germain ก็ตั้งอยู่แถวนี้

ปารีเซียงต่อคิวดูกังฟูแพนด้า

ลิมูซีนคันใหญ่วิ่งตามถนนนี้ถือเป็นเรื่องปกติ

ร้าน Louis Vuitton หรูกว่าตรงแยกราชประสงค์ประมาณแปดล้านเท่า

ถนน Champs-Élysées นี่ยังเป็นต้นแบบของถนนราชดำเนินในบ้านเราด้วย

พอเดินเลยโซนที่เป็นร้านหรูๆ ออกมา ดูไปก็คล้ายๆ ราชดำเนินบ้านเรา

และเมื่อเราเดินตามถนนมาเรื่อยๆ จนสุดก็จะเจอกับจตุรัส Chales de Gaulle ซึ่งเป็นวงเวียนที่มีถนน 12 สายมาบรรจบกัน (ลองดูใน Google Maps ก็ได้) และตรงใจกลางของวงเวียน เป็นที่ตั้งของประตูชัย Arc de Triomphe อีกสัญลักษณ์หนึ่งของปารีส

ประตูชัย

ประตูชัยของปารีสนี้สูงประมาณ 50 เมตร ถ้าว่ากันในเรื่องขนาด ถือว่าใหญ่เป็นอันดับสองของโลก เป็นรองแค่ประตูชัยแห่งเปียงยาง ที่อยู่ในเกาหลีเหนือเท่านั้น

นักท่องเที่ยวสามารถเดินลงอุโมงค์เพื่อไปโผล่ที่เกาะกลางได้

อุโมงค์ลอดใต้ถนน

ถ้าเข้าไปดูใกล้ๆ ก็จะเห็นรายละเอียดพวกรูปสลัก และตัวหนังสือที่จารึกไว้ ส่วนใหญ่ก็จะเป็นเรื่องประวัตศาสตร์การทำสงครามของฝรั่งเศส และระลึกถึงทหารที่เสียชีวิต

อันนี้แปลไม่ออก

ชักภาพในมุม wide ก่อนจะมืด

จริงๆ แล้วสามารถขึ้นไปดูวิวที่ด้านบนประตูชัยได้ แต่ดันหาทางขึ้นไม่เจอ ประกอบกับเหนื่อยด้วย เลยเอาเดินถ่ายรูปรอบๆ ก็พอ

พอเริ่มมืด เค้าจะเปิดไฟสีล้มๆ หน่อย ตัดกับท้องฟ้าสีเข้ม

เดินกลับมาถ่ายจากหัวมุมถนน Champs-Elysees (นักท่องเที่ยวเยอะมาก)

ประตูชัยนี้ ยังเป็นส่วนหนึ่งของ L’Axe Historique (แนวเส้นตรงทางประวัติศาสตร์) ซึ่งลากตรงออกจาก Louvre ผ่านสวน Tuileries ไปตามถนน Champs-Élysées ผ่านประตูชัย ไปจนสิ้นสุดที่ประตูชัยใหม่ ในเขต La Defense วัดเป็นระยะทาง (ใน google maps) ก็เกือบๆ 8 กิโลเมตร เป็นแนวเส้นตรงดิ่ง ไม่มีสิ่งก่อสร้างกีดขวางเลย เป็นการวางผังเมืองที่เท่ดีมาก

ปารีเซียง (+นักท่องเที่ยว) เดินข้ามถนน

ถ่ายรูปจนพอใจแล้วก็กลับที่พัก นอนเอาแรงสำหรับวันต่อไป

ลิงก์ตอนเก่าๆ

Trip 2011 – part 14

เข้าสู่วันที่ 4 ที่ปารีสแล้ว เก็บสถานที่สำคัญๆ ไปหลายที่แล้ว วันนี้ก็จะมาเที่ยวตามสถานที่ที่ดังรองๆ ลงมาหน่อย ต้องตื่นออกจากที่พักแต่เช้าเหมือนเดิม

พาหนะแบบหนึ่งของปารีเซียง

Graffiti มีให้เห็นทั่วไปแม้กระทั่งแถวกลางเมือง

โปรแกรมแรกของวันนี้คือไป Conciergerie ซึ่งเป็นคุกที่ใช้ขังนักโทษการเมืองในช่วงสมัยปฏิวัติฝรั่งเศส ที่ตั้งของ Conciergerie อยู่บนเกาะ Cite ใจกลางเมืองปารีส

ต้องอธิบายเรื่องลักษณะทางภูมิศาสตร์ของปารีสเล็กน้อย คือปารีสจะมีแม่น้ำ Seine ไหลผ่ากลาง จากฝั่งตะวันตก ไปฝั่งตะวันออก และตรงกลางจะมีเกาะเล็กๆ อยู่ในแม่น้ำ 2 เกาะ คือเกาะ Saint Louis และเกาะ Cite ที่กำลังจะไปนี่เอง (ถ้าอ่านแล้วงงลองดูแผนที่)

สะพานข้ามไปยังเกาะกลางน้ำ มีโฆษณา iPad 2

ถ้าจำไม่ผิด อันนี้คือ Hall of Justice

ทีแรกตั้งใจว่าจะมาดูทั้ง Conciergerie กับโบสถ์ Sainte-Chapelle ที่อยู่แถวนั้นด้วย แต่ดูปริมาณคนที่ต่อคิวเข้าแถวรอเข้าโบสถ์ Saint-Chapelle แล้ว มาดู Conciergerie น่าจะเป็นการใช้เวลาที่มีอย่างคุ้มค่ากว่า ไม่งั้นโปรแกรมที่วางไว้ทั้งวันคงจะเละไปหมด

ข้างใน Conciergerie ชั้นล่าง

ข้างใน Conciergerie ก็จะมีจัดแสดง จำลองสภาพของคุกสมัยปฏิวัติฝรั่งเศส เอาหุ่นมาตั้งเป็นเวรยาม เป็นนักโทษนอนอยู่ในคุก มีทั้งนักโทษธรรมดา แล้วก็นักโทษ high profile ที่เป็นบุคคลสำคัญ แต่นักโทษที่มีความเป็นอยู่ดีที่สุดในนี้ก็คือ Marie Antoinette

ในช่วงบั้นปลายชีวิต Marie Antoinette เคยถูกขังอยู่ที่นี่ ก่อนจะถูกนำตัวไปประหารด้วยกิโยตินที่ลานประหารกลางปารีส

จำลองห้องของ Marie Antoinette ขนาดประมาณคอนโด 1 ห้องนอนสมัยนี้

รวมๆ แล้วก็ไม่ค่อยมีอะไรเท่าไหร่ คุณภาพของส่วนจัดแสดงถือว่าห่วยผิดคาด หุ่นที่เอามาจัดแสดงก็ดูดีกว่าจ่าเฉยบ้านเราแค่เล็กน้อยเท่านั้นเอง ค่าเข้าดู 7 ยูโร ถ้าเกิดว่าไม่ได้ใช้ Museum Pass เข้ามาคงรู้สึกเสียดายเงินเหมือนกัน นี่คงเป็นสาเหตุว่าทำไมใครๆ ก็ไปต่อคิวเข้า Sainte-Chapelle กันหมด แล้วไม่มาดู Conciergerie

ตรงทางออกมีขายหนังสือ กินตังค์นักท่องเที่ยวอีกต่อนึง

เป้าหมายถัดไปคือ วิหาร Notre Dame ที่ตั้งอยู่บนเกาะ Cite เหมือนกัน เดินไปนิดเดียวก็ถึง

เดินผ่านทางเข้า Metro สถานี Cite ออกแบบเป็นสไตล์ Art Nouveau ฝีมือการออกแบบของสถาปนิก Hector Guimard

แก๊งค์เด็กปั่นจักรยาน

มาถึง Notre Dame แล้ว

Notre Dame เป็นวิหารที่สร้างตามศิลปะแบบ gothic เป็นแหล่งท่องเที่ยวชื่อดังในแง่ของความใหญ่โตและกระจกสีที่สวยงาม ด้านหน้าของวิหารจะมีหมุดบอกหลักกิโลเมตรที่ศูนย์อยู่ด้วย

หลักกิโลเมตรที่ศูนย์

ลองเข้าไปข้างใน ก็ลักษณะเหมือนวิหารทั่วไป มีทางเดินให้กับนักท่องเที่ยวเดินดูรอบๆ โดยไม่เข้าไปรบกวนคนที่มาโบสถ์ตามปกติ

แสงไฟสลัวๆ จากเทียน

เทียนใส่ถ้วย มีไว้ขายนักท่องเที่ยว

ด้านในก็ไม่มีอะไรเท่าไหร่ ใช้ Museum Pass ผ่านประตูเข้าไปได้ไม่มีปัญหา ยกเว้นตัวอาคารที่แยกออกมาบางส่วนที่ต้องเสียเงินเพิ่ม (ซึ่งก็ไม่ได้เข้าไปดู) มีบันไดให้ขึ้นไปดาดฟ้าของหอคอยเพื่อไปดูวิวสวยๆ ได้ ซึ่งก็ไม่ได้ขึ้นไปอีก เพราะกลัวเหนื่อย เดี๋ยวจะเดินที่อื่นต่อไม่ไหว ก็เลยกลับออกมาถ่ายรูปข้างนอก

รูปปั้นด้านนอก

รูปปั้น Gargoyle บนดาดฟ้า

พอดีว่าไม่เคยดู The Hunchback of Notre Dame ก็เลยไม่อินเท่าไหร่

ร้านขายของที่ระลึกสำหรับนักท่องเที่ยว มีอยู่รอบๆ

สวนด้านหลัง Notre Dame

ออกจาก Notre Dame มาแล้ว ก็เดินต่อไปทางเกาะ Saint Louis สำรวจบ้านช่องร้านรวงทั่วไป เกาะ Saint Louis จะมีขนาดเล็กกว่าเกาะ Cite และไม่มีสถานที่ดึงดูดนักท่องเที่ยวเท่าไหร่ ก็สามารถเดินได้สบายๆ

ร้านขายชีสสสสสสสสส

ร้านขายไวน์ เป็น chain ชื่อว่า Nicolas มีให้เลือกเยอะดี

จากเกาะ Saint Louis ข้ามสะพานกลับสู่อีกฟากแม่น้ำ แล้วเดินต่อมาเรื่อยๆ ก็จะมาเจอกับ Place de la Bastille ที่ซึ่งเคยเป็นที่ตั้งของคุก Bastille อันโด่งดังมาก่อน

Place de la Bastille

คุก Bastille โดนทำลายจนไม่เหลืออะไรแล้ว ปัจจุบันก็เลยกลายเป็นแค่วงเวียนอย่างในรูป มีโรงโอเปร่า Bastille มาสร้างไว้ เนื่องในโอกาสครบรอบ 200 ปี การทลายคุก Bastille

เดินกลับเข้ามาในเมืองอีกหน่อยจะเจอกับ Place des Vosges เป็นจัตุรัสที่เก่าแก่ที่สุดของปารีส และยังเป็นแรงบันดาลใจในการออกแบบ Covent Garden ที่ลอนดอนอีกด้วย

ร่มรื่นดี แต่ฝุ่นเยอะไปหน่อย

แถวนี้มีอดีตบ้านของ Victor Hugo นักเขียนชื่อดังด้วย

แฟน Magritte เห็นแล้วอดถ่ายไม่ได้

เดินต่อไปอีกก็เจอ Archives Nationales ก็ประมาณหอจดหมายเหตุแห่งชาติของบ้านเรา ช่วงที่ไปเหมือนจะมีประท้วงเรื่องอะไรสักอย่างกันอยู่

ด้านหน้า Archives Nationales

ได้ยินมาว่าแถวย่านนี้ Falafel อร่อย ก็เลยจิ้มๆ ดู Google Maps เลือกร้านที่ได้ดาวเยอะๆ มาร้านนึง เป็นมื้อเที่ยงวันนี้

ชื่อร้าน L'As du Fallafel

ชื่อร้านแปลว่า "The Ace"

ด้วยความที่ตัวเองก็ไม่รู้จักว่า falafel มันหน้าตาแบบไหน กินยังไง เข้าไปก็จะงงๆ หน่อย สรุปได้ว่า falafel ร้านนี้เป็นแบบ falafel sandwich คือมีไส้กับแป้งมาให้ จากนั้นคนกินก็จัดการเองตามสะดวก

แป้งกับน้ำจิ้ม เผ็ดใช้ได้

อันนี้เป็นไส้ สั่งเป็นเนื้อวัวกับเนื้อแกะ รวมๆ กัน

อันนี้จานแยก เป็นไส้กรอกอะไรสักอย่าง รสชาติคล้ายๆ Chorizo

วิธีกินก็ยัดไส้ใส่ในแป้ง ราดน้ำจิ้มตามชอบ แล้วก็กิน

สำหรับมื้อนี้รีวิวใน Google Maps เชื่อถือได้ ร้านบ้านๆ หน่อย คนเยอะไปนิด แต่อร่อยดี และราคาไม่แพง

กินเสร็จแล้วก็เดินต่อไปที่ Centre Georges Pompidou ที่เป็นอาคารศูนย์วัฒนธรรม ภายในจะมีจัดนิทรรศการศิลปะผลัดเปลี่ยน หมุนเวียนไปเรื่อยๆ (ไม่ได้เข้าไปดู เพราะไม่มีเวลา)

ด้านหลังของ Centre Georges Pompidou

สไตล์ที่โดดเด่นของ Centre Georges Pompidou คือการออกแบบแนว Post-Modern โดยจับเอาสิ่งที่ควรจะอยู่ในตัวตึกออกมาอยู่ด้านนอก ทั้งโครงเหล็ก ท่อแอร์ ท่อสายไฟ บันได ทำให้ได้อาคารหน้าตาประหลาดเป็นเอกลักษณ์ขึ้นมา

ด้านหน้าอาคาร

เหมือนจะเป็นคณะนักเรียนมาทัศนศึกษา

ข้างๆ มีบ่อน้ำพุชื่อว่า Stravinsky Fountain ตั้งชื่อตาม composer เพลง Igor Stravinsky

น้ำพุไม่มีน้ำ

เดินเที่ยวย่านนี้เยอะแล้ว ก็ไปต่อที่ไฮไลท์ของวันนี้ คือ Musée d’Orsay ซึ่งก็ต้องขึ้น Metro ไป

เปลี่ยนขบวน Metro ที่สถานี Concorde เพดานทำสวยดี

มาถึงพิพิธภัณฑ์ d’Orsay ซึ่งเป็นอีกพิพธภัณฑ์หนึ่งที่ไม่ควรพลาด รองจาก Louvre โดยงานศิลปะที่จัดแสดงอยู่ใน d’Orsay จะเป็นงานยุคหลัง ราวๆ ศตวรรษที่ 19 เป็นต้นมา

งานศิลปะเชิดหน้าชูชาตาของ d’Orsay คือเป็นแหล่งรวมภาพเขียนแนว Impressionist / Post-Impressionist (และแนวใกล้เคียง) ไว้เยอะมาก ของคนดังๆ มีครบทั้ง Manet, Monet, Degar, Renoir, Pissaro, Van Gogh ฯลฯ นอกจากนี้แล้วก็มีงานแบบ Art Nouveau ให้ดูด้วย

ตัวอาคารเป็นสถานีรถไฟเก่าที่เอามาดัดแปลง การเดินทางภายในแบ่งเป็นสัดส่วนไว้อย่างดี เดินแล้วไม่หลงทางอย่างใน Louvre เป็นพิพิธภัณฑ์ขนาดกำลังดี ใช้เวลาเดินสักครึ่งวันก็ทั่ว ข้อเสียคือ ห้ามถ่ายรูปข้างใน ก็เลยเอารูปมาแปะไม่ได้

ด้านหน้าพิพิธภัณฑ์ มีป้ายโฆษณาว่าช่วงนี้มีนิทรรศการของ Manet อยู่

จังหวะที่ไปนั่นเป็นช่วงบ่ายแล้ว คนรอคิวเข้าก็เยอะพอสมควร ไม่มีทางลัดสำหรับคนถือ Museum Pass ด้วย ทำให้เสียเวลาไปเยอะ ตอนเดินดูผลงานก็เลยต้องรีบๆ ดูไปหน่อย รู้สึกไม่ค่อยเต็มอิ่มเท่าไหร่ แต่โดยส่วนตัวแล้วชอบที่นี่มากกว่า Louvre เสียอีก

d'Orsay ในช่วงพระอาทิตย์ใกล้ตก

นาฬิกาอันใหญ่ สัญลักษณ์ของพิพิธภัณฑ์

เดินอยู่จนพิพิธภัณฑ์ปิด (สามทุ่มครึ่ง ฟ้ายังสว่างอยู่เลย) ออกมาถ่ายรูปรอบๆ เล็กน้อย แล้วก็นั่ง Metro กลับที่พัก ก็เป็นอันจบไปอีกหนึ่งวัน

ลิงก์ตอนเก่าๆ

Amazing Thailand

เราไม่ได้อยู่อย่างโดดเดี่ยวบนโลกใบนี้

BBC – Thailand lese majeste man jailed for 20 years

The New York Times – 20-Year Sentence for Text Messages Against Thai King

HuffingtonPost – Keeping up With the Neighbours: Thailand Jails Grandfather or 20 Years

Gizmodo – Don’t Insult the Thai King in an SMS, Unless You Like Prison

France24 – 20 years’ jail for Thai anti-royal texts

Telegraph – Man sentenced to 20 years for insulting Thai queen by text message

The Independent – Thailand: 20-year jail term for royal insult

Bloomberg – Thai Man to Be Jailed for Royal Threat by SMS

The Australian – Twenty years for royal insult of Thai king

ยินดีต้อนรับสู่ Censorship Paradise

rant

My friend has an auto shop, QCT Auto. there are tips for flooded car here

Trip 2011 – part 13

ด้วยเหตุที่ว่าปารีสเป็นเมืองท่องเที่ยวอันดับต้นๆ ของโลก ความมีเสน่ห์เฉพาะตัวของเมืองนี้ ทำให้หนังหลายๆ เรื่องได้มาถ่ายทำกัน นอกจากใน Inception ที่พูดถึงไปเมื่อวันก่อนและ Marie Antoinette แล้ว ยังมีเรื่องอื่นที่แนะนำให้ดูก่อนมาเที่ยว จะได้อรรถรสมากขึ้น

Paris, Je T’Aime (2006) – ชื่อเรื่องก็บอกเป็นอย่างดีว่าพูดถึงเมืองนี้เต็มๆ ในหนังมีหลากหลายแง่มุมของปารีส บางมุมอาจจะอยู่นอกเส้นทางนักท่องเที่ยวไปบ้าง แต่หนังดี สนุก สมควรดู

Amélie (2001) – หนังเล่าเรื่องสาวน้อยที่ใช้ชีวิตอยู่ในย่านมงมาร์ท ชานเมืองปารีส บรรยากาศย้อนยุคนิดๆ ถ้าตั้งใจจะไปเที่ยวย่านนั้นอยู่แล้วก็ไม่ควรพลาด

Before Sunset (2004) – เรื่องนี้ต้องดู Before Sunrise (1995) ก่อน ถึงจะดูรู้เรื่องหน่อย เป็นเรื่องของหนุ่มสาวที่เคยรู้จักกันวันเดียวที่เวียนนา และโชคชะตาพาให้ทั้งสองคนกลับมาเจอกันอีกทีในบรรยากาศริมแม่น้ำ Seine

เรื่องอื่นๆ ที่ลองดูก่อนมาอย่าง From Paris with Love, The Bourne Identity ดูแล้วไม่ค่อยได้ประโยชน์อะไรเท่าไหร่ (ไม่สนุกด้วย!)

มีอีกเรื่องนึงที่อยากดูคือ Midnight in Paris แต่ตอนที่ไปเที่ยวนั่นยังหาดูไม่ได้

ส่วนโปรแกรมท่องเที่ยววันนี้ที่วางไว้คือ พิพิธภัณฑ์ Louvre อันโด่งดัง เต็มๆ วัน ไม่ไปที่อื่น

Louvre ถือเป็นหนึ่งในพิพิธภัณฑ์ที่ดีที่สุดของโลก มีผลงานจัดแสดงกว่า 35,000 ชิ้น ทั้งภาพเขียน งานแกะสลัก งานฝีมือ ฯลฯ ภายในอาคารขนาดใหญ่ระดับที่เดินทั้งวันก็ยังไม่ทั่ว

ความโด่งดังของ Louvre นอกจากผลงานระดับ Masterpiece จำนวนมากที่จัดแสดงอยู่ที่นี่แล้ว ยังได้แรงหนุนจากนิยายและหนัง The Da Vinci Code ที่มีฉากเปิดเรื่องเป็นการฆาตกรรมภายในพิพิธภัณฑ์นี้

ดังนั้น การมา Louvre จึงควรซื้อ Museum Pass ไว้ จะดีที่สุด สามารถเข้าออกกี่ครั้งก็ได้ และมีทางเข้าพิเศษ ไม่ต้องไปต่อคิวยาวๆ เหมือนคนทั่วไป (ถึงแม้คิวจะไม่ยาวเท่า Versaille ก็เถอะ)

ภาพถ่ายจากด้านนอก อาคารใหญ่โตโอ่โถงเพราะเป็นวังเก่า

Louvre ตั้งอยู่ในเขต 1 ของปารีส ติดแม่น้ำ Seine ถือว่าอยู่ใจกลางเมืองสุดๆ การเดินทางสะดวกสุดก็ Metro สถานี Palais Royal-Musee du Louvre

พีระมิดแก้ว สัญลักษณ์ทางเข้าของพิพิธภัณฑ์

คนปกติ เวลามา Louvre ก็จะเข้าตรงทางเข้าหลักคือที่พีระมิดแก้ว (ฝีมือการออกแบบของสถาปนิก I. M. Pei) แต่ถ้าไม่อยากต่อคิวยาว ให้ไปเข้าทางเข้าด้านข้างตรง Richelieu Wing คิวจะสั้นกว่าเยอะ

มองจากข้างใต้พีระมิดแก้ว

ในการมาดูงานศิลปะที่ Louvre นี้ พวกกรุ๊ปทัวร์ต่างๆ ที่มีเวลาน้อย ก็มักจะไปดูงานชื่อดังๆ ซึ่งงานศิลปะที่ดังที่สุดใน Louvre ก็มีอยู่ 3 ชิ้น อันได้แก่ Winged Victory of Samothrace, Venus de Milo และ Mona Lisa ซึ่งวันนี้มีเวลาเต็มๆ วัน ก็จะค่อยๆ เดินดูไปทีละชิ้น

ทางเดินใน Louvre ค่อนข้างวกวนและสับสน ต้องหยิบแผนที่ขึ้นมาดูอยู่ตลอด หลังจากเดินอยู่สักพักก็มาถึง Winged Victory of Samothrace จนได้ ตัวรูปแกะสลักมีอายุเก่าแก่ตั้งแต่ 300 ปีก่อนคริสตกาล ว่ากันว่าเป็นเทพธิดา Nike สร้างเพื่อฉลองชัยชนะของกรีซที่เกาะ Samothrace

คนมุงดูมากมายสมกับเป็นงานชื่อดัง

งานศิลปะใน Louvre จะแบ่งเป็นโซนตามประเภทของงาน เช่น โซนรูปปั้น รูปแกะสลัก ภาพเขียน นอกจากนี้ยังแบ่งตามภูมิภาคและช่วงเวลา กระจายกันไปตามปีกต่างๆ ของอาคาร

ในโซนงานแกะสลักนี่ก็มีงานเด่นๆ อีกหลายชิ้น เช่น Diana of Versailles เป็นเทพ Diana กำลังล่าสัตว์

Diana of Versailles หรืออีกชื่อหนึ่งคือ Artemis with a Doe

ชิ้นถัดไปก็เป็น Hermaphroditos Asleep สังเกตดูดีๆ จะเห็นว่าที่นอนอยู่นั่นเป็นหินแกะสลัก ไม่ใช่ฟูกจริง!

หินอ่อน ไม่ใช่ฟูก

จังหวะที่ไปมีแสดงงานรวมๆ ของ Rembrandt อยู่พอดี (ไม่ได้เข้าไปดู)

ส่วนแสดงงานของ Rembrandt

ถ้าหากเดินจนเหนื่อยแล้ว ตามมุมๆ อาคาร จะมี Cafe เล็กๆ ขายอาหาร/เครื่องดื่ม ให้แวะกินแก้หิวได้ แต่ราคาก็จะแพงกว่ากินข้างนอกอยู่พอสมควร ถ้าเกิดว่าอยากประหยัด ก็พกของกินเข้าไป แล้วหาที่นั่งกินตรงส่วนกลาง (ที่ไม่ใช่โซนแสดงงาน) เสร็จแล้วค่อยเข้าไปดูงานต่อ

แซนด์วิชแฮมชีส กับ Chorizo ตบท้ายด้วยโค้ก (ซื้อก่อนเข้ามา)

อิ่มแล้วก็กลับเข้ามาดูงานต่อ เปลี่ยนบรรยากาศไปเดินแถวภาพเขียนบ้าง

มีคนมานั่งวาดรูปเยอะเหมือนกัน เป็นเรื่องปกติสำหรับคนมีเวลาเหลือเฟือ

กลุ่มนักท่องเที่ยว ดูจากการแต่งตัวแล้วน่าจะมาจากญี่ปุ่น

โซนแสดงภาพ Impressionist

เทียบกับ British Museum ที่ลอนดอนแล้ว British Museum จะเน้นข้าวของ งานช่างเป็นชิ้นๆ ดูแล้วได้ความรู้ทางประวัติศาสตร์ ส่วนที่ Louvre จะมีส่วนที่เป็นงานศิลปะมากกว่า

มองออกไปด้านนอก เห็นแม่น้ำ Seine และสะพาน Pont des Arts

บางห้องก็ใหญ่โตโอ่โถงมาก

ปกอัลบั้ม Viva la Vida ของ Coldplay

มีงานยุคเรอเนสซองค์เยอะมาก มีให้ดูกันทั้ง Leonardo (Da Vinci), Raphael, Donatello , Michael Angelo ครบขบวนการเต่านินจา

Baldassare Castiglione โดย Raphael ท่าเดียวกับ Mona Lisa เลย

เป้าหมายสุดท้ายของวันนี้คือ ไปดู Mona Lisa กะว่าตอนใกล้ๆ จะปิด คนคงน้อยแล้ว ซึ่งคนมันก็น้อยกว่าตอนบ่ายๆ แหละ แต่ก็ยังถือว่าเยอะอยู่ดี

คนดู Mona Lisa ยังเยอะอยู่ (ประมาณ 30 นาทีก่อนปิด)

เนื่องจากเป็นงานชื่อดังที่สุด คนเข้ามาดูเยอะที่สุด ก็เลยต้องมีที่กั้น มีเจ้าหน้าที่รักษาความปลอดภัยเข้มงวดกว่าที่อื่น

ดูเสร็จ ถ่ายรูปแล้วก็ต้องรีบเดินออก เพราะกำลังจะปิดแล้ว

เดินผ่านโซนแกะสลักเจอ Cupid & Psyche

คนออกกันมาจะหมดแล้ว หันกลับไปไม่เจอใครเลย

ออกมาข้างนอกเอาเวลาปิดพอดี แต่ยังพอมีแสงอยู่บ้าง ก็เก็บภาพภายนอกไว้สักหน่อย

สาบานได้ว่าเกือบสี่ทุ่มแล้ว

เปิดไฟแล้วก็สวยดี

สิ่งที่จำเป็นอย่างหนึ่งของ Louvre คือ ถ้าไม่ได้กะจะมาดูแค่งานเด่นๆ 3-4 ชิ้นแล้ว ควรจะต้องวางแผนก่อนมาว่าจะดูอะไรบ้าง และของที่อยากดูอยู่ตรงส่วนไหนของอาคาร เว็บไซต์ของ Louvre มีฐานข้อมูลของงานศิลปะพร้อมตำแหน่งให้หมดแล้ว (ถึงเว็บจะใช้ลำบากไปหน่อยก็เถอะ) และมีเส้นทางแนะนำให้ด้วย สามารถเลือกวางแผนก่อนได้ สิ่งที่ควรจำให้ขึ้นใจคือ ไม่ควรไปเดินชิลๆ คิดว่าดูไปเรื่อยๆ จนครบก็พอ เพราะว่า Louvre ใหญ่เกินกว่าจะเดินได้ทั่วในวันเดียว ขนาดเข้าไปตอนเวลาเปิด ออกมาตอนเวลาปิด ก็ยังเดินไม่ทั่ว ถ้าเป็นไปได้ ก็ควรจะเลือกไปเดินวันพุธหรือวันศุกร์ เพราะจะเปิดถึง 21:45 (วันอื่นเปิดถึงหกโมงเย็น)

ถ้าใครใช้ iPhone / iPad สามารถโหลด Official App ชื่อว่า Musée de Louvre มาใช้ช่วยวางแผนการเดินทางได้

ระหว่างเดินไปหาทางลง Metro เจอโปสเตอร์ขำๆ ดี

หนุ่มสาวเอย พวกเธอว์จงใส่แว่น!

อารยธรรมเฮดโฟน มีมาตั้งแต่สมัยเรอเนสซองค์

นั่ง Metro กลับที่พัก จบวันที่สามในปารีส

Book Fair 2011/2

ตามธรรมเนียมการไปงานหนังสือ ต้องโพสต์รูปว่าไปซื้ออะไรมาบ้าง

หนังสือที่ได้มา

เรียงจากซ้ายไปขวา บนลงล่าง

  • หอสมุดแห่งบาเบล / Jorge Luis Borges / Book Virus – นานๆ ทีก็อยากอ่านงานของนักเขียนสเปนนักเขียนอาร์เจนตินา แต่เขียนเป็นภาษาสเปนบ้าง แต่ให้ไปอ่าน ดอนกิโฆเต้ ก็ไม่ไหว ยาวเกิน
  • Jacques Ranciere การเมืองของสุนทรียศาสตร์/กวีนิพนธ์ของความรู้ / ไชยรัตน์ เจริญสินโอฬาร / สำนักพิมพ์สมมติ – หาความรู้ใส่ตัวบ้าง
  • โครงการอันเนื่องมาจากพระราชดำริ : การสถาปนาพระราชอำนาจนำในพระบาทสมเด็จพระเจ้าอยู่หัว / ชนิดา ชิตบัณฑิตย์ / มูลนิธิโครงการตำรา – เป็นคนไทยก็ควรอ่านอะไรแบบนี้บ้าง
  • 1Q84 / Haruki Murakami / สำนักพิมพ์กำมะหยี่ – เรื่องล่าสุดของ Murakami ออกพร้อมกันสองเล่ม ทีแรกคิดอยู่ว่าจะซื้อเป็นเล่มๆ แบบนี้ หรือว่าซื้อ ebook ลง kindle ดี แต่เห็นความหนาแล้วคิดว่าถ้าซื้อภาษาอังกฤษคงอีกนานมากกว่าจะอ่านจบ เลยซื้อภาษาไทยแทน
  • ฟุตบอล ประเด็นเล็กสะท้านโลก / คริส บราเซียร์ / คบไฟ – ประเด็นเรื่องของฟุตบอลที่ไม่ได้มีอยู่แค่ในสนาม แต่ยังรวมถึงเรื่องการเมือง ธุรกิจ วัฒนธรรม
  • ศิลปะสมัยใหม่ : ความรู้ฉบับพกพา / David Cottington / Openworlds – อยากจะดูพวก modern art แล้ว get บ้าง
  • ใต้เงาเกาหลีเหนือ / Barbara Demick / Sansakrit book – เนื่องจากกระแสเกาหลีมาแรงมาก ไม่อยากตกเทรนด์ แต่จะให้ไปอ่านนิยายกุ๊กกิ๊กวัยใส ก็เกรงจะไม่เข้ากับตัวเอง
  • เนื้ออร่อย / สำนักพิมพ์แม่บ้าน – ตำราทำอาหารจากเนื้อวัว แหล่งโปรตีนชั้นยอดที่น่าสงสัยว่าทำไมคนไม่ค่อยกินกัน

หวังว่าจะอ่านจบก่อนงานหนังสือครั้งต่อไป

100 สิ่งที่ไม่ต้องทำ(ก็ได้)ก่อนตาย

100 สิ่งที่ไม่ต้องทำ(ก็ได้)ก่อนตาย

งานมหกรรมหนังสือระดับชาติ ครั้งที่ 16 (BookExpo Thailand 2011) คราวนี้ ซื้อมาแต่หนังสือประเภทไม่ต้องอ่านต่อเนื่อง คือเป็นตอนสั้นๆ อ่านแป๊บๆ แล้ววางทิ้งไว้ วันหลังค่อยมาอ่านใหม่ก็ไม่ขาดช่วง อะไรทำนองนี้ อาจจะเป็นเพราะรูปแบบการดำเนินชีวิตที่เปลี่ยนไป… ขนาดร้านไหนคนเยอะๆ ยังขี้เกียจรอ ไม่ซื้อมันซะดื้อๆ ยังงั้น -*- (แต่วางแผนจะไปเดินอีกรอบ เอาช่วงที่คนน้อยๆ หน่อย)

สรุปหนังสือที่ได้มารอบแรก:

  • โรมานซ์ ของ วิศุทธิ์ พรนิมิตร
  • 100 สิ่งที่ไม่ต้องทำ(ก็ได้)ก่อนตาย ของนิตยสารฉลาดซื้อ
  • นอกลู่ไม่นอกทาง ของนิตยสารฉลาดซื้อ
  • OMG! มหัศจรรย์ได้อีก! (The World’s Best Book) ของ Jay Payne

อ่านจบไปสองเล่ม คือ โรมานซ์ กับ 100 สิ่งที่ไม่ต้องทำ(ก็ได้)ก่อนตาย สำหรับ โรมานซ์ คงไม่เล่า บอกได้สั้นๆ ว่า “คุ้ม” ตามสไตล์การ์ตูนของ วิศุทธิ์ ทุกเล่ม ส่วนที่อยากเล่าคือหนังสือ 100 สิ่งฯ นี่แหละ

ลักษณะเนื้อหาของ 100 สิ่งที่ไม่ต้องทำ(ก็ได้)ก่อนตาย จะเป็นเรื่องสั้นๆ ตอนละหน้า-สองหน้า (ไม่ก็หน้าละตอน-สองตอน) อ่านสบาย มีรูปประกอบดูเพลินๆ พูดถึงเรื่องทั่วๆ ไปในโลกและประเทศไทย หัวข้อที่อ่านแล้วรู้สึกว่าได้ประโยชน์ส่วนใหญ่จะเป็นเรื่องอาหารการกิน เช่น

  • ดื่มน้ำลูกพรุนก่อนนอน
  • กินรังนก
  • กินบุฟเฟต์
  • กินแครอตเพื่อจะได้เบต้าแคโรทีนเยอะๆ
  • กินซุปไก่สกัดหรือซอยเปปไทด์ก่อนสอบ
  • ดื่มน้ำเยอะๆ เพื่อควบคุมน้ำหนัก
  • ใช้แชมพูผสมครีมนวดผม
  • ต้องนอนมากๆ

อ่านไปประมาณ 50 ข้อแรก รู้สึกเหมือนเป็นหนังสือที่ดี กะว่าอ่านจบแล้วจะเอาไปให้แม่อ่านต่อ แต่พออ่านช่วง 50 ข้อหลัง เหมือนคนเขียนเป็นคนละคน หัวข้อก็ประหลาดๆ เหมือนเอาเรื่องในสังคมไทยมาบ่นตามความ(ไม่)พอใจของคนเขียน แถมภาษาที่ใช้ก็ออกแนวเกรียนไม่ค่อยเหมือนช่วงครึ่งเล่มแรก หัวข้อก็ประมาณว่า

  • ต้องไปต่อคิวยาวเพื่อซื้อขนมแปลกๆ
  • ใส่เสื้อผ้ายี่ห้อ หิ้วกระเป๋าแบรนด์เนม โดยเฉพาะรุ่น limited edition
  • ฝันลูกเป็นเด็กอัจฉริยะ
  • ซื้อหวย
  • เล่นหุ้น
  • เปลี่ยนโทรศัพท์มือถือทุกปี
  • อยากได้เครื่องอบผ้า
  • เห่อซีรี่ส์เกาหลี ญี่ปุ่น

ความเห็นส่วนตัวคือถ้ามันเป็น fact แต่คนหลงผิดไม่รู้เนี่ย น่าจะเอามาแนะนำ แต่อะไรที่มันเป็น trend ความชอบ หรือความจำเป็นส่วนบุคคล ไม่น่าเอามาเขียน อ่านแล้วมันหงุดหงิด เหมือนมีคนมานั่งบ่นให้ฟัง -_-a

สรุปว่าเป็นหนังสือที่แนะนำให้อ่าน… แค่ครึ่งเล่มก็พอ ถ้าตัดเหลือแค่ 50 ข้อเน้นๆ แล้วลดราคาลงครึ่งนึง จะเป็นหนังสือที่ค่อนข้างเวิร์กทีเดียว

Rockstar with PhD

Tags: 

My favorite band is always Queen. Three years ago, I was thrilled to known that The band’s guitarist, Brian May, just got his PhD in astrophysics two weeks after my graduation procedure is filed. At that time, I can’t contemplate how it was to be a rock star and to holds scientific PhD at the same time.

Today, after reading 7 of the Smartest Rock Stars Ever, I am more amazed to learn that Greg Graffin, the lead vocalist of “Bad Religion” holds PhD in Zoology and have been a lecturer for years. He teaches at Cornell this semester. I have not had a chance to listen to “Bad Religion”. Maybe I could grab their latest album somewhere soon.

Install cafe-grader on Lucid Lynx

apt-get install ruby ruby-dev
gem install passenger

Data Structure, second semester 2011

News & Announcement

2011-12-14

  • We have a facebook group as the main communication channel.
  • The class rooms are
    > 1. ENG3/321 for section 1
    > 2. ENG3/218 for section 2
    > 3. ENG3/224 for section 3
    > 4. ENG3/219 for section 4
  • Section assignment will be available very soon :D

2012-01-10 Quiz announcement

  • We will have our first quiz on Friday, January 13, 2012. The quiz will start exactly at 09:00 and finish at 10:00
  • For section 2-4, the quiz will be held at the usual classroom. Room for section 1 will be announced later (it will also be at the computer center as well)
  • Topics cover basic C language and 00-array.c files
  • You will have to write a program and submit it to the server to get a score. The system for the quiz is cafe-grader, read the tutorial section in this document. The [cafe-grader] can be accessed at , the username and password will be the same as that of reg.chula.ac.th. You can try the system now.

Resource

  • Course Syllabus is here.
  • Slide and e-learning of อ. สมชาย click

Since we will use C language in this class, the following material will help increase your proficiency in C.

The data structure

Data Structure Skeleon Original Application
Array 00-array.c 00-array.c
Stack 01-stack.c 01-stack.c Infix to Postfix
Queue 02-queue.c 02-queue.c
Binary Heap 03-bheap.c 03-bheap.c
ArrayList 04-arrayList.c 04-arrayList.c
HashTable 05-HTableLP.c 05-HTableLP.c Word count
LinkedList 05-linkedlist.c 05-linkedlist.c
DoublyLinkedList 06-dlinkedlist.c 06-dlinkedlist.c
BinaryTree N/A N/A 07-huffmanTree.c
BST 08-bst.c 08-bst.c
AVL 09-avl.c 09-avl.c slide AVL in c

Lecture Section 4

  • Homework here and here
  • (2011-12-23) Starting code is here. One of the solution; struct demo.
  • (2011-12-27) Array data structure, skeleton and example.
  • (2012-01-06) ArrayList data structure, skeleton and example.

Sectioning

กรุณาลงทะเบียนตาม section ที่กำหนดให้ดังนี้ (ผู้ใดไม่มีชื่อหรือข้อมูลชื่อ, เลขประจำตัวไม่ถูกต้องให้ติดต่อ อ. นัททีด่วน)
ID Name section
5330001221 นายกตัญญู สมัยคมสัน 4
5330010921 นายกรุชา ศรีประโมทย์ 2
5330032721 น.ส.กาญจนา ศิรินวเสถียร 3
5330039121 นายกิตติพงษ์ จินดาอุดมศักดิ์ 1
5330056821 นายคณณัฏฐ์ สุวรรณวิวัฒนา 3
5330079221 นายจิรุตร์ชัย ควรสวัสดิ์ 4
5330087221 นายเฉลิมเกียรติ สิรชัยรัตน์ 2
5330089521 น.ส.ชญาณินท์ ตั้งจินตนาการ 1
5330091721 น.ส.ชญานิศ ปรีชานนท์ 1
5330121921 นายฐากูร เนียมเตียง 2
5330144321 นายณัฐพงษ์ เอกอัครโภคิน 4
5330147221 นายณัฐพล วนากิตติเสถียร 1
5330149521 น.ส.ณัฐรัตน์ แช่มปรีดา 1
5330151721 น.ส.ณัฐวรรณ เจริญกุลวณิชย์ 2
5330152321 น.ส.ณัฐวรินทร์ สุวรรณชัย 2
5330178721 นายทายาท ก่อศรีเจริญพันธ์ 4
5330183821 นายธนกร เวศย์วิบุล 3
5330184421 นายธนกฤต จวนกระจ่าง 1
5330191821 นายธนพล อมรทิพย์สกุล 1
5330195321 นายธนัชชัย ศิริวิชยกุล 3
5330208921 น.ส.ธัญชนก ธรรมสัญญา 1
5330214621 นายธาริน นัทธี 3
5330218121 นายธีรนนท์ สุโรจนกุล 3
5330231221 น.ส.นรมน สุทธิชาโต 3
5330264021 นายปริญญ์ จงภักดีพงศ์ 1
5330275921 นายปิติพล อุตราวิสิทธิกุล 4
5330277121 นายปิยนันท์ ศรีสิรินันท์ 3
5330287421 นายเผ่าพิชญ์ ศิริอาชาวัฒนา 1
5330288021 นายพงศกร เสถียรวิริยคุณ 2
5330308021 นายพสิษฐ์ คงคุณากรกุล 3
5330309621 นายพสิษฐ์ บูรณะกูล 3
5330315321 นายพาสูง ส่งศักดิ์สกุล 1
5330324021 น.ส.พิมพัฒน์ เทียวพนิชกิจ 4
5330329121 นายพีรพันธ์ วานิโชดม 1
5330345121 นายภัทรศัย มากเพ็ง 1
5330349721 นายภาณุเมธ เชษฐ์ประยูร 3
5330357721 นายภูรีวัฒน์ อภิบาลศรี 1
5330365721 นายมหัทธนา น้อมสวัสดิ์ 1
5330376621 นายริชญ์ รักษ์งาน 1
5330380021 นายเลิศบุรุษ อ่ำสุพรรณ 1
5330386921 นายวรท เลี่ยวไพโรจน์ 1
5330414821 นายวัชริศ มหฤทัยนนท์ 2
5330422821 นายวิทวัส โชคศิลปสาท 2
5330435021 นายวุฒิภัทร วัฒนาศรีโรจน์ 1
5330496221 นายสุทัศไนย หล้าธรรม 1
5330502321 น.ส.สุพิชชา ผดุงศิลป์ 1
5330558521 นายนรนาถ เวษฎาพันธุ์ 4
5331001421 นายกรกฤต สีมาคุปต์ 1
5331002021 นายกฤษกร สุริยากุลพานิช 2
5331003721 นายกฤษณพงษ์ รูปกลม 1
5331004321 นายกิตติ หฤทัยสดใส 4
5331005021 นายกีรติ พูนวัฒนชัย 2
5331007221 นายจักรพรรดิ์ สายทอง 3
5331008921 นายชนะชัย เลิศบุญยพันธ์ 3
5331009521 น.ส.ชัญญานุช จันทโชติวรรณ 3
5331010021 นายชินวัฒน์ เทพหัสดิน ณ อยุธยา 2
5331011721 นายฐิติพันธ์ วรรณกิจมงคล 4
5331013021 น.ส.ณฤทัย ทองผาสุข 4
5331015221 น.ส.ณัฐณิชา มณีแสง 2
5331016921 นายณัฐพัชร์ วงศ์สุพรชัย 1
5331018121 นายณัฐวัตร อำนวยหาญ 1
5331019821 นายณัฐวุฒิ คิดดี 2
5331020321 นายเตชิต ลิ้มติยะกุล 4
5331024921 นายธนดี หวังโรจนรัตน์ 1
5331025521 นายธนพล ตันตินิกร 1
5331026121 นายธนภัทร เรืองสาตรา 3
5331027821 นายธนวัฒน์ หล่อวิทยโอฬาร 1
5331028421 นายธนวุฒิ อนันต์พิริยะกุล 2
5331030621 นายธีรภัทร เก้าเอี้ยน 4
5331033521 นายนาถวัฒน์ คุณขุนทด 1
5331036421 นายปรัชญา วงษ์จงรัก 1
5331037021 น.ส.ปวีณา ปัชชา 3
5331039321 นายปิยะพันธ์ ภูมิศิริวิไล 2
5331040921 นายปิยะวัฒน์ สาครสุขกิจ 2
5331041521 นายปุณณวัชร จงพาณิชย์กุลธร 1
5331044421 น.ส.พิรญาณ์ วงษ์นิมมาน 1
5331045021 นายพีรณัฐ ชัยวิสุทธิ์ 3
5331046721 น.ส.แพรวพิสุทธิ์ ศรีอยู่พุ่ม 2
5331047321 นายภคภณ แก้วมาก 4
5331048021 นายภควัต ชุ่มเจริญ 4
5331050121 นายภากร สุระชิต 1
5331051821 นายภาสกร ทองสันตติ์ 1
5331052421 นายภาสันต์ จุลศักดิ์ศรีสกุล 4
5331054721 นายรชฎ มิ่งขวัญ 2
5331055321 นายรชต ต่อศิริสุข 2
5331056021 นายรชานันท์ สมุทรานุกูล 1
5331057621 นายระพีพันธ์ ดรุณกานต์ 4
5331058221 นายล่ำซำ ทองสีนุช 1
5331064021 นายศรัณยู งามสอาด 4
5331065621 นายศราวุฒิ เสาร์เทพ 4
5331067921 นายศุภกฤต บวรธรรมปิติ 1
5331069121 นายศุภวัฒน์ สุขสันติสวัสดิ์ 3
5331070721 นายสถาพร วิญญุนาวรรณ 1
5331072021 น.ส.สัญนันท์ ชูโชติแก้ว 1
5331073621 นายอนุชิต นิมิตสุขศรี 4
5331074221 นายอภิชัย ดอกไม้ 4
5331075921 นายอาวุฒิ เตชะวีรพงศ์ 3
5331076521 นายเอกสิทธิ์ จันทราวดี 2
5331077121 นายอิทธิวัฒน์ ขรขันฑ์ 3

Midterm score

5330001221 22.5
5330010921 19.5
5330032721 18.8
5330039121 21.4
5330056821 31.7
5330079221 21.7
5330087221 27.3
5330089521 26.3
5330091721 19.2
5330121921 20.6
5330144321 9.2
5330147221 21.6
5330149521 21.0
5330151721 24.3
5330152321 9.9
5330178721 27.6
5330183821 25.8
5330184421 17.7
5330191821 19.2
5330195321 24.3
5330208921 18.1
5330214621 10.1
5330218121 19.5
5330231221 4.1
5330264021 25.8
5330275921 17.3
5330277121 20.6
5330287421 29.8
5330288021 23.9
5330308021 21.7
5330309621 28.7
5330315321 20.6
5330324021 11.8
5330329121 20.6
5330345121 25.1
5330349721 22.5
5330357721 25.4
5330365721 27.6
5330376621 20.3
5330380021 18.4
5330386921 19.5
5330414821 15.8
5330422821 27.6
5330435021 26.2
5330496221 20.4
5330502321 22.5
5330558521 24.7
5331001421 25.4
5331002021 15.8
5331003721 25.8
5331004321 27.3
5331005021 10.7
5331007221 15.5
5331008921 27.6
5331009521 24.3
5331010021 29.8
5331011721 30.9
5331013021 17.7
5331015221 18.1
5331016921 28.4
5331018121 23.9
5331019821 30.6
5331020321 31.7
5331024921 31.7
5331025521 10.1
5331026121 30.2
5331027821 28.0
5331028421 31.3
5331030621 18.1
5331033521 17.7
5331036421 21.4
5331037021 15.1
5331039321 31.3
5331040921 31.3
5331041521 33.2
5331042121 0.0
5331044421 25.8
5331045021 30.2
5331046721 22.5
5331047321 26.0
5331048021 13.3
5331050121 16.9
5331051821 24.3
5331052421 25.8
5331054721 20.3
5331055321 25.1
5331056021 24.7
5331057621 15.5
5331058221 24.1
5331064021 11.8
5331065621 6.1
5331067921 30.6
5331069121 31.3
5331070721 25.4
5331072021 30.6
5331073621 6.6
5331074221 21.0
5331075921 32.4
5331076521 22.8
5331077121 21.0

mean 22.15
S.D. 6.91

Macbook Air – The Beginning (1)

วันนี้เราจะมากล่าวถึงที่มาที่ไป ว่าทำไมเราถึงได้ซื้อ Macbook Air เครื่องนี้
เริ่มจากวันหนึ่ง มี Vendor ชาวต่างชาติ เดินทางมาที่บริษัทเพื่อมาประชุมกับเรา
แล้วนายคนนี้ก็ใช้ Macbook Air เป็นเครื่องประจำตัว

เดิมที่ผ่านมา Macbook Air ในความคิดของเรา คือเครื่องคอมที่เท่ห์แต่กินไม่ได้
หมายความว่ามันเป็นผลิตภัณฑ์ที่เน้นรูปลักษณ์ภายนอกเพียงอย่างเดียว เอาไว้ให้ผู้บริหารใช้เชคเมล์ พร้อมจิบกาแฟไปด้วย
หรือเอาไว้ให้พวกมีเงินเหลือเฟือ ซื้อไว้เพื่อเอาไปเล่นอินเตอร์เนทที่ร้าน Starbucks

สรุปง่ายๆคือไม่เคยอยู่ในสายตา…

แต่แล้ววันนั้น พอเห็นฝรั่งมันใช้ เราก็เกิดไอเดียปิ๊งขึ้นมาทันที ว่าเฮ้ยยย … นี่แหละที่เรามองหา
มันน่าจะตอบโจทย์ในเรื่องเบา บาง จอใหญ่พร้อมความละเอียดสูง และที่สำคัญ Powerful ด้วย ซึ่งอย่างหลังสุดไม่เคยคิดว่ามันจะมีใน Macbook Air
ก็เลยถามมันเล่นๆ “เฮ้ ยู ไอ้นี่มันเท่าไหร่นะ?” .. มันก็ตอบมาว่า เออ ประมาณ 10,000 HK$ (เป็นฝรั่งแต่ทำงานอยู่ฮ่องกง) คิดๆเป็นเงินไทยน่าจะซักไม่เกิน 40,000 บาท
เออ แพงอยู่เหมือนกันนะ ราคานี้ ไอ้เราก็เลยไปเชคราคาดู ปรากฏว่าที่ Apple Store Thailand ขายอยู่ 42,900 บาทถ้วน ถึงกับหงายหลัง…
แต่ถ้าเทียบกับที่ Apple Store Hong Kong แล้ว ที่นั่นกลับราคาถูกกว่า
เอาเรทวันนั้นที่ดูผ่าน SuperRich คือ 3.85 บาทต่อ HK$ มาคูณก็จะได้ราคาที่ 9998×3.85 = 38500 บาท
ถูกกว่าซื้อเมืองไทย 4,400 บาท !!!!!!

คิดหนักสิทีนี้ ….. เอาไงดีน้า….. (จบตอนที่ 1)

 

It’s been quite some time, people…

ผ่านไปเกือบสองปีพอดี จากการ update blog  ครั้งสุดท้าย

จำไม่ได้แล้วว่าทำไมเลิก update ไป อาจจะเพราะเป็นช่วงเปลี่ยนแปลงของชีวิตก็ได้

ก็เลยวุ่นๆ แล้วก็หลงลืมไป อีกส่วนก็คงเป็นเพราะมี facebook เข้ามาแทนที่ ช่วงนั้นคนเล่นก็ยังไม่ค่อยเยอะเท่าไหร่

จนวันนี้ ผ่านไปสองปี แทบทุกคนมี facebook กันเป็นที่เรียบร้อย

 

ใช้ facebook ไปนานๆก็เริ่มคิดถึง blog .. เพราะอะไรที่เราเขียนในนั้นมันหายไปเร็วเหลือเกิน วันนึงมี update เป็นพันๆ แป๊ปเดียวก็หลุดหายไป

ไม่เหมือน blog ที่มันอยู่กับเรา กลับไปอ่านเมื่อไหร่ก็ได้ เขียนอะไรก็เขียนได้ยาวกว่า ถ่ายทอดอะไรได้ลึกซึ้งกว่ามากๆ

 

เอาล่ะ ปรกติเราก็จะเขียนแต่สิ่งที่สนใจ พวก gadget หรืออะไรประมาณนี้ ไหนๆพึ่งถอย macbook air มาเมื่อวันก่อน ก็เริ่มด้วยเรื่องนี้แล้วกันนะ

 

 

Senior Project Proposal :: Scene Augmentation from Visual Sensor

link > https://docs.google.com/document/d/1Ayz8rdGaDp8vUr8fk9jqbc5IwtcN00h-LArAGEsK66c/edit?hl=en_US&pli=1

และมีแนบไฟล์ word เพิ่มเติม เพื่อความสะดวกในการอ่านครับ

« Previous Entries Next Entries »