บทความ

กำลังแสดงโพสต์จาก 2020

วิธีทำ Docker Compose LAMP Stack Linux Apache MySQL PHP

 ก่อนที่จะทำขั้นตอนนี้ ให้ทำการติดตั้ง Docker , Docker Compose ให้เรียบร้อยก่อนนะครับ   Docker Compose LAMP Stack Step 1    เตรียมโครงสร้าง Directory ไว้ตามรูปนี้ครับ   docker-web    www          - index.php    - docker-compose.yml    - Dockerfile    สร้าง folder docker-web ที่ข้างในประกอบด้วย 1. folder www   เอาไว้เก็บ file web app ของเราครับตรงนี้จะ map path เข้ากับ /var/www/html/ ของ apache ครับ 2. file docker-compose.yml ตรงนี้คือหัวใจในการ config Docker compose เรานั่นเอง 3. Dockerfile เอาไว้กำหนด docker images ที่เราต้องการใช้ครับ   Docker Compose LAMP Stack Step 2 ใส่ content ใน file Dockerfile ตามด้านล่างนี้เลย FROM php:7.1.2-apache RUN docker-php-ext-install mysqli   Docker Compose LAMP Stack Step 3 ใส่ content ใน file docker-compose.yml ตามด้านล่างนี้เลย version: "3.3" services:     www:         build: .         ports:             - "8001:80"         volumes:             - ./www:/var/www/html/         links:             - database         networks:

วิธีแก้ปัญหา PuTTY Session หลุดบ่อยๆ

รูปภาพ
สำหรับเพื่อนๆ ที่ใช้ Putty เป็น Client Terminal  ในการ Connect ไปที่ Linux Server แล้วมักจะพบว่า ถ้าเราทิ้งหน้าจอไว้ซักพัก Session จะหลุด   Zzzzz ... ซึ่งจุดนี้ก็ถือว่าเป็นข้อดีในแง่ของ Security เผื่อเราเลิกใช้งานแล้วลืม Terminate Session อาจมีคนอื่นมาแอบใช้ Session ของเราได้นะ !!!   แต่ถ้ามองในมุม Dev แล้วล่ะก็ การที่ Session หลุดบ่อยๆ แล้วต้องมาคอย Connect ใหม่ตลอดนี่ก็เป็นเรื่องที่น่าเบื่อเหมือนกัน T_T   แนวทางแก้ไขนั้นไม่ยาก เราสามารถสั่งให้ Putty ส่ง Null Package ยิงไปที่ Server เพื่อ Keep Session ไว้ได้โดยกำหนดค่าตามตัวอย่างในรูปด้านล่างนี้เลย ^^ จากตัวอย่างจะเป็นการกำหนดให้ Putty ยิง Null Package ไปที่ Server ทุกๆ 10 วินาที นั่นแสดงว่า Session ของเราจะไม่มีทางหลุดแน่นอน ++ ว้าววว แต่......ข้อนี้ก็ควรระวังกันให้มากนะโดยเฉพาะในกรณีที่เป็น ENV Prod ถ้าเราตั้งค่าไว้แบบนี้แล้วล่ะก็อย่าลืม Terminate Session ออกทุกครั้งที่ไม่ใช้งาน ด้วยนะครับ

การ add project เดิมที่มีอยู่แล้วขึ้น git

 Step ในการ Add Existing ขึ้น git ตามขั้นตอนนี้เลยครับ ผมจะยกตัวอย่าง githup นะครับ 1. เข้าไปที่ folder project ของเรา แล้ว เปิด git bash จากนั้นพิมพ์คำสั่ง  git init จะทำให้เราได้ folder .git มานะครับ เป็น hidden folder อ่ะนะ 2. ถึงตอนนี้ที่ local เครื่องเราเองจะสามารถใช้ git ได้แระ เราสามารถเพิ่ม file readme หรือ .gitignore เข้าไปได้รวมถึงทำการ add หรือ commit ได้ตามปรกติ ตามตัวอย่าง git add . git commit -m "first commit" เป็นการ add file ทั้งหมดใน project ไปที่ stage พร้อมทั้ง commit รอบแรกขึ้นไป 3. จากนั้นให้เราไปทำการ create project บน github ให้เรียบร้อยนะครับ แล้วนำ URL มาทำการ add เข้ากับ project ของเราด้วยคำสั่ง git remote add origin REMOTE_URL (ที่เรา create ใน github) git remote add origin https://github.com/somsuksri/test.git 4. หลังจากนั้นทำการ push ขึ้นไปได้ปรกติ เพียงเท่านี้ก็เรียบร้อยครับ  

