ปัจจัยในการเลือกผู้ว่า กทม

Posted by Revolution Tue, 16 Sep 2008 14:01:00 GMT

ใกล้เลือกตั้งผู้ว่าฯ กทม. เข้ามาทุกที ก็เลยเขียนไว้ว่าเราจะมีหลักในการเลือกผู้ว่าอย่างไรบ้าง
  • นโยบายของแต่ละคน อันนี้สำคัญที่สุด ผมไม่ได้เลือกเพราะชอบคนนี้ หรือพรรคนี้ หรือปากคนนี้ สำคัญที่นโยบาย ต้องตรงตามกับความต้องการมากที่สุด
  • ขอบเขตและอำนาจผู้ว่าฯ เท่าาที่รู้มาคือผู้ว่าฯ กทม. ก็ไม่ค่อยมีอำนาจเท่าไหร่ เช่นถนนบางสายเป็นของกรมทางหลวง(วิภาวดี,สุขุมวิท,เพชรเกษม) ส่วนใหญ่ก็เป็นของกระทรวงคมนาคม และส่วนนอกเหนืออีกเช่น ตำรวยหัวขวด, BTS, MRT, แม้กระทั่ง ขสมก มันเลยไปกำหนด ข้อที่3
  • Intersect between นโยบายกับขอบเขตอำนาจ ผลลัพธ์ที่ได้คือ สิ่งที่ทำได้จริง
  • ลักษณะการดำเนินนโยบาย พูดง่ายคือ action กับสิ่งที่พูดมายังไง อย่างพวกรับปากพล่อยๆ รถไฟเลียบคลอง (สมัยนั้นพ่อก็ไปลงให้) พอทำไม่ได้ก็โยนไปนู่นโยนไปนี่ ผมอยากได้ไม่ใช่คนรับผิดชอบ ผมอยากได้วิธีการแก้ปัญหา
  • ดูจากผลงานที่ผ่านมา ถ้าใครไม่มีให้ดูประสพการณ์ชีวิต มีบางคนเคยเป็นผู้ว่ามาลงซ้ำ ก็ให้ดูผลงาน แต่ต้องแยกแยะว่าบางอย่างที่เขาอ้างก็ไม่ได้อยู่ในขอบเขตอำนาจของเขา มันเพียงแค่อยู่ใน กทม เท่านั้น ส่วนคนอื่นๆก็ลองดูชีวิตต้องต่อสู้ยังไง ประสพความสำเร็จยังไง แนวทางการดำเนินชีวิตเป็นยัง ปรัชญาในการทำงานเป็นอย่างไร แล้วทั้งหมดนี่ใช้สมองกรองออกมามันตรงตามความต้องการไหม
  • ตัด poll ออกจากหัว ตัดการโฆษณาออกจากหัว ตัดอคติออกจากหัว และที่สำคัญ อย่างเอาการเมืองระดับชาติ มาเป็นองค์ประกอบในการเลือกตั้งการเมืองท้องถิ่น
สิ่งที่สำคัญกว่าการหาตัวคนผิด คือการรับมือกับปัญหาที่มันเกิดขึ้น ผมมีความเชื่อว่าเราไม่สามารถบังคับไม่ให้เกิดปัญหาได้ (cannot avoid problem) แต่เราสามารถรับมือกับปัญหาได้ (handle a problem) ทุกปัญหามันมีทางแก้ (solved problem) เพราะฉะนั้นรู้จักอยู่กับปัญหา (live with problem) แล้วปัญหามันจะไม่น่ากลัว

Tags , ,  | no comments | no trackbacks

resize + unsharp-mask little by little

Posted by Revolution Wed, 10 Sep 2008 16:01:00 GMT

พี่แสนเคยบอกไว้มานานแล้วว่า เวลาย่อรูปเนี่ยเราไม่ควรย่อลงไปให้ได้ขนาดในทันที เช่น จาก 100% ไปเป็น 50% เราคววรจะแบ่งการย่อทีละนิดๆจาก 100% ไปเป็น 75% แล้วค่อยย่อจาก 75% ให้ได้ 50% หลังการย่อแต่ละครั้งให้ทำ unsharp-mask ด้วยจะทำให้ภาพคมขึ้นและดูสวยงาม
My brother SAN told me long time, when I have to resize, I should not resize to aspect ratio immediately such as 100% to 50%. I have to resize little by little from 100% to 75% then resize from 75% to 50 . Then after each resize process, it should be applied unsharp-mask filter. I will make more sharpen.
ผมก็เลยเขียนเพิ่มให้มันเป็นการแบ่งครั้งที่จะทำการ resize ได้ดังนี้
SHARPEN.times do
                nphoto = photo.resize(NEWSIZE**(1.0/SHARPEN))
                photo = nphoto.unsharp_mask
 end

