บล็อกของ hiddenmin

How to: บล็อกเว็บง่ายๆ แค่แก้ไฟล์เดียว

รูปภาพของ hiddenmin

السلام عليكم ورحمة الله وبركاته

เกิดอารมณ์อยากเขียนขึ้นมาเพราะมีคำสั่งจากเบื้องบนให้บล็อก Facebook ทั้งโรงเรียน ครั้นจะบล็อกผ่าน proxy เดี๋ยวนี้ facebook ก็ใช้ HTTPS กันหมดแล้ว จะบล็อกไอพีก็ไม่ไหวจะตามหาว่ามีช่วงไอพีอะไรบ้าง นึกขึ้นได้ว่าชมรม นศ. มุสลิมลาดกระบังก็เคยมีคำสั่งให้บล็อกเกมใน facebook ด้วยการปลอมค่า DNS ก็เลยจัดการทำตามซะเลย

สำหรับใครที่ต้องการบล็อกเว็บไม่ให้ลูก ไม่ให้หลาน หรือใครก็ตาม (รวมไปถึงตัวเราเอง?) เข้าเว็บที่ไม่เหมาะสมนั้นคงหาโปรแกรมแปลกๆ มาติดตั้งเพื่อจุดประสงค์นั้น

วันนี้ผมมีวิธีการง่ายๆ มาฝาก

ส่วนนี้สำหรับ DNS server ครับใครที่ไม่รู้จักก็ข้ามไปส่วนถัดไปเลยครับ โปรแกรมที่ผมใช้งานนั้นคือ Dnsmasq สามารถบล็อกง่ายๆ ด้วยการเพิ่มบันทัดนี้ลงไปในไฟล์ dnsmasq.conf โดยที่ w.x.y.z คือค่าไอพีที่เราการปลอม

address=/www.domain.com/w.x.y.z/

สำหรับ Linux โดยทั่วไปถ้าเราต้องการปลอมค่า DNS ก็สามารถทำได้โดยการแก้ไฟล์ /etc/hosts (ปกติแล้วต้องแปลงร่างเป็น root ก่อนนะถึงจะแก้ไขได้) แล้วก็เพิ่มบันทัดนี้ลงไป

w.x.y.z www.domain.com

แต่ Windows ก็ลำบากขึ้นนิดนึงเพราะตำแหน่งไฟล์หายากหน่อย โดยไฟล์ที่จะต้องไปแก้ไขนั้นอยู่ที่ c:\windows\system32\drivers\etc\hosts เปิดแก้โดย notepad ได้เลยครับผม

Tags: 

How to: ติดตั้ง mod_macro บน Ubuntu

รูปภาพของ hiddenmin

จริงๆ แล้วสำหรับ Ubuntu หรือพวก Debian ก็สามารถติดตั้งแบบรวดเร็วด้วย apt-get

apt-get install libapache2-mod-macro

แต่รุ่นที่ได้มามันเก่ามากๆ สำหรับใครที่อยากได้รุ่นใหม่ๆ มาใช้งานก็ทำตามนี้ได้เลย

Tags: 

ค้นหาข้อความในไฟล์ด้วย command line

รูปภาพของ hiddenmin

เราสามารถค้นหาข้อความที่อยู่ในไฟล์ต่างได้ง่ายๆ ด้วยคำสั่ง grep โปรแกรม grep จะแสดงข้อความที่หาเจอในไฟล์ที่เราต้องการ

grep <string> <file path>

เช่น

amin@alpha:~$ grep nameserver /etc/resolv.conf
nameserver 172.16.0.23

Tags: 

Python: เมื่อ x+x ไม่เท่ากับ x*2

รูปภาพของ hiddenmin

السلام عليكم ورحمة الله وبركاته

วันนี้เกิดความรู้สึกแปลกๆ ในประสิทธิภาพของ Python ก็เลยลองหาข้อมูลดูนิดหน่อยก็พบกับ PythonSpeed PerformanceTips เนื้อหาโดยรวมก็โอเคแต่รู้สึกแปลกใจกับหัวข้อ Python is not C ที่บอกถึงความแตกต่างในการใช้ operator ต่างๆ ในการประมวลผล

Tags: 

แก้ปัญหา Register Globals ใน Drupal 7

รูปภาพของ hiddenmin

หลักจากที่พยายามหาเวลาว่างมานานก็ได้ฤกษ์อัพเกรดเว็บ สถาบันอัลกุดวะฮ์ จาก Drupal 6 เป็น Drupal 7 สักที หวังอยู่ในใจเล็กๆ ว่ามันคงไม่วุ่นวายเหมือนตอนที่อัพเกรดเว็บ นักศึกษาฯ เพราะขนาด + ความซับซ้อนของเว็บมันต่างกันมากมาย แต่แล้วก็มีปัญหาที่ไม่คาดคิดเกิดขึ้น

