متخصصین علوم رایانه کشور

Learning MEAN Framework
متخصصین علوم رایانه کشور

۱۳ مطلب در آبان ۱۳۹۴ ثبت شده است

۲۹
آبان

در قسمت اول آموزش Node.js، ابتدا در Windows Command Prompt، دستور Node را اجرا کردیم تا Node Command Prompt‌ ظاهر شود. در آنجا، تعدادی از دستورات JavaScript را اجرا کردیم و نتیجه اجرای آنها را نیز دیدیم. ولی واقعیت آن است که معمولا از این روش برای نوشتن برنامه‌های Node.js استفاده نمی‌شود! معمولا سورس‌کدها را در داخل یک فایل نوشته و از Node می‌خواهیم تا برنامه ما را اجرا نماید.

برای شروع، ابتدا پوشه‌ای به نام Learn_001 ایجاد کرده و از طریق یک ویرایشگر ساده، مانند Notepad، اقدام به ایجاد یک فایل به نام app و با پسوند js می‌کنیم. معمولا عرف بر این است که اولین فایل پروژه، که فایل اصلی پروژه نیز به آن اطلاع می‌شود، به صورت app.js تعریف گردد.

حال در داخل این فایل دستور ذیل را نوشته، و فایل مربوطه را ذخیره می‌کنیم:

console.log("Hello, World!");

حال از طریق Windows Command Prompt، وارد پوشه Learn_001 شده، و یکی از دستورات ذیل را اجرا می‌کنیم:

?> Node app.js

Hello, World!

و یا

?>Node app

Hello, World!

همانگونه که مشاهده می‌کنید، در هنگام اجرای یک فایل، از طریق Node، الزامی به نوشتن پسوند فایل وجود ندارد.

توجه:‌ از این به بعد، به یاد داشته باشید، هر جا که از عبارت <? استفاده کردیم، منظورمان محیط اصلی Windows Command Prompt بوده و هرگاه صرفا از < استفاده کردیم، منظورمان محیط اصلی Node Command Prompt می‌باشد.

مجددا پوشه دیگری در کنار پوشه Learn_001، و به نام Learn_002 ایجاد کرده و فایل دیگری به نام app.js و با محتوای ذیل ایجاد نموده و آن را ذخیره می‌کنیم:

for(var intIndex = 1; intIndex <= 5; intIndex++) {


console.log("Hello, World (" + intIndex + ")!");


}

از نظر رسم‌الخط، در زبان برنامه‌نویسی JavaScript، معمولا آکولاد باز را در مقابل Block مربوطه نوشته و معمولا بعد از آکولاد باز و نیز قبل از آکولاد بسته، یک خط خالی ایجاد می‌کنیم.

حال مجددا از طریق Windwos Command Prompt، وارد پوشه Learn_002‌ شده و دستور ذیل را اجرا می‌کنیم:

?> Node app.js

Hello, World (1)!
Hello, World (2)!
Hello, World (3)!
Hello, World (4)!
Hello, World (5)!

همانگونه که حس کردید، برنامه‌نویسی در محیط‌های ساده‌ای مانند Notepad، چندان خوشایند و دلچسب نمی‌باشد! چرا که اولا هیچ Intellisense در آن وجود نداشته و ثانیا تا قبل از اجرای برنامه، از اشتباه یا بی‌دقتی‌های خود مطلع نخواهیم شد. ولی خبر خوش این است که ویرایشگرهای بسیار زیادی برای برنامه‌نویسی به زبان JavaScript وجود دارد. شاید در حال حاضر بتوان بهترین گزینه را محیط Visual Studio Code معرفی کرد. دقت کنید! اشتباه نکنید! این محیط با محیط Visual Studio که قبلا با آن کار می‌کرده‌اید، بسیار متفاوت است! مهترین ویژگی Visual Studio Code این است که Cross Platform می‌باشد! یعنی شما می‌توانید وارد نشانی http://code.VisualStudio.com شده و بسته به نوع سیستم عامل خود (Windows, Mac, Linux) نسخه مناسب را بارگزاری، نصب و اجرا نمایید.

در آموزش‌های بعد، کمی در رابطه با محیط Visual Studio Code صحبت خواهیم کرد و از این پس، سورس‌کدها و پروژه‌های خود را در قالب این محیط ارایه خواهیم نمود.

- با تشکر از سرکار خانم مهندس مریم تفس عزیز، که در ویرایش این متن، مرا یاری داده است.

  • داریوش تصدیقی
۲۴
آبان

نکاتی در رابطه با حذف اسناد (Documents) و حذف مجموعه‌ها (Collections)

برای اطلاعات (اسناد) از دستور remove، استفاده می‌کنیم. در صورتی که بخواهیم، کلیه اسناد مربوط به مجموعه users را حذف نماییم، از دستور ذیل استفاده می‌کنیم:

> db.users.remove( {} );

دقت کنید که در دستور فوق، به عنوان پارامتر ورودی دستور remove، از {}‌ استفاده کرده‌ایم. در نسخه‌های قبل از ۲.۶ بانک اطلاعاتی MongoDB، در صورتی که صرفا از دستور ()remove، و بدون پارامتر استفاده می‌کردیم، کلیه اسناد حذف می‌گردیدند، ولی از نسخه ۲.۶ به بعد، نوشتن {} الزامی است.

دقت داشته باشید که دستور فوق، کلیه اسناد مربوط به مجموعه users، را حذف کرده، ولی شاخص‌های (indexes)، آنرا را حذف نمی‌کند!

