0

พยายามจะเขียนโปรแกรมไปแกะเว็บด้วย Perl

ลูกทุ่งมากอะนะ ไม่มีหลักการอะไรเลย แทบจะดึง tag a ออกมาทั้งหมดแล้วก็มาดู attribute ว่า link ไปหน้าที่ต้องการหรือเปล่า

หลักๆ แล้วใช้ HTML::TreeBuilder

คำสั่งที่สำคัญเลยคือ look_down เราใส่เงื่อนไขไปได้ว่าใช้ element ที่มีเงื่อนไขแบบที่เราต้องการหรือเปล่า มันจะ traverse tree ไปเรื่อยๆ

แต่เท่านี้ก็เหมือนยังไม่พอจะทำ RSS Feed เพราะมันยังดึงวันที่มาไม่ได้

ถ้าจะทำให้ generic ขึ้นอาจจะดู prefix ของ link แทน อยากลอง แต่ต้องอดใจไว้ก่อน

use strict;
use HTML::TreeBuilder;
use Data::Dumper;

my $filename = "news.htm";
my $tree = HTML::TreeBuilder->new;
$tree->parse_file($filename);
my @elements = $tree->look_down(
	sub {
		if(lc($_[0]->tag()) eq "a" && $_[0]->attr('onclick') ne undef) {
			my $onclick = $_[0]->attr("onclick");
			if($onclick =~ /^NewWindow\('publicshow/) {
				return 1;
			}
		}
		return 0;
	}
);
foreach my $element(@elements) {
	if($element->attr('onclick') =~ /^NewWindow\('(publicshow[^']+)/) {
		my $url = $1;
		my $topic = "";
		foreach my $c ($element->content_list) {
			if(ref($c) ne "HTML::Element") {
				if(!($c =~ /^\s*$/)) {
					$topic = $topic . $c;
				}
			}
		}
		$topic =~ s/[\n\r]/ /m;
		if($topic ne "") {
			print "$topic\n$url\n\n";
		}
	}
}
0

Samati: โปรแกรมช่วยกระตุ้นการทำงาน (บนโทรศัพท์มือถือ)

ไปอ่าน Pomodoro technique ที่พี่ต้นแนะนำมา ประมาณว่าใช้ Timer ช่วยในการกระตุ้นตัวเองให้ทำงาน และพักผ่อนอย่างเหมาะสม

ผมลองใช้เทคนิคที่ว่าดูก็รู้สึกว่าได้ผล ปกติผมก็ใช้ Timer บนโทรศัทพ์มือถือ แต่ว่าผมอยากจะดูด้วยว่าตกลงวันๆ หนึ่งได้งานกี่ชั่วโมง กี่นาที ก็เลยทำโปรแกรมชื่อ Samati (สมาธิ) ขึ้นมา ตามที่ผมเข้าใจ (จะถูกหรือคลาดเคลื่อนไปแค่ไหนก็ไม่ทราบ) ใช้ Java ME ลองในเครื่อง Nokia 2690, Nokia 2700, Nokia 5230, Nokia 5320 แล้วก็ใช้ได้ ไม่มีปัญหาอะไร

Update 7/9/2010: ลองกับ Nokia 3110c ก็ใช้ได้

p8200253.jpg

วิธีการใช้โปรแกรมก็ download ไปติดตั้งได้เลย หน้าแรกก็จะขึ้นมาบอกข้อมูลของโปรแกรมนี้นิดหน่อย แล้วก็บอกด้วยว่าเอาเสียงมาจากไหน หน้านี้ก็กด OK มันก็จะข้ามไป

Samati

หน้านี้จะเป็นหน้าที่ใช้งานจริงๆ แล้ว เวลาที่เราทำงานก็กดที่ “Work” มันจะมีเสียงเตือน ขึ้นมา อันนี้ลองเสียงเฉยๆ ถ้าถึงเวลาพักแล้ว หรือว่าหมดเวลาพักแล้ว เสียงนี้จะเตือนดังขึ้นมาอีกที เวลาที่เราถูกขัดจังหวะให้ไปทำอย่างอื่น หรือด้วยความขี้เกียจของตัวเอง ก็กด Stop

