7 ธ.ค. 2555

ใช้ Crystal Report ผ่านทาง ADO




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

.NET Framework คือแพลตฟอร์มสำหรับพัฒนาซอฟต์แวร์สร้างขึ้นโดยไมโครซอฟท์ โดยรองรับภาษาดอตเน็ตมากกว่า 40 ภาษา ซึ่งมีไลบรารีเป็นจำนวนมากสำหรับการเขียนโปรแกรม รวมถึงบริหารการดำเนินการของโปรแกรมบนดอตเน็ตเฟรมเวิร์ก 

.Net Data Provider คือ ตัวที่ใช้ติดต่อกับฐานข้อมูล ซึ่งมาแทนที่ ODBC แบบเคยใช้ซึ่งมีข้อจำกัดบางปรการ ในความคิดผม มันคงคล้ายๆถนน ถ้า DataBase เปรียบเสมือน อาคารคลังข้อมูล

หลังจากที่เชื่อมต่อกับฐานข้อมูลแล้ว ก็ต้องมีรถขนข้อมูล ซึ่งมีด้วยกัน 2 แบบ
1.Data Reader คือสามารถขนข้อมูลออกจากฐานข้อมูลได้อย่างเดียว
2.Data Adapter คือสามารถขนข้อมูลได้ทั้งไปและกลับ

DataReader  มีจุดเด่นในเรื่องประสิทธิภาพ และการใช้งานหน่วยความจำที่น้อยกว่าการนำข้อมูลทั้งหมดขึ้นมาในคราวเดียว การทำงานของ DataReader นั้น จำเป็นจะต้องมีการเชื่อมต่อกับแหล่งข้อมูลตลอดเวลา จนกว่าข้อมูลทั้งหมดจะถูกอ่านขึ้นมาได้
 ·
Data Adapter เป็นการจำลองโครงสร้างของตารางที่เป็นผลลัพธ์ไว้ภายในหน่วยความจำ (ลักษณะคล้ายการ Cache) คุณจึงสามารถเรียกดูข้อมูลเรคคอร์ดใด ๆ ก็ได้แม้ว่าการติดต่อกับระบบจัดการฐานข้อมูลจะถูกปิดไปแล้วก็ตาม  แต่ข้อเสียของการใช้ Data Adapter และ DataSet นั้นก็คือ ปริมาณหน่วยความจำที่ใช้ เนื่องจากข้อมูลทั้งหมดจะต้องถูกนำขึ้นมาเก็บไว้ในหน่วยความจำหลัก

DataSet  คือกลุ่มของข้อมูลหลาย ๆ Table ถูกจัดรวมไว้ในก่อนกลุ่มเดียวกัน DataSet เป็นผลลัพธ์ทีได้จาก DataAdapter ซึ่งหลังจากที่ DataAdapter

DataTable คือกลุ่มของข้อมูลที่ถูกจัดเก็บไว้ในชุดเดียวกัน โดยเปรียบเหมือนแผ่นตาราง 1 ตารางที่แบ่งเป็น Cloumn (แนวตั้ง) และ Rows (แนวนอน) ที่ถูกจัดเก็บไว้เพียง 1 Table เท่านั้น


ผมต้องการเอาข้อมูล 2 table มา join กันแล้วมาเก็บไว้ที่ DataTable ก่อน แล้วใช้ Crystal Report ดึงข้อมูลมาแสดงผล

ขั้นตอนทั้งหมดมีดังนี้
1.สร้าง Project ใหม่
2.สร้าง Datasource
3.สร้าง DataSet และ DataTable
3.สร้าง Crystal Report
4.สร้างส่วนการเชื่อมต่อกับฐานข้อมูลและการอ่านข้อมูล
5.สร้าง Crystal Report Viwer

1.สร้าง Project ใหม่


สร้าง Data Source



2.สร้าง DataSet และ DataTable

คลิกขวาที่ชื่อ Project -> Add -> New Item 

คลิกขวาที่ Form ของ DataSet -> Add -> DataTable  



Project->Add New Item-> crystal report


3.สร้าง Crystal Report 



http://www.thaicreate.com/asp.net/asp.net-dataadapter.html
http://www.thaicreate.com/dotnet/crystal-report-vb-net-cs.html
asds
http://www.codeproject.com/Articles/142064/Step-by-Step-Creation-of-Crystal-Report-using-its
https://docs.google.com/open?id=0B-qjfg_zV70cSFhOZi0tYlZ2cUE
http://www.timesheetsmts.com/adotutorial.htm
http://www.thaiadmin.org/board/index.php?topic=51695.0
http://computer-programming-forum.com/67-vb-crystal-report/1b6a26a8ff55f30a.htm
http://forums.devshed.com/database-management-46/server-has-not-yet-been-opened-crystal-reports-error-61527.html
http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/ad/samples/vb/s-spCall-bas.htm
http://blog.aggregatedintelligence.com/2008/08/crystal-reports-viewer-physical.html

20 ต.ค. 2555

Configure 3COM Baseline 2250 PLUS and 2226 PLUS

First Download
1. 3Com Discovery Version 6.0  for Baseline 2226 PLUS 
2. 3COM Detect for 2250 PLUS

*** Must plug LAN into  the member port of VLAN 1.
And Read this Manaul

18 ต.ค. 2555

(Solved) Ubuntu 11.10 Waiting up to 60 more seconds for network configuration…

Ubuntu 11.10 was released for 1 year ago but I have just found the new feature of Oneiric Ocelot.My problem is the mainboard of Server  have stopped working for few days ago therefore I need to buy a new mainboard for replace my old one.After i got a new one and installed it. Every time, i will got the  message  " Waiting up to 60 more seconds for network configuration…" after  my ubuntu boot.

