หน้าเว็บ

วันพฤหัสบดีที่ 31 พฤษภาคม พ.ศ. 2555

Axapta X++ : ย่อขาย Forms ตามความต้องการ


การสร้าง Axapta ให้ย่อและขยาย Forms ที่มี Grid อยู่ข้างใน

1. ที่ Design ของ Form  ที่ properties ตั้งค่า WindowsResize เป็น Dynamic
2. จะย่อขยายได้ ต้องสร้าง Tap ข้างในด้วย ก่อนใส่ Grid โดยสร้าง Tab และ TabPage แล้วค่อยสร้าง Grid ข้างใน
3. ตั้งค่า Properties ของ Tab ตรง Width เป็น Column width และ Height เป็น Column height
4. ตั้งค่า Properties ของ Grid ตรง Width เป็น Column width และ Height เป็น Column height

เท่านี้ก็จะสามารถย่อขาย Form ที่มี Grid ได้ตามที่เราต้องการ

ตัวอย่างที่ Form ---> AssemblyDescription

วันจันทร์ที่ 28 พฤษภาคม พ.ศ. 2555

วิธีตั้งค่าให้ Gmail Notifier เช็ดเมล์ของ google ได้บน linux


ผมก็หามานานครับสำหรับ mail notifier ที่ไว้สำหรับตรวจสอบเมล์ของบริษัท (ใช้ของ google apps ครับ) ผมบน linux หรือ ubuntu นั่นเอง คือสิ่งที่ผมอย่างได้ก็แค่ให้มันเตือนว่ามีเมล์ใหม่เข้ามา และต้องการโปรแกรมที่ไม่ใหญ่มาก ทำงานบน tray icon ก็พอแล้ว ซึ่ง Gmail Notifier ตอบโจทย์ผมได้อย่างดีที่สุด
ตามจริงเจ้าตัว Gmail Notifier มันไว้สำหรับ check gmail แค่นั้น แต่เราต้องมีการปรับแต่งนิดหน่อยเพื่อให้มัน check สำหรับคนที่ใช้บริการ google apps ได้ด้วย โดยให้เราติดตั้ง Gmail Notifier ก่อน
sudo aptitude install gmail-notify
หลังจากติดตั้งเสร็จแล้วเข้าไปปรับแต่งกันเลยดีกว่า
cd /usr/lib/gmail-notify
sudo gedit notifier.py
หาบรรทัด
def gotourl( self, wg=None):
print "----------"
print "launching browser "+self.options['browserpath']+" http://mail.google.com/" os.system(self.options['browserpath']+" http://mail.google.com/ &")
แก้เป็น โดย SITE.COM ให้แก้เป็น domain ที่ใช้บริการ google apps อยู่
def gotourl( self, wg=None):
print "----------"
print "launching browser "+self.options['browserpath']+" https://mail.google.com/a/SITE.COM" os.system(self.options['browserpath']+" https://mail.google.com/a/SITE.COM &")
จากนั้นไป set gmail notifier config ตามรูป

ที่มา http://snappytux.com/content99-linux

วันจันทร์ที่ 14 พฤษภาคม พ.ศ. 2555

วิธีแก้ Windows 7 32bit ให้เห็นmemory มากกว่า 4GB จนสูงสุดถึง128GB!!

1. Download ตัวโปรแกรมPatchที่ชื่อ RAMFix มา โดยโหลดได้ ที่นี่ หรือ Download mediafire แล้วพอเปิดที่ตัวโปรแกรมนี้ขึ้นมา จะมีโปรแกรมเด้งขึ้นมา สองหน้าต่างคือ Winzip กับ DOS (ไม่ต้องไปสนใจหรือคลิกอะไรในตัว Winzip)
 2. กด Enter เพื่อเริ่มการแก้ไขวินโดว์ (แนะนำให้ปิดโปรแกรม Antivirus และโปรแกรมอื่นๆ)
3. จะมีโปรแกรมเด้งขึ้นมาเป็นภาษารัสเซีย ให้กดปุ่มใหญ่ๆตรงกลาง 1ที
4.จะมีหน้าต่างภาษารัสเซียโผล่มาอีกตัว ให้กด OK
5. ต่อไป ใน DOS จะถาม Y=Yes/N=No ให้เรากด Y แล้ว Enter
6. เมื่อเครื่องให้กด Enter to exit เราก็กด Enter ตามที่เขาสั่ง
7.หลังจากเสร็จแล้ว เครื่องจะรอให้เรา Restart เราก็กด Enter เพื่อ restart เครื่องได้เลย

