ข้ามไปที่เนื้อหาหลัก

JMS tutorial

1. ให้ JMS ใช้คนละ thread กับ glassfish
Configuration -> Java Message Service, set JMS service to "LOCAL" rather than "EMBEDDED."

restart glassfish server.

ลอง ping เด๊ะ

dsin@dsin-laptop:~/glassfish$ ~/glassfish/bin/asadmin jms-ping
JMS Ping Status = RUNNING
Command jms-ping executed successfully.
2. create new CF
- JNDI name
- type javax.jms.ConnectionFactory คือ อะไรก็ได้
create new DS
- JNDI name
- Physical destination name
- type javax.jms.Queue : point-to-point



Test first

create new java project
- project name
Add external JARs
  • glassfish/lib/javaee.jar
  • glassfish/lib/appserv-rt.jar
  • glassfish/lib/appserv-admin.jar
  • glassfish/lib/install/applications/jmsra/imqjmsra.jar
สร้าง jUnit test

- JUnit 4 test
- package
- name


public class ReqReplyTest extends TestCase {

private static final String CONNECTION_FACTORY_NAME = "jms/ConnectionFactory";

private static final String REQUEST_QUEUE_NAME = "jms/RequestQueue"; // ที่ config ใน jndi
private static final String REPLY_QUEUE_NAME = "jms/ReplyQueue";

private Connection connection;
private Session session;
private Destination replyQueue;
private MessageProducer requestProducer;
private MessageConsumer replyConsumer;

public void setUp() throws NamingException, JMSException { // setUp
// Get connection factory for the local JMS server
Context jndiContext = new InitialContext();
ConnectionFactory connectionFactory =
(ConnectionFactory)jndiContext.lookup( CONNECTION_FACTORY_NAME ); //

// Get connection to the JMS server
System.out.println( "Creating connection" );
connection = connectionFactory.createConnection();

// Create a session on the connection that is not transacted
System.out.println( "Creating session" );
session = connection.createSession( false, Session.AUTO_ACKNOWLEDGE ); // Session.AUTO_ACKNOWLEDGE, false = non-transaction

// Set up a message producer or consumer for each queue
Destination requestQueue = (Destination)jndiContext.lookup( REQUEST_QUEUE_NAME ); // jndiContext.lookup
requestProducer = session.createProducer(requestQueue); // createProducer(requestQueue), new producer
replyQueue = (Destination)jndiContext.lookup( REPLY_QUEUE_NAME );
replyConsumer = session.createConsumer(replyQueue); // .createConsumer(replyQueue), new consumer

// Enable receipt of messages on this connection
connection.start(); //
}

// Test request-reply pattern
public void testReqReply() throws JMSException {

// Send a message using the request queue
TextMessage requestMessage = session.createTextMessage();
requestMessage.setText("Hello world."); // setText
requestMessage.setJMSReplyTo(replyQueue); // setJMSReplyTo, set return address
requestProducer.send(requestMessage); // send

// Output sent message
System.out.println("Sent request");
System.out.println("\tTime: " + System.currentTimeMillis() + " ms");
System.out.println("\tMessage ID: " + requestMessage.getJMSMessageID()); // JMSMessageID
System.out.println("\tCorrel. ID: " + requestMessage.getJMSCorrelationID()); // JMSCorrelationID
System.out.println("\tReply to: " + requestMessage.getJMSReplyTo()); // JMSReplyTo
System.out.println("\tContents: " + requestMessage.getText()); // Text

// "Block" until a reply is received on the reply queue
System.out.println("Waiting for response...");
Message msg = replyConsumer.receive();
assertTrue( msg instanceof TextMessage ); // instanceof TextMessage

// Output the reply message
TextMessage replyMessage = (TextMessage)msg; // (TextMessage)
System.out.println("Received reply ");
System.out.println("\tTime: " + System.currentTimeMillis() + " ms");
System.out.println("\tMessage ID: " + replyMessage.getJMSMessageID());
System.out.println("\tCorrel. ID: " + replyMessage.getJMSCorrelationID());
System.out.println("\tReply to: " + replyMessage.getJMSReplyTo());
System.out.println("\tContents: " + replyMessage.getText());
}

// Clean up code run after every test
public void tearDown() throws JMSException { // tearDown()
connection.close(); //
}
}

สร้าง EJB project ชื่อ request-reply-ejb
สร้าง class

