วันศุกร์, ตุลาคม 30, 2558

แก้ไข JRebel error JavaLaunchHelper

ลง OS X ใหม่ ทำให้ต้องติดตั้ง JDK ใหม่ด้วย ถ้าไป download จาก Oracle OTN website ตัวล่าสุดของ JDK 7 ที่เปิดให้โหลดคือ 7u79 เมื่อติดตั้งเรียบร้อย เอามารัน tomcat ที่ config jRebel เอาไว้ จะเจอ error ลักษณะนี้ใน console


objc[7324]: Class JavaLaunchHelper is implemented in both /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/bin/java and /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home/jre/lib/libinstrument.dylib. One of the two will be used. Which one is undefined.


ใน forum ของ zeroturnaround (ทีมพัฒนา JRebel) บอกเอาไว้ว่ามันเป็น bug ของ Java เอง มีการเปิด issue เอาไว้แล้วด้วย ทางแก้เท่าที่ค้นคว้าดู ตอนนี้มีทางเดียวคือกลับไปใช้ version 7u25 ดาวโหลดได้จาก OTN website ตามลิ้งข้างต้นอีกเช่นเคย

เมื่อติดตั้งด้วย .dmg ก็จะไม่มีปัญหาอะไร แต่จะเรียกใช้มันยังไงล่ะ ไอ้เจ้า version เก่า ถ้าไปเปิด post เก่า "เปลี่ยน JDK version ง่าย ด้วยคำสั่งเดียว" จะรู้ว่าเราใช้คำสั่ง $/usr/libexec/java_home ได้

แต่ทีนี้ผมลง 7u79 ไป แล้วลง 7u25 เพิ่มเข้าไปอีก เวลาสั่ง $/usr/libexec/java_home -v 1.7 มันจะได้ version ที่สูงกว่าเสมอ ลองอ่าน help ของ command line อันนี้ดูถึงรู้ว่า เราสามารถระบุได้ละเอียดกว่าแค่ 1.7 เช่นอยากได้ JDK 7u25 แทนที่จะใส่ option -v 1.7 ให้ใส่ -v 1.7.0_25 เลย

ทีนี้ script ในการรัน tomcat+JRebel ก็สามารถใช้ JDK 7u25 ได้แล้ว หน้าตาจะเป็นแบบนี้

export JAVA_HOME=$(/usr/libexec/java_home -v 1.7.0_25)
...
export CATALINA_HOME=/Volumes/MacintoshHD2/Users/HDD/apps/apache-tomcat-6.0.41
...
$CATALINA_HOME/bin/startup.sh

วันพุธ, ตุลาคม 21, 2558

OS X: วิธีทำให้ OS X 10.11 El Capitan อ่าน/เขียน NTFS ได้


ได้ฤกษ์ลง El Capitan แล้วครับ เลยมาอัพเดตวิธี เพราะ วิธีเดิมที่ใช้กับ Yosemite (OS X 10.10) มันใช้ไม่ได้กับ OS X ตัวใหม่นี้

Solution

คำเตือน อ่านขั้นตอนให้ละเอียด สำคัญ ทุกขั้นตอนนะ

1 ซอฟต์แวร์ที่ใช้ติดตั้งในขั้นตอนด้านล่างทั้งหมดนี้ ผม pack ไว้ที่ dropbox ส่วนตัว ที่นี่

2 ติดตั้ง  OSXFUSE   2.8.1 (ถ้าไม่เอาไฟล์จากข้อ 1 โหลดได้จาก http://osxfuse.github.io/ )

3 ตอนติดตั้งให้เลือกติดตั้ง MacFUSE Compatibility Layer ด้วย

4  Reboot เข้า Recovery mode (ทำไง? ดูที่นี่)  เพื่อปิด คุณสมบัติ SIP (System Integrity Protection)
เปิด Terminal app เริ่มพิมพ์คำสั่งตามหลังเครื่องหมาย $ และไม่ต้องพิมพ์ เครื่องหมาย $ ลงไปใน Terminal)

$ csrutil disable (กด Enter)

