Skip to content

Joshua (Chinzorig)

Stable, secure, efficient, reusable and fun to develop

Юун түрүүн JxPipe гэж нэрийн тухай тайлбарлавал энэ нь Joshua Xtreme Pipelined PHP гэсэн утгатай үг юм. Өөрөөр хэлбэл Joshua-гийн Xtreme сангийн нэг хэсэг болох Pipeline хэлбэрийн модулууд дээр суурилсан объект хандалтат PHP гэсэн утгатай.

JxPipe бол Php дээр вэб систем хөгжүүлэх Framework юм. Тэртээ тэргүй маш олон янзын framework-ууд байдаг шүү дээ. Жишээ нь Zend Framework, Symphony Framework, Drupal (more like CMS), Joomla гэх мэт.

Эдгээрээс чухам юугаараа өөр юм бол гэж одоо бодож байгаа биз дээ. Тэгвэл JxPipe framework маань эдгээрээс эрс ялгаатай, өөр programming paradigm дээр суурилсан юм. Дөхүүлж хэлвэл илүү компонент дээр тулгуурласан гэх юм уу даа.

Энэхүү framework нь ASP.NET, Zend, Symphony гэх мэт framework-уудын аль онцлог талуудыг ТУСГАСАН (тэр чигт нь хуулсан гэсэн үг биш) бөгөөд мэдээж PHP дээр хэрэгжүүлж болох, мөн танд програм бичихэд аль болох тус болохоор маш олон модуль, контрол, үйлчилгээнүүдийг агуулсан юм.

Юу гэдгийг нь үзэх хамгийн сайн арга бол та өөрөө ашиглаад үзэх юм шүү дээ. Тун удахгүй Demo сайт болон татаж авах холбоос зэргийг байршуулах болно.

Үүнээс өмнө энэхүү Framework – ийн онцлогуудыг товчоор дурдвал:

  • Доод талын шаардлага нь : PHP 5.2 болон түүнээс дээш, учир нь энэхүү систем бол бүрэн объект хандалтат учраас PHP – ийн хамгийн сүүлийн дэвшилтэт объект технологийг ашигладаг юм
  • Бараг тохиргоо хийхгүйгээр (routing rule бичихгүйгээр) SEO friendly URL модуль. Энэ нь та дараах маягийн URL хэрэглэж болно гэсэн үг юм.  /news/2005/06/дүүргийн-цагдаа.html, /shopping/auction/checkout.jxp, /shopping/product/winter-shoe.html, /blog/id/304/ гэх мэт бүх төрлийн загвар бүхий хаяг
  • Subdomain routing буюу дэд домэйнийг зам болгож хувиргах. Үүнийг ашиглаж та дараах URL тэй ажиллах боломжтой: members.jxpipe.com => www.jxpipe.com/members/,  joshua.jxpipe.com => www.jxpipe.com/members/joshua/ гэх мэт
  • URL нь Google, Yahoo зэрэг search crawler-уудад нийцэхээр дасан зохицох, ямар ч илүү код бичихгүйгээр бүгд автоматаар хийгдэх болно.
  • Програмистуудад зориулан Universal Url Manager – хөгжүүлэгчид сайтаа хийхдээ дан ганц хэлбэрийн URL ашиглана. Дараа нь хүссэнээрээ сайтынхаа хаягын бүтцийг өөрчлөх боломжтой, гайхалтай биш гэж үү
  • Энэхүү платформ нь эхнээсээ л ХУРД, ХУРД ХУРД гэдгийг харгалзаж үзсэн тул аль болох хурдан алгоритм, арга зэргийг ашигладаг
  • I18L буюу та сайтаа маш хялбар аргаар олон хэл дээр хийж болно. LanguageManager үйлчилгээний тусламжтайгаар та сайтынхаа хувилбаруудыг XML файл дотор орчуулаад л гүйцээ, таны сайт таны хүссэн бүх хэл дээр ажиллах боломжтой.
  • Localization нь User Interface хэсэгт нөлөөлөөд зогсохгүй datetime, formatting зэрэгт давхар нөлөөлнө.
  • JxPipe framework нь объект хандалтат framework бөгөөд Extension буюу өргөтгөгдөж болохоор зохиогдсон. Та системийн бүхий л хэсэгт тодорхойлсон үзэгдлүүдэд хариу үйлдэх замаар системийг өргөтгөх боломжтой.
  • Системийг суурилуулах, суулгасан хойноо тохируулах зэрэг маш хялбар. Бүх зүйлийг XML тохиргоогоор хийж болно.
  • Мэйл, лог бичих зэрэг маш олон модультай
  • Өгөгдлийн баазыг ашиглах нь JxPipe системийн хувьд хамгийн хялбар байх болно. Бусад системийг бодвол илүү давуу талтай, Database Abstraction Layer – тэй байх юм. Мөн transaction management – ийг сайн шийдэж өгсөн байна
  • Inheritance дээр суурилсан templating систем буюу master page – маягын аргыг хэрэглэдэг
  • Viewstate, Control State зэрэг State хадгалах механизмтай
  • Ajax, page call, control call зэрэг үйлчилгээтэй
  • Бичсэн програмаа тестлэх хэрэгслүүдтэй. жишээлбэл trace manager.
  • Өөрийн гэсэн Authentication manager, Session Manager, Request Fitler manager зэрэг системийн HOOK ашиглан ажилдаг модулуудтай
  • Хамгаалалт маш сайн, хамгаалалтын зэрэг, хугацаа, хүч, ачаалал зэргийг та өөрийн системд тохируулан бүгдийг XML тохиргоондоо тохируулах боломжтой.
  • Нэгдсэн КОНТРОЛ ДЭЭР СУУРИЛСАН системтэй. Контрол бол markup бичих хамгийн бага нэгж юм. Контрол нь өөрийн гэсэн state-ийг постоос постын хооронд хадгалах чадвартай.
  • Дараа дараагийн хувилбаруудад системд олон төрлийн модуль, контролууд нэмэгдэх болно. Та бүхнийг өөрийн модуль, контролоо нэмэх байх гэдэгт итгэлтэй байна.
  • Page – ийг кэшлэх, url-ийн query, request-ийн header гэх параметрээр нь тодорхой хугацааны туршид кэшлэх
  • Мөн нэгдсэн кэш систем, кэш хамаарал буюу тодорхой өгөгдлөөс хамаарч кэш нь автоматаар устах ч юмуу
  • ..
  • гэх мэт маш олон онцлог шинжтэй …

