Natty’s blog

Stay hungry. Stay foolish. — Steve Jobs

Archive for the ‘configuration’ Category

[twitter] facebook-twitter

Posted by natty on May 17, 2009

ด้วยความพยายามจะ sync facebook กับ twitter เข้าด้วยกัน เพื่อที่จะอัพเดท status ครั้งเดียวแล้วไปอัพเดททั้ง facebook และ twitter  ซึ่งตอนนี้ก็ทำได้แล้วโดยที่

  • อัพเดทจาก twitter แล้วจะไปอัพเดท status ใน facebook อัตโนมัติ
  • อัพเดทจาก twitter application ใน facebook แล้วไปอัพเดทใน twitter อัตโนมัติ
  • อัพเดทจาก facebook status แล้วอัพเดทอัตโนมัติใน twitter <– ยังไม่แน่ใจว่าได้หรือยัง

อ่ะ ก่อนอื่น มาทำให้อัพเดทจาก twitter ไป facebok ก่อนละกัน ง่ายๆ เลย แค่ใช้ application:http://apps.new.facebook.com/twitter/ ใส่ user/pass ของ twitter ของคุณ แค่นี้ก็เสร็จแล้ว หากคุณอัพเดท twitter จากหน้า application ใน twitter ใน facebook นี้ ก็จะไปอัพเดทใน twitter ของคุณ และจากคุณอัพเดทจาก twitter นอก facebook มันก็จะอัพเดทไปถึง facebook status เลย

และวิธีทำให้ อัพเดทจาก facebook status แล้วไปอัพเดท twitter อัตโนมัติ ทำได้ดังนี้ค่ะ

  1. เข้า twitter feed:http://twitterfeed.com แล้ว login เข้า twitterfeed (กรณีนี้เก๋ใช้ openid ในการ login ค่ะ)
  2. เลือก go to my twitterfeeds
  3. เลือก create new feed
  4. เอาลิงค์ไปใส่ที่ RSS feed url โดยไปที่หน้า facebook ของตัวเอง เข้าลิงค์ http://www.facebook.com/notifications.php แล้วไปที่ your notification ด้านล่างขวา ให้ copy ลิงค์นั้นมา
  5. ตั้งค่าตามต้องการ

หวังว่าคงเป็นประโยชน์กับทุกท่านนะจ้ะ

ส่วนหนึ่ง อ้างอิงจากที่นี่ค่ะ http://blog.kristibarrow.com/2008/11/19/how-to-update-twitter-with-your-facebook-status/

Posted in configuration | Leave a Comment »

[Resin] JasperReport on resin

Posted by natty on September 25, 2008

หากเราไม่มี jasperserver บน resin แล้วเราต้องการให้มันสามารถใช้งานกับ .jrxml และ compile ได้ เราจำเป็นจะต้องมี lib ดังต่อไปนี้ หากต้องการใช้ในทุก project ก็เอาไปวางไว้ที่ resin/lib

common-collection
common-logging
poi
iReport
commons-javaflow
itext
jasperreports
common-digester
common-beanutils

java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
เกิดจากการไม่มี common-logging

javax.servlet.ServletException: net.sf.jasperreports.engine.JRException:java.lang.reflect.InvocationTargetException
สาเหตุหนึ่งอาจ เกิดจากการไม่มี common-collection

Posted in configuration, resin | 2 Comments »

[Resin] PHP in Java: Natty & Juacompe discussion

Posted by natty on September 24, 2008

เนื่องมาจาก natty ที่พอจะมีความรู้เรื่อง resin เท่าหางอึ่ง + PHP อยู่บ้าง บวกกับ juacompe ที่อัดแน่นไปด้วยความรู้เกี่ยวกับ server ที่ใช้ run java ทำให้วันนี้ก็เกิดความเข้าใจมากขึ้นกับ PHP in Java ใน resin

หากเราต้องการทำให้ java ของเราถูกเรียกโดย PHP ได้ ต้องทำให้ class นั้น extends AbstractQuercusModule และมี method ที่รับ parameter env ซึ่งเป็น quercus environment resources หรือไม่ก็ต้องสร้าง class ไว้แล้วให้มาสร้าง instant อยู่ใน class นี้

