วันพุธที่ 30 มีนาคม พ.ศ. 2554

ตัวอย่างการทำ Preload ง่ายๆ ใน jQuery

 ในระหว่างการโหลดหน้าเว็บ จะเป็นการดีมากสำหรับผู้ใช้หากมีอะไรที่เคลื่อนไหวบ้าง เพื่อผู้ใช้จะได้สบายใจว่า web browser ยังทำงานอยู่ 
บทความนี้เราจะมาลองทำ preload กันด้วยการใช้ jquery เข้ามาช่วย โดยมีหลักการคือว่า ขณะที่ document ยังไม่พร้อมที่จะทำงาน เราจะให้ภาพ preload ทำงาน และเมื่อ document พร้อมที่จะทำงานแล้ว เราก็จะสังให้ภาพ preload หายไป



<script type="text/javascript" src="jquery.js">
<script>
$(document).ready(function(){
              $("#preloader").hide();
        });

         $("#preloader").hide();
      
</script>

<img src="preloader.gif" id="preloader" />

เปลี่ยน icon list ด้วย css

เวลาเราทำ bullet โดยใช้ HTML เป็นอะไรที่เชยๆ คือเป็นวงกลม หรือไม่ก็สี่เหลี่ยม แต่ด้วย CSS เราสามารถเปลี่ยน bullet ให้เป็น icon list แทน


*/Code CSS*/

.iconlist
{
list-style: none;
margin: 0;
padding: 0;
}

li.pdf
{
background-image: url(bullet_pdf.gif);
background-repeat: no-repeat;
background-position: 0 50%;
padding: 3px 0 3px 20px;
margin: .4em 0;
}

li.doc
{
background-image: url(bullet_doc.gif);
background-repeat: no-repeat;
background-position: 0 50%;
padding: 3px 0 3px 20px;
margin: .4em 0;
}

li.text
{
background-image: url(bullet_text.gif);
background-repeat: no-repeat;
background-position: 0 50%;
padding: 3px 0 3px 20px;
margin: .4em 0;
}

li.htm
{
background-image: url(bullet_htm.gif);
background-repeat: no-repeat;
background-position: 0 50%;
padding: 3px 0 3px 20px;
margin: .4em 0;
}
Code HTML
<ul class="iconlist">
   <li class="pdf"><a href="#">สุภัทรชัย</a></li>
   <li class="text"><a href="#">คอมพิวเตอร์</a></li>
   <li class="htm"><a href="#">มหาวิทยาลัย</a></li>
   <li class="doc"><a href="#">อุบลราชธานี</a></li>
   <li class="text"><a href="#">จาวา</a></li>
</ul>

วันอาทิตย์ที่ 27 มีนาคม พ.ศ. 2554

10 ปัญหาที่ผู้ดูแลระบบ PACS ปวดหัว

1. “It doesn’t go through…” Part 1: Network layer issues
2. “It doesn’t go through…” Part 2: DICOM layer issues
โอ้ว มันส่งไม่ไป... ขอขยายความว่าด้วยเรื่อง เกาเหลารวมมิิตร ของการส่งภาพไม่ไป ไปช้า ส่งแล้วไม่ได้รับ อะไรก็ตาม อันดับแรกให้ระวังเรื่องของระบบ network ครับ เริ่มตั้งแต่ การ์ดแลน (Network Adapter Card) ว่าเสียบไว้แน่น ลงไดร์ฟเวอร์เรียบร้อย จากนั้นไล่มาที่สาย ไม่หลวม ไม่หักใน ไม่ขาด หนูไม่กัด แม่บ้านถูห้องแล้วกระชากสายขาดใน ฯลฯ สารพัดครับ ดูที่ switching hub หรือตัวรวมสายสัญญาณ ทำงานดีอยู่หรือไม่ ไล่ไปจนถึงปลายทางนะครับว่าสามารถ ping กันจนเจอ
ถ้า ทุกอย่างทำงาน นั่นคือเราสามารถยืนยันได้ว่า hardware ของระบบเครือข่ายทำงาน ทีนี้ คงต้องมาไล่ดูเรื่อง Bandwidth หรือ ความคับคั่งของการจราจรในขณะนั้นๆ ว่าเป็นอย่างไร หากระบบเราใช้งานร่วมกับของทางโรงพยาบาลคือ ไม่ได้ดังแล้วแยกวงออกมาเป็นของตัวเอง ก็ต้องไปแย่งถนนกับการรับส่งข้อมูลระบบอื่นๆ หากไปเจอช่วงเวลาเร่งด่วน ช่วง 10 โมงถึงเที่ยง ส่งภาพอาจจะไม่ไปได้ครับ เนื่องจากระบบ PACS อาศัย Ethernet และ TCP/IP ถ้ามันส่งไม่ได้สักระยะหนึ่งมันจะเลิกส่งเองครับ

