ads

วันพฤหัสบดีที่ 29 สิงหาคม พ.ศ. 2556

วัดความเร็ว cvsup แต่ละไซต์ของ FreeBSD

วัดความเร็ว cvsup แต่ละไซต์ของ FreeBSD

เคยไหม  เวลาอัพเดท port หรือ อัพเวอร์ชั่น OS FreeBSD
โดยคำสั่งพวก cvsup ports-supfile  หรือ cvsup stable-supfile  แล้วรอไปเป็นชาิติวันนี้เลยหาคำสั่งมาให้
เพื่อวัดว่าเราจะเลือกไซต์ไหนดีโดย  ให้เร็วที่สุด
ทั้งนี้ทั้งนั้น  ขึ้นอยู่กับว่า server คุณนั้นตั้งอยู่ที่ไหน วิ่งเส้นไหน inter เท่าไหร่  เส้นไหนใกล้กว่าดังนั้นค่าที่วัดได้จึงอาจจะไม่เหมือนของผม
จึงต้องเลือกใช้เองครับ

install เลย
# /usr/ports/sysutils/fastest_cvsup

แล้ว make install เลยครับ
# make install
# rehash

รอจนเสร็จแล้วก็มาใช้งานกันดูครับ
# fastest_cvsup -c all

ระบบจะวัดผลการตอบจาก cvsup server FreeBSD ทั่วโลกที่มีแล้วจับเวลามาให้เรา  เร็วที่สุด 3 อันดับครับ
>  Querying servers in countries: ar at au br ca ch cn cr cz de dk ee es fi fr gr hu ie is jp kg kr kw lt lv nl no nz ph pl pt ro ru se sg si sk sm th tld tr tw ua uk us za
==> DNS lookup timed out for cvsup.ar.freebsd.org
--> Connecting to cvsup.at.freebsd.org [137.208.3.18]...
    - server replied: OK 17 0 SNAP_16_1h CVSup server ready
    - time taken: 248.14 ms
--> Connecting to cvsup.au.freebsd.org [202.125.41.163]...

....
..
..
รอครับ  รอๆๆๆ...  แล้วจะสรุปตอนท้ายได้ดังนี้

>>  Speed Daemons:
    - 1st: cvsup.sg.freebsd.org
    - 2nd: cvsup6.jp.freebsd.org
    - 3rd: cvsup3.jp.freebsd.org

แล้วทีนี้เวลา cvsup ports-supfile  หรือ cvsup stable-supfile เราก็เลือกไซต์นี้ลงไปในไฟล์คอนฟิกเรา
ก็จะเร็วปรี๊ดดปร๊าดดั่งใจครับ  แลบลิ้น

ทั้งนี้ทั้งนั้น แต่ละวัน  แต่ละเครื่องเมื่อลองเทสดูไซต์ที่เร็วที่สุดที่วัดได้ก็อาจจะไม่ได้ตัวเดิมครับ  ดังนั้นควรวัดกันเองนะครับ

วันอังคารที่ 27 สิงหาคม พ.ศ. 2556

โปรแกรมเปลียน changing-collation ( tis-620 -->utf8) ใน mysql

 โปรแกรมเปลียน changing-collation ( tis-620 -->utf8) ใน mysql

ท่านเคยสบปัญหานี้ไหม  เ็ซ็ตดาต้าเบสไว้เป็นอย่างหนึ่ง
แต่พอลงโปรแกรมต่าง ๆ ( ที่ไม่มีให้เลือก collation ) พอเปิดมาดูอีกทีิอ้าว ไม่ตรงหว่า
หรือ ท่านที่เช่าโฮส ต่างประเทศอยู่  collation มันเลยไม่เป็น utf-8 ดังใจ
ทำให้โปรแกรมเราทำงานเพี้ยนกับภาษาไทย  ต้องมาปวดหัวกับปัญหาภาษาต่างดาว   ปวดหัวตึ๊บ
ของไทยเองก็ใช่ว่าจะไม่เจอ  บางที่ดีฟอลเป็น TIS-620 เงียะ เราจะใช้ UTF-8 ก็เจอบ่อยไป

