بيئة عملك مفتوحة المصدر

حسنا فلنتخيل انك واقف الان امام فراغ مؤلف من غرفتين سيمتلئان بمكاتب خشبية تعتليها شاشات الحواسيب … (منظر خلاب ها ) لكن المطلوب منك ليس التامل والتفكر😀 بل اعداد هذه الاجهزة لتكون قادرة للعمل هي والمخدم Server الذي سيرافقها للعمل ضمن بيئة شركة تطوير برمجيات . لذلك ساساعدك في اكمال هذا الحلم (هو حلمي اساسا ) و ساضمن لك شرط هو ان نستخدم اكبر نسبة من البرامج مفتوحة المصدر😉 ليست كل البرامج مفتوحة المصدر مجانية لكن على الغالب يتوفر منها نسختين نسخة مجانية ونسخة مدفوعة تكون مزودة اما باضافات اكثر او تكون مدعومة اكثر support .. وكملاحظة قبل البدء فان هذا الاسلوب ينفع اذا كنت ترغب في اعداد بيئة عمل مع زملاء الدراسة من اجل المشاريع البرمجية التي تنهمر علينا اثناء مسيرتنا العلمية .. طبعا عليك اعدادها في وقت الفراغ وليس الانشغال بها اثناء وقت المشروع😀 لنبدأ :

تابع قراءة بيئة عملك مفتوحة المصدر

MongoDB install in Windows | Wikitechie

اكتب هذه التدوينة ولسان حالي قول “مجبر اخاك لا بطل” فانا لم ار واجهة Windows منذ زمن بعيد لكن بعد ان رايت ان تنصيب MongoDB ليس بالامر المعتاد على ويندوز وبعض اقتراح صديق قررت الكتابة .

صحيح انني قلت ان الامر ليس بالمعتاد لكنه ليس بالصعب ايضا هو بضع خطوات بسيطة وستكون جاهزا للابحار في الـ Mongo واليك الخطوات :

  1. قم بتنزيل ملفات MongoDB الخاصة بـ Windows من الموقع هنا تاكد من اختيارك للملفات الخاصة بمعمارية نظامك 32bit او 64bit وتاكد من ان النسخة هي 2.2.0 فهي التي سنعمل عليها لاحقا
  2. حضر كوبا من الشاي او القهوة او “النسكافيه” وانتظر التحميل الى ان ينتهي – هذه الخطوة الفضلة لدي😀 –
  3. بعد انتهاء التنزيل اذهب الى الملف المضعوط وفك ضغطه الى القرص الرئيسي C مباشرة .
  4. الان افتح موجه الاوامر CMD بالذهاب الى القائمة ابدا ثم كافة البرامج ثم البرامج الملحقة ثم CMD او اكتب CMD في مربع البحث ووفر على نفسك عناء الانتقال بين القوائم😀
  5. قم بكتابة التعليمات التالية :


    cd /
    move C:\mongodb-win32-* C:\mongodb

    ما يقوم به السطران السابقان هو تغيير اسم المجلد في C الى Mongo فقط فهو يكون مزودا برقم الاصدار وبمعمارية النسخة هذه الخطوة ستجعل الحياة اسهل🙂

  6. نحن اﻵن بحاجة إلى إنشاء المجلد الذي سيتم بداخله تخزين المستندات وقواعد البيانات سننشىء هذا المجلد على القرص C ايضا يمكنك تغييره لكن عليك الانتباه الى مساره في الخطوات اللاحقة اما ان تنشئه من الواجه او ان تكتب السطرين في CMD حيث انت الان الخيار لك


    md data
    md data\db

    انهما مجلدان وليس واحد انتبه على الاسماء في حال قمت بهذه الخطوة باستخدام الطريقة التقليدية من الواجهة

  7. الان انت جاهز لتبدا بـ MongoDB قم ببدأ الـ Mongo deamon بكتابة السطر :

    C:\mongodb\bin\mongod.exe

    إذا ظهرت العبارة “Wating for Connection” فمبارك لك نجاح التنصيب
    في حال اخترت موقعا اخر لحفظ البيانات تاكد ان تكتبه بهذا الشكل

    C:\mongodb\bin\mongod.exe --dbpath "full path here"

  8. لتجربة Mongo افتح CMD اخر غير الذي بدانا به mongod و اكتب فيه :

    C:\mongodb\bin\mongo.exe

    اذا ظهر السهم > على جانب الشاشة تهانينا فقد نجحت العملية تماما يمكنك الاحتفال الان

