copy จากชื่อที่คัดไว้โดยต่าง extension กัน
คือผมถ่ายรูปแล้วแยก jpg ออกจาก raw (nef) ไฟล์ ซึ่งผมจะนั่งคิดรูปที่เป็น jpg ก่อนแล้วค่อมาหาไฟล์ nef ไปตกแต่ง โครงสร้างเป็นดังนี้-Album |-raw/ |-*.nef |-raw-approved/ |-*.jpg |-jpg-approved |-*.jpg
cd Album/raw for file in ../jpg-approved/* do a=$(basename $file .jpg) cp ./$a.nef ./raw-approved done
gedit และ vim เพื่อการทดแทน textmate
ไม่เคยใช้ mac หรือนะ เลยไม่เคยมี textmate แต่คิดว่า gedit นี่ก็โอเคแล้ว Gmate: http://github.com/lexrupy/gmate/ วิธีลงก็
$ git clone git://github.com/lexrupy/gmate.git $ cd gmate $ sh install.sh
$ git clone git://github.com/akitaonrails/vimfiles.git .vim $cd .vim $ git submodule init $ git submodule update $ cp vimrc ~/.vimrc
git submodule update
คิดจะเปลี่ยน typo เป็นอย่างอื่น
ตอนแรกกะว่าจะเปลี่ยนblog engine ไปใช้อย่างอื่น จะได้เก็บ resource ไว้ให้ลูกค้าใช้ ว่าจะเปลี่ยนเป็น Mephisto น่าจะกิน RAM น้อยอยู่ หรือไม่ก็ไปใช้ drupal wordpress ไปเลย หลังจากนี้จะเล่าประสบการณ์การไปทำ เปลี่ยน Desktop ในองค์กรมาใช้ ubuntu linuxRuby Fork
จากครั้งที่แล้วผมอยากจะเขียน ruby สักอันไว้ทำการ stamp ลายเซ็นพร้อมค่า exif ลงในรูป จากการลองเขียนเป็น thread แล้วปรากฏว่าไม่ค่อยมีประโยชน์เท่าไหร่กลับกลายเป็นว่ามี overhead ขึ้นมาเพียบและก็ทำงานไม่ครบได้ทุก core ที่มี งานส่วนใหญ่ในการทำงานเกี่ยวกับภาพนี่จะเป็นในด้านคำนวนซะเยอะ เลยเขียนเป็นลักษณะ fork ออกมาจะดีกว่าพอลองได้เขียนก็ได้แนวคิดมา 2 แบบ คือ
- ทำงานแบบเป็น lot คือทำพร้อมกันที่ละเท่าๆกัน แล้วรอให้เสร็จหมด ค่อยเริ่ม lot ต่อไป แบบนี้ถ้ามี process ใน lot เสร็จก่อนเพื่อนก็ต้องรอ
- แบบที่สองคือเริ่มทำงานให้เต็มตามที่เรากำหนด ถ้า process ไหนเสร็จก่อนก็เอา process ใหม่มา run ได้เลย แบบนี้จะทำให้การทำงานต่อเนื่อง
My Failure with Ruby Multi-Thread
คือว่าผมใช้ debian + ruby + rmagick เขียน script เพื่อที่จะทำการ stamp รูป แต่มาได้ความคิดว่า อย่าง convert เนี่ย ถ้าเราเรียก- 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
ufraw convert Nikon raw to jpg
วิธีการแปลงไฟล์จาก .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 ที่หลายๆไฟล์ ก็ทำไม่ยากแล้วโดยเรียก
แต่ถ้าขยันๆก็แปลงไปปรับภาพไปทีละรูปแล้วกัน หุห
ImageMagick Resized Multiple ย่อหลายๆรูปด้วย ImageMagick
Make a stamped for a Photo; ทำกรอบรอบรูป
หลังจากที่ได้ 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-Ultraviolet Syntax Highlight
it's support languages as followactionscript, 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