VS code เปิดหลายไฟล์ไม่ได้

รูปภาพ
เคยเป็นกันมั้ยครับ ใช้ VS Code หรือ Visual studio code เวลาเราเขียน Code แล้วต้องการเปิดหลายๆ ไฟล์พร้อมๆ กันบางทีมันไม่ขึ้นหน้าต่างใหม่ แต่เปิดทับหน้าต่างเดิม มันทำให้เรามีปัญหาเวลาที่ Source เรามีเยอะๆ มีหลายๆ fileแล้วต้องการที่จะ เปิดมาดูแค่บางส่วน แต่กลายเป็นว่าเปิดได้ทีละ File  คือมันเป็นปัญหาที่อาจจะเส้นผมบังภูเขาอ่ะนะแต่เราหาทางแก้ไม่ได้จริงๆ จุดสังเกตุคือ ถ้าเราแค่ คลิก เพื่อเปิดมันจะทับหน้าต่างเดิม แต่ถ้าเราใช้วิธีลากไฟล์แล้ววาง จะทำให้เปิด สองหน้าต่างพร้อมกันได้ อันนี้แปลกจริงๆ ไม่รู้ทำไมนะ VS Code Editor แต่พอเราลากวาง หรือว่า  double click แล้วเปิดขึ้นหน้าต่างใหม่ได้ VS Code Editor VS Code Editor  นี่แหละครับปัญหาของผมวันนี้ใครมีวิธีให้ คลิกเดียวเปิดสองหน้าต่างได้ บอกทีครับ หรือว่าถ้าจะต้อง double click ก็ไม่เป็นไร แต่คลิกเดียวก็ไม่ควรจะทำงานเพราะบางทีเราเผลอไปคลิกแล้วมันเปิด file ใหม่ทับหน้าต่างเดิมแบบนี้ต้องกลับไปหาไฟล์เก่าเปิดอีก

การ reset workspace ด้วย git pull reset hard origin

ในบางครั้งเวลาเรา Coding หรือ แก้ไขโปรแกรม อะไรบางอย่างแล้วรู้สึกว่ามันเดินหน้าต่อไปไม่ได้ ประมาณว่ายิ่งแก้ยิ่งพัง ยิ่งทำก็ยิ่งเละเทะ แล้ว Source ก็มีการปรับแก้ไปเยอะแยะมากมายจะเกิดความรู้สึกอยากจะเริ่มต้นใหม่โดยการ เอา Source code Version ล่าสุดบน Git ลงมาทับทั้งหมด ให้เราใช้คำสั่ง นี้เลยครับ $ git pull reset hard origin คำสั่งนี้จะเป็นการ นำ Source code ล่าสุดลงมาทับ Work space เราโดยไม่สนใจว่าเราได้มีการแก้ไขอะไรไปบ้างและไม่มีการ merge source code ใดๆทั้งสิ้นครับ เรียกได้ว่าให้ลืมทุกอย่างที่อยู่ใน staged หรือ unstaged ไปได้เลยเพราะมันจะถูกทับด้วย  origin/master ทั้งหมดแน่นอน คำเตือนก่อนจะพิมพ์คำสั่งนี้ขอให้เช็คให้ดีๆ ก่อนนะครับว่าเราจะทำการ reset work space เราจริงๆ หากมีอะไรที่สำคัญอาจใช้วิธี Manual backup ไว้ก่อนก็ดีนะ

วิธีแก้ปัญหา gitignore ไม่ทำงาน

รูปภาพ
ก่อนอื่นขออธิบายก่อนครับว่า gitignore  ที่ว่านี้คือการที่เราไม่ต้องการที่จะ control version บาง file หรือบาง folder ซึ่งวิธีการก็คือสร้าง ไฟล์ .gitignore ขึ้นมาแล้วใส่ ชื่อ file หรือ path ที่เราไม่ต้องการลงไป ตามตัวอย่าง ในภาพด้านล่าง gitignore  เพียงเท่านี้ถ้าหากเรามีการแก้ไขข้อมูลต่างๆ ใน path หรือ file ใน .gitignore ก็จะไม่ส่งผลอะไรต่อการ Control version ใน Git นั่นเองครับ แต่ .... ปัญหามันมีอยู่ว่าบางครั้งเวลาเราเพิ่ม file หรือ path ใหม่ๆลงไปมักจะเจอว่ามันไม่ ignore ตามที่ต้องการ อารมณ์เหมือนมันไม่ทำงาน วิธีแก้ให้ใช้คำสั่งนี้ครับ $ git rm -rf --cached . $ git add .  ข้อควรระวังคือก่อนพิมพ์คำสั่งนี้ให้เรามั่นใจว่าได้ add และก็ commit การแก้ไขก่อนหน้าไปเรียบร้อยแล้วเพราะไม่งั้น stage ต่างๆ จะหายไปทันทีนะครับ

