ผมได้ไปอ่านบทความ ที่ http://search400.techtarget.com
คือ 9 ทักษะที่ควรมี (ในสายงาน RPG)
แต่ผมปรับเนื้อหาให้เหมาะกับ สภาพแวดล้อมที่ผมเห็น การเปลี่ยนแปลงในองค์กรมาให้ดู
RPG โปรแกรมเมอร์ที่ทำงานมานาน จะคุ้นเคย (และรู้สีกดี) กับสภาพแวดล้อมที่ปิด(จำกัด)
(จำน้อยๆ ทำอะไรมากไม่ได้ กลายเป็นไม่จำเป็นต้องทำอะไรมาก ด้วย)
แต่ในความเป็นจริง Application ในภาษาอื่นๆ มีจุดเด่นมากขึ้น
และ User ก็ได้เห็น (เปิดโลกไปแล้ว) ทำให้เราหลีกหนีไม่ได้
สำหรับ สายงาน RPG ผมแนะนำให้รู้ Skill ดังต่อไปนี้ครับ (ช่วงเริ่มต้น)
ซึ่งจะทำงาน ของคุณ "ง่ายขึ้น" (เรียนรู้ + ฝึก แล้ว นำมาใช้ได้เลย) ดังต่อไปนี้
1. SQL
2. DB2/400
3. RPG IV
4. ใช้ Tool : Code/400
5. ใช้ Tool : iSeries Navigator
1. SQL
พนักงานรุ่นใหม่ ถูกสอนให้ใช้ SQL ในการติดต่อกับฐานข้อมูล
ดังนั้น เพื่อให้คุยกับเขารู้เรื่อง ก็จำเป็นต้องใช้ เหมื่อนกันครับ
ควรรู้สิ่งดีๆ เหมือนคนรุ่นใหม่ มากกว่าให้คนรุ่นใหม่ มาหัดใช้วิธีเก่า/ช้ากว่า
ควรใช้ Run SQL Script ใน iSeries Navigator
- จัดเก็บ แยก SQL ที่ใช้บ่อยได้ เช่น SQL ที่ใช้หา ความผิดปรกติของ data
2. DB2/400 หลายคนแค่เรียนรู้ว่า ใช้อย่างไร ? (และจำกัด)
แต่ในความเป็นจริง DB2 มีหลักการดีๆ ที่เกิดขึ้นก่อนเจ้าอื่นๆ
เพียงแต่ใน RPG ยุคแรกๆ ไม่ได้ใช้งาน
>> ควรอ่าน เทียบกับ Std Database (พร้อมจะอ้างอิง, ใช้ กับ Database อื่นได้)
3. RPG IV
เริ่มเขียนในสไตล์นี้ ibm พยายามให้ทีมงานเดิมสามารถปรับเปลี่ยนได้ โดยการเปลี่ยนทีละน้อย ข้อดีก็คือ จะรู้สึกไม่ยาก (เมื่อเทียบกับไปเรียนภาษาใหม่)
-Sub procedures
ใน RPG-II,III เรามักจะเขียนต่อเนื่องกันไป (Top-Down) และใช้ Goto เป็นหลัก
ทำให้อ่าน code ยาก ตั้งแต่ RPG IV แทบทุกอย่างจะเขียนแบบ Sub-Procedure
-Integrated Language Environment (ILE)
RPGILE เป็น อีกระดับของ RPG ที่ "เปิด" กว้างในการติดต่อกันระหว่าง Application
ทำให้เราข้ามขีดจำกัดของแต่ละภาษา เช่น ติดต่อกับโปรแกรม Java ได้
4. ใช้ Tool : Code/400
เป็นโปรแกรมที่อยู่ใน WDSC WebSphere Studio แล้ว (ติดตั้งจาก CD ที่ได้มา ติดตั้งบน Windows)
ทำให้การเขียนโปรแกรม ได้เร็วและง่ายขึ้น (มีคนสรุปว่า เร็วขึ้นมากกว่า 20%)
คิดเล่นๆ - นำ code กลับไปทำที่บ้าน หรือ offline ได้ (compile ไม่ได้)
ช่วยในการ ร่างโปรแกรม (draft)
5. ใช้ Tool : iSeries Navigator หรือ System i Navigator
เป็นเครื่องมือพื้นฐานที่ติดตั้งมาบน CA/400 (Client Access/400)
-Operations Navigator เดิม เราต้อง "จำคำสั่่ง" ในการจัดการต่าง แต่ด้วยตัวนี้มองผ่านภาพ,กลุ่มคำ แล้วเลือก (ในสไตล์ windows) ทำให้ใช้งานได้ง่ายกว่ามากครับ เหมาะกับคนที่จำคำสั่งได้เล็กน้อย
-Databases function ต่อเนื่องจาก ข้อ 1 ครับ
ในบทความพูดถึง การมีทักษะกับ The Integrated File System (IFS)
แต่ผู้เขียน ไม่ได้ทำงานกับงานลักษณะนี้ จึงขอบายครับ
วันอาทิตย์ที่ 9 กุมภาพันธ์ พ.ศ. 2557
Tips เพิ่มความเร็วใน Code-1
คำเตือน - Tips บางเรื่อง เหมาะกับบางเหตุการณ์ น๊ะครับ
ผมพยายามจะ บอกว่า มัน "น่าทำ" ใน เหตุการณ์ไหน ?
ดังนั้น อย่าท่อง "แบบย่อ" ถ้าใช้ผิดเรื่อง อาจทำให้ งาน "ช้าลง" ได้ครับ
A. ลด Condition
ที่มา การทำงานแบบ Cond จะต้องใช้ "CPU มาก" (คนอ่าน Code ก็อ่านยาก)
การเขียน RPG ทั่วไปจะเขียนสั้น ไม่ใช่ Structure ทำให้ต้องแยกเป็นชิ้น
*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+.
C W1SEL COMP 'A' 31 ADD
C W1SEL COMP 'C' 32 CHG
C W1SEL COMP 'D' 33 DEL
*...
C KG122 CHAINPG010L2 80
C 31 *IN80 CABEQ'0' 41 ERR
C N31 *IN80 CABEQ'1' 42 ERR
ตย. ข้างต้น ในทุกรอบ จะต้องผ่าน 5 Condition
เมื่อเปลี่ยนมาแบบนี้ จะทำงานเร็วกว่า (ผ่าน 2 - 4 Condition)
*.. 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+.
C KG122 CHAINPG010L2 80
C SELEC
C W1SEL WHEQ 'A'
C *IN80 CABEQ'0' 41 ERR
C W1SEL WHEQ 'C'
C *IN80 CABEQ'1' 42 ERR
C W1SEL WHEQ 'D'
C *IN80 CABEQ'1' 42 ERR
C ENDSL
B. อ่านได้เร็ว และ เข้าใจง่ายขึ้น
แทนที่ การกำหนดค่ายาวๆ ด้วย Constance
ในภาษาใหม่ เรามักกำหนด constance ไว้ด้านบน (ทุกคนจะเห็นผ่านตา ก่อนทำงาน)
แต่ใน RPG การกำหนดค่าที่ยาวๆ มักจะใช้ Array ซึ่งต้องประกาศไว้ "ท้าย" โปรแกรม
โดย กำหนดตัวแปร Constance ใน I-Spec (ต้องประกาศไว้ด้านบน)
ตย. ต้องการ ตรวจว่า มีอักษรไหน ไม่ใช่ ตัวเลข ใน String หรือไม่ ? เริ่มตรวจที่ตำแหน่งที่ 3
... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6
I* field Data for CHECK
I DS
I '0123456789' C DIGITS
... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6
C* -----CHECK *all is DIGITS
C MOVE 'xx123z5' STRING 7
C DIGITS CHECKSTRING:3 RESULT 30 80
C* ==> result = 6 found *in80='1'
แทนที่ การกำหนดค่ายาวๆ ด้วย Constance
ในภาษาใหม่ เรามักกำหนด constance ไว้ด้านบน (ทุกคนจะเห็นผ่านตา ก่อนทำงาน)
แต่ใน RPG การกำหนดค่าที่ยาวๆ มักจะใช้ Array ซึ่งต้องประกาศไว้ "ท้าย" โปรแกรม
โดย กำหนดตัวแปร Constance ใน I-Spec (ต้องประกาศไว้ด้านบน)
ตย. ต้องการ ตรวจว่า มีอักษรไหน ไม่ใช่ ตัวเลข ใน String หรือไม่ ? เริ่มตรวจที่ตำแหน่งที่ 3
... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6
I* field Data for CHECK
I DS
I '0123456789' C DIGITS
... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6
C* -----CHECK *all is DIGITS
C MOVE 'xx123z5' STRING 7
C DIGITS CHECKSTRING:3 RESULT 30 80
C* ==> result = 6 found *in80='1'
วันเสาร์ที่ 8 กุมภาพันธ์ พ.ศ. 2557
จะทำ Security กับ File อย่างไร ?
จะทำ Security กับ File อย่างไร ?
ในระบบที่สร้างมานาน กับบริษัทฯ ที่ไม่กังวลเรื่องความปลอดภัยเช่น โรงงาน ,บริษัท(ที่ไม่ใช่ ธนาคาร,ประกันชีวิต)
การออกแบบ กับ Security มักจะออกแบบให้ ง่าย ไว้ก่อน
เนื่องจาก Security จะทำให้ดี ต้องรู้จริง และ วางแผน (ทั้ง องค์กร, วิธีทำงาน และ IT)
ในอดีต ไม่มีใครสนใจ และไม่มีใครตรวจ
การทำ Security อาจจะอยู่ในรูปแบบ
- Lock ด้วย IT ที่ประตูทางเข้า UserProfile
- ห้าม! ด้วย วาจา, ประกาศเป็นกฏ (ต่างๆ)
- (ยังเชื่อใน) ความไว้วางใจ ว่าข้างต้น ยังถูกต้อง
วันนี้ สภาพแวดล้อม ที่เปลี่ยนไป
- มีกฏหมาย, มีหน่วยงานตรวจสอบ ทั้งจากภายในและภายนอก
- ต้อง Share ข้อมูลต่างๆ มากขึ้น
- ผู้ใช้งาน มีมากและหลากหลาย
ผลที่ตามมา
- ไม่รัดกุม (ทางเข้าในปัจจุบัน มีมากกว่าที่เห็น)
- ขาดความยืดหยุ่น - มีข้อมูลแต่ ห้ามๆๆๆ จน Share กับใครไม่ได้ หรือ ขั้นตอนมาก
- เมื่อมีคนมากขึ้น ความเชื่อใจเปลี่ยนเป็น ไม่ไว้ใจซึ่งกันและกัน
การออกแบบ ที่ดี คือ ทำตามคำคู่มือในหนังสือของ iSeries
ในขณะที่ คำแนะนำ "เหมาะสม" จะเกิดจาก การปรับสภาพแวดล้อม
- องค์กร, หน้าที่ ที่ชัดเจน
สิ่งที่จะเข้าใช้ (Function, Object) ... กำหนดหน้าที่ + สิทธิ ในการ เข้าใช้
- วิธีทำงานปัจจุบัน ... ทบทวน ปรับวิธีจากความคุ้นเคย ให้เหมาะ กับ หน้าที่+สิทธิข้างต้น
- IT ... จัด เทคนิค,ตัวเลือก ที่เหมาะกับสิ่งที่ต้องทำข้างต้น
ตย.
* ลงทะเบียน ระดับบุคคล + จัดสิทธิร่วม หลาย บุคคล ให้เป็น "กลุ่ม"
(IBM แนะนำให้เริ่มที่ UserProfile)
- บางบริษัทฯ มี admin คนเดียวแต่มี programmer หลายคน
เพื่อลดงาน Admin ได้ให้ programmer สร้าง database จัดการกันเอง
>> OS จะมองไม่เห็น "ตัวตน" การจัดสิทธิใน Lib หรือ File จะทำ "ยุ่งยาก"
>> เมื่ออ่านต่อจนจบ จะพบว่า การเลือกวิธีนี้ ทำให้ งานด้านหลังทำ "ยากขึ้นไปอีก"
# ถ้าอนุญาต ให้ Programmer จัดการ (และมักจะให้ User Admin ทำต่อ)
>> Admin เพียงแค่ สร้างโปรแกรมแล้วให้ Programmer หรือ User ระดับ admin จัดการได้
ปัญหาอยู่ที่ไหน ? Admin ไม่เขียนโปรแกรม, ใช้เครื่องมือใหม่ ไม่คล่อง, ...
แก้ไขให้ถูกจุด -> งานจะวิ่งต่อได้ สะดวก
* การออกแบบ P-file และ L-File ที่มีโครงสร้าง เหมือนกัน (จำง่าย)
เช่น P-file ข้อมูลพนักงาน มี เงินเดือน
L-file แบบเดิม จะเห็นทุกช่องเหมือน P-file
--- ไม่อนุญาตให้ ใครใช้ข้อมูลพนักงาน ---
>> copy data ไป อีก table (ตัด field ที่ไม่ต้องการ) ทำทุกคืน
เกิดปัญหา ไม่ real time (ยื่นลา ตอนเช้า ต้อง รอดูผลพรุ่งนี้)
Run โปรแกรมให้ ถี่ขึ้น (AddJobSchE)
หรือ ใช้เครื่องมือของ Admin (เช่น Replicate)
L-file มีคุณสมบัติ อีกอันหนึ่ง คือ การสร้าง View ให้เหมาะกับ การใช้งาน
>> จำกัดสิทธิ การใช้ Lib, P-file
>> สร้าง Lib ที่แยก และ share แบบจำกัด
สร้าง L-file ให้เหมาะกับ การใช้งาน เช่น ไม่มี Field เงินเดือน
* ภาษา โปรแกรมที่ใช้
ภาษามาตรฐานใหม่ ที่ไม่ใช่ RPG มีทางเลือกที่ยืดหยุ่นกว่ามาก
ขนาดหน้าจอ, รายงาน ที่เกินข้อกำหนด จัดวางให้ใช้งานได้ง่าย
? ทีมงานดั้งเดิม ไม่ยอมเปลี่ยน
>> แผน/ขั้นตอน การเปลี่ยน ภาษาหลัก หรือ เพิ่มภาษารอง ในการใช้งาน
>> ถ้าทำได้ จะมีทางเลือก ต่อไปนี้ช่วย
สร้างเป็น Class ที่ Encapsulate แล้ว (ไม่เห็น Source Code) ให้เรียกใช้
(เหมาะกับ ภาษารอง ใช้ภาษาเดียว เช่น Java, ASP, Php เป็นต้น)
Web Service : วิธีการที่ถูกออกแบบมาเพื่องานลักษณะนี้ อาจจะมีข้อจำกัดมากกว่า เพราะทำบน internet ได้
>> สร้าง Web Service ด้วย Java, DotNet
ข้อแนะนำอื่นๆ
- ทดสอบ ก่อนเปิดใช้การปรับแล้วทำเลย สไตล์ลูกทุ่ง ไม่เหมาะกับงาน Security บางกรณีต้องหยุดเครื่องกันเลย
- จะเห็นว่า ปัญหาใหญ่ คือ ทีมงานหลัก
Key Man ถ้ามองแค่ "เบา" สำหรับตนเอง จะกระทบกับภาพรวม
คนที่เกี่ยวข้อง ถ้ายังคิดว่า อะไรก็ได้ แต่ทำแบบเดิมๆ น๊ะ (ก็ไม่ได้ทำเพื่อเป้าหมาย)
สมัครสมาชิก:
บทความ (Atom)