พฤศจิกายน 2016

Yii1กับ Trick ต่างๆ ที่คุณอาจจะยังไม่เคยรู้

Yii1กับ Trick ต่างๆ ที่คุณอาจจะยังไม่เคยรู้ (จากประสบการณ์ใช้งานจริง)

ถึงแม้ว่า PHP Framework ที่ชื่อว่า Yii นี้ปัจจุบันจะพัฒนาไปถึง version 2 เป็นที่เรียบร้อยแล้ว แล้วจะเปลี่ยนไปใช้ version ใหม่ไปทำไมก็ในเมื่อ v.1.x ยังใช้งานไม่เต็มประสิทธิภาพเลย (ถึงแม้ใครจะบอกว่า version ใหม่ย่อมดีกว่าของเก่าเสมอ) ใช่สิก็ Content ของวันนี้เป็นเรื่อง Trick ของ Yii1 สิครับ ก็ต้องอวย v.1.x สิไม่แปลก

เริ่มตั้งแต่การ Setup Yii1 กัน

  • ก่อนอื่นก็ต้องไป Download Yii1 ที่ Yii1 Link Download
  • Unzip File yii-1.1.17.467ff50.zip และให้ Copy หรือ Rename Folder  ให้เป็นชื่อ application ของเราเอง ภายในให้เหลือแต่ folder ชื่อ framework, requirements
  • Run Command
cd demo

php framework/yiic wepapp app

Trick

1.ไม่อยากให้ URL มีคำว่า r=index.php
1. เปิด Url re-writing on Apache
2. สร้างไฟล์ .htaccess วางใน root path app ของเรา ภายในไฟล์ใส่คำสั่งดังต่อไปนี้

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . index.php

3. เปิดการใช้งาน urlManager ใน Configuration ที่ไฟล์ protected/config/main.php (ถ้า comment อยู่ในเอา comment ออก)
'urlManager'=>array(
  'urlFormat'=>'path',
  'rules'=>array(
      '<controller:\w+>/<id:\d+>'=>'<controller>/view',
      '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
      '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
  ),
  'showScriptName'=>false,
)
2.include internal javascript file end of body tag </body>
โดยปกติการ include file javascirpt เข้าไปใช้ใน project ของเรา

<script type="text/javascript" src="http://poolsawat.com/js/jquery.min.2.2.4.js"></script>

ในส่วนของ tag <head></head> แล้วถ้า dependencies ของในส่วนที่เราเรียกใช้มันเยอะมากละ มีผลต่อ performance แน่ ๆ
ดังนั้นการที่เราใส่ js ไฟล์ที่ tag body ก่อน </body> จะช่วยแก้ปัญหาเรื่องนี้ได้มาก 

สำหรับ Yii1 หากต้องการทำแบบนี้ให้ใช้คำสั่ง

$cs = Yii::app()->clientScript;
$cs->registerScriptFile($Yii::app()->baseUrl. '/js/jquery.min.2.2.4.js', CClientScript::POS_END);

เท่านี้ก็จะทำให้ไฟล์ js ของเราถูกโหลดหลัง html page แล้วครับ

3.echo data in JSON format ด้วย CJSON
$data = array('status' => true, 'message' => 'ok');

echo CJSON::encode($data);
4.Get form enctype=”multipart/form-data” ด้วย CUploadedFile::getInstanceByName(‘picture’)
<!-- form.php -->
<form class="ui form"  method="post" action="upload.php" enctype="multipart/form-data">
<input type="file" name="picture"  id="idInputPicture" />
</form>

<!-- upload.php-->
$file = CUploadedFile::getInstanceByName('picture');
$file->getError();
$file->getExtensionName();
$file->getName();
$file->getSize();
$file->getTempName();
$file->getType();
$file->saveAs(Yii::getPathOfAlias('webroot') . '/uploads/' . $file->getName());
5. use NOW() ด้วย CDbExpression Class
$model->field_date = new CDbExpression('NOW()');

$model->save();
* ใช้สำหรับการ save ผ่าน model

 

สรุปสิ่งที่ได้รับจากงานกิจกรรม Barcampbangkhen 2016

สรุปสิ่งที่ได้รับจากงานกิจกรรม Barcampbangkhen 2016