code ด้านล่างเป็นเป็น code ที่สร้าง method ขึ้นมาเพื่อให้ถูกเรียกจาก PHP ได้ ชื่อ method ว่า hello_test โดยจะเห็นว่ามันจะรับตัวแปร env ด้วย โดย class นี้อยู่ใน package example

 package example;

import com.caucho.quercus.env.Env;
import com.caucho.quercus.module.AbstractQuercusModule;

public class HelloModule extends AbstractQuercusModule {
   /*
   ** Notice the careful use of the naming
   ** convention hello_test.  This is done
   ** in order to prevent name collisions
   ** among different libraries.
   **
   ** @param env provides access to Quercus environment resources
   ** @param name
   */
   public String hello_test(Env env, String name)
   {
     env.println("inside HelloModule  hello_test()");
     return "Hello, " + name;
   }
} 

สิ่งที่สำคัญคือ ต้องสร้างไฟล์ชื่อ com.caucho.quercus.QuercusModule ไว้ที่ classes/META-INF/services โดยใส่ชื่อ package.class เอาไว้

 example.HelloModule 

ตอนหน้าค่อยต่ออีก….นี่เป็นเพียง study ยังไม่ได้ทดสอบเลยว่าทำต่างจากนี้แล้วจะพังป่าว

Posted in PHP, configuration, java | Leave a Comment »

[Resin] compile simple Java on Resin

Posted by natty on September 23, 2008

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

เรื่องมีอยู่ว่า จะพยายามเอา PHP ไปเรียก Jasper report ให้ได้ เพราะอุตส่าห์ทำ environment ตั้งไว้หมดแล้ว ลง resin server เอาไว้แล้วด้วย แต่เหลือแค่ยังไม่ได้ test ว่าใช้งานได้ไหม

และก็เพิ่งมาค้นพบตัวเองว่า ไม่เคยเอา simple java มารันบนนี้เลย แต่เคยเอา PHP ไปเรียก class java สำเร็จแล้ว – -”

ระหว่างทางก็เจอปัญหาปัญญาอ่อนมากมาย ถ้าคิดออกจะบอกเรื่อยๆ

สิ่งที่ทำคือ เอา Java App ที่รันอยู่บน JBoss มารันบน resin แล้ว structure มันก็ไม่เหมือนกัน สรุปคือจริงๆ ก็เหมือนๆ กันทุก container คือ เอา class ไปวางไว้ที่ classes folder ปกติบน JBoss มันจะแยก .java กับ .class เอาไว้คนละ folder (.java in src และ .class in build) แต่โดย default ของ resin มันจะอยู่ใน classes folder หมดเลย ตอนแรกหลงทางไปใหญ่ คิดว่าจะต้อง extends พวก quercus method อะไรด้วย สรุปแล้วไม่มีอะไร งงไปเอง – -”

แต่!!!!!!!!!!!!!! มันจะไม่ compile Java ให้เราเลย หากเราไม่ไปกำหนด webapp-id เอาไว้ใน /var/resin/conf/resin.xml (สำหรับ PHP ไม่มีปัญหาอะไร เพราะมันไม่ต้อง compile .java->.class เลยเอา app ไปวางได้โดยไม่ต้องกำหนดที่ resin.xml)

<web-app id="/test" root-directory="webapps/ROOT/test" archive-path="webapps/ROOT/test.war"/>

อ่อ หากเรารัน web ขึ้นมา แล้วมันบอกว่า permission denied ไม่สามารถเขียนไฟล์ .class ได้ ให้เราไป chown -R ให้ folder ที่จะเขียน .classes ก่อน

และอย่าลืมว่า java ต้องอยู่ใน package มิฉะนั้นมันจะไม่ถูก compile

Why do I have to put my classes in a package?

If I make a class that is not in a package, Resin does not recognize it and does not load it.

Starting with Java 1.4 the use of classes that are not in a package (sometimes called the “default” package”) is deprecated. Java classes should always be in a package. In some version of Java, packageless classes are not going to be supported at all.

The solution is to put all of your classes in a package.

See http://java.sun.com/j2se/1.4/compatibility.html, point #8, second bullet point.