package ait.jmstutorial.messagebeans;

// MessageDriven bean
@MessageDriven( mappedName = "jms/RequestQueue", activationConfig = { // jms/RequestQueue, listen to Request
@ActivationConfigProperty( propertyName="destinationType", propertyValue="javax.jms.Queue" ), Queue, point-to-point
@ActivationConfigProperty( propertyName="acknowledgeMode", propertyValue="Auto-acknowledge")
})


public class ReplierBean implements javax.jms.MessageListener {
@Resource(mappedName="jms/ConnectionFactory")
private ConnectionFactory connectionFactory;

@Resource( mappedName = "jms/InvalidQueue" )
private Destination invalidDestination;

public void onMessage( Message message ) { // onMessage
try {
// Get JMS connection and session
// send reply message
Connection connection = connectionFactory.createConnection();
Session session = connection.createSession( true, 0 );

// Check validity of message
if ((message instanceof TextMessage) && (message.getJMSReplyTo() != null)) { // instanceof TextMessage, getJMSReplyTo() != null
TextMessage requestMessage = (TextMessage) message;

System.out.println("Received request");
System.out.println("\tTime: " + System.currentTimeMillis() + " ms");
System.out.println("\tMessage ID: " + requestMessage.getJMSMessageID());
System.out.println("\tCorrel. ID: " + requestMessage.getJMSCorrelationID());
System.out.println("\tReply to: " + requestMessage.getJMSReplyTo());
System.out.println("\tContents: " + requestMessage.getText());

String contents = requestMessage.getText(); // getText()
Destination replyDestination = message.getJMSReplyTo(); // getJMSReplyTo()

MessageProducer replyProducer = session.createProducer( replyDestination );
TextMessage replyMessage = session.createTextMessage();
replyMessage.setText(contents); // send hello world back
replyMessage.setJMSCorrelationID(requestMessage.getJMSMessageID()); // setJMSCorrelationID
replyProducer.send(replyMessage);

System.out.println("Sent reply");
System.out.println("\tTime: " + System.currentTimeMillis() + " ms");
System.out.println("\tMessage ID: " + replyMessage.getJMSMessageID());
System.out.println("\tCorrel. ID: " + replyMessage.getJMSCorrelationID());
System.out.println("\tReply to: " + replyMessage.getJMSReplyTo());
System.out.println("\tContents: " + replyMessage.getText());
} else { // if sth wrong
System.out.println("Invalid message detected");
System.out.println("\tType: " + message.getClass().getName());
System.out.println("\tTime: " + System.currentTimeMillis() + " ms");
System.out.println("\tMessage ID: " + message.getJMSMessageID());
System.out.println("\tCorrel. ID: " + message.getJMSCorrelationID());
System.out.println("\tReply to: " + message.getJMSReplyTo());
// send msg to invalidDestinationQueue
message.setJMSCorrelationID(message.getJMSMessageID());
MessageProducer invalidProducer = session.createProducer( invalidDestination );
invalidProducer.send(message);

System.out.println("Sent to invalid message queue");
System.out.println("\tType: " + message.getClass().getName());
System.out.println("\tTime: " + System.currentTimeMillis() + " ms");
System.out.println("\tMessage ID: " + message.getJMSMessageID());
System.out.println("\tCorrel. ID: " + message.getJMSCorrelationID());
System.out.println("\tReply to: " + message.getJMSReplyTo());
}
session.close();
connection.close( ); // don't forget to close
} catch(Exception e) {
throw new EJBException(e);
}
}
}


Export to glassfish
/domains/domain1/autodeploy

run as > junit test

>> console
Creating session
Sent request
Time: 1236931646622 ms
Message ID: ID:43-127.0.1.1(c8:26:59:71:1:62)-59395-1236931646585
Correl. ID: null
Reply to: Sun Java System MQ Destination
getName(): ReplyQueue
Class: com.sun.messaging.Queue
getVERSION(): 3.0
isReadonly(): false
getProperties(): {imqDestinationName=ReplyQueue, imqDestinationDescription=A Description for the Destination Object}
Contents: Hello world.
Waiting for response...
Received reply
Time: 1236931646935 ms
Message ID: ID:223-127.0.1.1(dc:8d:ed:1a:1:49)-35614-1236931646903
Correl. ID: ID:43-127.0.1.1(c8:26:59:71:1:62)-59395-1236931646585
Reply to: null
Contents: Hello world.