วิธีลบ Segurazo santivirus แบบถาวร ได้ผลแน่นอน

รูปภาพ
สองสามวันมานี้เจอปัญหา Segurazo santivirus ลงในเครื่องตั้งแต่เมื่อไรก็ไม่รู้แถม Uninstall ออกก็ไม่ได้ ลบออกแล้วพอ restart กลับมามันก็กลับมาลงให้อีก ลอง Search ดูใน folder Program file ก็ยังมีไฟล์ของ Segurazo santivirus อยู่ไม่ได้ถูกลบออกไป แล้วพอเรา Boot เครื่องมาใหม่เค้าก็จะกลับมาอีก วันนี้มีธีลบ Segurazo santivirus แบบไ ด้ผล 100 % รับรองจะไม่กลับมาอีกแน่นอน วิธีการลบ Segurazo santivirus ด้วย Safe Mode วิธีนี้ได้ผลแน่นอนครับเพราะใน Safe Mode เราจะ Boot เครื่องมาแบบ Minimal ไม่มี Net work ไม่มีการออก net เพื่อนๆลองดูตามขั้นตอนด้านล่างนี้ได้เลยครับ วิธีเข้า Safe mode ก็มีหลายแบบนะครับเพื่อนๆ ที่ทำเป็นอยู่แล้วก็ใช้ตามนั้นได้เลย ส่วนเพื่อนๆที่ยังไม่รู้ก็ลองทำตามวิธีง่ายๆ นี้ดูนะครับ ก่อนอื่นให้เปิด MS Config ก่อนนะครับ ไปที่ run แล้วพิมพ์ msconfig ครับ จะเจอหน้าจอแบบนี้ ให้เลือก Tab Boot แล้วเลือก Safe boot แบบ Minimal นะครับ จากนั้นให้ Restart MS config Window 10 หลังจาก Restart กลับมาให้ทำการ Uninstall Segurazo santivirus ตามปรกติได้เลยแต่รอบนี้รับรองได้ว่าหายเก

วิธี remove disk Microsoft Azure

รูปภาพ
ตอนสร้าง VM (Virtual machine) บน Microsoft Azure หากมีการ Add Storage หรือ Disk เข้ามาด้วยตรงนี้จะทำให้มีค่าใช้จ่ายเพิ่ม และ ถึงแม้เราจะเลือกจ่ายแบบ Pay as you go คือจ่ายเมื่อเปิดใช้งาน เมื่อเรา Shutdown VM ไปแล้ว แต่ Storage หรือ Disk ที่ add เพิ่มมาจะไม่ถูกปิดไปด้วย ทำให้ยังเกิด Cost ส่วนนี้อยู่ตลอด ตามตัวอย่างในภาพ ค่าใช้จ่าย การใช้งาน Storage Microsoft Azure จากรูปจะเห็นได้ว่า ค่าใช้จ่ายในส่วนอื่นๆ มีไม่เยอะ เนื่องจากเราจะเปิดเมื่อใช้งานเท่านั้น แต่ในส่วนของ Storage นั้นมีค่าใช้จ่ายตลอดเวลา หากเพื่อนๆที่เผลอ Add Storage เข้ามาแล้วไม่ได้ใช้ สามารถ Remove ออกได้ตามขั้นตอนด้านล่างครับ วิธี Remove Storage Microsoft Azure  ที่หน้า Overview ของ VM เลือก Disk แล้วกด edit จากนั้นก็ remove disk ที่เราไม่ได้ใช้ออกไปได้เลยครับ เสร็จแล้วอย่าลืมกด Save ด้วยนะ หากเราไม่ต้องการใช้งานแล้วจริงๆ ให้ไปทำการ Delete ออกจาก Resource ตามขั้นตอนต่อไปนี้ จัดการ Resource Microsoft Azure Delete Resource Microsoft Azure ลองเช็คดูนะครับบางอย่างที่เรา Add เข้ามาเป็น Servic

