Showing posts with label network. Show all posts
Showing posts with label network. Show all posts

Friday, December 2, 2011

blockdiag เพิ่ม icons สำหรับ networks

cisco เขาคงเล็งเห็นมั้ง เลยเพิ่ม icons มาให้ โปรแกรม py-blockdiag ได้ใช้กัน
โปรแกรมนี้ เคยลงให้ได้อ่านผ่านตากันไปหนแล้ว ที่ว่า เอาไว้เขียน กราฟ เขียน โฟลชาร์ต ผ่านคำบรรยาย ที่มีไวยากรณ์ จำเพาะ ไม่กี่คำ ก็ได้รูปผังภาพออกมาดั่งใจ

งวดนี้ ซิสโก เลยเพิ่ม รูป สำหรับ เครือข่าย มาไว้ให้ใช้ด้วย

ขอขอบคุณ

เพิ่มเติม
หากไม่บอกกัน ถึงวิธีใช้งาน ก็ดูว่าเกินไป มานึกได้เอาเมื่อครู่นี้เอง
ให้ระบุ shape_namespace = "cisco"; ไว้ใน diagram แล้วกำหนด shape เอาเองอีกที เช่น  A[shape = "router"]; ส่วนที่ว่ามี shape อะไรบ้างนั้น เชิญครับ ที่นี่เลย น่ะ เลือกเอาเอง

Thursday, May 6, 2010

FreeBSD: programming -->getopt



commands

เพื่อนๆ หลายท่านคงเคยใช้งานโปรแกรม แบบที่ต้องกำหนด option ด้วย เช่น
% find -n -x pattern filename
% grep -v R-dep


ซึ่งโปรแกรมลักษณะนี้ อำนวยความสะดวกให้ผู้ใช้มาก ในแง่ที่ว่า สามารถเพิ่มคุณลักษณะวิเศษไปจากเดิมได้ นิดหน่อย โดยไม่ต้องสั่งโปรแกรมเดิมมาทำงานซ้ำ

n, x หรือ v ในตัวอย่างนั้น เรียกว่า option การกำหนด option ให้กับโปรแกรมที่เขียนขึ้น แม้จะทำได้เองโดยง่าย แต่ในโลกของ unix แล้ว การใช้บริการของ system functions นั้นเป็นสิ่งที่ ต้องทำ เพราะอย่างน้อย ก็ ลดภาระ ของผู้พัฒนาโปรแกรม และ ทำให้ ตัดความกังวล เรื่อง ความปลอดภัยของระบบไปได้มาก

ความปลอดภัย เป็นเรื่องที่ล้อเล่นไม่ได้ น่ะ และในยามที่เรามีกฏหมายเกี่ยวกับคอมพิวเตอร์มาใช้งานแล้วเช่นนี้ หากโปรแกรมที่เราเขียนขึ้น มีช่องโหว่ว ก็ลำบากมากอยู่ ถ้าใช้กันผ่าน network

ในโอกาสพิเศษเช่นนี้ จึงใคร่ขอนำเสนอเรื่องสั้นๆ ไม่ยาวนัก แต่พอให้เกิดปัญญา มาตกลงปรองดองกันได้ ระหว่าง การเขียน code ขึ้นมาเอง กับการใช้บริการของ system functions (ผ่าน library)

function ที่ว่านี้ เรียกว่า getopt(3) ซึ่งเมื่อเปิด manual page ใน section ที่ 3 ดูก็ทราบรายละเอียดได้ว่า
  1. ต้อง link กับ standard C library (-lc) ในตอน compile ตัวอย่างคือ
    % cc -o programme programme.c -lc
  2. function นี้กำหนด prototype ไว้แล้วใน unistd.h header files ทำให้เราต้องรวมบรรทัด
    #include <unistd.h>
    เข้าไปด้วย