เมื่อเปิดเครื่องขึ้นมาจะมี Manu List ให้เลือก 2 อัน ให้เลือกอันบน 

วันพุธที่ 9 พฤษภาคม พ.ศ. 2555

วิธีแก้ปลดล็อค Hidden Folder ไม่ได้เพราะโดนไวรัส ซ่อน Folder

วิธีแก้ปลดล็อค Hidden Folder ไม่ได้เพราะโดนไวรัส ซ่อน Folder 2 วิธีคือ

1. ถ้าอยู่ใน HDD ที่สามารถใช้ CMD เข้าไปใน Drive ได้ไวรัสกับแฟลชไดร์ฟมักจะเป็นของคู่กันเสมอโดยเฉพาะคนที่ใช้แฟลชไดร์ฟโดยไม่ระวังเสียไปทั่วก็เสี่ยงที่จะติดไวรัสสูง เมื่อแฟลชไดร์ฟโดนไวรัส กำจัดไวรัสไปได้แล้ว แต่ โฟลเดรอ์ต่างๆ ยังคงถูกซ่อนไว้ ได้กำหนด Folder Options ให้ View แบบ Show hidden files and folders แล้ว ก็ไม่สามารถกำหนด Properties เพื่อแก้ hidden ออกได้ แม้ว่าจะพยายามปลดล็อค Hidden Folder ยังไงก็ไม่ได้ยอม แต่ผมมีวิธีแก้ไขง่ายๆ ด้วยคำสั่ง dos เพียงไม่กี่คำสั่ง

วิธีแก้ปลดล็อค Hidden Folder ไม่ได้เพราะโดนไวรัส ซ่อน Folder ด้วยคำสั่ง DOS มีดังนี้

    คลิก start –> run
    พิมพ์คำสั่ง cmd แล้วกด enter หรือคลิก OK
    พิมพ์ K: (เมื่อ แฟลชไดร์ฟ เป็นไดร์ K: ถ้าของคุณเป็นไดร์ฟไหนก็พิมพ์ไดร์ฟนั้นโดยดูใน My computer)
    พิมพ์คำสั่ง attrib -s -h -r /S /D   ซึ่งเป็นคำสั่งยกเลิกการซ่อนโฟลเดอร์ทั้งหมด

2. ถ้าอยู่ใน USB และใช้คำสั่ง CMD เข้าใน USB ไม่ได้ แก้โดย
2.1. ดาวโหลดตัวนี้มา [url]http://www.mediafire.com/?ak8d895xll6k5ia[/url]

โปรแกรมนี้สามารถทำให้เราไปเซ็ทค่า Attribute ต่างๆได้ครับ  เมื่อเราติดตั้งแล้ว ให้คลิกขวาที่โฟลเดอร์เป้าหมายที่ถูกไวรัสซ่อนไว้และมี Hiddenสีเทาๆ  จะมีเมนูขึ้นมาให้เซ็ทครับ  เราแค่เอาเครื่องหมายถูกออก ตรง Hiidden กับ System ก็เรียบร้อยแล้วครับ
2.2. ติดตั้งโปรแกรม Next ---> Next ไปเรื่อย ๆ เสร็จแล้ว
2.3. โชว์ Hidden เข้าไปที่ Menu Tool  ---> Folder Options ครับ เลือก View แล้วเลือก Show Hidden File  แล้วมาติ้กเอาเครื่องหมายถูก หน้า Hide extension กับ Hide Protect เอาออกไปซะ ตามรูป แล้วจะมีกรอบขึ้นมาถามเรา ให้ตอบ Yes เลยครับ เสร็จแล้วกด OK เลยครับ
2.4 เปิด USB ดูข้อมูลที่อยู่ใน USB อันไหนที่ไม่ใช่ข้อมูลของเราถ้ามั่นใจแล้วให้ลบออกได้เลย เช่น ไฟล์ .exe ที่ไม่ต้องการ, ไฟล์ .vob และอื่น ๆ ที่คาดว่าจะเป็นไวรัสซึ่งไม่ใช่งานเรา ให้ลบออก
2.5 คลิกขวาที่ไฟล์ที่งานที่ถูกซ่อน เลือก Properties เลือก Change Attributes แล้วติ๊กเครื่องหมายถูกออกตามรูป


กด Apply แล้วกด OK เลยครับ เป็นอันเสร็จครับ