เมื่อวันอาทิตย์ที่ 13 พฤศจิกายน 2016 โดยจัดที่ ม.เกษตรศาสตร์ บางเขน ที่จัดเป็นประจำทุกปี โดยเป็นงานที่รวมเหล่าผู้ที่อยากรู้ อยากแบ่งปัน ความรู้มาพบเจอกัน โดยธรรมเนียมของงานก็ประมาณว่า ให้ผู้ที่อยากแชร์เรื่องราวต่าง ๆ ที่ไม่จำเป็นต้องเป็นเรื่องที่เกี่ยวกับสายเทคโนโลยีเพียงอย่างเดียวเรื่องอื่น ๆ ทั่ว ๆ ไปที่กำลังเป็นที่สนใจในขณะช่วงเวลานั้น มาแบ่งปันเล่าประสบการณ์ให้ได้รับฟัง ตัวอย่างเช่นหัวข้อ “ฝึกงานที่ญี่ปุ่นง่ายนิดเดียว (ที่เหลือยาก)”, “เมื่อหมอหมาอยากรักษาทามาก็อตจิ” เป็นต้น หรือแม่แต่เรื่อง “How to มีแฟนก่อนเรียนจบ” ซึ่งเป็นหัวข้อที่ได้รับเสียงฮือฮาเป็นอย่างมากในงานครั้งนี้

15050205_1199371473433593_1873296441_n-1

ช่วงเช้าผู้เข้าร่วมงานจะเริ่มเข้ามาลงทะเบียน ได้รับ เสื้อ, คูปองอาหาร, สติ๊กเกอร์ เป็นต้น สำหรับสติ๊กเกอร์ที่ได้รับมาจะเอามาใช้เพื่อโหวต Session ที่ตัวเองสนใจ และจะทำให้ Session นั้นได้ขึ้นเป็น Session ที่ได้ถูกบรรจุลงใน Board Session จริงpb130494

 

โดยแต่ละ Session ที่ถูกเลือกจะมีเวลาในการบรรยายประมาณ 25 นาทีต่อ 1 session ตาราง Session ในงานนี้ดูได้จาก Barcampbangkhen-sessions

pb130504

# Functional Programming with Javascript by Dan Itsara (แดน)

เนื้อหาใจความจะอธิบายถึงการเขียนโปรแกรมในรูปแบบคำสั่งเรียงต่อกัน มีเงื่อนไขมีการวนรอบ เนื้อหาใน session ไปอย่างรวดเร็วโดย Speaker จะเน้นแสดงตัวอย่างโค๊ดที่เป็นแบบโค๊ดที่เขียนแบบเขียนที่ไม่ได้ใช้ FP (Functional Programming) เข้ามาช่วย และเป็นแบบที่ใช้ FP เข้ามาช่วย สำหรับในหัวข้อนี้จำเป็นต้องมีทัษะในการเขียนโปรแกรมในระดับนึงเลย

ขอดีของการเอา FP เข้ามาช่วย

  • โค๊ดมีความกระชับ สั้น แต่อาจจะต้องใช้เวลาทำความเข้าใจในระดับนึง
  • ทำงานได้เร็ว กับข้อมูลที่ซับซ้อน ถ้าเปรียบเทียบกับโค๊ดที่ใช้ FP กับไม่ได้ใช้ FP
  • มีฟังก์ชันให้เลือกใช้อย่างมากมาย เช่น map, reduce, filter เป็นต้น
  • ฯลฯ

# Practical Maintainability ทำให้โค้ดดูแลง่าย “จริง” by Chris @ Taskworld

 เนื้อหาบรรยายเกี่ยวกับการ Maintain Code หรือแม้แต่จะ Code ขึ้นมาใหม่แม้ว่าจะเขียนโค๊ดแบบ Advance เทพมากแค่ใหนหากคนที่คอย Maintain ตามหลังไม่สามารถเข้าไปแก้ไขได้ง่าย ๆ ก็ไม่ถือว่าโค๊ดนั้นดูแลง่ายอยู่ดี และรูปแบบในการเลือก Dev เข้ามาใหม่ให้เหมาะกับงาน

# เรียนรู้อะไรมาบ้างกับการสร้าง Chatbot (The new era of Internet) by Wongnai (Chatbot Team)

บรรยายโดย CTO ของวงในเอง พูดถึงการนำ Chatbot (Line Chatbot)