อีก เรื่องคือเรื่องของความเข้ากันได้ในระบบไดคอม หรือทางวิชาการเรียกว่า service class นั้นก็คือว่าทั้งทางต้นทางและปลายทางจะต้องสนับสนุนการทำงานที่ต้องการ ที่หวังไว้ว่าจะทำได้ (มี 5 อย่างหรือ 5 service class คืือ 1. verification 2.storage 3.query and retrieve 4. print management 5.worklist) คือต้องทำเป็น หรือคุยกันรู้เรื่องด้วยกันทั้งสองด้าน ถ้าด้านหนึ่งทำได้ อีกด้านไม่สนับสนุนก็เหมือนปรบมือข้างเดียวครัีบ ไม่ดัง และนำเรื่องปวดหัวมาให้อีกต่างหาก
3. “It doesn’t do what I want/need/expect…”:
ผู้ ใช้งานระบบอาจคาดหวังไว้ และระบบไม่สามารถตอบโจทย์ทุกอย่างได้ แนวทางแก้ปัญหาคือ แลกเปลี่ยนเรียนรู้กับผู้ใช้ ซึ่งในที่นี้หมายถึงนักรังสีฯ รังสีแพทย์ แพทย์ประจำบ้าน พยาบาล ซึ่งแต่ละคนมีความต้องการใช้งานระบบ PACS และคาดหวังความสามารถของระบบไว้ไม่เหมือนกัน นักรังสีฯ ควรบอกหรืออธิบายให้ผู้ใช้ทราบถึงข้อจำกัดของระบบ อีกอย่างคือบอกกับทางผู้ขายระบบ ให้ช่วยแก้ปัญหาหรือ ปรับระบบให้เข้ากับสิ่งที่ผู้ใช้งานต้องการนะครับ อันนี้บางทีอาจจะต้องพบกันครึ่งทางนะครับทั้งผู้ใช้และผู้ขาย

4. “It’s really slow…”: มันช้ามาก จอร์ช....
อันนี้ต้องว่า วิเคราะห์ลักษณะงานหรือ ภาระงานของระบบว่าเรามีเคสเพิ่มขึ้นอย่างไร และระบบ server ของเรารองรับได้ไหม หากผู้ดูแลระบบพบว่า cpu ถูกใช้งาน 80% เป็นเวลานาน ก็ต้องคิดแล้วว่าจะต้องเพิ่มจำนวน cpu ในเซอร์เวอร์ของเรา หรือหากดูการเขียน paging ของ ฮาร์ดดิสก์เย้อะมากขึ้น คงต้องรีบเพิ่มหน่วยความจำหรือ RAM ให้กับเซอร์เวอร์แล้วครับ อันนี้ต้องวิเคราะห์เชิงลึกครับ

5. “That can’t be right…”:
ส่งเคสผิดฝาผิดตัวกับภาพ.....
คงต้องทำการประกันคุณภาพของภาพแล้วละครับ มาสุ่มดูว่าทุกวันมีการทำการถ่ายภาพเท่าไหร่ บันทึกไฟล์ถูกหรือไม่เช่นคนไข้ผู้ชาย แต่ดันมีภาพ x-ray เป็นเพศหญิง เป็นต้น

