<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Illumination &#187; lisp</title>
	<atom:link href="http://irpan.csui02.net/blog/tag/lisp/feed/" rel="self" type="application/rss+xml" />
	<link>http://irpan.csui02.net/blog</link>
	<description>Life Through The Light</description>
	<lastBuildDate>Tue, 05 Jan 2010 04:43:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Simple Script dengan Newlisp (2)</title>
		<link>http://irpan.csui02.net/blog/2009/02/27/simple-script-dengan-newlisp-2/</link>
		<comments>http://irpan.csui02.net/blog/2009/02/27/simple-script-dengan-newlisp-2/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 04:11:41 +0000</pubDate>
		<dc:creator>Maulana</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[lisp]]></category>

		<guid isPermaLink="false">http://irpan.csui02.net/blog/2009/02/27/simple-script-dengan-newlisp-2/</guid>
		<description><![CDATA[Dalam postingan sebelumnya saya mencoba untuk membuat file atau directory dan juga meng-copy file, sekarang saya akan mencoba membaca suatu file. Dalam newlisp ada fungsi yang dapat digunakan untuk membuka file, yaitu
(open file-source "read")
untuk membaca file tersebut bisa menggunakan beberapa fungsi seperti read-file, read-buffer, read-char atau read-line, misalkan
(read-line input-file)
sedangkan untuk menulis suatu file juga bisa [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Dalam postingan sebelumnya saya mencoba untuk membuat file atau directory dan juga meng-copy file, sekarang saya akan mencoba membaca suatu file. Dalam newlisp ada fungsi yang dapat digunakan untuk membuka file, yaitu</p>
<p><code>(open file-source "read")</code></p>
<p>untuk membaca file tersebut bisa menggunakan beberapa fungsi seperti read-file, read-buffer, read-char atau read-line, misalkan</p>
<p><code>(read-line input-file)</code></p>
<p>sedangkan untuk menulis suatu file juga bisa menggunakan fungsi-fungsi built-in yang disediakan seperti write-file, write-buffer, write-char atau write-line, misalkan</p>
<p><code>(write-line out-file "Hello World!")</code></p>
<p>Kita dapat membuat fungsi baru berdasarkan fungsi-fungsi tersebut untuk membuka file, membaca file tersebut kemudian menuliskan content dari file ke newlisp shell</p>
<p><code>(define (read-file-source file-source)<br />
((set 'in-file (open file-source "read"))<br />
(while (read-line in-file)<br />
(write-line))<br />
(close in-file)))</code></p>
<p>Setelah mencoba menggunakan fungsi-fungsi operasi file dan fungsi copy file yang telah dibuat pada postingan sebelumnya, maka akhirnya saya dapat membuat script file yang saya inginkan untuk meng-copy file-file yang ada atau didaftarkan pada suatu file</p>
<p><code>(define (copy-file-from-text-file file-text home-path dest-path)<br />
(begin<br />
(set 'in-file (open file-text "read"))<br />
(while (set 'line-read (read-line in-file))<br />
(begin<br />
(set 'src (append home-path line-read))<br />
(set 'dest (append dest-path line-read))<br />
(my-copy-file src dest)))<br />
(close in-file)))</code></p>
<p>Hehehe sederhana sekali yah, memang seharusnya suatu scripting language seperti newlisp dapat digunakan dengan mudah dan sederhana mungkin tetapi tetap powerfull untuk membantu programmer menyelesaikan task-task nya.</p>
]]></content:encoded>
			<wfw:commentRss>http://irpan.csui02.net/blog/2009/02/27/simple-script-dengan-newlisp-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple Script dengan Newlisp (1)</title>
		<link>http://irpan.csui02.net/blog/2009/02/23/simple-script-dengan-newlisp-1/</link>
		<comments>http://irpan.csui02.net/blog/2009/02/23/simple-script-dengan-newlisp-1/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 11:13:46 +0000</pubDate>
		<dc:creator>Maulana</dc:creator>
				<category><![CDATA[Computer Science]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[lisp]]></category>

		<guid isPermaLink="false">http://irpan.csui02.net/blog/2009/02/23/simple-script-dengan-newlisp-1/</guid>
		<description><![CDATA[Karena untuk mengupdate aplikasi java web mulai menggunakan sistem patch yaitu dengan melakukan copy file class-class baru atau fix update tidak seperti sebelumnya yaitu selalu deploy ulang aplikasinya, mulai deh kerepotan menyiapkan file-file tersebut. Permasalahannya adalah struktur direktori aplikasi web java ditambah lagi dengan struktur package-nya java sendiri terlihat cukup ribet apalagi jika harus meng-copy [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Karena untuk mengupdate aplikasi java web mulai menggunakan sistem patch yaitu dengan melakukan copy file class-class baru atau fix update tidak seperti sebelumnya yaitu selalu deploy ulang aplikasinya, mulai deh kerepotan menyiapkan file-file tersebut. Permasalahannya adalah struktur direktori aplikasi web java ditambah lagi dengan struktur package-nya java sendiri terlihat cukup ribet apalagi jika harus meng-copy satu persatu file-file yang mesti dipersiapkan buat di patch ke aplikasinya.<br />
Mulai deh mempertimbangkan buat membuat script sederhana untuk menyiapkan file-file patch tersebut, dan saya memutuskan untuk membuatnya dengan newlisp. Ada beberapa alasan mengapa saya akhirnya memutuskan menggunakan newlisp, pertama newlisp merupakan lisp/scheme-like programming language, kedua newlisp surprisingly small ketika diinstall hanya membutuhkan kurang lebih 2Mb (coba bandingkan dengan perl, python atau ruby), ketiga fungsinya lumayan lengkap dan cukup buat membantu menyelesaikan task tersebut, keempat sudah bisa GUI programming dengan memanfaatkan runtime java JRE 1.5 keatas.<br />
Sebenernya ingin juga menulis tentang lisp dan dialectnya termasuk scheme, tetapi mungkin dilain posting aja kali yah. Focus ke newlisp lagi, kalau melihat syntax lisp/scheme-like language sepertinya terlihat aneh dan bikin sakit kepala karena kebanyakan parenthesesnya, tapi kalau sudah sering mencoba akan mulai terbiasa. Newlisp tidak seperti common lisp dimana construct programnya lebih dekat dengan scheme dan lebih simple bahkan lebih simple dari scheme sekalipun. Seperti juga lisp dan scheme, newlisp juga memiliki interaktif shell atau biasa disebut dengan REPL (read, eval, print, loop).<br />
Balik ke script yang ingin saya buat, idenya sederhana saja yaitu copy file-file yang sudah saya daftarkan pada sebuah file. Oke langkah pertama saya membutuhkan fungsi untuk copy file, di newlisp ada fungsi yang bisa digunakan untuk copy file, yaitu</p>
<p><code>(copy-file file-src file-dest)</code></p>
<p>fungsi tersebut bisa digunakan tetapi jika file-dest terdapat path direktori pada file tujuan maka fungsi tersebut tidak bisa menghandle-nya. Berarti saya membutuhkan fungsi untuk mengambil direktori kemudian membuat direktori tersebut</p>
<p><code>(parse "path/to/a/file.txt" "/") akan me-return list ("path" "to" "a" "file.txt")</code></p>
<p>sedangkan untuk membuat direktori dari list nama direktori tersebut</p>
<p><code>(dotimes (i (- (length list-dest) 1))<br />
(if (directory? (list-dest i))<br />
(change-dir (list-dest i))<br />
(begin<br />
(make-dir (list-dest i))<br />
(change-dir (list-dest i)))))</code></p>
<p>nah berarti saya sudah bisa membuat sebuah fungsi untuk copy file dengan direktorinya</p>
<p><code>(define (my-copy-file src dest)<br />
(begin<br />
(set 'working-dir (real-path))<br />
(set 'src-file (read-file src))<br />
(set 'list-dest (parse dest "/"))<br />
(dotimes (i (- (length list-dest) 1))<br />
(if (directory? (list-dest i))<br />
(change-dir (list-dest i))<br />
(begin<br />
(make-dir (list-dest i))<br />
(change-dir (list-dest i)))))<br />
(write-file (last list-dest) src-file)<br />
(change-dir working-dir)))</code></p>
<p>dan saya dapat memanggilnya dengan</p>
<p><code>(my-copy-file "file.txt" "path/to/a/file.txt")</code></p>
<p>jika folder path/to/a/ belum ada maka akan di-create oleh fungsi tersebut.</p>
<p>to be continued&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://irpan.csui02.net/blog/2009/02/23/simple-script-dengan-newlisp-1/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