วิธีเปิดการใช้งาน port ต่างๆ บน Microsoft Azure

รูปภาพ
หลังจากสร้าง VM บน Microsoft Azure แล้วเราสามารถ login เพื่อเข้าใช้งานได้เลยในทันที แต่ว่า พอเราทดลองลง Webserver เช่น IIS บน window หรือ  apache httpd บน linux แล้วลองเข้าใช้งานผ่าน Browser ผ่าน Internet ด้วย default port 80 แล้วพบว่าใช้งานไม่ได้ นั่นเป็นเพราะ microsoft azure จะมีการปิดการเข้าถึง port บาง port ไว้เพื่อเหตุผลในทาง Security หากเราต้องการใช้งานให้ทำการเข้าไปเพิ่ม inbound port rule  โดยไปที่ Networking / Add inbound port rule   ตาม step ด้านลาง Networking Microsoft Azure Add new Networking Microsoft Azure Add new Networking Microsoft Azure Networking list Microsoft Azure Test connect port 80 Microsoft Azure

วิธี Run docker-compose ใหทำงานเป็น background process ด้วย detached mode

ปรกติเวลาใช้คำสั่ง docker run จะเพิ่ม option -d เพื่อให้ทำงานใน detached mode หรือ background process ยกตัวอย่างเช่น docker run  -d mysql docker run -d httpd docker run -d tomcat แต่ถ้าหากเราร้อยเรียงทุกอย่างเป็น stack ไว้ใน yml แล้ว run ด้วย docker-compose วิธีการให้ run แบบ detached mode คือ เติม -d ไว้ท้ายคำสั่ง ยกตัวอย่างเช่น docker-compose -f stack1.yml up -d docker-compose -f stack2.yml up -d docker-compose -f stack3.yml up -d ปล. การที่จะใช้คำสั่ง docker-compose ได้นั้นจะต้องทำการติดตั้งก่อนนะครับด้วยคำสั่ง sudo apt  install docker-compose

เทคนิค Linux Commans การจัดการ folder ด้วย mkdir และ rmdir

ก่อนอื่นขอแนะนำคำสั่ง mkdir และ rmdir ก่อนนะครับ mkdir คือคำสั่งในการ create folder วิธีใช้งานให้พิมพ์ mkdir ตามด้วยชื่อ folder ที่ต้องการเช่น $ mkdir test ก็คือการสร้าง folder test นั่นเอง rmdir คือคำสั่งในการ delete folder วิธีใช้งานให้พิมพ์ rmdir ตามด้วยชื่อ folder ที่ต้องการเช่น $ rmdir test ก็คือการ delete folder test นั่นเอง เทคนิคในการใช้ mkdir และ rmdir 1. เทคนิคการ create folder ซ้อนกัน เช่น $ mkdir test1/test2/test3   หากตอนนี้ไม่มี folder test1, test2 อยู่จะไม่สามารถ create ได้ โดยจะได้ error mkdir: Failed to make directory "test1/test2/test3"; No such file or Directory หากต้องการ create แบบนี้ให้ใช้คำสั่ง mkdir -p เช่น $ mkdir -p test1/test2/test3 เราจะสามารถ create folder พร้อมๆกันได้ 2. เทคนิคการ delete folder ที่มี folder ซ้อน เช่น $ rmdir test1   จะไม่สามารถ delete ได้เพราะ test 1 มี folder test2, test3 ซ้อนอยู่โดยจะได้ error แบบนี้ rmdir: directory "test1": Directory not empty หากต้องการ delete ให้เกลี้ยงๆ ให้ใช้คำสั่ง r

เทคนิค Linux Commans เพื่อเข้าถึง Directory ด้วยคำสั่ง cd แบบต่างๆ