สิ่งที่ควรทำนึงถึงเมื่อคิดจะทำ Chatbot

  • ทำให้ Bot เหมือนคนให้มากที่สุด
  • ให้ว่างเอกลักษณ์ของ Bot เป็นอย่างแรก เช่น อารมณ์ดี หรือ เครียด, สุภาพ หรือ ดิบเถื่อน เป็นต้น เพื่อทำเป็นที่จดจำได้ง่าย ตัวอย่างถ้าจะพูดถึง Bot ของวงในก็จะนึกถึงแต่เรื่องร้านอาหาร เป็นต้น
  • set กลุ่มคำถามเอาไว้เพื่อให้ตอบโต้ได้อย่างทันที
  • Emotion ช่วยได้เยอะมาก
  • คำศัพท์อาจจะไม่ต้องให้เป็นทางการมากตัวอย่าง เช่น ดี => สวัสดี, กินไรดี => กินอะไรดี, บัย => บาย เป็นต้น
  • เพิ่ม Question ในระหว่า Chat เพื่อความบันเทิง

# What comes next for the web? by @mikelopster @witoh

ไม่ใช่เรื่องใหม่สำหรับ PWA (Progrssive Web Application) เรียกว่า Session นี้ถูกใจ Dev สาย Web กันเลยการที่ Mobile กำลังมาแย่งส่วนแบ่งการใช้งานจาก Web App ทำให้ Web เอง อยู่นิ่งไม่ได้จึงทำให้เกิด PWA ขึ้น

PWA มีความสามารถอะไรบ้าง

  • สร้าง Icon บน Desktop ได้เหมือน Mobile App
  • ใช้งานได้ใน ขณะ Offine (เรียกข้อมูลใน Cache มาแสดง)
  • Push notification ได้เหมือน Mobile App
  • ต้องมี 3 สิ่งนี้ Reliable, Fast, Engaging
  • ฯลฯ

สิ่งที่ต้องคำนึง

  • ปลอดภัย (Security)
  • เร็ว (Fast)
  • วางใจ (Trust)

# DRY Workflow using Docker and Gitlab CI by Off (Glazziq)

Speaker จาก Glazziq แนะนำ Workflow การใช้งาน Docker ร่วมกับ Gitlab อธิบายการทำงานของ Docker แนบท้ายมีตัวอย่างโค๊ดการใช้งานให้ดู

# NO COMMENTS เลิกcomments เเล้วเขียนโค๊ดซะที by @mr_tawan

การ Comment โค๊ดบางสิ่งก็ไม่ควร Comment ไว้เพราะการเขียนโค๊ดที่ดีมันอธิบายการทำงานในตัวของมันเองอยู่แล้ว ผู้บรรยายยกตัวอย่างโค๊ดในประสบการณผู้บรรยายได้พบเจอมา โดยโค๊ดที่ถูกเขียนขึ้นมามีอายุ 20 กว่าปีมาแล้ว ส่วนที่ Comment ในโค๊ดไม่ได้ช่วยอะไรกับ Dev ในยุคปัจจบันเลย เพราะโดยปกตินิสัยคนเราแก้โค๊ดก็คงไม่ได้แก้ Comment กันทุกคน ทำให้เมื่อ version หลัง ๆ โค๊ดไม่ตรงกับ Comment บ้างก็มี ฉะนั้นให้หันมาใช้ Version Control กันเถอะ

# Location Intelligence – wifi data and big data by Khum Pimsiri Ponsap(Data Scientist)

เนื้อหาเกี่ยวกับว่าเราจะนำข้อมูลที่เกี่ยวกับ Wifi มาใช้งานแบบใดได้บ้าง ยกตัวอย่างการดักจับ Wifi ในห้างสรรพสินค้า บ่งบอกได้ว่ามีการใช้ข้อมูลบริเวณใด มาก น้อย ดูลักษณะของข้อมูลลูกค้าที่เข้ามาใช้บริการในห้างนั้นซ้ำ ๆ และสามารถนำข้อมูลไปวิเคราะห์เพื่อช่วยธุรกิจสร้างผลกำไร ต่อไปได้

# Security Discussion by [email protected]!N

Session ก่อนที่ผมจะกลับบ้านเลือกที่จะเข้าไปฟัง session นี้ ไอ้ตัวผมเองก็เป็น Dev ไม่ค่อยจะใส่ใจเรื่อง Security เท่าไหร่ เลยอยากให้ความสำคัญกับเรื่องนี้ เลยเลือกที่จะเข้าไปฟัง ผู้บรรยายเป็นตัวแทนจากหน่วยงาน Owasp Thailand ซึ่งเป็นองค์กรไม่แสวงหาผลกำไรมี community ระดับโลก วัตถุประสงค์เพื่อส่งเสริมและพัฒนาการรักษาความปลอดภัยของโปรแกรมประยุกต์ (Application) ให้ดียิ่งขึ้น ติดตามข่าวสารความเคลื่อนไหวได้ที่ Owaspthailand Page