To solve the problem, you can just remove the calls to sleep, by commenting the out ( or at least reduce the wait time if your network really does need to wait )

nano /etc/init/failsafe.conf

find word "sleep 40" and "sleep 59" and insert # in front of them and save file

The error message is disappeared but there is one of network card which is not worked.
And this is the last solution.

nano -w /etc/udev/rules.d/70-persistent-net.rules

----------------------------------
Insert all of this at the last row.

# PCI device 0x10ec:0x8139 (8139too)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="8139too", ATTR{address}=="?*", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
----------------------------------------------------------------------------



http://www.codewhirl.com/2011/10/ubuntu-11-10-waiting-up-to-60-more-seconds-for-network-configuration/

30 ก.ค. 2555

Firmware Upgrade Procedure For NEC SL1000 (Out of Manual)

ถ้าอยาก Update Main Firmware เป็น version ที่ใหม่กว่าเดิม ก็ทำตามคู่มือนี้
แต่ถ้าคุณ Update ผิด version  เหมือนผมในตอนนี้ ไม่จำเป็นต้องส่งตู้เข้าศูนย์ฯ เราแก้ไขเองได้ และไม่ต้องไปซื้ออุปกรณ์เสริม(PZ-VM21)อะไรอีก ผมดันไป Download Main Firmware v1.50 จากเวบหนึ่งมาใส่ที่ตู้สาขาผลลัพท์ที่ได้ก็คือ ใช้ PcPro และ Mycalls เชื่อมต่อไม่ได้อีก  แต่ยังสามารถ Config ผ่านทางเวบ(port 80)ได้ตามปกติ

ต่อไปนี้เป็นวิธีการ Update Main Firmware ที่ไม่มีในคู่มือนะครับ

ของจำเป็นที่ต้องมี
Main Firmware v1.00
PcPro v.1.00

Step One: คลาย Zip ไพล์ไปไว้ที่ Drive C: ตั้งชื่อว่า Folder ว่า "Draco-A"


Step Two: เปิดหน้าต่าง Command Promt แล้วพิมพ์ดังนี้ หรือตามรูปด้านล่าง
cd..
cd..
cd Draco-A
ftp your_SL1000_ip
tech   #username
12345678  #Password
put main.bin
put mainex.bin
put vmdsp532.bin
put vocallo.bin
put adspb.bin
put adspeAF00.bin
quit

Login เข้า Nec Sl1000 ผ่านทาง โปรแกรม FTP แล้วเริ่มขั้นตอนโอนไพล์ไปที่ตู้ SL1000

เข้า Command Promt อีกครั้ง
cd ..
cd ..
cd Draco-A
cd Firmware
ftp 192.168.0.12
tech #username
12345678 #
pwd
cd firmware
pwd
put*.drc
quit


ต้อง Restart ตู้สาขา เพื่อ Reload ข้อมูล Firmware แล้วก็ลองใช้ PcPro เชื่อมต่อดู

3 ก.ค. 2555

เอา ASUS RT-N12B1 มาทำ Access Point+ WDS

เพราะไม่อยากเดิยสายแลนก็เลยต้องทำ WDS 

Step 1.  Upgrade Firmware from Original version to DD-WRT
Step 2. Upgrade Firmware from DD-WRT to Tomato
Step 3. Config the both Acces point  like this picture. (Same SSID, Channel, Security,Subnet mask)
WDS does not support WPA2 in G mode.You can only use WPA. 
And you should enter the mac address of another Access Point that link with. 



2 มิ.ย. 2555

วิธีติดตั้ง Webmin บน Ubuntu 11.10 (Oneiric Ocelot)

ก่อนที่จะติดตั้ง Webmin ต้องติดตั้ง LAMP ก่อน หลังจากติดตั้ง LAMP แล้วก็มาเริ่มเข้าสู่ขั้นตอนที่ 1 ได้

Step 1. แก้ไขไพล์ /etc/apt/sources.list
 nano /etc/apt/sources.list

โดยเพิ่ม 2 บรรทัดนี้ที่บรรทัดสุดท้าย
 deb http://download.webmin.com/download/repository sarge contrib
 deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib

Step 2. อิมพอร์ต GPG key
 wget http://www.webmin.com/jcameron-key.asc
 apt-key add jcameron-key.asc

Step 3. อัพเดต source list หลังจากมีการแก้ไขไพล์นี้
 apt-get update

Step 4. ติดตั้ง webmin
 apt-get install webmin
มาถึงขั้นี้แล้วก็ทดสอบเข้าใช้งานโดยพิมพ์ http://serverip:10000 ที่ Browser  ก็จะปรากฎหน้าจอแบบนี้


1 มิ.ย. 2555

ใครอยากได้คู่มือ NEC SL1000 มาทางนี้

เพิ่งซื้อ "NEC SL1000 Smart Communication Server" มา และจะโปรแกรมเอง 

Download VDO Training
Download SL1000 PCPro v1.00
Download SL1000 PCPro v1.20
Download SL_Feature_and_Specifications_Manual
Download SL1000 Getting Started Guide (Issue1.0) for GE
Download SL_Programming_Manual
Download SL1000_Mobile_Extension
Download SL1100_Hardware_Manual
Download SL1000_Training_(System_Installation)
Download SLSeries_MyCalls_v3.2.0.0_Installation_Manual
Download SL_Mycalls_End_User_Manual_R2
Download Main Firmware 1.00
Download Mycalls_v3.2.0.0


