Posts

Showing posts from October, 2011

forward กับ redirect สำหรับ web application

Image
การเรียกหน้าเว็บใหม่ขึ้นมาแสดงนั้น ส่วนใหญ่เรามักจะเจอแบบ redirect กันมากกว่า แต่การ forward ก็เป็นอีกแบบหนึ่งที่มีอยู่ในจักรวาล(ฮ่าๆๆ) หลายคนอาจเข้าเว็บที่เปลี่ยนลิงค์ไปแล้ว แล้วเจอกับข้อความประมาณนี้ This Page is automatic redirecting .... ก็คือหน้าเว็บที่เราเรียก ถูกบังคับให้เปลี่ยนไปหน้าอื่น แบบ redirect Redirect ก็คือ การเรียกหน้าเว็บใหม่โดย path จะเปลี่ยนไปตามที่อยู่ใหม่ ซึ่งถ้าเรา copy แล้วเอาไป paste ใน tab ใหม่ก็จะสามารถแสดงผลลัพธ์ได้เหมือนเดิมทุกประการ Forward คือ การเรียกหน้าเว็บใหม่โดย path จะไม่เปลี่ยนแปลง ซึ่งสิ่งที่แสดงอยู่ในช่อง address นั้น จะเป็น path เก่าของหน้าเดิม ถ้าเราต้องการเข้ามาหน้าเว็บนี้อีกครั้ง เราจะไม่สามารถเปิดหน้านี้ด้วย path ที่แสดงอยู่ได้ หรือถ้าเรา bookmark ไว้ เมื่อเราเปิดซ้ำ เราก็จะได้หน้าเว็บที่อยู่ตาม path นั้นๆแทนที่จะเป็นหน้าที่เราต้องการ หน้าเว็บบางหน้า ผู้เขียนเว็บอาจต้องการป้องกันเพื่อไม่ให้สามารถเข้ามาดูหน้าเว็บนี้ได้โดยตรง ก็อาจบัง path ด้วยวิธีการ forward แต่ถึงอย่างไร ถ้ามีผู้รู้ที่อยู่ของหน้าเว็บก็สามารถเข้าได้อยู่ดี ทำให้ปัจจุบ

[Java] Log4j การเก็บบันทึก (log file)

Image
log4j เป็น class สำหรับใช้ในการจัดเก็บบันทึกภาษา java ซึ่งอาจใช้แทน System.out.println(); ที่เราแทรกๆกันใน code เพื่อ debugging ก็ได้ แต่มันเหนือกว่าตรงที่ log4j สามารถอ่านได้ง่ายกว่า กำหนดระดับของการ debugging ได้ สามารถปรับแต่งเพื่อให้ log แสดงบน console, แสดงใน text file, แสดงบน database หรือ email ก็ทำได้ ซึ่งระดับของ log มีอยู่ 5 ระดับ คือ DEBUG, INFO, WARN, ERROR, FATAL โดยเรียงตามระดับของความร้ายแรงจากต่ำไปสูง วิธีการติดตั้ง log4j สำหรับ Java class ของเรานะครับ โดยตัวอย่างนี้จะทำบน Netbeans IDE โดยใช้ DailyRollingFileAppender ซึ่งจะบันทึก log ลง text file รายวันครับ 1. Download Log4j 2. ทำการ Add เฉพาะไฟล์ .jar ลงไปใน library project ของเราครับ Add log4j library 3. เมื่อ Add library log4j แล้ว จะทำให้เราสามารถ import class ของ log4j ได้ แต่ว่า เราต้องกำหนด properties ของ log4j ด้วยการเขียน properties file (Add file -> other -> properties file) ครับ โดย log4j.rootLogger=DEBUG, connectorLog #กำหนดระดับเป็น DEBUG ,ตั้งชื่อตัวแปร log4j.appender.connectorLog=org

[Java] keyword และสิทธิ์การเข้าถึงตัวแปร/เมธอด

static เป็นคีย์เวิร์ดที่จะทำให้ method หรือตัวแปร มีการจอง memory เพียงหนึ่งเดียวเท่านั้น เช่น ถ้าประกาศ Object หลายๆตัว ตัวแปร static ของแต่ละ Object จะถือว่าเป็นตัวเดียวกันทั้งหมด (ถ้าไม่ใช่ static ก็จะจองพื้นที่ใหม่สำหรับแต่ละ Object) ตัวแปรลักษณะนี้จะเหมาะสำหรับการประกาศแล้วใช้เหมือนกันในหลายๆ Class แต่ถ้าใช้เพียงไม่กี่ Class ก็จะทำให้เปลือง memory พอสมควร เพราะว่าปกติแล้วการเขียน Class จะเหมือนการบอกลอยๆว่าจะมีรายละเอียดอะไรบ้าง แต่จะยังไม่จอง memory จนกว่าจะมีการสร้าง Object แต่สำหรับ static แล้ว Class จะมีการจองพื้นที่ memory ไปก่อนด้วยทำให้เราสามารถเขียนในลักษณะ <ชื่อคลาส>.<ตัวแปร static> ได้ public static void main(String[] args) final เป็นคีย์เวิร์ดที่ระบุว่าสิ้นสุดหรือสุดท้ายแล้ว คือ การกำหนดค่าให้ตัวแปรที่มีการประกาศเป็น final จะกำหนดค่าเริ่มต้นได้เพียงครั้งเดียว และค่าเริ่มต้นนี้ จะเปลี่ยนแปลงไม่ได้ เช่น ถ้าเป็น Method ก็จะไม่สามารถนำไป inherit ต่อได้ ถ้าเป็นตัวแปรก็จะไม่สามารถเปลี่ยนแปลงค่าได้ มักใช้สำหรับตัวแปรที่ต้องการให้มีข้อมูลคงที่ตลอดทั้งโปรแกรม