notice that Msg id อันที่สอง ตรงกับ corelation id in request

Message ID: ID:43-127.0.1.1(c8:26:59:71:1:62)-59395-1236931646585
Correl. ID: null


Correl. ID: ID:43-127.0.1.1(c8:26:59:71:1:62)-59395-1236931646585




>> glassfish server log
 INFO: Received request
INFO: Time: 1236931646900 ms
INFO: Message ID: ID:43-127.0.1.1(c8:26:59:71:1:62)-59395-1236931646585
INFO: Correl. ID: null
INFO: Reply to: Sun Java System MQ Destination
getName(): ReplyQueue
Class: com.sun.messaging.Queue
getVERSION(): 3.0
isReadonly(): false
getProperties(): {imqDestinationName=ReplyQueue, imqDestinationDescription=A Description for the Destination Object}
INFO: Contents: Hello world.

INFO: Sent reply
INFO: Time: 1236931646909 ms
INFO: Message ID: ID:223-127.0.1.1(dc:8d:ed:1a:1:49)-35614-1236931646903
INFO: Correl. ID: ID:43-127.0.1.1(c8:26:59:71:1:62)-59395-1236931646585
INFO: Reply to: null
INFO: Contents: Hello world.


ref : mdailey

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

ส่งไปรษณีย์ทีละมากๆ ที่ช่องไปรษณีย์สำหรับธุรกิจ

  ถ้าเราส่งไปรษณีย์ทีละ 10 กล่องขึ้นไป สามารถไปส่งโดยใช้ช่องทางธุรกิจได้ โดยต้องกรอกใบรับฝากรวม ( Receipt for bulk Posting ) เป็นลิสต์รายการให้เขาไปด้วย โดยกรอกพัสดุแต่ละรายการ และ ไปยื่นให้เขาพร้อมกับพัสดุที่จะส่ง วิธีกรอก คือ ให้กรอกพัสดุแบบเดียวกันไว้แผ่นเดียวกัน  เช่น พัสดุ10 กล่อง กล่องขนาดเท่ากัน น้ำหนักเท่ากันหมด กรอกไว้ 1 แผ่น ถ้าน้ำหนักต่างกัน ขนาดกล่องต่างกัน กรอกแยกแผ่นไว้ดีที่สุด ซึ่งใบนี้สามารถไปขอได้ที่ไปรษณีย์ฝ่ายธุรกิจ สามารถนำมาทำใส่ A4 ก็ได้ ขอบคุณคุณพี่ amarin.ch ที่ไปรษณีย์กลาง ( BANGKOK G.P.O. ) มากๆ นะครับ สำหรับคำแนะนำ ขอบคุณที่ช่วยคีย์ให้ทีละรายการสำหรับมือใหม่ที่ยังไม่รู้ว่ามีใบรับฝากรวมอย่างผมด้วยครับ คราวหน้าผมจะทำใบรับฝากรวมไปครับ

อยู่เหงาๆ เราไปเที่ยว - ไหว้พระขอพร ศาลเจ้าแม่ทับทิม (อาม่า), เจริญกรุง, กรุงเทพ; 天后聖母廟, 石龙軍路, 曼谷, 泰国; Thap Thim Chinese Goddess Shrine, Chareon Krung 63 Road, Bangkok, Thailand

