Fork me on GitHub

ساخت یک برنامه Realtime با NowJS

NowJS یک ماژول Nodejs است که برای ساخت برنامه های بلادرنگ یا Realtime استفاده می‌شود. نحوه کار این ماژول در سه مرحله زیر خلاصه می ‌شود:

  • این ماژول یک namespace به نام now ایجاد می کند که هم در سمت client و هم در سمت server در دسترس است.
  • توابع و متغیرهایی که به این namespace اضافه می‌شوند بین سرور و کلاینت sync می‌شوند.
  • در این حالت سرور می‌تواند توابع تعریف شده در سمت کلاینت را صدا بزند و همچنین کلاینت می‌تواند توابع مربوط به سرور را اجرا کند.

به عنوان مثال دو اسکریپت زیر را در نظر بگیرید. اسکریپت اول در سمت سرور:

// On server

var nowjs      = require('now');
var httpServer = require('http').createServer();
var everyone   = nowjs.initialize(httpServer);

var serverInfo = {
  db
: 'mongodb',
  version
: '0.2.2'
}

everyone
.now.getServerInfo = function(callback) {
  callback
(serverInfo);
}

httpServer
.listen(3000);

و دیگری در سمت کلاینت:

// On client

<script>
  now
.getServerInfo(function(data){
    console
.log(data.version);
 
});
</script>

با اجرای این برنامه، مرورگر ورژن 0.2.2 را بر روی console چاپ می کند!

معرفی forever

فرض کنید برنامه ای با node نوشته‌اید و آن را به سرور خود منتقل کرده و از طریق ssh با دستور node myscript.js آن را اجرا کرده‌اید. بعد از چند دقیقه برنامه شما از کار می‌افتد در صورتی که مطمئن هستید خطایی در آن نیست. این مشکل اول!

وقتی که به زبان PHP یا Ruby یا زبان‌هایی از این دست برنامه‌ای می نویسیم، برای اجرای آن از وب سرورهایی نظیر apache یا nginx استفاده می کنیم: با هر درخواست، وب سرور اسکریپت برنامه را اجرا می کند و پاسخ را به کاربر می فرستد. اما در node برنامه ها مستقل عمل می کنند. به عنوان مثال وقتی در node از ماژول http استفاده می کنیم هیچ نیازی به وب سرور نداریم. حال فرض کنید برنامه در حال پاسخ به یک درخواست به خطای شکار نشده ( یعنی همون catch نشده :دی ) برخورد کند.

در حالتی که از وب سرورها برای اجرای اسکریپتها استفاده می‌شود ( مثل PHP ) تنها کاربری که با خطا مواجه می‌شود آن کسی است که درخواست را ارسال نموده و دیگر کاربران چون به این حالت خطا نرسیده اند بدون مشکل با برنامه در تعامل خواهند بود. اما در حالتی که از node استفاده کنیم بروز یک خطای catch نشده کل process را از کار می اندازد و به عبارتی برنامه crash می کند. بنابراین تا زمانی که برنامه دوباره راه اندازی نشود کسی قادر به استفاده از آن نیست. این هم مشکل دوم!

عیب‌یابی برنامه‌های node.js

گاهی اوقات زمانی که صرف عیب‌یابی یا debug کردن برنامه‌ها می‌شه از زمانی که صرف تولیدشون می‌شه بیشتره. از این رو همیشه برنامه‌نویس‌ها به فکر تولید ابزارها و استفاده از روش‌هایی هستند که کار عیب‌یابی رو تسهیل و تسریع کنه.

node.js هم از این قاعده مستثنی نیست و اگر ‌می‌خواهید زمان کمتری رو صرف عیب‌یابی برنامه‌هاتون بکنید باید از روش‌ها و ابزارهای مناسب استفاده کنید که در ادامه به بررسی اونها می‌پردازیم.

یک لاگ سرور ساده با nodejs، express و mongodb

در این مقاله کوچک قصد دارم یک نمونه کد و نحوه کار با چند ماژول بسیار پر کاربرد نود جی‌اس را آموزش بدهم.

این کد یک برنامه کوچک برای ثبت log (خطا، اخطار و اطلاع‌رسانی) است.