การลบไฟล์ และ ไดเรกทอรี บน ubuntu (remove file and directory on Ubuntu...rm command)


#ลบไฟล์

rm ชื่อไฟล์
rm -i ชื่อไฟล์
rm -f ชื่อไฟล์

#ไดเรกทอรี แบบทั้งหมดหายเกลี้ยง

rm -rf ชื่อไดเรคทอรี่

วันอังคารที่ 24 เมษายน พ.ศ. 2555

Setup ระบบ Openfire Messaging on Ubuntu

เพื่อง่าย ให้ ssh เข้าไป code จะได้ copy ได้
1.ติดตั้ง Package ที่จำเป็น (นำมาจาก testExtranet ตัวเดิมบางอันลงไว้แล้ว)
  1.    apt-get install apache2
  2.     apt-get install php5 libapache2-mod-php5
  3.     apt-get install mysql-server
  4.     apt-get install libapache2-mod-auth-mysql php5-mysql phpmyadmin
  5.  
2.Download ไฟล์ติดตั้งจาก http://www.igniterealtime.org เลือกเอาที่เป็น .tra.gz
3. Copy ไว้ที่เครื่องที่มี Apache ใน WWW แล้ว ทำการ Copy ไปเครื่อง testExtranet โดย
  1. cd /opt/
  1. wget http://localhost/openfire_3_7_1.tar.gz
4. แตกไฟล์ใน opt โดยใช้
  1. tar -zxvf openfire_3_7_1.tar.gz
5. ทดลอง start และเช็ค status ดู โดยใช้
  1. /opt/oprnfire/bin/openfire start
  1. /opt/oprnfire/bin/openfire status
6. สร้าง script สำหรับ openfire ให้ Start เองตอนเปิดเครื่อง (เพราะไม่ได้ติดตั้งผ่าน .deb จึงต้องทำขึ้นเอง)
  1. nano /etc/init.d/openfire
แล้ว copy code นี้วางแทนที่ทั้งหมดเลย
  1.    #! /bin/sh
  2.     # /etc/init.d/openfire
  3.     #
  4.      
  5.     # Some things that run always
  6.     #touch /var/lock/openfire
  7.      
  8.     # Carry out specific functions when asked to by the system
  9.     case "$1" in
  10.       start)
  11.         #echo "Starting openfire "
  12.         /opt/openfire/bin/openfire start
  13.         ;;
  14.       stop)
  15.         #echo "Stopping openfire"
  16.         /opt/openfire/bin/openfire stop
  17.         ;;
  18.       status)
  19.         #echo "Checking openfire"
  20.         /opt/openfire/bin/openfire status
  21.         ;;
  22.       *)
  23.         echo "Usage: /etc/init.d/openfire {start|stop|status}"
  24.         exit 1
  25.         ;;
  26.     esac
  27.      
  28.     exit 0

7. ฝังให้ run ตอน boot ด้วยคำสั่ง
  1.    chmod 755 /etc/init.d/openfire
  2.     update-rc.d openfire defaults

8. เข้าไป Setup โดยใช้ port 9090 เช่http://localhost:9090
Language : English
Domain: server0.sci.com
Admin Console Port: 9090
Secure Admin Console Port: 9091

Database Settings : Standard Database Connection
Database Driver Presets: MySQL
JDBC Driver Class: com.mysql.jdbc.Driver
Database URL: jdbc:mysql://localhost:3306/openfire (ต้องสร้างฐานข้อมูลไว้ก่อน เลือก Collation เป็น unicode)

Profile Settings : Directory Server (LDAP)
Server Type: Active Directory
Host: server4.sci.com
Port: 389
Base DN : DC=SCI,DC=COM
Administrator DN: CN=Administrator,CN=Users,DC=SCI,DC=COM

Username Field: sAMAccountName
Name : {cn}
User Filter : (objectClass=organizationalPerson) (จะกำหนดเงื่อนไขเพิ่มก็ได้ เช่น &(objectClass=organizationalPerson)(department=IF-IT))
Email : {mail}
Full Name : {displayName}

Group Field: cn
Member Field: member
Description Field: description
Group Filter : (objectClass=group) (จะกำหนดเงื่อนไขเพิ่มก็ได้ เช่น &(objectClass=group)(name=IM))

9.Add Administrator แล้วลอง test ดู ใส่เป็นชื่อ เช่น suwit_j