天后聖母廟, 石龙軍路, 曼谷, 泰国 ไหว้ศาลเจ้าแม่ทับทิม ขอให้การค้าเจริญรุ่งเรือง ตำนานเจ้าแม่ทับทิมเกิดที่ตำบลตุ้ยบ๊วย เขตบ่นเซียว เกาะไหหลำ มีผู้เฒ่าแซ่พัว เป็นผู้มีความซื่อสัตย์สุจริต ทำงานขยันขันแข็ง ครั้งหนึ่งแกออกไปหาปลา โดยผูกแหเป็นช้อนดักปลา เวลาผ่านไปแกยังหาปลาไม่ได้ คืนนั้นก็ประสบความล้มเหลว เมื่อช้อนแหขึ้นมาทีไรก้อมีแต่ท่อนไม้ ด้วยความโมโหแกเลยขว้างท่อนไม้นั้นออกไปให้ไกล แต่แล้วเมื่อช้อนแหขึ้นมาใหม่ก็ปรากฏท่อนไม้ท่อนเดิมอีก ต่อจากนั้นแกก็ขว้างท่อนไม้ขึ้นฝั่ง และแกก็ฉุก คิดว่าแปลกที่ท่อนไม้ธรรมดาจะสามารถลอยทวนน้ำได้ คงจะเป็นสิ่งวิเศษ และแกก็ได้นำท่อนไม้นั้นขึ้นฝั่ง และเพ่งมองท่อนไม้นั้นพร้อมกับอธิษฐานว่า หากท่อนไม้นี้มีความศักดิ์สิทธิ์ขอให้คืนนี้จับปลาได้มาก เมื่อพ้นจากความจนแล้ว เมื่อขึ้นฝั่งจะนำท่อนไม้นี้แกะสลักเป็นเทวรูปศักดิ์สิทธิและสักการะบูชาเช้าวันไม่ให้ขาด เมื่ออธิษฐานจบแกเอาท่อนไม้นั้นวางบนหัวเรือ ปรากฏว่าช้อนเพียงสองถึงสามครั้งก็ได้ปลาตัวโตเต็มเรือ จึงนำปลาขึ้นฝั่งวันนั้นปลาของแกขายได้ราคา เพราะชาวประมงคนอื่นจับได้น้อยแกจึงมีเงินจับจ่ายใช้สอย และทุกครั้งที่แกออกหาปลา ...

เบื่อๆ ไปเที่ยวสิ รวมที่เที่ยวที่อยากไป เวลาเปิด แล้ว แผนที่

ที่เที่ยว ใน กรุงเทพ ที่น่าไป พิพิธภัณฑ์สยาม ที่อยู่ : กระทรวงพาณิชย์เดิม ใกล้วันโพธิ์ ตรงข้ามโรงเรียนวัดราชบพิตร เวลาทำการ : จันทร์ ปิด อังคาร - พฤหัสบดี 09.30 - 18.00 ศุกร์ 09.30 - 21.00 เสาร์ - อาพิตย์ 09.30 - 19.00 Official Web : คลิก ไปมาแล้ว ตามนี้ หอศิลปวัฒนธรรมแห่งกรุงเทพมหานคร (BMA Contemporary Art Museum) หรือ หอศิลป์กรุงเทพฯ เวลาทำการ : จันทร์ ปิด วันอื่นๆ 10.00 - 21.00 น. Official web : คลิก ไปมาแล้ว ตามนี้ สวนสัตว์ดุสิต หรือ เขาดิน วันก่อนโน้นผ่าน เห็นว่าทำใหม่แล้ว ประตูเข้าอลังการมาก เลยอยากเข้าไปดู เวลาทำการ 08.00-18.00 น. ทุกวัน Official web : คลิก ไปมาแล้ว ตามนี้ วัดสระเกศ ภูเขาทอง เปิดให้เข้าชมตั้งแต่เวลา 07.30 – 17.30 น. น่าจะมีงานวัดช่วงลอยกระทง ( ต้นๆ พ.ย. ) ด้วยนะ น่าไปๆ แผนที่ จ้ะ ไปมาแล้ว ตามนี้ ( แต่ไม่ได้ไปตอนมีงาน ) ตำหนัก โชคชัย 4 และ พระมหาเจดีย์พระพุทธเจ้าหมื่นพระองค์ ที่อยู่ : 4/37 ซอยสุขสันต์ 7 ถนนลาดพร้าว 53 (โชคชัย 4) อ.ลาดพร้าว โทร. 66 2 5140715 , 66 2 5389368 แผนที่ จ้ะ ไปม...

เทคนิคคิดเลขเร็วโดยใช้ วิธีคิด แบบ เวทคณิต ( Vedic Mathematics example )