มันมีช่องบอกข้อมูล 4 ช่อง

  1. Status นี้บอกว่าเราควรจะทำอะไรอยู่ Work คือทำงานกันต่อไป Rest พัก Interrupted ก็คือเราขอไปทำอย่างอื่นก่อน และ Inactive คือ ยังไม่ได้เริ่มใช้
  2. Time คือเวลาที่เหลือที่เราจะต้องทำกิจกรรมในข้อ 1 เฉพาะ Work กับ Rest นะครับ
  3. Pomodoro แปลว่ามะเขือเทศ ช่องนี้จะนับว่าเราทำงาน ได้ตามเป้า 25 นาที ไปกี่ครั้งแล้ว พอได้ Pomodoro ครบ 4 ลูก, 8 ลูก, 12 ลูก (ทุก 4 ลูก) เวลาพักจะเพิ่มจาก 5 นาทีเป็น 20 นาที
  4. Accumulated work คือเวลาทำงานรวม ตั้งแต่เปิดโปรแกรมมา ไม่ว่าจะทำครบ 25 นาทีหรือไม่ก็ได้ ถ้าเปิด Samati ไว้ทั้งวันก็จะรู้ว่า วันนี้ใช้เวลาทำงานไปแค่ไหน


Samati สามารถ download ได้ที่นี่ … ถ้า download ไปแล้วใช้ประโยชน์ได้ ผมรบกวดโพส comment บอกหน่อยนะครับ อยากทราบว่าจะมีใครใช้ได้จริงๆ หรือเปล่า

แก้ bug เรื่องแสดงผลเวลาไป 0.0.8 โหลดได้ที่ https://code.google.com/p/samati/downloads

0

ลอง Tweet Button

ลอง Tweet Button เห็นของเขาออกใหม่เลยลองสักหน่อย ใช้ wordpress.com ง่ายมาก “รูปแบบบล็อก -> พิเศษ” แล้วก็เลือกใช้ Tweet Button ไดเลย ^_^

ไม่มีหมวดหมู่
2

รถทัวร์จากระยองไปสนามบินสุวรรณภูมิ

ทีแรกผมว่าจะนั่งรถจากระยองไปเอกมัยแล้วค่อยหาทางไปสนามบิน แต่ไม่ต้องทำแบบนั้นไปที่บริษัทระยองทัวร์ มีรถเที่ยว 15:10น. ไปสุวรรณภูมิเลย ผมก็ขึ้นสิ สะดวกกว่าถูกกว่าด้วย ประมาณ 20 บาท (แต่ว่ามีเที่ยวไหนบ้างผมไม่ทราบนะครับ โทรฯ ถาม 038-861354 เอาแล้วกัย :-P)

13-08-2010

สายนี้ผ่านอะไรเยอะ นิยมอุตสาหากรรมมาบตาพุดก็ผ่าน

นิคมอุตสาหกรรม มาบตาพุด

จอดบ้างอะไรบ้าง และแล้วก็มีถึงสนามบินสุวรรณภูมิเวลาประมาณ 18:00น.

Rayong bus at the airport

รถระยองคันที่เห็นมีคนเดินลงมานะครับ มีแถบสีฟ้าอ่อนด้วย ยี่ห้อ MAN อย่างดี (มั้ง) ไม่ใช่ เดินลงมาก็ก็สร้างกันตามเคย เดินตามคำว่า shuttle bus ก็เจอแต่รถตู้ไปไหนก็ไม่รู้ แต่ไม่เป็นไรถามเขาได้ คุณจนท.ก็แจ้งว่าไปขึ้นคันไหนจอดอยู่ที่จอดรถโน้น

0

มีอะไรใน Jubjub

เวลาใช้ Jibjib บน Wellcom A88 (Android 1.6) แล้วบางทีมันจะขึ้นว่า Authenticate ไม่ผ่าน บ่อยๆ แล้วทีนี้มันก็ไปวิ่งไปเข้า PreferencesActivity แล้ว จบ Task ไปแล้ว ที่นี้อะไรที่เราพิมพ์ไว้จะทวีตมันก็หายหมด ต้องมาพิมพ์ใหม่  … ทั้งๆ ที่จริงๆ แล้วมันควรจะ Authenicate ผ่าน แต่ก็ไม่รู้จะแก้ปัญหา Authenticate ไม่ผ่านอย่างไร ก็เลยมาแก้ปลายเหตุแทน  ด้วยการเลิกการ start PreferencesActivity และการจบ Task ซะ :-P