10.ทดลอง Login เข้าใช้งาน http://localhost:9090/login.jsp?url=%2Findex.jsp โดย User : suwit_j Password ใน Domain

11. การตั้งค่าโปรแกรมเช่น Pidgin Set ที่ Account Connect Server : 192.168.0.9 , Connect Port : 5222 , User : suwit_j , Domain : sci.net
password : ใชัตัวเดียวกับ Domain
หมายเหตุ : การ upgrade version สามารถ download .deb มาแล้วติดตั้งซ้ำได้เลย

วันจันทร์ที่ 23 เมษายน พ.ศ. 2555

syslog ส่ง Log จากเครื่องหนึ่งไปเก็บอีกเครื่องหนึ่ง

การส่ง Log จากเครื่องตัวเองหรือจาก SERVER ตัวอื่น เพื่อไปเก็บไว้ที่ SERVER Log ตัวเดียว
เช่น การเก็บ Log จาก SERVER ต่าง ๆ ใน SCI เพื่อไปรวมที่ SERVER ตัวเดียวคือ LogSERVER (192.168.0.251)

1. ติดตั้งโปรแกรม พื้นฐานที่จำเป็นต้องใช้ในเครื่อง ตัวเอง
- apt-get install apache2 ติดตั้ง Apache
- apt-get install Mysql-server ติดตั้ง Mysql-server
- apt-get install phpmyadmin ติดตั้ง phpmyadmin

2. ติดตั้ง syslog
โดยทำตาม ขั้นตอนนี้
http://porpramarn.blogspot.com/2012/04/ubuntu-centralized-log-with-logzilla.html

*** สำคัญมาก คือ 3.ติดตั้ง Package อื่น ๆ ที่จำเป็น ต้อง ติดตั้งทีละ แถว ให้ครบทุกตัวไม่งั้นจะไม่เก็บ Log


3. แก้ไขไฟล์ Config เพิ่มเติมที่เครื่องเราเอง
- nano /etc/syslog-ng/syslog-ng.conf
  1. destination d_logserver { tcp("192.168.0.9" port(514)); };
  2.  

ไว้ล่าง ### Destinations ###
และเพิ่ม 
  1. #get s_apache locolhost
  2. log {
  3.    source(s_apache_access);
  4.    destination(d_logzilla);
  5. };
  6.  
  7. log {
  8.    source(s_apache_access);
  9.    destination(d_logserver);
  10. };
  11.  


ไว้ล่าง ### Logs ###

ตัวอย่าง จาก Sources ที่แก้เพิ่มเติม จาก http://porpramarn.blogspot.com/2012/04/ubuntu-install-serverextranet.html
  1. ### Sources ###
  2. source s_local {
  3. internal();
  4. # standard Linux log source (this is the default place for the syslog()
  5. # function to send logs to)
  6. unix-stream("/dev/log");
  7. # messages from the kernel
  8. file("/proc/kmsg" program_override("kernel: "));
  9. };
  10.  
  11. source s_apache_access {
  12.     file("/var/log/apache2/access.log");
  13. };
  14.  
  15. ### Destinations ###
  16. destination d_logzilla {
  17.   program("/var/www/logzilla/scripts/db_insert.pl"
  18.   template("$HOST\t$FACILITY\t$PRIORITY\t$LEVEL\t$TAG\t$YEAR-$MONTH-$DAY\t$HOUR:$MIN:$SEC\t$PROGRAM\t$MSG\n")
  19.   );
  20. };
  21. destination d_logserver { tcp("192.168.0.9" port(514)); };
  22.  
  23. ### Logs ###
  24. #get s_local
  25. log {
  26.    source(s_local);
  27.    destination(d_logzilla);
  28. };
  29.  
  30. #get s_apache locolhost
  31. log {
  32.    source(s_apache_access);
  33.    destination(d_logzilla);
  34. };
  35.  
  36. log {
  37.    source(s_apache_access);
  38.    destination(d_logserver);
  39. };
  40.  
  41.  


*** อธิบาย Code
ไฟล์ syslog-ng.conf จะประกอบด้วย 3 ส่วนคือ
ส่วนที่ 1. Source บอกถึงเราจะเก็บอะไรบ้าง ใส่ตัวแปร เช่น เก็บทั้งหมด, เก็บ Apacher, เก็บ Squid หรืออื่น ๆ
  1. source s_apache_access {
  2.     file("/var/log/apache2/access.log");
  3. };
  4.  