Энэ бол бидний өдөр болгон ашигладаг компайлер, виртуаль машин болон хөрвүүлэгч программыг хэрхэн ажилдаг, улмаар хэрхэн өөрсдөө бичих тухай нийтлэл юм. Энэ нийтлэлийг та уншсанаар виртуаль машины үндсэн ажиллах зарчмыг та мэдэх болно, үүнийг мэдвэл таны программыг ойлгох хүрээ тань улам тэлж цаашлаад .NET framework, Java, php зэрэг нь хоорондоо зарчмын ямар ч ялгаагүй программист бидний хувьд өөр өөр дүрэм бүхий зүгээр л нэг хэрэгсэл гэдгийг ойлгох болно.

Программист хүн ямарваа нэгэн програмчлалын хэлийг мэддэг гэсэн ойлголт байж болохгүй харин эдгээр нь хэрхэн яаж ажилдаг хийгээд тухайн цаг минут, орчинд зохицон шинэ хэл буюу хэрэгслийг түргэн эзэмшдэг байх ёстой.

Энэ нийтлэлийг хэрвээ та дэмжиж байвал миний зар дээр дарж дэмжиж байгаа сэтгэлээ илэрхийлээрэй, хэрэв хүн уншихгүй бол би хий дэмий бичээд хэрэггүй шүү дээ, тиймээс

хэр их хүний санал ирснээс шалтгаалж энэ нийтлэлийг бичих болно.

Мөн та энэ нийтлэлд санал сэтгэгдлээ үлдээж болно шүү.

Хэрэв танд санал хүсэл байгаа бол миний мэйл хаяг (joshua_0420@yahoo.com) хаягаар надтай харьцаж болно шүү.

Товч гарчиг:

1. Яг юуны тухай яриад байна?

2. Энийг мэдсэнээр ямар ач холбогдолтой юм бэ?

3. Граммар буюу формаль дүрэм гэж юу вэ?

4. Виртуаль машины архитектур

5. Parser гэж юу вэ

6. Abstract tree

7. Бид хэр нүсэр, ямар үүрэгтэй виртуаль машин бичих вэ?

8. Бид энэ нийтлэлийн дагуу JWExpression гэдэг нэртэй виртуаль машиныг зохиох болно.

9. .NET Framework – ийн дотоод нууц

10. Java virtual machine-ий дотоод нууц, класс файлын тухай бусад олон зүйл

11. PHP-ийн гол цөм, энэ яаж ажилдаг виртуаль машин бэ, аан зүгээр л …?

12. Үлдсэнийг нь таны саналаас шалтгаалан бичнэ

13. Цаашаа яах вэ?

Сайн байцгаана уу. Хуучин юмнуудаа ухаж байгаад оюутан байхдаа хийж байсан нэгэн төслийг оллоо. Уг нь дээрээс хойш хайгаад олж чадахгүй байсан юм. Гэтэл олчлоо …

Энэ төсөл нь Windows Forms .NET 2 зориулсан янз бүрийн контрол агуулсан сан юм. Энэхүү санд Label, Menu, Table зэрэг контролууд байгаа. Эдгээр нь high customization хийх боломжтой юм. За тэгээд удахгүй сорс кодыг нь тавьчихий, сонирхвол татаж аваад үзэцгээгээрэй.

Beat of Bodmin 1

Бодминий араатны хөлийн хэв, хажууд нь 10 центийн зоос тавьж хэмжээг харьцуулав

Энэхүү араатан нь байгалийн жинхэнэ зэрлэг муур, өмнө оршиж байсан амьтны төрөл эсвэл маш ховор төрлийн зэрлэгшсэн амьтан аль нь ч байлаа гэсэн Бодмины араатан хэмээх амьтан одоог хүртэл алга болоогүй үзэгдсээр байна.

Энэхүү араатан илүүтэйгээр ирвэстэй төстэй ч орчин үеийн технологийн ачаар уг араатны оршин байгаа гэдгийг баталсан юм. Бодмин Моор гэдэг нь Английн баруун өмнөд хэсэгт орших Корнвелд байдаг үндэсний паркийн хэсэг газар бөгөөд 1986 оноос хойш энэ хэсэгт нийт 60 ширхэг иймэрхүү том муур үзэгдсэн байна.

За за унтлаа, лалрын балайгын аймшигт инээдийг сонссон чинь бүр чихүүдэс төрчлөө, балайг монголын тайлагдашгүй үзэгдэл болгож бичвэл таарна …….