ดูได้จากภาพตัวอย่าง ได้ที่ multiply

Posted in ,  | Tags , , , ,  | no comments | no trackbacks

Ruby Fork

Posted by Revolution Thu, 04 Sep 2008 16:29:00 GMT

จากครั้งที่แล้วผมอยากจะเขียน ruby สักอันไว้ทำการ stamp ลายเซ็นพร้อมค่า exif ลงในรูป จากการลองเขียนเป็น thread แล้วปรากฏว่าไม่ค่อยมีประโยชน์เท่าไหร่กลับกลายเป็นว่ามี overhead ขึ้นมาเพียบและก็ทำงานไม่ครบได้ทุก core ที่มี งานส่วนใหญ่ในการทำงานเกี่ยวกับภาพนี่จะเป็นในด้านคำนวนซะเยอะ เลยเขียนเป็นลักษณะ fork ออกมาจะดีกว่า
พอลองได้เขียนก็ได้แนวคิดมา 2 แบบ คือ
  • ทำงานแบบเป็น lot คือทำพร้อมกันที่ละเท่าๆกัน แล้วรอให้เสร็จหมด ค่อยเริ่ม lot ต่อไป แบบนี้ถ้ามี process ใน lot เสร็จก่อนเพื่อนก็ต้องรอ
  • แบบที่สองคือเริ่มทำงานให้เต็มตามที่เรากำหนด ถ้า process ไหนเสร็จก่อนก็เอา process ใหม่มา run ได้เลย แบบนี้จะทำให้การทำงานต่อเนื่อง
แบบนี้คือการทำงานแบบเป็น Lot
NUMFORK = 2 
getImg = Dir['*.jpg','*.JPG','*.Jpg','*.jpeg'].sort.reverse
Dir.mkdir("stamped") if !File.exist?("stamped")
numFork = 0
while !getImg.empty?
        numFork = numFork + 1
        photo = getImg.pop
        Process.fork{stampit(photo)}
        if numFork == NUMFORK
                Process.waitall
                numFork = 0
        end
end
Process.waitall
ส่วนแบบนี้คือการทำงานแบบต่อเนื่อง
NUMFORK = 2 
getImg = Dir['*.jpg','*.JPG','*.Jpg','*.jpeg'].sort.reverse
Dir.mkdir("stamped") if !File.exist?("stamped")
numFork = 0
while !getImg.empty?
        numFork = numFork + 1
        photo = getImg.pop
        Process.fork{stampit(photo)}
        if numFork >= NUMFORK
                Process.wait
                numFork = numFork - 1
        end
end
Process.waitall
อย่างนี้ก็สบายใช้งานคุ้มทุก core

Posted in ,  | Tags , , , ,  | no comments | no trackbacks

My Failure with Ruby Multi-Thread

Posted by Revolution Wed, 03 Sep 2008 16:57:00 GMT

คือว่าผมใช้ debian + ruby + rmagick เขียน script เพื่อที่จะทำการ stamp รูป แต่มาได้ความคิดว่า อย่าง convert เนี่ย ถ้าเราเรียก
$ convert -resize 1600 *.jpg
มันจะใช้ cpu 1 core เต็มๆ แต่อีก core จะชิวๆ หรือไม่ทำงานยุ่งเกี่ยวกับ convert เลย ก็เลยลองให้มันทำ
$ convert -resize 1600 *[02468].jpg &