ส่วนที่ 2. Destination คือส่วนที่ประกาศตัวแปรเรียกใช้โปรแกรมเพื่อเก็บลง ฐานข้อมูลของ Log ตามตัวแปรที่มีการตั้งชื่อไว้
และเป็นส่วนที่ใช้ในการ ส่ง ข้อมูล Log ไปอีก SERVER ตัวอื่น 
  1. destination d_logzilla {
  2.   program("/var/www/logzilla/scripts/db_insert.pl"  #เรียกใช้ไฟล์คำสั่งนี้
  3.   template("$HOST\t$FACILITY\t$PRIORITY\t$LEVEL\t$TAG\t$YEAR-$MONTH-$DAY\t$HOUR:$MIN:$SEC\t$PROGRAM\t$MSG\n")
  4.   );   # เก็บตัวแปรเหล่านี้เข้าไปเก็บ
  5. };
  6. destination d_logserver { tcp("192.168.0.9" port(514)); };  # ส่วนที่ส่ง ข้อมูลไป SERVER อื่น


ส่วนที่ 3. Log คือส่วนที่เรา ใช้ในการส่ง log ว่าจะเก็บส่วนไหนบ้างและส่งไปโดยใช้ตัวแปรไหนบ้าง เช่น
  1. log {
  2.    source(s_local);
  3.    destination(d_logzilla);
  4. };  
เก็บเฉพาะ Log ข้องเครื่องตัวเอง ใช้ตัวแปร s_local และส่งโดยใช้ destination ของตัวแปร d_logzilla

  1. log {
  2.    source(s_apache_access);
  3.    destination(d_logzilla);
  4. };
เก็บ เฉพาะ log ส่วนที่ทำงานเกี่ยวกับ apache โดยใช้ source s_apache_access และส่งโดยใช้ destination ชื่อ d_logzilla

  1. log {
  2.    source(s_apache_access);
  3.    destination(d_logserver);
  4. };
เก็บ เฉพาะ log ส่วนที่ทำงานเกี่ยวกับ apache โดยใช้ source s_apache_access และส่งโดยใช้ destination ชื่อ d_logserver
ซึ่งชุดคำสั่งในตัวแปร d_logserver คือจะส่งไปเก็บอีก SERVER หนึ่งผ่าน port 514

4. การตั้งค่า ไฟล์ syslog-ng.conf ที่ SERVER ฝั่งที่เป็นเครื่องรับ
- nano /etc/syslog-ng/syslog-ng.conf
เพิ่มในส่วนของ Source
  1. source s_net {
  2.    udp(ip(0.0.0.0) port(514));
  3.    tcp(ip(0.0.0.0) port(514) keep-alive(yes) max-connections(300));
  4. };


เพิ่มในส่วนของ log
  1. ### Logs ###
  2. log {
  3.    source(s_net);
  4.    destination(d_logzilla);
  5. };
  6.  


ตัวอย่าง Source
  1. ### Sources ###
  2. source s_local {
  3. # message generated by Syslog-NG
  4. internal();
  5. # standard Linux log source (this is the default place for the syslog()
  6. # function to send logs to)
  7. unix-stream("/dev/log");
  8. # messages from the kernel
  9. file("/proc/kmsg" log_prefix("kernel: "));
  10. };
  11.  
  12. source s_net {
  13.    udp(ip(0.0.0.0) port(514));
  14.    tcp(ip(0.0.0.0) port(514) keep-alive(yes) max-connections(300));
  15. };
  16.  
  17.  
  18. ### Destinations ###
  19. destination d_logzilla {
  20.   program("/var/www/logzilla/scripts/db_insert.pl"
  21.   template("$HOST\t$FACILITY\t$PRIORITY\t$LEVEL\t$TAG\t$YEAR-$MONTH-$DAY\t$HOUR:$MIN:$SEC\t$PROGRAM\t$MSG\n")
  22.   );
  23. };
  24.  
  25. ### Logs ###
  26. log {
  27.    source(s_local);
  28.    source(s_net);
  29.    destination(d_logzilla);
  30. };
  31.  

ความหมายคือ
source s_local เป็นตัวรับค่าจาก เครื่องตัวเอง
source s_net เป็นตัวที่ใช้รับค่าจากการส่งค่าจาก เครื่องอื่นมา
แล้วเก็บใส่ log โดยนำ source ต่าง ๆ มาส่งเก็บเข้าฐานข้อมูลของ log โดดยใช้ destination d_logzilla