Sybase: sp_help <table>

sp_help เป็นคำสั่งที่ช่วยแสดงข้อมูลหลายๆ อย่าง สำหรับ คำสั่ง sp_help โดยไม่ใส่ parameter ด้านหลัง ผลลัพธ์แรกที่ได้คือมันจะแสดงรายการ sysobjects ซึ่งก็คือพวก ชื่อ table, view และ owner ของ table หรือ view มันยังให้ผลลัพธ์ต่อมาอีกหลายอัน เช่น รายการ systypes หรือก็คือ user-defined datatype ต่อมาอีก

แต่สำหรับ คำสั่ง sp_help ที่ตามด้วย ชื่อ table นั้น จะแสดงรายละเอียดที่เกี่ยวกับ table นั้นๆ มากมาย
> sp_help test

1. แสดงข้อมูลของ table คล้ายกับข้อมูลตอนที่ไม่ใส่ parameter คือ ชื่อ table, owner ของ table, ประเภทของ table หรือ object นั้น (user_table, stored procedure, etc.)

Name                  Owner             Object_Type     Create_date
--------------------- ---------------    -----------     -----------------
publishers             dbo                user table     Oct 7 2005 11:14AM

ข้อมูลส่วนที่น่าสนใจ ก็คือ owner ของ table และวันที่สร้าง table ซึ่งข้อมูลพวกนี้ทั้งหมดมีอยู่ใน sysobjects


select crdate from sysobjects where name = 'test'

แต่ว่า sp_help จะช่วยให้เราอ่านข้อมูลได้ง่ายขึ้น ตั้งแต่การตั้งชื่อ column ที่สามารถเข้าใจได้ การแสดง owner เป็นชื่อ แทนที่จะแสดงเป็น id เหมือนกับใน sysobjects ซึ่งถ้าเราอยากรู้ว่าเป็นใครก็จะต้องไป query ต่อที่ sysusers อีกทีฮับ

2. แสดงข้อมูล column ที่อยู่ใน table นั้น

Column_name Type  Length  Prec  Scale  Nulls  Default_name  Rule_name
Access_Rule_name  Computed_Column_object    Identity
----------  ----  ------  ----- -----  -----  ------------  -----------
----------------  -----------------------    --------
pub_id     char       4    NULL    NULL     0  NULL         pub_idrule
           NULL                    NULL          0
pub_name   varchar   40    NULL    NULL      1           NULL
           NULL                    NULL          0
city       varchar   20    NULL    NULL      1           NULL
           NULL                    NULL          0
state       char      2    NULL    NULL      1           NULL
           NULL                    NULL          0

อันนี้ช่วยได้มากค่ะ ถ้าเราอยู่หน้าจอ console ที่เราไม่มี GUI สำหรับดูว่า table นั้นมี columns อะไรบ้าง ข้อมูลเหล่านี้จะบอกเราได้ ซึ่งมีตั้งแต่ชื่อ column, data type, size ซึ่งเราก็สามารถคำนวณขนาดของ row ได้แบบคร่าวๆ จากขนาดของแต่ละ column มาบวกกันด้วย

3. index ของ table นั้นๆ

index_ptn_name        index_ptn_seg
--------------------  ---------------
p1                     default
p2                     default
p3                     default
title_idx_98505151     default

เช่นเดียวกับ column นอกจากจะบอกว่ามี column อะไรแล้ว ยังบอกด้วยว่า table นี้มี index อะไรบ้าง

8. ผลลัพธ์ที่ 8 จะแสดงจำนวน page ที่ใช้สำหรับเก็บข้อมูล ซึ่งมีทั้งที่แบบเฉลี่ย จำนวนมากสุด ต่ำสุดของ page (default Sybase 1 page = 2 MB)

Avg_pages  Max_pages  Min_pages  Ratio(Max/Avg)  Ratio(Min/Avg)
---------  ---------  ---------  --------------  --------------
1          1          1  1.000000        1.000000

จริงๆ sp_help ยังแสดงข้อมูลอีกหลายอย่าง แต่เท่าที่อ่านได้และเป็นประโยชน์ก็มีดังนี้แล

Reference:
Sybase System Procedure sp_help

Oracle: Listener

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

> lsnrctl status