Tags: 

Simple way to split a string in C++

รูปภาพของ hiddenmin

สำหรับคนที่เคยใช้ python ก็คงจะคุ้นเคยกับคำสั่ง split() ที่เอาไว้แยกแต่ละคำในตัวแปรแบบ string แต่ใน C++ ดันไม่มีคำสั่ง (ง่ายๆ) แบบนั้น

หลังจากใช้เวลาค้นหาไปพักใหญ่ๆ ก็ได้โค้ดแบบนี้

#include <iostream>
#include <sstream>

using namespace std;

int main(){
    string rawStr;
    getline(cin, rawStr);
    stringstream ss(rawStr);
    string buff;
    while(ss >> buff){
        cout << buff << endl; // this 's what i want
    }

    return 0;
}

Tags: 

command not found on Debian

รูปภาพของ hiddenmin

เคยมั้ยเวลาพิมพ์คำสั่งตาม how to ต่างๆ แล้วมันขึ้นมาว่า

xyz: command not found

ทำไงดี แล้วโปรแกรม xyz นั่นจะหาได้จากไหน...
มาวันนี้ Debian (ตั้งแต่รุ่น squeeze) เป็นมีทางออกแล้วด้วย package ที่มีชื่อ command-not-found วิธีติดตั้งก็แสนจะง่ายตามฉบับ Debian ด้วยคำสั่ง

apt-get install command-not-found

หลังจากติดตั้งเรียบร้อยแล้วก็สั่งอัพเดททีนึง (ต้องต่อเน็ตด้วยนะ)

update-command-not-found

โปรแกรมนี้นอกจากจะช่วยแนะนำ package ที่มีโปรแกรม xyz แล้วในกรณีที่เราพิมพ์คำสั่งผิดก็ยังสามารถคาดเดาคำสั่งที่น่าจะถูกพร้อมแนะนำ package ด้วย

ใช่สิ่งที่ผู้ใช้ต้องการจริงหรือ?

รูปภาพของ hiddenmin

Bismillahir Rahmanir Rahim

ลองมาทำตามรายการนี้ดู อินชาอัลลอฮฺ แล้วเราจะได้ในสิ่งผู้ใช้ต้องการ

  1. Don't assume you know what the customer wants, ask. (จงถาม อย่าคิดเองว่าคุณรู้ว่าลูกค้าต้องการอะไร)

  2. Involve the users from the start. (มีส่วนร่วมกับผู้ใช้ตั้งแต่เริ่มต้น)

  3. Define and agree the scope of the project. (กำหนดและตกลงขอบเขตของโปรเจค)

  4. Ensure requirements are specific, realistic and measurable. (ดูให้แน่ใจว่า requirements นั้น เจาะจง ทำได้จริง และวัดค่าได้)

  5. Obtain clarity if there is any doubt. (หาความชัดเจนถ้ายังมีข้อสงสัย)

  6. Create a clear, concise and thorough requirements document and share it with the customer. (ทำเอกสาร requirements ให้ละเอียด กระชับ ชัดเจนและส่งให้ลูกค้า)

  7. Confirm your understanding of the requirements with the customer (play them back). (ยืนยันความเข้าใจของคุณใน requirements กับลูกค้า)

  8. Avoid talking technology or solutions until the requirements are fully understood. (หลีกเลี่ยงการพูดเกี่ยวกับเทคโนโลยีหรือโซลูชั่นจนกว่าจะเข้าใจ requirements อย่างเต็มที่)

  9. Get the requirements agreed with the stakeholders before the project starts. (อย่าลืมว่า stakeholders ต้องยอมรับ requirements ก่อนที่คุณจะเริ่มงาน)

  10. Create a prototype if necessary to confirm or refine the customers' requirements. (ถ้าจำเป็นก็ให้สร้างแบบจำลองก่อนเพื่อยืนหรือปรับ requirements)

  11. Use a recognised notation, such as UML, for modeling the software. (ใช้เครื่องหมายเช่น UML สำหรับการจำลองซอฟต์แวร์)

  12. Cross check the software design against the requirements and review regularly. (ตรวจสอบการออกแบบซอฟต์แวร์จาก requirements และทบทวนเป็นประจำ)

ที่มา: projectsmart.com

Subscribe to RSS - บล็อกของ hiddenmin