แล้ว Reboot Mac

5  ติดตั้ง NTFS-3G for Mac OS X (ถ้าไม่เอาไฟล์จากข้อ 1 โหลดได้จาก http://goo.gl/5AIE4i) เป็นเวอร์ชั่นตั้งแต่ปี 2010 แต่ก็ยังเจ๋งอยู่

* สังเกตว่าตอนติดตั้ง ntfs-3g เราจะเลือกเป็น No caching
* มันอาจจะมีหน้าจอ Error บอกว่าติดตั้งไม่สำเร็จ ไม่ต้องตกใจไป ปิดโปรแกรมนี้ไปก่อน

6  ทดสอบ เสียบ external hard drive หรือ flash drive ที่ใช้ NTFS เข้าไปดู
* อาจจะมี pop-up ฟ้องคำเตือนบางอย่างเกี่ยวกับเรื่องเวลา ยังไม่ต้องสนใจ

7  เรียกติดตั้ง NTFS-3G อีกครั้ง คราวนี้น่าจะติดตั้งได้ไม่ฟ้องอะไรแล้ว
หน้าจอสุดท้ายจะมีปุ่มให้ restart


8 ตัวสุดท้าย ติดตั้ง fuse_wait version 1.1 (ถ้าไม่เอาไฟล์จากข้อ 1 โหลดได้จาก https://github.com/bfleischer/fuse_wait/downloads) ติดตั้งตัวนี้เพื่อขจัดปัญหา pop-up เตือนเวลาเราเสียบ NTFS drive เข้าไปใหม่

9  Reboot เข้า Recovery mode  เพื่อเปิด คุณสมบัติ SIP (System Integrity Protection) กลับมา
เปิด Terminal app พิมพ์

$ csrutil enable (กด Enter)
แล้ว Reboot Mac

วันศุกร์, ตุลาคม 02, 2558

วิธีย้ายภาพถ่าย ไฟล์วิดีโอ ใน Google Photos ไปอยู่พื้นที่ unlimit ให้หมด | How to move your photos & videos to Google Photo's unlimit space



Google Photos ประกาศให้ upload ภาพและวิดีโอฟรี ได้ไม่จำกัดพื้นที่ โดยเราจะต้องแก้ไขค่า Photo Size หรือ Upload Size ให้เป็น High quality ซะก่อน ไม่งั้นมันก็จะยังใช้พื้นที่ของ Google account ของเราอยู่

ถ้าคุณลงชื่อเข้าใช้ google account อยู่แล้วก็สามารถตรวจสอบพื้นที่ของตัวเองได้จาก
https://www.google.com/settings/storage
ตัวอย่างเช่น Drive ของผม
Screenshot 2015-10-02 13.11.02.png
แต่สังเกตว่า พื้นที่ที่ใช้เก็บภาพ (Google Photos) มันยังไม่ได้คืนมา ยังถูกใช้ไปตั้ง 6.2 GB เห้ย! ผมเปลี่ยนตัวเลือกให้เป็น High quality แล้วนะ ทั้งใน Macbook และในเครื่องมือถือ แสดงว่า Google ไม่ได้ย้ายไฟล์ภาพและวิดีโอก่อนหน้านี้ไปให้ด้วย

ภาพ Google Photos ใน Macbook
Screenshot 2015-10-02 13.12.53.png
ผมอยากได้พื้นที่ตรงนี้คืน ทำไงดี?

หลังจากถกปัญหาแบบนี้กับน้องที่ทำงานเข้าอยากได้ที่คืนเหมือนกัน เราทำแบบนี้ครับ

TL;DR

ถ้าไม่อยากอ่านยาวๆ สรุปวิธีดังนี้
  1. เอา copy Google Photos ลงมาในเครื่องเราให้หมดก่อน มี 2 วิธี
    • ใช้ Google Drive sync เอา Photos ลงมา
    • ใช้ Google Take out ออกมาเป็น compressed file.
  2. นำ copy ที่ได้มา ไปไว้ใน folder ใหม่/หรือแตก compressed file ออกมาใน folder หนึ่ง
  3. ใช้ Google Photos Backup app ในการเอาภาพกลับขึ้นไป โดยเลือก option เป็น High quality

ขั้นตอนที่ 1 Backup ภาพจาก Google Photos ออกมา

วิธีที่ 1 

ติดตั้ง software เหล่านี้ลงเครื่องซะก่อน เลือก OSX หรือ Window เอาให้เหมาะสมกับเครื่องของคุณนะ


Google Drive (website)

  • ใช้ Browser เข้าไปที่ Drive ก่อน (จิ้มที่ link ได้เลยนะ มันจะไปเปิด Drive ให้)
  • ไปที่ Drive settings, หา icon ฟันเฟือง กดมันขึ้นมา จะได้หน้าต่างดังภาพ 
  • หา Option Create a Google Photos folder ติ๊ก checkbox เปิดใช้งาน
Screenshot 2015-10-02 13.21.20.png
  • กดปุ่ม Done 
Google Drive (ที่ดาวโหลดมาติดตั้ง)

  • เมื่อติดตั้งแล้วจะมี icon drive อยู่บน menu bar (ถ้าเป็น window ก็น่าจะอยู่ที่ notification bar) 
  • ให้เปิด Preference มาแก้ไข โดยคลิกที่ icon แล้ว คลิกที่เมนู (3 จุด) แล้ว เลือก Prederences...
drive-preference.jpg
  • ตรวจสอบว่าเราให้ Drive ดึงภาพลงมาในเครื่องของเรา
Screenshot 2015-10-02 13.27.35.png
  • จากภาพข้างบน ถ้าเลือก Everything in My Drive อยู่แล้วก็ไม่ต้องทำอะไร 
  • ถ้าเลือกตัวล่างต้องดูให้มั่นใจว่าเราติ๊ก checkbox Google Photos แล้ว 
  • กดปุ่ม Apply 
  • รอสักครู่ ถ้ากด icon ดูอีกครั้ง ก็น่าจะเห็นว่ามันกำลัง download ของใน Google Photos ออกมาให้เรา
drive-download-photos.jpg
  • ทีนี้ก็รอครับ รอจนกว่ามันจะดูดลงมาอยู่ในเครื่องของเราจนหมด

เมื่อ Google Drive app มันดาวโหลดภาพจาก Google Photos ของเรามาจนหมดแล้ว, แน่ใจแล้วว่าได้ภาพ และวิดีโอครบ เราก็ทำการ backup folder Google Photos ที่อยู่ใน Google Drive ไปไว้ที่อื่นซะก่อน (ไม่ใช้ move ใช้วิธี copy ไปที่ folder อื่น)

แล้วอ่านต่อที่ ขั้นตอนที่ 2

วิธีที่ 2

อัพเดตเมื่อ 3/10/2015

    Google จะมีเครื่องมือให้เจ้าของ account สามารถเอาข้อมูลส่วนตัวของเราออกมาจากระบบเมื่อไหร่ก็ได้ ผ่านทาง Google Take out การ sync ภาพด้วยวิธีแรกจะใช้เวลานานมาก หากมีภาพเป็นจำนวนมาก อย่างของผม 26,953 ไฟล์ (ตัวเองยังงง ทำไมมันเยอะขนาดนี้) การที่เราดาวโหลดเป็นก้อนใหญ่ จะประหยัดเวลากว่าการดาวโหลดทีละภาพทีละอัลบั้มมาก

  เริ่มจากกดเข้าหน้าของ Google Takeout จะเห็นบริการทั้งหมดที่ Google ให้เราเลือกเพื่อ export ออกมาได้
Google takeout main page

ตอนนี้เราจะเอาแต่ภาพ ผมจึงเลือก Select none แล้ว scroll ลงไปสวิตซ์ on แต่ Google Photos 

เสร็จแล้วกดปุ่ม Next 
Google จะ compress ไฟล์ให้เราดาวโหลดไป เราจะต้องเลือกชนิดของไฟล์ก่อน มี zip, tgz, tbz 

และต้องเลือก Delivery method มีให้เลือกสองแบบ เมื่อระบบ compress เสร็จ
1. จะให้ส่งเข้า Google Drive ของเรา หรือ
2. กลับมาดาวโหลดจากระบบ Take out 

พอเลือกแล้วเดี๋ยว Google จะ compress ไฟล์ให้เรา จะใช้เวลามากน้อยขึ้นอยู่กับไฟล์มากไฟล์น้อย 
พอขึ้นหน้าเพจแบบข้างล่าง ก็สามารถปิด browser ไปทำอย่างอื่นก่อนได้ เมื่อเสร็จแล้วระบบจะ email ไปบอก 

เมื่อ(ได้ email แจ้ง)กลับเข้ามาหน้า Google takeout main page ให้กด Manage Archives
เราจะเห็นรายการ archives ที่เรากดสร้างเอาไว้ ประมาณนี้ 

เมื่อกดปุ่ม SHOW DOWNLOADS
อย่างภาพล่างนี้ ผมทดลองเลือกให้เอาไฟล์ Take out archives ที่ compress เสร็จแล้วไปวางที่ Google Drive ส่วนตัวเลย 
แต่พื้นที่ใน Google Drive ไม่พอ อย่างในภาพจะเห็นปุ่ม ทั้งให้เปิดจาก Drive และ Download จากระบบ Take out เอง


จากการทดลองใช้งาน
  • ถ้าไฟล์รวมของเรามีขนาดใหญ่ ระบบ Take out ก็จะแบ่งเป็นไฟล์ย่อยๆให้ 
  • ถ้าเลือกให้ compress เป็น
    • tgz จะได้ไฟล์ที่มีขนาดไม่เกิน 10Gb 
    • zip จะได้ไฟล์ที่มีขนาดไม่เกิน 2Gb ฉะนั้น option นี้อาจจะได้ไฟล์เยอะมาก
ดาวโหลดมาให้ครบทุกไฟล์ และวางไว้ใน folder เดียวกัน ใช้ command line หรือ software ที่สามารถแตกไฟล์ tgz, zip ได้ในการแตกไฟล์

เมื่อได้ไฟล์มาแล้ว
ถ้าใช้ OSX ก็ใช้ Archive utility ในการแตกไฟล์ จะได้ folder ชื่อ Takeout ข้างในก็จะมี Google Photos และภาพของเราอยู่ เป็น album หรือตาม วันเดือนปีที่อัพโหลดขึ้นไป 





ได้ copy ของ Google Photos ครบแล้วก็ต่อที่ขั้นตอนที่ 2

ข้อควรระวัง!
  • อย่าใช้พวก download manager แบ่งส่วนในการดาวโหลด ในแต่ละไฟล์ย่อย Google ยอมให้ดาวโหลด(ซ้ำ)ได้ 5 ครั้งเท่านั้น ถ้าเกินแล้วจะไม่ยอมให้ดาวโหลดแล้ว ต้องสร้าง archive ใหม่
  • ถ้าตั้งชื่อ อัลบั้มภาพเป็นภาษาไทย ให้เลือกใช้ compress file type เป็น zip หากเลือกใช้เป็น tgz หลังจากแตกไฟล์แล้วพบว่า ภาษาไทยเสียหมด และไฟล์ใน folder นั้นก็จะไม่ถูกแตกออกมาด้วย 

ขั้นตอนที่ 2 เอาภาพกลับขึ้น Google Photos แบบ High quality

หลังจากได้ตัว copy ของ Google Photos เรียบร้อยแล้ว ทีนี้เราจะไปลบไฟล์ใน Photos ออก จะทำผ่าน browser หรือ mobile app ก็ได้

ลองตรวจสอบพื้นที่ดูใหม่ พอเป็น 0 แล้ว เราก็จะใช้แอพ Google Photo Backup เอาภาพกลับขึ้นไปใหม่ ตอนเอากลับก็อย่าลืมตรวจสอบว่าเราเลือก option High quality เอาไว้แล้วด้วยนะ