30 April 2011
GET/POST Method in Perl
module สำหรับ ใช้ get กับ post แยก subroutine กันนะครับ
DataParam.pm
package DataParam;
sub new
{
my $class = shift;
my $self = {};
bless($self,$class);
return $self;
}
sub GetParam
{
my $self = shift;
my $params = $ENV{'QUERY_STRING'};
my $data = {};
foreach (split(/&/,$params))
{
my ($key,$value) = split(/=/,$_);
#### บรรทัดล่างเอาไว้แปลงค่าอักษรที่เป็น % นำหน้า
$value =~ s/%(..)/chr(hex($1))/ge;
$data->{$key} = $value;
}
return $data;
}
sub PostParam
{
my $self = shift;
my $params;
read(STDIN,$params,$ENV{'CONTENT_LENGTH'});
my $data = {};
foreach (split(/&/,$params))
{
my ($key,$value) = split(/=/,$_);
#### บรรทัดล่างเอาไว้แปลงค่าอักษรที่เป็น % นำหน้า
$value =~ s/%(..)/chr(hex($1))/ge;
$data->{$key} = $value;
}
return $data;
}
1;
วิธีการใช้งาน
index.pl
#!c:\perl\bin\perl.exe
use strict;
use CGI;
use DataParam;
my $param = DataParam->new();
my $GET = $param->GetParam();
my $POST = $param->PostParam();
my $cgi = CGI->new();
print $cgi->header("text/html");
################## xxx กับ yyy คือชื่อตัวแปรที่ส่งมาครับ
print $POST->{'xxx'};
print $GET->{'yyy'};
29 April 2011
create Perl Module
perl module จะมีนามสกลุเป็น .pm โดยด้านบนต้องระบบ package เอาไว้
Test.pm
package Test;
sub new{
$class = shift;
$self = {};
bless($self,$class);
return $self;
}
sub TestFunction{
my $self = shift;
return "hello my module";
}
new subroutine นั้นเป็นคอนสตัคเตอ ของโมดูลต้องประกาศไว้ด้วย
ต่อจากคอนสตัคเตอร์ก็เป็นฟังก์ชันของเรา เวลาเรียกใช้งานก็ใช้ use ตามปกติ
myfile.pl
#!c:\perl\bin\perl.exe
use Test;
print "content-type:text/html\n\n";
$data = Test->new();
print $data->TestFunction();
Regular expression
$result = "is somthing";
if($result =~ /something/){
print "result มีข้อความ something\n";
}
ดู regular expression เพิ่มเติม http://www.troubleshooters.com/codecorn/littperl/perlreg.htm
Logical Operator
&& ถ้าหากด้านซ้ายเป็นจริงจะทำงานด้านขวา
|| ถ้าด้านซ้ายเป็นเท็จจะทำงานด้านขวา
// ถ้าด้านซ้ายไม่ได้กำหนดค่าทำด้านขวา
ตัวอย่าง
$x = 0;
$y = $x && 5;
$y จะมีค่าเท่ากับ 0
$x = 1;
$y = $x && 5;
$y จะมีค่าเท่ากับ 5
$x = 0;
$y = $x || 5;
$y จะมีค่าเท่ากับ 5
$x = 20;
$y = $x || 5;
$y จะมีค่าเท่ากับ 20
$y = $x // 5;
$y จะมีค่าเท่ากับ 5
String Operator
การเชิื่อม string กับ ตัวแปร
print repeat
print "string".$x."=".$y."\n";
print repeat
print "-" x 20;ผลลัพธ์จะได้ - ต่อกัน 20 อัน
Syntax Condition Test
Test Condition,Excute Code
Defind code,Test Condition,Excute
Excute code,Test Condition,Excute Code
if($x >= 0){
print "x is positive number\n";
}
Defind code,Test Condition,Excute
print "x is positive number\n" if($x >= 0);
Excute code,Test Condition,Excute Code
($x >= 0) && print "x is positive number\n";
28 April 2011
hash variable
ตัวแปร hash ใน perl จะขึ้นต้นด้วย % ซึ่งสามารถกำหนดค่าโดย
%hash = (key1,value1,key2,value2,.....);
%hash = (key1 => value1,key2 => value2,...);
การแสดงค่าของ hash
$hash{key};
แสดงเฉพาะ key ที่อยู่ใน hash
@allKey = keys %hash;
แสดงเฉพาะ value ที่อยู่ใน hash
@allValue = values %hash;
loop hash
while(keys %hash){
print $_."=".$hash{$_};
}
for(values %hash){
print $_;
}
%hash = (key1,value1,key2,value2,.....);
%hash = (key1 => value1,key2 => value2,...);
การแสดงค่าของ hash
$hash{key};
แสดงเฉพาะ key ที่อยู่ใน hash
@allKey = keys %hash;
แสดงเฉพาะ value ที่อยู่ใน hash
@allValue = values %hash;
loop hash
while(keys %hash){
print $_."=".$hash{$_};
}
for(values %hash){
print $_;
}
array in perl
array ใน perl จะใช้เครื่องหมาย @ นำหน้าตัวแปร
@array = (value1,value2,value3,...);
โดยสามารถแสดงค่าของแต่ละ index โดยใช้
$array[number]; # number หมายถึงตัวเลขของ index เริ่มจาก 0
function ที่ใช้กับอาเรย์
push(@array,value); #เพิ่มข้อมูลเข้าไปยังท้ายสุดของอาเรย์
pop(@array); #ลบข้อมูลท้ายสุดของอาเรย์
unshift(@array,value); #เพิ่มข้อมูลไปที่ index 0
shift(@array); #ลบข้อมูลที่ index 0
delete($array[index]);
การนับจำนวนของ array
scalar(@array);
$#array+1; #เป็นการหาค่า index ตัวสุดท้ายของ อาเรย์ ถ้านำมาบวก 1 คือจำนวนอาเรย์ทั้งหมด
foreach ของ array
foreach(@array){
print $_;
}
foreach(0..$#array){
print $array[$_];
}
@array = (value1,value2,value3,...);
โดยสามารถแสดงค่าของแต่ละ index โดยใช้
$array[number]; # number หมายถึงตัวเลขของ index เริ่มจาก 0
function ที่ใช้กับอาเรย์
push(@array,value); #เพิ่มข้อมูลเข้าไปยังท้ายสุดของอาเรย์
pop(@array); #ลบข้อมูลท้ายสุดของอาเรย์
unshift(@array,value); #เพิ่มข้อมูลไปที่ index 0
shift(@array); #ลบข้อมูลที่ index 0
delete($array[index]);
การนับจำนวนของ array
scalar(@array);
$#array+1; #เป็นการหาค่า index ตัวสุดท้ายของ อาเรย์ ถ้านำมาบวก 1 คือจำนวนอาเรย์ทั้งหมด
foreach ของ array
foreach(@array){
print $_;
}
foreach(0..$#array){
print $array[$_];
}
แสดงค่าตำแหน่งของข้อมูลที่เก็บบน memory
#!c:\perl\bin\perl.exe
use strict;
use CGI;
my $cgi = CGI->new;
print $cgi->header("text/html");
my $data = "myData";
my $ref = \$data; #$ref จะเก็บค่าตำแหน่งของ $data
print $ref."<br>"; # แสดงค่าตำแหน่ง
print $$ref."<br>"; #ใช้ค่าของตำแหน่งแสดงข้อมูลที่ตำแหน่งนั้น
print ${$ref}; #แสดงข้อมูลที่ตำแหน่งนั้น
use strict;
use CGI;
my $cgi = CGI->new;
print $cgi->header("text/html");
my $data = "myData";
my $ref = \$data; #$ref จะเก็บค่าตำแหน่งของ $data
print $ref."<br>"; # แสดงค่าตำแหน่ง
print $$ref."<br>"; #ใช้ค่าของตำแหน่งแสดงข้อมูลที่ตำแหน่งนั้น
print ${$ref}; #แสดงข้อมูลที่ตำแหน่งนั้น
declare scalar variable
ประกาศแบบไม่กำหนดค่าเริ่มต้นให้
my $scalar;
ประกาศแบบกำหนดค่าเริ่มต้นให้
my $scalar = value;
ประกาศแบบหลายตัวแปร
my($scalar1,$scalar2,.....) = (value1,value2,....);
my $scalar;
ประกาศแบบกำหนดค่าเริ่มต้นให้
my $scalar = value;
ประกาศแบบหลายตัวแปร
my($scalar1,$scalar2,.....) = (value1,value2,....);
27 April 2011
use strict in perl
strict module เป็นตัวที่คอยช่วยตรวจสอบการเขียนโค๊ดของเราว่าถูกต้องตามหลักหรือไม่
#!c:\perl\bin\perl.exe
use strict;
use CGI;
my $cgi = CGI->new;
print $cgi->header("text/html");
$ref = \$foo;
print $$ref; #ถ้าใส่ use strict จะแสดง error แต่ถ้าไม่ใช่จะเป็นหน้าเปล่า
$ref = "foo";
print $$ref; #ถ้าใส่ use strict จะแสดง error แต่ถ้าไม่ใช่จะเป็นหน้าเปล่า
$file = "STDOUT";
print $file "Hi!"; #ถ้าใส่ use strict จะแสดง error แต่ถ้าไม่ใช่จะแสดงคำว่า Hi! อย่างเดียว (ผิดเนื่องจากไม่ใส่ . เชื่อม)
#!c:\perl\bin\perl.exe
use strict;
use CGI;
my $cgi = CGI->new;
print $cgi->header("text/html");
$ref = \$foo;
print $$ref; #ถ้าใส่ use strict จะแสดง error แต่ถ้าไม่ใช่จะเป็นหน้าเปล่า
$ref = "foo";
print $$ref; #ถ้าใส่ use strict จะแสดง error แต่ถ้าไม่ใช่จะเป็นหน้าเปล่า
$file = "STDOUT";
print $file "Hi!"; #ถ้าใส่ use strict จะแสดง error แต่ถ้าไม่ใช่จะแสดงคำว่า Hi! อย่างเดียว (ผิดเนื่องจากไม่ใส่ . เชื่อม)
perl auto-flush
การทำ auto-flush ใน perl ทำได้โดยการเซ็ตค่า $| เป็นหนึ่งซึ่งโดยปกติแล้วค่านี้จะมีค่าเป็น 0
#!c:\perl\bin\perl.exe
use CGI;
my $cgi = CGI->new;
print $cgi->header('text/html');
$|=1;
for ( 1..5 ) {
print "Value is $_";
sleep 1;
}
เมื่อทำการรัน จะเห็นข้อความขึ้นมาหนึ่งบรรทัดแล้วหยุดไปหนึ่งวิแล้วก็ค่อยมีบรรทัดใหม่ขึ้นมา
#!c:\perl\bin\perl.exe
use CGI;
my $cgi = CGI->new;
print $cgi->header('text/html');
$|=1;
for ( 1..5 ) {
print "Value is $_";
sleep 1;
}
เมื่อทำการรัน จะเห็นข้อความขึ้นมาหนึ่งบรรทัดแล้วหยุดไปหนึ่งวิแล้วก็ค่อยมีบรรทัดใหม่ขึ้นมา
print ใน perl
#!c:\perl\bin\perl.exe
print "content-type:text/html\n\n";
#print ค่าของตัวแปร
print "Server $ENV{'SERVER_NAME'}\n\n";
#print ตัวอักษรด้วย (')
print 'We are running Perl version:';
print $^V."\n\n";
#print multiline
print <
The perl binary : $^X
The perl script : $0
EOF
print "content-type:text/html\n\n";
#print ค่าของตัวแปร
print "Server $ENV{'SERVER_NAME'}\n\n";
#print ตัวอักษรด้วย (')
print 'We are running Perl version:';
print $^V."\n\n";
#print multiline
print <
The perl script : $0
EOF
passing parametor to subroutines
การส่งค่า parametor ใน perl
รับเข้ามาเป็น array ใช้ @_
รับค่าแต่ละตัวตามลำดับ $_[1],$_[2],.....
รับเข้ามาเป็น array ใช้ @_
รับค่าแต่ละตัวตามลำดับ $_[1],$_[2],.....
การใช้ quote ใน perl
double qoute (") ค่าที่อยู่ใน doble qoute ถ้าเป็นตัวแปรจะแสดงค่าของตัวแปรนั้นออกมา ถ้าเป็นตัวอักษรพิเศษก็จะแสดงตัวอักษรพิเศษออกมา
single qoute (') ค่าที่อยู่ใน single qoute จะแสดงตามที่อยู่ข้างในทั้งหมด
black qoute (`) ค่าที่อยู่ในนี้คือคำสั่ง shell หรือ dos โดยจะ return ค่าผลลัพธ์ที่ได้ สามารถใช้ตัวแปรมารับค่าได้
#!c:\perl\bin\perl
print "content-type:text/html \n\n";
print "Hello World\n"; #จะได้ Hello World
print 'Hello World\n'; #จะได้ Hello World\n
print `date`; #จะได้ The current date is: Wed 04/27/2011 Enter the new date: (mm-dd-yy)
ผลลัพธ์ใน browser
Hello World Hello World\nThe current date is: Wed 04/27/2011 Enter the new date: (mm-dd-yy)
ผลลัพธ์ใน view->source
Hello World
Hello World\nThe current date is: Wed 04/27/2011
Enter the new date: (mm-dd-yy)
single qoute (') ค่าที่อยู่ใน single qoute จะแสดงตามที่อยู่ข้างในทั้งหมด
black qoute (`) ค่าที่อยู่ในนี้คือคำสั่ง shell หรือ dos โดยจะ return ค่าผลลัพธ์ที่ได้ สามารถใช้ตัวแปรมารับค่าได้
#!c:\perl\bin\perl
print "content-type:text/html \n\n";
print "Hello World\n"; #จะได้ Hello World
print 'Hello World\n'; #จะได้ Hello World\n
print `date`; #จะได้ The current date is: Wed 04/27/2011 Enter the new date: (mm-dd-yy)
ผลลัพธ์ใน browser
Hello World Hello World\nThe current date is: Wed 04/27/2011 Enter the new date: (mm-dd-yy)
ผลลัพธ์ใน view->source
Hello World
Hello World\nThe current date is: Wed 04/27/2011
Enter the new date: (mm-dd-yy)
my function ในภาษา perl
การใช้ my function กับตัวแปรใน perl คือการกำหนด variable scope ถ้าเราสร้างตัวแปรที่มีชื่อเหมือนกับ global variable ในฟังก์ชั่นโดยใช้ my ด้วย global variable จะไม่ถูกแก้ไข
#!c:\perl\bin\perl
print "content-type:text/html \n\n";
$myString = "haha";
sub test
{
my $myString = "test";
}
print $myString."->01";
&test();
print $myString."->02";
ผลลัพธ์
haha->01
haha->02
###############################################
#!c:\perl\bin\perl
print "content-type:text/html \n\n";
$myString = "haha";
sub test
{
$myString = "test";
}
print $myString."->01";
&test();
print $myString."->02";
ผลลัพธ์
haha->01
test->02
###############################################
#!c:\perl\bin\perl
print "content-type:text/html \n\n";
my $myString = "haha";
sub test {
$myString = "test";
}
print $myString. "->01";
&test();
print $myString. "->02";
ผลลัพธ์
haha->01
test->02
###############################################
#!c:\perl\bin\perl
print "content-type:text/html \n\n";
my $myString = "haha";
sub test {
my $myString = "test";
}
print $myString. "->01";
&test();
print $myString. "->02";
ผลลัพธ์
haha->01
haha->02
#!c:\perl\bin\perl
print "content-type:text/html \n\n";
$myString = "haha";
sub test
{
my $myString = "test";
}
print $myString."->01";
&test();
print $myString."->02";
ผลลัพธ์
haha->01
haha->02
###############################################
#!c:\perl\bin\perl
print "content-type:text/html \n\n";
$myString = "haha";
sub test
{
$myString = "test";
}
print $myString."->01";
&test();
print $myString."->02";
ผลลัพธ์
haha->01
test->02
###############################################
#!c:\perl\bin\perl
print "content-type:text/html \n\n";
my $myString = "haha";
sub test {
$myString = "test";
}
print $myString. "->01";
&test();
print $myString. "->02";
ผลลัพธ์
haha->01
test->02
###############################################
#!c:\perl\bin\perl
print "content-type:text/html \n\n";
my $myString = "haha";
sub test {
my $myString = "test";
}
print $myString. "->01";
&test();
print $myString. "->02";
ผลลัพธ์
haha->01
haha->02
20 April 2011
Method access modifier ใน objective-c
‘-’ in the front of the definition, signifies that the method is an instance method.
‘+’ to define a class method (more on class methods in a future post).
credit : http://macdevelopertips.com/objective-c/objective-c-defining-a-class.html
‘+’ to define a class method (more on class methods in a future post).
credit : http://macdevelopertips.com/objective-c/objective-c-defining-a-class.html
เปรียบเทียบชื่อ template ของ xcode ios
Cocoa Touch OpenGL Application -> OpenGL ES Application
Cocoa Touch Tab Bar -> Tab Bar Application
Cocoa Touch Utility -> Utility Application
Cocoa Touch Application -> Window-based Application / View based application
Cocoa Touch List -> Navigation based Application
Cocoa Touch Tab Bar -> Tab Bar Application
Cocoa Touch Utility -> Utility Application
Cocoa Touch Application -> Window-based Application / View based application
Cocoa Touch List -> Navigation based Application
12 April 2011
ความหมายของ prefix "NS"
อ้างอิงจาก wiki ละกัน
NEXTSTEP, an object-oriented, multitasking operating system by NeXT, as well as a prefix for certain system-provided classes in the operating system, such as "NSString"
มันคือ nextstep นั้นเอง
http://en.wikipedia.org/wiki/NS
NEXTSTEP, an object-oriented, multitasking operating system by NeXT, as well as a prefix for certain system-provided classes in the operating system, such as "NSString"
มันคือ nextstep นั้นเอง
http://en.wikipedia.org/wiki/NS
Subscribe to:
Posts (Atom)