6. “Everybody wants on board now…” ใครๆ ก็ ขอแจม...
อันนี้ยังไม่เกิดในบ้านเราครับ แต่ต่างประเทศเจอเย้อะแล้วคือว่าแผนกอื่นๆ เช่นพวก lab, patho หรือ ผิวหนัง จะขอเอาภาพมาเก็บด้วยกับระบบ PACS อันนี้ต้องเจรจากันนะครับว่าจะเอาอย่างไร

7. “You didn’t tell us about…”:ทำไมไม่บอกชั้นก่อนว่า....
อันนี้ต้องแลก เปลี่ยนเรียนรู้ ร่วมกันครับ ไม่มีใครถูกไปซะทกอย่างหรือทำอะไรๆ ก็ผิด ดังนั้นควรมีการคุยกันแลกเปลี่ยน ในกลุ่มเพื่อนร่วมงานต่างวิชาชีพหรือนักรังสีฯด้วยกัน จะได้ก้าวไปพร้อมๆกันได้ ไม่ต้องเลื่อยขาเก้าอี้กันเอง อิอิ
8. “We need to get a new…”:อยากได้ xxx ใหม่ หรือ อยากได้ xxx เพิ่ม...
เป็นนิมิตรหมายที่ดีนะครับที่มีคนอยากได้ของเพิ่ม แต่ต้องดูเงินในกระเป๋า ด้วยครับ ดังนั้นเมื่อมีของใหม่ก็ต้องมาดูเรื่องความเข้ากันได้หรือ compatability นอกจากนั้นต้องเตรียมแผนอพยพข้อมูลหรือ Data migration ด้วยครับว่าจะย้ายกันอย่างไร

9. “We need to know…”: เราต้องการทราบว่า....
อาจจะต้องมีการทำรายงานสรุปจากข้อมูลที่เราเก็บๆ ไว้ หรือทำ exception report คือรายงานเคสหรือปัญหาที่เกิดขึ้นรวมทั้งสรุปและหาแนวทางแก้ปัญหา อาจทำเล่นๆ ติดไว้ในบอร์ดที่ทำงานในแผนกเพื่อเป็นการสื่อสารภายในองค์กร หรือเป็น KM กันในที่ทำงานก็ตามอัธยาศัยนะครับ
10. “What to do when the lights are out…”: ทำยังไงเมื่อเกิดเหตุไม่คาดคิด...
เช่นไฟดับ โดนไวรัส ข้อมูลหาย เครื่องพัง  อันนี้ต้องเตรียมแผนล่วงหน้าเช่น มีการสำรองข้อมูล มีการซ้อมการนำข้อมุลที่สำรองไว้มากลับคืนมา หรือ มีการป้องกันไวรัสจาก usb ไดร์ฟ อย่างนี้ต้องเตรียมนะครับ พวกนี้ค่อนข้างสำคัญครับ

การเขียนโปรแกรมที่ดี