วันนี้ขอแนะนำ phoca-changing-collation
ไปอ่านรายละเอียด และดาวโหลดได้จาก http://www.phoca.cz/phoca-changing-collation
เมื่อได้ไฟล์แล้วก็ทำการแตกไฟล์  แล้วอัพขึ้นไปบนพื้นที่เราเลย  แล้วเปลียนชื่อโฟลเดอร์ให้เรียกง่ายๆ เลย เช่น callation
แล้วก็เรียก url ที่เรามีเช่น
www.mysite.com/main/collation

Database Host : ชื่อโฮส หรือไอพีเครื่องดาต้าเบส
Database User : user ของดาต้าเบส   
Database Password : password ของดาต้าเบส   
Database Name   : ชื่อดาต้าเบส
Database Collation : collation ที่ต้องการจะใช้ของไทยควรใช้เป็น utf8_general_ci


กด submit ก็เสร็จเลย
แล้วเราก็จะได้ระบบ UTF-8 ดั่งใจ

วันศุกร์ที่ 16 สิงหาคม พ.ศ. 2556

Rsync Backup ข้ามเครื่อง

Rsync Backup ข้ามเครื่อง

เซิร์ฟเวอร์เป็น FreeBSD  ลง rsync ก่อนกครับ ( 192.168.201.101 )
# cd  /usr/ports/net/rsync
# make install clean
# rehash
แอด user ที่จะใช้ในการซิงค์ที่นี้ใช้  apache
# add apache
# passwd apache

เปลี่ยน user มาเป็น  apache
# su - apache
แล้วทำการ  gent key
# ssh-keygen -t rsa
  Generating public/private rsa key pair.
Enter file in which to save the key (/home/apache/.ssh/id_rsa):    <enter ผ่าน >
Created directory '/home/apache/.ssh'.
Enter passphrase (empty for no passphrase): <enter ผ่าน >
Enter same passphrase again: <enter ผ่าน >

# cd .ssh
ก๊อป key มาใช้
# cp id_rsa.pup local.key

ทำการส่งค่าไฟล์ local.key ไปยังเครื่องแบคอัพ ด้วยการ sftp
# sftp apache@192.168.201.103

# The authenticity of host '192.168.201.103 (192.168.201.103)' can't be established.
DSA key fingerprint is 27:bd:d3:a3:e3:63:ba:01:43:ad:f1:03:2a:07:41:75.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.201.103' (DSA) to the list of known hosts.
apache@192.168.201.103's password:   <ใส่พาสเวิร์ดไป >
sftp> put local.key
Uploading local.key to /home/apache/local.key
local.key                                                                                  100%  412     0.4KB/s   00:00  
sftp> bye


####  ที่เครื่อง  backup ### ( 192.168.201.103 )
อันนี้เป็น CentOS ใช้ yum
# yum install rsync   แล้วก็รอไป
adduser ที่จะใช้ให้เหมือนกัน
# adduser apache
# passwd apache  เปลี่ยนพาสดังที่เราเซ็ต

แล้วเปลียน user
# su - apache

แล้วทำการ ssh ไปยังเครืองอื่นที่ไม่ใช่เครื่องต้นแบบ  เพอให้มันสร้าง ไดเรคโทรี่ .ssh อัตโนมัติ
$ ssh apache@192.168.201.105
apache@192.168.201.105's password:  < ใส่พาสเวิร์ด >
$ exit   เสร็จแล้วออกมา
แล้วทำาการ ก๊อปคีย์ที่ได้เก็บไว้เป็นตัวออเท็น
$ cat local.key >> .ssh/authorized_keys
$ chmod 755 .ssh/authorized_keys

### ตัว server ต้นแบบ ###
กลับมาที่ฝั่ง server ต้นแบบ  ลอง ssh ไปยังตัวแบคอัพ  มันจะไม่ถามพาสเวิร์ด
$ ssh apache@192.168.201.103
[apache@streaming01 ~]$     เรียบร้อยเข้าได้เลย