برای حذف مجموعه users، از دستور drop و به شکل ذیل استفاده می‌کنیم:

> db.users.drop();

دقت داشته باشید که دستور فوق، علاوه بر حذف کلیه اسناد و مجموعه users، کلیه شاخص‌های مربوط به مجموعه users را نیز حذف خواهد کرد.

در صورتی که بخواهیم برای حذف اسناد از شرطی استفاده نماییم، می توانیم شرط خود را در قالب یک عبارت JSON، اعلام نماییم.

می‌خواهیم کلیه اسناد users که مقدار فیلد "firstName" آنها، "Dariush" می‌باشد را حذف نماییم. برای این منظور از دستور ذیل استفاده می‌کنیم:

> db.users.remove( { "firstName" : "Dariush" } );

می‌خوایم کلیه اسناد users که مقدار فیلد "age" آنها، بزرگ‌تر از ۲۰ می‌باشد را حذف نماییم. برای این منظور از دستور ذیل استفاده می‌کنیم:

> db.users.remove( { "age" : { $gt : 20 } } );

در صورتی که بخواهیم تنها یک سند، با توجه به شرط مذکور حذف گردد، تنها کافی است که بعد از پارامتر {}، از true و یا عدد ۱ استفاده نماییم.

می‌خواهیم اولین سندی از مجموعه users، که فیلد "firstName"، آن برابر مقدار "Dariush" می‌باشد را حذف نماییم. برای این منظور از یکی از دستورات ذیل استفاده می‌کنیم:

> db.users.remove( { "fristName" : "Dariush" } , 1 );

> db.users.remove( { "fristName" : "Dariush" } , true );


  • داریوش تصدیقی
۱۹
آبان

با سلام و عرض ادب خدمت تمامی دوستان و سروران گرامی

