Showing posts with label limnux. Show all posts
Showing posts with label limnux. Show all posts

Tuesday, December 28, 2010

Power Session with Screen No.2

Терминалийн олон цонхтой ажилладаг хүнд бол screen хамгийн догь таарах байх. Цонхноос цонхонд шилжих, copy+paste хийх, текст хайх зэрэг нь үнэхээр гарын дор. Өөрийн ашигладаг аргачлалаа хуваалцъя.

Screen цонхон дотор таабууд нээх боломжтой. Өнгө будаг, харагдац мэтээр нэмэлт тохиргоог бүрэн хийдэг. Үүнийг .screenrc файлд байршуулна. .vimrc файлаар Vim-ийн анхдагч араншинг тодорхойлдог шиг.

screen дотор хэд хэдэн тааб нээхэд нэр нь 0 bash | 1 bash | 2 bash мэтээр харагдах вий. Аль таабад нь юу байгаа нь мэдэгдэхгүй жаахан төвөгтэй. Ctrl + a; Shift + a коммандаар таабын нэрийг солих боломжтой. Энэ мэтээр дараахь 3 цонхыг нэрлэсэн байна гэж саная:

0 log | 1 emacs | 2 test/spec

Ctrl + a; 2 түлхүүрээр test/spec цонх руу, Ctrl + a; 0 -оор лог урсаж байгаа цонх руу үсрэх нь. Таабыг дараалан шилжиж байж сая зорьсон газраа ирдэгийн дэргэд бол том дэвшил.

Програм бичих бүрт screen тааб нээх, нэрлэх комманд цохихоос жаахан төвөгшөөж байгаа бол нь доорхи жижиг скриптийг .profile, эсхүл .bashrc файлдаа хуулаарай. Хэрэглэгч логин хийх бүрт $HOME/.railsdev файлыг үүсгэх боловч, shell-тэй холбоотой бүх тохиргоо нэг дор байх юм, өөрөөр хэлбэл засварыг нэг л файлд хийнэ гэсэн үг. За тэгээд төстэй байдлаар янзан бүрийн workspace үүсгэж болно. Доорхи жишээний хувьд терминаль дээр railsdev гэсэн комманд цохиход миний өмнө 0 server | 1 shell | 2 coding | 3 irb | 4 dbconsole гэсэн тааб бүхий screen програм нээгдэх нь.


Зураг 1. 5 тааб бүхий workspace үүссэн байдал

Файлын агуулга:

===== $HOME/.bashrc =====

cat <<END > $HOME/.railsdev
source $HOME/.screenrc
screen -t server
screen -t shell
screen -t coding
screen -t irb
screen -t dbconsole
END

function railsdev {
screen -S railsdev -c $HOME/.railsdev
}

==== $HOME/.screenrc ====

defencoding utf8
hardstatus on
hardstatus alwayslastline
hardstatus string "%{= wk} %-w%{=b dk} %n %t %{-}%+w %= [%H] %m/%d %c%{-}"
bind s colon "screen ssh"
defscrollback 1024

attrcolor b ".I"
termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
defbce "on"
term xterm-256color


Эрхэмээгийн бичсэн "Power Session with Screen" постыг заавал уншаарай. Сисадминууд, connection over ssh ашигладаг хүмүүст ихээ хэрэгтэй эд. Удалгүй хэн нэгэн нь Power Session with Screen No.3-г бичих байх аа гэж найдаж байна.

Уг постыг бичих санаа Google Buzz дээр өрнөсөн энэ хэлэлцүүлгээс үүдэлтэй болно. Нэг харчихаарай, хэрэгтэй зүйл нэмэгдсэн байх вий.

Update: Доорхи .screenrc файлаар screen маань cygwin дээр асуудалгүй ажиллах нь.


$ cat .screenrc
# Change scrollback to 10000 lines
defscrollback 10000

# status line at the bottom
hardstatus on
hardstatus alwayslastline
hardstatus string "screen %n (%t)%? [%h]%?"
caption always '%{yb} %H %{k}|%L=%= %{w}%?%-Lw%45L>%?%{=b bR}[%{W}%n%f %t%?(%u)%?%{=b bR}]%{= bw}%?%+Lw%?%?%=%-30= %{k}|%{Y}%l%{k}|%{=b C} %m/%d %c %{W}'


Sunday, February 21, 2010

Зургийн файлыг PDF рүү хөрвүүлэн нэгтгэх нь

Төслийн эхлэл болоод төгсгөл шатанд хэн хүнгүй бичиг баримттай зууралдах хэрэгцээ нэлээдгүй гардаг. Шивээд нэг файлд эмхэтгэдэг word, excel мэтийн баримтууд бол яах вэ, асуудал алга. Аа харин тодорхой дэс дараа бүхий сканнердсан цаас, эсхүл зураг хөрөг мэт нь багагүй арчилгаа шаарддаг. Жаахан хайнга хандсан үед хөл толгой нь үл мэдэх зунгаарсан садаа болж хувирах нь ч бий.