Үргэлжлэл:

Гэхдээ хүмүүсийн яриагаар үүнээс ч олон байгаа гэж үзэж байгаа юм байна. Ээж муур нь зулзагаа дагуулаад явж байхыг харсан тохиолдол хүртэл байгаа юм байна.

Хүмүүс харсан гэх болов ч Британий засгийн газар 1995 онд энэ амьтан байхгүй хэмээн дүгнэлт гаргажээ. Гэтэл 1998 оны 7 сард гарсан 20 секундын видео бичлэг дээр архирч буй том хар амьтан гарсан нь шинжээчдийг энэхүү араатан байдаг гэдэгт итгэхэд хүргэсэн бөгөөд олон хүн энэхүү араатанг дээр үед устаж үгүй болсон муурны нэгээхэн төрөл гэж үздэг. Энэхүү видео бичлэг гарах үед Маврис Женкинс гэгч гүүрний ажилтан Бодины ойролцоо Эксмоор гэдэг газар явж байгаад замын хажууд хачирхалтай амьтан байхыг хараад машины гэрлээ тусгажээ. Тэрээр хэлэхдээ

Энэ үнэхээр том хар муур байсан. Машины гэрэлд нүд нь гэрэлтэж байсан. Би сайн харахын тулд алгуур удаан явсан.  Энэ амьтан колли буюу шотланд овчаркын хэмжээтэй байсан бөгөөд хар толгой ба хар сүүлтэй байсан. Намайг хараад нуга руу үсрээд алга болсон.

Ойрын жилүүдэд бас жинхэнэ биологийн нотолгоо олдсон юм. Юу гэхээр Бодмин Моорын ойролцоо Фовэй голын эргээс урт соёотой то гавлын яс олдсон бөгөөд үүнийг Британий Үндэсний Түүхийн Музейд шинжилж үзээд энэ нь Англид байгаа ямар ч амьтантай төстэй биш дээрээс нь шүдний хэмжээ байрлалаас нь үзэхэд гарцаагүй муурны төрөл мөн юм гэж баталсан байна.

1999 оны 11 сард араатан ферм рүү дайрсан нь түүнийг хайх шалтгаан болсон юм. 1 тугал 2 хонь руу үл мэдэх араатан дайрч юу ч үлдээлгүй тасдсан тохиолдол гарахад Бодмины нугад хэт ягаан туяаны камер суурилуулсан бөгөөд мөн 2001 оны 1 сард Агаарын хүчнийхэн шөнийн дуран ашиглан уг араатанг хайх аялалд гарсан ба олсон эсэх нь тодорхойгүй байна.

Араатан дахин дайрлаа, эсвэл туулай зуусан үнэг юм болов уу

Араатан дахин дайрлаа, эсвэл туулай зуусан үнэг юм болов уу

Энэ сангийн 3-р хувилбар гарахын өмнө маш чухал модулуудийг агуулсан хувилбар 2.5 – ийг гаргахаар шийдлээ. 3 – р хувилбарт оруулахаар төлөвлөж байсан зарим модулуудийг энэхүүү 2.5 хувилбарт оруулах ба харин 3 хувилбартаа ихэвчлэн өөрчлөлт бус харин шинэ модулууд нэмэхээр шийдлээ.

Энэхүү 2.5 хувилбар нь ХУРД, НАЙДВАРТАЙ АЖИЛЛАГАА гэдэг үүднээс бичигдсэн ба ердөөсөө шаардлагатай бүх модулуудийг MultiThread Safe буюу олон гүйцэтгэлийн замуудаас зэрэг ашиглах боломжтой, мөн дуудсан thread-ийг аль болох блок хийхгүй байх, мөн дотоод thread synchronization lock – уудыг тухайн платформоос (олон CPU-тэй эсэх,  hyperthreaded эсэх, мөн үйлдлийн систем, тусгай kernel горимын lock – хэрэгжсэн эсэх зэргээс) хамааруулан динамикаар сонгодог байхаар бичлээ. Өмнөх хувилбарт байсан зарим модулуудийг цоо шинээр бичсэн ба үүний учир нь JxPipe Framework – ийг ашиглаж байгаа програмистууд энэхүү сан дээр аль болох ижил төрлийн үйлчилгээ ашиглах, мөн Unix системийн зарим (CRON task scheduler) ажиллагааг ASP.NET рүү оруулж ирэх, ман дахин ҮР ДҮНТЭЙ ажиллуулах явдал юм.