ตัวอย่าง ที่เขียนขึ้นจริงๆกับ โปรแกรมเรื่องสั้นภาค ๒ ที่เพิ่งส่งไปเมื่อวันอังคารที่ผ่านมานี้ ขอตัดมาให้ดูแต่เพียงบางส่วนเท่านั้น คือ
@ |getopt(3)|, one of many functions from system services
@<Getoption@>=
sflag = 0;
interactive=0;
while ((ch = getopt(argc, argv, "is:d:")) != -1) { <----
  switch (ch) {
   case 'i':@/
      interactive = 1;@/
      break;@/
   case 's':
      if ((fp = fopen(optarg, "r")) == NULL) {
       fprintf(stderr,"%s: %s: %s\n",programme, optarg, strerror(errno));
       status = OPEN_FILE;
      }
      sflag = 1;
      strcpy(filename,optarg); /* for later used */
      break;
   case 'd':
      if ((fp = fopen(optarg, "r")) == NULL) {
       fprintf(stderr,"%s: %s: %s\n",programme, optarg, strerror(errno));
       status = OPEN_FILE;
       }
      strcpy(filename,optarg); /* for later used */
      break;
   case '?':@/
   default:@/
      fprintf(stderr,"usage: %s -[[i]s|[i]d] data-filename\n%s\n", programme,
      strerror(errno));
      status = USAGE;
      break;
   }
  }
โดยที่ตรงบรรทัด while นั่นแหละ พอเดาออกน่ะครับว่า options ที่ใช้คือ i,s,d อันนี้ไม่ได้หมายถึง index for sustainable development ของการพัฒนาอย่างยั่งยืน อะไรหรอกน่ะ แต่มันเผอิญมาตรงกัน เท่านั้นเอง

กล่าวคือ option ของโปรแกรมที่ใช้งานจริงจริง เมื่อเรียกใช้ ก็จะอยู่ในรูป
% programme -i -sfilename | -dfilename
หรือ
% programme -isfilename | -idfilename
หรือ
% programme -sfilename | -dfilename
จาก manual page ทราบว่า เรามีภาระเพียงกำหนด argument ที่ 3 ให้กับ system function นี้ ซึ่ง มีรูปแบบ ที่แน่นอน ไว้ให้แล้ว พร้อมกับเขียน code มาเพื่อรองรับ option ที่กำหนดไว้ ก็เท่านั้นเอง

และในตัวอย่าง มะไฟ ก็เพียงเลือกเอาว่า จะใช้ option i,s,d โดยที่ ๒ อันหลังนั้นต้องมีชื่อแฟ้มตามมาด้วยเสมอ กล่าวคือ ต้องอยู่ในรูป
% programme -sfilename
หรือ
% programme -dfilename
ย่างนี้เป็นต้นเสมอ จะใช้แต่ option ใด option หนึ่งโดดๆ ไม่มีชื่อแฟ้มตามมาด้วย ไม่ได้

ใน manual page นั้น เขาบอกไว้ชัดเจนว่า option ที่มี argument ตามมานั้น ให้ตามหลัง option นั้นด้วย : เสมอ เพื่อแยกจาก option อื่นที่ไม่มี argument ตามมาด้วย ส่วนที่ว่า argument ที่ตามมาด้วยนั้น จะเขียนติดต่อกันไปเลย อย่างในตัวอย่างที่ยกมาให้ดู หรือ จะมี space ตามเพื่อความสวยงาม ก็ได้ ไม่ว่ากัน

ในตัวอย่างที่ยกมานั้น option s และ option d มี : ตามอยู่ด้วย ทำให้ทราบว่า ทั้ง ๒ option นั้นมี argument ตามมาแน่นอน ซึ่งก็คือชื่อของแฟ้มเอกสาร ที่จะเปิดเพื่ออ่านข้อมูลนั่นเอง

ก็หวังว่าคงพอเข้าใจบ้าง

และเมื่อลองเทียบ ความเรียบง่ายนี้ กับ codes ที่ต้องเขียนเองขึ้นมา โดยขอให้ไปดูจากหนังสือ The C Programming Language ในบทที่ ๕ section ที่ 10 Command-line Arguments ท่านก็จะพบว่า ยุ่งเหยิงมากกว่ากันเยอะเลย เอาแค่การตีความ precedence ของ pointers & operator ก็แทบจะพูดได้ว่า

