ENVIRONMENT
Шэйдр хөгжүүлэх орчноо зөв оновчтой сонгож чадвал бүтээх ажиллагаа хурдан, таатай, зохион байгуулалт сайтай болж чаддаг. Орчны тухай бүгдийг судалж мэдэхэд бага зэрэг хугацаа шаардагдах хэдий ч нэгэнт сурчихсан хойно код бичих ажиллагааг маш хөнгөвчилдөг. Бас нэг чухал зүйл нь та ажилд орлоо гэж бодоход ажиллах орчинтойгоо харьцаж сураагүй бол бусад TD нартай харилцахад томоохон саад тулгарна. Студи болгон өөр өөрийн ажиллах орчинтой боловч ерөнхий зарчим нь ижил. Энэ бүлэгт шэйдр TD нарын хэрэглэдэг ажлын орчин болон түүний ажиллагааны талаар өгүүлэх болно. Энд өгүүлэх арга нь цорын ганцхан шийдэл биш. Гэхдээ энэ аргыг ашиглах нь хамгийн үр дүнтэй ба орчинг өргөтгөж тохируулахад тун хялбар.
CYGWIN
Ихэнхи зурагч нар үндсэн гурван платформ дээр ажилладаг. Windows, Linux ба Mac OS/X. Иймээс ямар үйлдлийн систем ашиглаж байгаагаас үл хамааран зурагчийг ашиглаж болно. Манай дэлхийн ихэнхи хэрэглэгчид Windows үйлдлийн системийг ашигладаг. Та ч үүнийг ашиглаж байгаа байх. Хэрвээ та Linux эсвэл OS/X ашигладаг бол үүнийг уншихгүй орхиж болно. Windows үйлдлийн системийг муулах гээгүй өөрийн туршлагаас хуваалцах гэсэн юм. OS/X -ийг продакшн түвшинд ашиглаж үзээгүй болохоор энд дурдаж чадахгүй. Windows үйлдлийн систем нь сүүлийн үед үнэхээр сайжирч олон олон боломжуудыг агуулсан маш сайн систем болж чаджээ. Гэхдээ л Linux үйлдлийн систем нь шэйдр болон програм хөгжүүлэх олон багаж хэрэгслүүдтэй болохоор асуудлыг маш хялбар шийддэг.
Linux нь файл директоруудын хооронд симбол холбоос хийх болон даалгаврыг автоматчлах маш олон аргуудтай. Тиймээс Windows-ийг бодвол ажиллахад илүү хурдан орчинг бүрдүүлдэг гэж би боддог. Ихэнхи high-end програмууд Linux дээр бусдаасаа илүү ажилладаг. Визуал эффект болон анимаци хийдэг томоохон студи продакшнууд Linux , Windows системийг ашигладаг бөгөөд Linux-ийг түлхүүтэй хэрэглэдэг. Хэрэв та энэ салбарт ажиллах хүсэлтэй бол Linux үйлдлийн системийг гадарладаг байх учиртай. Та Linux системийн ажиллагаатай танилцахын тулд заавал суулгах шаардлагагүй. Хоёр үйлдлийн системийг зэрэг суулгаж дадлага хийх боломж байна. Бас нэг асуудал нь таны хэрэглэдэг ихэнхи програмууд Windows дээр байдаг бол Linux-ийг ашиглаж шэйдр бичих юм. Аз болоход хэсэг хүмүүс CYGWIN нэртэй нээлттэй эх бүхий төслийг хэрэгжүүлсэн. www.cygwin.com.
CYGWIN нь windows үйлдлийн систем дээр Линуксын олон командуудыг агуулсан орчинг бүрдүүлдэг шел програм юм. Та windows ашигладаг бол энэхүү програмыг татаж аван суулгахыг зөвлөж байна. Ингэснээр том студид ашигладаг хэрэгслүүдийг өөрийн Windows систем дээр судлах боломжтой болно.Linux нь файл директоруудын хооронд симбол холбоос хийх болон даалгаврыг автоматчлах маш олон аргуудтай. Тиймээс Windows-ийг бодвол ажиллахад илүү хурдан орчинг бүрдүүлдэг гэж би боддог. Ихэнхи high-end програмууд Linux дээр бусдаасаа илүү ажилладаг. Визуал эффект болон анимаци хийдэг томоохон студи продакшнууд Linux , Windows системийг ашигладаг бөгөөд Linux-ийг түлхүүтэй хэрэглэдэг. Хэрэв та энэ салбарт ажиллах хүсэлтэй бол Linux үйлдлийн системийг гадарладаг байх учиртай. Та Linux системийн ажиллагаатай танилцахын тулд заавал суулгах шаардлагагүй. Хоёр үйлдлийн системийг зэрэг суулгаж дадлага хийх боломж байна. Бас нэг асуудал нь таны хэрэглэдэг ихэнхи програмууд Windows дээр байдаг бол Linux-ийг ашиглаж шэйдр бичих юм. Аз болоход хэсэг хүмүүс CYGWIN нэртэй нээлттэй эх бүхий төслийг хэрэгжүүлсэн. www.cygwin.com.
Most Used Commands
CYGWIN-ийг эхлүүлэхэд DOS-той ижил цонх гарч ирнэ. Энэ цонхон дотор Линукс эмулятор ажиллаж байгаа гэсэн үг. Энэ цонхон дотор ажиллаж эхлэхийн тулд үндсэн командуудыг мэдэх шаардлагатай. Эдгээр командууд нэмэлт аргументуудтай байдаг. Жишээ нь ls командыг авч үзье. Дараахи хэлбэрээр ашиглаж болно.
ls
ls
ls -l
ls /home/username
Эхний хэлбэрээр бичвэл тухайн директор доторхи агуулгыг харуулна. Хоёрдахь хэлбэр нь адил боловч нэмэлт мэдээллийг харуулна. (Файлын эзэмшигч, зөвшөөрөл, үүссэн хугацаа гэх мэт). Сүүлийн команд /home/username директор доторхи агуулгыг харуулна. Хамгийн их хэрэглэгддэг командуудыг жагсааж харцгаая.
Команд Үйлдэл
ls Өгөгдсөн директорын агуулгыг жагсаана
cd Директор солих
pwd Одоогийн директорын замыг харуулна
mkdir Директор үүсгэнэ
rm Файлыг устгана Remove file
rmdir Директорыг устгах
mv Файлыг шилжүүлэх болон нэр солих
cp Файл хуулах
man Командын тусламжыг харуулна
source <file> Файл доторхи командуудыг биелүүлнэ.
Команд Үйлдэл
ls Өгөгдсөн директорын агуулгыг жагсаана
cd Директор солих
pwd Одоогийн директорын замыг харуулна
mkdir Директор үүсгэнэ
rm Файлыг устгана Remove file
rmdir Директорыг устгах
mv Файлыг шилжүүлэх болон нэр солих
cp Файл хуулах
man Командын тусламжыг харуулна
source <file> Файл доторхи командуудыг биелүүлнэ.
Ихэнхи командуудын араас --help нэмбэл хялбаршуулсан тусламжыг харуулдаг. Жишээ нь pwd --help гэж бичвэл pwd: usage: pwd [-PL] гэсэн текстийг харуулна. pwd командыг хэрхэн ашиглахыг харуулж байна. Харин man pwd гэж бичвэл энэ командын тухай бүхнийг агуулсан тусламж гарч ирнэ. Гарахын тулд Q товчыг дарах хэрэгтэй. Ихэнхи командуудын ашиглах заавар өөрт нь байдаг.
UNIX Folder Structure
Линукс үйлдлийн системийн файлын бүтэц нь Windows-оос нэлээн ялгаатай. Линукс системд дискийг тодорхойлсон үсэг байдаггүй. Бүх зүйл root дотор байрлах бөгөөд root-рүү хандахдаа (/) тэмдэгтийг ашиглана. Энэ директор дотор bin, etc, home, lib, tmp, usr, var гэсэн директорууд байрлана. Linux-ийн төрлөөсөө шалтгаалж өөр директорууд ч байж магадгүй. Таны бүх ажил байрлах хавтас бол /home/username юм. CYGWIN-ийг ажиллуулснаар өөрийнхөө хавтаст нэвтэрнэ. pwd командаар шалгаад үзээрэй.
Windows-ийн жинхэнэ байрлал нь ихэвчлэн c:\cygwin\home\username хавтас дотор байдаг. Энэ дотор өөрийн хүссэн хавтасаа үүсгэж болно. Гэхдээ шэйдрээ ондоо газар хадгалж байвал дээр. (C дээр юм хадгалах хэрэггүй, ахин систем суулгахад бүгд устах аюултай) . Хаа нэгтээ шэйдр агуулсан хавтас үүсгээд өөрийн директортой симбол холбоосоор (symlink) холбон ашиглаж болно. Symlink нь Windows үйлдлийн системийн shortcut-тай адил боловч яг л файл директор шиг ашиглаж болдог давуу талтай. Symlink үүсгэхдээ дараахи зарчмыг мөрдөнө.
1. c:\rsl директор үүсгэ
2. CYGWIN-ийг эхлүүлээд өөрийн директор дотор байгаа эсэхээ pwd команд ашиглаж шалга.
Хэрвээ өөр директор дотор байвал cd ~ командыг ашиглан өөрийн директор руу шилжих хэрэгтэй.
3. Дараахи командыг бичнэ: ln -sf /cygdrive/c/rsl rsl.
/cygdrive/c/rsl директортой холбоотой rsl нэртэй холбоос үүснэ. Бодит байршил нь CYGWIN-ий c:\rsl юм. Одооноос эхлэн энэ хавтас дотор ажиллаж эхэлнэ.
It’s All About Speed
Шелтэй ажиллахад анхандаа маш удаан мэт санагдана. Гэвч ажиллаад дасаад ирэхээр ажиллах хурд асар нэмэгддэг гэдгийг өмнө хэлсэн. Надтай уулзсан техникийн захирлууд шел дээр ажилладаг жинхэнэ мастерууд байсан.
Shortcuts and Environment Variables
Байнга нэвтрэх шаардлагатай хэд хэдэн газар байдаг. Линукс систем нь эдгээр байршлууд руу нэвтрэх холбоосыг агуулдаг. Хамгийн өргөн хэрэглэгддэг нь ./, ../, ~ бөгөөд харгалзан одоогийн хавтас, дээд түвшний хавтас, хэрэглэгчийн үндсэн хавтсыг төлөөлнө. Хэрэв та ямар нэг хавтас руу байнга нэвтрэх шаардлагатай бол алиас юмуу орчны хувьсагч үүсгэж ашиглах хэрэгтэй. Орчны хувьсагч нь програмчлалын хэлний хувьсагчтай адил. Утга бүхий симбол тэмдэгт бөгөөд дуудах үед утгыг орлуулж хэрэглэнэ. Орчны хувьсагч үүсгэхдээ CYGWIN дээр дараахи командыг бичнэ.
export DEV=/home/username/rsl
Энэ команд нь rsl хавтсыг заах DEV нэртэй хувьсагчыг үүсгэнэ. Орчны хувьсагч нь зайлшгүй шаардлагатай биш ч гэсэн ихэвчлэн том үсгээр бичигддэг. Энэ хувьсагчийг дараахи маягаар ашиглана.
cd $DEV
cd $DEV
Шелл нь $DEV-ийг доторхи утгаар нь сольж /home/username/rsl хавтас руу шилжинэ. Дараахи маягаар хийсэн ч болохгүй зүйл байхгүй.
export DEV="cd /home/username/rsl"
export DEV="cd /home/username/rsl"
Хэрэв ингэж тодорхойлсон бол $DEV гэж бичихэд л хавтас руу шилжинэ. Ингэж хийхээр нэг асуудал тулгардаг. Директор шилжүүлэхээс өөр зорилгоор хувьсагчийг ашиглах боломжгүй болно. Энийг шийдэх арай дөнгүүр арга нь cd $DEV командын алиасийг үүсгэх юм. Шеллийг хаагаад дахин нээхэд $DEV хувьсагч байхгүй болсон байна. Учир нь орчны хувьсагчийг тухайн шеллийн хувьд локалаар зарласан болохоор хаахад алга болно. Байнга утгаа хадгалах хувьсагчийг хэрхэн зарлах вэ? Шелл ачаалагдахад хэрэглэгчийн хавтаст байгаа файлыг ачаалж соорс хийдэг. Энэ файл нь тухайн хэрэглэгчийн ажиллах орчинг тодорхойлдог. Хэрвээ баш шелл ( CYGWIN ашигладаг) хэрэглэдэг бол .bashrc файлыг хэрэглэгчийн хавтас дотроос ажиллуулна. Энэ файлыг ашиглаж дурын орчны хувьсагчийг нэмж болох бөгөөд шелл эхлэхэд ямар орчинтой зэрэг сонголтуудыг хадгалж болно. Тэгэхээр $DEV орчны хувьсагчаа .bashrc файлд нэмэхэд л хангалттай.
Aliases
, Алиас нь утга хадгалдаг гэдэг утгаараа орчны хувьсагчтай адилхан. Гол ялгаа нь $ тэмдэгтийг хувьсагчийн нэрийн өмнө ашиглах шаардлагагүй. Алиас нь байнга ашигладаг командыг товчилсон хэлбэрээр хэрэглэх арга юм. Алиасыг ашиглахын тулд доорхи командыг .bashrc файлд нэмж өгнө.
alias dev = "cd /home/username/rsl"
Файлыг сануулж хаагаад шинээр шелл нээ. dev гэсэн үгийг бичээд enter дарвал алиаст оноосон утга болох cd /home/username/rsl хавтас руу одоогийн хавтаснаас шилжинэ. .bashrc файл дотор хэд л бол хэдэн алиас тодорхойлж болно. Өөрт хэрэгтэй бүхий л алиасуудыг тодорхойлж ажлаа түргэвчлүүлэх боломж ихтэй. Хэрвээ баш шеллийг ашиглаж байгаа бол алиаст аргумент дамжуулах боломжгүй. Харин csh гэх мэт өөр шеллийг ашиглаж байгаа бол алиас нь аргумент авах бололцоотой. man alias гэж бичээд өөрийн шеллд хэрэглэгдэж байгаа алиасын тухай олж уншаарай.
Tab Completion
Ихэнхи CYGWIN болон Линукс шелл нь таб гүйцээлтийг дэмждэг. Таб гүйцээлт нь одоо байгаа хавтасны агуулга эсвэл системийн PATH нэртэй орчны хувьсагчид агуулагдаж байгаа командаас шалтгаалж бичсэн зүйлийг автоматаар гүйцээдэг. Таны хийх зүйл бол файл, команд, очих хавтасны эхний үсгийг бичээд таб товчоо дарахад хангалттай. Хэрвээ та /usr/lo гэж бичээд Tab дарвал шелл нь /usr/local гэж өргөтгөнө. Хэрвээ xe гэж бичээд Tab дарвал xe-гээр эхэлсэн бүх командыг харуулна. Хэрвээ xe-гээр эхэлсэн нэг л команд байвал шууд орлуулж гүйцээнэ. Таб гүйцээлтийг бичсэн үсэгтэй таарч тохирох хавтасны агуулга болон командуудыг харахад ашигладаг.
Text Editors
Өмнөх бүлэгт үзсэнээр шэйдр зохиогч нь ихэнхи цагаа текст засварлагчтай харилцаж өнгөрөөдөг. Өөрөөр хэлбэл бич, сануул, хөрвүүл, зур, бич, сануул, хөрвүүл, зур гээд л давтагдаад байна. Иймээс өөрт тохирсон текст засварлагчыг зөв сонгох нь туйлаас чухал. Ямар ч текст засварлагчыг ашиглаж болох ч нэгийг нь сонгоод сайн ашиглаж сурах нь дээр. Өмнөх бүлэгт Nedit, Emacs,XEmacs, Vim зэрэг засварлагчдыг өргөн ашигладаг гэж хэлсэн. Сонголтоо хийсэн бол өөртөө сурах цаг зав гаргаж, тусламж гарын авлагыг уншиж танилцаад гол гол түлхүүрүүдийг ашиглаж сурах хэрэгтэй. Эдгээр засварлагчыг өөрийн хэрэгцээнд тохируулж өөрчлөх ч бололцоотой. Эдгээр нь зөв бичилтийг шалгах, хөрвүүлэх команд, хувилбар үүсгэх зэрэг шэйдр хөгжүүлэхэд хэрэг болох бүх хэрэгслийг агуулсан бөгөөд бүх платформ дээр ажилладаг. Бид XEmacs-ийн үндсэн үйл ажиллагаатай танилцана.
Emacs and XEmacs
Emacs нь эрт дээр бүтээгдсэн өргөн боломжуудыг агуулсан текст засварлагч юм. Энэ нь Emacs Lisp language (Elisp) хэлний интерпретер бөгөөд LISP хэлтэй нягт холбоотой. Elisp-ийг ашигласнаар Еmacs-ийн боломж гайхалтайгаар нэмэгддэг. Зарим хүмүүс Elisp ашиглаад Tetris зэрэг тоглоом биччихээд текст засварлагчын буффер дотор тоглодог. Emacs нь Vim-тэй адил шелл дотор ажиллана. Тэгэхээр хулганы заагчыг copy болон paste функцаас өөрөөр ашиглах боломжгүй зөвхөн shortcut болон командын туслалцаатай бүхнийг хийнэ. XEmacs нь Emacs-ийн дараагийн төрөл юм. Яагаад төрөл гэсэн учир нь энэ хоёр бүтээгдэхүүн нь хоорондоо ялгаатай проектын үр дүн юм.
XEmacs -ийг Emacs-ийн ерөнхий чиг хандлагыг тооцоололгүй хэсэг програмист хамтран зохиосон. Emacs-ийн бүх зүйлийг дэмждэг хэрнээ график интерфэйстэй цоо шинэ програм зохиохоор нэгдсэн. Ингэснээр энэ програм нь эхлэн суралцагчдад ашигтай хэрнээ туршлагатай хэрэглэгчдийн хурдтай ажиллах бололцоог хангаж өгсөн. CYGWIN-ийг суулгахад XEmacs автоматаар суудаг. XEmacs-ийг эхлүүлэхийн тулд шеллд xemacs & гэж бичнэ. & тэмдэгт нь шеллд салаалж ажиллах боломжыг олгоно. XEmacs-ийг ачаалсны дараа шелл нь ажиллах боломжтой хэвээр байна. XEmacs суугаагүй бол команд олдсонгүй гэх мессэж илгээнэ. Ийм тохиолдолд Installation Wizard цонхыг идэвхжүүлэн XEmacs-ийн бүх багцыг сонгоод XEmacs-ийг суулгана.Зөв суусан бол дараахи цонх харагдана.
XEmacs -ийг Emacs-ийн ерөнхий чиг хандлагыг тооцоололгүй хэсэг програмист хамтран зохиосон. Emacs-ийн бүх зүйлийг дэмждэг хэрнээ график интерфэйстэй цоо шинэ програм зохиохоор нэгдсэн. Ингэснээр энэ програм нь эхлэн суралцагчдад ашигтай хэрнээ туршлагатай хэрэглэгчдийн хурдтай ажиллах бололцоог хангаж өгсөн. CYGWIN-ийг суулгахад XEmacs автоматаар суудаг. XEmacs-ийг эхлүүлэхийн тулд шеллд xemacs & гэж бичнэ. & тэмдэгт нь шеллд салаалж ажиллах боломжыг олгоно. XEmacs-ийг ачаалсны дараа шелл нь ажиллах боломжтой хэвээр байна. XEmacs суугаагүй бол команд олдсонгүй гэх мессэж илгээнэ. Ийм тохиолдолд Installation Wizard цонхыг идэвхжүүлэн XEmacs-ийн бүх багцыг сонгоод XEmacs-ийг суулгана.Зөв суусан бол дараахи цонх харагдана.
Figure 4.1 Intro screen for the XEmacs editor.
XEmacs нь тун энгийн харагдаж байна. Тун хүчирхэг гэдгийг нь дуулж байсан ч анх хараад жаахан гутармаар санагдсаныг нуух юу байхав. Гоё гялалзсан товч, хөдөлгөөнтэй тусламж зэрэг зүйл байхгүй ч жинхэнэ хүч чадал нь дотроо агуулагдаж байдаг. XEmacs-ийн логотой үндсэн цонх нь буффер засварлагч юм. Энд дарвал scratch буффер гэх хэсэг рүү шилжинэ. Энэ буффер нь sandbox-той адил бөгөөд энд тэмдэглэл, текст, команд зэрэг сануулах зорилгогүй зүйлээ хадгалж болно. XEmacs дээр ачаалсан файл болгон өөрийн буфферийг үүсгэх бөгөөд санах ой болон таны чадвар хүрвэл хэд л бол хэдэн буффер үүсгэж болно. Буферээс буферийн хооронд шилжихдээ дээр байрлах буфер цэс рүү орж сонголт хийнэ. Энэ цонхыг хэд хэд хувааж болох бөгөөд нэгэн зэрэг олон файлтай зэрэг ажиллаж болно. View>Split Window цэсийн командыг ашиглаж хийнэ. View>New Frame командыг ашиглаж шинэ цонх үүсгэнэ.
Дэлгэцийн доод хэсэгт жижиг хэмжээтэй командын буфер байрлана. Команд нь ажиллах хурдыг ихэсгэхэд голлох үүрэгтэй. Хамгийн өргөн хэрэглэгддэг командуудыг жагсааж харахын өмнө XEmacs-ийн семантик болон командын оролтууд ямар хэлбэртэй байдаг тухай судлъя. File цэс рүү ороход Open-ы хажууд C-x C-f гэсэн тэмдэгтүүд байгааг олж харна. Энэ нь Ctrl-x Ctrl-f гэсэн командын товч түлхүүрүүд юм. Өөрөөр хэлбэл ctrl товчийг дарж байгаад угсруулан X болон F товчыг дарж файлыг нээнэ гэсэн үг. Мини буфер дотор Find file:/home/username гэсэн мессэж гарна. Нээх болон үүсгэх файлынхаа нэрийг оруулах хэрэгтэй. (таб гүйцээлт ашиглан үйлдлийг хурдасгах боломжтой)
Хэрэв командын буферт директорын нэрийг оруулж өгвөл доторхи агуулгыг харуулна. Сумаараа дээш доош гүйлгэж текст файлыг сонгоод enter дарахад файл буферт нээгдэнэ. XEmacs-т команд оруулах зарчим иймэрхүү маягаар хийгдэнэ.
Товчлолын утга
M- Alt
C- Ctrl
Командууд
C-x C-s Идэвхитэй буфферийг санах
C-x C-w Идэвхитэй буфферийг тодорхой байрлалд санах
C-x C-f Файлыг шинээр үүсгэх болон онгойлгох
C-x C-k Идэвхитэй буфферийг устгах
C-s Давхацсан бүх текстийг хайх
M-% Текстийг солих
M-g Мөр лүү шилжих
C-x u Засварыг хүчингүй болгох undo
C-x 2 Цонхыг хэвтээгээр хуваах
C-x 3 Цонхыг босоогоор хуваах
C-x 1 Цонхыг нийлүүлэх( энэ цонхыг хадгалж үлдэнэ.)
C-x 0 Цонхыг нийлүүлэх (нөгөө цонхыг хадгалж үлдэнэ.)
C-M-l Өмнөх цонх руу шилжих
C-x C-b Бүх буферийг жагсаах
Товчлолын утга
M- Alt
C- Ctrl
Командууд
C-x C-s Идэвхитэй буфферийг санах
C-x C-w Идэвхитэй буфферийг тодорхой байрлалд санах
C-x C-f Файлыг шинээр үүсгэх болон онгойлгох
C-x C-k Идэвхитэй буфферийг устгах
C-s Давхацсан бүх текстийг хайх
M-% Текстийг солих
M-g Мөр лүү шилжих
C-x u Засварыг хүчингүй болгох undo
C-x 2 Цонхыг хэвтээгээр хуваах
C-x 3 Цонхыг босоогоор хуваах
C-x 1 Цонхыг нийлүүлэх( энэ цонхыг хадгалж үлдэнэ.)
C-x 0 Цонхыг нийлүүлэх (нөгөө цонхыг хадгалж үлдэнэ.)
C-M-l Өмнөх цонх руу шилжих
C-x C-b Бүх буферийг жагсаах
Common Customizations
XEmacs-ийг байгаагаар нь ашиглавал Notepad болон бусад текст засварлагчаас ялгарах зүйлгүй болно. Зөв тохируулж чадсанаар XEmacs-ийг илүү үр дүнтэй IDE болгох бололцоотой. Бид хамгийн чухал бөгөөд зайлшгүй шаардлагатай тохиргоог авч үзнэ.
Syntax Highlighting
Бичилт тодруулагч нь текст засварлагчийн хамгийн энгийн бөгөөд ашигтай шинж чанар. Ийм кодыг унших нь цулгуй өнгөтэй кодыг уншихаас хамаагүй амархан. Эх кодын элемент бүрд харгалзах хээ, нүүрийг таньдаг болоод эхлэхэд кодыг бараг л гүйлгээд унших болно. Бичилт тодруулагч нь ямар төрлийн файлтай ажиллаж байгаагаа гарцаагүй мэдэж байх хэрэгтэй. Файлын өргөтгөл нь ямар төрлийнх гэдгийг нь тодорхойлж өгдөг. Хэрэв .c өргөтгөлтэй файл ашиглаж байгаа бол C-гийнх, .py өргөтгөлтэй бол Python код ачаалагдсан гэж мэднэ. Хэл болгон түлхүүр үг болон ажиллагаанаасаа хамаарч өөрийн гэсэн тодруулалтын зарчмыг баримталдаг. Текст засварлагч файлын төрлийг таньсан бол тодруулаад зогсохгүй догол мөр, зай оруулах зэргээр формат хэлбэрийг ч тохируулдаг.Options>Syntax Highlighting>In This Buffer командыг ашиглан бичилт тодруулагчыг ажиллуулна. Тодруулагч идэвхтэй болоход текстийн өнгө бага зэрэг хувирна. Тохиргоог хадгалахдаа Options>Save Options to ini File командыг ашиглана. Энэ тохиргоо нь /home/username/.xemacs хавтасны custom.el файлд хадгалагдана.Энэ файл нь XEmacs ачаалагдахад хадгалсан бүх тохиргоог хийх үүрэгтэй. Энэ файлыг нээгээд командуудыг уншиж болох ч өөрчлөлт хийх хэрэггүй л болов уу. Хэрвээ буруудвал ахиж тохиргоо хийх шаардлага тулгарч мэднэ.
Face Colors
Бичилт тодруулагч нь ихэнхдээ Elisp дээр бичигдсэн програмын төрөл нэртэй файлыг уншсанаар ажилладаг. Зохиогч нь энэ файл дотор эх кодын бүрдэл хэсэг бүрд харгалзах фонтын хэлбэр, хэмжээ, төрлийг зааж өгдөг. Жишээ нь зохиогч файл нь с-хэлбэрийнх бол XEmacs нь буферийг С хөгжүүлэх платформ гэж үзнэ. Жишээлбэл /* */ тэмдэгтүүдийн хоорондох текст эсвэл // тэмдэгтээр эхэлсэн мөрийг тайлбар гэж мэдээд өөр фонтоор харуулдаг програм шиг ажиллана. Энэ номыг дагалдаж очих rsl-mode файл нь бичилт тодруулах font-lock фонтын олон төрлийн директивийг агуулсан. Options>Advanced>Face командын тусламжтайгаар фонт бүрийн харагдах байдлыг тохируулж болно. Энэ команд нь буферийг нүүр тохируулах хуудас руу шилжүүлнэ. ctrl-s-ийг дарахад текст хайх командын оролт гарч ирнэ. Font гэж бичээд Enter дарахад хамгийн эхэнд олдсон тэмдэгт дээр очно.
Хайлтын үр дүнд эхэлж олдсон Font_Lock_Builtin_Face төрлийг засацгаая. Фонтын харагдах төрхийг өөрчлөхийн тулд баруун тийш заасан гурвалжин дээр дарна. Тэгснээр өөрчлөгдөх бололцоотой бүхий л талбарууд харагдана. Талбар бүрийн хажуу талд байгаа жижиг дөрвөлжинг дарж идэвхжүүлнэ. Фонтын өнгийг улаан болгож өөрчлөхийн тулд Foreground Color талбарын оролтод red гэж бичнэ. Оролтын ард байрлах текст улаан болж байвал боллоо гэж ойлгох хэрэгтэй. Энэ оролт дотор өнгийг тодорхой нэрээр нь эсвэл HTML код дотор ашигладаг шиг 16-тын тооллын системийн кодоор оруулж болно. “hexadecimal colors” гэж гүүглдээд тухайн өнгөнд харгалзах hex кодыг гаргадаг интерактив програмыг олох боломжтой. Builtin Face төрөлд өөрийн хүссэн тохиргоог хийсний дараа State дээр хулганы баруун товчоо дараад Save for Future Sessions-г сонгож өөрчлөлтийг сануулна. rsl-mode-ийг суулгасны дараа font lock-ийн өнгийг солихын тулд мөн энэ зарчмыг баримтална. Default фонтыг өөрчлөхийг ихэнхи хүмүүс хүсдэг. Бичилт тодруулагчид хамрагдаагүй бүх фонтын харагдах байдлыг дээрхи фонт тодорхойлно. Энэхүү фонтын арын дэвсгэр өнгийг солиход засварлагчын фоны өнгө тэр чигтээ солигдоно.
Line and Column Numbers
Алдаа хийдэггүй хүн гэж байдаггүй болохоор шэйдрийн код бичихэд ч адилхан алдаа гаргадаг. Нэгийг нь засахаар өөр газар алдаа илэрдэг. Аз болоход RSL хөрвүүлэгч нь алдааг илрүүлэн мэдээлэхдээ үнэхээр сайн. PRMan-ы хөрвүүлэлтийн алдаа дараахи маягтай харагдана.
"s_RP_tile01.sl", line 55: ERROR: syntax error
"s_RP_tile01.sl", line 55: ERROR: Invalid or absent parameter default
"s_RP_tile01.sl", line 213: ERROR: Undeclared variable reference "Nf"
"s_RP_tile01.sl", line 216: ERROR: Undeclared variable reference "Nf"
"s_RP_tile01.sl", line 217: ERROR: Undeclared variable reference "Nf"
55-р мөрөнд байрлах бичилтийн алдааг олох хэрэгтэй болвол XEmacs-ийн мөр рүү шилжих командыг (Alt-g) ашиглаад шууд очно. Хэдийгээр XEmacs нь мөр, баганы дугаарыг харуулдаггүй боловч шэйдрийг дебаг хийх болон CVS эсвэл SVN-аар хувилбаржуулсан файлыг нэгтгэхэд мөрийн дугаарыг ашиглах нь маш ашигтай. Миний хийсэн хамгийн том шэйдр болох убер нь толгой болон сан файлуудыг оролцуулахгүй 5 файл бүхий 6000 мөр кодоос бүрдэж байсан. Мөр болон баганы дугаарыг ашигласнаар хөрвүүлэлт хийхэд үнэхээр хялбар болсон. Баганы дугаар нөгөөхөө бодвол ашиг багатай. Гэхдээ нэг мөрөнд 75-аас бага тэмдэгт байвал уншихад хялбар. Асар урт мөрийг уншиж засварлах гэж үйлээ үзнэ. Options>Display>Line Numbers болон Options>Display>Column Numbers -аар мөр баганы дугаарыг дэлгэцэнд харуулна. Засварлагч цонхны доор гарч байгаа тоонууд нь мөр баганы дугаар юм. Мөрийн дугаарын ард L , баганы дугаарын ард C үсэг харагдана.
Tab Space
Эх кодын хэсэг блок нь дээд мөрөнд байрлах кодын баганаас хойхно байрласан бол уншиж ялгахад тун хялбар болдог. Энэ практикийг Python төгс хэрэгжүүлдэг бөгөөд программын ажиллагаа мөрийн өмнөх зайнаас тэр чигтээ хамаарна. Кодоо хурдан бичихийн тулд ихэнхи програмистууд таб товчыг ашиглан зай барьж явдаг. Энийг хэрэгжүүлэхэд тулгардаг асуудал нь засварлагч болгоны таабын хэмжээ өөр өөр байдаг. Өөр засварлагч дээр бичсэн кодыг нээхэд унших ямар ч бололцоогүй, замбараагүй харагдах тохиолдол элбэг таарна. Учир нь зохиогч таабын хэмжээг зөв зааж өгөөгүй болохоор тэр. Код бичих стандартаар таабын хэмжээг 4 хоосон зай гэж тооцдог. Xemacs-ийг ингэж тохируулахын тулд Options>Advanced (Customize) > Editing> Basics> Tab Width -руу орж жижиг гурвалжны хажууд 4 гэж бичээд State дээр хулганы баруун товчыг даран Save for Future Sessions-г сонгоно.
rsl-Mode Installation
Энэ номын дагалдах CD дээр rsl-mode.el нэртэй файл байгаа. Энэ нь XEmacs ба Emacs-ийн RSL хэлний дэмжигч юм. Энэхүү файл нь бичилт тодруулагч, зайг тохируулагч, хамгийн өргөн хэрэглэгддэг зурагчууд руу хөрвүүлж харах функц түлхүүрүүдийг агуулсан. rsl-mode файл нь Elisp-ийн команд хувьсагчуудыг л агуулсан болохоор өөрийн хэрэгцээнд тохируулж өөрчлөн хэрэглэх боломжтой. Хэрхэн өөрчлөх заавар нь www.gnu.org/software/emacs/elisp-manual/html_mono/elisp.html. хуудсан дээр байрлаж байгаа.
Өөрчлөлт хийхийн өмнө хуучин файлыг нөөцлөх зайлшгүй шаардлагатай. Файлыг ажиллагаанд оруулахын тулд home/.xemacs хавтас руу хуулна. .xemacs хавтаст байрлах custom.el файлыг нээж дараахи командыг файлын төгсгөлд нэмж өгөх хэрэгтэй.
(load-library '"~/.xemacs/rsl-mode")
Өөрчлөлт хийхийн өмнө хуучин файлыг нөөцлөх зайлшгүй шаардлагатай. Файлыг ажиллагаанд оруулахын тулд home/.xemacs хавтас руу хуулна. .xemacs хавтаст байрлах custom.el файлыг нээж дараахи командыг файлын төгсгөлд нэмж өгөх хэрэгтэй.
(load-library '"~/.xemacs/rsl-mode")
rsl-mode-ийн тусламжийг харахыг хүсвэл командын мөрөнд M-x describe-function гэж бичнэ. Энэ нь дараахи мессэжийг дэлгэцэнд харуулна:
(rsl-mode)
(rsl-mode)
Documentation:
Major mode for editing RenderMan shaders.
This is actually just C mode with commands for compiling and rendering shaders.
C-c C-c save buffer & compile shader for PhotoRealistic RenderMan
C-c C save buffer & compile shader for BMRT
C-c 3 save buffer & compile shader for 3Delight
C-C a save buffer & compile shader for aqsis
C-c C-r call render with the current RIB file (PRman Unix)
C-c M-r call render with the current RIB file (PRman Win32)
C-c R call rendrib with the current RIB filename (BMRT)
C-c M-3 call render with the current RIB file (3delight)
C-C M-a call render with the current RIB file (aqsis)
C-c C-s set the current RIB filename (default is rman.rib)
C-c C-i set the current include directories as LISP list of strings;
each string denoting one directory. For example (at the prompt):
("/usr/local/shaders" "/usr/shaders").
Src (source) хавтсан дотор шэйдрийн төрөл бүрд харгалзах шинэ хавтасуудыг үүсгэнэ. Мөн энэ хавтаст include директорыг байршуулж бүх файлын сан, толгой файлуудыг хадгална. include директорт ашиглах сан бүрдээ шинэ хавтас нээж өгнө. CD-н дээр байгаа shaderDev.tgz архив файл доторхи бүх *.h өргөтгөлтэй файлыг arman нэртэй хавтас үүсгэж хуулна. Эдгээр нь Ларри Гриц, Тони Аподак нарын Advanced RenderMan номоо бичиж байхдаа хөгжүүлж, ашигласан толгой файлууд юм. Эдгээр толгой файлууд нь тун хэрэгтэй учраас энэ номыг уншихыг зөвлөж байна. Шэйдр зохиогч аль ашигтайг зүйлсийг нь авч өөрийн хэрэгцээнд тохируулан ашиглаж сурах хэрэгтэй болохоос өмнө нь судлагдсан зүйлийг дахин нээх гэж оролдох шаардлагагүй.
Include хавтас дотор RSLP (RSLProgramming) нэртэй директор үүсгэх хэрэгтэй. Энэ директор дотор өөрсдийн үүсгэсэн бүх файлын сангууд , толгой файлыг хадгалах хэрэгтэй. Сангаа зөв зохион байгуулах нь хойшид тун их хэрэг болдог. Rsl хавтсан дотор rel нэртэй директор байрлах бөгөөд хөрвүүлсэн шэйдрүүд хадгалагдана. Эдгээр шэйдрийг ашиглах болвол зурагчыг энэ хавтастай холбож өгөх хэрэгтэй.
Хэрвээ та нэг файл шалгах шаардлагатай боллоо гэхэд хянагч буюу менежер програм нь тухайн файлын хуулбарыг өөрийн орон зайд байршуулна. Түүгээр ч зогсохгүй файлын мэдээлэлд хамааралтай өөр хавтас, файлыг ч үүсгэнэ. Файлд өөрчлөлт хийсний дараа менежер програм танаас асуулт асууж өөрчлөгдсөн он, сар, өдөр, хувилбарын дугаар зэрэг мэдээллийг тамгалан дарж хадгална. Менежер програм нь файлын өөр өөр хувилбаруудыг өөртөө хадгалах тул өмнөх хувилбарыг та хэдийд ч сэргээх боломжтой. Энэхүү зарчим нь группээр ажилладаг газар тохиромжтой ба томоохон студиуд энэ аргыг хэрэглэдэг. Шейдр бичихэд энэ зарчмыг ашигла гэж тулгахгүй ч сурчихсан байхад хамтран ажиллагсадтайгаа ойлголцоход хялбар, ажлын зохион байгуулалт сайжирна.
ЗУРАГ Дутуу
Зураг 4.3 ерөнхий төвтэй хувилбар үүсгэх системийн нэг төрлийг харуулсан бөгөөд хэрэглэгч файлуудыг өөрийн локал директорт авчран шалгаж ашиглах боломжтой, өөрчлөлт хийсний дараа буцаан байршуулдаг. Интернэт дээр маш олон төрлийн хувилбар үүсгэх систем байдаг ба тэдгээрийн ихэнхи нь үнэгүй байдаг. Эдгээрийн ихэнхи нь багийн ажиллагаанд хэрэглэгдэхээр загварчлагдсан байдаг. Харин бусад нь нэг л хөгжүүлэгчид зориулагдсан ба өөрийн кодын хяналт удирдлагыг эмх цэгцтэй болгоход зориулагдсан. Доорхи хэсэгт Revision Control System (RCS) болон Subversion (SVN) гэсэн маш өргөн тархсан групп, хувь хүнд зориулсан хувилбар үүсгэх системийг танилцуулна. Илүү их мэдээллийг сайтаас нь олж авах боломжтой.
Хэрэв хэрэглэгч файлд засвар хийх зорилгоор хандвал түгжээтэй гэсэн төлөв дээр байх бөгөөд хэн ч файлыг засварлахын тулд түгжээг тайлж чадахгүй. Энэ нь хөгжүүлэлтийн багийн хамтын ажиллагаа болон хурдыг бууруулж хязгаарладаг боловч хөгжүүлэгч тус бүрийн хувьд өөрийн ажиллаж буй файлын хувилбаруудыг оновчтой зөв зохион байгуулах боломжыг олгодог. RCS-ийг суулгахад туйлын хялбар. Эхлээд RCS суусан эсэхийг CYGWIN шел дээр шалгахын тулд дараахи командыг оруулж өгнө.
> rcs -h
Хэрвээ дээрхи команд олдохгүй бол RCS-ийг суулгах хэрэгтэй. Хувилбараа хадгалахыг хүссэн дурын директор дотор RCS директорыг үүсгэнэ. Энэ директор нь ихэвчлэн таны эх код, include болон баримтууд байдаг. RCS нь одоогийн директор дотор байрлах RCS директорыг хайж олоод үүн дотор бүх хувилбар файлуудыг хадгалдаг. Энэ нь ажлын орчинг цэвэрхэн байлгадаг. Хүссэн файлаа дараахи командын туслалцаатайгаар хувилбартай болгоно.
> ci filename
Командыг оруулсны дараа файлын тайлбарыг оруулна уу гэсэн хүсэлт гарч ирэх бөгөөд хүссэнээ оруулаад Ctrl-d дарж төгсгөнө. Файл нь локал директороос устаж харин түүний хувилбар нь RCS директор дотор үүснэ. Доорхи командыг оруулж файлыг засварлаж болно.
> co -l filename
-l параметр нь файлыг түгжээтэй эсэхийг шалгах тул засвар хийхийн тулд зайлшгүй байх ёстой. Орхигдуулсан тохиолдолд файл нь зөвхөн read-only горимд нээгдэнэ. Цагыг хэмнэх үүднээс ci -l filename командыг ч ашиглаж болно. Энэхүү команд нь эхлээд файлыг шалгаад дараа нь түгжээтэй эсэхийг шалгадаг бөгөөд эдгээр үйлдлүүдийг нэг алхмаар гүйцэтгэдэг. Файлыг шалгах бүр програм нь ямар лог мессэжийг оруулах вэ гэж асуудаг. Үүнийг ч нэг алхамаар гүйцэтгэх боломжтой. Командын ард -m параметрийг нэмж оруулна.
> ci -l -m"This is a the log message" filename
-m болон тэмдэгт мөрийн хооронд хоосон зай байх ёсгүй гэдгийг анхаараарай. RCS-ийг ашиглан хувилбар үүсгэсэн файлын лог мессэжийг харахдаа rlog командыг ашиглана. Энэ команд нь хувилбарт оруулсан лог бичлэгийг хэвлэж харуулахаас гадна үүсгэсэн огноо, хэрэглэгч зэрэг нэмэлт мэдээллийг харуулдаг.
>rlog filename
Бас нэг чухал командын нэг нь rcsdiff юм. Энэхүү команд нь хувилбаруудын хоорондох ялгааг дэлгэцэнд хэвлэж харуулна. Хамгийн өргөн ашигладаг арга нь :
> rcsdiff filename
> rcsdiff -r1.1 filename
Эхний команд нь одоогийн ажиллаж байгаа файл болон хамгийн сүүлийн хувилбарын хоорондын ялгааг харуулна. Харин хоёрдахь нь ажиллаж байгаа файлыг -r параметрын ард бичигдсан хувилбартай харьцуулж харуулна. RCS-д хамаарах өөр олон команд, параметрууд байдаг. Эдгээрийн ашиглалтын тухай www.gnu.org/software/rcs/rcs.html хаягаар болон “RCS tutorial” гэж вебээр хайгаад илүү ихийг мэдэх бололцоотой. Командыг өмнө man гэж бичээд хэрхэн ашиглах зааврыг харж болно. Хамгийн их ашиглагддаг зарим командыг доор жагсааж бичлээ.
rcsmerge Хувилбарыг нэгтгэн
Суулгаж тохиргоо хийхэд ярвигтай ч нэг ашиглаад эхэлсэн байхад тун амар байдаг. Нэг хэрэглэгч SVN-ийг ашиглахад арай ахдах хэдий ч томоохон студи , продакшнд ажиллах гэж байгаа хүмүүст сайн бэлтгэл болж өгнө.
Subversion -ийг http://subversion.tigris.org/ сайтаас үнэгүй татаж хэрэглэж болно. Хэрэв CYGWIN шел ашигладаг бол анхнаасаа суусан байх боломжтой. CYGWIN шелийг нээгээд svn -h гэж оруулна. Хэрэв команд олдохгүй байна гэвэл CYGWIN-ий setup програмыг ахин уншуулж Subversion-ийг суулгана. Дээрхи сайт дээр ашиглахад хялбар Subversion клиентүүдийг жагсаасан байдаг. TortoiseSVN нь ашиглахад хамгийн хялбар клиент юм. TortoiseSVN нь SVN-ий ихэнхи үйлдлүүдийг агуулсан шелийн өргөтгөл юм.
> svnadmin create svn_repo
Энэ команд нь svn_repo нэртэй директорыг үүсгэнэ. Энэ директор дотор файлыг зөв зохион байгуулах хэчнээн л бол хэчнээн модулийг үүсгэж болно. Агуулах бэлэн болсон учраас shaders нэртэй модулийг svn_repo дотор нэмж үзүүлье.
> mkdir src
> svn import src file:///home/username/svn_repo/shaders/src -m "Initial Commit"
Анхны хувилбар үүсэж баталгаажсан тухай мессэжийг харуулна. Нэг зүйл анхааруулахад таны үүсгэсэн src хавтасыг SVN нь хянахгүй бөгөөд өөрийн хувилбартай src хавтасыг агуулах дотор үүсгэн түүнийгээ ашигладаг. Иймээс өөрийн үүсгэсэн src хавтсыг ашиглахад тохиромжгүй. Бид энэ хавтасыг устгаж цоо шинэ шэйдр модулийг ~/rsl хуулахдаа доорхи командыг ашиглана.
> rmdir src
> cd ~/rsl
> svn co file:///home/username/shaders/src
Амжилттай болсон эсэх талаар мессэж ирэх бөгөөд хэрэв амжилттай болвол энэ хавтасан дотор ажиллах боломжтой болсон гэсэн үг.
Common Operations
Бидний нэн түрүүнд хийх ёстой зүйл бол энэ бүлгийн эхэн хэсэгт дурдаж байсан хавтасуудыг үүсгэх явдал мөн. ~/rsl/src хавтас руу орон include, surface, displacement ба light гэсэн хавтас үүсгэнэ.
> cd ~/rsl/src
> mkdir surface include displacement light
Одоо эдгээр хавтасыг агуулахад нэмэх ёстой. Ингэснээр SVN нь эдгээр хавтасууд хувилбар үүсгэдэг системд хамааралтай болсоныг мэдэх юм. Үүнийг хийхийн тулд add командыг ашиглана. Өмнө нь дурдаж байсанчлан SVN нь RCS-ийг бодвол бага зэрэг төвөгтэй. Системд бүртгэгдээгүй файл байх аваас тэр нь ажиллахгүй. Доорхи командыг ашиглан хавтасыг агуулахад нэмнэ.
> svn add surface include displacement light
> svn add *
Дараахи хэлбэртэй цуврал мессэжүүд дэлгэцэнд харагдана.
A displacement
A include
A light
A surface
Хавтаснууд агуулахад нэмэгдсэнийг илэрхийлж буй боловч тэд системээс бүрэн хамааралтай боллоо гэсэн үг биш. Файл хавтаснуудыг агуулахад нэг л удаа нэмэх шаардлагатай ба түүнээс хойш хөгжүүлэлтийн төрөл бүрийн шатанд файлыг системд хамааруулж хэрэглэх боломжтой. Хавтасыг системийн хамааралтай болгохдоо доорхи командыг ашиглана.
> svn commit -m "initial commit" displacement include light surface
Хэрэв та хөгжүүлэлтийн багийн нэгэн гишүүн бол бусад гишүүдийн сүүлд хийсэн өөрчлөлтүүдийг хадгалсан файл, хавтасуудаар өөрийн source tree-г байнга шинэчлэж байх шаардлагатай. Шинэчлэл хийхдээ SVN нь өөрчлөлт хийгдээгүй локал файлуудыг шууд солих ба өөрчлөл хийгдсэнийг нь нэгтгэх замаар зохицуулдаг. Энэ нь зарим тохиолдолд өөрт байгаа хуулбарт мөргөлдөөн , зөрчил үүсгэх ба таны кодыг эвдлэх ч магадлалтай. Хэрэв зөрчил үүслээ гэсэн мессэж авсан бол тухайн файлыг нээж гар аргаар засах шаардлагатай. Shading агуулах дотор байгаа бүх файлыг шинэчлэхдээ src хавтас руу нэвтэрч доорхи командыг бичнэ.
> svn update
Зөвхөн тодорхой нэг файл, хавтасыг шинэчлэхдээ командын араас файлын нэрийг зааж өгнө.
> svn update filename
Боловсруулалт хийгдсэн файл бүрт харгалзах нэг үсгийг харуулдаг. Энэ үсэг нь файл ямар хэлбэрээр шинэчлэгдсэн бэ гэдгийг харуулна. Эдгээр үсгүүд нь дараахь утгуудыг төлөөлнө.
■ A Added (нэмэгдсэн)
■ D Deleted (устгасан)
■ U Updated (шинэчлэгдсэн)
■ C Conflict (зөрчилдөөнтэй)
■ G Merged (нийлүүлсэн)
RCS-тэй адилхан хоёр файлын ялгааг харуулдаг diff команд хамгийн их ашиглагддаг. Энэ команд нь одоогийн файлыг сүүлийн хувилбар эсвэл -r параметрийн ард зааж өгсөн хувилбартай харьцуулж ялгааг нь харуулдаг. Жишээ нь:
> svn diff -r 12 filename
одоогийн ажиллаж байгаа файл ба r12 хувилбарын хоорондахь ялгааг харуулна. Харин
> svn diff filename
дээрхи үйлдэл нь хамгийн сүүлд үүсгэсэн хувилбартай харьцуулж харуулна. Та SVN-ий талаархи үндсэн ойлголтуудыг мэдэж авлаа. Командын мөрөөс ажиллуулах уу эсвэл ямар нэг клиент ашиглах уу гэдэг нь таны шийдэх хэрэг.
Folder Structure
Á¿õ ç¿éëèéã îéëãîìæòîé òîäîðõîé áàéëãàõûí òóëä àæëûí õàâòàñ, äèðåêòîð ¿¿ñãýõ õýðýãòýé. Ýíèéã çààâàë äàãàæ ìºðäºõ àëáàã¿é ÷ доорхи зурган дээр үзүүлсэн шиг директорыг зохион байгуулах нь õàìãèéí îíîâ÷òîé болохыг ººðèéí îëîí æèëèéí òóðøëàãаар мэдсэн.
Зураг 4.1
Src (source) хавтсан дотор шэйдрийн төрөл бүрд харгалзах шинэ хавтасуудыг үүсгэнэ. Мөн энэ хавтаст include директорыг байршуулж бүх файлын сан, толгой файлуудыг хадгална. include директорт ашиглах сан бүрдээ шинэ хавтас нээж өгнө. CD-н дээр байгаа shaderDev.tgz архив файл доторхи бүх *.h өргөтгөлтэй файлыг arman нэртэй хавтас үүсгэж хуулна. Эдгээр нь Ларри Гриц, Тони Аподак нарын Advanced RenderMan номоо бичиж байхдаа хөгжүүлж, ашигласан толгой файлууд юм. Эдгээр толгой файлууд нь тун хэрэгтэй учраас энэ номыг уншихыг зөвлөж байна. Шэйдр зохиогч аль ашигтайг зүйлсийг нь авч өөрийн хэрэгцээнд тохируулан ашиглаж сурах хэрэгтэй болохоос өмнө нь судлагдсан зүйлийг дахин нээх гэж оролдох шаардлагагүй.
Include хавтас дотор RSLP (RSLProgramming) нэртэй директор үүсгэх хэрэгтэй. Энэ директор дотор өөрсдийн үүсгэсэн бүх файлын сангууд , толгой файлыг хадгалах хэрэгтэй. Сангаа зөв зохион байгуулах нь хойшид тун их хэрэг болдог. Rsl хавтсан дотор rel нэртэй директор байрлах бөгөөд хөрвүүлсэн шэйдрүүд хадгалагдана. Эдгээр шэйдрийг ашиглах болвол зурагчыг энэ хавтастай холбож өгөх хэрэгтэй.
Versioning Systems
RSL дээр ажиллах тусам хэлний ажиллагаа болон концепт ойлгомжтой болж эхэлнэ. Энэ номонд үзсэн жишээг өөрчилж функцууд ч нэмэх чадвартай болно. Файлд өөрчлөлт засвар хийгээд явж байхад гэнэт өөр дүн гарч хүссэнээр ажиллахаа болих үе тохиолддог. Ийм үед зүгээр ажиллагаатай анхны файлаа эргээд сэргээх гэхэд хэт оройтсон байх тохиолдол гардаг. Үүнийг шийдэх энгийн арга нь байнга эх файлынхаа хуулбартай ажиллах. Ингэж ажиллахаар маш олон файл үүсдэг ба ялангуяа арын тоог нь нэмэж сануулаад явах тоолонд. Бас нэг асуудал нь ямар өөрчлөлт хийснээ санахаа байх тохиолдол байнга гардаг. Жишээ нь myshader04.sl нь myshader03.sl-ээс ямар ялгаатай болохыг мэдэхийн тулд файлыг нээж харахаас өөр аргагүй байдалтай тулгарна. Файлын дээд талд тайлбар хийгээд явах бололцоотой ч уншихын тулд бас л , нээхээс өөр сонголт байхгүй. Эх кодод хувилбар хийдэг хэрэгслийг түгээмэл ашигладаг бөгөөд нэгээс нөгөө хувилбар луу шилжихэд лог үүсгэж, хувилбаруудыг хянаж байдаг. Ажиллах зарчим нь тун энгийн юм. Файл, хавтас, модуль эсвэл бүгдийнх нь ажиллагаатай хуулбарыг шалгаж болохуйц төв агуулах байна.Хэрвээ та нэг файл шалгах шаардлагатай боллоо гэхэд хянагч буюу менежер програм нь тухайн файлын хуулбарыг өөрийн орон зайд байршуулна. Түүгээр ч зогсохгүй файлын мэдээлэлд хамааралтай өөр хавтас, файлыг ч үүсгэнэ. Файлд өөрчлөлт хийсний дараа менежер програм танаас асуулт асууж өөрчлөгдсөн он, сар, өдөр, хувилбарын дугаар зэрэг мэдээллийг тамгалан дарж хадгална. Менежер програм нь файлын өөр өөр хувилбаруудыг өөртөө хадгалах тул өмнөх хувилбарыг та хэдийд ч сэргээх боломжтой. Энэхүү зарчим нь группээр ажилладаг газар тохиромжтой ба томоохон студиуд энэ аргыг хэрэглэдэг. Шейдр бичихэд энэ зарчмыг ашигла гэж тулгахгүй ч сурчихсан байхад хамтран ажиллагсадтайгаа ойлголцоход хялбар, ажлын зохион байгуулалт сайжирна.
ЗУРАГ Дутуу
Зураг 4.3 ерөнхий төвтэй хувилбар үүсгэх системийн нэг төрлийг харуулсан бөгөөд хэрэглэгч файлуудыг өөрийн локал директорт авчран шалгаж ашиглах боломжтой, өөрчлөлт хийсний дараа буцаан байршуулдаг. Интернэт дээр маш олон төрлийн хувилбар үүсгэх систем байдаг ба тэдгээрийн ихэнхи нь үнэгүй байдаг. Эдгээрийн ихэнхи нь багийн ажиллагаанд хэрэглэгдэхээр загварчлагдсан байдаг. Харин бусад нь нэг л хөгжүүлэгчид зориулагдсан ба өөрийн кодын хяналт удирдлагыг эмх цэгцтэй болгоход зориулагдсан. Доорхи хэсэгт Revision Control System (RCS) болон Subversion (SVN) гэсэн маш өргөн тархсан групп, хувь хүнд зориулсан хувилбар үүсгэх системийг танилцуулна. Илүү их мэдээллийг сайтаас нь олж авах боломжтой.
RCS
Revision Control System (RCS) нь GNU-сангаас гаргасан ASCII файлын олон хувилбарыг хянаж зохицуулах үүрэгтэй командын мөр хэлбэртэй программ юм. Суулгаж ашиглахад тун хялбар, файлыг задалж зөөхөд маш хурдтай ажилладаг. 1980- аад оны эхээр анх хөгжүүлж эхэлсэн ба эх кодыг хянах систем хэлбэртэй байсан. RCS нь файлын одоо байгаа хувилбарыг бүрэн эхээр нь хадгалахаас гадна одоо байгаа файл болон өмнөх хувилбарын хоорондох ялгааг хадгалах зарчмаар ажилладаг. RCS нь нэг эх үүсвэр дээр ажиллаж байгаа нэгээс олон хөгжүүлэгчдийн хооронд үүсэж болох төөрөгдлийг арилгах, багасгах зорилготой. Нэгээс олон хүн тухайн файлд өөрчлөлт хийхээр болвол түгжих-өөрчлөх-түгжээг тайлах гэсэн хандалт хязгаарлах зарчмыг ашиглана.Хэрэв хэрэглэгч файлд засвар хийх зорилгоор хандвал түгжээтэй гэсэн төлөв дээр байх бөгөөд хэн ч файлыг засварлахын тулд түгжээг тайлж чадахгүй. Энэ нь хөгжүүлэлтийн багийн хамтын ажиллагаа болон хурдыг бууруулж хязгаарладаг боловч хөгжүүлэгч тус бүрийн хувьд өөрийн ажиллаж буй файлын хувилбаруудыг оновчтой зөв зохион байгуулах боломжыг олгодог. RCS-ийг суулгахад туйлын хялбар. Эхлээд RCS суусан эсэхийг CYGWIN шел дээр шалгахын тулд дараахи командыг оруулж өгнө.
> rcs -h
Хэрвээ дээрхи команд олдохгүй бол RCS-ийг суулгах хэрэгтэй. Хувилбараа хадгалахыг хүссэн дурын директор дотор RCS директорыг үүсгэнэ. Энэ директор нь ихэвчлэн таны эх код, include болон баримтууд байдаг. RCS нь одоогийн директор дотор байрлах RCS директорыг хайж олоод үүн дотор бүх хувилбар файлуудыг хадгалдаг. Энэ нь ажлын орчинг цэвэрхэн байлгадаг. Хүссэн файлаа дараахи командын туслалцаатайгаар хувилбартай болгоно.
> ci filename
Командыг оруулсны дараа файлын тайлбарыг оруулна уу гэсэн хүсэлт гарч ирэх бөгөөд хүссэнээ оруулаад Ctrl-d дарж төгсгөнө. Файл нь локал директороос устаж харин түүний хувилбар нь RCS директор дотор үүснэ. Доорхи командыг оруулж файлыг засварлаж болно.
> co -l filename
-l параметр нь файлыг түгжээтэй эсэхийг шалгах тул засвар хийхийн тулд зайлшгүй байх ёстой. Орхигдуулсан тохиолдолд файл нь зөвхөн read-only горимд нээгдэнэ. Цагыг хэмнэх үүднээс ci -l filename командыг ч ашиглаж болно. Энэхүү команд нь эхлээд файлыг шалгаад дараа нь түгжээтэй эсэхийг шалгадаг бөгөөд эдгээр үйлдлүүдийг нэг алхмаар гүйцэтгэдэг. Файлыг шалгах бүр програм нь ямар лог мессэжийг оруулах вэ гэж асуудаг. Үүнийг ч нэг алхамаар гүйцэтгэх боломжтой. Командын ард -m параметрийг нэмж оруулна.
> ci -l -m"This is a the log message" filename
-m болон тэмдэгт мөрийн хооронд хоосон зай байх ёсгүй гэдгийг анхаараарай. RCS-ийг ашиглан хувилбар үүсгэсэн файлын лог мессэжийг харахдаа rlog командыг ашиглана. Энэ команд нь хувилбарт оруулсан лог бичлэгийг хэвлэж харуулахаас гадна үүсгэсэн огноо, хэрэглэгч зэрэг нэмэлт мэдээллийг харуулдаг.
>rlog filename
Бас нэг чухал командын нэг нь rcsdiff юм. Энэхүү команд нь хувилбаруудын хоорондох ялгааг дэлгэцэнд хэвлэж харуулна. Хамгийн өргөн ашигладаг арга нь :
> rcsdiff filename
> rcsdiff -r1.1 filename
Эхний команд нь одоогийн ажиллаж байгаа файл болон хамгийн сүүлийн хувилбарын хоорондын ялгааг харуулна. Харин хоёрдахь нь ажиллаж байгаа файлыг -r параметрын ард бичигдсан хувилбартай харьцуулж харуулна. RCS-д хамаарах өөр олон команд, параметрууд байдаг. Эдгээрийн ашиглалтын тухай www.gnu.org/software/rcs/rcs.html хаягаар болон “RCS tutorial” гэж вебээр хайгаад илүү ихийг мэдэх бололцоотой. Командыг өмнө man гэж бичээд хэрхэн ашиглах зааврыг харж болно. Хамгийн их ашиглагддаг зарим командыг доор жагсааж бичлээ.
rcsmerge Хувилбарыг нэгтгэн
Subversion
Subversion ( SVN) нь өөр нэгэн хувилбар үүсгэх систем бөгөөд үнэ төлбөргүй хэрэглэх боломжтой. SVN нь хамгийн өргөн ашиглагддаг CVS хувилбар хянах системийг орлож гарахаар бүтээгдсэн. Тиймээс CVS системийн зарим алдааг залруулж сайжруулсан боловч гол зарчмууд нь ижил гэж ойлгоход болно. Энэ систем нь хуулах-өөрчлөх-нэгтгэх гэсэн зарчмаар ажилладаг учраас маш олон програмистууд зэрэг хөгжүүлэлт хийдэг орчинд тун нийцэж ажилладаг. Суулгаж тохиргоо хийхэд ярвигтай ч нэг ашиглаад эхэлсэн байхад тун амар байдаг. Нэг хэрэглэгч SVN-ийг ашиглахад арай ахдах хэдий ч томоохон студи , продакшнд ажиллах гэж байгаа хүмүүст сайн бэлтгэл болж өгнө.
Subversion -ийг http://subversion.tigris.org/ сайтаас үнэгүй татаж хэрэглэж болно. Хэрэв CYGWIN шел ашигладаг бол анхнаасаа суусан байх боломжтой. CYGWIN шелийг нээгээд svn -h гэж оруулна. Хэрэв команд олдохгүй байна гэвэл CYGWIN-ий setup програмыг ахин уншуулж Subversion-ийг суулгана. Дээрхи сайт дээр ашиглахад хялбар Subversion клиентүүдийг жагсаасан байдаг. TortoiseSVN нь ашиглахад хамгийн хялбар клиент юм. TortoiseSVN нь SVN-ий ихэнхи үйлдлүүдийг агуулсан шелийн өргөтгөл юм.
Setting Up a Repository
Нэн түрүүнд хийх чухал шаардлагатай зүйл бол бүх кодыг хадгалах төв агуулах хаана байрлах вэ гэдгийг тодорхойлох юм. Энэ агуулахыг нэвтрэхэд хялбар байршилд үүсгэх хэрэгтэй. Ихэнхдээ өөрөө ашиглана гэж тооцвол home директорийг сонгох хэрэгтэй. Хэрвээ олон хөгжүүлэгч зэрэг ажилладаг бол дээрхи байрлал тун зохимжгүй гэдэг нь ойлгомжтой. Энэ тохиолдолд нэвтрэхэд хялбар, хамгаалалт сайтай /usr/local/ гэх мэт байрлал оновчтой шийдэл болно. cd командыг ашиглан өөрийн home директорт нэвтэрч доорхи командыг оруулна.> svnadmin create svn_repo
Энэ команд нь svn_repo нэртэй директорыг үүсгэнэ. Энэ директор дотор файлыг зөв зохион байгуулах хэчнээн л бол хэчнээн модулийг үүсгэж болно. Агуулах бэлэн болсон учраас shaders нэртэй модулийг svn_repo дотор нэмж үзүүлье.
> mkdir src
> svn import src file:///home/username/svn_repo/shaders/src -m "Initial Commit"
Анхны хувилбар үүсэж баталгаажсан тухай мессэжийг харуулна. Нэг зүйл анхааруулахад таны үүсгэсэн src хавтасыг SVN нь хянахгүй бөгөөд өөрийн хувилбартай src хавтасыг агуулах дотор үүсгэн түүнийгээ ашигладаг. Иймээс өөрийн үүсгэсэн src хавтсыг ашиглахад тохиромжгүй. Бид энэ хавтасыг устгаж цоо шинэ шэйдр модулийг ~/rsl хуулахдаа доорхи командыг ашиглана.
> rmdir src
> cd ~/rsl
> svn co file:///home/username/shaders/src
Амжилттай болсон эсэх талаар мессэж ирэх бөгөөд хэрэв амжилттай болвол энэ хавтасан дотор ажиллах боломжтой болсон гэсэн үг.
Common Operations
Бидний нэн түрүүнд хийх ёстой зүйл бол энэ бүлгийн эхэн хэсэгт дурдаж байсан хавтасуудыг үүсгэх явдал мөн. ~/rsl/src хавтас руу орон include, surface, displacement ба light гэсэн хавтас үүсгэнэ.
> cd ~/rsl/src
> mkdir surface include displacement light
Одоо эдгээр хавтасыг агуулахад нэмэх ёстой. Ингэснээр SVN нь эдгээр хавтасууд хувилбар үүсгэдэг системд хамааралтай болсоныг мэдэх юм. Үүнийг хийхийн тулд add командыг ашиглана. Өмнө нь дурдаж байсанчлан SVN нь RCS-ийг бодвол бага зэрэг төвөгтэй. Системд бүртгэгдээгүй файл байх аваас тэр нь ажиллахгүй. Доорхи командыг ашиглан хавтасыг агуулахад нэмнэ.
> svn add surface include displacement light
> svn add *
Дараахи хэлбэртэй цуврал мессэжүүд дэлгэцэнд харагдана.
A displacement
A include
A light
A surface
Хавтаснууд агуулахад нэмэгдсэнийг илэрхийлж буй боловч тэд системээс бүрэн хамааралтай боллоо гэсэн үг биш. Файл хавтаснуудыг агуулахад нэг л удаа нэмэх шаардлагатай ба түүнээс хойш хөгжүүлэлтийн төрөл бүрийн шатанд файлыг системд хамааруулж хэрэглэх боломжтой. Хавтасыг системийн хамааралтай болгохдоо доорхи командыг ашиглана.
> svn commit -m "initial commit" displacement include light surface
Хэрэв та хөгжүүлэлтийн багийн нэгэн гишүүн бол бусад гишүүдийн сүүлд хийсэн өөрчлөлтүүдийг хадгалсан файл, хавтасуудаар өөрийн source tree-г байнга шинэчлэж байх шаардлагатай. Шинэчлэл хийхдээ SVN нь өөрчлөлт хийгдээгүй локал файлуудыг шууд солих ба өөрчлөл хийгдсэнийг нь нэгтгэх замаар зохицуулдаг. Энэ нь зарим тохиолдолд өөрт байгаа хуулбарт мөргөлдөөн , зөрчил үүсгэх ба таны кодыг эвдлэх ч магадлалтай. Хэрэв зөрчил үүслээ гэсэн мессэж авсан бол тухайн файлыг нээж гар аргаар засах шаардлагатай. Shading агуулах дотор байгаа бүх файлыг шинэчлэхдээ src хавтас руу нэвтэрч доорхи командыг бичнэ.
> svn update
Зөвхөн тодорхой нэг файл, хавтасыг шинэчлэхдээ командын араас файлын нэрийг зааж өгнө.
> svn update filename
Боловсруулалт хийгдсэн файл бүрт харгалзах нэг үсгийг харуулдаг. Энэ үсэг нь файл ямар хэлбэрээр шинэчлэгдсэн бэ гэдгийг харуулна. Эдгээр үсгүүд нь дараахь утгуудыг төлөөлнө.
■ A Added (нэмэгдсэн)
■ D Deleted (устгасан)
■ U Updated (шинэчлэгдсэн)
■ C Conflict (зөрчилдөөнтэй)
■ G Merged (нийлүүлсэн)
RCS-тэй адилхан хоёр файлын ялгааг харуулдаг diff команд хамгийн их ашиглагддаг. Энэ команд нь одоогийн файлыг сүүлийн хувилбар эсвэл -r параметрийн ард зааж өгсөн хувилбартай харьцуулж ялгааг нь харуулдаг. Жишээ нь:
> svn diff -r 12 filename
одоогийн ажиллаж байгаа файл ба r12 хувилбарын хоорондахь ялгааг харуулна. Харин
> svn diff filename
дээрхи үйлдэл нь хамгийн сүүлд үүсгэсэн хувилбартай харьцуулж харуулна. Та SVN-ий талаархи үндсэн ойлголтуудыг мэдэж авлаа. Командын мөрөөс ажиллуулах уу эсвэл ямар нэг клиент ашиглах уу гэдэг нь таны шийдэх хэрэг.
No comments:
Post a Comment