JxWeb Library Version 2.5 онцлогууд:

  • Нэгдсэн ҮЙЛЧИЛГЭЭНИЙ СИСТЕМ. Уг систем нь вэб систем эхлэх, дуусах үед бүх бүртгүүлс эн үйлчилгээнүүдийг эхлүүлэх, зогсоох, төлвийг нь шалгах зэрэг үйлчилгээ үзүүлнэ.
  • Zero Touch Set Up буюу баазад хүснэгтүүдийг автоматаар үүсгэдэг (Одоогийн хувилбарт хэрэгжсэн байгаа) улам сайжруулах
  • SuperDaemon буюу тухайн заасан хугацаанд вэб системд ажиллах үйлдлүүдийг гүйцэтгэдэг супер модуль. Энэхүү модулийг супер гэж байгаагийн учир нь үүн шиг Daemon буюу TaskScheduler одоогоор ASP.NET – ийн ямар ч санд байхгүй (миний мэдэхээр) – ээс гадна энэхүү модуль нь Unix системийн CRON буюу ажил төлөвлөгч (job scheduler) программын синтакс дээр тулгуурласан ба үүнийг улам өргөжүүлэн маш хүчирхэг expression ашиглан тухайн гүйцэтгэгдэх хугацааг зааж өгдөг юм. Үүнээс гадна вэбээр байгаа ихэнхи ASP.NET – ийн task scheduler – үүд нь тодорхой хугацаанд Sleep хийгээд тухайн task (гүйцэтгэх ажил) – уудыг цаг нь болсон эсэхийг шалгаад тэгээд дараа нь дахиад л унтаад , дахин ажиллах гэх журмаар давталт хийдэг. Тэгвэл энэхүү SuperDaemon нь Unix-ийн CRON программын адил Discret Event Simulator моделийг ашигладаг ба Franta Maly Event List Manager – тэй төстэй гэхдээ арай өөр төрлийн өгөгдлийн бүтэц ашиглан ажилдаг. Эцсийн үр дүнд SuperDaemon нь ихэнхи үед ажиллагүйгээр харин хамгийн ойр болох task хүртэл унтаад тухайн ажлыг гүйцэтгэх ба дараагийн ажил болох хүртэл унтах юм. Энэ нь ердөөсөө МАШ ҮР ДҮНТЭЙ ажиллах ба системийн нөөцийг тухайн ажлын давтагдах давтамжаас хамааралтай болгож байгаа юм.
  • SuperDaemon – д та тухайн ажлын хэзээ гүйцэтгэх хугацааг доорх 7 талбарыг ашиглан зааж өгнө. Үүнд:Second Minute Hour DayOfMonth Month DayOfWeek Year буюу * * * * * * * гэсэн нийт 7 талбартай.Талбаруудыг зүүнээс баруун тийш бөглөх ба баруун талын талбаруудыг орхиж болно. Энэ нь тухайн талбар * буюу бүх утга гэсэнтэй ижил болох юм.Талбарууд нь тоо, эсвэл нэр (сарын нэр гэх мэт) байх ба дараах 4 төрлийн оператортай.1. Range буюу -
    2. Stepбуюу /
    3. Quantifier буюу {}
    4. Comma буюу ,

    Range оператор нь 2 утгын хоорондох, харин Divisor нь тухайн тооноос хойш нэмэгдэх алхам харин Quanitifer нь тухайн үүссэн утгуудын дэс дарааг заах, харин Comma нь боломжит утгуудын жагсаалт хувилбарууд юм. Операторуудыг хооронд нь угсарч нийлмэл илэрхийлэл гаргах боломжтой ба дэлгэрэнгүй дүрэм болоод мэдээллийг энэхүү сангийн тусламжийн хэсгээс үзэх боломжтой.

    Энэхүү SuperDaemon – ий хугацааг заадаг илэрхийллийг би JwScheduleExpression гэж нэрлэсэн ба энэ нь миний JwExpression интерпретер, parser – тай төстэй ажилдаг ( виртуаль машины тухай нийтлэлээс илүү ихийг мэдэж болно) жижиг хэмжээний parser юм.

    Жишээнүүд:
    */2 * * * * * * – энэ нь зүгээр */2 гэсэнтэй ижил ба 2 секунд тутамд ажиллах
    * 4 16           – өдөр бүр 4 цаг 4 минутад ажиллах
    * */5 * * * monday * – сар бүрийн даваа гариг бүр  5 минут тутамд
    * 5 0-23 * * monday * – гэвэл сар бүрийн даваа гариг бүр бүх цагийн 5 минутад

    гэх мэт …

Энэ сангийн дараагийн хувилбар тун удахгүй гарах гэж байна, энэ хувилбарт дараах зүйлс багтах болно.

  • (Version 2.5 – д орохоор болсон) Нэгдсэн ҮЙЛЧИЛГЭЭНИЙ СИСТЕМ. Уг систем нь вэб систем эхлэх, дуусах үед бүх бүртгүүлс эн үйлчилгээнүүдийг эхлүүлэх, зогсоох, төлвийг нь шалгах зэрэг үйлчилгээ үзүүлнэ.
  • (Version 2.5 – д орохоор болсон)Zero Touch Set Up буюу баазад хүснэгтүүдийг автоматаар үүсгэдэг (Одоогийн хувилбарт хэрэгжсэн байгаа) улам сайжруулах
  • Флэш видео үзүүлдэг сайтуудад зориулан, youtube шиг background converter үйлчилгээ нэмэх болно. Уг үйлчилгээг ашиглан таны сайт бүх төрлийн формат бүхий дүрс бичлэгийг upload хийх боломжтой болох ба орж ирсэн файлыг JwVideoConverter үйлчилгээнд өгснөөр уг бичлэгийг background processor queue – д байрлуулах болно. Улмаар Thread Pool – ээс сул thread гармагч энэ видеог хувиргаж эхлэх ба та бүх параметрүүдийг зааж өгөх боломжтой, жишээ нь өргөн, өндөр, фрэйм рэйт, compression гэх мэт. Хувиргалт дуусах үед танд мэдэгдэх ба та файлаа өөр газар хадгалж болно. Мөн хувиргалт хийгдэж байх үед та процессыг цуцлах боломжтой. Гол нь асар олон хэрэглэгч зэрэг хандах үед та сервэрийн санах ой зэрэг нөөцөд санаа зовох шаардлагагүй. Учир нь JwVideoConverter нь Queue технологи ашигладаг учраас аль болох бага нөөц ашиглан боловсруулалт хийх юм.
  • Comet Server implementation – GTalk, Meebo зэрэг сайтууд PullBack Ajax технологи ашиглан ажилдаг билээ. Тэгвэл та .NET дээр хэрэгжүүлсэн энэхүү технологийг хэрэглэх боломжтой болох юм. Чат, Instant Notification, ханшийн өөрчлөлт, үнэ хаялцуулах зэрэг маш олон зүйлд ашиглах боломжтой.
  • гэх мэт …