โชคดีแล้ว ที่ไม่ต้องเขียนเอง

การใช้บริการของ system function ผ่าน library ทั้งหลายที่มีให้ จึงนับว่าดีที่สุด

ขอยกคุณงามความดีนี้ ถวายเป็นราชพลี ถวายเป็นปฏิบัติบูชา ในวาระ ฉัตรมงคลสมัย อันประเสริฐยิ่งนี้

อันใดที่บกพร่อง มะไฟ ฅนยาก ขอน้อมรับไว้แต่ผู้เดียว

Sunday, January 18, 2009

LAN : net walking once again

จาก Thumb drive's vision: (วิ)ไสยศาสตร์(สัยทรรศ) ที่เคยกระแหนะกระแหน การใช้ local area networking: LAN ว่าไม่คุ้มค่านั้น ดูว่าจะยากแก่การเข้าใจ หากไม่เกิดเรื่อง มาประกอบเป็นตัวอย่างให้ดูชม

ก็ในสัปดาห์ที่ผ่านมานั้น ศจ. จัด work shop ที่เชียงใหม่ นวท. ทุกคน, ยกเว้น มะไฟ, ไปกันหมด ในสัปดาห์เดียวกันนี้เอง ที่ สทน. จัดหลักสูตรอบรม การป้องกันอันตรายจากรังสี ระดับ ๑ ขึ้น ที่บางเขน และแน่นอนว่า การจัดการกากกัมมันตรังสี เป็นเรื่องหนึ่ง ที่ได้รับการบรรจุในหลักสูตรนี้

มะไฟ มวยแทน จึงจำต้องรับหน้าที่ในการบรรยาย สอน พูด หรืออะไร ก็แล้วแต่จะพอใจเรียก ในการนี้ ต้องมอบ script การสอนให้กับคณะผู้จัดการฝึกอบรม

น้อง เรามีวิธีอะไรมั้ย ที่พี่จะส่งแฟ้ม จากเครื่องของพี่ข้างล่าง โดยไม่ต้องเดินเอามาให้ที่ชั้น ๒ น่ะ
มีครับพี่ เราต้องแชร์ ...ฯลฯ
งั้น น้อง สอนพี่ด้วย อ้อ แล้ว ก็สอนพวกพี่ๆที่นี่ให้รู้จักด้วยน่ะ
ไม่งั้น มันจะกลายเป็น net walking หรือไม่ก็ not working ไป

จะไม่พูดมากแหละ แต่นี่แหละคือเรื่องจริงที่เกิดขึ้น นับจากเดือน ตค. เมื่อ ๒ ปีที่แล้ว ซึ่งจะว่าไปแล้ว เกิดขึ้นมานานแล้วด้วย เรื่องที่เกิดขึ้นแล้ว และไม่มีการแก้ไข เรื่องนี้คือ เราวาง LAN ไว้แล้ว แต่กลับ ไม่ใช่ให้เกิดประโยชน์ อย่างคุ้มค่า ต่อองค์กรเลย แม้แต่น้อย

จะจัดไปทำไมกับการอบรมคอมพ์น่ะ จัดอยู่นั่นแล้ว รึว่าคนเรามันจะโง่ดักดาน จนถึงกับต้องอบรมซ้ำซาก อบรมกันไม่เลิก

Sunday, July 6, 2008

wireless wired network

วันนี้ ผ่อนคลายความเครียดกันด้วยเรื่อง ไร้สาระ เอ้ย ไร้สายที่มีสายต่อ

จำไม่ได้ว่าเคยโพสไว้ที่ไหน แต่ดูเหมือนว่า เคยโพสไว้ ให้เป็นของขวัญ หลานไอเดีย แต่เรื่องที่โพส จะเป็นเรื่องนี้หรือไม่ ก็ไม่แน่ใจ เพราะว่ามันก็ล่วงมานานอยู่ เอาเถอะงวดนี้ก็ขออนุญาตหลาน ไอเดีย นำข้อเขียนมาโพสที่นี่อีกเตาละกัน

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

ก็นี่แหละ ซีงิต ที่กำหนดเองไม่ได้ แม้กระทั่งเส้นทางเดิน

