แปลง phpBB2 ไป SMF แล้ว Error !!

โพสท์ในหมวด () โดย ball6847 เมื่อ Saturday, December 5, 2009

เวลาเปลีั่ยนจาก phpbb ไป smf ทาง smf เค้าจะมีตัว converter ให้ด้วย (จริงๆ แล้วผมไม่ได้รู้เองนะ คนที่เค้าจ้างผมเค้าหาข้อมูลมาให้เสร็จสรรพ) แต่มันก็เกิด Error อ่ะ แถม error ไม่เข้าใจว่าทำมัยเค้าไม่แก้หว่า เพราะ error นี้มันยังงัยก็ error ตลอดอ่ะ


Original

1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
 
function doStep3()
{
 global $boardurl, $convert_data, $command_line;
 
 // Replace the conversion information.
 convert_query('
  REPLACE INTO {$to_prefix}settings (variable, value)
   VALUES ("conversion_time", ' . time() . '),
    ("conversion_from", "' . $_SESSION['convert_script'] . '")'); 

สังเกตุที่บรรทัด 1821 เค้าใช้ $to_prefix ใน query แต่ว่า string ดันครอบด้วย '...' ซึ่งจริงๆมันต้องใช้ "..." ไม่ก็ปิดแล้วใช้ . ต่อตัวแปรเข้าไป

Firefox Profile Manager - ย้าย Firefox Profiles ไปที่อื่นดีกว่า

โพสท์ในหมวด () โดย ball6847 เมื่อ

ผมก็เป็นคนนึงนะที่ต้อง format เครื่องบ่อยๆ จริงๆแล้วผมไม่ค่อยได้ลงพวก anti virus เท่าไหร่ ไวรัสก็โดนบ้างแต่ก็ไม่มากเท่าไหร่ ที่ต้องฟอร์แม็ตใหม่เพราะเครื่องเริ่มทำงานเอ๋อสิทีนี้ ฟอร์แม็ตทีรำคาญโคตร จะทำไรก็ไม่ได้ทำ

ผมเลยเริ่มนึกวิธีที่ช่วยเซฟๆหน่อยดีกว่า นึกขึ้นออกว่ามีน้องคนนึงเคยแนะนำให้ใช้ DeepFreeze เอาไำว้ Freeze Drive หลักของ Windows เปิดมากี่รอบก็เหมือนเดิม แต่มันจะยุ่งยากหน่้อยก็ตอนจะลงโปรแกรมนี่แหละ ต้องรีสตาร์ทเครื่อง ฮาร์ดแวร์เราก็ไม่ค่อยดีรีช้าชิหาย

Deep Freeze Logoทีนี้ใช้ไประยะนึงเริ่มจะมีเรื่องกวนใจอีกแระ เพราะโปรแกรมหลักที่ต้องใช้งานบ่อยๆบางโปรแกรมเนี่ยมันต้องการเก็บข้อมูลส่วนตัวของเราบ้าง อย่าง Firefox , Editplus , FileZilla  , My Recieved Files ของ WLM หรือแม้แต่ Preset Bank ของ Guitar Rig 3 ทั้งหมดนี้โปรแกรมจำเป็นต้องเก็บข้อมูลพวก settings ไว้ใน Drive C แล้วจะทำยังงัยดี

โอเค ทีนี้ผมอ่ะหาวิธีมาแก้ปัญหานี้แน่นอน แต่วันนี้ผมจะพูดถึงวิธีแก้โปรแกรมหลักๆ คือ Firefox กับ Editplus เพราะสองโปรแกรมเราสามารถทำการเปลี่ยนที่อยู่ของโฟลเดอร์ที่จัดเก็บ Settings ต่างๆได้

RomHustler 1 Click Download - GreaseMonkey

โพสท์ในหมวด ( , ) โดย ball6847 เมื่อ Sunday, November 29, 2009

GreaseMonkey - Extend the Web วันนี้พยายามที่จะเขียน Javascript แบบเพียวๆ โดยไม่ใช้ jQuery เพราะเริ่มรู้สึกว่าเราจะขาดมันไม่ได้เสียเลย ประจวบเหมาะกับที่ตอนนี้ไม่มีงานมารุมเร้า เลยว่างได้ฝึกปรือ คิดแล้วก็อยากพักผ่อนสมอง จะโหลด ROM PS1 มาเล่น อยากจะเล่น Gran Turismo 2 แบบมันนึกถึงตอนที่ขับ Toyota GT-One ทำลายสถิติตัวเองได้แล้วมันรู้สึกปลดปล่อยดีจริง

พอจะโหลดก็เลยนึกได้ว่าสมัยก่อนเคยเข้าไปโหลด ROM มาจากเว็บนึง เว็บนั้นคือ romhustler.net มี ROM ให้เลือกโหลดเอาไปเล่นบานนนนน แต่ว่าตอนโหลดจะน่ารำคาญนิดนึง เพราะพอเจอเกมที่จะเ่ล่นแล้วจะต้องโหลดเป็น part , part ละ 50MB แต่ละ part ต้องคลิ้กอย่างต่ำ 3 ครั้งรอนับถอยหลังอีกตะหาก

โป๊ะเชะ !! ถือโอกาสนี้เรียนรู้ Javascript DOM ซะเลย โดยจะเขียนเป็น user script ของ GreaseMonkey ให้ข้ามขั้นตอนอันน่ารำคาญไปให้หมด โดยผมตั้งเกณฑ์ในสคริปท์นี้ไว้ว่า
- ต้องใช้ XPath ในการเข้าถึง Node
- ต้องใช้ DOM เพียวๆ ห้ามใช้ Framework ช่วย

Codeigniter Smarty Integration , แบบน่าจะถูกต้อง

โพสท์ในหมวด () โดย ball6847 เมื่อ Tuesday, November 10, 2009

ตายๆๆๆคับ พักนี้ไม่มีเวลาเลยยยย รีบปั่นโปรเจ็คที่ทำอยู่ เจออะไรใหม่ๆก็ศึกษาจนงานเริ่มยืดดด ครบกำหนดส่งแล้วยังไม่เสร็จ - -*

โพสท์ก่อนโน้นนน ผมโพสท์เกี่ยวกับ View Codeigniter คือผมไม่อยากจะเอา Template Engine มาัใช้งานร่วมกับ Codeigniter เลย เพราะผมกลัวว่ามันจะเปลือง memory ลำพัง Codeigniter อย่างเดียวก็เยอะแล้ว ผมเลยใช้ View ของ Codeigniter ไปแบบจำใจ แถมศึกษาเสียเวลา extends Core ของ Codeigniter อีกกว่าจะใช้ views ในแบบของผมได้ แต่ทำยังงัยก็กลับตายรัง กลับมาใช้ Smarty อีกรอบดีกว่า สงสัยชาตินี้จะหนี Smarty ไม่พ้นแล้ว พอไม่ได้ใช้ Smarty ไปพักนึงก็กลับมาทวนความจำหน่อย

โชคดีที่ผมไป extends Core ของ Codeigniter บ่อยจนพอเข้าใจ core ของมันบ้าง แล้ววันนี้ผมก็จะกลับมาใช้ Smarty แทน View แต่ในระหว่างที่กำลังทำการลง Smarty ใน Codeigniter นั้น ผมมองโค้ดเก่าๆเลยรู้สึกว่า "แบบนี้มันไม่ได้ใช้ Smarty แทน View นี่นา"

ในโค้ดเก่าของผมก็คือ สร้าง class ลูก extends Smarty , เซ็ต Smarty Config ใน Contructor , จับใส่โฟลเดอร์ library แล้วก็ load เข้ามาใช้ใน Controller ก็จบ

จริงๆแล้วแบบนี้ก็ถูกแล้วครับ แต่มันไม่ควรจะจบแค่นี้ครับ (หมายถึงถ้าจะพูดว่าใช้ Smarty แทน vew มันไม่ควรจะจบแค่นี้) เพราะถ้าเราทำแค่นี้ output จะไม่ถูกนำไปประมวลผลโดย Output Class ของ Codeigniter , เพราะว่า Loader Class ซึ่งในกรณีนี้มันทำให้หน้า load view แล้วส่ง final output ไปยัง Output Class เพื่อประมวลผลครั้งสุดท้ายอีกที แต่ถ้าเราใช้ Smarty คือ output จะไม่ถูกนำไป final process โดย Output Class

แล้วใน final process ของ output class มันทำอะไร ?

อันนี้เนื่องจากว่าผมต้องการจะแสดง execution time ของสคริปท์ในหน้าเพจ ผมต้องการเวลาที่ใช้ไปตั้งแต่ Benchmark Class ของ Codeigniter เริ่มทำงาน ซึ่ง Class นี้จะเป็น Class แรกใน Codeigniter ที่เริ่มทำงานด้วย และ class นี้จะถูกเรียกอีกครั้งใน Output Class เพื่อเช็คเวลาที่ใช้ไปทั้งหมดตั้งแต่เริ่ม Codeigniter จน final output ถูกส่งไปยัง browser ครับ ผมก็เลยต้องทำการแก้ Class ลูก ที่ผม extends มาจาก Smarty เปลี่ยนจากการ display output ธรรมดาเป็นส่งไปยัง Output Class แทนครับ (การทำงานใน Controller ก็ยังทำงานเหมือนเดิมไม่เปลี่ยนแปลง)

ลองดู CI Smarty ของผมกันครับ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php defined('BASEPATH') or die('Direct Acces Not Allowed');
 
 
// โหลด Smarty
require_once 'smarty/Smarty.class.php';
 
// สร้าง Class ลูก ไว้ใช้ใน Codeigniter
class CI_Smarty extends Smarty {
 
	function CI_Smarty()
	{
		parent::Smarty();
 
		// Smarty Config
		$this->template_dir = ABSPATH . 'application/views';
		$this->compile_dir = SMARTY_DIR . 'templates_c';
		$this->config_dir = SMARTY_DIR . 'configs';
		$this->cache_dir = SMARTY_DIR . 'cache';
 
 
		// จัดการไฟล์ cache และ compiled file เก็บไว้ใน subdirectory
		// เพื่อป้องกันกรณีใช้ multiple template จะทำให้ compile ชนกัน
		$this->use_sub_dirs  = TRUE;
 
 
		// ไม่ค่อยแน่ใจตัวเองเลย ใช้อันนี้ดีป่าวเนี่ย
		$this->left_delimiter = '{!';
		$this->right_delimiter = '}';
 
 
		// โหลด Filter 
		$this->load_filter('output','trimwhitespace');
 
 
		// กำหนดค่า view uri , site_url และ site_domain ไว้ใช้ใน smarty ให้อัตโนมัติ
		$this->assign('view_uri' , ABSURL . 'application/views/');
		$this->assign('site_url' , ABSURL);
		$this->assign('site_domain' , DOMAIN);
 
	}
 
	/**
	 * ไว้เซ็ต base template จะถูก append ต่อจาก $this->template_dir
	 *
	 * @access	public
	 * @param	string	!	ชื่อของโฟลเดอร์เทมเพลท
	 * @return		void
	 **/
	function set_template($template)
	{
		// เปลี่ยนค่า view uri ให้ smarty อัตโนมัติ
		$this->template_dir .= '/' . $template;
		$this->assign('view_uri' , ABSURL . 'application/views/' . $template . '/');
	}
 
 
 
	/**
	 * ปรับปรุงจากคลาสแม่ ให้ส่ง output ไปยัง Output Class ของ Codeigniter แทนการ echo
	 *
	 * @access	public
	 * @param	ดูเพิ่มเติมใน Smarty - [libraries/smarty/Smarty.class.php]
	 * @return		void
	 **/
	function display($resource_name, $cache_id = null, $compile_id = null)
	{
		// ดึง output จาก template
		$output = $this->fetch($resource_name, $cache_id, $compile_id); 
 
		 // เรียก instance ของ codeigniter
		$CI =& get_instance();
 
		// ส่ง output เข้า Output Class ของ CodeIgniter
		$CI->output->append_output($output );
	}
 
 
 
}

เวลาจะแสดง execution time แค่ใส่ {elapsed_time} ลงไป template แค่นั้นเอง กรณีของผมผมใช้ {! ... } เป็น l/r delim เลยไม่มีปัญหา แต่ถ้าใครใช้ default ของ Smarty ให้ใช้ {ldelim}elapsed_time{rdelim} แทนครับผม

oicclip.com กว่าจะได้ใช้

โดย ball6847 เมื่อ Friday, October 9, 2009

หลายเดือนก่อน ผมไปช่วยเพื่อนใน ThaiSEOBoard ท่านหนึ่งโมบอร์ด SMF นิดหน่อย ครั้งนั้นทำให้ผมได้โดเมนฟรีมา 1 โดเมน ชื่อโดเมนว่า oicclip.com แต่ผมก็ไม่รู้จะเอาไปทำเว็บอะไร จริงๆแน่นอนหล่ะว่ามันต้องทำเว็บวิดิโอ ชื่อแบบนี้คงไม่เอาทำเว็บ Social Bookmark หรอกจริงมั้ย แต่ยังงัยซะผมก็ปล่อยโดเมนนี้ว่างๆมาตั้งหลายเดือน จะว่าไปก็เสียดายแต่ด้วยความขี้เกียจ + ไอเดียที่คิดตอนแรกมันเวอร์ไปหน่อยจนทำไม่ไหว

แต่และแล้ววันนึงผมก็นึกออกก็เลยไหนๆแล้วทำซะหน่อย เพราะว่าไม่รู้จะทำอะไรแล้ว ทีแรกว่าจะเอา PHPMelody มาทำ (ของเดิมที่เค้าทำไว้ก็รู้สึกจะ PHPMelody นี่แหละ) กะว่าจะทำเป็นเว็บดูวิดิโอแบบเป็น Series โดยผมจะรวบรวมหาวิดิโอมา add เอง แต่ตอนที่กำลังจะลงนั้น มีน้องคนนึงซึ่งเป็นเจ้าของโฮสท์รายนึง และก็เป็นโฮสท์ที่น้องเค้าให้ผมใช้ฟรีๆ (ซึ่งผมก็ไม่ค่อยจะเอาใช้ประโยชน์เท่าไหร่เหมือนกัน เสียดายแทนมันจริงๆ อุตส่าเอามาให้ใช้) น้องเค้าว่าให้ผมลงอีกสคริปท์นึงดีกว่า ตัวที่แนะนำมาเป็นสคริปท์เว็บวิดิโอตัวนึงที่มีแจกในบอร์ดนั่นแหละ ผมเองก็เคยลอง จากโครงสร้างสคริปท์มันก็เป็นเว็บปั่นดีดีนี่แหละเนื้อหาไม่มีอะไรนอกจากวิดิโอจาก Youtube แต่มันมีดีที่อย่างอื่น บวกกับสคริปท์เดิมๆมันมีปัญหาอยู่บ้าง แต่สคริปท์เล็กๆคับ แก้ไม่หนักเท่าไหร่ก็ใช้ได้แล้ว แก้เสร็จก็โมเพิ่มอีกนิดหน่อยให้เสียวขึ้นอีกนิด อันนี้ต้องขอบคุณน้องเค้าผมอุตส่าให้มันลิสท์รายการที่จะให้แก้ให้โมมาให้เรียบร้อย แล้วผมก็นั่งทำทั้งคืนเลยทีนี้ เพราะเน็ตมันจะหมด ไม่รู้จะได้ใช้อีกเมื่อไหร่ ไม่มีตังเติมด้วย เลยรีบทำให้เสร็จก่อนเช้า (เวนกำแท้ - -*) แต่ก็เสร็จจนได้แหละ

oicclip.com screenshot 2009-10-09

เสร็จสิ้นการปรุงแต่งสคริปท์เดิมจัดการแบ่งปันให้น้อง แล้วก็ลงเองด้วยเลย ไว้ที่เว็บ oicclip.com นี่แหละ แต่เสียดายที่สคริปท์มีข้อเสียอยู่นิดหน่อยที่แก้ไม่ได้คือมันไม่มี description ของวิดิโอมากับรายการด้วย ทำให้หน้าเว็บดูเหมือนสแปมยังงัยก็ไม่รู้ แต่ก็ช่างมันผมไม่แคร์ ฮ่าๆ

จริงๆนะผมพูดจากใจจริงเลย ผมไม่ได้อยากจะป่้าวประกาศให้ใครรู้หรอกหรอกว่าผมทำอะไร ที่มาโพสท์เนี่ย แค่จะเรียกบอทเท่านั้นแหละ ก๊ากๆๆๆๆ ก็ถือโอกาสเพิ่มบทความให้บล็อกด้วยเลย

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