JxWeb сан нь ASP.NET Framework 2.0, 3.5 дээр бичсэн вэб системүүдэд ашиглагдах dll сан юм. Энэхүү сан нь дотроо вэб систем хөгжүүлэхэд шаардлагатай маш олон модулууд, компонентуудыг агуулсан байхаас гадна, хаана ч байхгүй хүчирхэг хэрэгслүүдтэй.

Онцлогууд:

  • Бүх тохиргоог тухайн вэбийн web.config файлд хийх боломжтой.
  • Хялбарчилсан нууцлалын сантай, үүнд MD5, SHA1 (160 bit),  SHA512 (512 bit) хэш алгоритмууд болон American Encryption Standard буюу AES symmetric нууцлалын алгоритм (Rijndael) агуулсан юм. Үүнээс гадна Hash based Message Authentication Algorithm буюу HMAC – ийн 2 хувилбар агуулсан. Нэг нь MD5, нөгөө нь SHA512 дээр суурилсан. Үүнээс гадна Secure Encryption, Decryption функцтэй.Эдгээр аргаар өгөгдлийг нууцлаад дамжуулахад түүнийг өөрчлөх ямар ч арга байхгүй, учир нь хэрэв өөрчлөлт орсон байвал decrypt хийх үед hash таарахгүй учраас энэ тухай танд мэдэгдэнэ.
  • Communication Channel сан – Энэ сан нь TCP/IP протокол ашиглан дэд системүүдийн хооронд хаанаас ч хамаагүй мессеж илгээх, хүлээн авах боломж олгодог. Давуу тал нь та доод түвшний сүлжээний ойлголтуудтай зууралдах хэрэггүй, мөн сүлжээний орчинд буфферийн хэмжээ энэ тэрэнд санаа зовох шаардлагагүй юм. Зүгээр л илгээх объектоо өгөхөд систем уг объектыг serialize хийгээд эсрэг талын системд хүргэж өгөх жишээтэй. Уг системийг ашиглан та сервер хооронд мэдээлэл түргэн дамжуулах, хүлээн авах, эсвэл бүр чатын програм ч хийсэн болох юм. Үлдсэнийг нь танд үлдээе …
  • Component Model сан – Энэ сан бол голдуу өгөгдөлтэй харьцах, мөн өгөгдлийг дүрслэх үүрэгтэй. Жишээлбэл сайт бүр янз бүрийн мод бүтэцтэй бааз ашигладаг билээ. Тэгвэл мод бүтэцтэй баазын өгөгдөл бүр  төстэй талбартай, ижил аргаар эцэг хүүгийн холбоог дүрсэлдэг. Тэгвэл та энэ бүх төрлийн өгөгдлийг энэ санг ашиглан дүрслээд ганцхан контрол ашиглан бүх төрлийн мод хэлбэрийн өгөгдөл дээр зангилаа зөөх, хуулах, устгах, нэмэх, засах зэрэг үйлдлийг хийж болно гэвэл яах вэ? Таны үнэт цагийг асар хэмнэх юм.
  • Мөн дээрх санд өгөгдлийн баазтай харьцах маш чухал сангууд байдаг. Эдгээрээс дурдвал DbTransactionManager компонент нь системийн бизнес логик хийх үүрэгтэй классуудад нийтээрээ transaction-д оролцох боломж олгодог юм. Мөн эдгээр transaction – д орсон класс бие биетэйгээ ямар ч түвшинд харьцах боломжтой. Өөрөөр хэлбэл A класс B классыг ашиглаж байна гэвэл, B класс нь A классын transactional scope- д хамаарагдаж улмаар B дотор эхэлсэн аливаа transaction шинээр үүсэхийн оронд А классын transaction бүхий холболтыг ашиглах жишээтэй. Энэ бол энгийн системүүдэд хэрэгжүүлэхэд нэлээд түвэгтэй асуудлын нэг юм. Энэхүү компонент энэ асуудлыг хялбар бөгөөд цэвэрхэн шийдсэн юм.
  • Мөн дээрх санд DbQueryManager хэмээх компонент байгаа нь баазаас илэрхийлэл ашиглан өгөгдөл хайх үүрэгтэй юм. Жишээлбэл та энэ классаас удамшсан классаа ашиглан дараах төрлийн өгөгдлийг хайж болно. Энэ нь тухайн илэрхийллийг хангах 20 дэхь бичлэгээс эхлээд 100 ширхэг бичлэг сонгох юм

    rows = DbQueryManager.Query(”Name LIKE ‘joshua’ && Age < 30 && Age > 20 || (Age == 23 && Height > 170)”, 20, 100);

    Энэ нь таны харснаар шууд SELECT рүү дамжуулж байгаа биш. Эхлээд уг компонент нь энэхүү илэрхийллийг JwExpression компонентыг ашиглан parse хийх болно. Дараа нь Parse Tree-г харгалзах SQL болгон хувиргах ба энэ явцад баганы нэрүүдийг жинхэнэ баганы нэрүүд рүү буулгаж, багануудын төрлийг шалгаж, SQL injection-ээс хамгаалах үүднээс янз бүрийн escaping хийдэг юм.

  • Configuration дэд санд web.config дотор тусгай configuration element үүсгэж уншихад шаардлагатай классууд байрлана
  • JwExpression Engine – сан нь ХУРДАН, ҮР ДҮНТЭЙ ажиллах зориулалттай Interpreter мөн Parser  юм. Энэ сан нь бүрэн шинэчлэгдэх, өргөтгөгдөх боломжтой бөгөөд одоогийн байдлаар 2 төрлийн хэл агуудаг. Нэг нь JwExpression Language, нөгөө нь JwExpression Language Url Friendly. Нэг ёсондоо эдгээр програмчлалын шинэ хэл юм. Гэхдээ бүрэн хэл биш, мэдээж уг компонентийг цааш нь өргөжүүлэн бүрэн хэмжээний хэлний виртуаль машин болгох боломжтой.Энэхүү parser нь нэг бол илэрхийллийг parse хийх горимд ажиллана, эсвэл Interpreter горимд ажилдаг. Энэ үед JwExpression Engine нь илэрхийлэлд орсон хувьсагчдыг үүсгэх, утга олгох, мөн функцуудыг дуудан, тухайн илэрхийллийг жинхнээс нь бодож үр дүнг гаргадаг.
    JwExpression engine – ий онцлогуудыг дурдвал:

    1. Илэрхийлэл бодох, тогтмол утгыг бодох (Жишээ нь илэрхийлэлд var > 5 + 30*2 гэсэн байвал 5 + 30*2 гэдгийг 65 болгож бодох)
    2. Буруу токенуудыг алгасах
    3. Хувьсагчын утгыг бодох, loosely typed буюу төрөлгүй хувьсагчид (тухайн оператор, нөхцлөөс хамаарч хувьсагчийн утгыг JwExpression Engine тогтооно)
    4. Функцын дуудах
    5. Хаалтны түвшинг хязгаарлах
    6. Дүрмүүдийн түвшнүүд
    7. Илэрхийллийн модыг өөрчлөх боломжтой
    8. Хувьсагчдын төрлийн автоматаар өөрчилж, хувиргадаг
    9. Илэрхийлэл бодохоос өмнө хувьсагчдыг тодорхойлж болно
    10. Шинэ функцуудыг нэмэх боломжтой
    11. гэх мэт …
  • Daemon сан – энэ компонент нь вэб системд давтагдан хийх зориулалт бүхий ажлуудыг гүйцэтгэх зориулалттай, Unix системийн хувьд CRON харин Windows системийн хувьд Task Scheduler – ийн үүргийг гүйцэтгэнэ. Компонент нь ASP.NET – ийн Thread Pool – ээс ерөөсөө хэрэглэдэггүй, харин өөрөө thread – үүд үүсгэн тэднийг зохицуулж байдаг. Daemon бүр нь виртуаль thread болох ба хэчнээн thread үүсгэх, тэдгээрт бүрт ямар ямар виртуаль thread тавих зэргийг бүгдийг тохируулж болно.
    Мөн daemon-ий ажиллах цагийг маш олон янзаар тавих боломтой. Жишээ нь, өдөр, минут, сар, цаг, жил БҮР, мөн тэдэн сарын тэдний өдөр гэх мэт бүх янзаар заах боломжтой. Мөн Persistent хэмээх сонголт байдаг нь, тухайн daemon ажиллах төлвөө систем эхлэх, унтрах хооронд хадгалах боломжыг олгох ба ингэснээр тухайн daemon давтагдахгүйгээр яг зөв ажиллах боломж бүрдэнэ.
  • Json сан, энэ сан бол Edy Kernahan хэмээх хүний зохиосон OPEN SOURCE санг авч бага зэрэг өөрчилсан хувилбар юм.
  • Log менежер, энэ нь Provider модель дээр суурилсан, бааз, файл зэрэг рүү лог бичих боломжтой.
  • Mail менежер, мөн л Provider модель дээр суурилсан ба Mail Queue үүсгэх, эвсэл шууд Smtp илгээх зэрэг боломжтой. Queue -д байгаа мэйлүүдийг MailerDaemon нь таны заасан хугацаа бүрд ажиллан илгээх болно.
  • WebControls – янз бүрийн контролууд
  • Utility – Янз бүрийн өргөн хэрэглээний функцүүд
  • … гэх мэт