เมื่อเข้าได้แล้วต่อไปก็ใส่คำสั่ง rsync เทสได้เลยว่าได้หรือเปล่า
# rsync [ออฟชั่น] [ ต้นแบบ] [ตัวแบคอัพ]
ลองเทสเป็น
# rsync -avz ssh /DATA/ apache@192.168.201.103:/home/BACKUP/
= ทำการซิงค์ที่เครื่องต้นแบบภายใต้พาร์ท /DATA  ไปยังเครื่องแบคอัพ ip 192.168.201.103 ในพาร์ท /home/BACKUP/
ลองรันดู   ถ้าทำงานได้จริงก็ผ่านแล้วครับเอาไปใส่ใน crontab เลย  ทำวันละครั้งก็ได้ครับ
# crontab -e
โค๊ด:
0 0 * * * rsync -avz --delete ssh /DATA/ apache@192.168.201.103:/home/BACKUP/

ในการใช้งานจริงจะใส่ --delete เป็นออฟชั่นเพิ่มไปอีกเพื่อให้เวลาซิงค์หากตัวต้นแบบมีการลบไฟล์ไหนไปแล้ว  ปลายทางที่แบคอัพก็ลบตามไปด้วย

อีกอย่างที่ควรระวังคือการใส่พาร์ทระหว่าง /DATA  หรือ /DATA/  ได้ผลต่างกันนะครับระวังให้ดี
ถ้าใส่เป็น  rsync -avz --delete ssh /DATA apache@192.168.201.103:/home/BACKUP/
      = เวลามันซิ้งค์ไปที่ปลายทางมันจะสร้างไดเรคโทรี่ /DATA  ภายใต้ /home/BACKUP/
แต่ถ้าใส่เป็น  rsync -avz --delete ssh /DATA/ apache@192.168.201.103:/home/BACKUP/
   = เวลาซิงค์มันจะเอาโฟลเดอร์ย่อย  ไปไว้ใน /home/BACKUP/ เลย    
ซึ่งหากไม่มีการเปลี่ยนรูปแบบคำสั่งอาจจะไม่มีผลอะไรเท่าไหร่  แต่ถ้าวันไหนเปลียนรูปแบบคำสั่งจาก มี / ไปเป็น ไม่มี /  แล้วเราใส่ออฟชั่น  --delete แล้ว
มันจะมองว่าปลายทางไม่เหมือนเดิมมันก็ลบทิ้งเกลี้ยงเลยแล้วทับด้วย data ใหม่หรือซับย่อยของโฟลเดอร์ใหม่เลย  อันนี้ต้องระวัง

วันอังคารที่ 13 สิงหาคม พ.ศ. 2556

table ใน mysql crashed

table ใน mysql crashed

หลายท่านเจอเหตุการ์แบบนี้แน่ๆ ไม่ว่าจะเกิดจากไฟดับ หรือเครืองค้าง  กดปิดเครื่องโดยไม่ชัตดาวน์
อันเป็นสาเหตุให้ table crashed ไป
ดูในไฟล์ log  xxxxx.err จะฟ้องประมาณ Table './xxxx/xxxx' is marked as crashed and should be repaired

ซ่อมแซมแบบทั่วไปโดยใช้คำสั่ง


# mysqlcheck -o -u root -pพาสเวิร์ด --all-databases --auto-repair

- พาสเวิร์ด แทนด้วย พาสเวิร์ดของ root

แต่ก็ใช่ว่าทุกครั้งจะหายได้  บางทีไม่หายอีกต้องทำวิธีต่อไปโดยใช้ myisam แทนในการซอ่มตารางดังต่อไปนี้
ให้ cd เข้าไปยัง part database ตัวที่มีปัญหา
แล้วใช้คำสั่ง


# myisamchk -r ชื่อเทเบิลที่มีปัญหา.MYI

ดังนี้
# myisamchk -r post_question.MYI
- recovering (with sort) MyISAM-table 'post_question.MYI'
Data records: 199804
- Fixing index 1

