จงหิวโหยและโง่เขลาตลอดเวลา
Thursday, June 18, 2009
วิธี upgrade fedora
ก็ update ง่ายเหมือน ubuntu เหมือนกันนะ แต่อันนี้ก็เอามาจาก howtoforge อีกที
1. เปลี่ยนตัวเองเป็น root
su root
แล้วก็ใส่ password ของ root เข้าไป
2. ก็ทำงาน update rpm package
yum update rpm
3. yum -y update
4. yum install preupgrade
5. preupgrade
แค่นี้ก็จะขึ้นหน้าต่างมาเราก็จะขึ้นหน้าต่างมา เราก็เลือก fedora11 แล้วก็กด next อะแหละ มันก็จะทำการ download package พอ download เสร็จก็ทำการ reboot แล้วมันก็จะ install ของมันเองก็ปล่อยมันไป แค่นั้นแหละ
เดี๋ยวนี้การ upgrade linux จาก รุ่นหนึ่งไปเป็นรุ่นหนึ่งนี้ง่ายจริงๆ
1. เปลี่ยนตัวเองเป็น root
su root
แล้วก็ใส่ password ของ root เข้าไป
2. ก็ทำงาน update rpm package
yum update rpm
3. yum -y update
4. yum install preupgrade
5. preupgrade
แค่นี้ก็จะขึ้นหน้าต่างมาเราก็จะขึ้นหน้าต่างมา เราก็เลือก fedora11 แล้วก็กด next อะแหละ มันก็จะทำการ download package พอ download เสร็จก็ทำการ reboot แล้วมันก็จะ install ของมันเองก็ปล่อยมันไป แค่นั้นแหละ
เดี๋ยวนี้การ upgrade linux จาก รุ่นหนึ่งไปเป็นรุ่นหนึ่งนี้ง่ายจริงๆ
Monday, June 8, 2009
Virtual Hosting With Proftpd And MySQL (Incl. Quota) On Ubuntu 8.04 LTS ตอนที่หนึ่ง
ทำ web server เสร็จแล้ว ถ้าไม่มี ftp แล้วจะเอาไฟล์ไปวางยังไงกัน ก็ต้องทำ ftp server ด้วยสิ แต่ที่จริงแล้ว windows มันมี filezilla อยู่แล้ว แต่เห็นพี่ที่ทำงานบอกว่า มันจัดการ user ยากเลยเอา proftpd มาลงแทนใน fedora10 ที่เป็น vmware เอา
วิธีการ set ที่จริงมันก็มีอยู่ใน howtoforge แต่เป็นภาษาอังกฤษ หาภาษาไทยไม่ค่อยมีเลยจริงๆ พวกนี้ ก็เลยเอามาแปลแบบห้วนๆสะหน่อยละกัน
1. เปลี่ยนให้เราเป็น root สะก่อน
2. ลง mysql และ phpmyadmin
3. ลง proftpd mysql support
แล้วก็จะเจอคำถาม Run proftpd: ให้เลือก standalone
เสร็จแล้วทีนี้จะมาสร้าง group ให้กับ ftpuser กัน
4. สร้างฐานข้อมูลสำหรับเก็บข้อมูลต่างๆของ user และ group และ proftpd
เปลี่ยน คำว่า password เป็น password ของเรา
5. แก้ไข Proftpd
เปิดไฟล์ /etc/proftpd/proftpd.conf แล้วก็ปิด IPv6 โดย UseIPv6 เป็น off:
อันนี้ก็ปิด IPv6
เสร็จแล้วก็ เพิ่ม บรรรทัดพวกนี้ในไฟล์ proftpd.conf
อย่าลืมเปลี่ยนคำว่า password เป็น password ของเรานะครับ
เสร็จแล้วก็ restart proftpd
เหนื่อยเดี๋ยวมาต่อตอนสองละกัน
วิธีการ set ที่จริงมันก็มีอยู่ใน howtoforge แต่เป็นภาษาอังกฤษ หาภาษาไทยไม่ค่อยมีเลยจริงๆ พวกนี้ ก็เลยเอามาแปลแบบห้วนๆสะหน่อยละกัน
1. เปลี่ยนให้เราเป็น root สะก่อน
sudo su1.1 เปลี่ยน default shell
ln -sf /bin/bash /bin/sh1.2 ยกเลิกการใช้งาน AppArmor
/etc/init.d/apparmor stop
update-rc.d -f apparmor remove
2. ลง mysql และ phpmyadmin
apt-get install mysql-server mysql-client libmysqlclient15-dev phpmyadmin apache2
3. ลง proftpd mysql support
apt-get install proftpd-mysql
แล้วก็จะเจอคำถาม Run proftpd: ให้เลือก standalone
เสร็จแล้วทีนี้จะมาสร้าง group ให้กับ ftpuser กัน
groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser
4. สร้างฐานข้อมูลสำหรับเก็บข้อมูลต่างๆของ user และ group และ proftpd
mysql -u root -p
create database ftp;
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost' IDENTIFIED BY 'password';
GRANT SELECT, INSERT, UPDATE, DELETE ON ftp.* TO 'proftpd'@'localhost.localdomain' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
เปลี่ยน คำว่า password เป็น password ของเรา
USE ftp;
CREATE TABLE ftpgroup (
groupname varchar(16) NOT NULL default '',
gid smallint(6) NOT NULL default '5500',
members varchar(16) NOT NULL default '',
KEY groupname (groupname)
) TYPE=MyISAM COMMENT='ProFTP group table';
CREATE TABLE ftpquotalimits (
name varchar(30) default NULL,
quota_type enum('user','group','class','all') NOT NULL default 'user',
per_session enum('false','true') NOT NULL default 'false',
limit_type enum('soft','hard') NOT NULL default 'soft',
bytes_in_avail int(10) unsigned NOT NULL default '0',
bytes_out_avail int(10) unsigned NOT NULL default '0',
bytes_xfer_avail int(10) unsigned NOT NULL default '0',
files_in_avail int(10) unsigned NOT NULL default '0',
files_out_avail int(10) unsigned NOT NULL default '0',
files_xfer_avail int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;
CREATE TABLE ftpquotatallies (
name varchar(30) NOT NULL default '',
quota_type enum('user','group','class','all') NOT NULL default 'user',
bytes_in_used int(10) unsigned NOT NULL default '0',
bytes_out_used int(10) unsigned NOT NULL default '0',
bytes_xfer_used int(10) unsigned NOT NULL default '0',
files_in_used int(10) unsigned NOT NULL default '0',
files_out_used int(10) unsigned NOT NULL default '0',
files_xfer_used int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;
CREATE TABLE ftpuser (
id int(10) unsigned NOT NULL auto_increment,
userid varchar(32) NOT NULL default '',
passwd varchar(32) NOT NULL default '',
uid smallint(6) NOT NULL default '5500',
gid smallint(6) NOT NULL default '5500',
homedir varchar(255) NOT NULL default '',
shell varchar(16) NOT NULL default '/sbin/nologin',
count int(11) NOT NULL default '0',
accessed datetime NOT NULL default '0000-00-00 00:00:00',
modified datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (id),
UNIQUE KEY userid (userid)
) TYPE=MyISAM COMMENT='ProFTP user table';
quit;
5. แก้ไข Proftpd
เปิดไฟล์ /etc/proftpd/proftpd.conf แล้วก็ปิด IPv6 โดย UseIPv6 เป็น off:
vi /etc/proftpd/proftpd.conf
อันนี้ก็ปิด IPv6
[...]
UseIPv6 off
[...]
เสร็จแล้วก็ เพิ่ม บรรรทัดพวกนี้ในไฟล์ proftpd.conf
[...]
DefaultRoot ~
SQLBackend mysql
# The passwords in MySQL are encrypted using CRYPT
SQLAuthTypes Plaintext Crypt
SQLAuthenticate users groups
# used to connect to the database
# databasename@host database_user user_password
SQLConnectInfo ftp@localhost proftpd password
# Here we tell ProFTPd the names of the database columns in the "usertable"
# we want it to interact with. Match the names with those in the db
SQLUserInfo ftpuser userid passwd uid gid homedir shell
# Here we tell ProFTPd the names of the database columns in the "grouptable"
# we want it to interact with. Again the names match with those in the db
SQLGroupInfo ftpgroup groupname gid members
# set min UID and GID - otherwise these are 999 each
SQLMinID 500
# create a user's home directory on demand if it doesn't exist
CreateHome on
# Update count every time user logs in
SQLLog PASS updatecount
SQLNamedQuery updatecount UPDATE "count=count+1, accessed=now() WHERE userid='%u'" ftpuser
# Update modified everytime user uploads or deletes a file
SQLLog STOR,DELE modified
SQLNamedQuery modified UPDATE "modified=now() WHERE userid='%u'" ftpuser
# User quotas
# ===========
QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Mb
QuotaShowQuotas on
SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM ftpquotalimits WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used + %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" ftpquotatallies
SQLNamedQuery insert-quota-tally INSERT "%{0}, %{1}, %{2}, %{3}, %{4}, %{5}, %{6}, %{7}" ftpquotatallies
QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally
RootLogin off
RequireValidShell off
[...]
อย่าลืมเปลี่ยนคำว่า password เป็น password ของเรานะครับ
เสร็จแล้วก็ restart proftpd
/etc/init.d/proftpd restart
เหนื่อยเดี๋ยวมาต่อตอนสองละกัน
Wednesday, January 14, 2009
ข้อสำคัญของการติดอันดับ SEO ของ google
SEO คืออะไร ถ้าคนที่ทำเว็บแล้วอยากให้เว็บติดอันดับดีๆใน search engine ก็คงรู้จักดี พูดง่ายๆก็คือ seo คือการที่ทำให้เว็บที่เราทำนั้นติดอันดับดีๆใน search engine เวลาที่มีคนค้นหาเกี่ยวกับคำที่เราต้องการ
การทำ SEO นั้นมีหลายอย่างไมว่าจะเป็น การ แลกลิ้งค์กับเว็บอื่น การใส่ keyword ใน meta tag การใส่ description ใน meta tag บางคนอาจจะเคยค้นหาอะไรแล้วไม่เจอสิ่งที่ต้องการเพราะว่าเว็บนั้นเขา spam keyword เกินไป คือ เว็บไม่เกี่ยวข้องกับคำนั้นเลย แต่ก็ใส่ไปเพื่อเวลามีคนค้นหาจะได้เจอเว็บของเขา แต่เขาลืมสิ่งหนึ่งไปว่า คนเค้าเจอเค้าก็มาแค่ครั้งเดียวแึค่นั้นแหละ เหมือนกับเราไปกินอาหาร ร้านไหนไม่อร่อยเราก็ไปแค่ร้านเดียว ข้อสำคัญจริงๆของการทำ SEO แล้ว google ก็กล่าวเอาไว้ว่า "content is king" กล่าวคือ เนื้อหาคือพระราชา (ตามตัว) แต่ถ้าเอาความหมายจริงๆ ก็คือ เนื้อหาสำคัญที่สุด การเขียนเนื้อหาบ่อยๆ และ การใส่ keyword ที่เราต้องการลงไปในเนื้อหานั้นพอควร เพราะว่ามากไป google มันเกลียดเอา ใส่ลิ้งค์ลงไปในเนื้อหา ให้ความสำคัญกับ title หรือ หัวข้อของเนื้อหา แล้วก็ตกแต่งเว็บให้ดูง่ายอ่านง่าย อันนั้นผมว่าทำให้คนเข้ามาในเว็บเราแล้วเขาก็จะเข้ามาอีก ถ้าเขาเห็นว่าเนื้อหาเราสำคัญแล้วเขาพูดถึงเนื้อหาของเราแล้วเขาก็ใ่ส่ลิ้งค์ใส่ที่มาที่เชื่อมโยงมาถึงเรา ก็ทำให้เว็บเรามีผู้เยี่ยมชมมากขึ้นอีก ที่ผมกล่าวถึงนี้คือไม่ได้หมายความว่าไม่ให้ความสำคัญกับพวก description หรือ keyword ใน meta tag นะครับ ที่พูดถึงนี้คือการทำ seo ระยะยาว จริงอยู่ keyword ใน meta tag นั้นช่วยได้ แต่ก็แค่ระยะสั้น ที่กล่าวถึงเพราะว่าเดี๋ยวนี้มีคนทำ seo แบบระยะสั้นกันมาก เพราะอยากให้เว็บตัวเองดังเร็ว ไอ้ดังมันดังจริงครับ แต่ก็แค่แป๊ปเดียว เพราะ่ว่า google นั้นมันจะ deindex บ่อยๆ เพื่อการกันเว็บที่ทำ seo ประเำภทที่แบบว่าเล่นกับ keyword อย่างเดียว ยังไงอยากให้คนทำเว็บสมัยนี้ให้ความสำคัญกับเนื้อหามากๆหน่อยครับ เพราะว่ามัน "content is king"
SEO คือ
การทำ SEO
เดี๋ยวนี้มี SEM ด้วยนะ ส่วน sem คืออะไรนั้นก็ไปดูเอาเองเลยดีกว่า
SEM คือ
การทำ SEO นั้นมีหลายอย่างไมว่าจะเป็น การ แลกลิ้งค์กับเว็บอื่น การใส่ keyword ใน meta tag การใส่ description ใน meta tag บางคนอาจจะเคยค้นหาอะไรแล้วไม่เจอสิ่งที่ต้องการเพราะว่าเว็บนั้นเขา spam keyword เกินไป คือ เว็บไม่เกี่ยวข้องกับคำนั้นเลย แต่ก็ใส่ไปเพื่อเวลามีคนค้นหาจะได้เจอเว็บของเขา แต่เขาลืมสิ่งหนึ่งไปว่า คนเค้าเจอเค้าก็มาแค่ครั้งเดียวแึค่นั้นแหละ เหมือนกับเราไปกินอาหาร ร้านไหนไม่อร่อยเราก็ไปแค่ร้านเดียว ข้อสำคัญจริงๆของการทำ SEO แล้ว google ก็กล่าวเอาไว้ว่า "content is king" กล่าวคือ เนื้อหาคือพระราชา (ตามตัว) แต่ถ้าเอาความหมายจริงๆ ก็คือ เนื้อหาสำคัญที่สุด การเขียนเนื้อหาบ่อยๆ และ การใส่ keyword ที่เราต้องการลงไปในเนื้อหานั้นพอควร เพราะว่ามากไป google มันเกลียดเอา ใส่ลิ้งค์ลงไปในเนื้อหา ให้ความสำคัญกับ title หรือ หัวข้อของเนื้อหา แล้วก็ตกแต่งเว็บให้ดูง่ายอ่านง่าย อันนั้นผมว่าทำให้คนเข้ามาในเว็บเราแล้วเขาก็จะเข้ามาอีก ถ้าเขาเห็นว่าเนื้อหาเราสำคัญแล้วเขาพูดถึงเนื้อหาของเราแล้วเขาก็ใ่ส่ลิ้งค์ใส่ที่มาที่เชื่อมโยงมาถึงเรา ก็ทำให้เว็บเรามีผู้เยี่ยมชมมากขึ้นอีก ที่ผมกล่าวถึงนี้คือไม่ได้หมายความว่าไม่ให้ความสำคัญกับพวก description หรือ keyword ใน meta tag นะครับ ที่พูดถึงนี้คือการทำ seo ระยะยาว จริงอยู่ keyword ใน meta tag นั้นช่วยได้ แต่ก็แค่ระยะสั้น ที่กล่าวถึงเพราะว่าเดี๋ยวนี้มีคนทำ seo แบบระยะสั้นกันมาก เพราะอยากให้เว็บตัวเองดังเร็ว ไอ้ดังมันดังจริงครับ แต่ก็แค่แป๊ปเดียว เพราะ่ว่า google นั้นมันจะ deindex บ่อยๆ เพื่อการกันเว็บที่ทำ seo ประเำภทที่แบบว่าเล่นกับ keyword อย่างเดียว ยังไงอยากให้คนทำเว็บสมัยนี้ให้ความสำคัญกับเนื้อหามากๆหน่อยครับ เพราะว่ามัน "content is king"
SEO คือ
การทำ SEO
เดี๋ยวนี้มี SEM ด้วยนะ ส่วน sem คืออะไรนั้นก็ไปดูเอาเองเลยดีกว่า
SEM คือ
PHP template engines
วันนี้มี website ที่รวบรวมเกี่ยวกับ php template engines มาแนะนำ บางคนอาจจะยังสงสัยว่า php template engines คืออะไร
php template engines คือ ตัวแสดงผลนั้นเอง ก็ php จะทำงานบนฝั่ง server แล้วก็จะส่งผลกลับมาให้กับ browser ตัว browser ก็แสดงผล แต่เดี๋ยวนี้ก็มี php framework มากมาย ที่คอยจัดการตัวประมวลผลฝั่ง php ส่วนฝั่งของ browser ก็ไม่แพ้กันมีเยอะอยู่เหมือนกันแต่ที่เขานิยมใช้กัน(เห็นหลายคนพูดถึง)ก็คงจะเป็น smarty นั้นแหละ
ทำไมต้องมี php template ก็เพราะว่าจะได้แยกส่วนของการแสดงผล กับ การประมวลผลออกจากกัน เหมาะกับงานที่มีผู้พัฒนาแบ่งด้านกันอย่างชัดเจนระหว่าง design กับ programming คนออกแบบก็ออกแบบ website ไปส่วนคนเขียนโปรแกรมก็เขียนโปรแกรมไป ไม่ยุ่งเกี่ยวกัน ทำให้ย่นเวลาการพัฒนาไปได้เยอะ เพราะว่าเดี๋ยวนี้เวลาในการพัฒนากลายเป็็นขอบเขตในการพัฒนา application ไปแล้่ว มันจึงเกิดพวกนี้ขึ้นมายังไงละ พวก php framework , php template , javascript framework , etc. ต่างๆนาๆกันไป เพราะพวกนี้ช่วยได้ย่นเวลาได้มากเลย แต่ถ้าคนเพิ่งเริ่มหัดเขียนโปรแกรม ผมแนะนำ อย่าเพิ่งหัดใช้ framework หัดเขียนโปรแกรมธรรมดาไปก่อน เพราะว่าจะได้รู้่จัดพวก function การทำงานต่างๆของภาษา โครงสร้างภาษา (คงไม่มีใครมาจับ framework เลยมั้ง) แต่ถ้าเราคิดว่าเราเก่งระดับหนึ่งแล้วก็ลอง จับ framework สักตัว เอ้าออกนอกลู่นอกทางไปเยอะละ ไปดูกันเลยดีกว่า php template engines
19 Promising PHP Template Engines
php template engines คือ ตัวแสดงผลนั้นเอง ก็ php จะทำงานบนฝั่ง server แล้วก็จะส่งผลกลับมาให้กับ browser ตัว browser ก็แสดงผล แต่เดี๋ยวนี้ก็มี php framework มากมาย ที่คอยจัดการตัวประมวลผลฝั่ง php ส่วนฝั่งของ browser ก็ไม่แพ้กันมีเยอะอยู่เหมือนกันแต่ที่เขานิยมใช้กัน(เห็นหลายคนพูดถึง)ก็คงจะเป็น smarty นั้นแหละ
ทำไมต้องมี php template ก็เพราะว่าจะได้แยกส่วนของการแสดงผล กับ การประมวลผลออกจากกัน เหมาะกับงานที่มีผู้พัฒนาแบ่งด้านกันอย่างชัดเจนระหว่าง design กับ programming คนออกแบบก็ออกแบบ website ไปส่วนคนเขียนโปรแกรมก็เขียนโปรแกรมไป ไม่ยุ่งเกี่ยวกัน ทำให้ย่นเวลาการพัฒนาไปได้เยอะ เพราะว่าเดี๋ยวนี้เวลาในการพัฒนากลายเป็็นขอบเขตในการพัฒนา application ไปแล้่ว มันจึงเกิดพวกนี้ขึ้นมายังไงละ พวก php framework , php template , javascript framework , etc. ต่างๆนาๆกันไป เพราะพวกนี้ช่วยได้ย่นเวลาได้มากเลย แต่ถ้าคนเพิ่งเริ่มหัดเขียนโปรแกรม ผมแนะนำ อย่าเพิ่งหัดใช้ framework หัดเขียนโปรแกรมธรรมดาไปก่อน เพราะว่าจะได้รู้่จัดพวก function การทำงานต่างๆของภาษา โครงสร้างภาษา (คงไม่มีใครมาจับ framework เลยมั้ง) แต่ถ้าเราคิดว่าเราเก่งระดับหนึ่งแล้วก็ลอง จับ framework สักตัว เอ้าออกนอกลู่นอกทางไปเยอะละ ไปดูกันเลยดีกว่า php template engines
19 Promising PHP Template Engines
Subscribe to:
Posts (Atom)