За тэхээр хэдүүлээ эндээс эхэлье. Нээрээ бас та бүхэн юуны талаар асуумаар байна түүнийгээ коммент болгон бичиж үлдээгээрэй.

Танд нэг ийм асуудал тулгарлаа гээд бодоод үздээ. Та тэхээр нэг ажилд орлоо, тэгээд эхний даалгавар тань ‘www.employmentcenter.mn’ гэдэг систем хийх болж гэе.

Системийн шаардлага нь:

  • Ажил хайж байгаа хүмүүс сайтад бүртгүүлнэ
  • Ажил олгогчид мөн бүртгүүлнэ
  • Ажил олгогчид энэ сайтаар дамжуулж өөрсдийн гэсэн виртуаль сайт үүсгэнэ
  • Виртуаль сайт бүр нэг бол дан ганц мэргэжлийн хүмүүст зориулсан байна эсвэл олон мэргэжлийн
  • Жишээ нь, Говь-Импекс гэдэг компани энэ сайтаар бүртгүүлээд, дараах sub domain бүхий сайт үүсгэж гэе
  • govi-impex.employmentcenter.mn
  • Иишээ яваад орсон чинь энэ компани янз бүрийн мэргэжлийн хүмүүс ажилд авах юм гэнэ.
  • Энэ ажил олгогч нь үүсгэсэн сайт дээрээ тухайн мэргэжлийн хүмүүст зориулсан ажлын анкетийг зохиох юм.
  • Ажил хайгчид хайж байгаа ажлаа олоод тэрхүү анкетийг бөглөнө.
  • Эндээс гол нь анкет бүр компани, мөн мэргэжлээс хамаараад янз бүрийн талбар бүхий динамик өгөгдөл цуглуулах юм.