ถ้าเห็นแล้วว่า lsnrctl ไม่ได้ทำงานอยู่ ก็ start listener ด้วยคำสั่ง

> lsnrctl start


และ ถ้าเช็ค status อีกทีจะได้ผลดังข้างล่าง

LSNRCTL for Linux: Version 11.1.0.6.0 - Production on 29-JUL-2009 10:57:29

Copyright (c) 1991, 2007, Oracle. All rights reserved.

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 11.1.0.6.0 - Production
Start Date 29-JUL-2009 10:40:20
Uptime 0 days 0 hr. 17 min. 8 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /apps/oracle/product/11.1.0/db_1/network/admin/listener.ora
Listener Log File /apps/oracle/diag/tnslsnr/wtsdev02/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1521)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost6.localdomain6)(PORT=1521)))
Services Summary...
Service "DEV20" has 1 instance(s).
Instance "DEV20", status READY, has 1 handler(s) for this service...
Service "DEV20XDB" has 1 instance(s).
Instance "DEV20", status READY, has 1 handler(s) for this service...
Service "DEV20_XPT" has 1 instance(s).
Instance "DEV20", status READY, has 1 handler(s) for this service...
Service "SIT20" has 1 instance(s).
Instance "SIT20", status READY, has 1 handler(s) for this service...
Service "SIT20XDB" has 1 instance(s).
Instance "SIT20", status READY, has 1 handler(s) for this service...
Service "SIT20_XPT" has 1 instance(s).
Instance "SIT20", status READY, has 1 handler(s) for this service...
The command completed successfully


หรือถ้าเราต้องการจะ stop listener ก็ใช้ command lsnrctl เหมือนดัง

> lsnrctl stop

คำสั่ง lsnrctl ยังมีคำสั่งอื่นๆ อีก สามารถหาอ่านเพิ่มเติมได้จาก reference ด้านล่างเลยฮับ

Jira: Project management

เราสามารถใช้ Jira ในการบริหารงานต่างๆ ในโปรเจคได้ แต่ก่อนที่จะใช้โปรเจคควบคุมงานต่างๆ ก็จะต้องกำหนดโปรเจคก่อน สามารถกำหนดได้หลายอย่าง
  • Issue Type Scheme เป็น scheme ที่บอกว่าใน scheme ประเภทนี้จะมี issue type อะไรบ้าง
  • Notification Scheme ลักษณะการ notify เช่นอยากให้ส่งเมล์เมื่อมีการส่งงานไปให้สมาชิกในโปรเจค
  • Permission Scheme กำหนดการเข้าขึ้นข้อมูลในโปรเจค
  • Issue Security Scheme กำหนดระดับการป้องกัน
  • Issue Type Screen Scheme เป็นการบอกว่า แต่ละ issue ที่เราใช้จะแสดงผลอย่างไร อันนี้รายละเอียดค่อนข้างยาว ไว้จะลองเขียนถึงครั้งถัดไปนะฮับ (ถ้ามีเวลา)
  • Workflow Scheme กำหนดลำดับการเปลี่ยน issue status ของแต่ละ issue type
  • Project Team กำหนดสมาชิกในโปรเจคว่าจะทำหน้าที่ใน role อะไร ซึ่งจะเชื่อมโยงกับการให้สิทธิ์ใน Permission Scheme ด้วย
  • Component ว่าในโปรเจคที่ทำอยู่จะประกอบไปด้วย module อะไรบ้าง
  • Version กำหนด version ของโปรแกรมที่จะออกมา ซึ่งในส่วนนี้จะช่วยในการทำ release notes ของแต่ละ version ได้ด้วย
ก็จะเริ่มเห็นเป็นรูปเป็นร่างบ้างแล้วว่า Jira ไว้ทำอะไร ถ้าอยากรู้รายละเอียดก็ต้องลองหามาใช้กันดูนะจ๊ะ แต่ว่าโปรแกรม Jira ไม่ได้ฟรีนะ บริษัทไหนอยากใช้ก็ต้องลงทุนกันหน่อย

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

Reference
Jira project mangement

MVC บน Servlet

การนำ MVC มาใช้กับ Servlet และ JSP นั้น เราจะให้

Java object เป็น model
JSP เป็น view
Servlet เป็น controller

ง่ายๆ แบบนี้แหละ จบ.

Tomcat: Web Container

