แก้ไขการจำกัดขนาดการ upload แฟ้มเข้า iis7

iis manager
iis manager

ใช้ script ภาษา asp upload แฟ้มเข้า iis7 server
พบว่าขนาดแฟ้มจำกัดไม่เกิน 200000Bytes
ต้องแก้ไข AspMaxRequestEntityAllowed ก็พบว่าใน
IIS7 เข้าไปที่ iis manager แล้วคลิ๊ก asp
หาใน Limits Properties
พบ Maximum Requesting Entity Body Limit
ผมแก้จาก 200000 เป็น 2000000
ทำให้สามารถส่งแฟ้มขนาด 3 แสนเข้าไปได้ครับ

แต่ก่อนอื่นต้องแก้ permission ของ wwwroot
ให้ user ต่าง ๆ เข้าไป write ได้ โดยแก้ไขใน security ของ folder
http://www.thaiall.com/perlphpasp/source.pl?9123


สำหรับ iis6

metabase writeable
metabase writeable

ดูภาพตามลิงค์นี้ http://www.scriptinstallation.in/uploading_large_files_iis.html
แล้วเปิด c:\Windows\System32\Inetsrv\Metabase.xml
จาก AspMaxRequestEntityAllowed=”204800″
เป็น AspMaxRequestEntityAllowed=”4096000″


สำหรับ iis5.1
http://stackoverflow.com/questions/1792386/uploading-in-asp-to-iis-5-1

ใช้อาร์เรย์เก็บข้อมูล เพื่อตอบตาม index

function to create array
function to create array

อ่านแฟ้มแบบตัวอักษรมาเก็บในอาร์เรย์ เพื่อใช้ตอบการร้องขอข้อมูลตาม index

กรณีแรก ..
ในทางทฤษฎีเราใช้ระบบฐานข้อมูลสำหรับเก็บข้อมูล และใช้คำสั่ง SQL ที่เรียกว่า query ด้วยคำสั่ง select ถามหาข้อมูลที่ต้องการ ซึ่งมีประสิทธิภาพทำงานได้อย่างรวดเร็ว สมเป็นมืออาชีพ แต่ในทางปฏิบัติอาจไม่เป็นเช่นนั้นเสมอไป
เช่น กองฉลากเคยเก็บข้อมูลในระบบฐานข้อมูล ชาวไทยต้องการตรวจผลรางวัลก็กรอกข้อมูลแล้วระบบก็ส่ง query เข้าไปสอบถามจากเครื่องบริการ เป็นเช่นนี้อยู่ระยะหนึ่ง ต่อมาเห็น sanook.com ให้บริการตรวจฉลากกินแบ่ง โดยนำข้อมูลตัวเลขมาเก็บในแฟ้ม html แล้วใช้ javascript เป็นตัวตอบคำถาม ภาระในการสืบค้นการถูกรางวัลกลายเป็นของ script + browser ฝั่งผู้ใช้ ที่ทำงานได้รวดเร็วที่สุดในโลก
ปัจจุบันกองฉลากก็ใช้เทคนิค javascript ทำให้ตรวจฉลากหลายสิบใบได้เร็วมาก เพราะทั้งหมดแทบจะทำงานที่ฝั่งผู้ใช้ ยกเว้นการเปิดเว็บไซต์ในครั้งแรก เพื่อร้องขอการดาวน์โหลดข้อมูลมาไว้ในเครื่องผู้ใช้ที่เกิดขึ้นในครั้งแรก

กรณีที่สอง ..
ข้อมูลปริมาณมาก ย่อมต้องใช้ระบบฐานข้อมูล เพราะมีระบบบริหารจัดการ และค้นคืนได้อย่างมีประสิทธิภาพ แต่ถ้ามีข้อมูลไม่กี่สิบระเบียน ก็ไม่จำเป็นต้องใช้งานระบบฐานข้อมูล เพราะระบบฐานข้อมูลนั้นจำเป็นต้องมีโปรแกรมทำงานที่หลากหลาย แต่ถ้าเก็บข้อมูลในอาร์เรย์ หรือเก็บใน text file แล้วอ่านมาไว้ในอาร์เรย์ ก็จะทำให้เรียกใช้ข้อมูลได้ง่าย และเร็ว เหมือนการทำงานของ cache หรือ ram หรือ harddisk ที่ทำงานได้เร็วกว่า external harddisk สำหรับตัวอย่างนี้ มีข้อมูลใน text file แล้วอ่านมาเก็บใน array โดยกำหนด index ให้แต่ละสมาชิก เมื่อต้องการข้อมูลก็เรียกสมาชิกตาม index ได้ทันที ซึ่งประมวลผลได้เร็ว และไม่เป็นภาระกับระบบฐานข้อมูล โดยฟังก์ชันเขียนให้รองรับการคืนค่าของสมาชิก เช่น ชื่อ-สกุล หรือ ชื่อ-ชื่อกลาง-สกุล หรือ ชื่ออย่างเดียว เมื่อส่งรหัสเข้าไปเรียกจากอาร์เรย์