วันนี้จะมาแนะนำเทคนิคการใช้คำสั่ง cd ซึ่งถือเป็น Basic Linux Commands ลำดับต้นๆ ที่เพื่อนมักจะรู้จักกันดีว่าหน้าที่ของคำสั่ง cd คือการเข้าถึง directory ที่ต้องการนั่นเอง วันนี้มีเทคนิคง่ายๆ ให้ลองใช้กันนะครับ การเข้าถึง Directory แบบระบุ Path ตรงๆ อันนี้ก็ไม่มีอะไรซับซ้อน เช่น        $ cd /var/tmp        เป้นการเข้าไปที่ path /var/tmp นั่นเอง การเข้าถึง Directory ใน Path ภายใต้ directory นั้น เช่น ถ้าตอนนี้เราอยู่ที่ /var        แล้วภายใต้ /var มี folder tmp อยู่ ให้เราพิมพ์คำสั่ง              $ cd tmp   จะทำให้เราเข้าไปใน directory /var/tmp ได้เลยมีค่าเท่ากันกับคำสั่ง        $ cd /var/tmp นั่นเอง               ตรงนี้เพื่อนๆ หลายคนมักจะใช้ผิด โดยการพิมพ์คำสั่งเป็น        $ cd /tmp อันนี้จะเป็นการเข้าไปที่ folder /tmp ที่อยู่ root นอกสุด        ซึ่งถ้ามี folder นี้อยู่ก็จะ cd ไปได้แต่ก็จะไปผิดที่อ่ะนะ T_T การถอยหลัง 1 step ด้วยคำสั่ง cd .. เช่นถ้าตอนนี้เราอยู่ใน path /var/tmp หากพิมพ์คำสั่ง        $cd .. เราจะถอยออกมา 1 ชั้นมาอยู่ที่ path /var นั่นเอง การ

เทคนิคการเรียนรู้ Linux Commands ผ่านคำสั่ง which man และ echo

จากที่ได้เกริ่นไปในบทความก่อนหน้าว่าเราสามารถใช้คำสั่ง man เพื่อดููวิธีการใช้งาน Linux Commands ได้โดยการพิมพ์คำสั่ง man ตามด้วย command ที่เราต้องการรู้เช่น $man ls  $man cat แต่การที่เราจะใช้ man ได้นั้นเราก็ต้องรู้ว่าคำสั่งมีอะไรบ้าง เทคนิคง่ายๆคือทุกๆ คำสั่งมักจะเก็บไว้ในที่เดียวกัน หรือ path เดียวกัน เช่น ถ้าเราอยากรู้ว่า คำสั่ง cat เก็บไว้ที่ใหน ให้เราใช้ which ตามด้วยคำสั่งนั้นๆ เช่น $which cat   output คือ /bin/cat  นั่นหมายความว่า คำสั่ง cat อยู่ที่ path /bin นั่นเอง ดังนั้นถ้าเราอยากรู้ว่ามีคำสั่งอะไรอยู่บ้าง ก็ให้  cd ไปที่ /bin แล้วใช้คำสั่ง ls ดู จะเห็น Linux Command เกือบทั้งหมดในนั้น เราก็ ใช้ คำสั่ง man กับ command ที่เราอยากรู้ได้เลย บางครั้งค่าบางอย่างมักถูกเก็บไว้ในตัวแประ เช่น $PATH ซึ่งเราจะเห็นแค่ชื่อตัวแประถ้าหากเราอยากรู้ว่า Value นั้นคืออะไรให้ใช้คำสั่ง echo ตามด้วยชื่อตัวแปรนั้นได้เลย เช่น $echo $PATH output ส่วนมากจะเป็น /bin:/usr/bin:/usr/sbin:/usr/local/bin นั่นหมายถึง path ที่เราเข้าถึงได้จากทุกที่นั่นเอง สรุป  Linux Command จากบทค

Linux Commands คำสั่ง Linux เบื้องต้น