เป็นเรื่องที่ดี ที่ตู้ PBX NEC สามารถถูกโปรแกรมผ่านทาง PC ได้ ทำให้สะดวก และเห็นภาพแล้วเข้าใจง่ายขึ้น แต่มันก็ไม่ง่ายแบบหมูๆสำหรับตู้ PBX  ตู้นี้

เป็น PBX ที่ราคาถูกมากเมื่อเทียบกับ Phonnik รุ่น JSD ที่ผมใช้อยู่ และกำลังจะตายจากไป ด้วยค่าซ่อม 16,000 บาทที่ Phonnik เสนอมา จะซื้อใหม่ยี่ห้อเดิมก็ต้องจ่าย 30,000 กว่า เลยมาซื้อ NEC ดีกว่าถูกกว่า มี Feature เทพกว่าเยอะ เรียกว่า Phonnik กับ NEC อยู่คนละภพภูมิกันเลยที่เดียว มาถึงตรงนี้ผมเป็นห่วง Phonnik จริงๆครับ

Feature: NEC รุ่น SL1000
1. Hybrid Concept แปลว่าเสียบโทรศัพท์ไปเหอะ ตู้PBX จะรู้เองว่าเครื่องใด เป็น MLT หรือ SLT (MLT คือเครื่องโทรศัพท์ที่ใช้ปรแกรมได้ SLT คือเครื่องโทรศัพท์ธรรมดา) หมายความว่าผมจะโปรแกรมผ่าน HeadPhone ที่ไหนก็ได้ ไม่จำกัดจำเขี่ยเหมือน JSD
2. IP-Enabled เมื่อมันมี IP ผมก็ใช้ PC โปรแกรมมันได้
3. Productive Communication
4. Mobile Extension
5. Built-in Voice Messaging
6. ECOLOGY
7. Day / Night Mode

สิ่งแรกที่ตื่นเต้นคือ Port LAN มี Feature Auto Crossover ด้วยละ ทำให้สะดวกไม่ต้องเตรียมสาย Cross

Step 1. เริ่มจากอ่าน
1. SL1000_Hardware_Manual_1.0_IT
2. SL1000_Training_(System_Installation)
3. SL1000 Getting Started Guide (Issue1.0) for GE

Step 2. วางแผนบนกระดาษตามความต้องการก่อน
สรุปความต้องการและทำเป็นแผนผัง

Step 3. เริ่มเชื่่อมต่อ โดยใช้ PcPro
เข้าใช้งานด้วย Username: tech ,Password: 12345678


ไปที่เมนู Communication เลือก Connect

เปลี่ยน IP เป็น 192.168.0.12 เพราะ192.168.0.10 มันไปซ้ำกับเครื่องในวงLAN 
และใช้ Username: tech ,Password: 12345678 อันเดิม

Download ข้อมูลการตั้งค่ามาแสดงผล

ติ๊ก Select all แล้วคลิ๊ก  Start

ไปที่ tap ด้านล่าง System Data และไปที่หัวข้อ 10-02

เติมรหัสประเทศ รหัสจังหวัด และรหัสสำหรับโทรออก แล้วกด Apply ที่มุมขวาบน

เปลี่ยนเสียงเพลงจากแบบ 1 เป็น 3

เปลี่ยน ip และ Zone เวลา

สร้างหมายเลขภายในที่เมนู 11-02

เปลี่ยนสลับโหมดกลางแบบแบบอัตโนมัติ

Group 1 เริ่ม 08:00 ถึง 19:00

Group 2 เริ่ม 09:00 ถึง 16:00

12-03 นำตารางเวลาที่ตั้งไว้มาใส่ตามวันในสัปดาห์

ตารางเวลา แบบที่ 1 สำหรับจันทร์-เสาร์

ตารางเวลา แบบที่ 2 สำหรับวันหยุด

ตารางเวลา แบบที่ 3 สำหรับอาทิตย์



26 พ.ค. 2555

วิธีการ UnTethered Jailbreak 5.1.1 ของ iPhone 4S, 4, 3GS

ใช้ 5.0.1 มาเสียนาน ถึงเวลาอัพเดตเป็น 5.1.1 กันแล้ว
ก่อนจะ Jailbreak สิ่งที่ต้องทำคือ Backup ข้อมูลผ่านโปรแกรม ITune ก่อน
และ Update IOS Firmware เป็น version 5.1.1 เลย

มี VDO สำหรับการ Update IOS ผ่าน WIFI มาให้ดู


สิ่งที่ต้องใช้
Download Absinthe 2.0 สำหรับ Windows

ขั้นตอนการเจล
Step 1: คลายซิปไพล์ absinthe-win-2.0.zip ที่เพิ่งดาวน์โหลดมา
ไพล์ที่ได้หลังจากคลายซิปแล้ว

Step 2: Double click ที่ไพล์ที่ชื่อ absinthe-win-2.0.exe
ภาพการติดตั้งโปรแกรมabsinthe หลังจากรันโปรแกรมแล้ว

Step 3: หลังจากติดตั้งแล้วจะได้Folder absinthe-win-2.0 โผล่มา ก็ให้เราเข้าไปในFolder นี้เลย

Step 4: เสียบสาย USB เชื่อมต่อ IPhone เข้ากับเครื่องคอมพิวเตอร์ เสร็จแล้ว Double Click ที่ไพล์ชื่อ absinth.exe เพื่อเิริ่มทำการ Jailbreak
ไพล์ที่มีในFolder absinthe-win-2.0