Source code
$ar_advisor = array();
$ar_advisor = create_ar_advisor(“advisor”,”0″,”1-2″);
echo $ar_advisor[“5601”];
function create_ar_advisor($filename,$f_key,$f_val) {
$ar = array();
$fileaddr = “/data/”. $filename . “.csv”;
$fn = file($fileaddr);
$get_k = split(“-“,”$f_key”);
$get_v = split(“-“,”$f_val”);
foreach($fn as $v) {
$r = split(“\t”,”$v”);
$rk = “”; $rv = “”;
foreach($get_k as $kv) $rk .= $r[intval($kv,10)];
foreach($get_v as $vv) $rv .= $r[intval($vv,10)].” “;
$ar[$rk] = $rv;
}
return $ar;
}

ระบบรับข้อมูลหนึ่ง ถูก แ+ฮ+ก ด้วย script

process of solution
process of solution

วันนี้ได้รับแจ้งว่าระบบเก่า ถูก post h-a-c-k_e-d
จึงเข้าไปแกะ script แบบค่อย ๆ ไล่ไปทีละแฟ้ม
เพราะเขียนไว้นาน และหลายคน จำอะไรไม่ได้เลย

1. ดู source ซึ่งเป็นผลลัพธ์ พบว่า
script ไม่ได้เสียหาย แต่มีการ post script เข้ามาเป็นข้อมูล

2. ในข้อมูลมี script จริง แสดงว่าไม่มีการ convert ข้อมูลก่อน insert

3. เข้าไปดูระบบรับข้อมูลพบว่าติด captcha แต่เป็น plain text แบบง่าย
แสดงว่า script ที่เข้ามาในระบบเป็นขั้นเทพ ถึงแกะ captcha ออกได้

4. เพิ่มการป้องกันใน form รับข้อมูล
โดยกำหนดเงื่อนไขว่า form ต้องถูกเรียกจาก script ที่กำหนด
ถ้าเรียกจากที่ไหน ๆ ก็จะไม่เปิดฟอร์ม

5. อันที่จริงควรเปลี่ยนข้อมูลด้วย stripslashes เข้าฐานข้อมูล
เพื่อล้าง script แต่นั่นเป็นการแก้ปลายเหตุ
จึงแก้ต้นเหตุ คือ ไม่ให้ข้อมูลเข้า จากขั้นตอนที่ 4
หรือเพิ่มการตรวจสอบก่อน insert ซึ่งมีอีกหลายวิธี

เปลี่ยนรุ่นของ PHP จาก 4 เป็น 5 แล้ว script ใช้งานไม่ได้

เล่าสู่กันฟัง เรื่องปัญหาการปรับเปลี่ยนรุ่นของ server

URL กับ REQUEST_URIURL กับ REQUEST_URI
URL กับ REQUEST_URI

เนื่องจาก script ที่ใช้เคย สามารถใช้งานได้ปกติ
แต่เกิดปัญหาหลัง upgrade server
ที่ต้องใช้ PHP version ใหม่ ก็พบว่า script เดิมใช้งานไม่ได้
ตรวจดูก็พบว่าค่าของระบบ _SERVER ที่เคยส่งให้กับ script ภาษา PHP
ไม่ยอมส่งค่าให้ตามปกติ คือ ไม่ส่งอะไรคืนมาเลย
ต้องแก้ไขโดยกำหนดการรับค่าจากระบบ เป็นค่าใหม่

เดิมรับค่า “URL” ก็ต้องเปลี่ยนเป็นรับค่า “REQUEST_URI”

ซึ่งเหตุการแบบนี้เกิดขึ้นได้ในปัจจุบัน และเกิดขึ้นอีกอย่างแน่นอนในอนาคต
เมื่อต้องมีการ upgrade server ในปีต่อ ๆ ไป

ส่วนแลกเปลี่ยนความคิดเห็นของกรุงเทพธุรกิจ

bangkokbiznews comment
bangkokbiznews comment

http://bit.ly/17oaJI9

