اذهب إلى المحتوى

عبدالهادي الديوري

الأعضاء
  • المساهمات

    368
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    22

كل منشورات العضو عبدالهادي الديوري

  1. تتميز لغة روبي بسهولة تعلمها ومرونتها، كما تتميز بالعديد من المكتبات التي تسمى جواهر روبي أو Ruby gems إذ لكل جوهرة دور معين، فمثلا جوهرة Rails تُمكنك من إنشاء تطبيقات للويب (مواقع إلكترونية)، وهناك العديد من الجواهر التي تُمكنك من إنشاء تطبيقات لسطح المكتب بلغة روبي وإليك بعضا من هذه المكتبات: RubyGTK: هذه المكتبة تُمكنك من إنشاء تطبيقات سطح المكتب بالاعتماد على مكتبة GTK التي يُوفرها مشروع GNU ، توثيق المشروع لا بأس به، رغم عدم توفر الكثير من الدروس حول كيفية التعامل معها إلا أنّها تبقى مكتبة جيدة. وشخصيا قمتُ بتجربة مكتبة RubyGTK منذ مدة لتطوير تطبيقات سطح المكتب وقد نجحت في إنشاء بعض التطبيقات بسيطة (لغرض التعلم فقط). FxRuby: هذه المكتبة جيدة جدا، تتمتع بمجتمع كبير، والتوثيق جيد، حتى أنّ هناك كتابا مطبوعا عنها، كما أنّها مُناسبة للمشاريع المُتوسطة. Shoes: هذه المكتبة هي الأكثر استخداما في هذا المجال تتميز بتوثيق جيد وبمُجتمع كبير، تتميز بقدرتها على تشغيل التّطبيقات على جميع أنظمة التّشغيل كالوندوز، لينكس ونظام الماك. ملاحظة: لغة روبي جيدة جدا عندما يكون المشروع صغيرا، كلما زاد تعقيد البرنامج ووظائفه كلما زادت صعوبة الأمر، لذلك فإن كنت ترغب بتعلم إنشاء تطبيقات قوية ومعقدة تؤدي وظائف عديدة فمن المُفضل استخدام لغة C أو C++ أو غيرها من اللغات المُتخصصة في هذا المجال.
  2. للبحث عن كلمة ما في ملف نصي من الطّرفية يُمكنك أن تفتح الملف بأحد المُحررات التي تعمل داخل الطرفية مثل مُحرر Nano أو محرر Vim يُمكنك مثلا أن تفتح الملف بمُحرر Nano بالأمر التّالي (مع استبدال file.txt إلى اسم الملف الذي ترغب في البحث فيه): nano file.txt يُمكنك بعدها أن تضغط على تركيبة المفاتيح CTRL+W ثم تكتب الكلمة التي ترغب بالبحث عنها، وبعد ذلك اضغط على ENTER، بعدها سوف ينتقل المؤشر مُباشر إلى الكلمة. بالنسبة لمُحرر Vim فيُمكنك فتح الملف كالتالي: Vim file.txt بعدها اضغط على مفتاح / واكتب الكلمة التي تبحث عنها ثم اضغط ENTER وللتنقل بين نتائج البحث استعمل كلا من مفتاحي n و N (shift-n).
  3. تطوير تطبيقات الويب تمر بمرحلتين مرحلة الواجهة الأمامية التي تتعلق بلغات HTML CSS Javascript، ومرحلة جهة الخادوم، وذلك بأحد اللغات المُخصّصة لذلك (PHP, Ruby, Python, Perl, Groovy, Scala...) لذلك عليك تعلّم أحد هذه اللغات مع إطار عمل مُخصّص لتسهيل العملية (لغة PHP مع إطار Laravel مثلا أو لغة Ruby مع إطار Rails)، كما يجب عليك تعلم كيفية التعامل مع قواعد البيانات باستعلامات SQL (أو على الأقل كيف يتم ذلك)، ويُمكن كذلك تطوير تطبيقات جهة الخادوم بلغة جافاسكربت بالاستعانة بمنصّة NodeJS وإليك بعض السلاسل التي ستُفيدك لتعلم هذه التّقنيات: HTML5 CSS3 Javascript PHP إطار Laravel لغة بايثون لغة روبي تذكر فقط أن تواكب تطورات التّقنيات واللغات الجديدة في هذا المجال، فكل يوم تظهر وتختفي العديد من التّقنيات لذلك حاول أن تتعلم جديد التّقنية وأن تتبع المُمارسات المنصوح بها.
  4. تعتبر لغة بايثون من أكثر لغات البرمجة شهرة في أيامنا هذه وذلك لتعدد استخداماتها في عدة مجالات، كما أنّها تتوفر على العديد من المكتبات التي تُساعد المُبرمج على إنجاز مراده في وقت أسرع، إذ يُمكنك أن تطور بها تطبيقات سطح المكتب أو تطبيقات الويب وسكربتات التّعامل مع الملفات في أنظمة التّشغيل وغيرها من المجالات، لكل مجال مكتباته المتعددة، فمثلا لتطوير تطبيقات سطح المكتب بلغة بايثون فيُمكنك أن تستعمل مكتبة GTK أو مكتبة QT وبالنّسبة لتطبيقات الويب فهناك العديد من أطر العمل التي ستُساعد على إنشاء مواقع إلكترونية ونشرها على الإنترنت، يعد إطار Django من أشهر هذه الأطر وأكثرها مرونة، وإطار Flask مناسب كذلك لهذه المُهمة، وهناك العديد من أطر الويب الأخرى المُتوفرة للغة بايثون. إذا كنت ترغب بتعلم لغة بايثون فيُمكنك أن تبدأ بسلسة تعلم بايثون.
  5. لغة PHP لغة خاصّة ببناء تطبيقات الويب، ويُمكنك أن تبني بها عدة تطبيقات دون الحاجة إلى استخدام أي إطار، ولكنّك سوف تواجه صعوبات كثيرة خاصة إذا كنت مبتدئا مع اللغة، إذ يصعب إنشاء تطبيقات آمنة باللغة فقط دون أي إطار للعمل، لذلك فمن المُفضل أن تبني تطبيقاتك بالاستعانة بأحد أطر العمل المتوفرة والتي تُسهل عليك إنجاز العديد من المهام. إليك بعضا أهم أطر العمل المُتوفرة للغة PHP: Laravel CakePHP Symfony Zend Framework
  6. روبي لغة برمجة أنشئت أساسا لتوفير لغة بسيطة تجمع بين البرمجة الإجرائية والبرمجة الوظيفية للمطورين، رغم أنها طورت ونشرت في التسعينيات إلا أنها لم تحصل على الشهرة إلا عندما ظهر إطار العمل Ruby on rails الذي يُمكن مبرمجي اللغة ومَن تعلمها من إنشاء مواقع إلكترونية وتطويرها، تتميز لغة روبي بسهولة تعلمها وبساطتها وهي مناسبة للمُبتدئ الذي يرغب في دخول عالم البرمجة، تتعدد استخداماتها بين سكربتات الأتمتة لأنظمة التشغيل، إلى تطبيقات الويب وسطح المكتب وكذلك تطبيقات الحماية واختبار الاختراق، ما يُميزها هو توفر نظام مكتبات جاهزة يُساهم فيها أعضاء المُجتمع وهذه المكتبات تُسمى بالجواهر أو gems إذ يكفي مثلا أن تقوم بتنصيب جوهرة لتستطيع البدء في استخدامها. يُمكنك البدء بتعلم هذه اللغة من خلال سلسلة دروس لغة روبي.
  7. تطوير الواجهة الأمامية في أي موقع يتعلق بعدة تقنيات فأولا لدينا الهيكل ثم التّصميم أو التّنسيق ثمّ التّفاعل مع المُستخدم، لغة HTML ستمكنك من إنشاء هيكل لصفحات الويب، ثمّ تُمكنك لغة CSS من عرض المعلومات بشكل أكثر أريحية للعين وأكثر جاذبية (التّصميم المُسطّح، التصميم المُتجاوب والتقنيات المُتعلقة بها)، أمّا لإضافة التّفاعل إلى صفحات HTML فعليك بتعلم لغة Javascript البرمجية، ومن المُفضل تعلم مكتبة مثل AngularJS لإنشاء تطبيقات كاملة، كما يستحب أن تتعلم تقنيات أخرى مثل Jquery وajax ومكتبات Javascript المتعددة. عليك أن تتذكر بأنّ التقنيات والمكتبات تتغير باستمرار، فمنها ما يُتجاهل ومنها ما يظهر فيكتسح الويب في بضعة أشهر، لذلك فأهم شيء والاستمرار في التعلم، والاطلاع على التّقنيات والمكتبات الجديدة. لذلك فخلاصة الإجابة هي أنّك تحتاج إلى تعلم ما يلي: HTML5 CSS3 Javascript
  8. Ajax تقنية لإرسال واستقبال طلبات HTTP دون الحاجة إلى مُغادرة الصّفحة أو تحديثها، ولكن قبل ذلك يجب عليك أن تقوم بتضمين مكتبة Jquery في تطبيقك، ويُمكن استعمال هذه التقنية بالطّريقة التالية (ملف HTML): <a href="#" onclick="return getText();"> Get Text </a> <div id="output">waiting...</div> ملف (Javascript): function getText() { $.ajax({ url:'/url/to/hello_world_file.txt', complete: function (response) { $('#output').html(response.responseText); }, }); return false; } في ملف HTML نقوم بوضع رابط بحدث Onclick إذ بعد الضّغط على الرابط يتم استدعاء الدالة getText في ملف Javascript، داخل الدالة تقوم بتحديد رابط الملف الذي ترغب بالحصول على قيمه، ثم توضع القيمة داخل التابع response.responseText الذي نضعه داخل الوسم div عوضا عن جملة 'waiting...'. مثال تطبيقي.
  9. لغة Javascript هي لغة عالية المُستوى، كائنية ووظيفية في نفس الوقت، تتميز بقدرتها على العمل في أي منصة ما دام مُتصفح الويب حاضرا بها، أي أنّ المُتصفح وحده كفيل بتفسيرها، تُستعمل لتطوير تطبيقات الواجهات الأمامية Front-end وتطبيقات الصّفحة الواحدة Single Page وذلك بأطر العمل المُتوفرة لها مثل AngularJS وreactJS وغيرها من أطر العمل، كما أنّك تستطيع أن تبني بها تطبيقات بجهة الخادوم Server Side بالاستعانة بمنصة NodeJS، لغة Javascript مشهورة لأن غالب المواقع (إن لم تكن كلها) التي توجد على الأنترنت تعتمد على هذه اللغة للتفاعل مع المُستخدم وإجراء عمليات بجهة العميل Client Side (أي إضافة التّفاعل لصفحات HTML). سيُفيدك تعلّمها إذا كنت ترغب بتطوير تطبيقات ويب مُستقلة مناسبة للاستخدام النهائي، ويُمكنك أن تتعلم معظم التّقنيات التي تعتمد عليها المواقع الحديثة مثل Jquery و Ajax.
  10. بعد أن تعلّمنا في الدّرس السّابق كيفيّة التعامل مع كل من الصفوف، المجموعات والقواميس في لغة بايثون ، سنكمل مشوار تعلّم هذه اللغة الجميلة. سنتعلّم في هذا الدّرس كيفيّة التّعامل مع التّعابير الشّرطية، و كيفيّة استعمال الجمل الشّرطية في برامجنا وكيفّية القيّام بإزاحة مناسبة عند التّعامل مع أجزاء متعدّدة من الشّيفرة، وسنكمل هذا الدّرس بمثال تطبيقي يتجلى في برنامج تسجيل حساب والولوج إليه. مع التذكير بأنّ جميع الشّيفرات التّي تبدأ بعلامة <<< يجب أن تنفّذ على مفسر بايثون. التعابير الشرطية Conditional Expressions توفّر لنا لغة بايثون عدّة مُعاملات لمُقارنة القيّم، ونتيجة المُقارنة تكون قيمة منطقيّة Boolean إمّا True أو False. >>> 2 < 3 False >>> 2 > 3 True إليك قائمة بالمُعاملات المُتوفّرة في لغة بايثون. == يُساوي =! لا يُساوي > أصغر من < أكبر من => أصغر من أو تُساوي =< أكبر من أو تُساوي ويُمكن استعمال هذه المُعاملات أكثر من مرّة في السّطر الواحد: >>> x = 5 >>> 2 < x < 10 True >>> 2 < 3 < 4 < 5 < 6 True وتعمل المعاملات على السّلاسل النّصية كذلك (التّرتيب يكون بشكل معجمي، أي حسب ترتيب الكلمات في المُعجم). >>> "python" > "perl" True >>> "python" > "java" True يُمكن الجمع بين القيّم المنطقيّة بمعاملات منطقيّة: a and b: صحيح فقط إذا كان كل من a و b يحملان القيمة True. a or b: صحيح إذا كانت إحدى القيمتين صحيحة. not a: صحيح فقط إذا كان a يحمل القيمة False. وإليك مثالا على المُعاملات المنطقيّة: >>> True and True True >>> True and False False >>> 2 < 3 and 5 < 4 False >>> 2 < 3 or 5 < 4 True الجملة الشرطية If تُستعمل الجملة الشّرطيّة If (إذا كان) لتنفيذ جزء من الشّيفرة إذا كان الشّرط مُحقّقا: >>> if x % 2 == 0: ... print 'even' ... even >>> في المثال أعلاه طُبعَت الكلمة even لأنّ باقي قسمة 42 على 2 يُساوي صفرا (x % 2 == 0)، وبالتّالي فقد تحقّق الشّرط، فلو أنّ الشّرط لم يتحقّق لما أرجع المُفسّر أي نتيجة. يُمكن استخدام If كشرط لتنفيذ جزء منفصل من الشيفرة بالإزاحة (انظر فصل الإزاحة والمساحات أسفله)، ويكون هذا الأمر مُفيدا عندما يحتوي برنامجك على الكثير من الجمل. لاحظ بأنّ الجمل التّابعة للسّطر if x % 2 == 0 مُزاحةٌ بأربع مسافات بيضاء. الجملة else يُمكن أن تزيد على جملة If بند else وترجمته (وإلّا / إذا لم يكن ذلك صحيحًا)، والتي تنفّذ الشيفرة التّي من بعدها إذا كان الشّرط الأول خاطئا. >>> x = 3 >>> if x % 2 == 0: ... print 'even' ... else: ... print 'odd' ... odd >>> في المثال أعلاه، كان الشّرط الأول خاطئا لأن باقي قسمة 3 على 2 لا يُساوي صفرًا، ولذلك انتقل البرنامج لتنفيذ الشّيفرة بعد جملة else وقام بطباعة كلمة odd. الجملة elif يُمكن كذلك أن تزيد جملة elif وهي اختصار لـ else if والتّي تعني "إذا لم يتحقّق الشرط فانظر الشّرط التّالي": >>> x = 42 >>> if x < 10: ... print 'one digit number' ... elif x < 100: ... print 'two digit number' ... else: ... print 'big number' ... two digit number >>> في المثال أعلاه، هناك شرطان مختلفان، أولا عند تحقّق شرط كون قيمة المتغيّر x أصغر من العدد 10 فسيطبع البرنامج الجملة التي تقول بأنّ قيمة المتغير x عبارة عن رقم واحد، إذا لم يتحقّق الشّرط السّابق فسينتقل البرنامج إلى الشّرط الذي يليه وهو ما يتبع الجملة elif أي إذا كانت قيمة المتغيّر x أصغر من 100 فسيطبع البرنامج الجملة التي تفيد بأنّ قيمة المتغير x عبارة عن رقمين والجملة else تنفَّذُ إذا لم يتحقّق أي شرط وتفيد بأنّ قيمة المتغيّر x عبارة عن عدد كبير (لأنّه يتكون من 3 أرقام فأكثر). المساحة والمسافات والإزاحة المساحات التّي تسبق الشّيفرات في بايثون مُهمّة جدّا لترتيب شيفرة البرنامج ولتسهيل قراءته، كما أنّها تكون ضروريّة في بايثون، فإن لم تتّبع قوانين الإزاحة فلن يعمل البرنامج، وتُستعمل هذه الطّريقة لفصل الشّيفرات التّابعة لجزء معيّن من البرنامج، والإزاحة تكون بكتابة الشّيفرة بعد عدد معيّن من المسافات، ومن المُفضّل أن تكون أربع مسافات بيضاء، انظر المثال: هل الشّرط محقّق؟ .... نعم الشّرط محقّق .... لا الشرط غير محقق انتهى البرنامج في المثال أعلاه، الجملتان "نعم الشّرط محقّق" و "لا الشّرط غير محقّق" تابعتان للجملة "هل الشّرط محقّق؟" أمّا الجملة "انتهى البرنامج" فتابعة للبرنامج عامّة. وقد اعتمدت على النّقاط لتوضيح فكرة الإزاحة فقط وعليك أن تستبدل النّقاط بالمسافات في ملفّات بايثون. يُمكن كذلك أن تكون الشّيفرة تابعة لجملة ما، والتّي بدورها تابعة لجملة أخرى، لتتّضحك الأمور أكثر، فكّر في شجرة عائلة تتكوّن من الآباء والأولاد: جدّ ....أب 1 ........ابن 1.1 ........ابن 1.2 ....أب 2 ........ابن 2.1 ........ابن 2.2 للجد ابنان، ولكل ابن ابنان، نستنتج من هذا أنّ كلّ ابن تابع لأبيه بإزاحة أربع مسافات، أمّا الحفيد فتابع للجدّ بثماني مسافات. وإلى الآن تعرّفنا على موضع واحد تكون فيه الإزاحة إجباريّة وهي الجمل الشّرطيّة، فمثلا البرنامج التّالي: x = 42 if x % 2 == 0: print 'even' print 'Hello World' في المثال أعلاه جميع السّطور المزاحة بأربع مسافات (أي الجملة التي تطبع كلمة even) تُنفّذ عند تحقّق الشّرط فقط، أي أنّها جزء مرتبط بالشّرط في البرنامج، أمّا الشيفرة التي لم تُسبق بمسافات فتنفّذ بشكل طبيعي وتعتبر ضمن البرنامج عامّة. أمّا إذا أردنا أن نطبع جملة بعد التّحقّق من شرطين فسيكون البرنامج كالتّالي: الشّرط الأول محقّق، إذن انتقل إلى الشّرط الثّاني. الشّرط الأول غير محقّق، إذن لا تنتقل إلى الشّرط الثّاني. إليك تطبيقا للأمر في لغة بايثون: # البرنامج x = 42 if x % 2 == 0: print 'even' if x / 2 == 21: print '42/2 = 21 Is true' print 'Hello World' # المُخرج even 42/2 = 21 Is true Hello World في المثال أعلاه، قمنا بالتّحقّق من أنّ باقي قسمة العدد 42/2 يساوي 0، وبما أنّ الشّرط مُحقّق فقد طبعت الكلمة even وانتقل المُفسّر إلى الشّرط التّالي وهو التّحقّق من أن 42/2 يُساوي 21 وبما أنّه بدوره شرط مُحقّق أيضا فقد قام البرنامج طباعة الجملة 42/2 = 21 Is true وبعدها قام بطباعة الجملة Hello World لأنّها غير مُرتبطة بأي شرط. وبطبيعة الحال إذا لم يكن الشّرط الأول محقّقا، فلن ينتقل المُفسّر للشّرط التّالي ولن يقوم بأي شيء حتّى ولو كان الشّرط مُحقّقا. الحصول على قيم من مستخدم البرنامج يُمكن أن تطلب من المُستخدم أن يُدخل قيمة معيّنة، ثمّ تسند هذه القيمة إلى مُتغيّر في البرنامج، فمثلا لنقل بأنّك ترغب بالتّرحيب بالمُستخدم، أولا يجب أن تطلب منه أن يُدخل اسمه، بعدها تقوم بطباعة الجملة "Hello, Person"، بحيث تستبدل Person بالقيمة التّي أدخلها المُستخدم، انظر المثال: >>> person = raw_input('Enter your name: ') >>> 'Hello ', person إذا نفّذت البرنامج فسيكون المُخرج كالتّالي: Enter your name: وبعد إدخال اسمي والضّغط على مفتاح ENTER، فإنّ المُخرج سيكون كالتّالي: Hello Abdelhadi ما يحدث هو أن البرنامج يأخذ القيمة المُدخلة ويُسندها للمُتغيّر person وبعدها تستطيع أنت أن تطبع المُتغيّر للمُستخدم. تطبيق لنطبّق ما تعلّمناه ولننشئ برنامجا بسيطًا لجدولة مُقابلات العمل: سنطلب من المُستخدم توفير المعلومات التّاليّة: اسم المُتقدّم اسم المسؤول عن المُقابلة وقتُ المُقابلة وبعدها سنطبع جملة تحتوي على جميع المعلومات التّي قدّمها المُستخدم، افتح ملفّا باسم interview.py واكتب فيه التّالي: applicant = raw_input('Enter the applicant name: ') interviewer = raw_input('Enter the interviewer name: ') time = raw_input('Enter the appointment time: ') print interviewer, "will interview", applicant, "at", time في المثال أعلاه نطلب أولا من مُستخدم البرنامج أن يُدخل اسم المُتقدّم ثمّ تُسندُ القيمة إلى المتغيّر applicant، بعد ذلك يُطلب اسم المسؤول عن المُقابلة وتُسند قيمته إلى المُتغيّر interviewer وبعد ذلك نحصل على وقتُ المُقابلة من المُستخدم ونُسند القيمة إلى المُتغيّر time، وفي النّهاية نطبع الجملة الجامعة لكل المعلومات وتقديمها بشكل أسهل. جرّب الأمر بنفسك، وأسند القيّم التّي تريد، وانظر إلى النّتيجة، العب بالشّيفرة، أضف مميّزات أخرى كالتّحقّق من أن عُمر المُتقدّم أكبر من 18 عاما مثلا، وتذكّر بأنّ التعلّم بالتّطبيق أفضل من أي طريقة أخرى. تطبيق عملي: إنشاء برنامج تسجيل دخول بسيط الآن حان الوقت لنطبّق ما تعلّمناه، ولنقم بكتابة برنامج تسجيل دخول بسيط، ومبدأه كالتّالي: يُرحب البرنامج بالمُستخدم. يطلبُ منه معلومات التّسجيل. يفيد البرنامج المُستخدم بأنّ التّسجيل قد تم بنجاح أو بعكس ذلك. يطلب البرنامج معلومات الدّخول. يتحقّق البرنامج من أنّ المعلومات التّي أدخلها صحيحة. إذا كانت صحيحة، يطبع البرنامج رسالة نجاح. إذا كانت خاطئة، يطبع البرنامج رسالة فشل. المُتغيّرات التّي سنعتمد عليها: username: اسم المُستخدم password: كلمة المرور password_verification: تأكيد كلمة المرور (فقط للتّأكد من أنّ المُستخدم أدخل نفس كلمة المرور وأنّه يتذكّرها دون مشاكل). أولا جملة التّرحيب: print 'Hello User, this is a basic sign up/login Program' ثانيّا لنطلب من المُستخدم توفير قيّم المتغيرّات (username: اسم المُستخدم، password: كلمة المرور، password_verification: تأكيد كلمة المرور): username = raw_input('Enter your username please: ') password = raw_input('Enter the your password please: ') password_verification = raw_input('Verify password: ') الآن لنتحقق من أنّ كلمة المرور التّي أدخلها المستخدم في البداية هي نفسها التّي أدخلها عند تأكيد كلمة المرور وذلك بمقارنة المتغيّرين password و password_verification فإذا كانا يحملان نفس القيمة فهذا يعني بأنّ التّسجيل ناجح وسنطبع للمُستخدم جملة تفيد بأنّ عملية التّسجيل قد نجحت. أما إذا لم تكن القيم متساوية سنطبع جملة تفيد المستخدم بأنّ كلمة المرور وتأكيدها لا يتوافقان، ويمكن القيام بالأمر بالأسطر الآتية: if password == password_verification: print 'You have been successfully signed up!' else: print 'The password and the password verification don't match! Please try again' لقد انتهينا الآن من برمجة نظام التّسجيل، ويجب علينا الانتقال إلى الخطوة التّالية وهي مرحلة تسجيل الدّخول. بعد طباعة الجملة التّي تفيد بأنّ المستخدم قام بالتّسجيل بنجاح (انظر الشّيفرة أعلاه) سنطلب منه معلومات الولوج وذلك بإدخال اسم مُستخدمه وكلمة المرور، سنعيّن هذه القيم المدخلة حديثا إلى متغيّرين جديدين، وذلك لمقارنتهما مع قيم المتغيّرين القديمين، إذا كانت القيم توافق ما أدخله قبل قليل فسنطبع جملة تفيد بأنّ عمليّة الولوج قد نجحت، إذا لم يكن الأمر كذلك سنطبع جملة تفيد المستخدم بأنّ القيم التّي أدخلها خاطئة ثمّ يتوقّف البرنامج. الآن، لنطوّر الشّيفرة أعلاه وندخل عليها التّعديلات المطلوبة لإجراء عمليّة الولوج: if password == password_verification: print 'You have Successfully Signed up! \n' username_sign_in = raw_input('Enter your username please: ') password_sign_in = raw_input('Enter your password please: ') if username_sign_in == username and password_sign_in == password: print 'You have Successfully Signed in!' else: print 'username or password do not match! Please try again!' else: print 'The password and the password verification do not match! Please try again' لاحظ استخدام المعامل المنطقي and عند التّحقّق من أنّ اسم المستخدم وكلمة المرور المدخلتان (المخزّنة في المتغيّرين username_sign_in و password_sign_in) توافقان ما تم إدخاله من قبل. العامل and يحرص على أنّ كلا الشّرطين محققان. وبهذا نكون قد انتهينا من البرمجية الصغيرة والبسيطة، وهذه هي الشّيفرة الكاملة: print 'Hello User, this is a basic sign up/login Program' username = raw_input('Enter your username please: ') password = raw_input('Enter the your password please: ') password_verification = raw_input('Verify password: ') if password == password_verification: print 'You have Successfully Signed up! \n' username_sign_in = raw_input('Enter your username please: ') password_sign_in = raw_input('Enter your password please: ') if username_sign_in == username and password_sign_in == password: print 'You have Successfully Signed in!' else: print 'username or password do not match! Please try again!' else: print 'The password and the password verification do not match! Please try again' تمارين تمرين 1 ما مُخرجات البرنامج التّالي: print 2 < 3 and 3 > 1 print 2 < 3 or 3 > 1 print 2 < 3 or not 3 > 1 print 2 < 3 and not 3 > 1 تمرين 2 ما مُخرجات البرنامج التّالي: x = 4 y = 5 p = x < y or x < z print p تمرين 3 ما مُخرجات البرنامج التّالي: x = 4 y = 5 p = x < y or x < z print p تمرين 4 ماذا سيحدث بعد تنفيذ الشّيفرة التّالية، هل ستحدث أي أخطاء؟ علّل جوابك. x = 2 if x == 2: print x else: print y تمرين 5 ماذا سيحدث بعد تنفيذ الشّيفرة التّالية، هل ستحدث أي أخطاء؟ علّل جوابك. x = 2 if x == 2: print x else: x + تمرين 6 هل الإزاحة في البرنامج التّالي صحيحة؟ إذا لم يكن الأمر كذلك، فأصلح الخطأ. x = 2 if x == 2: print x if x+1 == 3: print 'x+1 = 3' else: print x + 2 مصادر درس Input and Output للكاتب Dr. Andrew N. Harrington. كتاب Python Practice Book لكاتبه Anand Chitipothu.
  11. لغة PHP لغة برمجية طوّرت أساسا لاستخدامها في تطوير تطبيقات الويب، وذلك بمُساعدة لغتي HTML و CSS ولغة Javascript البرمجية، إذ أنّ لغة HTML مسؤولة عن المكونات التي تُشكل هيكل الموقع، ولغة CSS تساعد على جعل الموقع ذا منظر مقبول وتصميم جذاب، أمّا لغة Javascript فتقوم بإضافة إمكانية التفاعل مع المُستخدم على المُتصفح مُباشرة، أما لغة PHP فهي المسؤولة عن عمليات الواجهة الخلفية Back-end من تعامل مع البيانات (قواعد البيانات) كإدخالها وحذفها وتعديلها وعرضها، فمثلا إذا كان التّطبيق عبارة عن مُدونة فلغة PHP تُساعد على إدخال المقالات إلى قاعدة البيانات وعرضها للمُستخدم لقراءتها، وإعطاء المُدير حرية إدخال مقالات جديدة وتعديلها أو حذفها. وبالتالي فإنّك مُلزم بتعلم اللغات التّالية إذا كنت ترغب بتطوير مواقع إلكترونية: HTML CSS PHP ومن المُفضل تعلم لغة Javascript لإضافة المزيد من القوة لتطبيقك.
  12. عندما تقوم بتطوير برنامج مُعيّن، فإنّك تعتمد على عدة إرشادات، مثلا لنقل بأنّك ترغب بتطوير آلة حاسبة، الإرشادات التي ستكتبها بلغة البرمجة هي كالتالي: استقبال القيمة الأولى من المُستخدم. استقبال رمز الحساب (+ - * / %) استقبال القيمة الثانية من المُستخدم. القيام بالعملية الحسابية. طباعة النّتيجة للمُستخدم. الآن، ماذا لو كتبت كل شيء وشغلت برنامجك، ولكنّك فوجئت بخطأ كالتّالي: 'خطأ: لا يُمكن إجراء العملية بين قيمتين من نوع String' الآن أنت تعرف الخطأ ولماذا حدث، لأنك قمت بإجراء العملية الحسابية على مُدخلات المُستخدم مُباشرة دون تحويلها إلى قيم من نوع Integer أو Float وبالتّالي، فسيتوجب عليك إصلاح الخطأ، وذلك بالعودة إلى سطر إجراء العملية، وتحويل مُدخلات المُستخدم إلى قيم عددية. هكذا فقد أكملت عملية تصحيح الخطأ أو Debugging.
  13. لغة البرمجة Perl لغة برمجة مُتعددة الاستخدامات تتميز بسهولة تعلمها وبشيفرة نقية، تُمكنك من إنشاء تطبيقات مُختلفة من سكريبتات الأتمتة بأنظمة التشغيل (مثل إنشاء برنامج لحذف ملف من النظام أو إنشائه بشروط معينة) إلى تطبيقات سطح المكتب وتطبيقات الويب، كما تُستخدم في مجال الحماية والتّعامل مع قواعد البيانات. وإليك تطبيقات مشهورة تستعمل هذه اللغة: - محرك البحث DuckDuckGo ومشروع cPanel كما يعتمد مشروع Bugzilla على هذه اللغة. لتطوير تطبيقات الويب بلغة بيرل فإنّك ستحتاج إلى إطار عمل خاص بذلك، وإليك أهم أطر الويب المُتوفرة للغة بيرل: Mojo : إطار عمل سريع في الأداء، مناسب لتطبيقات الوقت الفعلي Real-time مثل تطبيقات الدردشة وغيرها، يتميز بقوته وسهولة قراءة شيفرته. Catalyst: إطار عمل يعتمد على مبدأ MVC أي نموذج-عرض-متحكم، لتطوير التّطبيقات بسهولة وبشكل منظم، يتميز الإطار بإمكانية تنصيب إضافات جديدة لتسهيل العمل على تطبيقك وهو مناسب للمبتدئين. Dancer: إطار عمل يُمكنك من إنشاء تطبيقات ويب بلغة بيرل بسرعة وأداء عال، مناسب للمُبتدئين وجيد للمشاريع الصغيرة، يتميز بالبساطة والمرونة.
  14. يُمكنك أن تقوم بتطوير تطبيقات الويب بلغة بايثون البرمجية بمساعدة أطر العمل المتوفرة لهذه اللغة، إذ تُمكنك أطر العمل من إنشاء تطبيقات لمُعالجة البيانات والتفاعل مع المُستخدم على الواجهة الخلفيّة، وإليك قائمة بهذه الأطر، للأسف لا يوجد الكثير من الدروس الخاصّة بالموضوع عربيا، لكننا نعمل على ذلك في أكاديمية حسوب وسوف تُنشَر دروس خاصة بهذه الأطر قريبا إن شاء الله. إطار Django: إطار ضخم جدا، يتميز بمجتمع كبير، ويصلح للمشاريع الكبيرة، كما أنّ التوثيق جيد جدا. إطار Flask: إطار مُصغّر، أفضل اختيار للمُبتدئين الذين يرغبون بتعلم كيفية إنشاء مواقع باستخدام لغة بايثون. إطار Bottle: إطار مُصغّر جدّا، يظهر ذلك في كون حزمته عبارة عن ملف واحد، وقد سبق وأن ترجمتدرسا حوله بعنوان كيف تستخدم الإطار المصغر Bottle لتطوير تطبيقات Python للويب . ويتميّز بأنّه سهل التّعلم لكنّه لا يُوفّر الكثير من الدوال المُساعدة. إطار Tornado: إطار يُمكّنك من إنشاء تطبيقات Real-Time وهو الأقرب إلى Nodejs الموجود في لغة جافاسكريبت. إطار Pyramid. إطار TurboGears. إطار Web2py. تعلم لغة بايثون
  15. لتطوير تطبيقات الويب تحتاج أولا إلى معرفة التّقنيات المسؤولة عن كل جزء من أي موقع على الإنترنت، وهي كالتّالي: ما يراه المُستخدم Front-end: البيانات التي تراها في أي موقع تكون منسقة تنسيقا مُعينا وذلك بلغتي HTML و CSS ويُمكن إضافة المزيد من التفاعل مع المُستخدم بلغة Javascript البرمجية. لذلك فأنت ملزم بتعلم هذه اللغات قبل البدء في إنشاء مواقع الويب. ما يتم في الجهة الخلفية Back-end: التّعامل مع البيانات التي يُدخلها المُستخدم (مثلا عنوان البريد الإلكتروني وكلمة المرور عند التّسجيل) يتم عن طريق لغة روبي مع إطار عمل مثل Rails، فمثلا إذا أدخل المُستخدم كلمة مروره فيُمكنك بعدّة أسطر من الشيفرة تكتبها بلغة روبي أن تتحقق من صحة كلمة المرور فتعيده إلى لوحة التحكم، أما إذا كانت خاطئة فتخبره بذلك وتطلب منه إعادة المُحاولة، وكل هذه العمليات تتم في الخلفية بلغة روبي مع إطار الويب، إضافة إلى قاعدة البيانات التي تحتوي على جداول تحتوي على البيانات مثل جدول المُستخدمين (مثلا يحتوي على بريد كل مُستخدم وكلمة مروره). خلاصة الأمر، أنّك إذا كنت ترغب بتعلم تطوير مواقع إلكترونية فعليك بتعلم اللغات والتّقنيات التالية: HTML CSS Javascript Ruby Ruby On Rails
  16. أخطاء وقت التّشغيل عبارة عن أخطاء تظهر بعد تشغيل البرنامج، عكس أخطاء بنية الجملة أو Syntax Error فأخطاء بنية الجمل تمنع البرنامج من العمل، ولن تتمكن من تشغيل البرنامج إلا إذا أصلحت الخطأ، أمّا أخطاء وقت التّشغيل فتظهر بعد تشغيلك للبرنامج بمدة، وهي تعني بأنّ شيئا سيئا ما قد حدث أثناء تشغيل البرنامج، هذا النوع من الأخطاء معروف أيضا بالاستثناءات وهي نادرة في البرامج البسيطة، وستظهر في الغالب إذا كان البرنامج يعتمد على العديد من المكتبات. ويُمكنك إصلاح الخطأ بمُراجعة الوظيفة التي لم يقم بها البرنامج.
  17. لنقل بأنّك ترغب بالدّردشة مع صديقك، عندما تكتب رسالة في نموذج الرسائل، فيتوجّب على الخادوم أن يستقبل هذه الرّسالة ويعرضها على صديقك، لكن ماذا لو لم يقم صديقك بإعادة تحميل الصّفحة، لن تظهر له رسالتك أليس كذلك؟ هنا يأتي دور تقنيّة Ajax وهي ببساطة تقنية تقوم بإرسال طلبات HTTP (مثلا طلب الحصول على الرّسالة) دون الحاجة إلى إعادة تحميل الصّفحة كاملة، بل تقوم بإعادة تحميل جزء صغير من الصّفحة فقط، ما يزيد من سرعة التّصفّح، ويُمكنك مثلا أن تستعمل التّقنية لإعادة تحميل صندوق الرّسائل كل ثانية، فإن أرسلت رسالة إلى صديقك فسوف يستطيع أن يستقبلها في ثانية أو أقل، دون حاجة إلى أن يقوم بإعادة تحميل الصفحة ليتأكّد من إرسالك رسالة من عدمه.
  18. نقصد بمُصطلح Semantic Error الخطأ الذي يتعلّق بمنهجية عمل البرنامج، عندما ترغب ببرمجة برنامج تريد منه أن يؤدي وظيفة ما، لكنّك تُفاجأ بأنّه لا يؤدي الوظيفة التي ترغب لكنه رغم ذلك لا يعرض أي أخطاء، فمثلا لنقل بأنّك تريد إنشاء برنامج للجمع بين عددين، بعد كتابة السّطر المسؤول عن البرمجية بلغة برمجة من اختيارك وعند إعطائه عددين، فأنت تتوقع أن يقوم بجمعهما، ولكنه عوضا عن ذلك يقوم بعملية طرح أو عملية أخرى وذلك لأنّك نسيت ووضعت علامة – عوض علامة +، هنا يتعلق الأمر بـSemantic Error وليس بخطأ في بنية الجملة أو خطأ من نوع آخر. خلاصة الأمر أنّ هذا المُصطلح يُطلق على برنامج لا يؤدي الغرض الذي تريده، بل يؤدي ما طلبته منه.
  19. للمنافسة في ريادة الأعمال عدة قوانين وقواعد، أهم هذه القواعد أن تأتي بحل لمُشكلة تواجه عملاء المنافسين، فالعملاء يهمهم جعل مهامهم أسهل، ولا يُمكن أن يستخدموا مُنتجا يُسبب المشاكل أكثر مما يحلها. لذلك فإن أردت أن تُواجه مُنافسيك فعليك بتقديم قيمة مُضافة لمُنتجهم، أي أنّك يجب أن تُضيف شيئا جديدا ومُفيدا، اُنظر إلى مُراجعات عملاء مُنافسيك وانظر إلى الملاحظات السلبية، ما الذي يرغبون بأن يتغير، إذا وضعت إصبعك على الجرح فإنّك ستستطيع المُنافسة بجدارة، ومُجرد التقليد سيؤدي بك إلى الهاوية. لذلك تأكّد من أن تقدم مُنتجا يحل المشاكل التي تواجه عملاء المُنافسين.
  20. جاء إطار Sinatra لكي يُقدم للمبرمج الذي يعمل بلغة روبي إمكانية تطوير تطبيقات الويب بأسرع وقت ممكن وبأقل جهد، وقد كان ولا يزال إطارا ممتازا لبناء التّطبيقات الصغيرة والمُتوسّطة، كما أنّه يتميز بإعطاء تحكم كامل للمُطور، بحيث يستطيع أن يتحكم بكل صغيرة وكبيرة تحدث في التّطبيق، كما أنّه مُناسب للواجهات البرمجية API لكنّه صعب المراس عندما يتعلق الأمر بالمشاريع الكبيرة، ويُمكن أن يكون مُعقدا جدا، لذلك جاء إطار Padrino مبنيا على Sinatra لجعل بناء التّطبيقات الكبيرة أسهل وأمتع وذلك باتباع نفس طريقة التّفكير الخاصة بـSinatra.
  21. صديقي قبل أن تتفاوض عليك أن تُحدّد للعميل التّسعير الذي يُناسبك وترى أنّك تستحقه، ولكن عليك بأخذ قدرة العميل المادية قبل طرح السّعر، ويُمكن أن تطرح عدة أسعار ليختار منها العميل، كلّ خدمة مُقابل سعر معين، فمثلا التّصميم بهذا الثمن وتحويله إلى قالب يُضيف على التكلفة الإجمالية الثّمن التالي، وهكذا ستستطيع أن توصل رسالتك إلى العميل، رسالتك هي أنّ لكل خدمة ثمنها المُستقل ومجموع الخدمات هو إجمالي التكلفة، بعدها سينظر العميل في ميزانيته وسيستخدمها بحكمة، أما إن كنت كاتبا مُستقلا فيُمكن الاتفاق على ثمن لكل عدد معين من الكلمات، (5$ لكل 500 كلمة مثلا).
  22. تُعتبر لغة بيرل من أشهر لغات البرمجة في أيامنا هذه، وتُستعمل لإنجاز عدّة مهام، ويُمكن أن تبني بها عدة أنواع من التّطبيقات، كتطبيقات سطح المكتب وتطبيقات الويب وذلك بمساعدة المكتبات وأطر العمل المُتوفرة لهذه اللغة. وإليك قائمة ببعض أطر العمل الخاصة بلغة بيرل: Mojo : إطار عمل سريع في الأداء، مناسب لتطبيقات الوقت الفعلي Real-time مثل تطبيقات الدردشة وغيرها، يتميز بقوته وسهولة قراءة شيفرته. Catalyst: إطار عمل يعتمد على مبدأ MVC أي نموذج-عرض-متحكم، لتطوير التّطبيقات بسهولة وبشكل منظم، يتميز الإطار بإمكانية تنصيب إضافات جديدة لتسهيل العمل على تطبيقك وهو مناسب للمبتدئين. Dancer: إطار عمل يُمكنك من إنشاء تطبيقات ويب بلغة بيرل بسرعة وأداء عال، مناسب للمُبتدئين وجيد للمشاريع الصغيرة، يتميز بالبساطة والمرونة.
  23. هذا النّوع من العملاء خطير جدا صراحة، ولا يكاد العالم يخلو من العملاء على هذه الشاكلة، وأفضل حل هو التّفاهم معه بالتّي هي أحسن، أخبره بما في قلبك بطيبة وصبر، قد لا يتقبل صراحتك، رغم ذلك عليك أن توضح له بأنّك لا ترتاح في العمل عندما تتعامل معه، ومن المُفضل تجنب هذا النوع من العملاء عموما، ولكن لا تنس بأنّ عليك واجبات كمُستقل كذلك، فتقديم عمل جيد من أهم مبادئ العمل التي ستفيدك وستجلب لك الرّاحة، فإن تعاملت مع المشروع الذي بين يديك باحترافية فلا شك بأنّ العميل سيُقدر عملك، فإن لم يُقدر مجهودك أو لم يدفع لك مُستحقاتك أو أنّه يُهدد بتقييم سلبي دون مُبرر فهذه أسباب قوية لطرده وعدم التّعامل معه مُجدّدا.
  24. تُعد لغة روبي لغة مناسبة لتطوير الويب خاصّة بأطر العمل المُتوفرة التي تُساهم في جعل الأمر أبسط وأسهل، ولا شك بأنّ إطار Ruby On Rails أكبر إطار في هذه العائلة وله قوة كبيرة بحيث يُمكنك من تطوير التّطبيقات بسرعة فائقة بمُساعدة الدوال الموجودة به. وإليك مُختلف أطر العمل المُتوفرة لهذه اللغة مع وصف بسيط لكل إطار، علّ ذلك يُساعدك على اختيار الإطار المُناسب لك: Ruby On Rails: هذا أشهر إطار وأضخم واحد في هذه القائمة، يوفرّ بيئة مريحة للمبتدئ لكي يبني تطبيقاته سواء أكان التّطبيق بسيطا أو معقدا، كما يتميز بمُجتمع كبير وطيب. هذا الإطار غني عن التّعريف، وهو الأنسب للمُبتدئ الذي يرغب بتطوير تطبيقات الويب بلغة روبي بأسرع وقت ممكن، خاصّة وأنّه يُوفّر بنية MVC لتطوير التّطبيقات، بحيث تكون ملفات العرض مُستقلة عن ملفات التّحكم والنّمذجة. Sinatra: هذا إطار صغير قوي، مُناسب للتّطبيقات الصغيرة والمُتوسّطة، يمنحك تحكما أكبر بتطبيقك ووظائفه وسرعة في الأداء. وهو مُناسب أيضا للمبتدئين الذين يرغبون بتطوير تطبيقات الويب بلغة Ruby لكن بمزيد من الجهد. Padrino: هذا الإطار مبني على إطار Sinatra وهو مُصمم لتمكين مبرمجي لغة روبي من تطوير تطبيقات أكثر تعقيدا وذات وظائف أكثر، وهو أنسب من إطار Sinatra للتطبيقات الكبيرة، يُمكن أن تصفه بأنّه الإطار الذي يجمع بين أفضل خصائص كل من إطاري Rails و Sinatra. Cuba: إطار مُصغر يُمكنك من بناء تطبيقات الويب بأقل عدد ممكن من الملفات، وهو مناسب للاختبارات. Cramp: إطار يُمكنك من إنشاء تطبيقات في الوقت الحقيقي مع القدرة على تحمل العديد من الاتصالات في آن واحد. Hanami: (كان اسمه lotus سابقا) إطار مُشابه لإطار Rails ، إذ يتبع بنية MVC، يتميز بسهولة تعلمه، كما أنّه مُناسب جدا لمن يرغب بإنشاء تطبيق بسرعة، لكنه لا يمتلك نفس الكم من الدعم المُجتمعي كما هو الحال مع إطار Rails، لكنّ تميّزه بسرعة الأداء يعطيه ورقة رابحة.
  25. لغة Scala لغة برمجة تعمل على منصة Java أنشأت بالأساس لتوفير لغة برمجة أفضل من لغة Java إذ اعتمد مطورها على الانتقادات التي كانت تتلقاها لغة Java، تتميز لغة Scala بتعدد استخداماها خاصة في مجالي تطبيقات سطح المكتب وتطبيقات الويب، وتتميز بأنّها تجمع بين تقنيتي البرمجة الكائنية والبرمجة الوظيفية، تماما مثل لغات Ruby و Python و PHP كما أنّها تُعتبر لغة عالية المُستوى مثلها مثل اللغات المذكورة، تمتلك اللغة العديد من المكتبات الجاهزة والتي تُساعد المُبرمج على إنشاء تطبيقات متنوعة بأقل جهد، ويعد موقع Twitter من أشهر استعمالات اللغة في تطوير الويب، بالاعتماد على Finatra الخاص بلغة Scala. تُستخدم لغة Scala في بناء تطبيقات الهواتف الذكية التي تعمل بنظام Android كذلك (بالاستعانة بمكتبة Scaloid). إذا كنت ترغب بتطوير تطبيقات سطح المكتب بلغة Scala فتستطيع ذلك بمكتبة Swing أو بمكتبة ScalaFX.
×
×
  • أضف...