จากที่สงสัยเรื่อง ลูกคิด ของ จินตคณิต ที่ลองไปค้นดู ปรากฎว่า เจอ เวทคณิต ซึ่งเขาบอกว่า อยู่ในคัมภีร์พระเวท ลองอ่านดูแล้ว รู้สึกว่าฝึกสมอง ก็ทำให้คิดเลขเร็วดี เลยสรุปมาให้ ตามนี้ Tutorial 1 การลบเลข ALL FROM 9 AND THE LAST FROM 10 ทุกตัวลบจาก 9 และตัวสุดท้ายลบจาก 10 เช่น 1000 - 357 = 643 10,000 - 1,049 = 8951 ถ้า 1,000 - 83 ให้มองว่ามี 0 อยู่ข้างหน้า เป็น 1,000 - 083 = 917 ฝึกบ่อยๆ ก็คล่อง แล้วก็ไม่ต้องใช้เครื่องคิดเลขด้วย ลองทำดูสิ 1) 1000 - 777 = 2) 1000 - 283 = 3) 1000 - 505 = 4) 10,000 - 2345 = 5) 10,000 - 9876 = 6) 10,000 - 1011 = 7) 100 - 57 = 8) 1000 - 57 = 9) 10,000 - 321 = 10) 10,000 - 38 = 3,000 - 467 ก็ทำเหมือนกัน โดยลบตัวแรกสุดของ 3,000 ไป 1 จากนั้นก็ทำเหมือนเดิม จะได้ว่า 3,000 - 467 = 2,533 Tutorial 2 VERTICALLY AND CROSSWISE สำหรับตัวเลขที่น้อยกว่าฐานนิดหน่อย ลอง 88x98 88 น้อยกว่า 100 อยู่ 12 98 น้อยกว่า 100 อยู่ 2 12x2 = 24 88-2 หรือ 98-12 ได้ 86 ดังนั้นตอบ 8,624 ดูอีกตัวอย่าง หรือ ลองทำนี่ดู 1) 87 x 98 = 2) 88 x ...

20 th century boys movie ( 20世紀少年, Nijisseiki Shōnen )

โอ ว้าววว มีภาคโ รงหนังด้วย เห็นเขาว่า ทำเป็น 3 ภาค ภาคแรก ฉาย 30 สิงหาคม 2008 นี้แล้ว ถ่ายใน 7 ประเทศ ซึ่งแน่นอนว่า ต้องมีประเทศไทยด้วยแน่นอน theme song “20th Century Boy” ร้องโดย วงร๊อกอังกฤษ T.Rex ดูหน้าคนเล่นกันดีกว่า casting เอ็นโด เคนจิ แสดงโดย Toshiaki Karasawa โอตโจะ แสดงโดย Etsushi Toyokawa ยูคิจิ แสดงโดย Takako Tokiwa โยชิสึเนะ แสดงโดย Teruyuki Kagawa มารุโอะ แสดงโดย Hidehiko Ishizuka เคโรยอน แสดงโดย Hiroyuki Miyasako ดองกี้ แสดงโดย Katsuhisa Namase ยามาเนะ แสดงโดย Fumiyo Kohinata ฟุคุเบ แสดงโดย Kuranosuke Sasaki มันโจเมะ อินชู แสดงโดย Renji Ishibashi พระเจ้า เอ็นโด คิริโกะ แสดงโดย Hitomi Kuroki มาซาโอะ ทามุระ แสดงโดย ARATA มอนจัง แสดงโดย Takashi Ukaji แม่ของเคนจิ นักแสดงอื่นๆอีก ตัวละคร 300 กว่าตัว Match หน้ากับชื่อ ไม่ถูกกันเลยทีเดียว Nana Katase - Mika Shikishima Chizuru Ikewaki - part-time worker Erika Mirai Moriyama - mangaka Kameda Yu Tokui - convenience store employee Miyako Takeuchi - Setsuko Ichihara Yoriko Doguchi - Mitsuko Kido Kenichi Endo - bloody man Ke...

อยู่เหงาๆ เราไปเที่ยว - วัดอรุณราชวราราม ( วัดแจ้ง ) + วัดสระเกศ ( ภูเขาทอง )