1.โปรแกรมแบบพอเพียง(ทำอะไรให้เล็กที่สุดเท่าที่เป็นไปได้)
2.ทำสิ่งธรรมดาให้ง่าย ทำสิ่งยากให้เป็นไปได้
3.จงโปรแกรมโดยนึกว่าจะมีคนมาทำต่ออย่างแน่นอน
4.ระเบียบ กฏข้อบังคับ เชื่อมั่นไม่ได้แล้ว ถ้ามีเพียงหนึ่งโมดูลไม่ปฏิบัติตาม
5.ตัดสินใจให้ดีระหว่างความชัดเจน(clearance) กับ การขยายได้(extensibility)
6.อย่าเชื่อมั่น output จากโมดูลอื่น ถึงแม้เราจะเป็นคนเขียนเอง
7.ถ้าคนเขียนยังเข้าใจได้ยาก แล้วคนอ่านจะเข้าใจได้ยากกว่าแค่ไหน
8.ค้นหาข้อมูลสามวันแล้วทำหนึ่งวัน หรือจะทำสามวันแล้วแก้บั๊กตลอดไป
9.จงสร้างเครื่องมือ ก่อนทำงาน
10.อย่าโทษโมดูลอื่นก่อน โดยเฉพาะถ้าโมดูลอื่นเป็น OS และ Compiler
11.พยายามทำตามกฏ แต่ถ้ามีข้อยกเว้น ต้องมีอย่างหลีกเลี่ยงไม่ได้ แล้วประกาศและตะโกนให้ดังที่สุด
12.High cohesion Loose coupling. (ยึดเกาะให้สูงสุดในโมดูล และ เกาะเกี่ยวกับโมดูลอื่นให้น้อยที่สุด)
13.ให้สิ่งที่เกี่ยวข้องกันยิ่งมากอยู่ไกล้กันมากที่สุด
14.อย่าเชื่อโดยไม่พิสูจน์
15.อย่าลองทำแล้วคอมไพล์ดู ถ้าเราไม่ได้คาดหวังผลลัพธ์อะไรไว้ (อย่างเช่นปัญหา index off by one)
16.จงกระจายความรู้เพราะนั่นคือการทำ Unit Test ระดับล่างสุด(ระดับความคิด)
17.อย่าเอาทุกอย่างใส่ใน UI เพราะ UI คือส่วนที่ Unit Test ได้ยาก
18.ทั้งโปรเจ็คต์ควรไปในทางเดียวกันมากที่สุด( Consistency )
19.ถ้ามีสิ่งที่ดีอยู่แล้วจงใช้มัน อย่าเขียนเอง ถ้าจำเป็นต้องเขียนเอง ให้ศึกษาจากข้อผิดพลาดในอดีตก่อน
20.อย่ามั่นใจเอาโค้ดไปใช้จนกว่าจะ test อย่างเพียงพอ
21.เอาโค้ดที่ test ไว้ที่เดียวกันกับโค้ดที่ถูก test เสมอ
22.ทุกครั้งที่แก้ไขโค้ดให้ run unit test ทุกครั้ง
23.จงใช้ Unit Test แต่อย่าเชื่อมั่นทุกอย่างใน Unit Test เพราะ Unit Test ก็ผิดได้
24.ถ้าต้องทำอะไรที่ซ้ำกันมากกว่าหนึ่งครั้ง ก็เพียงพอแล้วที่จะแยกโค้ดส่วนนั้นออก
25.ทำให้ใช้งานได้ก่อน แล้วค่อย optimize และถ้าไม่จำเป็น อย่าoptimize
26.ยิ่งประสิทธิภาพเพิ่ม ความเข้าใจง่ายจะลดลง
27.ใช้ Design Pattern ที่เป็นที่รู้จักจะได้คุยกับใครได้รู้เรื่อง
28.อย่าเก็บไว้ทำทีหลัง ถ้ายังไงก็ต้องทำ
29.MutiThreading ไม่ใช่แค่การเพิ่มประสิทธิภาพ แต่มันมาพร้อมกับ Concerency, Deadlock, IsolationLevel, Hard to debug, Undeterministic Errors.
30.จงทำอย่างโจ่งแจ้ง
31.อย่าเพิ่ม technology โดยไม่จำเป็น เพราะนั่นทำให้โปรแกรมเมอร์ต้องวุ่นวายมากขึ้น
32.จงทำโปรเจ็คต์ โดยคิดว่าความเปลี่ยนแปลงเกิดขึ้นได้เสมอ
33.อย่าย่อชื่อตัวแปรถ้าไม่จำเป็น เดี๋ยวนี้ IDE มันช่วยขึ้นเยอะแล้วไม่ต้องพิมพ์เองแค่ dot มันก็ขึ้นมาให้เลือก
34.อย่าใช้ i, j , k , result, index , name, param เป็นชื่อตัวแปร
35.ทำโค้ดที่ต้องสื่อสารผ่านเครือข่ายให้คุยกันน้อยที่สุด
36.แบ่งแยกดีดี ระหว่าง Exception message ในแต่ละเลเยอร์ ว่าต้องการบอกผู้ใช้ หรือ บอกโปรแกรมเมอร์
37.ที่ระดับ UI ต้องมี catch all exception เสมอเพื่อกรอง Exception ที่ลืมดักจับ
38.ระวัง คอลัมภ์ allow null ใน database ดีดี ค่า <Null> มัน convert ไม่ได้
39.อย่า ลืมว่า Database เป็น global variable ประเภทหนึ่ง แต่ละโปรแกรมที่ติดต่อเปรียบเหมือน MultiThreading ดังนั้นกฏของ Multithreading ต้องกระทำเมื่อทำงานกับ Database
40.ระวังอย่าให้ logic if then else ซ้อนกันมากมาก เพราะสมองคนไม่ใช่ CPU จินตนาการไม่ออกหรอกว่ามันอยู่ตรงไหนเวลา Debug (ถ้ามากกว่าสามชั้นก็ลองคิดใหม่ดูว่าเขียนแบบอื่นได้มั้ย)
41.ระวังอย่าให้ลูปซ้อนกันมากมาก ไม่ใช่แค่เรื่องความเร็วอย่างเดียว เวลา Debug เราคิดตามมันไม่ได้ (ถ้าเกินสามชั้นก็ไม่ไหวแล้ว)
42.อย่า ใช้ Magic Number ใน Code เช่น if( controlingValue == 4 ) เปลี่ยนไปใช้ Enum ดีกว่า เป็น if( controlingValue == ControllingState.NORMAL ) เข้าใจง่ายกว่ามั้ย
43.ถ้าจะเปรียบเทียบ string Trim ซ้ายขวาก่อนเสมอ
44.คิดหลายๆ ครั้งก่อนใช้ Trigger
45.โปรแกรมเมอร์คือห่วงโซ่สุดท้ายของมลพิษทางความซับซ้อน ดังนั้นหา project leader ดีดีแล้วกัน