มองระบบการแสดงความคิดเห็นของเว็บไซต์กรุงเทพธุรกิจ bangkokbiznews.com
ซึ่งปกติผมเข้าไปอ่านทัศนะวิจารณ์ของ blogger หลาย ๆ ท่านอยู่เป็นประจำ
แล้วเคยแสดงความคิดเห็นต่อท้ายบทความเหล่านั้น โดยใช้ account ของ facebook.com
ก็สามารถแสดงความคิดเห็นได้

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

1. เนื้อหา หรือบันทึกที่เขียนโดย blogger
2. ส่วนแลกเปลี่ยนความคิดเห็น โดยใช้บัญชีของกรุงเทพธุรกิจ
3. ส่วนแลกเปลี่ยนความคิดเห็น โดยใช้บัญชีของเฟซบุ๊ค

ซึ่งส่วนที่ 2 และ 3 แยกกันชัดเจน หากจะร่วมแลกเปลี่ยนให้สัมพันธ์กันก็ต้องเข้าไปให้ตรงส่วน

สรุปว่า .. วันนี้ก็ต้องสมัครสมาชิก เพื่อเข้าร่วมกิจกรรมกับกรุงเทพธุรกิจ
ให้ครบทั้ง 2 ส่วน .. เล่าสู่กันฟัง

ผลจัดอันดับ 100 เว็บไซต์ที่ชาวไทยเข้ามากที่สุด

thailand ranking in alexa.com
thailand ranking in alexa.com

7 เม.ย.56 ผลจัดอันดับ 100 เว็บไซต์ที่ชาวไทยเข้ามากที่สุด

http://www.alexa.com/topsites/countries;3/TH

The top 100 sites in thailand on the web by alexa.com
1 facebook.com
2 google.co.th
3 google.com
4 youtube.com
5 blogspot.com
6 yahoo.com
7 live.com
8 sanook.com
9 wikipedia.org
10 pantip.com
11 amazon.com
12 kapook.com
13 wordpress.com
14 mthai.com
15 manager.co.th
16 thaiseoboard.com
17 linkedin.com
18 msn.com
19 thaivisa.com
20 twitter.com
21 googleusercontent.com
22 weloveshopping.com
23 webgame.in.th
24 paypal.com
25 yengo.com
26 dek-d.com
27 microsoft.com
28 dealfish.co.th
29 ebay.com
30 pinterest.com
31 blogger.com
32 bing.com
33 ohozaa.com
34 hao123.com
35 google.co.uk
36 kasikornbank.com
37 bbc.co.uk
38 adf.ly
39 tumblr.com
40 bloggang.com
41 bangkokbank.com
42 4shared.com
43 settrade.com
44 instagram.com
45 thairath.co.th
46 thepiratebay.se
47 soccersuck.com
48 pantipmarket.com
49 siamsport.co.th
50 vk.com
51 imdb.com
52 truelife.com
53 mediafire.com
54 godaddy.com
55 scbeasy.com
56 apple.com
57 agoda.com
58 alibaba.com
59 bangkokpost.com
60 tarad.com
61 stackoverflow.com
62 avg.com
63 yandex.ru
64 xhamster.com *
65 statcounter.com
66 teenee.com
67 wordpress.org
68 flickr.com
69 tripadvisor.com
70 lazada.co.th
71ddproperty.com
72 kasikornbankgroup.com
73 xvideos.com *
74 google.de
75 postjung.com
76 bp.blogspot.com
77 trueinternet.co.th
78 set.or.th
79 airasia.com
80 ask.com
81 google.fr
82 matichon.co.th
83 postto.me
84 conduit.com
85 dailymotion.com
86 overclockzone.com
87 babylon.com
88 rd.go.th
89 exteen.com
90 ihere.org
91 booking.com
92 truehits.net
93 imgur.com
94 thailandpost.com
95 thailandtorrent.com
96 siambit.org
97 histats.com
98 oknation.net
99 xnxx.com
100 t.co

ผลจัดอันดับ 100 เว็บไซต์ที่ชาวโลกเข้ามากที่สุด

global ranking in alexa.com
global ranking in alexa.com

7 เม.ย.56 ผลจัดอันดับ 100 เว็บไซต์ที่ชาวโลกเข้ามากที่สุด โดย alexa.com

http://www.alexa.com/topsites/global