celebrate

MongoDB Tutorial | Wikitechie

سنبدأ الان بتعلم مبادئ الـ MongoDB والعمليات الاساسية ضمنها , سيكون عملنا ضمن MongoDB Shell اي ايضا ضمن Command-line -استحملونا يا جماعة البدايات صعبة دائما- لذلك ضمن Terminal اكتب الامر :

mongo

ستبدا الان الـ Mongo Shell وسنلاحظ ظهور العبارة : connecting to: test اي ان Mongo متصلة الان مع قاعدة بيانات اسمها Test سننشئ الكثير بعد قليل لا تقلق😉 .

والان لنبدأ :

  • إن Mongo Shell هي ايضا JavaScript shell اي يمكنك تطبيق تعليمات جافا سكريبت هنا ايضا ما رايك ان تجرب حلقة For هذه :

    for(i=0;i<10;i++){print("I love MongoDB")}

    تاكد من كتابة كل شيء على سطر واحد قبل ضغط Enter لمشاهدة النتيجة🙂
    يمكنك ايضا تعريف متحولات بسيطة وتنفيذ عمليات حسابية .

  • ان Mongo  تتعامل مع البيانات على شكل  JSON Objects -احدى طرق تمثيل المعطيات – التي تستطيع JavaScript التعامل معها ايضا ما رايك ان ننشىء بعضا منها سوية ؟ اعرف انك متحمس جدا ويداك الان مستعدتان لكتابة التعليمات الآتيه :
  • لا لا قبل ان اخبرك بالتعليمات ساخبرك بنية Object الخاص بـ MongoDB😀 :
    1. بما انه JSON Object لذلك هو محصور دائما بين هذين القوسين : “{}”
    2. نقوم بتسمية اسم attribute (عربها الى الصفة ان اردت) ثم نكتب “:” ثم القيمة الخاصة به
    3. نفصل بين الـ attributes باستخدام الفاصلة “,”
    4. قد تكون قيمة الـ attributes من اي نمط ارقام احرف مصفوفات لكن تذكر ان تضع المحارف بين علامتي تنصيص ” وان تضع محتويات المصفوفة ضمن هذين القوسين “[]”

    يمكنك في ذهنك تمثيل الـ attribute بجداول في قاعدة البيانات من اجل تسهيل الامر في الفترة الاولى .
    الان نذهب الى التعليمات التي توضح ما سبق وسنقوم بتجريب حالات عدة :

    var a = {age:20}

    انه متحول بسيط جدا بداخله عدد يدل على العمر
    اليك مثالا اخر:

    var n = {age:20,name: 'Eyad'}

    هنا قمنا بادخال “صفتين” هما العمر والاسم لاحظ ان الاحرف وضعتها بين علامتي تنصيص

    هذا مثال عن مصفوفات :

    var x = {age:20,name: 'Eyad',Languages: ['c','js','ruby']}

    يمكنك التاكد من صحة ما كتبت بكتابة اسم المتحول ثم Enter لترى ما خزنته بضمنه
    لكن يؤسفني اخبارك ان كل ما فعلناه الان هو انشاء متحولات بداخلها قيم ولم ندخل بعد اي قيمة الى قاعدة البيانات😦
    الملاحظة الاخير في هذا الجزء ان كل متحول من MongoDB يمثل مستندا وبانشاءك متحولا وحفظة فانت انشئت مستندا جديدا هكذا هي طريقة MongoDB مع البيانات المخزن فيها تسمى “Documents-Oriented”

  • في هذا الجزء سنقوم بحفظ المتحولات التي خزناها قبل قليل سنسمها من الان بـ “مستندات” لذلك لا تغرك التسميات كثيرا
    اكتب في Shell :

    db.test.save(x)

    سنحفظ الان المتحول x في قاعدة البيانات test للتاكد من عملية التخزين اكتب :

    db.test.find()

    سيظهر لك جميع المستندات المخزنة في قاعدة البيانات test
    لاحظ ان Mongo سيضيف لوحده ID خاص بكل مستند . (ID هو رقم تسلسلي خاص بكل مستند في حال كان هذا المصطلح حديثا عليك ).
    جميل اليس كذلك ؟ لكن ماذا لو اردت تخزين هذا المستند في قاعدة بيانات اخرى غير test ؟ كيف سابنيها وكيف ساتصل بها Connect ؟
    طبعا لمن لديهم بعض الخبرة مع PHP , MySQL فهم يعلمون ان كل قاعدة بيانات تحتاج الى انشاء مسبق و وجود هيكليه سابقة Schema ثم عليك الاتصال بها و من ثم تبدأ بفعل ما تريد حسنا حسنا ساخبرك كيف تقوم بكل هذا .
    ما عليك القيام به هو : ﻻ شيء اجل لاشيء سوى وضع اسم قاعدة بيانتك الجديدة بدلا من test حتى لو لم تكن منشاة فستقوم MongoDB بانشاءها وتخزين مستندك بداخلها واصلا MongoDB تخزن بشكل ديناميكي لذلك لا داعي للـ Schema

  • لنذهب لشيء اخر وهو ممتع بالتاكيد انه الاستعلام عن المعطيات ضمن قاعدة البيانات لكن قبل البدء ساطلب منك ملئ قاعدة بياناتك ببعض المستندات ذات القيم المتنوعة للتجريب عليها ربما استخدام حلقة for سيوفر بعض الوقت هكذا مثلا :

    for(i=0;i<20;i++){db.test.save({age: 20 + i , exam : 5 + i })}

    اتمنى من كل قلبي الا اقع بين يدي مصحح يقوم بوضع العلامات بهذه الطريقة😀
    فلنبدأ بعض الاستعلامات مثلا عن كل مافي قاعدة البيانات :

    db.test.find()

    لقد راينا هذا من قبل انه سهل حسنا لنبحث عن وجود علامة 15 :

    db.test.find({exam:15})

    في حال وجود العلامة فانه سيطبع المستند كاملا اما ان لم يجد فلن يطبع شيئا
    مممممممم يا ترى هل يوجد علامات فوق 20 ؟
    طيب لنر :

    db.test.find({exam:{"$gt":20}})

    لاحظ شيئين :
    اولا انني بعد اسم الحقل exam وضعت قوسين “{}” ووضعت بداخلهما العملية .
    ثانيا العملية ذاتها تشبه الى حد كبير طريقة التخزين : العملية مسبوقة باشارة : “$” وموضوعة بين علامتي تنصيص ” ثم “:” ثم الرقم في حالتنا هذه وقد يكون قيمة .
    اتحاول حفظ ان gt هي اكبر من ؟ بسيطة انها اختصار لعبارة “greater than” وهكذا هي جميع العمليات :


    $lt - '<', $lte - '<=', $ne - '!='
    $in - 'is in array', $nin - '! in array'

    يمكنك تجريبها ستعطيك نتائج مبهرة

  • سنذهب الى عملية جديدة بسيطة جدا لكنها مهمة في حياتنا اليومية انها عملية Update او تعديل المعطيات الموجودة لابد اننا سنحتاج الى تعديل معلومات اخطائنا في كتابتها او تحديث معلومات جديدة و الامثلة كثير الامر ليس مقعد ابدا في Mongo بسبب مرونتها العالية سنقوم بتعديل علامة الشخص الذي عمره 37 في المثال السابق :

    db.test.update({age:37},{age:37,exam:50})

    تأكد منها بتعليمة find ساترك هذا لك وحدك🙂
    ما يهمني اخبارك به هنا هو انه عليك كتابة جميع الـ attributes التي لا تريد تعديلها والا فانك ستخسرها هذه نقطة مهمة جدا
    لن اتكلم عن الـ syntax اتصور انه بات مالوفا.
    ان لم ترد المخاطرة بضياع المعلومات يوجد تعليمة بسيطة لتعديل قيمة attribute معين هي : set ساعيد نفس المثال السابق باستخدام set :

    db.test.update({age:37},{'$set':{exam:50}})

    لم اضطر لاعادة كتابة كل صفات المستند🙂
    بالنسبة للمصفوفات لا تقلق يمكنك استخدام تعليمتي pull , push
    مثلا لو اردت ان تضيف لغة جديدة الى مصفوفة اللغات التي يتقنها احد الاشخاص فستكتب :

    db.test.update({age:37},{'$push': {'languages': 'ruby'}})

    هنا انت لست مضطر لتعيد كتابة كل شيء داخل المصفوفة في حال احببت التطبيق العملي لا تنسى اضافة عمود languages اما في حال نسخت السطر السابق ستلاحظ ان Mongo اضافت لوحدها هذا العامود هكذا هي قواعد البيانات والا فلا …

  • اتصور انه هنا سيكون اخر المطاف بنا واخر عملية مع Mongo انها عملية الازالة remove لابد وانك تتوقع كيف سيكون شكل الامر فقد صارت لديك خبرة جيد مع اسلوب المونغو مثلا في حال احببت ان تحذف المستند صاحب العمر 37 سيء الحظ معنا اليوم سنكتب :

    db.test.remove({age:37})

    و انتهى اجل انتهى هذا المستند الذي قدم لنا خدمات جليلة اليوم
    لكن في حال لم تكتب شيئا ضمن remove فكل ما في قاعدة البيانات من مستندات سيزول
    جرب ذلك احذف المستندات دون رحمة😀