เริ่มขั้นตอนการJailBreak โดยกดที่ปุ่ม Jailbreak

รอครับ ห้ามถอดสายใดๆ จนกระทั่งมีข้อความ "Done, enjoy"  
ก็สามารถปิดโปรแกรม Absinth ได้เลยเพราะ Jailbreak เสร็จแล้ว

http://absinthejailbreak.com/untethered-jailbreak-5-1-1-iphone-4s-4-3gs-absinthe-2-0/
http://absinthejailbreak.com/download-absinthe-2-0-jailbreak-5-1-1-untethered/

25 พ.ค. 2555

แจกโปแกรม reset หมึก Epson L100, L200, L800 ฟรี!!!

เครื่องพิมพ์ Epson L200 ที่ผมใช้อยู่เวลาหมึกมันหมด ก็จะบังคับให้เรากรอกหมายเลข(key)ข้างขวด แต่เดี๋ยวไม่ต้องมีSerial Number ก็สามารถใช้งานต่อไปได้ โดยใช้โปรแกรม reset หมึก Download  here





9 พ.ค. 2555

Fix Event ID 11 in CAPI2

Event ID 11 — Automatic Root Certificates Update Configuration




Event ID 11 CAPI2 fix : 

You will need to have "Administrator privileges" to do this part.

Open "My Computer" then right click on the hard drive that has Windows installed on it (usually C drive).

Left click "Properties".

Left click "Disk Cleanup" tab.

If prompted "choose what files to clean up", select "Files from all users on this Computer", UAC (User Access Control) may display a prompt, so left click "Ok".

Scroll down and left click "Temporary Files".

Click on "Ok" to continue.

Download this:
http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootstl.cab

When prompted to Open, Save or cancel, simply left click "save".

Once the cab file has been downloaded, open it and inside you'll see "authroot.stl".

Drag this from the archive and place it on your desktop.

Right click "authroot.stl" and left click on install.


http://technet.microsoft.com/en-us/library/cc734018(v=ws.10).aspx

27 เม.ย. 2555

ติดตั้ง template ของ BIND บน Cacti

อยากดูการทำงานของ BIND แต่ทำยากจังต้องขอจดบันทึกไว้

Step 1: Download BIND9.7 แล้วแตก Zip ไปไว้ที่ /usr/share/cacti/site/scripts/ ยกเว้นไพล์ cacti_host_template_bind9_7.xml ที่ต้อง Import เข้าไปที่ Cacti

Step 2: Chmod +x ทั้ง 3 ไพล์ ที่ upload ไปไว้ที่ /usr/share/cacti/site/scripts/

Step 3: nano /etc/snmp/snmpd.conf เพิ่มข้อมูลต่อที่บรรทัดสุดท้าย ตามนี้
extend .1.3.6.1.4.1.18689.0.1 dnscache-stats /usr/share/cacti/site/scripts/runstats.sh

Step 4: restart service snmpd โดยคำสั่ง /etc/init.d/snmpd restart


http://docs.cacti.net/usertemplate:host:bind9.7

30 มี.ค. 2555

Alway the right time to do the right thing


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

http://203.155.220.217/pdd/magazine/07_50/07_04.htm

2 มี.ค. 2555

Install SARG on squid3 at Ubuntu 11.10

Sarg เป็นเครื่องมือที่ช่วยวิเคราะห์ข้อมูลการใช้งานอินเตอร์เน็ตของ User ได้ดีมากๆ หลังจากประเมินผมก็เอาข้อมูลที่ได้เหล่านี้มา Shape Bandwidth ต่อ แต่วันนี้เอาแค่รายงานมาดูก่อน
apt-get install sarg

ติดตั้งเสร็จแล้วก็มา Config กันต่อ:
cp /etc/sarg/sarg.conf /etc/sarg/sarg.conf.original
nano /etc/sarg/sarg.conf

เอา Comment ออกตามบรรทัดเหล่านี้ครับ:
access_log /var/log/squid3/access.log #ระบุตำแหน่งที่เก็บ log ของ squid
graphs yes
output_dir /var/www/squid-reports #เปลี่ยนที่เก็บได้ตามใจเลยครับ

ต่อไปจะเป็นการสร้างคำสั่งให้ Sarg สร้างรายงานอัตโนมัติ และให้ Cron เป็นตัวเรียก คำสั่ง Sarg ที่เพิ่งสร้างนี้ มารันตามเวลาที่ตั้งไว้:
nano /usr/sbin/sarg-daily-report

TODAY=$(date +%d/%m/%Y)
YESTERDAY=$(date –date “1 day ago” +%d/%m/%Y)
sarg /var/log/squid/access.log -o /var/www/squid-reports/daily -z -d $YESTERDAY-$TODAY
/usr/sbin/squid -k rotate
exit 0

nano /usr/sbin/sarg-weekly-report

TODAY=$(date +%d/%m/%Y)
YESTERDAY=$(date –date “1 month ago” +%d/%m/%Y)
sarg /var/log/squid/access.log -o /var/www/squid-reports/monthly -z -d $YESTERDAY-$TODAY
/usr/sbin/squid -k rotate
exit 0

chmod 755 /usr/sbin/sarg-daily-report
chmod 755 /usr/sbin/sarg-weekly-report
chmod 755 /usr/sbin/sarg-monthly-report

และก็มาขั้นตอนการตั้งเวลาสร้างรายงานผ่านทาง Cron:
crontab -e

00 00 * * * /usr/sbin/sarg-daily-report
00 01 * * 1 /usr/sbin/sarg-weekly-report
03 02 1 * * /usr/sbin/sarg-monthly-report