เอนทรีนี้เป็นส่วนหนึ่งของ serie ท่องเที่ยว ดูบทความท่องเที่ยว อื่นๆ ของผม ได้ที่  ลิงก์นี้  นะครับ คำเตือน เอ็นทรีนี้รูปเยอะมากกกก ควรปิดบิตก่อนดู ผ่างๆๆ ท่านสามารถรับชมเอนทรีนี้ผ่าน url http://tinyurl.com/goldenMount ได้ด้วย วันนี้ตั้งใจไปวัดอรุณฯ เดินทางทางน้ำเหมือนเดิม แต่คราวนี้นั่งเรือ ธงสีฟ้า ( คราวก่อน นั่งเรือ ธงสีส้ม ) พอถึงท่าสาทร เขาบอกว่า ให้ลงลำที่จอดอยู่ได้เลย เก็บตังในเรือ ก็ งงๆ เดินลงไป เหมือนเดิมครับ ชูชีพอยู่ใต้ที่นั่งของท่าน พอเรือออกสักพัก มีไกด์ มาบรรยาย อ้าว กรำ ขึ้นผิดเรือรึเปล่า นี่มันเรือท่องเที่ยว 150 บาท ไม่ใช่เร๊อะ กะลังอึ้งๆอยู่ แต่พอไกด์พูดไปสักพัก ก็เลยรู้ว่า 150 บาท มันราคาเหมาวัน แล้วก็ได้ความรู้ของท่าเรือ แล้วก็สองข้างทาง เรือธงฟ้านี่มันไปสุดที่ท่าพระอาทิตย์เท่านั้นเองนะ แล้วก็กลับ ตอนไปมีสาวคนนึง ถามว่า จะไปวัดสระเกศ ไปทางไหน ถ้าฟังไม่ผิด คนเก็บตังบนเรือ บอกว่า ท่ามหาราช จากนั้นก็คุยอะไรกันไม่รู้ ไม่ได้ยินแล้วล่ะ เรือธงฟ้า มันใหญ่กว่า น่าหวาดเสียวน้อยกว่า น้ำกระเด็นน้อยกว่า แพงกว่า...

[ AI ] IBM granite, NVIDIA robotics, IBM Langflow, watsonx, LMCache, LiteRT, Self driving car, Mamba model, RAG

 IBM granite: Time series from sensor, stock market * Forcast * Anomaly detection - classification high medium risk, data synthesis Embedding AI - 1M params - edge device - small AI Send insight --- NVIDIA * Jackson Thor robotic * Nemo ---- * IBM Langflow : open source * Watsonx (n8n) Enterprise : guardrails / log, tool using policy ----- LMcache : open source KC cache Prompt -> key value (RAGs) Same context ( e.g. same docs) Reduce operating costs CacheGen : make cache cheap to move and store CacheBlend : reuse chunk, not just prefix ---- Google มี framework ที่ optimize AI บน mobile phone นั่นคือ LiteRT : google pytorch Quantisation เท่าไหร่บน device นี้ Model explorer: quantize แล้ว error < 5% XMNpack ใช้ CPU ลดลง Google AI edge portal : benchmark AI on real device ---- Self driving car * Nvidia Alpamayo 2 model * Carla simulation Random forest -> multiple scenarios -> json -> LLM Car talk to mobile phone (cross the road) ----- Mamba model (recursive)  - alte...

อยู่เหงาๆ เราไปเที่ยว - Museum Siam มิวเซียม สยาม

เอนทรีนี้เป็นส่วนหนึ่งของ serie ท่องเที่ยว ดูบทความท่องเที่ยว อื่นๆ ของผม ได้ที่  ลิงก์นี้  นะครับ เมื่อวานนี้เอง คิดครึ้มอกครึ้มใจ เปิดเวป Museum Siam ขึ้นมาดู เพราะว่า เกิดอยากไปถ่ายรูปขึ้นมา หลังจากที่เคยไป ครั้งแรก ตอนที่พิพิธภัณฑ์เพิ่งเปิดใหม่ๆ ตอนหลังๆ ยุ่งๆ เลยไม่ได้แวะไป คราวนี้ไปได้อย่างเชี่ยวชาญมาก เพราะว่า แถวนั้นไปบ่อยขึ้น ทั้ง วัดพระแก้ว วัดโพธิ์ และ มธ. ท่าพระจันทร์ ที่เราเองได้แวะเวียนไปบ่อยขึ้นมากๆ เข้าเรื่องดีกว่า พอเปิดเวปของ Museum Siam ปุ๊ป ก็เจอ เทศกาลงาน รักสร้างสรรค์ สยาม ซึ่งจัดขึ้นในวันที่ 17-18 กันยายน 2554 นี้เอง มีศิลปินไปมากมายน้ะจ้ะ จากเทศกาลนี้เอง เขาเลยให้ พิพิธภัณฑ์สยาม เข้าฟรี ในสองวันดังกล่าว ซึ่งเราเอง รู้สึกว่าโชคดีเด้งสอง จาก เด้งแรก ตอนไป เมืองโบราณ ที่เขาได้อัญเชิญ พระบรมสารีริกธาตุ มาประดิษฐานให้คนกราบไหว้บูชา พิพิธภัณฑ์สยาม ปรับปรุงตึก อาคารสำนักงานปลัดกระทรวงพาณิชย์เดิม ที่สร้างมาตั้งแต่สมัย รัชกาลที่ 6 โน่น มีพื้นที่ประมาณ 7 ไร่ อยู่ตรงท่าเตียน ข้างวัดโพธิ์ ถนนสนามชัย ซึ่งเราเอง ก็เข้าไปเดินเล่น ในส่วนของ งาน นิ...