การ Clear cache Squid

# /etc/init.d/squid stop
# cd /var/spool/squid/
#  rm  -Rf  *
#  squid -z
# /etc/init.d/squid start

การติดตั้ง Light squid 1.8 สำหรับ CentOS,fedora Code

# wget http://sourceforge.net/projects/lightsquid/files/lightsquid/lightsquid-1.8.tgz
# tar -zxvf lightsquid-1.8.tgz
# mv lightsquid-1.8 /var/www/html/lightsquid
# cd /var/www/html/lightsquid
# cd /var/www/html/lightsquid
# chmod +x *.cgi
# chmod +x *.pl
# chown -R apache:apache *
# echo "Config  Httpd.conf";
# echo "#Add for Lightsquid Report" >> /etc/httpd/conf/httpd.conf
# echo "<Directory /var/www/html/lightsquid>" >> /etc/httpd/conf/httpd.conf
# echo "AddHandler cgi-script .cgi" >> /etc/httpd/conf/httpd.conf
# echo "AllowOverride All" >> /etc/httpd/conf/httpd.conf
# echo "</Directory>" >> /etc/httpd/conf/httpd.conf
# service httpd restart
# ./check-setup.pl
# ./lightparser.pl
# /var/www/html/lightsquid/lightparser.pl
# echo '5 4 * * * root /var/www/html/lightsquid/lightparser.pl' >> /etc/crontab

ดูรายงาน squid  โดย http://ip-server/lightsquid

การ Config Squid บน Linux

การ Config Squid.conf
1. การจำกัดเวลาลูกข่ายใช้อินเตอร์เน็ต
acl acl_net src 172.17.8.0/24    // วงที่ออกเน็ตได้
acl acl_client src 172.17.8.10     // IP ที่ต้องการห้ามออกเน็ตเป็นเวลา
acl acl_time time MTWHF 17:00-23:59
acl acl_time2 time MTWHF 0:00-7:00
http_access deny acl_client acl_time
http_access deny acl_client acl_time2
http_access allow acl_net
(M จันทร์ T อังคาร W พุธ H พฤหัส F ศุกร์ A เสาร์  S อาทิตย์)