วันนี้จะมาแนะนำคำสั่ง Linux Commands แบบ Basic เบื้องต้น สำหรับผู้ที่เริ่มศึกษา Linux ใหม่ๆ นะครับเป็นคำสั่งที่ควรจะรู้ไว้ก่อนที่จะเริ่มใช้งาน Linux Commands สำหรับ Developer อย่างเราๆ หลายๆคนคงคุ้นชินกับการ Coding บน Window แต่มาในยุคนี้คงเลี่ยงไม่ได้ที่จะต้องเริ่มมาทำงานบน Linux โดยเฉพาะผ่าน Linux Command คำสั่ง Linux เบื้องต้น pwd  ใช้แสดง Working Directory ปัจจุบันที่เราอยู่ตอนนี้ถ้าคิดอะไรไม่ออกหลังจาก login แล้วให้พิมพ์คำสั่ง pwd แล้วเคาะ enter ดูนะครับ output ที่ได้จะเป็น path ที่เราอยู่นั่นเอง ls ใช้แสดง File หรือ Directory ที่อยู่ใน Path นั้นๆวิธีใช้ก็ง่ายๆ พิมพ์ ls แล้วเคาะ Enter ได้เลย cd ใช้เพื่อเข้าถึง Directory นั้นๆ วิธีใช้ ให้เรา พิมพ์ cd ตามด้วย ชื่อ Directory ที่ต้องการ  clear ใช้เพื่อล้างหน้าจอ กรณีที่เรา Run Command เยอะๆ เต็มหน้าจอแล้วอยากล้างเพื่อเริ่มใหม่ก็ให้พิมพ์คำสั่งนี้แล้ว เคาะ Enter ได้เลย cat เอาไว้แสดง content ใน file วิธีใช้ให้เราพิมพ์คำสั่ง cat ตามด้วยชื่อ file ที่ต้องการได้เลย เอาแบบ Basic สุดๆมาฝากแล้วนะครับแต่จริงๆ แล้วคำสั่ง Linux Co

วิธีทำให้ MySQL return count 0 กรณีที่ Query แล้วไม่พบข้อมูล

โดยปรกติ เวลาที่เราทำการ Query จาก MySQL แล้วมีการ คำสั่งในการคำนวณค่า เล่น Count , Sum เป็นต้น ถ้าหากกรณีที่ไม่พขข้อมูลตามเงื่อนไข จะทำให้ไม่ return result ออกมาเลย แล้วถ้าหากเราต้องการให้ return record ที่ value =0 ออกมาล่ะต้องทำอย่างไร ตัวอย่าง select count(*) cnt from test_table where  c_type='test' ; กรณีนี้ถ้า มี record ที่ c_type = test อยู่ก็จะ return จำนวน record ออกมา แต่ถ้าไม่มี จะไม่ได้ result ออกมาเลย    เทคนิคง่ายๆ ในการให้ ได้ result ที่ cnt =0 ก็คือให้เราทำการ union เพิ่มนั่นเอง เช่น select count(*) cnt from test_table where  c_type='test'  union select 0 cnt; ลองดูนะครับ ผลที่ได้ ถ้าหาก count ไม่เจอ ยังไงก็  return 0 ครับ  แต่ก็จะเจอปัญหา ถ้าหาก query เจอ type= test จะทำให้ return 2 record  คือจำนวนตามที่เจอในเงื่อนไข และก็ อีก record คือ 0 แนวทางแก้คือ เอา SUM ครอบอีกชั้นก็ได้ครับ เช่นตามตัวอย่าง select sum(cnt) from ( select count(*) cnt from test_table where  c_type='test'  union select 0 cnt) x; ยังไงก็ลองประยุก

วิธีแก้ปัญหา PHP substr utf8

เคยเจอปัญหาเมื่อใช้คำสั่ง PHP substr กัย text ที่เป็น utf8 พบว่านับตำแหน่งผิดตามตัวอย่างเช่น $new_str=substr($new_str,0,50); พบปัญหาว่าไม่สามารถตัดได้ที่ตำแหน่ง 0 ถึง 50 จริง แถมด้านหลังบางทีจะกลายเป็นต่างดาวอ่านไม่ออก แนวทางแก้คือเปลี่ยนมาใช้คำสั่ง mb_substr แล้วกำหนด encode utf8 เข้าไป ตามตัวอย่างด้านล่างครับ $new_str=mb_substr($new_str,0,50,"utf8");  ลองแล้วสามารถ substr ได้ตรงและผลออกมาได้ถูกต้อง

Jquery วิธีการเข้าถึง และ กำหนดค่า ให้กับ Custom Attribute

การใช้งาน Jquery ด้วยคำสั่ง .addr เราสามารถทำอะไรได้บ้างมาลองดูกัน การเข้าถึง Attribute ด้วยคำสั่งนี้เลย var defaultURL =$(".btn-form-save").attr("data-url"); ให้ใช้ตัวที่เราทำ selector มาไม่ว่าจะได้ ID หรือ ด้วย Class ก็ตามอ่ะนะ แล้วตามด้วยคำสั่ง  .attr("attr_name");  ตามนี้ได้เลย โดยที่ attr_name นี้ไม่จำเป็นต้องเป็น Tag HTML Standard นะ เป็น Custom Tag ที่เรากำหนดขึ้นมาเองได้เลย ต่อไปหากเราต้องการจะเปลี่ยนค่า ก็ไม่ยากด้วยคำสั่งนี้เลย $(".btn-form-save").attr("data-url","new value"); เช่นเดียวกันคือให้เริ่มจากตัวที่เราทำ Selector แล้วตามด้วยคำสั่งนี้ .attr("attr_name", "attr_value")  ตามนี้ได้เลย ลองนำไปปรับใช้กันดูนะหวังว่าจะเป็นประโยชน์ไม่มากก็น้อย