Жишээлбэл надад тамгалаад, батлачихсан гэрээ(8 хуудас) байлаа гэж саная. Хуудас хуудсаар нь сканнердаад, 8 ширхэг зураг болгочихно. Дараа нь энэ бүгдээ Trac, Redmine зэрэг хамтын ажиллагаа, төслийн удирдлагын талбарт хуулна. 8 удаа browse товч дарахад хамаа алга гэхэд түүнийг үзэх, ашиглах хүнд баахан төвөгтэй. Болдог бол бүгдийг нь базаад нэг PDF файл болгочихмоор. Хуулахад ч, үзэхэд ч, маллахад ч амар. Тэгвэл яаж үүнийг хийх вэ?

Танд imagemagick[1] тус болно. За ингээд, алхам алхмаар хамтдаа хийж үзье. Танд дараахь зургийн файлууд байгаа гэж саная:

$ ls -lh
total 19M
-rwxr-xr-x 1 battur battur 2.7M 2010-02-21 19:24 DSC_0801.JPG
-rwxr-xr-x 1 battur battur 2.6M 2010-02-21 19:24 DSC_0802.JPG
-rwxr-xr-x 1 battur battur 2.6M 2010-02-21 19:24 DSC_0803.JPG
-rwxr-xr-x 1 battur battur 2.0M 2010-02-21 19:24 DSC_0804.JPG
-rwxr-xr-x 1 battur battur 2.0M 2010-02-21 19:24 DSC_0805.JPG
-rwxr-xr-x 1 battur battur 2.4M 2010-02-21 19:24 DSC_0806.JPG
-rwxr-xr-x 1 battur battur 2.2M 2010-02-21 19:24 DSC_0807.JPG
-rwxr-xr-x 1 battur battur 2.2M 2010-02-21 19:24 DSC_0808.JPG

Ер нь бол нэг нь л дор хаяад 3 мега байт(3008x2000) хүртэл хэмжээтэй гэвэл эднийг тэр чигт нь PDF болговол веб рүү хуулж барахгүй нүсэр том хэмжээтэй болох байх. Ийм учраас юуны түрүүнд бүх зургаа 1200 пикселийн өргөнтэй болгож хэмжээг нь багасгая(өндөр нь дагаад багасна):

$ mogrify -resize 1200 *.JPG
$ ls -lh
total 1.3M
-rw-r--r-- 1 battur battur 198K 2010-02-21 19:25 DSC_0801.JPG
-rw-r--r-- 1 battur battur 199K 2010-02-21 19:25 DSC_0802.JPG
-rw-r--r-- 1 battur battur 188K 2010-02-21 19:25 DSC_0803.JPG
-rw-r--r-- 1 battur battur 126K 2010-02-21 19:25 DSC_0804.JPG
-rw-r--r-- 1 battur battur 127K 2010-02-21 19:25 DSC_0805.JPG
-rw-r--r-- 1 battur battur 166K 2010-02-21 19:25 DSC_0806.JPG
-rw-r--r-- 1 battur battur 144K 2010-02-21 19:25 DSC_0807.JPG
-rw-r--r-- 1 battur battur 142K 2010-02-21 19:25 DSC_0808.JPG

Үүний дараагаар багассан зургуудаа нэг PDF файлд нэгтгэе:

$ convert *.JPG 201002_Geree_XYZCompany.pdf
Segmentation fault

Уул нь дээрх тушаал байхад л хангалттай боловч миний машин алдаа өгөөд явсангүй. Нэг дор олон файл хөрвүүлж дийлэхгүйгээс бус ганц ганцаар нь бол чадаад байна.

$ ls | grep JPG | while read name; do \
convert $name ${name/JPG}PDF; done; ls -lh
total 2.6M
-rw-r--r-- 1 battur battur 198K 2010-02-21 19:25 DSC_0801.JPG
-rw-r--r-- 1 battur battur 202K 2010-02-21 19:27 DSC_0801.PDF
-rw-r--r-- 1 battur battur 199K 2010-02-21 19:25 DSC_0802.JPG
-rw-r--r-- 1 battur battur 204K 2010-02-21 19:27 DSC_0802.PDF
-rw-r--r-- 1 battur battur 188K 2010-02-21 19:25 DSC_0803.JPG
-rw-r--r-- 1 battur battur 193K 2010-02-21 19:27 DSC_0803.PDF
-rw-r--r-- 1 battur battur 126K 2010-02-21 19:25 DSC_0804.JPG
-rw-r--r-- 1 battur battur 130K 2010-02-21 19:27 DSC_0804.PDF
-rw-r--r-- 1 battur battur 127K 2010-02-21 19:25 DSC_0805.JPG
-rw-r--r-- 1 battur battur 130K 2010-02-21 19:27 DSC_0805.PDF
-rw-r--r-- 1 battur battur 166K 2010-02-21 19:25 DSC_0806.JPG
-rw-r--r-- 1 battur battur 170K 2010-02-21 19:27 DSC_0806.PDF
-rw-r--r-- 1 battur battur 144K 2010-02-21 19:25 DSC_0807.JPG
-rw-r--r-- 1 battur battur 148K 2010-02-21 19:27 DSC_0807.PDF
-rw-r--r-- 1 battur battur 142K 2010-02-21 19:25 DSC_0808.JPG
-rw-r--r-- 1 battur battur 146K 2010-02-21 19:27 DSC_0808.PDF