2. การบล็อค MSN
คำตอบ ให้เพิ่ม เข้าไปใน squid.conf ส่วนของ ACCESS CONTROL
acl chatMSN req_mime_type -i ^application/x-msn-messenger$
http_reply_access deny chatMSN
acl msn1 req_mime_type -i ^application/x-msn-messenger$      //รุ่น 6.3
acl msn2 url_regex -i gateway.dll     // รุ่น 7.X +
http_access deny msn1
http_access deny msn2
หรือถ้าต้องการblock เป็นเวลา สามารถกำหนดดังนี้
acl msn1 rep_mime_type -i ^application/x-msn-messenger$
acl msn2 url_regex -i gateway.dll
acl morning time M T W H F 9:00-12:00
acl lunch time M T W H F 13:00-17:00
http_access deny msn1 morning
http_access deny msn1 lunch
http_access deny msn2 morning
http_access deny msn2 lunch

3. Block site (Domain)
acl block_url url_regex ‘etc/squid/blacklists’   //สร้างไฟล์ blacklist.txt
http_access deny block_url
(พิมพ์ชื่อ Domain ที่ต้องการบล๊อคส่ในแฟ้มที่สร้าง)

4. Block Key word
acl keyword url_regex -i messenger hi5 chat
http_access deny keyword

5. Block  MP3  Download
acl download urlpath_regex -i \.mp4$ \.wav$ \.iso$
http_access deny download

6. การจำกัด  bandwidth    Download
acl blockfile url_regex -i ftp .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar .avi .mpeg .mpe .mpg .qt .ram
.rm .iso 
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl lan src 192.168.1.0/255.255.255.0 #กลุ่ม IP LAN ภายใน
http_access allow lanhttp_access deny all
delay_pools 1
delay_class 1 1
delay_parameters 1 2500/2500  # จำกัดไม่เกิน 2.5 kbyte หากต้องการไม่เกิน 5.0 kbyte ก็เปลี่ยนเป็น 5000/5000 ไม่เกิน จะจำกัดเท่าไหร่ก็เปลี่ยนเอาเลยครับ
delay_access 1 allow blockfile

 7. การ download จาก ตัวอักษรหรือคำจาก website
acl magic_words url_regx -i .exe
delay_pools 1
delay_class 1 1
delay_parameters 1 4000/4000
delay_access 1 allow magic_words
(magic_world เป็นตัวแปลบออกว่าถ้ามีนามสกุล .exe (ส่วน -i คือ  ตัวบอกว่าเป็น case-insensitive) ให้ download มาด้วยความเร็วไม่เกิน 32 Kbit/sec ก็ประมาณ 4 Kbyte/sec )

8. กำหนดให้ขนาด bandwidth ให้กับUser  ภายใน networkacl all src 0.0.0.0/0.0.0.0
delay_pool_count 1
delay_class 1 2
delay_parameters 1 12500/12500 2500/2500
delay_access 1 allow all
( อธิบายว่า มี Lease Line ขนาด 128K และต้องการจะเหลือไว้สักนิด สำหรับ SMTP server ซึ่งเป็น IP จริงไม่ได้ต่อผ่านกับ gateway ตัวนี้ และให้ใช้สำหรับ NAT ภายใน องค์กร 100Kbit/sec เพื่อให้ทุกคน share กันใช้เท่าๆกัน และต้องการจะให้แต่ละคนใช้ Bandwidth ได้ไม่เกิน 2.5 Kbyte/sec )