Web Container มีำไว้สำหรับรับ request เพื่อส่งต่อให้กับ servlet แต่ละตัว และยังช่วยการทำงานด้านอื่นๆ เพื่อให้การเขียน servlet ทำได้ง่ายขึ้น และผู้พัฒนาสามารถมุ่งไปที่ business ที่ต้องการจัดการมากกว่าจะต้องมาจัดการกับสิ่งรอบข้าง

ส่วนที่ Web container จัดการให้มีดังนี้
- Communication support ช่วยจัดการเรื่อง socket และ network ต่างๆ
- Lifecycle management จัดการ life cycle ของ servlet
- Multithreading support จัดการการทำงานของ thread เนื่องจากแต่ละ request หมายถึงการสร้าง thread 1 ตัวขึ้นมาเพื่อรับ request
- Declarative security จัดการเรื่อง security ซึ่งสามารถกำหนดได้จาก deployment descriptor (web.xml)
- JSP support


Tomcat คือเป็น web container ตัวหนึ่ง ซึ่งมีความสามารถทำงานพื้นฐานของ HTTP web server แต่ Tomcat จะทำหน้าที่นี้ไม่ได้ดีเท่า Apache (Apache ถือเป็น web server แต่ว่าไม่ได้เป็น web container)
ส่วนพวก WebLogic, Websphere, JBoss เป็น J2EE application server หรือเรียกย่อๆ ว่า application server ซึ่งสามารถทำหน้าที่ web container และ EJB container ได้ด้วย

แต่อย่างไรก็ตามสำหรับการทำงานของ Servlet สามารถใช้แค่ web container ได้ ไม่จำเป็นต้องใช้ application server

รูปด้านข้างจะแสดงโครงสร้างเวปใน Tomcat

ข้อควรรู้เสริมนิดหน่อยสำหรับการ implement JSP และ JSTL ใน Tomcat

Tomcat VersionServletJSP VersionJSTL Version
62.52.11.2
52.42.01.1

สำหรับการ config อีกเรื่องหนึ่งของ Tomcat ก็คือ Authentication ซึ่ง Tomcat ใช้ tomcat-users.xml ที่อยู่ใน conf/ directory ในการกำหนดผู้ใช้ ตัวอย่างเช่น Tomcat manager ที่เป็น web application ที่มากับ tomcat ก็จะใช้ตัวนี้ในการ Authenticate ผู้ใช้ ซึ่งผู้ที่จะใช้ web application นี้ได้จะต้องมี role เป็น manager ดังนี้

<tomcat-users>
<role rolename="manager"/>
<user username="admin" password="xxxx" roles="manager"/>
</tomcat-users>

นอกจากนี้เรายังสามารถกำหนด role และ user เพิ่มเติมได้

reference:
Jstl Tag Lib Definitions
Apache Tomcat - Which Version Do I Want?

Jira: Start, stop process and check status

Jira has start/stop script in $JIRA_HOME/bin directory. So it's easy.

To start, just run (on Linux or Windows use startup.bat instead)

> ./startup.sh

To stop, just run (on Linux or Windows use shutdown.bat instead)
> ./shutdown.sh

To check jira process, you can check process with grep jira that has –Datlassian.standalone=JIRA

> ps -ef | grep jira

Jira: Workflow

ตัวอย่าง flow ด้านซ้ายเป็นการทำงาน สำหรับ Issue, Change Request หรือ Risk ส่วน flow ด้านขวาเป็นการทำงานของ Defect

Jira: Overview

Jira คือโปรแกรมที่ช่วยจัดการงานต่างๆ ในโปรเจค ใน Software Development project ส่วนใหญ่ก็จะประกอบไปด้วยงานหลายๆ งาน งานพัฒนาฟังก์ชั่นงานต่างๆ หรืองานทดสอบฟังก์ชั่นงานที่ได้พัฒนาขึ้น ซึ่ง Jira ช่วยในการติดตามงานต่างๆ และยังสามารถแบ่งงานออกเป็นเฟสต่างๆ หรือที่เรียกว่าเป็นแต่ละรีลิส (release) นอกจากนั้นยังสามารถสร้าง release notes ที่จะใช้เป็นเอกสารร่วมกันการ release