The top 100 sites on the web by alexa.com
1 google.com
2 facebook.com
3 youtube.com
4 yahoo.com
5 baidu.com
6 wikipedia.org
7 live.com
8 qq.com
9 amazon.com
10 taobao.com
11 twitter.com
12 blogspot.com
13 linkedin.com
14 google.co.in
15 yahoo.co.jp
16 bing.com
17 sina.com.cn
18 yandex.ru
19 msn.com
20 ebay.com
21 wordpress.com
22 google.com.hk
23 google.co.jp
24 vk.com
25 google.de
26 163.com
27 google.co.uk
28 weibo.com
29 google.fr
30 microsoft.com
31 mail.ru
32 tumblr.com
33 googleusercontent.com
34 pinterest.com
35 google.com.br
36 fc2.com
37 xvideos.com
38 ask.com
39 hao123.com
40 google.ru
41 conduit.com
42 paypal.com
43 amazon.co.jp
44 craigslist.org
45 google.it
46 xhamster.com *
47 google.es
48 babylon.com
49 tmall.com
50 apple.com
51 imdb.com
52 blogger.com
53 sohu.com
54 mywebsearch.com
55 avg.com
56 bbc.co.uk
57 odnoklassniki.ru
58 soso.com
59 google.com.mx
60 amazon.de
61 instagram.com
62 google.ca
63 go.com
64 pornhub.com *
65 ifeng.com
66 aol.com
67 delta-search.com
68 alibaba.com
69 youku.com
70 stackoverflow.com
71 adcash.com
72 360.cn
73 bp.blogspot.com
74 blogspot.in
75 adobe.com
76 thepiratebay.se
77 adf.ly
78 t.co
79 redtube.com *
80 flickr.com
81 about.com
82 rakuten.co.jp
83 cnn.com
84 ebay.de
85 alipay.com
86 neobux.com
87 google.com.au
88 sogou.com
89 livedoor.com
90 imgur.com
91 amazon.co.uk
92 google.com.tr
93 google.pl
94 dailymotion.com
95 huffingtonpost.com
96 uol.com.br
97 netflix.com
98 xnxx.com *
99 livejasmin.com *
100 youporn.com *

บทเรียนกับ stored procedure บน mysql

stored procedure
stored procedure

บทเรียนกับ stored procedure บน mysql
1. ทดสอบกับ MySQL server
version 5.5.16 ใน thaiabc.com 8.0
2. เดิม start mysql ด้วย DOS>mysqld.exe –console
แต่พบปัญหาขณะ call procedure ว่า
ERROR 1436 (HY000): Thread stack overrun:  6892 bytes used of a 131072 byte stack, and 128000 bytes needed.  Use ‘mysqld –thread_stack=#’ to specify a bigger stack.
3. แก้ไขโดย start mysql ด้วย DOS>mysqld.exe –console –thread_stack=999999

4. สร้าง procedure
use test;
delimiter //
create procedure x01()
begin
select * from student;
end//
delimiter ;
grant execute on procedure test.x01 to ”@’localhost’;
call x01();

5. สร้าง function
create function addhead(s char(20))
returns char(50) deterministic
return concat(‘- ‘,s,’!’);
select addhead(sname) from student;

6. คำสั่งที่น่าสนใจ
show create procedure xxx;
drop procedure xxx;
show procedure status;
show function status;
help show;
show procedure status where Db = DATABASE() and type = ‘PROCEDURE’;
select * from mysql.proc;
select * from information_schema.routines;

7. web guides
http://devzonedd.designweb2you.com/viewthread.php?tid=82 ***
http://code.function.in.th/sqlserver/stored-procedure ***
http://www.mssqltips.com/sqlservertutorial/160/sql-server-stored-procedure/
http://msdn.microsoft.com/en-us/library/aa174792(v=sql.80).aspx
http://www.mysqltutorial.org/getting-started-with-mysql-stored-procedures.aspx
http://dev.mysql.com/doc/refman/5.1/en/stored-routines.html
http://php.net/manual/en/mysqli.quickstart.stored-procedures.php

การติดตั้ง ob page numbers

ob page numbers
ob page numbers
สำหรับการติดตั้ง plug-in ให้มีเลขหน้าใน wordpress
ของ ob page numbers ก็ไม่ซับซ้อน
หลังติดตั้งแล้ว ก็นำ code ไปใส่ใน 3 หน้า แทนจุด previous และ next เดิม
ดังภาพ

sharethis.com within wordpress script

sharethis within blog
sharethis within blog

การใช้บริการ share button ของ sharethis.com ซึ่งใช้ login account ของ facebook.com เพื่อนำบริการไปฝังเข้า (embedded) blog ที่ใช้ wordpress script
ซึ่งได้ code ของ sharethis ที่ได้มา ได้จากการคลิ๊ก other ShareThis Widgets, Website, Sharing buttons, Finish get the code, Multi Post

ใน wordpress script
– แก้ไข header.php
– แก้ไข footer.php

statistic in sharethis.com
statistic in sharethis.com

http://support.sharethis.com/customer/portal/articles/517333-analytics-faqs