Main Stream Media is a Joke🤐


#siamstr
GM ครับ ตื่นมาทำสิ่งที่เรารักกันต่อ🔥
#siamstr
ยายนึกว่าค่ำแล้วจะไปปิดประตูบ้าน 😅😂
https://video.nostr.build/2b73a5386da00cd17d7e44aa408fd9b9c76b2d22f3268f369c8d2ba2c8ef3814.mp4
น่าจะใช้ Location จาก GPS ตรวจว่าคนซื้อ และคนขายอยู่ตำแหน่งใกล้เคียงกันมากกว่า คงไม่มีใครมานั่งตรวจรูปทั้งวันแน่ ๆ 😅
ปัญหา off by one ที่เกิดจาก char string ใน C เป็นเรื่องที่ละเอียดอ่อนและมักสร้างความสับสนให้กับโปรแกรมเมอร์หลายคน โดยเฉพาะผู้ที่เพิ่งเริ่มต้นเขียนโปรแกรมภาษา C ลองมาดูรายละเอียดกันครับ:
1. ธรรมชาติของ C-style strings:
ใน C, string ถูกแทนด้วยอาร์เรย์ของ char ที่จบด้วยตัวอักขระ null ('\0') string "Hello" จะถูกเก็บเป็น {'H', 'e', 'l', 'l', 'o', '\0'}
2. ความยาวของ string:
เมื่อประกาศ char array เพื่อเก็บ string ต้องจองพื้นที่เพิ่มอีก 1 ตัวอักขระสำหรับ null terminator
ตัวอย่าง: char str[6] = "Hello"; // ต้องใช้ขนาด 6 ไม่ใช่ 5
3. การคัดลอก string:
เมื่อใช้ฟังก์ชัน strcpy() ต้องแน่ใจว่า destination array มีขนาดเพียงพอสำหรับ source string รวมถึง null terminator
4. การอ่าน/เขียนเกินขอบเขต:
หากไม่คำนึงถึง null terminator อาจทำให้เกิดการอ่านหรือเขียนเกินขอบเขตของ array ได้
5. การใช้ strlen():
strlen() นับความยาวของ string โดยไม่รวม null terminator ซึ่งอาจทำให้เกิดความสับสนเมื่อจัดสรรหน่วยความจำ
ตัวอย่างโค้ดที่แสดงปัญหา off by one:
```c
char str[5] = "Hello"; // ผิด: ไม่มีที่สำหรับ null terminator
char dest[5];
strcpy(dest, str); // อันตราย: dest ไม่มีที่พอสำหรับ null terminator
// แก้ไขเป็น:
char str[6] = "Hello"; // ถูก: มีที่สำหรับ null terminator
char dest[6];
strcpy(dest, str); // ปลอดภัย
```
6. การใช้ strncpy():
strncpy() อาจไม่เพิ่ม null terminator หากขนาดที่กำหนดไม่เพียงพอ:
```c
char dest[5];
strncpy(dest, "Hello", sizeof(dest)); // อันตราย: ไม่มี null terminator
// แก้ไขเป็น:
strncpy(dest, "Hello", sizeof(dest) - 1);
dest[sizeof(dest) - 1] = '\0'; // เพิ่ม null terminator เอง
```
7. การใช้ buffer ในฟังก์ชัน:
เมื่อส่ง string เข้าฟังก์ชัน ต้องระวังการเขียนเกินขนาด buffer:
```c
void func(char *buffer) {
strcpy(buffer, "This is a long string"); // อันตราย: ไม่รู้ขนาด buffer
}
// แก้ไขเป็น:
void func(char *buffer, size_t size) {
strncpy(buffer, "This is a long string", size - 1);
buffer[size - 1] = '\0';
}
```
การเข้าใจและระวังปัญหาเหล่านี้จะช่วยป้องกันข้อผิดพลาดและช่องโหว่ด้านความปลอดภัยในโปรแกรม C ได้
นอกจาก off-by-one error แล้ว ยังมีปัญหาอื่นๆ ที่พบบ่อยในการเขียนโปรแกรม โดยเฉพาะในภาษา C และ C++ ลองมาดูกัน:
1. Use-After-Free:
- เกิดเมื่อใช้หน่วยความจำที่ถูก free ไปแล้ว
- อาจนำไปสู่พฤติกรรมที่คาดเดาไม่ได้หรือช่องโหว่ด้านความปลอดภัย
2. Double Free:
- พยายาม free หน่วยความจำที่ถูก free ไปแล้ว
- อาจทำให้เกิด crash หรือ corrupt heap
3. Memory Leaks:
- ไม่คืนหน่วยความจำที่จองไว้เมื่อไม่ใช้แล้ว
- ทำให้โปรแกรมใช้หน่วยความจำมากขึ้นเรื่อยๆ
4. Buffer Overflow:
- เขียนข้อมูลเกินขอบเขตของ buffer ที่จองไว้
- อาจนำไปสู่การ overwrite ข้อมูลสำคัญหรือ code injection
5. Null Pointer Dereference:
- พยายามเข้าถึงข้อมูลผ่าน null pointer
- มักทำให้โปรแกรม crash
6. Integer Overflow/Underflow:
- เกิดเมื่อผลลัพธ์ของการคำนวณเกินขอบเขตของตัวแปร
- อาจนำไปสู่พฤติกรรมที่ไม่คาดคิดหรือช่องโหว่ด้านความปลอดภัย
7. Race Conditions:
- ในโปรแกรมแบบ multi-threaded, เมื่อผลลัพธ์ขึ้นอยู่กับลำดับการทำงานของ threads
- อาจทำให้เกิดข้อมูลที่ไม่สอดคล้องกันหรือ deadlocks
8. Uninitialized Variable Use:
- ใช้ตัวแปรที่ยังไม่ได้กำหนดค่าเริ่มต้น
- อาจทำให้เกิดพฤติกรรมที่คาดเดาไม่ได้
9. Dangling Pointer:
- pointer ที่ชี้ไปยังหน่วยความจำที่ถูก free ไปแล้ว
- คล้ายกับ Use-After-Free แต่อาจเกิดในบริบทอื่นๆ ด้วย
10. Format String Vulnerabilities:
- ในฟังก์ชันเช่น printf, เมื่อใช้ input ของผู้ใช้เป็น format string โดยตรง
- อาจถูกใช้เพื่อ leak ข้อมูลหรือ execute arbitrary code
11. Improper Error Handling:
- ไม่จัดการข้อผิดพลาดอย่างเหมาะสม
- อาจทำให้โปรแกรมอยู่ในสถานะที่ไม่คาดคิดหรือเปิดช่องโหว่ด้านความปลอดภัย
12. Time-of-check to time-of-use (TOCTOU) Bugs:
- เกิดเมื่อสถานะของระบบเปลี่ยนระหว่างการตรวจสอบและการใช้งาน
- มักพบในการจัดการไฟล์หรือทรัพยากรที่ใช้ร่วมกัน
การป้องกันปัญหาเหล่านี้ต้องอาศัยการเขียนโค้ดอย่างระมัดระวัง, การใช้เครื่องมือวิเคราะห์โค้ดอัตโนมัติ, และการทดสอบอย่างละเอียด
#siamstr claude 3.5 sonnet
ว่าด้วยเรื่อง Intel gen 13 และ 14
สรุปง่าย ๆ
- สนิมกิน ทำให้กระชากไฟมากกว่าปกติ ทำให้ทำงานผิดพลาด
- พบปัญหาตั้งแต่สองปีก่อน
- Intel ชีโบ้ชีเบ้ โทษการ์ดจอมั่ง โทษเมนบอร์ดมั่ง เรื่องเพิ่งมาแดงช่วงนี้
https://www.youtube.com/watch?v=H8LrwI-I_fY
#siamstr
นั่งเล่น npub.pro ได้มาจากโน๊ตคุณ nostr:npub1vaz88a5zhsqsrj220vh5vdnpjsu53msm34hzvcrh27x5d7zeav7qm45t60 เห็นมีช่องให้ใส่ script ลงไปได้ แต่สภาพที่ออกมามันแอบตลกจัง 55555 ช่วยทำให้แก้ css ได้ด้วยจะดีมากเลย ลองใส่แบบ inline แล้วแต่มันไม่แก้ 5555