อยู่เหงาๆ เราไปเที่ยว - มูลนิธิเผยแผ่คุณธรรมเพื่อการสงเคราะห์ "เต็กก่า จีจินเกาะ" (Chee Chin Khor Moral Uplifting Societies)

เอนทรีนี้เป็นส่วนหนึ่งของ serie ท่องเที่ยว ดูบทความท่องเที่ยว อื่นๆ ของผม ได้ที่  ลิงก์นี้  นะครับ คำเตือน ! เอนทรีนี้ รูปเยอะมากกกก ควรปิดบิตก่อนดู alternative URL : http://tinyurl.com/cheeChinKhor เสาร์ก่อนไปเที่ยวมา ผ่างงงง . . . ดูรอบๆก่อนละกัน สุดๆ หยั่งกับไปเมืองจีน จริงๆ เจดีย์นี้ เห็นตอนแล่นเรือตรง แม่น้ำเจ้าพระยา ได้สักพักหนึ่งแล้วนะ บังเอิญเจอในเวป เลยแวะไปสักหน่อย สุดยอด ใกล้บ้านด้วยๆ อันนี้ต้นอะไรไม่รู้ แปลกดีๆ ต้นไม้นี้ เขาทำเป็นหน้า ไว้ที่กิ่งมันด้วย ดูใกล้ๆ มีความหมายว่าไงไม่รู้แหะ ริมน้ำๆ โว้วววว ศาลาริมน้ำ ไปดูในเจดีย์กันดีกว่าๆ พระมหาธาตุเจดีย์พระจอมธาตรีไทยจีนเฉลิม สมเด็จพระมหาสังฆราช สกลมหาสังฆปรินายก ถวายให้ ในหลวง ตอนเฉลิมพระชนมพรรษา 6 รอบ พระยิ้ม บันได ก็เป็นบันไดวนๆ ขึ้นไป ใต้บันไดเป็นภาพวาด แล้วก็มีบทกวี แต่ละชั้น ภาพวาดก็ไม่เหมือนกัน นี่ชั้นอื่นๆ เราไปวันเสาร์ ไม่ค่อยมีคนเท่าไหร่ เห็นเขาบอกว่า ปิด สี่โมง แล...

อยู่เหงาๆ เราไปเที่ยว - หอศิลป์ กรุงเทพฯ BACC ( BANGKOK ART AND CULTURE CENTRE ) : Soft Power

เอนทรีนี้เป็นส่วนหนึ่งของ serie ท่องเที่ยว ดูบทความท่องเที่ยว อื่นๆ ของผม ได้ที่  ลิงก์นี้  นะครับ BACC หอศิลป์กรุงเทพฯ เป็นอะไรที่ไปบ่อยม๊ากกก เนื่องจากเราไปสยามบ่อยนั่นเอง BACC ( BANGKOK ART AND CULTURE CENTRE ) is the place where I usually go, since it is near Siam Square . งานแสดงเขาก็เวียนไปเรื่อยๆ ไปกี่ทีก็ไม่เบื่อ There are exhibitions all the year. อย่างอันนี้เป็นงานแสดง ที่ชื่อ Soft Power น้ะจ้ะ This is one of the exhibition there, called "Soft Power". ถ่ายไว้นานแล้วแหล่ะ I took these photos long time ago. พอจะ rewrite  บล็อกโพสนี้  เห็นว่า หอศิลป์ มันชี้ไปที่ นี่  ซึ่งมีแต่ text น้ะจ้ะ ไม่งามหูงามตา เลยเอาอันนี้มาลงไว้ดีกว่า When I rewrite  this blog post , I noticed that the Art center in the article is linking to  this post , which contains only characters. It is not so beautiful, so I design to write this article. นี่เป็นอีกหนึ่งงานที่ ไปแล้วประทับใจนะครับ พอเดินเข้าไป เหมือนกับ...