$ convert -resize 1600 *[13579].jpg &
ผลลัพท์ที่ได้คือมันใช้ 2 core ทำงาน เป็นเพราะ shell เรียก convert นี่เป็น native ซึ่งมันจะไปทำงานแบบ fork จึงได้ผลลัพทธ์ดังกล่าว จากที่อ่านมา Fork คือ Heavy Weight Process ที่แยก resource กันชัดเจน ส่วน Thread คือ Light Weight Process ที่แบ่งปัน resource ซึ่งกันและกัน แต่ปัญหาอยู่ที่ว่าคือผมเขียน ruby คิดว่าถ้ามันเป็น thread ก็จะน่าได้ผลลัพธ์เช่นเดียวกับการ fork 2 ครั้ง แต่ผลลัพธ์ที่ได้กลับกลายเป็นว่า การทำงานนั้นไม่เต็ม 2 core คือใช้เพียงแค่ 1 core เท่านั้น จากการศึกษาเพิ่มเติมได้ผลออกมาว่า thread นั้นมี 2 แบบคือ user space และ kernel space
  • Kernel space จะเป็น thread แบบ native คือ kernel จะเป็นผู้จัดสรรและสับเปลี่ยน ก็จะได้ประสิทธิภาพตามคุณภาพของ kermel + cpu
  • User space หรือเรียกอีกอย่างว่า Green thread คือ thread ที่ทำงานแบบ time slice โดยผู้รับผิดชอบคือ VM (Virtual Machine) ในกรณีของผมคือ ruby นั่งเอง VM จะทำหน้าที่จัดสรรและสับเปลี่ยน เสหมือนเป็นการจำลอง thread อีกที ผลที่ได้คือ kernel เห็นเป็นเพีบง singel thread จึงทำงานได้เต็มที่แค่ 1 core
สรุปได้ว่า thread บน ruby นั้นป็น green thread จึงได้ผลลัพธ์ดังกล่าว ทางแก้ตอนนี้คือเขียนให้ ruby นั้น fork อีก process ไม่ใช่ว่า ruby thread จะไม่มีประโยชน์ ไว้จะลองเขียน ประโยชน์ของ ruby thread ดู

Posted in ,  | Tags , , , , , ,  | no comments | no trackbacks

ufraw convert Nikon raw to jpg

Posted by Revolution Mon, 11 Aug 2008 10:25:00 GMT

วิธีการแปลงไฟล์จาก .nef ซึ่งเป็น raw จาก nikon ไปเป็น jpg ทำได้โดยติดตั้ง ufraw ลงบนเครื่อง หลังจากนั้นเปิด program เลือกภาพ ตอนแรกๆ สีจะดูจืดมากๆ เป็นเพราะ color profile ของรูปไม่ถูกต้อง โดน default เป็นค่า sRGB ก็ให้ทำการ download ค่าสีที่ถูกต้องจากหน้าเวบของ ufraw ได้เลยเลือกปรับแต่งสีให้โดนใจ แต่ส่วตัวผมใช้ Input profile ของ nikon D80 + Color Matrix, output ใช้ sRGB + intent Perceptual, Display ใช้ sRGB + intent Disable soft proofing
หลังจากนั้นก็ save แล้วมันจะสร้าง .ufrawrc ไว้ที่ home ของเรา เหมือนเป็นค่าที่เราตั้งเอาไว้ หลังจากนี้ถ้าจะทำการ convert ที่หลายๆไฟล์ ก็ทำไม่ยากแล้วโดยเรียก


$ ufraw-batch *.nef --out-type=jpeg --compress=100 --out-path=./jpg --silent --overwrite

แต่ถ้าขยันๆก็แปลงไปปรับภาพไปทีละรูปแล้วกัน หุห

Posted in ,  | Tags , , , ,  | no comments | no trackbacks

ImageMagick Resized Multiple ย่อหลายๆรูปด้วย ImageMagick

Posted by Revolution Mon, 11 Aug 2008 10:19:00 GMT

 $ mogrify -resize 50% -path newdir/ *.jpg

Posted in  | Tags , ,  | no comments | no trackbacks

Make a stamped for a Photo; ทำกรอบรอบรูป

Posted by Revolution Wed, 06 Aug 2008 10:03:00 GMT

หลังจากที่ได้ D80 มาสมใจอยาก เห็นหลายๆคนเวลาแสดงรูปจะมีการแสดงความเป็นเจ้าของโดยใส่ลายน้ำหรือใส่ข้อมูล exif หรือลายเซ็นไว้ ก็เลยอยากจะทำมั่ง ใน Photoshop ก็สามารถเขียน script(java script) ให้ทำทีละหลายๆรูปได้ หรือจะใช้ ACDSee ก็ทำได้ ส่วนสำหรับบน Linux ไม่ค่อยมีข้อมูลเท่าไหร่ แต่ Tools และ Libs เพียบ เลยตกงว่าจะออกกำลังเขียน ไหนๆก็ไหนๆ แล้วเขียนด้วย ruby ซะเลย นี่เป็น version ใช้เอง แต่ก็สามารถเขียนให้ดีกว่านี้เพื่อเอาไปใช้กับงานอื่นๆได้ code License GPL2