### Eclipse Workspace Patch 1.0
#P jibjib
Index: src/com/sugree/jibjib/SendTweet.java
===================================================================
--- src/com/sugree/jibjib/SendTweet.java    (revision 646)
+++ src/com/sugree/jibjib/SendTweet.java    (working copy)
@@ -549,7 +549,7 @@
 .setMessage(R.string.dialog_summary_authentication_failed)
 .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
 public void onClick(DialogInterface Dialog, int whichButton) {
-                        startActivity(new Intent(SendTweet.this, PreferencesActivity.class));
+//                        startActivity(new Intent(SendTweet.this, PreferencesActivity.class));
 }
 }).create();

Index: AndroidManifest.xml
===================================================================
--- AndroidManifest.xml    (revision 646)
+++ AndroidManifest.xml    (working copy)
@@ -16,8 +16,7 @@
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.sugree.jibjib"
-    android:versionName="0.4.30"
-    android:versionCode="89">
+    android:versionName="0.4.3089" android:versionCode="91">

 <uses-sdk android:targetSdkVersion="4" android:minSdkVersion="3" />
 <supports-screens
Index: src/com/sugree/jibjib/TweetActivity.java
===================================================================
--- src/com/sugree/jibjib/TweetActivity.java    (revision 646)
+++ src/com/sugree/jibjib/TweetActivity.java    (working copy)
@@ -286,8 +286,8 @@
 .setMessage(R.string.dialog_summary_authentication_failed)
 .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
 public void onClick(DialogInterface dialog, int whichButton) {
-                        finish();
-                        startActivity(new Intent(TweetActivity.this, PreferencesActivity.class));
+//                        finish();
+//                        startActivity(new Intent(TweetActivity.this, PreferencesActivity.class));
 }
 }).create();

Index: src/com/sugree/jibjib/TimelineActivity.java
===================================================================
--- src/com/sugree/jibjib/TimelineActivity.java    (revision 646)
+++ src/com/sugree/jibjib/TimelineActivity.java    (working copy)
@@ -234,8 +234,8 @@
 .setMessage(R.string.dialog_summary_authentication_failed)
 .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
 public void onClick(DialogInterface Dialog, int whichButton) {
-                        finish();
-                        startActivity(new Intent(TimelineActivity.this, PreferencesActivity.class));
+//                        finish();
+//                        startActivity(new Intent(TimelineActivity.this, PreferencesActivity.class));
 }
 }).create();

ก็แค่ไป comment ออก 4 บรรทัดมั้ง แต่ว่าทีนี้ถ้ามัน Authenticate ไม่ผ่านจริงๆ ก็ซวยนะ ต้องเข้าไป Preference เอาเอง

0

build jibjib (android) แบบใช้ oauth

  1. ต้องมี่ consumer key และ consumer secret มาจาก twitter โดยการ create app ใหม่ที่ http://dev.twitter.com/apps ต้องเลือกประเภทเป็น Browser เท่านั้น แม้ Client มันจะน่าเลือกก็ตาม มันจะให้ใส่ callback url ผมก็ใส่ไปเรื่อยเปื่อย ก็เห็นใช้ได้
  2. เตรียม Eclipse ให้พร้อม แน่ใจว่าเรียก app บน android ได้ ลง Subclipse ด้วย
  3. import jibjib จาก svn มาลง http://jibjib.googlecode.com/svn/trunk/android/ ด้วย Eclipse
  4. หา PrivateData.java.in เปลี่ยนชื่อเป็น PrivateData.java เอาไปใส่ใน com.sugree.jibjib แล้วเปลี่ยน consumer key และ sonsumer secret ตามที่ได้จากข้อ 1
  5. เวลาเรียก emulator จาก Eclipse มันมักจะใช้เน็ตไม่ได้ ผมก็เลยไปเรียกจาก command line ประมาณ emulator -avd my_a88 ก็ใช้ได้ ทำไม่รู้งงๆ
  6. รัน app จาก Eclipse (ก็เลือก Android app ไปตามฟอร์ม) … ก่อนรัน app ผมมักจะ uninstall app เก่าออกก่อนด้วยคำสั่ง adb uninstall com.sugree.jibjib
1

สโมสรฟุตบอลที่ 3 ในระยอง ในไทยลีค

ตั้งแต่ พ.ศ. 2538 เพื่อนผมสักคนที่ระยองวิทยาคมบอกผมว่าประเทศเราจะมีลีคอาชีพแล้ว ไม่รู้ว่าเพื่อนผมจะลืมไปยัง แต่ผมลืมแล้วว่าใครบอก … ตั้งแต่นั้นผมก็ฝันว่าระยองจะมีสโมสร_ดีๆ คนระยองจะได้เข้าดู เด็ก เยาวชน ที่นี่จะมีโอกาสได้เป็นนักฟุตบอลอาชีพบ้าง

