Showing posts with label smalltalk. Show all posts
Showing posts with label smalltalk. Show all posts

Thursday, August 09, 2007

redo, undo ใน visualwork (smalltalk)

http://www.cincomsmalltalk.com/files/bobw/screencasts/Refactoring_Steroids/

พึ่งรู้ว่า refactoring ใน smalltalk มันทำในขณะที่โปรแกรม(ที่ถูก refactor) กำลังงานอยู่ได้
โดยไม่ต้อง start, stop โปรแกรมเลย
แถมยังทำ redo-undo ได้อีกด้วย (ไม่ต้อง restart โปรแกรมเช่นกัน)

เป็นสภาพแวดล้อมในการพัฒนาที่ดูดีมากเลย.

Related link from Roti

Thursday, July 05, 2007

Squeak Tutorial

หัดเล่น squeak + seaside มาระยะหนึ่งแล้ว
อุปสรรคอย่างแรกสุดในการใช้ ก็คือ สภาพแวดล้อมในการพัฒนา
ที่ค่อนข้างบิดมุมไปจากสิ่งที่เคยคุ้นเคยมา
แถมยังหา tutorial ที่พูดถึงสิ่งที่เราต้องการรู้ได้ยาก
ส่วนใหญ่จะพูดถึงแต่เรื่อง Graphpics (Morphic)

โชคดีที่ใน version 3.9 นี้ มี tutorial ที่ดีมากออกมาด้วย
http://squeak.preeminent.org/tut2007/html/index.html
หลังจากลองเล่นไป section หนึ่ง
ก็ยิ่งพบว่าสภาพแวดล้อมการพัฒนาแบบนี้ มันเจ๋งใช้ได้เลย
จากที่่เคยได้ยินว่า eclipse ได้รับอิทธิพลจาก smalltalk IDE
ก็เห็นชัดเจนแจ่มแจ๋ว
หรือที่เคยรู้ว่า xunit ก็ได้อิทธิพลจาก sunit ของ smalltalk
พอมาใช้ sunit (แม้จะใช้แค่นิดเดียว) แต่ก็รู้สึกถึงความ powerful ของมันได้

อุปสรรคที่สองที่พบเวลาหัดใช้ squeak ก็คือ ตัว image ที่ให้มา
มันไม่เหมาะกับการเป็น developer tool สักเท่าไร
เช่น ไม่มี syntax highlight, ไม่มี code completion
การแก้ไขก็คือ ควรจะ download
เอา image ที่เตรียมไว้สำหรับ developer มาใช้

Related link from Roti

Monday, July 02, 2007

Image in seaside

วันก่อนนั่งแกะ seaside ซึ่งเป็น web application framework ของค่าย smalltalk
ไปเจอ code ส่วนที่จัดการกับ static file เช่นพวก image, css
หน้าตาเป็นแบบนี้

WAFileLibrary subclass: #WAFileLibraryDemo
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'Seaside-Examples-Misc'

mainJpg
^ #(255 216 255 224 0 16 74 70 73 70 0 1
1 1 0 72 0 72 0 0 255 225 0 22 69 120 105
102 0 0 77 77 0 42 0 0 0 8 0 0 0 0 0 0 255
219 0 67 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
...)


อืมม์น่าสนใจวิธีการเก็บ static file มาก
เล่นเก็บเป็น bytearray ใน instance variable เลยแฮะ
ที่เป็นเช่นนี้เพราะโลกของ smalltalk มันเป็นโลกของ virtual machine
ที่มีแต่ object เวียนว่ายตายเกิดในนั้น
การเก็บข้อมูลในรูปแบบนี้ ก็สวยงามไปอีกแบบ

ต่อจากนั้น ก็เลยไปตามหาเอกสารอ่านดู
แน่นอนว่า seaside ของแท้
เอกสารถึงจะค้นใน google ก็ไม่มีให้ดู
ต้องตามไปดู code อย่างเดียว
โชคดีที่ code ที่ port ไปลง cincom smalltalk มีอธิบายไว้ละเอียด

ตัว class ที่รับผิดชอบในการเก็บ static content มีชื่อว่า WAFileLibrary
วิธีที่นิยมใช้กันก็คือ extend ออกมาเป็น class ของเราต่างหาก
จากนั้นก็สามารถใช้ หน้าจอ config ของ seaside upload content ขึ้นไปได้



เวลา render เป็น image tag ก็อ้างถึงแบบนี้
renderContentOn: html
html image
url: WAFileLibraryDemo / #mainJpg


Note: '/' คือชื่อ class method ส่วน #testJpg คือ symbol ที่แทนรูปที่ต้องการ
มี pattern คือ ชื่อ file ของเรา + file extension ที่แปลงตัวแรกเป็นตัวใหญ่
test.jpg -> testJpg

Related link from Roti