من داریوش تصدیقی هستم و بسیاری از شما عزیزان، نام مرا در رابطه با محیط دات نت (NET.) و زبان برنامه‌نویسی سی شارپ (#C) شنیده‌اید... ولی قریب ۲ سال است، ضمن کار و آموزش در حوزه دات نت و سی شارپ، با MEAN Framework، آشنا شده‌ام و مرا خیلی به خود جذب کرده است... حروف اولیه MEAN، عبارتند از MongoDB, Express.js, Angular.js, Node.js که البته در طی این دو سال، دوره‌های موفق و زیادی در خصوص Angular.js برگزار کرده‌ام و پروژه‌های زیادی نوشته‌ام... ولی در رابطه با بقیه موارد، به این فکر افتادم تا برای آشنایی بیشتر شما عزیزان، همه این موارد را در قالب یک وب‌لاگ ارایه دهم. امیدوارم که مطالب این وب‌لاگ، مورد توجه و عنایت شما عزیزان قرار گرفته و در این مسیر با من همراه باشید...

این مجموعه، اگر نگوییم که ممکن است در آینده‌ای نه چندان دور، اکثر شرکت‌ها را به سمت خود جذب خواهد کرد، ولی بدون اغراق می‌توان ادعا کرد، که هر برنامه‌نویسی را مسحور خود خواهد ساخت...

برای اطلاع‌رسانی به شما عزیزان، در خصوص درج و ویرایش مطالب و نیز اعلام برگزاری دوره‌های آموزشی در این خصوص، کانالی را در تلگرام ایجاد نمودم که می‌توانید در آن عضو شوید:

https://Telegram.me/IranianExperts

از آنجایی که حساسیت و وسواس زیادی در درج مطالب دارم، بسیار خوشوقت خواهم شد، در صورتی که غلط املایی، ادبی، فنی و غیره ملاحظه کردید، آنرا به اینجانب گزارش داده تا در اولین فرصت، نسبت به ویرایش آن اقدام کنم.

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

با تجدید احترام
داریوش تصدیقی

0098-912-108-7461 - DariushT@GMail.com

  • داریوش تصدیقی
۱۷
آبان

در این درس، فرض بر آن است که در بانک اطلاعاتی test قرار داریم و در داخل این بانک اطلاعاتی، تعدادی سند، در مجموعه users قرار دارد.

با دستور ذیل فهرست کلیه اسناد (کاربران) موجود در مجموعه users نمایش داده می شود:

> db.users.find();

با استفاده از یک عبارت JSON و ارسال آن به عنوان پارامتر ورودی find، می توانیم اسناد خاصی (محدود شده) را بدست آوریم. به عنوان نمونه، با استفاده از دستور ذیل می‌توانیم فهرست اسنادی (کاربرانی) را مشاهده نماییم که نام آنها دقیقا Dariush می‌باشد:

> db.users.find( { "firstName" : "Dariush" } );

اصطلاحا به این پارامتر ورودی، Criteria گفته می‌شود.

با استفاده از دستور ذیل می‌توانیم، فهرست کاربرانی که سن آنها بزرگتر از ۲۰ سال می‌باشد را مشاهده نماییم:

> db.users.find( { "age" : { $gt : 20 } } );

با استفاده از دستور ذیل می‌توانیم، فهرست کاربرانی که سن آنها کمتر از ۳۰ سال می‌باشد را مشاهده نماییم:

> db.users.find( { "age" : { $lt : 30 } } );

با استفاده از دستور ذیل می‌توانیم، فهرست کاربرانی را که سن آنها بزرگتر یا مساوی ۲۰ سال می‌باشد را مشاهده نماییم:

> db.users.find( { "age" : { $gte : 20 } } );

با استفاده از دستور ذیل می‌توانیم، فهرست کاربرانی که سن آنها کمتر یا مساوی ۳۰ سال می‌باشد را مشاهده نماییم:

> db.users.find( { "age" : { $lte : 30 } } );

با استفاده از دستور ذیل می‌توانیم، فهرست کاربرانی که سن آنها بزرگتر از ۲۰ سال و کوچکتر از ۳۰ سال می‌باشد را مشاهده نماییم (دقت داشته باشید که در این درس از مفهموم AND استفاده شده است):

> db.users.find( { "age" : { $gt : 20 } , "age" : { $lt : 30 } } );

با استفاده از دستور ذیل می‌توانیم، فهرست کاربرانی که سن آنها کمتر از ۲۰ سال یا بزرگتر از ۳۰ سال می‌باشد را مشاهده نماییم (دقت داشته باشید که در این درس از مفهموم OR استفاده شده است):

> db.users.find( { $or : [ { "age" : { $lt : 20 } } , { "age" : { $gt : 30 } } ] } );

نکته: در درس‌های قبل تا حدودی با ساختار عبارات JSON آشنا شدیم. ولی بد نیست که نکته دیگری را نیز به آن اضافه نماییم. با استفاده از [ ] می‌توانیم یک آرایه (Array) تعریف کنیم. همانطور که در آخرین دستور فوق ملاحظه می کنید، دو شرط مربوط به کوچکتر از ۲۰ سال بودن سن و نیز بزرگتر از ۳۰ سال بودن سن، به عنوان دو عبارت JSON، در داخل یک آرایه قرار گفته‌اند.

نکته: یکی از نکاتی که باید بدان اشاره نماییم، آن است که تمام پارامترهای ورودی که از این پس به توابع MongoDB ارسال می‌کنیم، باید دارای ساختار JSON باشند. اجازه دهید که با تابع دیگری به نام sort آشنا شویم.

با استفاده از تابع sort و ارسال یک عبارت JSON به آن، مشخص می‌کنیم که نتیجه اطلاعات، مرتب شده بر اساس چه فیلد و یا فیلدهایی نمایش داده شوند. فرض کنید که می خواهیم فهرست کاربران را مرتب شده بر حسب سن آنها بدست آوریم، برای این منظور از دستور ذیل استفاده می‌کنیم:

> db.users.find().sort( { "age" : 1 } );

در مثال فوق، عدد یک (۱) مشخص می‌کند که می‌خواهیم نتیجه اطلاعات (فهرست کاربران)، مرتب شده بر روی فیلد سن، و به صورت از کوچک به بزرگ (Ascending) نمایش داده شوند. در صورتی که به جای عدد یک (۱) از عدد منفی یک (۱-) استفاده نماییم، اطلاعات کاربران، مرتب شده بر روی فیلد سن، و به صورت از بزرگ به کوچک (Descending) نمایش داده خواهند شد.

فرض کنید که می‌خواهیم فهرست کاربران را مرتب شده برحسب سن (از کوچک به بزرگ) و نیز نام آنها (از بزرگ به کوچک) مشاهده نماییم. برای این منظور از دستور ذیل استفاده می‌کنیم:

> db.users.find().sort( { "age" : 1 , "firstName" : -1 } );

  • داریوش تصدیقی
۱۴
آبان

فرض کنید که در بانک اطلاعاتی test، قرار داریم. حال می‌خواهیم اقدام به ایجاد یک مجموعه (Collection) کرده، و در آن، یک سند (Document) درج (ایجاد) نماییم. نکته جالب این است که بر خلاف بانک‌های اطاعاتی RDBMS، که ابتدا جدول را با فیلدهای مشخص و با نوع خاص ایجاد کرده و سپس اقدام به درج (ایجاد) اطلاعات می‌کنیم، در بانک‌های اطلاعاتی NoSQL، خصوصا MongoDB، تنها کافی است که مستقیما اقدام به درج اطلاعات (سند) نماییم. با درج اولین سند، به طور خودکار مجموعه مورد نظر ایجاد می‌گردد. برای درج سند، تنها کافی است که پس از کلیدواژه db، نام مجموعه را نوشته، و پس از آن، از دستور insert، استفاده کرده و سند خود را در قالب ساختار JSON بنویسیم. در نمونه ذیل، فرض بر آن است که می‌خواهیم نام مجموعه مورد نظر، users باشد:

> db.users.insert( { "firstName" : "Dariush", "lastName" : "Tasdighi" } );
writeResult({ "nInserted" : 1 })

به همین سادگی! با دستور فوق، ابتدا مجموعه‌ای به نام users، ایجاد شده و سپس در داخل آن، یک سند، با دو فیلد به نام‌های firstName و lastName و با مقادیری که مشاهده می‌کنید، ایجاد می‌گردد.

عبارتی که به عنوان پارامتر ورودی تابع insert، نوشته شده است، یک عبارت JSON می‌باشد.

اجازه دهید قبل از ادامه بحث، کمی در مورد عبارات JSON، صحبت کنیم. به طور کلی، ایجاد یک عبارات JSON، بسیار ساده است! کافی است که در ابتدا و انتهای آن، از {} استفاده کرده، و در داخل آن، فیلدها را در داخل "" قرار داده، و سپس مقدار هر فیلد را پس از (:) نوشته، و برای جدا کردن فیلدها و مقادیرشان از دیگر فیلدها از (,) استفاده نماییم. توجه داشته باشید که مقادیر متنی هر فیلد، باید در داخل "" نوشته شود و برای مقادیر عددی (اعم از صحیح و یا اعشاری) و نیز مقادیر true و false، که مقادیر Boolean می‌باشند، نیازی به نوشتن "" وجود ندارد. به مثال ذیل توجه کنید:

{ "fullName" : "Dariush Tasdighi", "age" : 42, "salary" : 120.12, "active" : true }

مجددا در مورد عبارات JSON، مطالبی خواهیم گفت. ولی در حال حاضر، کفایت می‌کند.

با استفاده از دستور show collections می‌توانیم فهرست کلیه مجموعه‌های موجود در بانک اطلاعاتی جاری (test) را مشاهده نماییم:

> show collections
system.indexes
users

مجددا از دستور show dbs استفاده می‌کنیم، تا ببینیم که آیا بانک اطلاعاتی test، رسما ایجاد شده است یا خیر؟

> show dbs
local 0.078GB
test  0.078GB

همانگونه که ادعا کردیم، با ایجاد اولین سند، به طور خودکار، ابتدا بانک اطلاعاتی test، و پس از آن مجموعه users ایجاد می‌گردد.

با استفاده از دستور find می‌توانیم، فهرست اسناد (اطلاعات) موجود در یک مجموعه را مشاهده کنیم:

> db.users.find();
{ "_id" : ObjectId("563bb647ab7cbdeddbb081f8"), "firstName" : "Dariush", "lastName" : "Tasdighi" }

توجه: دستور find، آن هم به شکل فوق، دقیقا معادل دستور SELECT * FROM users در SQL می‌باشد.

توجه: همانگونه که مشاهده می‌کنید، MangoDB، پس از درج (ایجاد) هر سند، به طور خودکار، یک فیلد به نام id_ و با مقداری تصادفی ولی کاملا منحصر به فرد، ایجاد می‌کند!

 

این مطلب هنوز به اتمام نرسیده است!

  • داریوش تصدیقی
۱۳
آبان

همانگونه که در مطلب قبلی عنوان گردید، با اجرای دستور MongoD، سرویس بانک اطلاعاتی، راه اندازی شده و قابل استفاده می‌باشد. دقت داشته باشید که از این پس پنجره Windows Command Prompt، دیگر قابل استفاده نمی‌باشد! و برای ادامه عملیات باید از پنجره دیگری استفاده نماییم. برای اینکه سرویس بانک اطلاعاتی راه‌اندازی شده را متوقف کنیم، تنها کافی است، وارد پنجره مربوط به آن شده، و از دکمه‌های ترکیبی CTRL + C استفاده نماییم.

در حالی که این پنجره باز می‌باشد، برای ادامه عملیات، پنجره Windows Command Prompt‌ دیگری باز کرده و در آن مجددا، وارد درایو C‌ و سپس پوشه MongoDB می‌شویم.

حال برای ارتباط برقرار کردن با سرویس بانک اطلاعات MongoDB، از دستور Mongo، استفاده می‌کنیم:

C:\MongoDB>Mongo
MongoDB shell version: 3.0.7
connecting to: test
>

با اجرای دستور فوق، وارد محیط مدیریت بانک اطلاعاتی MongoDB‌ می‌شویم. دقت داشته باشید که اولا در همان اجرای اولیه دستور فوق، بانک اطلاعاتی به نام local ایجاد شده، و دوما سیستم، به طور پیش فرض، تمایل به اتصال بانک اطلاعاتی به نام test دارد، هر چند که هنوز، بانک اطلاعاتی test ایجاد نشده است! خواهید دید، تا وقتی که مجموعه‌ای (Collection) در داخل بانک اطلاعاتی، مثلا test ایجاد نکنید، این بانک اطلاعاتی به طور رسمی ایجاد نمی‌گردد.

چگونه می‌توانیم متوجه شویم، در حال حاضر، درون چه بانک اطلاعاتی قرار داریم؟

با استفاده از دستور db می‌توانیم اطمینان حاصل کنیم که در حال حاضر درون چه بانک اطلاعاتی قرار داریم:

> db
test

چگونه می‌توانیم فهرست کلیه بانک‌های اطلاعاتی موجود در MongoDB را بدست آوریم؟

با استفاده از دستور show dbs می‌توانیم فهرست تمام بانک‌های اطلاعاتی موجود در MongoDB را مشاهده نماییم:

> show dbs
local   0.078GB

همانگونه که ملاحظه می‌کنید، ما در حال حاضر، درون بانک اطلاعاتی test قرار داریم، ولی نام آن، در فهرست بانک‌های اطلاعاتی وجود ندارد! همانگونه که بیان گردید، تا وقتی که درون بانک اطلاعاتی، مجموعه‌ای ایجاد نکنیم، به طور رسمی، بانک اطلاعاتی ایجاد نمی‌گردد.

چگونه می‌توانیم، وارد بانک اطلاعاتی دیگری شویم؟

با استفاده از دستور use می‌توانیم از بانک اطلاعاتی جاری خارج شده و وارد بانک اطلاعاتی دیگری بشویم:

> use local
switched to db local

حال اگر مجددا از دستور db استفاده نماییم، سیستم به ما خواهد گفت که در حال حاضر، درون بانک اطلاعاتی local قرار داریم:

> db
local

چگونه می‌توانیم از فهرست مجموعه‌های موجود در بانک اطلاعاتی جاری، مطلع شویم؟

با استفاده از دستور show collections می‌توانیم فهرست کاملی از کل مجموعه‌های موجود درون بانک اطلاعاتی جاری را بدست آوریم:

> show collections
startup_log
system.indexes

حال مجددا سراغ بانک اطلاعاتی test می‌رویم تا تکنیک‌های مربوط به ایجاد مجموعه و نیز ایجاد، ویرایش، حذف و و فهرست‌گیری اطلاعات و غیره را در محیط MongoDB تجربه نماییم:

> use test
switched to db test

این مطلب هنوز تکمیل نشده است!

  • داریوش تصدیقی
۱۲
آبان

همانگونه که در مطلب قبل، در مورد ورود به پایگاه MongoDB، انتخاب برنامه، دانلود و نصب آن صحبت کردیم، در این مطلب می خواهیم طریقه راه اندازی آنرا توضیح دهیم.

در صورتی که فایل MSI را از پایگاه MongoDB دانلود کرده و اقدام به نصب آن کرده باشید، بسته به اینکه سیستم عامل ویندوز شما، ۶۴ بیتی و یا ۳۲ بیتی بوده و در ضمن، نسخه برنامه را به درستی دانلود و نصب کرده باشید، تعدادی فایل در یکی از نشانی های ذیل قرار خواهند گرفت:

C:\Program Files\MongoDB\Server\3.0\bin

و یا

C:\Program Files (x86)\MongoDB\Server\3.0\bin

برای اینکه هیجان کار را بیشتر کنیم، تا شما اطمینان حاصل کنید که صرفا Extract صورت گرفته و نصب واقعی در کار نبوده است، توصیه می کنیم که ابتدا پوشه ای در درایو C، مثلا به نام MongoDB ایجاد کرده، و سپس تمامی فایل هایی که در پوشه bin قرار دارند را به این پوشه جدید، کپی نمایید.

MongoDB برای ذخیره کردن اطلاعات خود، به مسیر پیش فرض data/db/ نیاز دارد. برای این منظور، وارد درایو C شده و اقدام به ایجاد پوشه ای به نام data کرده و در داخل پوشه data نیز، پوشه دیگری به نام db ایجاد نمایید. توجه داشته باشید که پوشه data، باید در ریشه درایو C ایجاد گردد! لازم به ذکر است که شما می توانید مسیر پیش فرض را تغییر دهید. در درس های آتی به این تنظیمات خواهیم پرداخت.

حال وارد محیط Windows Command Prompt شده و وارد درایو C‌ و سپس وارد پوشه MongoDB شوید. پس از ورود به این مسیر، در اولین اقدام دستور ذیل را نوشته، تا نسخه بانک اطلاعاتی MongoDB نمایش داده شود:

C:\MongoDB>MongoD --version
db version v3.0.7
git version: ...

توجه: دقت داشته باشید که تمامی پارامترهایی که در مقابل دستور MongoD نوشته می شوند، Case Sensitive بوده و باید با حروف کوچک نوشته شوند. در صورتی که به عنوان مثال، شما پارامتر version را به صورت VERSION بنویسید، با پیام خطا مواجه خواهید شد.

توجه: دقت داشته که خود دستورات، Case Sensitive نمی باشند، لذا در صورتی که شما دستور MongoD را به صورت mongod و یا MONGOD بنویسید، مشکلی در اجرای دستورات نخواهید داشت.

توجه:‌ دقت کنید که برای استفاده از پارامتر version، می توانید قبل از آن، از یک (-) و یا دو (-) استفاده کنید، ولی توصیه می شود که از دو (-) استفاده نمایید.

با استفاده از دستور ذیل، شما می توانید، کلیه پارامترهایی که مورد استفاده دستور MongoD قرار می گیرند را مشاهده نمایید:

C:\MongoD>MongoD --help

حال می خواهیم سرور MongoDB را راه اندازی نماییم. برای این منظور، تنها کافی است که از دستور ذیل استفاده نمایید:

C:\MongoD>MongoD

پس از اجرای این دستور، بسته به تنظیمات Security سیستم عامل ویندوزتان، ممکن است که پنجره ای ظاهر شود. در صورت ظاهر شدن این پنجره، بر روی دکمه Allow Access کلیک نمایید. بدین ترتیب، سرور MongoDB راه اندازی شده و آماده استفاده می باشد.

- با تشکر از سرکار خانم مهندس مریم تفس عزیز، که در ویرایش این متن، مرا یاری داده است.

  • داریوش تصدیقی
۱۲
آبان
در این مطلب می خواهم به معرفی بانک اطلاعاتی MongoDB بپردازم، تا با امکانات و ویژگی های آن آشنا شده و در صورت لزوم از آن استفاده نمایید...

MongoDB یک بانک اطلاعاتی NoSQL یا Non SQL یا Non Relational است. یعنی بر خلاف اکثر بانک های اطلاعاتی که می شناسید (Access, SQL Server, Oracle, MySQL)، یک بانک اطلاعاتی RDBMS نمی باشد! پس تا اینجا به این نتیجه می رسیم که در بانک های اطلاعاتی NoSQL چیزی به معنی Relation وجود ندارد!

بر خلاف SQL Server و همانند My-SQL و Oracle، بانک اطلاعاتی MongoDB، مستقل از سیستم عامل می باشد. یعنی Cross Platform می باشد. این بدان معنی است که تقریبا روی اکثر سیستم عامل ها نصب و راه اندازی می شود.

در MongoDB، به جای جدول (Table)، مفهومی به نام مجموعه (Collection) وجود دارد.

در MongoDB، به جای سطر (Row or Record)، مفهومی به نام سند (Document) وجود دارد، به همین دلیل، اصطلاحا می گویند که این بانک اطلاعاتی، Document Oriented می باشد.

در MongoDB، تراکنش (Transaction) وجود ندارد!

در تمام بانک های اطلاعاتی RDBMS، برای استفاده از جداول، ابتدا جدول را ایجاد کرده و سپس باید! ساختار جدول را تعریف کنیم. یعنی باید بگوییم که در این جدول چه فیلدهایی داریم و جنس هر فیلد را مشخص کنیم. بر خلاف بانک های اطلاعاتی RDBMS، بانک های اطلاعاتی NoSQL، اصطلاحا Schema-Less می باشند! یعنی دارای هیچ ساختار معینی از نظر فیلد و جنس فیلد ندارند! یعنی شما می توانید به راحتی ابتدا مجموعه (Collection) خود را تعریف کرده و بدون نیاز به تعریف فیلدها و جنس آنها، اقدام به درج اطلاعات (سند) نمایید، و این خیلی هیجان انگیز است.

در بسیاری از بانک های اطلاعاتی RDBMS، مانند SQL Server و Oracle، ما از زبانی به نام T-SQL استفاده می کنیم، در حالی که در بانک اطلاعاتی MongoDB‌، از زبان JavaScript استفاده می کنیم! شاید به همین دلیل است که در این وبلاگ، سعی خواهم کرد که روی مفاهیم و دستورات جاوا اسکریپت تمرکز بیشتری نمایم.

ضمن آنکه بانک های اطلاعاتی NoSQL برای مصارف Big Data استفاده می شوند، ولی در پروژه های Small, Medium, Large Scale نیز استفاده از آنها خالی از لطف نیست، چرا که سرعت و کارایی آنها به طرز چشم گیری فوق العاده بوده و قابل مقایسه با بانک های اطلاعاتی RDBMS نمی باشند.

برای دانلود MongoDB، می توانید به پایگاه http://www.MongoDB.com مراجعه نموده و با توجه به سیستم عامل خود، و با عنایت به ۳۲ بیتی و یا ۶۴ بیتی بودن آن، نسخه مناسب را انتخاب کنید. متاسفانه در حال حاضر، به دلیل تحریم های بی شرمانه! در لحظه دانلود با خطایی مواجه خواهید شد و امکان دانلود وجود ندارد! به هر حال امیدوارم، در زمانی که شما این مطلب را مطالعه می کنید، این محدودیت از این سایت و دیگر سایت ها، از بین رفته باشد.

مواردی که در خصوص MongoDB، خیلی جالب و هیجان انگیز می باشد، آن است که کل فایل ZIP و یا MSI که دانلود می کنید، کمتر از هشتاد (۸۰) مگابایت می باشد! و اساسا عملیات نصب، به آن معنی همیشگی نیست! بلکه صرفا یک سری فایل در محلی که شما تعیین کرده اید، Extract می شود. شما می توانید حتی فایل های مقصد را در محل و پوشه دیگری کپی کرده و در محل جدید، بانک اطلاعاتی MongoDB را راه اندازی نمایید.

توصیه می کنم که به نشانی ذیل مراجعه کنید و مطلبی که در مقایسه دو بانک اطلاعاتی NoSQL و RDBMS نوشته شده است را مطالعه کنید. در این مقاله دو بانک اطلاعاتی MongoDB و MySQL با هم مقایسه شده اند:

این مطلب هنوز تکمیل نشده است!
  • داریوش تصدیقی
۱۲
آبان

Functions are Objects

The typeof operator in JavaScript returns "function" for functions.

But, JavaScript functions can best be described as objects.

JavaScript functions have both properties and methods.

The arguments.length property returns the number of arguments received when the function was invoked:


در زبان جاوا اسکریپت، با استفاده از دستور typeof، شما می توانید جنس یک متغیر را دریافت نمایید. در صورتی که به این دستور، نام یک تابع و یا متغیری که تابع در آن ذخیره شده است را ارسال نمایید، جنس آنرا function اعلام می کند.

ولی واقعیت این است که بهتر است، توابع را به عنوان اشیاء در نظر بگیریم.

در زبان جاوا اسکریپت، توابع می توانند Property و Method داشته باشند.

در صورتی که در داخل یک تابع از دستور arguments.length استفاده نمایید، می توانید به تعداد پارامترهایی که تابع توسط آنها اجرا شده است، دست پیدا کنید.


function myFunction(a, b) {
    return arguments.length;
}


The toString() method returns the function as a string:


در صورتی که در داخل سورس کد، بعد از نام تابع و یا متغیری که تابع را در داخل آن ذخیره کرده اید، از تابع toString استفاده نمایید، می توانید، کل قسمت مربوط به تعریف تابع را به صورت متنی بدست آورید.


function myFunction(a, b) {
    return a * b;
}

var txt = myFunction.toString();


A function defined as the property of an object, is called a method to the object.
A function designed to create new objects, is called an object constructor.


در صورتی که در داخل یک تابع، تابعی تعریف نمایید، تابع درونی Method نامیده می شود.

تابعی که برای ایجاد یک شیء، نوشته می شود، سازنده شیء نامیده می شود.


این مطلب هنوز در حال تکمیل می باشد!

مرجع: http://www.W3Schools.com

  • داریوش تصدیقی
۱۰
آبان

JavaScript Function Definitions

JavaScript functions are defined with the function keyword.


توابع جاوا اسکریپت با کلیدواژه function تعریف می شوند.


You can use a function declaration or a function expression.


شما می توانید یا از تکنیک Declaration و یا Expression برای تعاریف توابع استفاده نمایید.


Function Declarations


Functions are declared with the following syntax:

تعریف توابع به شکل ذیل را Function Declarations می گویند:

function functionName(parameters) {
  code to be executed
}

Declared functions are not executed immediately. They are "saved for later use", and will be executed later, when they are invoked (called upon).

زمانی که شما توابعی را تعریف می کنید، در همان لحظه اجرا نمی شوند. آنها صرفا برای استفاده های آتی ذخیره می گردند، زمانی اصطلاحا آنها را اجرا (Invoke) می کنید.

function myFunction(a, b) {
    return a * b;
}

Semicolons are used to separate executable JavaScript statements.
Since a function declaration is not an executable statement, it is not common to end it with a semicolon.

برای جدا کردن دستورات اجرایی جاوا اسکریپت از (;) استفاده می کنیم، ولی از آنجایی که تعریف توابع، یک دستور اجرایی محسوب نمی شود، معمولا مرسوم نیست که پس از آکولاد بسته تابع، (;) قرار دهیم.

Function Expressions

A JavaScript function can also be defined using an expression.

A function expression can be stored in a variable:

توابع می توانند به شکل Expression تعریف شوند. در این حالت (به شکل ذیل)، ما متغیری را تعریف کرده و یک تابع را به آن Assign می کنیم:


var x = function (a, b) {return a * b};


After a function expression has been stored in a variable, the variable can be used as a function:


بعد از اینکه تابع به صورت Expression تعریف گردید و ما تابع را در داخل یک متغیر (x) ذخیره کردیم، می توان از متغیر x به صورت یک تابع استفاده کرد. بدین معنی که وقتی متغیر x را فرآخوانی می کنیم، مانند این است که تابع ذخیره شده در آن را فرآخوانی می کنیم.


var x = function (a, b) {return a * b};
var z = x(43);


The function above is actually an anonymous function (a function without a name).

Functions stored in variables do not need function names. They are always invoked (called) using the variable name.

The function above ends with a semicolon because it is a part of an executable statement.

به تابعی که بدون نام، و به شکل فوق تعریف می شود، اصطلاحا Anonymous Function می گویند.

توابعی که به شکل فوق تعریف شده، و آنها را در داخل یک متغیر ذخیره می کنیم، نیازی به نام ندارند. این توابع همیشه از طریق متغیرهایی که آنها را در خود ذخیره کرده اند، اجرا (Invoke) می شوند.

دقت داشته باشید، وقتی که توابع به صورت فوق تعریف می گردند، از آنجایی که به صورت دستور اجرایی تعریف می شوند، باید پس از آکولاد بسته، (;) نوشته شود.

The Function() Constructor


As you have seen in the previous examples, JavaScript functions are defined with the function keyword.

Functions can also be defined with a built-in JavaScript function constructor called Function().


همچنانکه در مثال های قبل ملاحظه کردید، توابع جاوا اسکریپت با کلید واژه function تعریف می شوند.

توابع همچنین می توانند توسط یک تابع سازنده از پیش تعریف شده به نام ()Function نیز تعریف شوند. بدین صورت که آخرین پارامتر آن کد تابع و پارامترهای قبلی آن به عنوان پارامترهای ورودی معرفی می شوند.

var myFunction = new Function("a""b""return a * b");

var x = myFunction(43);


در مثال فوق، ما یک تابع به صورت anonymous و expression و با استفاده از تابع Function تعریف کرده ایم.


You actually don't have to use the function constructor. The example above is the same as writing:


عملا شما مجبور به استفاده از Function Constructor نمی باشید. مثال فوق دقیقا با مثال ذیل معادل می باشد:


var myFunction = function (a, b) {return a * b};

var x = myFunction(43);


Most of the time, you can avoid using the new keyword in JavaScript.


در اکثر مواقع، شما می توانید از کلید واژه new، در جاوا اسکریپت، اجتناب نمایید.


Function Hoisting

JavaScript functions can be called before they are declared:


به طور خلاصه، مفهوم Hoisting آن است که، شما می توانید تابعی را تعریف کرده و بر خلاف اکثر زبان های برنامه نویسی! قبل از جایی که تابع مربوطه را تعریف کرده اید، از آن تابع استفاده کرده و آنرا اجرا نمایید.:


myFunction(5);

function myFunction(y) {
    return y * y;
}


Functions defined using an expression are not hoisted.


دقت داشته باشید، توابعی که به صورت Expression تعریف می شوند، یعنی توابعی که در داخل یک متغیر ذخیره می گردند، نمی توانند به صورت Hoisted مورد استفاده قرار گیرند. یعنی در صورتی که تابعی را به صورت Expression تعریف کرده باشید، نمی توانید متغیر مربوط به تابع مربوطه را، قبل از محل تعریف آن، استفاده نمایید، در این حالت تابع مربوطه اجرا نخواهد شد!


Self-Invoking Functions

Function expressions can be made "self-invoking".

A self-invoking expression is invoked (started) automatically, without being called.

Function expressions will execute automatically if the expression is followed by ().

You cannot self-invoke a function declaration.

You have to add parentheses around the function to indicate that it is a function expression:


در زبان جاوا اسکریپت، می توان به گونه ای تابعی را تعریف نمود که پس از تعریف آن، به طور خودکار اجرا شود. به این دسته از توابع Self-Invoking Functions می گویند.

اینگونه توابع، بدون اینکه نیازی باشد که در خط دیگری در سورس کد، آنها را اجرا نماییم، به طور خودکار اجرا می شوند.

اگر بعد از آکولاد بسته توابع، از دو پرانتز باز و بسته () استفاده شود، این توابع به صورت Self-Invoking Function عمل می کنند.

دقت داشته باشید که اگر صرفا پس از آکولاد بسته تابع، از () استفاده نمایید، با خطا مواجه خواهید شد! لذا باید ابتدا خود تابع را بین پرانتز باز و بسته قرار داده و پس از آن، از () استفاده نمایید.

(function () {
    var x = "Hello!!";      // I will invoke myself
})();


لازم به ذکر است که به توصیه Crockford، بهتر است بعد از آکولاد بسته تابع، () را نوشته و سپس تابع و () را با هم، درون یک () دیگر قرار دهید:


// Crockford Recommandation!
(function () {

    var x = "Hello!!";      // I will invoke myself
}());


The function above is actually an anonymous self-invoking function (function without name).


اصطلاحا به تابعی که به شکل فوق تعریف می شوند، Anonymous self-invoking function اطلاق می شود. دقت داشته باشید که معمولا در این حالت نام تابع نوشته نمی شود!

Functions Can Be Used as Values

JavaScript functions can be used as values:

در زبان جاوا اسکریپت، گاهی اجرای توابع، به عنوان مقدار، مورد استفاده قرار می گیرند:


function myFunction(a, b) {
    return a * b;
}

var x = myFunction(43);


JavaScript functions can be used in expressions:


و گاهی نیز، می توان در یک عبارت محاسباتی، از نتایج اجرای آنها استفاده نمود:


function myFunction(a, b) {
    return a * b;
}

var x = myFunction(43) * 2;

پایان قسمت اول... با ما باشید...

مرجع:‌ http://www.W3Schools.com

  • داریوش تصدیقی
۰۵
آبان

زبان برنامه نویسی برای Node، زبان JavaScript می باشد. حال می خواهیم برای شروع دستورات ساده ای را اجرا نماییم. ابتدا دستور Node را اجرا کرده، تا وارد محیط برنامه نویسی Node شوید.

?> Node

حال دستورات ذیل را به ترتیب نوشته و نتایج آنرا مشاهده نمایید:

> 1 + 1

2


> console.log("Hello, World!");

Hello, World!

undefined


> for(i = 1; i <= 5; i++) console.log("Hello, World!");

Hello, World!

Hello, World!

Hello, World!

Hello, World!

Hello, World!

undefined

حال دو بار دکمه های ترکیبی CTRL+C را فشار دهید تا از محیط Node خارج شوید.
توجه: دقت داشته باشید که در زبان برنامه نویسی JavaScript نحوه تعریف تمامی دستورات به صورت Camel Case‌ می باشد، این بدان معنا است که کلمه اول تمام حروف آن کوچک و بقیه کلمات، حرف اول آنها بزرگ و بقیه حروف کوچک نوشته می شود. مانند console, log, doSomething,...
توجه: اگر دقت کرده باشید در انتهای بعضی از دستورات فوق، کلمه undefined نوشته شده است. لازم به ذکر است، در صورتی که دستور شما مقداری را Return نماید، کلمه undefined نوشته نخواهد شد، مانند دستور ۱ + ۱، ولی در صورتی که دستور شما مقداری را Return نکرده و صرفا عملیاتی را انجام داده و یا چاپ نماید، این کلمه ظاهر خواهد گردید.

  • داریوش تصدیقی
۰۵
آبان

برای نصب و راه اندازی Node.js ابتدا وارد پایگاه https://nodejs.org/en شده و با توجه به سیستم عامل خود و نیز، با توجه به ۳۲ بیتی و یا ۶۴ بیتی بودن سیستم عامل خود، نسخه مناسب را انتخاب، دانلود و نصب نمایید.

توجه: در هنگام نصب، با گزینه های پیش فرض، عملیات نصب را به اتمام رسانید.

پس از عملیات نصب، سیستم عامل خود را یکبار Restart نمایید.

حال وارد محیط Command Prompt شده و دستور ذیل را نوشته، تا اطمینان حاصل نمایید که نصب با موفقیت صورت گرفته و امکان دسترسی به برنامه محیا می باشد:

?> Node --version

v4.2.1

اینجانب نیز دستور فوق را اجرا کردم و دستور بدون خطا اجرا گردید و نسخه جاری برنامه Node که ۴.۲.۱ می باشد، به اینجانب نمایش داده می شود.

توجه: دقت کنید که قبل از کلمه version‌باید دو بار از کاراکتر (-) استفاده نمایید.

توجه: دقت کنید که پارامترهای مربوط به برنامه Node، نسبت به حروف بزرگ و کوچک حساس می باشند (Case Sensetive)، لذا در صورتی که شما به جای version از پارامتر Version استفاده نمایید، با خطا مواجه خواهید شد. لازم به ذکر است که خود دستور Node، نسبت به حروف بزرگ و کوچک حساس نمی باشد!


  • داریوش تصدیقی
۰۵
آبان

برای نصب و راه اندازی GIT ابتدا وارد پایگاه http://www.git-scm.org شده و با توجه به سیستم عامل خود و نیز با توجه به ۳۲ بیتی و یا ۶۴ بیتی بودن آن،نسخه مناسب را انتخاب، دانلود و نصب نمایید.

توصیه می گردد که پس از عملیات نصب، سیستم عامل خود را یکبار Restart نمایید.

  • داریوش تصدیقی