ถ้าอยากลองรันเพื่อทดสอบก็พิมพ์คำสั่งตามนี้:
/usr/sbin/sarg-daily-report
/usr/sbin/sarg-weekly-report
/usr/sbin/sarg-monthly-report

/etc/init.d/cron restart

สุดท้ายครับวิธีการดูรายงาน :
http://ip_address_server/squid-reports

1 มี.ค. 2555

How to setup Transparent Proxy with Squid3 and dhcp3-server on Ubuntu Oneiric Ocelot

Squid is a very well known and vastly used cache proxy server for the common web protocols such as HTTP, HTTPS, FTP and more. It caches frequently accessed web pages and thus reduces bandwidth and response time. Squid is available for almost all the platforms including Windows. It is open source and available under GNU/GPL.

Advantages of setting up Squid as Transparent Proxy include the fact that you don't need to configure all the machines on your LAN to connect to Squid manually. All the traffic would be redirected to the Squid Listening Port automatically and your Ubuntu Box would act like a Router.

Follow these steps to set up a Transparent Proxy Server with Squid3 on Ubuntu 11.10 (Oneiric Ocelot)

1. Install Ubuntu Oneiric Ocelot Server or Desktop on your computer.

2. Change your network interfaces from DHCP to Static
nano /etc/network/interfaces

Delete all the text and paste this text in your interfaces file:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.0.12
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.3

auto eth1
iface eth1 inet static
address 192.168.2.1
netmask 255.255.255.0
network 192.168.2.0
broadcast 192.168.2.255

Where 192.168.0.12 is the IP address of your WAN interface and 192.168.2.1 is the IP address of your LAN interface.
nano /etc/resolv.conf

Paste this text in the file that opens up:
nameserver 127.0.0.1
when one sees "127.0.0.1" in the list of DNS servers it
suggests that one is running a local, caching-only name server.

3. Install squid3:
sudo apt-get install squid3

4. Make a backup of your squid.conf for future reference. Squid.conf has nearly all the options listed and it is recommended to go through that file to know more about squid options.
cp /etc/squid3/squid.conf /etc/squid3/squid.conf.original

Configure squid3.
nano /etc/squid3/squid.conf

Remove all the text and paste this text in your squid.conf file:
http_port 3128 transparent
acl LAN src 192.168.2.0/24
acl localnet src 127.0.0.1/255.255.255.255

# Limited file download < 250 MB
reply_body_max_size 250 MB
http_access allow LAN
http_access allow localnet
# No cache anything
no_cache deny all

Where 192.168.2.0/24 is the range of your LAN interface. The last line in that file is defining a cache directory for squid3 to use. Here, the first number denotes the size of cache in MB, 20 GB in this case.
Save and close this file.

6. Restart squid3:
/etc/init.d/squid3 restart

7. Edit /etc/sysctl.conf:
nano /etc/sysctl.conf

In this file, uncomment the lines that enable packet forwarding for IPv4 and IPv6:
net.ipv4.ip_forward=1

Save and close this file.

8. Define IPTABLE rules for port forwarding.
nano /etc/fw.proxy

Paste this text in the file that opens up:
#!/bin/sh
# squid server IP
SQUID_SERVER="192.168.2.1"
# Interface connected to Internet
INTERNET="eth0"
# Interface connected to LAN
LAN_IN="eth1"
# Squid port
SQUID_PORT="3128"
# DO NOT MODIFY BELOW
# Clean old firewall
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
# Load IPTABLES modules for NAT and IP conntrack support
modprobe ip_conntrack
modprobe ip_conntrack_ftp
# For win xp ftp client
#modprobe ip_nat_ftp
echo 1 > /proc/sys/net/ipv4/ip_forward
# Setting default filter policy
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
# Unlimited access to loop back
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Allow UDP, DNS and Passive FTP
iptables -A INPUT -i $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT
# set this system as a router for Rest of LAN
iptables --table nat --append POSTROUTING --out-interface $INTERNET -j MASQUERADE
iptables --append FORWARD --in-interface $LAN_IN -j ACCEPT
# unlimited access to LAN
iptables -A INPUT -i $LAN_IN -j ACCEPT
iptables -A OUTPUT -o $LAN_IN -j ACCEPT
# DNAT port 80 request comming from LAN systems to squid 3128 ($SQUID_PORT) aka transparent proxy
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to $SQUID_SERVER:$SQUID_PORT
# if it is same system
iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j REDIRECT --to-port $SQUID_PORT

iptables -I INPUT -p tcp -m tcp --dport 53 --syn -j ACCEPT
iptables -I INPUT -p tcp -m tcp --dport 82 --syn -j ACCEPT

# Algo string
iptables -I FORWARD -m string --algo bm --string "BitTorrent" -j DROP
iptables -I FORWARD -m string --algo bm --string "BitTorrent protocol" -j DROP
iptables -I FORWARD -m string --algo bm --string "peer_id=" -j DROP
iptables -I FORWARD -m string --algo bm --string ".torrent" -j DROP
iptables -I FORWARD -m string --algo bm --string "announce.php?passkey=" -j DROP
iptables -I FORWARD -m string --algo bm --string "torrent" -j DROP
iptables -I FORWARD -m string --algo bm --string "announce" -j DROP

iptables -I FORWARD -m string --algo bm --string "tracker." -j DROP
iptables -I FORWARD -m string --algo bm --string "info_hash" -j DROP
iptables -I FORWARD -m string --algo bm --string "/default.ida?" -j DROP #codered virus
iptables -I FORWARD -m string --algo bm --string ".exe?/c+dir" -j DROP #nimda virus
iptables -I FORWARD -m string --algo bm --string ".exe?/c_tftp" -j DROP #nimda virus