จะทำการจัดเรียง index ใหม่ให้เข้ากับขั้อมูลที่แท้จริง
เท่านี้ก็ก็ผ่านแล้วครับ

ปัญหา kern.maxfiles limit exceeded by uid

ปัญหา kern.maxfiles limit exceeded by uid

FreeBSD ครับ อยู่ๆ ก็ ftp ไม่ได้  ssh ไม่ได้
เปิดดูคอนโซลไปก็เจอ message บานเลย


kern.maxfiles limit exceeded by uid 1001, please see tuning(7). 
kern.maxfiles limit exceeded by uid 1001, please see tuning(7). 
kern.maxfiles limit exceeded by uid 65534, please see tuning(7). 
kern.maxfiles limit exceeded by uid 65534, please see tuning(7). 
kern.maxfiles limit exceeded by uid 65534, please see tuning(7). 
kern.maxfiles limit exceeded by uid 22, please see tuning(7). 
kern.maxfiles limit exceeded by uid 22, please see tuning(7). 
....
...
..

วิธีแก้คือ เพิ่ม limit maxfiles ของ kernel ไป

 # sysctl kern.maxfiles=65534

แล้วจะเด้ง message กลับมาว่ารัค่าใหม่เรียบร้อยแล้ว
kern.maxfiles: 12328 -> 65534

เรียบร้อย 

วันจันทร์ที่ 5 สิงหาคม พ.ศ. 2556

เฉลยข้อสอบ iStockPhoto

How to pass iStockphoto Photographer Application Quiz: เฉลยข้อสอบ iStockphoto