เรื่องก็มีอยู่ว่า ...
ระหว่างนี้, ๙ มิย เป็นต้นมา, ผ่าตัดช่องท้อง และมานอนพักรักษาตัวที่ apartment ที่ไม่ใช่บ้าน ซึ่งใน apartment เขามี wireless internet ให้ ก็ปกติที่มีบริการนี้ให้กับลูกค้า ทีนี้เมื่อ week ก่อนไปซื้อ notebook ถูกๆ มาให้ ไหมฟ้า ที่ดูแลอยู่ได้ใช้ด้วย เพราะเธอมีนิสัยชอบขีดเขียน งานส่วนใหญ่จึงเป็นเพียงใช้ office suite นานนานครั้ง ถึงจะไปเปิดตัว e สักที, เธอบอกมายังงั้น
ปัญหาก็คือ ทั้งเครื่องที่ใช้อยู่กับเครื่องใหม่ ต่างก็มี wireless lan อยู่ทั้งคู่ แต่ account กลับมีอยู่เพียง ๑ แล้วจะทำยังไง ครั้นจะไปซื้อ account เพิ่ม ก็เสียดายตัง พอมานึกว่าตัวเอง ก็มี วิชาเทพฯ กะเขาอยู่ก็เลย แก้ปัญหาแบบแมวๆอย่างมะขาม
ก็รอดตัวไปได้

เอาเครื่องที่ใช้ก่อน เครื่องนี้ใช้ FreeBSD อยู่ อีกเครื่องที่ ไหมฟ้า เธอใช้นั้นเป็นวินอะป้าดเม่น ทั้งสองเครื่อง มี lan ต่ออยู่ด้วย เรียกว่า หากมีสาย lan มาต่อเข้า ๒ เครื่องก็คุยกันได้สบาย ไม่ว่าจะเป็น ftp, http, หรือ etc

แล้วจะเลือกเครื่องไหนละ ที่ต่อไปยัง hi speed wireless internet นั้น

ไม่รีรอหรอก ผมเลือกใช้ FreeBSD แหละ

มาดูฝั่งสายแลนมั่ง เครื่องผมใช้ ip=10.3.1.25 netmask=0xffffff00 ไม่กำหนด router แต่ตั้งให้เป็น gateway ด้านของ ไหมฟ้า ใช้ ip=10.3.1.60 netmask=0xffffff00 และกำหนดให้ gateway ไปที่ ip=10.3.1.25 นั้น

ด้านฝั่งของ FreeBSD นั้นกำหนดว่า
๑) nat ด้วย wireless nic นั้น
๒) รับหมายเลข ip จาก wireless ด้วย dhcp
๓) กำหนดว่าให้เป็น gateway
เพียงเท่านี้จริงๆ
ประเดี๋ยวจะนำแฟ้ม /etc/rc.conf มาให้ชม
เอาละครับ ตื่นมาชมกันได้แล้ว นี่ตัดจำเพาะที่เห็นว่า ต้องใช้จริงๆ


gateway_enable="YES"
##
firewall_enable="YES"
firewall_type="OPEN"
firewall_logging="YES" # Set to YES to enable events logging
firewall_logdeny="YES" # Set to YES to log default denied incoming

#defaultrouter="10.3.1.1"
ต้องยกเลิกนะ ห้ามกำหนด

ifconfig_ath0="DHCP"
<--- เส้นทางสู่ internet
#
#
natd_enable="YES" # Enable natd (if firewall_enable == YES).
natd_interface="ath0" # Public interface or IPaddress to use.
#
ifconfig_em0="inet 10.3.1.25 netmask 255.255.255.0"
<--- เส้นทางสายแลนของ ไหมฟ้า


หวังว่าคงได้ สาระบ้าง และ อีกครั้ง ยกความดีนี้ให้กับหลาน ไอเดีย ไปด้วยเสน่หา แลหากมีอะไรขาดตกบกพร่อง ขอให้ต่อว่า หรือ แนะนำ มะไฟ มาตรงๆได้ โดยไม่ต้องเกรงใจ

View My Stats