لقد قمنا بجولة سريعة ومقتضبة جدا عن Mongo اتمنى ان تعجبكم طبعا كلما تقدمتم في العمل على Mongo ستحتاجون الى اشياء اخرى ربما اكثر تعقيدا -ليس بكثير – وفي حال احتجت المساعدة فانا اعرف صديق جيد لن يبخل عليك بشيء لاتتردد ابدا في طلبه.

MongoDB install in Ubuntu | Wikitechie

mongoDB

حسناً انه ابسط قسم والاسهل على الاطلاق ولن يتطلب منك سوى خط انترنت مقبول السرعة:/ و لوحة مفاتيح تعمل صحيح ان معظم العمل سيكون على Command-line لكن لا شيء مخيف اطمئن انها بضع تعليمات بسيطة
الان قم بفتح Termianl طرفية للعمل عليها يمكنك فعل هذا بالطريقة التي تعجبك (انا افضل فتحها باستخدام Ctrl+Alt+t )
ثم اليك الخطوات

  1. اولا : علينا اقناع Ubuntu ان هذا البرنامج سليم وذلك باحضار Key الخاص به والذي يكون مصدقة من Ubuntu عادة -ان لم تعي ما اعني فتجاوز القضية فهي ليس مهمة – وذلك باستخدام التعليمة :
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv 7F0CEB10
    ادخل كلمة السر ان طلب ذلك

    في حال كان الخرج يشبه هذا :

    gpg: key 7F0CEB10: public key "Richard Kreuter " imported
    gpg: no ultimately trusted keys found
    gpg: Total number processed: 1
    gpg: imported: 1 (RSA: 1)

    فهذا يعني انك اجتزت هذه المرحلة بنجاح !

  2. ثانيا : علينا اضافة “مستودع” الخاص بـ MogoDB لفعل هذا الامر يلزمنا خطوتين :
    اكتب الامر التالي :

    cd /etc/apt/sources.list.d/

    ثم انشئ ملفا باستخدام الامر
    sudo touch 10gen.list
    ثم افتح الملف 10gen.list باي محرر تفضله انا افضل Gedit حتى تخرج من نطاق Command-line قليلا😀
    sudo gedit 10gen.list
    وضع فيه السطر التالي :
    deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen
    احفظ الملف واغلقه وعد الى Terminal واكتب الامر
    sudo apt-get update
    انتظره حتى ينتهي وعندها نكون انهينا هذه الخطوة بنجاح

  3. ثالثا : انها الخطوة التي سنبدا بها مشوار الالف ميل تنصيب الـ MogoDB بالامر البسيط :

    sudo apt-get install sudo apt-get install mongodb-10gen
    انتظره ايضا حتى ينتهي من عمله (يمكنك الذهاب واعداد كوب من الشاي او اي شيء تفضله لا تبقى مرابطا خلف شاشة جهازك فالامر قد يطول😀 )

  4. الان وللتاكد من نجاح التبيت ما عليك الا كتابة :
    mongo
    وفي حال ظهر سهم صغير “<" على يسار الـ Terminal فقد نجحت ويمكنك الان الاحتفال😀
    تهانينا لقد انهيت المهمة بنجاح !
    1. celebrate