สิ่งของที่อยู่ใน WebContent ของ jboss ก็เอาออกมาอยู่ path นอกสุดได้ตามปกติ

web.xml ก็ config ตามปกติไม่มีอะไรพิสดาร

และสิ่งที่ทำให้แก้นานที่สุดเมื่อกี้คือ พยายามแก้ไฟล์ java และก็รันใหม่ แต่ปรากฎว่าผลก็ยังเหมือนเิดิม เหมือนผีหลอก ตอนหลังจึงได้รู้ว่า มันไม่ยอมทับ file .class เดิม ให้ ก็เลยลองไปลบแล้วให้มัน compile ใหม่ ปรากฎว่าใช้งานได้ แอบงงนิดหน่อย เพราะคิดว่ามันเป็นแบบนี้แค่เป็นบางทีมั้ง ปกติไม่เห็นจะเคยเจอ – -*

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

jboss

jboss

resin

resin

อ่านไปอ่านมา ก็ไม่เห็นจะมีอะไรต้องมึนแล้ว แล้วตูมึนอะไรฟระ – -”

Posted in configuration | Leave a Comment »

วิธีการ install UnixODBC

Posted by natty on September 18, 2008

เนื่องจาก Windows server ไม่เพียงพอ ทำให้เก๋ต้องหาวิธีการใช้ ODBC บน Linux เฮ้อ… ปัญหาแต่ละอย่าง

ไปเจอมาตัวนึง ชื่อ UnixODBC แต่เท่าที่อ่าน list ก็ไม่เห็นว่าจะใช้กับ dbf ได้ แต่ก็ยังหน้าด้าน install มันอยู่

ก่อนอื่น ดาวน์โหลด package นี้ มา แล้วเอาไปวางที่ไหนก็ได้ใน Linux จากนั้นก็แตกซิบ แล้วเข้าไปที่ path นั้นเพื่อทำการ install ดังนี้

gunzip unixODBC*.tar.gz
tar xvf unixODBC*.tar

cd unixODBC*
./configure

มาถึงขึ้นนี้ บางท่านอาจจะ install ไม่ผ่าน เพราะติดปัญหา QT headers ให้ทำการ yum install avahi-qt3-devel ก่อน แล้ว ./configure ใหม่อีกรอบ จึงจะทำคำสั่งต่อไป

(*ถ้า ไม่มี permission การทำ ./configure ให้พิมพ์ chmod +x configure ก่อน)

make
make install

ก็จะได้ unixODBC อยู่ที่ /usr/local/etc/unixODBC ค่ะ

Posted in configuration | Leave a Comment »

ติดต่อ network drive ผ่าน Apache+PHP

Posted by natty on September 18, 2008

สองวันมานี้ เขียน PHP เรียก Foxpro แต่ทำ test บนเครื่องตัวเองก่อน โดยเอา dbf มาวางไว้บนเครื่อง ติดต่อผ่าน ODBC บน Windows พอทำโปรแกรมเสร็จ ก็จะเอาไปใช้จริง จึงจะเปลี่ยน path ไปเรียก dbf ซึ่งเป็น network drive ปรากฎว่าไม่สามารถทำได้ กลายเป็น table does not exist ไปซะงั้น

ปัญหาเกิดจาก Apache server ไม่ได้รับอนุญาติให้ติดต่อไปยัง network drive นั้น สิ่งที่เราต้องทำคือ

เข้าไปยัง control panel/Administrative tool/service แล้ว dbclick ที่ Apach service เลือกไปที่ log on tab ให้เลือกที่ this account แล้ว browse ไปยัง user ที่มีสิทธิ์เข้า network drive ดังกล่าว ใส่ user password ที่ถูกต้อง และอย่าลืม restart Apache ใหม่ เพียงเท่านี้ก็จะสามารถติดต่อไปยัง network drive ได้แล้ว แต่หาก restart Apache ใหม่แล้ว Apache ไม่สามารถ start ได้ แสดงว่า user/pass ที่คุณใส่เข้าไปไม่ถูกต้อง ให้กลับไปแก้ก่อน

แต่อย่าลืมว่า เวลาใส่ path ใน ODBC ต้องใส่เป็น UNC path มิฉะนั้นจะมองไม่เห็น

Posted in configuration | 1 Comment »