Эндээс юуг виртуаль машин гэдэгтээ холбох гээд байна вэ гэвэл, хэхэ олон юм ярьж байна уу, ХАЙЛТ юм шүү дээ.

Бидний хэрэглэдэг вэб програмчлалын хэл бүр өгөгдлийн баазтай холбогдож мэдээдэл хайдаг. За тэгвэл дээрх Говь Импекс компаний админ тухайн компаниас гаргасан анкетийг бөглөсөн 30,000 гаруй хэрэглэгч дундаас яаж хамгийн өндөр боловсролтой, хамгийн чанартай боловсон хүчинг олж авах юм бэ?

Мэдээж нэг нэгээр нь үзнэ гэж байхгүй. Ингэж хайж болох юм.
Англи хэлний мэдлэг – Ядаж дунд түвшний
орос хэл – ядаж гадарладаг
төгссөн сургууль – МУИС ба гадаадын аль нэг оронд ямар нэг сургууль төгссөн бол бүр сайн
үндэс угсаа – жинхэнэ монгол
IQ-шаардсан 26-30 гэсэн дугаартай асуултуудад зөв хариулсан
Доод тал нь бакалавр зэрэгтэй
Мэргэжлээрээ дор хаяж 1 жил ажилсан
26 – аас дээш НАСТАЙ БОЛ ИЛҮҮ САЙН
165 см – 190 см өндөртэй (хэт намхан биш, хэт өндөр биш гэж болно – ямар ялгавартай компани вэ хохо)
Гэр нь хотын төвөөс хааш хаашаа 2 км радиуст байдаг (үүгээр нь ажилчдын унааны хөлсийг багасгах гэж байж болно, хэхэ)

гэсэн ийм нөхцлөөр хайсан чинь 16 хүн олдож гэнээ. За тэгвэл 30,000 хүн хайснаас 16 дотор хайвал мөн дээрээ.

Бүр цаашилбал админ маань дахин доорх нөхлцлийг нэмж хайжээ.
Япон хэл дунд зэргээс дээш мэддэг (япон дахь салбартаа авах хүн хайхын тулд)

гэтэл энэ хайлтаар нэг ч хүн гарч ирсэнгүй, тэр үед энэ хүнд хайлтын үр дүн 0 гэж гаргахын оронд “Subscribe to this employees” буюу энэ нөхцлийг хангасан хүн системд орж ирвэл энэ компанид мэдэгддэг байх гэсэн сонголт байж л дээ, админ ашгүй дээ гээд дээр нь даржээ.

За нэг ийм түүх зохиолоо. одоо харин дээрх хайлтыг хэрхэн биелүүлэх вэ? гэдэг асуулт гарч ирнэ. Та мэдээж энэнд зориулж арай ч сторед процедур бичихгүй байлгүй дээ. Сторед процедур гэдэг нь хайлтын дүн бүрийг параметр болгож аваад … за за угаасаа ингээд бүтэхгүй нь ойлгомжтой.

Тэгэхээр яах вэ танд ямар нэг арга байна уу?
Арга байгаа бол үүнийгээ Виртуаль машинтай холбоод санал бодлоо үлдээгээрэй, дараагийн дугаараар үүнийг хэрхэн шийдэх тухай ярилцъя.

Энэ бол “үүнийг мэдсэнээр ямар ач холбогдолтой” вэ гэдгийг танд ойлгуулах жишээ гэдгийг бүү мартаарай.

Удахгүй уулзий

Оршил

Энэ бол маш сонирхолтой, бас олон талын ач холбогдолтой сэдэв юм. Жишээ нь та php дээр ч юмуу эсвэл C#, Java, Schema зэрэг хэлүүд дээр програм бичээд ажиллууж үзсэн л байх. Тэгвэл энэ бичсэн программ чинь яаж ажиллаад байгаа юм бол гэж бараг бодоогүй гэдэгт би итгэлтэй байна. Угаасаа бодох шаардлага бараг байхгүй. Гэтэл бодит байдал дээр төслийн хэмжээ томрох тусам таны хэрэглэгчийнхээ өмнө хүлээх үүрэг асар их болдог гэдгийг та мэдэх үү?

Үүрэг ихтэй гэдэг бол та хийж байгаа системээ дараах талаас нь илүү их харж эхэлнэ гэсэн үг юм.

  • Цэгцтэй буюу удирдлагын дор ажилж байх
  • Хамгаалалт, нууцлал – хэрэглэгчдэд итгэл өгөх, бие даасан, найдвартай байдлыг мэдрүүлэх
  • Хурд, хурд, хурд
  • Үр дүнтэй ажиллагаа
  • Оновчтой байх, бүх талаараа
  • Ерөнхий байж, өөрчлөлтөнд хялбар зохицдог байх
  • Уян хатан үйлдэл хийх, үүний тулд та таны өмнө байгаа олон арга технологиудыг өөрийн эрхгүй харьцуулан дүгнэж тэднээс тодорхой шаардлагаар сонгодог болно