How to pass iStockphoto Photographer Application Quiz: เฉลยข้อสอบ iStockphoto
  1. Files downloaded from iStockphoto (including yours once you pass this test) are offered with a royalty-free license, which describes how the image can and cannot be used: True
  2.  iStockphoto images are downloaded under two different kinds of royalty-free licenses: our "standard use" license, which allows for all kinds of commercial, personal, and editorial uses, and our "editorial use only" license. True
  3.  All recognizable faces in images with the standard use license require a model release, including those in crowds: True
  4. Logos are acceptable in wide angle photographs under the standard use license: False

  5. Identifiable design marks, such as the 3 stripes for Adidas or the Nike swoosh, are allowed in images under the standard use license if the name is removed: True

  6. Landmark buildings such as the Sydney Opera House require a property release to be used in images offered with the standard use license: True

  7. A model release is required for a self portrait: True

  8. The photographer can witness their own Model/Property Release:False

  9. A simple snapshot is acceptable; iStock does not require quality in composition: False

  10. It is acceptable to protest a rejection in the iStock forums: True
  11. It is acceptable to copy the composition of another photographer`s work: False
  12. Photographs should be upsampled or interpolated to the maximum XXL size: False
  13. The above example contains: Compression
  14. The above example is: Unacceptable lighting
  15. The above example is: Unacceptable texture detail

วันศุกร์ที่ 2 สิงหาคม พ.ศ. 2556

โปรแกรมไว้ benmarch Server : Unix Bench

โปรแกรมไว้ benmarch Server : Unix Bench

ดาวโหลดได้จาก
http://code.google.com/p/byte-unixbench/downloads/detail?name=UnixBench5.1.3.tgz&can=2&q=
ไว้ทดสอบเบนซ์มาร์ก server ตระกูล unix กันนะครับ

ดาวโหลดมาเสร็จแตกไฟล์
# tar -xzf UnixBench5.1.3.tgz 
แลั้วสั่ง make แล้วรันเลยครับ

# make
# Run หรือ ./Run  ( บาง OS ใช้แบบนี้)

ถ้าขึ้นเออเรอร์ lib ต่างๆ ก็ลงให้ครบตามที่มันโชว์นะครับ


BYTE UNIX Benchmarks (Version 5.1.2)

   System: genmail.gmember.com: FreeBSD
   OS: FreeBSD -- 7.2-STABLE -- FreeBSD 7.2-STABLE #1: Fri Oct 23 03:11:19 ICT 2009     root@genmail.gmember.com:/usr/obj/usr/src/sys/MOTEKERNEL
   Machine: i386 (MOTEKERNEL)
   Language: en_US.utf8 (charmap=, collate=)
   CPU: no details available
   1:51PM  up 779 days, 20 mins, 2 users, load averages: 0.01, 0.04, 0.01; runlevel 

------------------------------------------------------------------------
Benchmark Run: Wed Jun 06 2012 13:51:43 - 14:19:59
unknown CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables        4997336.3 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                      878.4 MWIPS (10.5 s, 7 samples)
Execl Throughput                               1432.7 lps   (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        138036.4 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           41260.5 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        342256.4 KBps  (30.0 s, 2 samples)
Pipe Throughput                              486247.6 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                  77246.5 lps   (10.0 s, 7 samples)
Process Creation                               5239.7 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   3546.4 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                    708.9 lpm   (60.0 s, 2 samples)
System Call Overhead                         352962.3 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0    4997336.3    428.2
Double-Precision Whetstone                       55.0        878.4    159.7
Execl Throughput                                 43.0       1432.7    333.2
File Copy 1024 bufsize 2000 maxblocks          3960.0     138036.4    348.6
File Copy 256 bufsize 500 maxblocks            1655.0      41260.5    249.3
File Copy 4096 bufsize 8000 maxblocks          5800.0     342256.4    590.1
Pipe Throughput                               12440.0     486247.6    390.9
Pipe-based Context Switching                   4000.0      77246.5    193.1
Process Creation                                126.0       5239.7    415.9
Shell Scripts (1 concurrent)                     42.4       3546.4    836.4
Shell Scripts (8 concurrent)                      6.0        708.9   1181.5
System Call Overhead                          15000.0     352962.3    235.3
                                                                   ========
System Benchmarks Index Score                                         378.1

Rsync external HDD seagate FreeAgent (NTFS) บน debian

Rsync external HDD seagate FreeAgent (NTFS) บน debian

การ mount external HDD seagate (NTFS) บน debian แล้วแบคอัพด้วย rsync
เพื่อดูว่าไดร์ฟนั้นมันมองเห็นเป็นชื่ออะไรซะก่อน
# fdisk -l   


ได้ดังนี้ 
Disk /dev/sdb: 1500.3 GB, 1500301908992 bytes
255 heads, 63 sectors/track, 182401 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x7fa6ae2d

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1      182401  1465136001    7  HPFS/NTFS

<<<<< ตัวนี้แล   /dev/sdb1

ตัว seagate มันมักจะดาวน์ไปเอง search จาก net เป็นกันเยอะ  แต่ก็แก้ไม่ค่อยได้กันฟลุคเจอเลยขอจดไว้ก่อน
เคลียร์ค่าการสแตนบาย ต่างๆ ของไดร์ฟ external ดั่งกล่าวก่อน

# apt-get install sdparm
# sdparm -a --flexible /dev/sdb1
# sdparm --clear STANDBY -6 /dev/sdb1
# sdparm --command=start /dev/sdb1
# sdparm --clear STANDBY -6 /dev/sdb1
# sdparm --command=start /dev/sdb1

ตัวนี้external ตัวนี้มีข้อมูลอยู่เป็น NTFS มา เลยต้องใช้การ mount ด้วย tools ที่รองรับคือ ntfs-3g
# apt-get install ntfs-3g
# ntfs-3g /dev/sdb1 /seagate -o rw

แล้วทำการสั่งให้ sync กับไดร์ฟที่ต้องการเลย ที่นี้คือ 
/var/www2/html/webapps    >>> ต้นฉบับ
/seagate/webapp_backup/  >>> ตัวแบคอัพปลายทาง   อย่าจำสลับตำแหน่งกันเด็ดขาด !!! ไม่งั้นงานเข้าแน่
# apt-get install rsync
# rsync -avz /var/www2/html/webapps /seagate/webapp_backup/ & 

ตั้ง crontab ตามต้องการว่าจะให้รันเมือไหร่ตามใจ

Installing Subversion (SVN)

Installing Subversion (SVN) 

ที่มา โดย ตรี: http://blog.o2sx.com/node/35  

ลง lib ที่ต้องการใช้งานก่อน
# apt-get install gcc autoconf automake make libtool libssl-dev

# wget http://mirrors.issp.co.th/apache/apr/apr-1.3.8.tar.gz
# tar xvzf apr-1.3.8.tar.gz
# cd apr-1.3.8
# ./configure && make && make install

# wget http://mirrors.issp.co.th/apache/apr/apr-util-1.3.9.tar.gz
# tar xvzf apr-util-1.3.9.tar.gz
# cd apr-util-1.3.9
# ./configure --with-apr=/usr/local/apr
# make && make install

# wget http://nchc.dl.sourceforge.net/sourceforge/expat/expat-2.0.1.tar.gz
# tar -xvzf expat-2.0.1.tar.gz
# cd expat-2.0.1
# ./configure && make && make install

serf
# wget http://serf.googlecode.com/files/serf-0.2.0.tar.bz2
# tar xjvf serf-0.2.0.tar.bz2
# cd serf-0.2.0
# ./configure \
--prefix=/usr/local/serf \
--with-apr=/usr/local/apr
# make && make install

พร้อมแล้วลง subversion ( หาเวอร์ชั่นล่าสุดเองนะ ตามลิงค์ )
# wget http://subversion.tigris.org/downloads/subversion-1.5.2.tar.gz
# tar -xvzf subversion-1.5.2.tar.gz
# cd subversion-1.5.2
# ./configure \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr \
--with-serf=/usr/local/serf

# make && make install

# vim /etc/init.d/svnserve


#! /bin/sh
# /etc/init.d/svnserve: start and stop svnserve

# Exit immediately if a command exits with a nonzero exit status.
set -e

# svnserve exists and is executable
test -x /usr/bin/svnserve || exit 0

# Directory Where the Repository is located, created with svnadmin create
# เปลียนเป็นพาร์ทที่จะไว้่เป็น พาร์ทในการอัพคอนเท็นทต่าง ๆ
REPOS_DIR="/home/svn"

# The pid-file
PIDFILE="/var/run/svnserve.pid"

case "$1" in
start)
echo -n "Starting Subversion (SVN) Server"
start-stop-daemon --start --quiet \
--exec /usr/bin/svnserve -- -d -r $REPOS_DIR
# Also tried the following line but it didn't work ok
# --make-pidfile --pidfile $PIDFILE
PID=`pidof svnserve` || true
echo $PID > $PIDFILE
echo "."
;;
stop)
echo -n "Stopping Subversion (SVN) Server"
start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE
if [ -f $PIDFILE ]
then
rm $PIDFILE
fi
echo "."
;;

*)
echo "Usage: /etc/init.d/svnserve {start|stop}"
exit 1
esac

exit 0



สร้าง Directory ที่เราระบุในไฟล์เซอร์วิส  โฟลเดอร์สำหรับอัพคอนเท็นท์
# mkdir /home/svn

ของ debian คนพาร์ทแก้สคริปด้านบน หรือทำ symbolic link เอา
# ln -s /usr/local/bin/svnserve /usr/bin/svnserve

แก้ไฟล์ /etc/ld.so.conf
# vi /etc/ld.so.conf
ใส่  include /usr/local/lib  เพิ่มไปแล้วรันคำสั่ง
# /sbin/ldconfig

# chmod +x /etc/init.d/svnserve
# update-rc.d svnserve defaults

start service
# /etc/init.d/svnserve start

วิธีสร้าง repo ใหม่
คือเข้าไปยังพาร์ทโฟลเดอร์ที่เราระบุไว้ในค่าคอนฟิก  (ที่นี้คือ /home/svn )
# cd /home/svn
# svnadmin create ..........( ชื่อที่ต้องการ ) ก็จะได้ destination ที่ต้องการ