Javascript วิธีเช็ค history ว่าสามารถย้อนกลับได้หรือไม่

บ่อยครั้งเราก็มักจะทำปุ่ม Back บนหน้า web page แล้วให้ถอยกลับ 1 step เช่น ตามตัวอย่างนี้ Step แรก อยู่ที่ pageA.html Step สอง กด Link มาที่ pageB.html เราทำปุ่ม Back ไว้เพื่อให้ User สามารถกดถอยกลับไปที่ PageA.html ได้ โดยการใส่ javascript ด้วยคำสั่ง history.go(-1)   ไว้ จะทำให้เราสามารถทำงานได้ แต่ .... ถ้า step มันไม่เป็นตามนี้ล่ะ เช่น ถ้า User เข้ามาที่ pageB.html ตรงๆ มันจะมผลทำให้ปุ่ม Back ของเราทำงานไม่ได้ เพราะว่ามันไม่มีอะไรให้ back แล้วนั่นเอง แนวทางในการเช็คก็ง่ายๆ ตามนี้เลยครับ ใช้คำสั่ง Javascript ในการตรวจสอบ  document.referrer ตามตัวอย่างด้านล่างนี้เลย <script> function goBack(){   if (document.referrer == "") {      window.location.href = "home.html";   } else {      history.go(-1);   } }    </script> ประมาณนี้ ครับแบบนี้คือถ้าไม่มีอะไรให้ Back ก็ให้กลับหน้าแรกไปเลย หรือจะใช้ Script เดียวกันนี้ในการซ่อนปุ่ม Back ก็ได้นะครับแล้วแต่จะประยุกต์ใช้ได้เลย  

PHP format date จาก ปีเดือนวัน เป็น วันเดือนปี yyyy-mm-dd เป็น dd-mm-yyyy

บ่อยครั้งที่เรา query ข้อมูลจาก Source ต่างๆ เช่น PHP Query Database MySQL จะได้ value ของ field ที่เป็น Date ออกมาเป็น yyyy-mm-dd ทำให้เราต้องมาทำการเปลี่ยน format ให้เป็นที่คุ้นเคยคือ dd-mm-yyyy หรือ dd/mm/yyyy วิธีการทำตามตัวอย่างนี้เลย ตัวอย่าง value ตั้งต้นมาแบบนี้ $original_date = "2019-03-31"; ให้นำมาสร้างตัวแปร date ตามนี้ $timestamp = strtotime($original_date); แล้วค่อยนำมา จัด format ตามที่เราต้องการ $new_date = date("d-m-Y", $timestamp); สิ่งที่ได้จากตัวแปรใหม่ก็จะ เป็นตาม format ที่เราระบุไปนั่นเอง  

เริ่มต้นปี 2020 ด้วยการแนะนำ UI Framework อย่าง Semantic UI ให้ลองใช้กัน

รูปภาพ
ก่อนอื่นขอสวัสดีปีใหม่ 2020 เพื่อนๆทุกคนนะครับ วันนี้ได้ลองหา UI Framework เจ๋งๆ หลายๆตัวมาเปรียบเทียบแล้วรู้สึกว่าเจออยู่ 1 ตัว มีความน่าสนใจอยากให้เพื่อนๆ ลองใช้กันดูนั่นก็คือ Semantic UI   ระบบต่างๆ มีครบตามต้นแบบ Bootstrap แต่มีการนำปรับปรุงให้ใช้งานได้ง่ายขึ้นไม่ว่าจะเป็น ระบบ Grid และที่ผมชอบมากๆคือ ระบบ Card  ที่ทำออกมาได้เป็นอย่างดี Responsive ได้เนียนมากๆ  ยังไงก็ลอง download มาลองเล่นกันได้เลยนะครับตาม URL ด้านล่างนี้เลย  URL : https://semantic-ui.com/