Энэ мэт олон асуудлыг та хардаг болно. Мэдээж эдгээр олон шаардлагыг биелүүлэхийн тулд танд маш гүн бөгөөд бат мэдээлэл чухал юм.

Энэ мэдээллийг олон аргаар олж авч болно. Үүнээс миний хувьд хамгийн сайхан арга бол энэхүү компилятор, хөрвүүлэгчийн тухай онол, практик юм.

Учир нь энэ сэдэв бол маш сонирхолтой бөгөөд хүнд сэдэв. Гэхдээ та үүний дунд ороод ирэхээр маш их чадвар олж авах боломжтой байдаг юм. Хийсвэрлэх, олон алгоритмуудаас үр дүнтэй сонгох, өөрөө зохиох, өөрчлөх, тестлэх, сэтгэл ханатлаа дахин дахин сайжруулах гээд л ингэж явсаар та дээрх асуудлуудыг шийдэх олон янзын боломж, технологи, аргуудыг сурах болно.

Виртуаль машин

Бидний сайн мэдэх программ хэмээх зүйл бол нарийн яривал электроон дохио гэдгийг та мэдэх үү. Яагаад яаж яваад тийм болдог вэ гэхээр компьютер бол ухаалгаар өрсөн зам бүхий хот бөгөөд түүгээр электрон хэмээх оршин суугчид заасан замын дагуу явж замд таарсан саадтай элдвээр харьцаж байдаг юм шүү дээ. Тэр ч яахав, тэр тухай яривал асар их юм болох нь ойлгомжтой. Гэхдээ электроны түвшинд программыг ойлгох гэдэг нь контроллер болоод бусад доод түвшний машин програмчилдаг хүмүүст үнэт мэдээлэл юм. Харин бидний хувьд бичсэн програм маань электрон дохио болж энэ замын хөдөлгөөнд оролцдог гэдгийг мэдэж байх ёстой.

Юм бодож байгаад жоохон хальчих шиг боллоо. За тэгэхээр виртуаль машин гэдэг нь бидний хэрэглэдэг жинхэнэ комюьтерийг программаар симуляци хийж байна гэсэн үг юм. Виртуаль машинууд нь ерөнхийдөө зарчмын хувьд ижилхэн ч хэрэгжүүлэлтийн хувьд өөр өөр байдаг. Бодит жишээ авбал.

Бидний сайн мэдэх .NET Framework гээч зүйл маань жинхэнэ виртуаль машин юм. Энэ машин MSIL гэдэг объект хандалтат ассемблер хэлтэй бөгөөд маш дээд түвшний хэл гэж тооцогддог. Мөн бидний хэрэглэдэг PHP хөрвүүлэгч байна. Энэ бас л виртуаль машин юм.

Виртуаль машинууд бичсэн кодыг гүйцэтгэхэд амар командууд болгоод тэрийгээ ГҮЙЦЭТГЭЖ ажилдаг. Гэхдээ сонин нь хэрхэн ГҮЙЦЭТГЭДЭГ гэдгээс нь хамаараад хөрвүүлэгч, JIT, Real Simulator гэх мэтээр нэрлэдэг ба үүнээс болж виртуаль машин, жинхэнэ машины хоорондох ялгаа одоог хүртэл улам багасаж байгаа юм.

Жишээ нь:

PHP deer:

$term = 36;

$factor = 80;

$total = $term * $factor + 7180;

echo $term;

exit;

class AAA

{

private $m = 30;

public function get()

{ return $this->m * 2; }

}

$obj = new AAA();

echo 3 * $obj->get();

Та энэ программын кодыг хараад юу гэж бодож байна вэ?.

PHP виртуаль машин бол үүнийг хараад ингэж бодох байх.

2 хувьсагч аваад харгалзах утгуудыг олгоно. Дараа нь хооронд нь үржүүлээд 7180-ийг нэмээд гуравдахь хувьсагчид олгоно. Тэгээд хэвлэх, мөн дараа нь ААА гэдэг класс ТОДОРХОЙЛОХ, дараа нь энэ классаас объект үүсгээд гишүүн функцыг дуудаад 3 үржүүлээд үр дүнг хэвлэ.

Гэхдээ энэ бол чухал биш, виртуаль машин чухам яаж виртуалиар ажилдаг юм бэ, яаж виртуаль орчинг бүрдүүлдэг юм бол гэдэг нь л гол, энэ цувралууд бол энэхүү асуултад хариулах юм.

Та одоо магадгүй, ийм юмыг мэдэж ямар хэрэгтэй юм бэ гэж бодож байна уу эсвэл таны сонирхол төрж байна уу?

Хэхэ, хэрэв та эхний зүйлийг бодож байгаа бол дахиж энэ блог руу орж цааш нь унших хэрэггүй шүү, учир нь та уншлаа ч ойлгохгүй, бас цаашаа хөгжихгүй энэ чигээрээ л байх хүн байна.

Эсрэгээр танд олон янзын зүйл бодогдож, улам мэдэхийг хүсч байвал юу ч гэсэн уншаад л үз дээ.