ว้าววว มีอัพเดตใหม่รึ ตอนแรกไม่เห็นนะ
# Git และ Github
Github ก็เปรียบเหมือน Pornhub เราสามารถใช้งาน Git ได้โดยไม่ต้องใช้ Github
เหมือนกัน เราสามารถดู Porn ได้โดยไม่ต้องเปิด Pornhub
git คือ software สำหรับทำ version control ในการพัฒนาโปรเจคต่าง ๆ ง่ายขึ้น สามารถพัฒนาหลาย ๆ จุด พร้อม ๆ กันได้โดยการแยก Branch แล้วค่อยมา Merge โค้ดภายหลัง ซึ่งเราสามารถ Rebase หรือปรับได้ว่า จะเพิ่มส่วนไหน รวมกันยังไง ไม่ให้เกิด conflict ภายในโปรเจคของเราได้อย่างง่ายดาย
ส่วน github คือผู้ให้บริการ Server ในส่วนของการ Host โปรเจคต่าง ๆ ซึ่งก็มีความ Centralized นั่นแหละ บริษัทไหนที่ไม่เชื่อใจ Github พวกเขาก็จะสร้าง Server สำหรับ version control ของตนเองแทน อย่างเช่น Gitlab
หรือ Sapling SCM ของ Meta ที่ใช้จัดการโค้ดขนาดมหึมา มากกว่า 15ล้านบรรทัด ใน repo เดียวได้
#siamstr



