Python Client For Redis On Windows


  1. Download python and install.
  2. Download and install setup tools http://pypi.python.org/pypi/setuptools#files
  3. Add C:\PythonXX\Scripts\ to PATH Environment .
  4. Open ‘cmd’ from Run Command…
  5. Type ‘easy_install redis’ and Enter.

Now, try it.

Read More »

Python อ่าน ini (ConfigParser)


ตัวอย่างการอ่านไฟล์ ini ด้วย python

;config.ini
[server]
host = 172.16.1.38
port = 1234
[clien]
port = 2345

เลือกแค่อ่านแล้ว print ออกมาที่เหลือคงลุยต่อได้สบายนะครับ

import ConfigParser
parser = ConfigParser.RawConfigParser()
parser.read('config.ini')
section = 'server' #สมมุติเลือกอ่านเฉพาะ server
if section in parser.sections():
  for option in parser.options('host'):
    print option , parser.get(section, option)

กรณีอ่านแค่ตัวเดียว

if len(x) > 0:
  if parser.has_option('server', 'host'):
    host = parser.get('server', 'host')

Python APNS (Apple Push Notification Service)


1. สร้าง Cert สร้าง app กันก่อน
https://github.com/Redth/PushSharp/wiki/How-to-Configure-&-Send-Apple-Push-Notifications-using-PushSharp
2. build App แล้วลอง run ดู เก็บ device_token ไว้
3. Generate file .pem จากไฟล์ p12 ที่ได้มาในขั้นแรก

openssl pkcs12 -in DEV_Certificates.p12 -out DEV_Certificates.pem -nodes -clcerts

4. เอาไฟล์ pem ที่ได้มา set ใน source python

Read More »


ทดสอบ reblog

example link
3 Browser หลักของผม ออกมาไม่เหมือนกันซักอัน
1. RockMelt(Chrome Modified), 2. Firefox, 3. Safari
Chrome กับ Safari จะคล้ายกันหน่อยส่วนที่เห็นจะต่างก็คือ placeholder หรือ text ที่เป็นเงาๆ ใน inputbox ซึ่งอาจจะมาจาก webkit คนละ Version กัน

edit
มาต่อกันแล้วกับ Browser อีกตัวที่ทำมาจนหน้าตกใจเลยทีเดียว
มี toolbox สำหรับ input แต่ละ type มาให้เลยทีเดียว,แต่ที่น่าเสียดายคือบน Mac พวกปุ่มต่างๆ และข้อความจะดูไม่ค่อยพอดีเท่าไหร่
แต่ก็ถือว่าดีกว่า Browser ข้างบน เพราะสมมุติว่าถ้าเกิดเราเจอ input type ‘color’ นี่รับรองได้กรอกกันไม่ถูกเลยทีเดียวนอกจากจะเขียน JavaScript มาครอบไว้อีกที แต่ Opera จัดมาให้ชุดนึงก่อนโดยไม่ต้องเขียน javaScript ซักบรรทัด

และสำหรับการ Validate อัตโนมัติของ HTML5 มีเพียง
Firefox, Opera และ Chrome ที่ทำไว้ให้ , ส่วน Safari เด้งอยู่หน้าเดิม
เรื่องความสวยงามขอยกให้ Opera ครับ, ส่วน Firefox นี่ทำกรอบแดงให้ทุกฟิลเลยดูง่ายดี
Chrome ไม่สวยเลยให้ตายสิ 😦

อันนี้ source code ตัวอย่างครับเอาไปลองทดสอบกันเองได้
ลองกันดูได้ 😉

View original post

ตัวอย่าง log ใน python


filename: code_has_error.py
logfile : logtest.log

import logging
import sys
import os
from datetime import datetime
log_path = os.getcwd()+'/' #set to running directory
loglevel = 'DEBUG' #default log level
#change path to some path
#log_path = '/path/to/log/'
def ensure_file(filename):
    f = open(filename, 'a')
    f.close()
    return filename