เราเคยมีระยองราชพฤกษ์ แล้วก็หายไป  ตอนนี้เรามีระยองเอฟซี (ด.2) มีราชนาวีระยอง (พรีเมียร์) ผมเคยคิดว่าคนดูก็คงไม่เยอะหรอก แต่ยังไงผมก็คงไปดู  … มองโลกในแง่ร้ายไว้ก่อน แล้วก็คอยบอกว่า “ฉันว่าแล้วว่ามันจะเจ๊ง” (เปลี่ยนเป็นประโยคที่พูดจริงๆ เอาเองนะครับ) แต่ไม่ได้ช่วยทำอะไร แบบนี้ใครๆ ก็ทำได้ แล้วเขาก็มักจะคาดถูกกันด้วย … แต่เพราะอะไรผมก็ไม่ทราบเหมือนกัน ราชนาวีระยอง คนไปดูล้นสนาม

วันนี้ ปตท.ระยอง เอฟซี ย้ายมาจากกรุงเทพฯ อยู่ ด.1 ทำให้ในระยองจะมีสโมสรครบทุกดิวิชัน ผมและเชื่อว่าคนอีกหลายๆ คน ตั้งข้อสังเกตุว่า ปตท. จะใช้ฟุตบอล มาช่วยลดแรงกดดัน กรณีมาบตาพุดหรือเปล่า ถ้าผมฟังมาไม่ผิดสนามเหย้าก็อยู่ห้วยโป่ง ใกล้ๆ มาบตาพุดด้วย แต่ก็เป็นแค่เรื่องคาดเดานะ  … แต่ถ้าสมมุติว่าผมเป็นผู้บริหารปตท.นะ  ผมคงจะย้ายมาตั้งแต่สิบกว่าปีก่อนแล้ว

ถ้า 3 สโมสรนี้เกิดขึ้นชั้นตกชั้น ไปมา ดีไม่ดีอีก 2-3 ปี อาจจะเจอกันเองในลีคก็ได้ มันคงจะไม่มีดราม่าซ้อนการเมือง แบบทีมนั้นเอาอุตสหกรรม ทีมนี้ไม่เอาอุตสาหกรรม เกิดขึ้นมาหรอกนะ -_-!

ผมว่าหลายๆ อย่างมันน่าติดตามชมนะ ทั้งเรื่องฟุตบอลเอง และเรื่องแฟนบอล

0

ทำไมใช้ซอฟต์แวร์ฟรีดีกว่า แม้บางทีจะเสียเงินมากกว่า

บางทีเราใช้ซอฟต์แวร์ฟรีๆ แต่ทำไปทำมาเสียเงินมากกว่า ซื้อซอฟต์แวร์มาใช้ แต่เห็นมันใช้ดีเหลือเกินเห็นปุ่มบริจาค (Donate) ก็กดไป ถ้าซื้อไปบางทีอาจจะถูกกว่าที่บริจาคไปก็ได้ … แต่เพราะว่าเป็นการบริจาคเราจึงได้ *บุญ* แถมมาด้วย :-P

ป.ล. ที่เขียนอยากให้ขำนะ

2

ขยายขนาด Text ใน SVG ผ่าน CSS ไม่รอด T_T

กะว่าใส่ font-size ไปใน css แล้วจะได้ตัวอักษรตัวใหญ่เลย ลองเปิดใน Firefox, Chromium และ Opera ดูก็ตัวเล็กนิดเดียว ใช้ไม่ได้ T_T … แต่ว่าเปิดด้วย inkscape เป็นตัวใหญ่ซะงั้นนะ  งง

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="8cm" height="8cm" viewBox="0 0 800 800"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<style>
text {
fill: blue;
font-size: 400;
}
</style>
</defs>
<text x="50" y="150" width="600" height="400">Test</text>
</svg>

งงแต่ก็แก้อะไรไม่ถูก -_-!

<?xml version=”1.0″ standalone=”no”?>
<!DOCTYPE svg PUBLIC “-//W3C//DTD SVG 1.1//EN”
http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd”&gt;
<svg width=”8cm” height=”8cm” viewBox=”0 0 800 800″
xmlns=”http://www.w3.org/2000/svg&#8221; version=”1.1″>
<defs>
<style>
text {
fill: blue;
font-size: 400;
}
</style>
</defs>
<text x=”50″ y=”150″ width=”600″ height=”400″ font-size=”100″>Test</text>
</svg>