After I got D80, I saw many people show up their photos with a water mark, signature, exif data. I think that I have to do same way. Photoshop can do with a script, ACDSee can do also but Linux have no idea about that ( I may not know). By the way ,Linux come wiht many tools and Libs so I make a decision to write a ruby script for do that. This code is under GPL2 License. This version is for my own purpose, it may not be well design.


Requirement: Ruby 1.8.6, RMagick

Usage: run script at same Photo Directory, script will generate a directory "stamped" and file name is "stamped-.jpg" Read more...

Posted in ,  | Tags , ,  | no comments | no trackbacks

Ultraviolet Syntax Highlight

Posted by Revolution Thu, 31 Jul 2008 08:49:00 GMT

it's support languages as follow


actionscript, active4d_html, active4d_ini, active4d_library, active4d, ada, antlr, apache, applescript, asp, asp_vb.net, bibtex, blog_html, blog_markdown, blog_textile, blog_text, build, bulletin_board, cake, camlp4, cm, coldfusion, context_free, css_experimental, css, cs, csv, c, c++, diff, dokuwiki, dot, doxygen, d, dylan, eiffel, erlang, fortran, f-script, fxscript, greasemonkey, gri, groovy, gtdalt, gtd, haml, haskell, html-asp, html_django, html_for_asp.net, html_mason, html_rails, html, html_tcl, icalendar, inform, ini, installer_distribution_script, io, javaproperties, javascript_+_prototype_bracketed, javascript_+_prototype, javascript, java, jquery_javascript, json, languagedefinition, latex_beamer, latex_log, latex_memoir, latex, lexflex, lighttpd, lilypond, lisp, literate_haskell, logo, logtalk, lua, macports_portfile, mail, makefile, man, markdown, mediawiki, mel, mips, mod_perl, modula-3, moinmoin, mootools, movable_type, m, multimarkdown, objective-c, objective-c++, ocamllex, ocaml, ocamlyacc, opengl, pascal, perl, php, plain_text, pmwiki, postscript, processing, prolog, property_list, python_django, python, qmake_project, qt_c++, quake3_config, ragel, r_console, rd_r_documentation, regexp, regular_expressions_oniguruma, regular_expressions_python, release_notes, remind, restructuredtext, rez, r, ruby_experimental, ruby_on_rails, ruby, s5, scheme, scilab, setext, shell-unix-generic, slate, smarty, sql_rails, sql, ssh-config, standard_ml, strings_file, subversion_commit_message, sweave, swig, tcl, template_toolkit, tex_math, tex, textile, tsv, twiki, txt2tags, vectorscript, xhtml_1.0, xml_strict, xml, xsl, yaml, yui_javascript

Posted in  | Tags , ,  | no comments | no trackbacks

Creating a certificate for Apache-SSL : สร้าง SSL ให้กับ apach

Posted by Revolution Thu, 31 Jul 2008 08:18:00 GMT

  • Create a key file:

# openssl genrsa -out key.pem 2048
  • Create a certificate request. You will be asked to give information which will be included in the certificate.
# openssl req -new -key key.pem -out request.pem 
  • Create a self-signed certificate that is valid for a year:
# openssl req -x509 -days 365 -key key.pem -in request.pem -out certificate.pem 
  • Concatenate the key and certificate into a single file:
# cat key.pem certificate.pem >apache.pem


การทำแบบนี้เป็นการทำแบบ slef-signing ให้ไปไฟล์เดียว ไม่ได้ทำแบบ PKI ที่มีความปลอดภัยมากกว่า แต่พอไหวๆ



ที่มา: http://cens.ioc.ee/cens/local/howtos/creating-a-certificate-for-apache-ssl

Posted in  | Tags , ,  | no comments | no trackbacks

วงแหวนอุตสาหกรรม Photo

Posted by Revolution Wed, 23 Jul 2008 05:59:00 GMT

Circle Bridge

Posted in ,  | Tags , ,  | no comments | no trackbacks

Older posts: 1 2 3 ... 11