# bittorrent key
iptables -I FORWARD -m string --string "peer_id" --algo kmp --to 65535 -j DROP
iptables -I FORWARD -m string --string "BitTorrent" --algo kmp --to 65535 -j DROP
iptables -I FORWARD -m string --string "BitTorrent protocol" --algo kmp --to 65535 -j DROP
iptables -I FORWARD -m string --string "bittorrent-announce" --algo kmp --to 65535 -j DROP
iptables -I FORWARD -m string --string "announce.php?passkey=" --algo kmp --to 65535 -j DROP

# DHT keyword
iptables -I FORWARD -m string --string "info_hash" --algo kmp --to 65535 -j DROP
iptables -I FORWARD -m string --string "get_peers" --algo kmp --to 65535 -j DROP
iptables -I FORWARD -m string --string "announce" --algo kmp --to 65535 -j DROP
iptables -I FORWARD -m string --string "announce_peers" --algo kmp --to 65535 -j DROP

iptables -I INPUT -s 0.0.0.0/0 -m string --string "info_hash" --algo bm -j DROP
iptables -I INPUT -s 0.0.0.0/0 -m string --string "announce" --algo bm -j DROP
iptables -I INPUT -s 0.0.0.0/0 -m string --string "torrent" --algo bm -j DROP
iptables -I INPUT -s 0.0.0.0/0 -m string --string "sumotracker" --algo bm -j DROP

iptables -I INPUT -p tcp -m tcp --dport 22222 --dst $SQUID_SERVER -j ACCEPT

iptables -I INPUT -p tcp -m tcp --dport 22222 --dst 192.168.0.12 -j ACCEPT

iptables -A INPUT -j LOG --log-level info --log-prefix "INPUT "
iptables -A OUTPUT -j LOG --log-level info --log-prefix "OUTPUT "
iptables -A FORWARD -j LOG --log-level info --log-prefix "FORWARD "

# DROP everything and Log it
iptables -A INPUT -j LOG
iptables -A INPUT -j DROP
Block torrent
Save and close this file.

Change Mode
chmode +x /etc/fw.proxy

9. Edit /etc/rc.local:
nano /etc/rc.local

Paste this text at the end of the file that opens up but before "exit 0":
/etc/fw.proxy

Save and close this file.

10. Reboot your server.

If you don't want to go to each machine on your Network and configure it for a Static IP, you can use dhcp3-server to assign Dynamic IPs to all the computers on your LAN and make them forward all there internet traffic to your squid box.

11. Install dhcp3-server:
apt-get install dhcp3-server

12. Edit /etc/default/dhcp3-server:
nano /etc/default/isc-dhcp-server

Type eth1 in between the quotes in this line:
INTERFACES=""

Save and close this file.

13. Make a backup of your original /etc/dhcp/dhcpd.conf:
cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.original

14. Edit /etc/dhcp/dhcpd.conf:
nano /etc/dhcp/dhcpd.conf

Delete all the text and paste this text in the file that opens up
ddns-update-style none;
log-facility local7;

subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.100 192.168.2.200;
option domain-name-servers 192.168.2.1;
option routers 192.168.2.1;
option broadcast-address 192.168.2.255;
default-lease-time 600;
max-lease-time 7200;
}

We are using True (ISP in Thailand) DNS in this example. You can use your own DNS Server if you've configured one on your network.
Save and close this file.

Make sure all the cables on your network are plugged in and the devices are powered on.

15. Start dhcp3-server:
service dhcp3-server start

16. Reboot your server.

17. Install Bind9 if you didn't install it
apt-get install bind9 dnsutils

Install dnsutils for dig command.

Edit conf file for Caching
nano /etc/bind/named.conf.options

Delete all the text and paste this text in the file that opens up:
options {
directory "/var/cache/bind";
forwarders {
203.144.207.29;
203.144.207.49;
};
auth-nxdomain no;
allow-query { any; };
};


20 ก.พ. 2555

HOWTO: UBUNTU view Log Boot Messages

You need to enable boot logging by opening a terminal and typing the following:
$ sudo nano /etc/default/bootlogd

The text editor will open, and the following will be show:
# Run bootlogd at startup ?
BOOTLOGD_ENABLE=No


Change BOOTLOGD_ENABLE to yes
Now, everytime you restart, /var/log/boot will be created

9 ก.พ. 2555

Call Stored Procedure with Parameter By VB.Net

The SqlConnection Object is Handling the part of physical communication between the application and the SQL Server Database. An instance of the SqlConnection class in .NET Framework is supported the Data Provider for SQL Server Database. The SqlConnection instance takes Connection String as argument and pass the value to the Constructor statement. When the connection is established , SQL Commands may be executed, with the help of the Connection Object, to retrieve or manipulate data in the database. Once the Database activities over , Connection should be closed and release the database resources .


The Close() method in SqlConnection class is used to close the Database Connection. The Close method rolls back any pending transactions and releases the Connection from the SQL Server Database.