مزیت این log server در نوع ثبت و نگهداری اطلاعات logها می‌باشد که در آن از یک نوع بانک‌ اطلاعاتی غیر رابطه‌ای (Document oriented) استفاده شده است.

استفاده از nodejs در ویندوز

نصب و راه اندازی nodejs بر روی سیستم عامل ویندوز بسیار ساده است. در نسخه های بالاتر از ورژن 0.6.3، installer برنامه npm رو هم به طور خودکار برای شما نصب می کنه.

می تونید آخرین نسخه ند رو از آدرس http://nodejs.org/dist/latest دریافت کنید. دو نسخه برای ویندوز آماده شده. یکی فایل اجرایی و یکی فایل msi.

فایل installer یا همون msi رو دانلود و اجرا کنید. این نصاب سه کار انجام میده. اول برنامه ند رو داخل یک پوشه کپی می کنه. بعد npm رو هم نصب می کنه. و در آخر آدرس ند رو در متغیر محیطی PATH قرار می ده تا بتونید از node در command prompt استفاده کنید. به همین دلیل نیاز دارید تا یک بار سیستم رو reboot کنید.

فیلم آشنایی با Node.js

در واحد «مدرن» در شرکت «توسن» هر هفته یک نفر یک موضوع را به دیگران آموزش می‌دهد. چند هفته پیش نوبت من بود و موضوع ارائه من هم Node.js بود. فیلم این ارائه در Vimeo گذاشته شده است. برای دیدن این فیلم به نشانی زیر بروید:

http://vimeo.com/29084752

اسلایدهای این ارائه هم در نشانی زیر در GitHub در دسترس هستند:

http://behrang.github.com/presentations/node.js/2011-09-07/

اگر در Vimeo حساب کاربری داشته باشید، می‌توانید فیلم را دریافت کنید. حجم فیلم کم شده تا دریافت آن ساده‌تر باشد.

در این ارائه، نخست Node.js معرفی می‌شود و سپس برنامه نویسی بدون Thread و همچنین Non-blocking توضیح داده می‌شود. سپس چند نمونه کد نوشته می‌شود. پس از آن هم چند کتابخانه مهم در Node.js معرفی می‌شوند که شامل NPM، Connect و Express می‌شود. در پایان هم کمی درباره Parallel Programming و به کار گیری پردازنده‌های چند هسته‌ای در برنامه‌های Node.js توضیح داده می‌شود.

برای دیدن فیلم‌های دیگر ارائه شده در «توسن» می‌توانید به کانال Tosan Tech Talk در Vimeo به نشانی زیر بروید:

http://vimeo.com/channels/ttt

معرفی و نصب NPM

npm برای مدیریت پکیج های nodejs استفاده میشه. اکثر ماژول هایی که برای ند نوشته می شوند برای سهولت استفاده در npm ثبت می شوند و می تونید با استفاده از یک دستور ساده این ماژول ها رو به پروژه های خودتون اضافه کنید و به عبارت دیگه وابستگی های پروژه های خودتون رو مدیریت کنید. طریقه نصب و کار با npm در ادامه مطلب شرح داده شده.

شیء گرایی در جاوا اسکریپت

شاید برای خیلی ها عجیب باشد که در مورد شیء گرایی با جاوا اسکریپت متنی بخوانند. واقعیت این است که جاوا اسکریپت ساختارهای شیء گرایی با قابلیتهای بسیار بالایی دارد اما به دلیل تفاوت این شیء گرایی با شیء گرایی های معمول در زبان های شبه C، این ساختارها برای برنامه نویسانی که از ابتدا با Java، C و ... کار کرده اند کمی عجیب است.

همه از فواید شیء گرایی و ماهیت آن اطلاع داریم بنابراین از شرح شیء گرایی می گذریم. در اینجا می خواهیم با نوع خاصی از شیء گرایی آشنا شویم که به عنوان prototyping شناخته می شود.

سلام جهان!

با نام او

افتخار دارم اولین پست بلاگ ند را به شما عزیزان تقدیم کنم. در این اولین پست دوست دارم در مورد چرایی تشکیل گروه کاربری ند فارسی توضیحاتی بدم و در خلال این توضیحات، در مورد ند هم بیشتر با شما صحبت کنم.