9 กำหนดขนาด bandwidth ให้กับ group networkacl a_ll src 0.0.0.0/0.0.0.0
delay_class 1 3
delay_parameters 1 56000/56000 18750/18750 500/500
delay_access 1 allow all
(อธิบายได้ดังนี้   มี Lease Line ขนาด 512K และต้องการเหลือ Bandwidth สำหรับ SMTP ไว้ 8Kbyte/sec ใช้ภายใน network ไม่เกิน 448 Kbit/sec และแบ่งให้แต่ละ class ไม่เกิน 150 Kbit/sec และให้แต่ละ IP ไม่เกิน 4 Kbit/sec )

10. การจำกัดขนาด bandwidth และไม่จำกัดขนาด bandwidth
acl magic_words1 url_regex -i 202.29.14.1
#กำหนด acl กลุ่มที่มีสิทธิ์ทุกอย่าง acl magic_words2 url_regex -i ftp .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar .avi .mpeg .mpe .mpg .qt .ram .rm .iso .raw .wav .mov #กำหนด acl กลุ่มที่ต้องควบคุม traffic คือไฟล์บางประเภทที่ใหญ่ ๆ
การกำหนดค่า Squid(Delay Pool)
# สำหรับ delay pool ที่คุณต้องการ –enable-delay-pools
delay_pools 2 #กำหนดให้มี 2 pool ที่ต้องใช้
#สมมุติมี link ขนาด 2Mbits ซึ่ง 2 mbits == 256 kbytes ต่อวินาที เราจะจำกัดให้ใช้ได้ไม่เกิน 5 KB/s ต่อโหนด
delay_class 1 2 #กำหนดให้ pool ที่ 1 เป็น class 2 ที่ถูกกำหนดค่าไว้ใน magic_word2 แบบจำกัด
delay_parameters 1 256000/256000 5000/256000
delay_access 1 allow magic_words2 #กลุ่มที่ดาวน์โหนดไฟล์ต่าง ๆ ที่กำนดไว้
delay_access 1 allow rinet #กลุ่มที่มี ip ต้นทางเป็นเครือข่ายภายใน
# -1/-1 หมายความว่าไม่มีการจำกัดขนาดของ traffic.
delay_class 2 2 #กำหนดให้ pool ที่ 2 เป็น class 2 ที่ถูกกำหนดค่าไว้ใน magic_word1 แบบไม่จำกัด
delay_parameters 2 -1/-1 -1/-1
delay_access 2 allow magic_words1
ตัวอย่าง
acl download url_regex -i ftp .rar .wma .exe .mp3 .vqf .tar.gz .gz .rpm .zip  .avi .mpeg .mpe .mpg .qt .ram .rm .iso .raw .wav .mov
delay_pools 2
acl day time 09:00-15:59
acl day2 time 16:00-09:00
delay_class 1 2
delay_parameters 1 10000/20000 10000/20000
delay_access 1 allow download day day2 
delay_access 1 deny all
delay_class 2 2
delay_parameters 2 -1/-1 -1/-1
delay_access 2 allow  localnet localhost   !all
delay_access 2 deny !all

11. การบล็อค Port และ เลข  IP
acl porttest port 5050 5222 5223
acl block_port port 5050 5222 5223
acl test src 172.27.162.43
http_access deny block_port test
http_access allow all
acl block_port port 5050 5222 5223
acl test src 172.27.162.43
http_access deny block_port test
http_access allow all
acl blockip src “/etc/squid/block.ip”   //สร้างแฟ้ม block.ip ใส่เลข IP เข้าไป

12. Block skype  Chat 
acl skype_user src “/etc/squid/user-skype”  //ใส่เลข ip เครื่องที่อนุญาตให้ใช้ได้
acl numeric_IPs url_regex ^[0-9]+.[0-9]+.[0-9]+.[0-9]+:443
acl Skype_UA browser ^skype^
http_access deny skype_user numeric_IPs
http_reply_access deny skype_user numeric_IPs
http_access deny skype_user Skype_UA


ที่มา http://ict.scphc.ac.th/?p=271

วันอังคารที่ 22 มีนาคม พ.ศ. 2554