Тэгвэл олон PDF файлыг нэгтгэчихдэг програм бий болов уу? Хайлаа... Байна! GhostScript[2] :) Нэгтгэе:

$gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=201002_Geree_XYZCompany.pdf -dBATCH *.PDF && ls -lh
GPL Ghostscript 8.70 (2009-07-31)
Copyright (C) 2009 Artifex Software, Inc. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Processing pages 1 through 1.
Page 1
Processing pages 1 through 1.
Page 1
Processing pages 1 through 1.
Page 1
Processing pages 1 through 1.
Page 1
Processing pages 1 through 1.
Page 1
Processing pages 1 through 1.
Page 1
Processing pages 1 through 1.
Page 1
Processing pages 1 through 1.
Page 1
total 2.9M
-rw-r--r-- 1 battur battur 289K 2010-02-21 19:28 201002_Geree_XYZCompany.pdf
-rw-r--r-- 1 battur battur 198K 2010-02-21 19:25 DSC_0801.JPG
-rw-r--r-- 1 battur battur 202K 2010-02-21 19:27 DSC_0801.PDF
-rw-r--r-- 1 battur battur 199K 2010-02-21 19:25 DSC_0802.JPG
-rw-r--r-- 1 battur battur 204K 2010-02-21 19:27 DSC_0802.PDF
-rw-r--r-- 1 battur battur 188K 2010-02-21 19:25 DSC_0803.JPG
-rw-r--r-- 1 battur battur 193K 2010-02-21 19:27 DSC_0803.PDF
-rw-r--r-- 1 battur battur 126K 2010-02-21 19:25 DSC_0804.JPG
-rw-r--r-- 1 battur battur 130K 2010-02-21 19:27 DSC_0804.PDF
-rw-r--r-- 1 battur battur 127K 2010-02-21 19:25 DSC_0805.JPG
-rw-r--r-- 1 battur battur 130K 2010-02-21 19:27 DSC_0805.PDF
-rw-r--r-- 1 battur battur 166K 2010-02-21 19:25 DSC_0806.JPG
-rw-r--r-- 1 battur battur 170K 2010-02-21 19:27 DSC_0806.PDF
-rw-r--r-- 1 battur battur 144K 2010-02-21 19:25 DSC_0807.JPG
-rw-r--r-- 1 battur battur 148K 2010-02-21 19:27 DSC_0807.PDF
-rw-r--r-- 1 battur battur 142K 2010-02-21 19:25 DSC_0808.JPG
-rw-r--r-- 1 battur battur 146K 2010-02-21 19:27 DSC_0808.PDF

Ингээд л боллоо до. Одоо ч хуулаад, хуваалцаад байна бид дэ хө ;)
Хэрэггүй гэж үзвэл зургаа мөн ганц хуудастай PDF файлуудаа устгана биз ээ.

Дүгнэлт:
  • Линукст хар мянган гоё програм бий.
  • Линуксчид "дугуй"-г дахин нээж цагаа үрдэггүй.
  • Линукс бол бүтээмжит хүний хөлөглөх унаа.

Тайлбар:

[1] ImageMagick® is a software suite to create, edit, and compose bitmap images. It can read, convert and write images in a variety of formats (over 100) including DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, and TIFF. Use ImageMagick to translate, flip, mirror, rotate, scale, shear and transform images, adjust image colors, apply various special effects, or draw text, lines, polygons, ellipses and Bézier curves.

The functionality of ImageMagick is typically utilized from the command line or you can use the features from programs written in your favorite programming language. Choose from these interfaces: G2F (Ada), MagickCore (C), MagickWand (C), ChMagick (Ch), ImageMagickObject (COM+), Magick++ (C++), JMagick (Java), L-Magick (Lisp), NMagick (Neko/haXe), MagickNet (.NET), PascalMagick (Pascal), PerlMagick (Perl), MagickWand for PHP (PHP), IMagick (PHP), PythonMagick (Python), RMagick (Ruby), or TclMagick (Tcl/TK). With a language interface, use ImageMagick to modify or create images dynamically and automagically.

ImageMagick is free software delivered as a ready-to-run binary distribution or as source code that you may freely use, copy, modify, and distribute. Its license is compatible with the GPL. It runs on all major operating systems. Эх сурвалж: http://www.imagemagick.org/

[2] Ghostscript is a suite of software based on an interpreter for Adobe Systems' PostScript and Portable Document Format (PDF) page description languages. Эх сурвалж: Википедиа.