งานในแต่ละงานใน Jira แ่บ่งเป็นแต่ละประเภท ตัวอย่างเช่น
  • Bug ปัญหาการทำงานของโปรแกรม
  • Improvement งานที่จะ้ต้องพัฒนาให้ดีขึ้น
  • New feature ฟังก์ชั่นงานที่ต้องการจะเพิ่มเข้ามาในระบบ
  • Task งานทั่วไปที่จะต้องทำให้สำเร็จ
แต่ในการใช้งาน Jira เราสามารถปรับแต่งประเภทของงานได้ตามที่เราต้องการ ไม่จำเป็นต้องใช้ตามนี้ ตัวอย่างการปรับแต่งประเภทของงานนะค่ะ
  1. Project management type
    • Task - หมายถึงงานทั่วๆ ไป หรือปัญหาที่ต้องได้รับการแก้ไขในโปรเจ็ค
    • Risk - งานที่ทำเพื่อป้องกันปัญหาที่จะเกิดขึ้นในอนาคต
    • New Feature - หมายถึง การทำงานของโปรแกรมที่ต้องการให้มีการเปลี่ยนแปลง แก้ไข

  2. Analysis and Design type
    • Story - งานที่เกี่ยวข้องกับการวิเคราะห์ระบบ เช่นการทำ Use Case, Activity Diagram
    • Model - งานที่เกี่ยวข้องกับการออกแบบระบบ เช่น การทำ Class Diagram, Database Diagram

  3. Development type
    • Code - หมายถึงงานพัฒนาโปรแกรม

  4. Testing type
    • Test Event - หมายถึงการทำ Test Script
    • Test Execution - หมายถึงการตรวจสอบการทำงานของโปรแกรม โดย Test Script ที่ได้ทำจาก Test Event
    • Bug - ในกรณีที่ตรวจสอบแล้วพบข้อบกพร่องในการทำงาน ก็จะต้องสร้างเป็น Defect เพื่อส่งกลับไปให้นักพัฒนาระบบแก้ไข

  5. Deployment type
    • Release Task - เมื่อทดสอบและแก้ไขแล้ว ก็จะต้อง release หรือติดตั้งโปรแกรมบน server ซึ่งอาจจะเป็น development server หรือ production server ก็แล้วแต่ เรียกว่าเป็น Release Task

และความสำคัญ (Priority) ของแต่ละงานสามารถแบ่งได้ตามตัวอย่าง
  • Blocker เป็นงานที่ถ้าไม่ทำให้เสร็จ ก็จะกันไม่ให้งานอื่นๆ สำเร็จได้ คือเป็นงานที่ block ชาวบ้านนั่นเอง
  • Critical เป็นงานที่มีความสำคัญมาก ซึ่งทำให้การทำงานในฟังก์ชั่นใดๆ ไม่สามารถทำงานได้
  • Major เป็นงานที่มีผลกระทบกับการทำงานโดยรวม
  • Minor เป็นงานที่กระทบกับการทำงาน แต่น้อย ซึ่งโปรแกรมยังสามารถทำงานต่อไปได้
  • Trivial เช่นการแก้ไขคำผิด หรืองานใดๆ ที่ไม่มีผลต่อการทำงานของฟังก์ชั่น
งานแต่ละงานใน Jira จะเก็บรายละเอียดดังกล่าวข้างต้นแล้วยังเก็บ หัวข้อ, รายละิเีอียดของงาน, ความคิดเห็นที่โต้ตอบไปมาเกี่ยวกับงานนั้นๆ และยังสามารถ attach file รายละเอียดหรือข้อมูลเพิ่มเติมในงานแต่ละงานได้ และเก็บเวลาที่ใช้ในการทำงานของแต่ละในงานหนึ่งๆ ได้ เพื่อใช้ในการประเมินงาน และเป็นสถิติของโปรเจคต่อไป

Jira ยังมีความสามารถอื่นๆ ที่ช่วยในการทำงานของโปรเจคได้ ดังจะเห็นว่าหลายๆ โปรเจค รวมทั้ง open source project ก็ยังนำโปรแกรมตัวนี้มาช่วยในการทำงาน เนื่องจากเป็น web application ทำให้ user ไม่ต้องลำบากในการลงโปรแกรม และยังเข้าถึงได้ง่าย

Reference:
Jira User's Guide: What's an Issue?