Imports System.Data.SqlClient
Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim connetionString As String
Dim cnn As SqlConnection
connetionString = "Data Source=ServerName;Initial Catalog=DatabaseName;UserID=UserName;Password=Password"
cnn = New SqlConnection(connetionString)
Try
cnn.Open()
MsgBox("Connection Open ! ")
Dim cmd As New SqlCommand
cmd.Connection = cnn
cmd.CommandType = CommandType.StoredProcedure
cmd.CommandText = "search_itemcode"
cmd.Parameters.Add("@PRDocno", SqlDbType.VarChar).Value = CStr(TextBox1.Text)
Dim dr As SqlDataReader = cmd.ExecuteReader
''release resources
cnn.Close()
Catch ex As Exception
MsgBox("Can not open connection ! ")
End Try
End Sub
End Class
This My Stored Procedure

 ALTER PROCEDURE [dbo].[Search_itemcode]
@PrDocno varchar(15)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @docno varchar(15),@itemcode varchar(15)
-- declare the cursor
DECLARE C CURSOR FOR
select docno,itemcode
from itemprsub
where DocNo = @PrDocno
OPEN C
FETCH C INTO @docno,@itemcode
-- start the main processing loop.
WHILE @@Fetch_Status = 0
BEGIN
EXEC input_last3buy @itemno = @itemcode,@PrDocno = @docno
EXEC input_last6sale @itemcodesale = @itemcode
FETCH C INTO @docno,@itemcode
END
CLOSE C
DEALLOCATE C
EXEC input_MonthName
RETURN
END

5 ก.พ. 2555

ไม่มี IPhone 4s แต่อยากใช้ Siri (Setup Spire Server or Siri Server on Windows 7))

อย่างที่รู้กันดี ถ้าไม่ใช่ IPhone 4S ก็ไม่มีสิทธิ์ใช้งาน Siri ได้ หรือก็มีอีกวิธีหนึ่ง คือเอาเครื่อง IPhone 4 หรือ 3GS ไป Jailbreak แล้วก็ติดตั้ง Spire แต่ก็ยังไม่จบเพราะ Spire ต้องการติดต่อกับ Server ของ apple อยู่ดี จึงจำเป็นต้องมี Server ตัวกลาง (Siri Proxy) ในการหลอก Apple Server ว่าเราส่งข้อมูลมาว่าเครื่อง IPhone 4s นะ บนโลกอินเตอร์เน็ตก็มี Siri Proxy ไว้บริการฟรีด้วย แต่ผมไม่กล้าที่จะใช้เพราะตอนที่เราติดต่อกับ Siri Proxy (ที่เค้าให้บริการฟรีๆ หรือบางทีก็ต้องจ่ายเงินก่อน) ข้อมูลส่วนตัวของเราก็จะถูกส่งไปด้วยเช่น รายชื่อ Contact, Apple id, SMS, Location พอมาถึงจุดนี้ เรายังจะไปใช้ Proxy ของคนอื่นอีกต่อไปไหม
จากที่ผมได้อ่านตามเวบต่างๆ ในการทำ Siri Proxy นี้ จำเป็นต้องมีเครื่อง IPhone 4S จริงๆ มา Copy ข้อมูลเครื่องมาเก็บไว้ที่ Siri Proxy แต่ผมไม่มีนินา แต่โชคดีครับ เดียวนี้ไม่ต้องง้อ IPhone 4S และไม่ต้องทำ Siri Proxy ด้วย เพราะวิธีที่ผมจะเขียนต่อไปนี้ก็คือวิธีการทำ Siri Server หรือ Spire Server ที่ทำหน้าแบบเดียวกับ Apple Server เลย คือเครื่อง IPhone 4 ของเราจะติดต่อกับ Spire Server ที่เรากำลังจะติดตั้งไว้ใช้ที่บ้านเอง หรือจะอธิบายว่า Siri ก็จะคุยกับ Spire Server โดยตรงเลย โดยที่จะไม่ต้องคุยกับ Apple อีกต่อไป Spire Server ซึ่งใช้วิธีการ Speech-to-Text ของ Google ในการแปลคำสั่ง และตอนนี้ยังไม่สมูบรณ์ คือไม่สามารถรับคำสั่งที่ยาวเกิน 10 วินาทีได้ ในอนาคตทางทีมผู้ผลิตก็คงจะมีการพัฒนาต่อไป
ของสำคัญที่ต้องมี (ผมติดตั้งทุกอย่างบน VMWare)

Step One: Installing Ubuntu 11.10 Linux.
ติดตั้ง UBNT และ๊Update ตาม VDO นี้

Step Two: Installing Siri Server dependencies.
nano /tmp/siri.sh
แล้วโดย Copy Script ข้างล่างนี้ไปวางใน siri.sh เลยครับ
#!/bin/bash.o

#
# 64-bit version (if you're running 32-bit delete the "--disable-asm-opt.."
#
# This script will download all necessary dependencies (and curl)
# both for audio handling and for python
# Then it will proceed to fetch the SiriServer from
# Github and install it, it will then proceed
# and generate SSL-certs for both the server and client
# Remeber to run Script as root as the installation will fail otherwise
# Author of installation script johanberglind
# I am not the author nor the creator of the server
#

mkdir serverfolder
cd serverfolder
echo "--------- SiriServer Installation Script --------"
echo "If you don't have any of the dependencies installed the script will take a while to finish"
read -p "Expect atleast 1-2 minutes, Press [ENTER] if you're ready to continue"
clear
if [ "$(which curl)" != "" ]
then echo "Curl is already installed, proceeding"
else echo "Downloading and installing Curl"
sudo apt-get install curl
fi
read -p "Press [ENTER] to continue"
# Checks for libogg package and if it's already installed scripts moves on to libspeex
echo "Checking if Libogg is installed [10%--------]"
clear
if [ -f /usr/local/lib/libogg.a ]
then echo "Libogg is already installed, proceeding to next step"
else echo "Not installed, downloading libogg"
curl http://downloads.xiph.org/releases/ogg/libogg-1.3.0.zip > libogg-1.3.0.zip
unzip libogg-1.3.0.zip
cd libogg-1.3.0
echo "Installing libogg"
./configure
make
sudo make install
cd ..
fi
read -p "Press [ENTER] to continue"
# Checks for libspeex and if it's already installed the scripts moves on to checking for flac
echo "Checking if Libspeex is installed [-20%--------]"
clear
if [ -f /usr/local/lib/libspeex.a ]
then echo "Libspeex is already installed, proceeding to next step"
else echo "Not installed, downloading Libspeex"
curl http://downloads.xiph.org/releases/speex/speex-1.2rc1.tar.gz > speex-1.2rc1.tar.gz
clear
echo "Download complete, unzipping"
tar -xf speex-1.2rc1.tar.gz
cd speex-1.2rc1
clear
# Installing Speex.."
echo "Installing Speex... [--30%------]"
./configure
make
sudo make install
cd ..

fi
read -p "Press [ENTER] to continue"
clear
# Checks for FLAC and if it's already installed the scripts moves on
clear
echo "Checking for Flac… [----50%----]"
if [ "$(which flac)" != "" ]
then echo "FLAC is already installed, proceeding to next step"
sudo apt-get install g++
else curl -L http://sourceforge.net/projects/flac/files/flac-src/flac-1.2.1-src/flac-1.2.1.tar.gz/download > flac-1.2.1.tar.gz
clear
echo "Download complete, unzipping"
tar -xf flac-1.2.1.tar.gz
clear
echo "Installing Libflac.. [-----60%---]"
cd flac-1.2.1
./configure
make
sudo make install
cd ..
fi
read -p "Press [ENTER] to continue"
clear
# Downloading and installing necessary python packages and easy_install if they're not already installed
if [ "$(which easy_install)" != "" ]
then echo "easy_install is installed, proceeding"
else echo "Downloading and installing easy_install"
sudo apt-get install python-setuptools
clear
fi
clear
echo "Installing Python-packages [------70%--]"
sudo easy_install biplist
sudo apt-get install python-m2crypto
sudo easy_install jsonrpclib
clear
echo "Python installation complete"
read -p "Press [ENTER] to continue"
echo "Downloading SiriServer from Github... [---------80%-]"
curl -L https://github.com/Eichhoernchen/SiriServer/tarball/master > siriserver.tar.gz
clear
echo "Unzipping"
tar -xf siriserver.tar.gz
cd Eich*
cd gen_certs/
clear
echo "Time to generate SSL-certs, what is the IP of the Siriserver (this computer)? [----------90%]"
read IP
./gen_certs.sh $IP
clear
cd ..
cp ca.pem ~/Desktop/
clear
echo "Ok, now you need to transfer the ca.pem file to your iOS device"
echo "I've copied the file to your desktop for easy access"
echo "The easiest way is to mail it to yourself and open it on your iOS device"
read -p "Press [ENTER] to continue to the next step when you've installed it"
clear
echo "(NON 4S ONLY) Go ahead and download Spire from Cydia"
echo "That should take a while, but once you're done enter your IP in"
echo "the settings page of Spire: $IP"
read -p "Press [ENTER] to continue to the next step [100%]"
clear
echo "Starting Siriserver..."
echo "Now go ahead and enable Siri in the general-tab in the Settings-app"
echo "If everything went smooth, you should be up and running"
echo "Try saying: Hello Siri"
echo "Press CTRL+C to STOP"
sudo python siriServer.py


sudo chmod +x /tmp/siri.sh
./siri.sh

ถ้าทุกอย่างไปได้ดีจะมาค้างตรงที่ข้อความด้านล่างนี้
INFO Starting Server
INFO __init__ Listening on port 443

Step Three: Installing Spire Server certificate to iDevice.
หลังจาก generated certificate แล้ว ไพล์ ca.pem จะอยู่ที่ "Eichhoernchen-SiriServer-1ef4b65/" นำไพล์ ca.pem นี้ส่ง email ไปที่เครื่อง IPhone ที่ได้ติดตั้ง Spire แล้ว. หลังจากนั้นก็เปิดไพล์ที่ IPhone แล้ว Install มันเลยครับ
สุดท้ายแล้วครับ รีบไปลงทะเบียนเพื่อเอา API Keys มาใส่ที่ไพล์ apiKeys.conf
Link ตามข้างล่างเลยครับ (ฟรีครับ)

Wolfram Alpha : http://products.wolframalpha.com/developers/
Wordnik : http://developer.wordnik.com/
Weather Wunderground : http://www.wunderground.com/weather/api/

ในส่วนของการใส่หมายเลข Spire Proxy ให้ใส่เป็นหมายเลข IP ของ Siriserver ครับ เช่น https://192.168.1.1 หลังจากนั้นกลับมาที่ Server สั่งให้ Siri ทำงาน
sudo python siriServer.py

ข้างล่างคือตัวอย่างหน้าจอของ Siri ที่เริ่มทำงานได้ปกติ ครับ
INFO handle_accept Incoming connection from ('192.168.1.165', 50197)
INFO read_next_object_from_unzipped Received a Ping (1)
INFO read_next_object_from_unzipped Returning a Pong (1)
INFO read_next_object_from_unzipped Received a Ping (2)
INFO read_next_object_from_unzipped Returning a Pong (2)
INFO read_next_object_from_unzipped Received a Ping (3)
INFO read_next_object_from_unzipped Returning a Pong (3)