def today_logname() :
    return datetime.today().strftime('%Y-%m-%d.log')
def ensure_dir(f):
    d = os.path.dirname(f)
    if not os.path.exists(d):
        os.makedirs(d)
def configLog():
    global loglevel
    if len(sys.argv) > 1:
      for argu in sys.argv:
          if argu.startswith('--log='):
              loglevel = argu[6:]
    numeric_level = getattr(logging, loglevel.upper()) #geting log level
    if not isinstance(numeric_level , int):
        raise ValueError ('Invalid log level: %s' % loglevel)
    ensure_dir(log_path)

    full_path = ensure_file(log_path+today_logname())
    logging.basicConfig(filename=full_path,
                      format='%(asctime)s:%(levelname)s:%(message)s',
                       level=numeric_level,
                     datefmt='%d/%b/%Y %I:%M:%S %p')
def main():
  configLog()
  logging.info('Log level :%s.' % loglevel)
  logging.debug('This message should go to the log file in debug mode')
  logging.warning('Watch out!')
  a = 100 / 0
  logging.info('I told you so.')

if __name__ == '__main__':
 try:
   main()
 except :
   logging.exception('')

test run than see log result in .log


18/Apr/2012 05:10:38 PM:INFO:Log level :INFO.
18/Apr/2012 05:10:38 PM:WARNING:Watch out!
18/Apr/2012 05:10:38 PM:ERROR:
Traceback (most recent call last):
  File "code_has_error.py", line 24, in <module>
    main()
  File "code_has_error.py", line 19, in main
    a = 100 / 0
ZeroDivisionError: integer division or modulo by zero

update: จากเดิมไม่ ready to use ตอนนี้ ready แล้วจ้า

ติดตั้ง ruby on rails และ mysql บน amazon linux(EC2)


sudo yum update ruby
sudo yum install rubygems
sudo gem update --system
sudo yum install make
sudo yum install gcc
sudo gem install rails --no-ri --no-rdoc

MySql and MySql2 Gem

สำหรับ rails 3.1

sudo yum install mysql mysql-devel ruby-devel

sudo gem install mysql2 -- \
--with-mysql-include=/usr/bin/mysql \
--with-mysql-lib=/usr/lib64/mysql

สำหรับ rails 3.0

sudo gem install --version  '~>0.2.7' mysql2 -- \
--with-mysql-include=/usr/bin/mysql \
--with-mysql-lib=/usr/lib64/mysql

Nokogiri xml parser

sudo yum install -y libxml2 libxml2-devel libxslt libxslt-devel
sudo gem install nokogiri

Log level


Debug > Info > Warning > Error > Critical
Debug ทุกอย่าง
Info รายงานค่าความถูกต้อง
Warning แจ้งเตือน( Memory ใกล้เต็ม แต่โปรแกรมยังรันอยู่เป็นต้น)
Error มีการ Error เกิดขึ้น
Critical ร้ายแรงขนาดโปรแกรมไม่อาจจะทำงานต่อได้

 

 

เคล็ดไม่ลับเพิ่ม Harddisk สำหรับ นัก Dev ที่ใช้ Xcode


1. เปิด Terminal ขึ้นมา

cd Library/Developer/Xcode/DerivedData/ ; open .

2. ลบไฟล์ไปที่ Trash ให้หมด
3. empty trash
4. บรู้มมม Harddisk ได้กลับมาเป็นกิ๊กเลย 😀

สำหรับ Hardcore (อันตรายนะจ๊ะ!!)

rm -rf Library/Developer/Xcode/DerivedData/*

Github for mac is SUCK


-merge conflict ประจำ
-merge แล้วไฟล์หาย
-แก้ไขไฟล์เดียวกันไม่ได้
-ignore file ก็ใช้ไม่ได้
สรุปว่ากากมากๆ