17 สิงหาคม, 2560

Override default Django forms attribute

งานที่ใช้อยู่ปัจจุบัน คือ สร้าง Form สำหรับ Register โดยใช้ ModelForm ที่ inherit มาจาก class อื่น 

ปัญหาคือ เมื่อ render html form ออกมา พวกค่าต่างๆ เช่น help_text จะใช้จาก default ที่ตั้งมาจาก class แม่ และแท็ค input จะไม่มี class กำหนดมา ซึ่งอยากใช้ form-control ของ bootstrap 

ลองไปค้นๆ ดู ก็เจอคนทำ เลยเอามาบล็อกเก็บไว้เสียหน่อย




class UserRegistrationForm(RegistrationFormUniqueEmail):
    def __init__(self, *args, **kwargs):
        super(UserRegistrationForm, self).__init__(*args, **kwargs)
        self.fields['password1'].help_text = "My new help_text"
        self.field['username'].widget.attrs.update({'class': 'form-control'})


08 เมษายน, 2560

แก้ไขปัญหา เสียงไม่ออกไปที่ลำโพง bluetooth บน Debian

ปัญหาคือ สามารถ pair กับลำโพงได้ แต่ไม่มี device, audio profile ใหม่ขึ้นมาในระบบให้เลือก

search ไปมาก็เจอวิธีแก้ใน wiki ของ Debian เอง วิธีการมีดังนี้

  • ติดตั้ง package เหล่านี้
    • apt-get install pulseaudio pulseaudio-module-bluetooth pavucontrol bluez-firmware
  • จากนั้น restart service bluetooth และ pulseaudio
    • service bluetooth restart
    • killall pulseaudio
  • ใช้โปรแกรมจัดการ bluetooth ตัวไหนก็ได้ pair กับอุปกรณ์ตามปกติ
  • เปิดตัวจัดการเสียงของ pulseaudio โดยใช้โปรแกรมเช่น pavucontrol ก็จะเห็น device ของลำโพงปรากฏขึ้นมาแล้ว

REF:

05 ตุลาคม, 2559

Supervisord : Adding new program

ต้องการเพิ่ม program เข้าไปใน supervisord และ start เพื่อเริ่มใช้งาน สามารถทำได้ดังนี้


  1. เพิ่ิมไฟล์ .conf เข้าไปที่ /etc/supervisor/conf.d/
  2. ใช้คำสั่ง sudo supervisorclt reread
    • ตรงนี้จะบอกว่า มีโปรแกรมใหม่ขึ้นมาให้ใช้ (แต่จะยังเพิ่มเข้าไปจริงๆ)
  3. ใช้คำสั่ง sudo supervisorclt update
    • หลังจากคำสั่งนี้ supervisord จะ add เข้าไป และเริ่มใช้งาน program ใหม่ทันที เช็คโดยใช้ sudo supervisorctl status
REF:

15 เมษายน, 2559

[Ubuntu/Debian] วิธี downgrade package

เนื่องจากต้องการติดตั้งระบบตัวนึง ซึ่งใน ansible จะรัน playbook เริ่มต้นตัวที่เป็น bootstrap เพื่อเตรียมติดตั้งจริงต่อไป พบว่า ต้องมีการเพิ่ม repository และ ติดตั้งแพคเกจเพิ่มเติม ดูเหมือนไม่มีอะไรใช่ไหม?

ปัญหาคือ แพคเกจที่ต้องการจะลง ดันบังคับต้องเป็นเวอร์ชั่นที่ต่ำกว่าที่อยู่ในระบบ ซึ่งก็คือ python2.7
ปัญหาถัดมาคือ ถ้าจะลบออกมันจะลากญาติโยมที่พึ่งพา(depend) python2.7 ลงไปด้วย เพราะงั้นทำไงดี

วิธีแก้ง่ายๆ หลังจากหาดูมาตั้งนานนมคือ ใช้ aptitude !

ใช้ยังไง? แบบนี้เลย บอกมันไปว่าจะลบทิ้งนะ

$ sudo aptitude remove python2.7

เท่านั้นล่ะ มันจะร่ายยาวมาเลยว่าอะไรจะเกิดขึ้นบ้าง สิ่งที่ต้องทำคือ กด n ไปเรื่อยๆ คือให้มัน resolve ให้ใหม่นั่นล่ะ จนกว่าจะเจอว่าให้มัน downgrade ไปยังเวอร์ชั่นที่ต้องการ
แค่นี้ก็เรียบร้อย ไม่กระทบกับแพคเกจใดๆ

07 มีนาคม, 2559

Unattended security update in Debian

ในระบบ package ปกติเช่น apt ของ Debian, Ubuntu เราสามารถติดตั้ง software ใหม่ๆ หรือ security update ได้อยู่แล้วไม่ว่าจะผ่าน command line หรือ GUI

ทีนี้หากเราได้ดูแล server อยู่เป็นจำนวนนึง การรีโมทเข้าไปติดตั้งทีละเครื่องคงไม่สนุกแน่

ในบทความนี้จะมาทำให้ server เรา security update อย่างสม่ำเสมอแบบอัตโนมัติกัน

สิ่งที่ต้องเตรียม

- ติดตั้งแพคเกจที่จำเป็น
# apt-get install unattended-upgrades apt-listchanges
- คอนฟิคไฟล์

  • ไฟล์แรกจะอยู่ที่ /etc/apt/apt.conf.d/50unattended-upgrades ซึ่งค่าที่ตั้งมา ก็สามารถนำมาใช้ได้เลย
  •  อีกไฟล์คือ /etc/apt/apt.conf.d/20auto-upgrades ถ้าไม่มีไฟล์นี้ สามารถสร้างขึ้นมาใหม่ได้เลย หรือใช้คำสั่ง  sudo dpkg-reconfigure -plow unattended-upgrades ก็ได้เช่นกัน จากนั้นให้ไขไฟล์ดังนี้

APT::Periodic::Update-Package-Lists "1";

APT::Periodic::Unattended-Upgrade "1";



REF:

28 กุมภาพันธ์, 2559

ls command with color in black-background terminal in Mac OSX

ตอนนี้ Terminal ใน Mac ที่ใช้อยู่คือ iTerm2 
ทีนี้สีพื้นหลังที่ใช้อยู่เนี่ยมันเป็นสีดำ เวลาสั่ง ls มันจะมีบางประเภทที่กลืนไปกับสีพื้นหลัง คือมันไม่เด่น

วิธีแก้คือ ให้เพิ่มค่าต่างๆ เหล่านี้ไปที่ไฟล์ ~/.profile หรือ ~/.bash_profile (ใช้อันนี้ล่ะ)

alias ls="ls -G" # อันนี้คือทำให้มันแสดงผลเป็นสีทุกครั้งที่ ls#export LSCOLORS=gxBxhxDxfxhxhxhxhxcxcx # สีนี้ก็ใช้ได้export LSCOLORS=ExGxBxDxCxEgEdxbxgxcxd # อันนี้โฟลเดอร์จะสีน้ำเงินเข้ม
สั่ง source ~/.bash_profile แล้วลอง ls ดู ก็จะโอเคขึ้นละ

ref: