Category: Programming

It’s about application programming language.

PHP: file_get_contents() failed with SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

ต่อเนื่องจากโพสก่อนหน้าเกี่ยวกับ Error file_get_contents() ที่มีการดึงข้อมูลจากเว็บไซต์ที่ใช้โปรโตคอล “HTTPS” ปัญหานี้เป็นอีกกรณีที่อาจพบเจอได้ ในโพสนี้ขอสรุปวิธีการแก้ไขเลยแล้วกันครับ สำหรับข้อความ Error ที่เจอดังข้างล่าง Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed การแก้ไขให้เราเพิ่มโค้ดก่อนเรียกใช้ file_get_contents() ดังนี้ จากตัวอย่างเราสร้าง array เพื่อเก็บค่า ssl , verify_peer,...

PHP: file_get_contents() failed with SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version

วันนี้ผมมาแชร์ error ที่เกิดจากการเรียกใช้ function file_get_contents() บน php ตัวฟังก์ชันนี้ปกติเราใช้ในการดึงข้อมูลขจากเว็บไซต์มาเก็บในตัวแปรเป็น String เช่น มีเว็บไซต์ให้บริการข้อมูลอัพเดทค่าเงิน โดยเรียกผ่าน api url ที่เขากำหนด ตัวอย่าง api url “https://blockchain.info/ticker” ให้บริการข้อมูลราคาค่าเงินสกุลต่างๆ โดยส่งข้อมูลออกมาดังตัวอย่าง { “AUD” : {“15m” : 46766.08, “last” : 46766.08, “buy” : 46766.08, “sell”...

Android : A/libc: fdsan: attempted to close file descriptor 86, expected to be unowned

หลังจากกำหนด targetSdkVersion 30 ปรากฎว่าแอปปลิเคชันเปิดแล้วปิดตัวทันที ลองไปตรวจสอบใน Logcat พบว่ามีเพียงข้อความ error A/libc: fdsan: attempted to close file descriptor 86, expected to be unowned แต่พอเปลี่ยน targetSdkVersion 29 กลับสามารถทำงานได้ปกติ เลยสืบค้นจนพบว่า Error ที่เกิดขึ้น นั่นเกี่ยวกับการใช้ <pl.droidsonroids.gif.GifTextView android:layout_width=”match_parent” android:layout_height=”match_parent” android:background=”@drawable/image” /> พบว่าถ้ารูปภาพที่โหลดไม่ใช่...

Android : How to detect App foreground/background

วันนี้เรามีอีกวิธีในการตรวจสอบว่าแอปฯของเราอยู่ในสถานะทำงานอยู่ (foreground) หรือถูกปิดหรือย่อให้อยู่เบื้องหลัง (Background) โดยวิธีนี้เราจะเรียกใช้ Lifecycle Observer ที่มากับ androidx (androidx.lifecycle.OnLifecycleEvent) ตรวจจับการทำงานของ Event ของแอปฯ การเรียกใช้เราประกาศครั้งเดียวตอนเปิดแอปฯ แล้วตัว lifecycle จะคอยจับ event ให้เรา ดังนี้ public class MainApp extends AppCompatActivity implements LifecycleObserver { … @Override protected void onCreate(Bundle savedInstanceState)...

Android Issue : Violation of Interfering with Apps, Third-party Ads, or Device Functionality policy

เคยประสบปัญหาโดน Google Rejected App ด้วยเหตุผลว่า “Violation of Interfering with Apps, Third-party Ads, or Device Functionality policy” หรือ แบบง่ายๆคือ การแสดงโฆษณาขึ้นมาหลังจากที่ปิดแอปฯ หรือย่อแอปฯ หรือภายนอกแอปฯ นั่นเอง ซึ่งจากที่ทดสอบมา สมมติว่าขณะที่แอปกำลังโหลดโฆษณา (Interstitial Ads) อยู่แล้วเราทำการกดปุ่ม Home เพื่อย่อแอปฯไปเบื้องหลัง ซึ่งในความเป็นจริงแล้วแอปฯ ก็ยังทำงานอยู่ในเบื้องหลัง (Background) นั่นเอง เพราะฉะนั้นเมื่อโหลดโฆษณาเสร็จ...

Android : How to get Screen Size include Multi-Window Screen Size

วันนี้เราจะมาหาขนาดของหน้าจอกัน ซึ่งจำเป็นมากหากแอปปลิเคชันของเราต้องรองรับการทำงานแบบ Multi-Window หรือ รองรับการทำงานแบบหมูนหน้าจอ (Rotate Orientation) ซึ่งเราต้องปรับแต่งโครงสร้างของแอปให้เหมาะกับการทำงานด้วย วิธีการที่หาขนาดหน้าจอมีหลายวิธีด้วยกัน แต่วิธีที่แนะนำในวันนี้ใช้งานได้ดี เท่าที่ทดสอบมา ดังนี้ DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); ScreenWidth = metrics.widthPixels; ScreenHeight = metrics.heightPixels; เพียงเท่านี้เราก็จะได้ขนาดหน้าจอทั้ง กว้าง และยาวครับ ซึ่งเมื่อเราทำการหมุนจอเป็นแบบ Landscape ขนาด กว้าง x ยาว ก็จะสลับที่กัน...