เรื่องของ ++i กับ i++

การเขียนโปรแกรม หลายๆภาษาย่อมให้มีการเขียน i++ แทน i = i + 1 ซึ่งผมก็เคยได้ยินมาว่า การเขียน i++ และ ++i นั้นให้ค่าที่แตกต่างกัน คือ i++ จะนำค่าไปใช้ก่อนค่อยบวก ส่วน ++i จะบวกก่อนค่อยนำค่าไปใช้ พูดๆไปก็งงอยู่เหมือนกัน ลองดูตัวอย่างนี้ครับ i=1; j=i++; // i=2, j=1 i=1; j=++i; // i=2, j=2 ถ้าเข้าใจแล้วว่า i++ และ ++i ทำงานต่างกันอย่างไร ผมก็จะพูดถึงกรณีของ for loop นะครับ เคยได้ยินไหมว่าเวลาใช้ loop ไม่ควรใส่การทำงานอะไรเยอะแยะภายใน เช่น chaining method เพราะนอกจากจะทำให้มีโอกาสเกิด null แล้วยังต้อง access method ทุกๆ รอบอีกต่างหาก for(i=0;i<n;i++) for(i=0;i<n;++i) ตัวอย่างชุดนี้มีอะไรแปลกไหม การทำงานเหมือนกันแน่ๆ จะนำค่าไปใช้ก่อนค่อยบวก(i++) หรือบวกก่อนค่อยนำค่าไปใช้(++i) มันก็วนรอบเท่ากันอยู่ดี แล้วยังไง ดูความแตกต่างของสองอย่างนี้กัน (copy มาอีกทีจาก link ด้านล่าง) i++ : create a temporary copy of i increment i return the temporary copy ++i : increment i return i แต่มันก็ไม่ใช่เรื่องใหญ่อะไร รู้ไว้ขำๆ ก็พอนะคร้าบบ ที่มา : http://en.wikipedia.org/wiki/Opc

[Android] SuperUser (Root) - สิทธิที่เหนือกว่า

Image
เรื่องราวของ Android Tip มาอีกแล้วครับ วันนี้ขอเสนอ การให้สิทธิ์ root โทรศัพท์ Android ของเรากัน การ root คือ สิทธิความสามารถให้การเข้าถึง / หรือเรียกว่า root (ถ้าใครเคยใช้ linux คงเข้าใจ) ซึ่งเป็น folder ใหญ่สุดของเครื่องก็ว่าได้ ซึ่งจะมีเฉพาะผู้มีสิทธิ์ SuperUser เท่านั้นจึงจะสามารถเข้าถึงได้ และมีสิทธิ์ปรับแต่งตามต้องการ สำหรับ Android นั้น ก็ทำงานเช่นเดียวกัน  เพราะฉะนั้น การ root Android ก็คือ การให้สิทธิ์ SuperUser กับเครื่องนั้นๆนั่นเอง สำหรับผู้ใช้มือใหม่หัด root การให้สิทธิ์ root กับเครื่อง Android ของเรานั้น ทำได้ 2 วิธี คือ 1) ใช้ App. ชื่อว่า Universal Androot  ติดตั้งลงบนโทรศัพท์เหมือน App. ทั่วไป และเพียงแค่กดปุ่ม root ก็จะได้สิทธิ์ SuperUser มาครอบครองง่ายๆ แต่ว่า App. นี้บางเครื่องก็ใช้ไม่ได้นะครับ 2)ใช้โปรแกรม SuperOneClick  สำหรับติดตั้งบน PC อันนี้ต้องต่อสาย USB นะครับ ติดตั้ง Driver โทรศัพท์ให้เรียบร้อย(ถ้าเคย Sync โทรศัพท์กับคอมฯผ่าน USB ก็ไม่ต้องติดตั้งใหม่ครับ) จากนั้นเปิดโปรแกรม SuperOneClick แล้วกดปุ่ม Root เท่านี้ก็เรียบร้อยครับ รอโปรแกรมทำงานไม

Facebook Comment

Recent Posts

Popular post of 7 days

Portal คืออะไรกันนะ???

มาตรฐานการตั้งชื่อตัวแปร (Naming Convention)

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

Popular

[Java] Java 8 DateTime ใหม่ ไฉไลกว่าเดิม

Portal คืออะไรกันนะ???

มาตรฐานการตั้งชื่อตัวแปร (Naming Convention)

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

เรื่องของ ++i กับ i++

ลืมรหัสปลดล็อค Android เข้าเครื่องไม่ได้ มีทางออกครับ

[Java] Java Static Variable และ Static Method

Push Notification คืออะไร มีวิธีทำอย่างไร (No Code)

พิมพ์ซองจากรายชื่อ excel ด้วยวิธี Mail Merge

[Android] เปิดเครื่องไม่ได้ โลโก้ค้าง (Boot Loop)