| الوثيقة بهيئات أخرى |  |  |
|---|
السلام عليكم ورحمة الله وبركاته،
أيامٌ قليلة تفصلنا عن نهاية العام، فكانت لي هذه الوقفة مع ما تعلّمته خلال هذه السنة وما رغبت بمشاركة مطوّري الويب به.
كان هذا العام طويلا فعلا بالنسبة لي، فقد شاركت خلاله بتطوير أربعة تطبيقات ويب عامة يتراوح عدد زائريها من عشرة آلاف إلى ربع مليون زائر. وكان التطبيق الأخير الذي قُمت بتنفيذه هو موقع مقولة غير الربحي.
لم تكن المهمّة في كل واحدة من هذه التطبيقات سهلة أبدا.
ولا تستغربوا أنّني وفي كل واحد منها قُمتُ بدراسة طبيعة التقانات1) المثالية التي يجدر استخدامها. أي أنّني وعلى رأس كل مشروع جديد، أُعيد حساب الأمور من الصفر، وأبذل الجهد والوقت في تقييم عدد من التقانات التي يُمكن استخدامها و تجربتها ومن ثم اختيار توليفة معيّنة لاعتمادها في المشروع.
يقولون، إذا أردت أن تكتب تطبيقا ناجحا فاتبع هذه المراحل :
أولا - عليك إن توصل التطبيق لحالة العمل - مهما كانت. 2)
ثانيا - عليك أن تضمن بأن تطبيقك يعمل بشكل جيد وخال من العيوب. 3)
ثالثا - عليك أن تضمن بأن تطبيقك يعمل بسرعة! 4)
ولكن هذه السنة باتت الخطوة الثالثة هي الأكثر صعوبة، خاصة مع وجود الكثير من التطبيقات التي قمت بتطويرها في السنوات الماضية طور الانتاج الحي 5)، وأنني لم أكن مسرورا لا بسهولة التطوير عليها نظرا لتعقيدها ولا بأدائها. لذلك كان تركيزي على بساطة وسرعة التطوير وتفوق الأداء.
ومن نافلة القول، أنني لا أُعني في بحثي وتقييمي للتقانات سوى بالبرمجيات الحرة والمفتوحة المصدر، ولا اعتمد البرمجيات المغلقة أو المحتكرة بتاتا. نظرا لتفوق البرمجيات الحرة الكبير عليها.
وقد آليت أن أكتب هذا المقال باللغة العربية - بالكامل - حيث أنّني اعتدت في الماضي على التدوين بالإنجليزية. ولمعرفتي أنّ العربية قد تبدو صعبة مع استخدام بعض المصطلحات غير المشهورة؛ لذلك وضعت قائمة في ذيل المقال بالكلمات العربية وما يقابلها من كلمات ومصطلحات إنجليزية.
وأود أن ألفت الانتباه بأن الآراء في هذه المقالة تعبّر عن رأيي الشخصي البحت، و لا أقصد به إثارة النعرات بشأن التقانات و مقابلتها مع بعضها. وقد تكون التقانات التي لم أقم باختيارها أفضل من تلك التي اخترتها. لذلك أرجو المعذرة من أي شخص قد لا يُعجبه ما اخترت وما لم اختر.
في السنوات الماضية كُنت من مُشجّعي جافا6)، وأُعجبت كثيرا بـ جروفي7) و جريلز8)، وكُنتُ قبلها من مشجّعي روبي و ريلز9). وقد نَفّذتُ عدّة مشاريع في كل منها. ولكن هذه السنة كان الأمر مُختلفا، وارتأيت العودة إلى لغة بي أتش بي10).
والحقيقة أنني كُنت دائما أُهمل لغة بي أتش بي، فعندي من الكوابيس ما يكفي للنّصوص المصدرية المعكرونية11)! تجعلني أتقلّب في فراشي عندما أنام. ما لم يُعجبني في لغة بي أتش بي هو معكرونيتها الزائدة والتي تُذكّرني بلغة فيجوال باسيك12). فقد حدث أنّني خبرت تطوير مشاريع في مثل هذه اللغة في الماضي وكانت النتائج مأساوية.
المهم، ما استرعى انتباهي ل بي أتش بي هذه المرّة، هو وصول اللغة إلى مستويات متقدّمة من النضوج (خصوصا بعد الإصدارة 5.3)، فمن دعم ممتاز للبرمجة الكائنية (أو الشيئية)13) إلى تطوّر واضح على مستوى الأداء وخاصة بعد إطلاق خاصية تخبئة بي أتش بي البديلة (والمسماة اختصارا بـ أي بي سي)14). ولم يفُتني الاخذ في عين الاعتبار الباع والانتشار الواسع لهذه اللّغة وتوفّر عدد مهول من المكتبات في كل ما يخطر على بال.
ليس هذا فقط، فتوجّهي إلى التعامل مع بي أتش بي، جاء بعد عوائق كأداء واجهتني في أداء كُل من جافا (والجروفي والجريلز) و روبي وريلز. فالحق، وبعد تجربة مريرة، أن أي منهما لا يصلح أبدا لتطبيقات الويب العامة، إلاّ إذا كان بحوزتك تمويل ضخم يغطّي الاحتياج إلى توفير خوادم15) ذات مواصفات جبّارة. أي أنّها فشلت في اختبارات الأداء بجدارة.
لم أغفل عن اعتبار لغة بايثون16)، خاصة أن صيتها قد ذاع مؤخّرا، ولكنّ معدتي لم تستسغها. بالمناسبة عند تعاملي مع التقانات الجديدة فإنّني أُصاب عند التعامل مع بعضها بحالة من عسر الهضم (المعدة والأمعاء) وأقصد ذلك حرفيا
وعرفت أن بايثون لا تُناسِبني بالإضافة طبعا إلى أسباب تقنية أخرى لست بصدد ذكرها هنا.
المهم، أنّ الخيار في باكورة المشاريع بداية هذا العام وقع على بي أتش بي، ووضعتها في الاختبار العملي، وقمت بإعادة كتابة بعض التطبيقات من جافا وجروفي وروبي إلى بي أتش بي، وخمّنوا ماذا كانت النتيجة؟! فاقت توقعاتي بكثير! استطاعت تطبيقاتي الجديدة العمل مكان القديمة وبكفاءة تصل إلى عشرة أضعاف. تخيّلوا أنه بدلا من استئجار عشرة خوادم لخدمة عدد معين من المُستخدمين، اكتفيت بواحد وبأداء ممتاز. في تلك اللحظة أدركت خطأ المقولة الشائعة عن أن بطء لغة جافا وحاجتها إلى المزيد من الخوادم يسدُ عنها سُرعة التطوير. بل على العكس، فالتطوير بلغة بي أتش بي كان أسرع، والنتيجة نجاحٌ باهر ورضا الزبون ورضا زوّار الموقع.
موجة التطبيقات اللاحقة كانت أكثر تعقيدا، فبدأت أفكّر في اعتماد إطار تطوير ويب17)، وقمت بمعاينة الكثير من إطارات تطوير الويب على بي أتش بي، من كيك18) إلى إجيناتور19) إلى سيمفوني20) إلى أخيلوس21) وغيرها الكثير، وكان ممّا استرعى انتباهي واهتمامي من بينها إطار الويب ييي22). وكان أسلوب العمل عليه وفلسفته وطريقة تصميمه الأقرب إلي. حتى أنّني شعرت بعد فترة قصيرة من العمل معه، كأنّني أعرفه منذ زمن بعيد. ألا يحدث ذلك معكم عندما تقابلون شخصا لأول مرة وتشعرون بتناغم معه
ييي حقّقت لي مجموعة من المتطلّبات أوّلا: أن تكون خفيفة على المعدة … أقصد على المعالج. لا أريد أن أتعامل مع طبقات وطبقات من النصوص المصدرية والخوارزميات. بل أردتها بسيطة ومباشرة. ثانيا: أن تكون أرضيتها ضحلة وشفافة، مثل أرضية شواطئ المالديف
على خلاف أي إطار ويب آخر، ففي ييي يمكنني الغوص بسرعة داخل نصوصها وخوارزمياتها وفهم كيفية عملها، وتعديلها إن احتاج الأمر. ثالثا: أن تعظم من شأن البرمجة الشيئية، وتعود هذه المسألة إلى مزاجي ومحبّتي وسرعة تعاملي مع الأنظمة الشيئية. رابعا: أن تستفيد مِن خصائص بي أتش بي 5 الجديدة وأن لا تكون متوافقة مع بي أتش بي 4. فالتوافق مع بي أتش بي 4 يعنى اضطرار مبرمجي الإطار إلى استخدام التقنيات القديمة وعدم الاستفادة من الجديدة. غطّت ييي كافة متطلّباتي، بل زادت عليها بأن جعلت من تجربة البرمجة مُتعة فريدة.
وقد قُمت كذلك بتقييم استخدام دروبال23) (نظام إدارة المحتوى24)، ويوصف الآن بأنّه إطار إدارة المحتوى 25) ). ولكن لم يتحمّله جهازي الهضمي لأكثر من ساعة، فالنظام بطئٌ جدا جدا (وأعني ذلك) بالإضافة إلى التعقيد الشديد في نصوصه المصدرية والصعوبة الكبيرة في تطويعه. لذلك آثرت عدم الاعتماد عليه. وأظن أنه يصلح لمن ليس لديهم خبرة طويلة في البرمجة أو من يحتاج إلى إنشاء موقع أساسي بسرعة كبيرة.
ومن الجدير بالذكر أن إطار الويب ييي يتضمن إطار الجافاسكريبت جيه-كويري 26) وإطار السي أس أس بلوبرنت 27).
أصبحت مسألة إدارة البيانات المخبئة28) حاجة أساسية لأي تطبيق ويب عام، كان ميم-كاشد29) هو الخيار الأول لسبب بسيط، وهو جودة اندماجه مع بي أتش بي. لولا ذلك لكان خياري هو ريديس30)، والذي يتفوّق على ميم-كاشد في الكثير من الأوجه ولكنّه لا يتناغم مع بي أتش بي بشكل أصيل كما يفعل ميم-كاشد.
بالنسبة لقواعد البيانات العلائقية31)، فقد اعتمدت هذه السنة بوست جريس كيو أل32)، والتي تفوّقت بشكل كبير على ماي أس كيو أل33). طبعا ناهيك عن التخوّف من ماي أس كيو أل الذي أحدثه شراء أوراكل لـ صن. بوست جريس هي قاعدة بيانات ناضجة جدا، إن لم تكن الأفضل والأنضج من بين قواعد البيانات الحرة والمفتوحة المصدر. وفيها من الوثوقية ما يتفوّق على ماي أس كيو أل وفي أبسط الاختبارات. ومع أخذ الاعتبارات الصحيحة عند التصميم واستخدام العلاقات والفهارس، فإن أداءها يكافئ ماي أس كيو أل. وبالإضافة إلى بوست جريس فإنّني اعتمدت كذلك على قاعدة البيانات الشيئية34) الجديدة مونغو35)، والتي ساعدتني في تبسيط أحد التطبيقات وتحسين أدائه لغاية ثلاثين ضعفا. لا، هذا ليس خطأ مطبعيا.
ولكن تبقى لقواعد البيانات الشيئية تطبيقات محدّدة، ولا أرى أنه يجدر استخدامها في كل الحالات. لذلك أبقيت على استخدام الاثنتين وبحسب الحاجة.
كان ولا زال أباتشي36)، وحاولت كثيرا مع إنجن-أكس37) ذي السمعة الممتازة إلا أن محاولاتي لم تنجح، خاصة وأنه لا يدعم أتش تي أكسس38) ولا تعليمات الأباتشي التي تعوّدنا عليها وتعلّمناها على مدى السنين. ولكن يبقى إنجن-أكس الأرض التالية التي وضعت عيني عليها لأكتشفها، فقد استهوتني كثيرا فكرة اعتماده على تدفق البيانات اللامتزامن 39)، بدلا من فكرة الخيوط والعمليات40) في أباتشي والتي لا أحبّها كثيرا. وخاصة أيضا أنّني عرفت أن إنجن-أكس يعمل بوئام مع تقنية أف بيه أم41) في بي أتش بي والتي تمّ إطلاقها مع بي أتش بي 5.3.3 والتي تقدّم أفضل أداء مقارنة بي فاست سي جي آي42) أو مود_بي أتش بي43).
كان ولا زال نظام التشغيل الحُر والمفتوح المصدر فيدورا44) جنو\لينكس45)! (استخدم إصدارة 64 بت فقط) فكفاءة عمل هذا النظام، ووثوقيته لا تقارن، بالنسبة لي، مع أي نظام آخر. أضف إلى ذلك معرفتي الطويلة والمُتراكمة في كل شبر منه وفي كل بُرغي وصمولة فيه. مكّنني كل ذلك، وخصوصا هذا العام إلى الوصول إلى مستويات قياسية في الأداء، حيث أنني أقوم بعد التنصيب الأوّلي بتجريد النظام من كافة التطبيقات والبرامج والحُزم، فيما عدا النزر اليسير والذي يلزم لتشغيل البيئة الأساسية بسطر الأوامر؛ وكل ما عدا ذلك أقوم بقطعه وحذفه. حتى انتهى بي الحال أن يستهلك النظام الخادم أقل من مئة ميغا بايت من الذاكرة، وأقل من واحد غيغا من القرص الصلب وعدد عمليات عاملة (نائمة في معظم الوقت) يقل عن الثلاثين. لن تُصدّقوا الأعاجيب التي فعلها هذا الإعداد، فمن جهة الأمان العالي، نتيجة عدم وجود أي تطبيقات غير مستخدمة (بالإضافة طبعا لإعدادات جدار النار آي بي تابلز46) ) إلى الأداء المذهل في ساعات الذروة. حيث أن خوادمي تقضي جُلّ وقتها تتفكّر في ملكوت الله، حتى في قمّة ساعات الذروة، فإنها لا تستهلك معدل حِمل 47) أكثر من واحد!
الشركات التي قمت بمساعدتها خلال هذه السنة لديها من بضعة خوادم وحتى ستون خادما حقيقيا 48). لذلك كان حتما علي وكجزء من مسح التقانات المتوفرة المرور عبر تقانات الحوسبة السحابية 49). والحق أنني بعد التجربة والتمحيص رفضت اعتمادها بتاتا لعدة أسباب؛ أولها، أن أداء أنظمة التشغيل الافتراضية 50) في الحوسبة السحابية غير مضمون، فمعظم الخوادم الفعلية تستضيف نظامين افتراضين اثنين أو أكثر، واذا حدث أن النظام الأول احتاج إلى دفق بيانات كبير 51) أو قدرة معالجة فهذا حتما سيؤثر على أداء النظام الافتراضي الثاني. أي وببساطة أنه لا يُمكن الاعتماد عليها في ساعات الذروة. ثانيها، أن عدد الشركات التي توفر هذه الخدمة محدود، حيث تستأثر أمازون بحصة الأسد؛ ووضع كافة الأنظمة السحابية عند مورد واحد له طريقة تعامل خاصة به، وانعدام المنافسة المفتوحة يجعل منه أمرا غير مستساغ. وثالثها، أن االاحتمالية الإحصائية لسقوط نظام افتراضي هي أعلى بكثير من الحقيقي، واحتمالية عودته إلى طور العمل أقل بكثير من الحقيقي. - وهذا مستقى من تجربة مطولة استخدمت فيها عشرات النسخ من الأنظمة الافتراضية - ولدي العديد من الأسباب الأخرى لرفضها. هذا كله بالرغم من الضجة الإعلامية الكبيرة المُحيطة بها، فأنا أرى أن وقتها لم يحن بعد. ولكن لم يمنعني هذا من استخدام أنظمة افتراضية في *بيئات التطوير* حيث القدرة على ضبط كافة الإعدادات والبرمجيات، واستخدم أساسا كي في أم 52). ويُناقش بعض المحبين للحوسبة السحابية أن فكرتها في خلق نسخ و تدميرها بحسب الطلب فيما يسمى بقابلية التوسع 53)، فبذلك لا يهم أداء الواحد منها أو احتمالية سقوطها، واجابتي على ذلك، هو أن التقانات المتوافرة اليوم ليست مُعدَّة للعمل في هذا الطور. وسيبقى عنق الزجاجة في بعض النقاط المفصلية في التطبيق، كالحاجة إلى مزامنة المعلومات وقواعد البيانات بشكل عام. ولغاية هذا اليوم، فإن وجود نظام ليس لديه أية نقطة سقوط وحيدة 54) هو مسألة فيها تحدي تقني كبير، إن لم تكن أقرب للمستحيل. ومعلومة أخيرة أضيفها أن الكُلفة الحالية لاعتماد الحوسبة السحابية هي أكثر بكثير من الحوسبة المعتمدة على خوادم حقيقة عندما يتساويان في مستوى الخدمة التي يتم تقديمها. وهذا أيضا بناء على قراءات عملية لا نظرية.
بيئة التطوير 55) التي أفضّلها من بين كل ما هو متوفر هي استخدام محرر النصوص “فيم”56) من سطر الأوامر. أما بالنسبة للبيئة الرسومية فقد اعتمدت المحرّر جي-إيديت57) ضمن بيئة إكس إف سي إي58) (وليس غنوم59) ولا كي دي إي60) ). ولم يرق لي أبدا استخدام نت-بينز61) أو إكليبس62) فهي بطيئة ومملّة. وقد بدأت هذه السنة باستخدام نظام ضبط وإدارة النصوص المصدرية جت63) بديلا عن إس في أن64) والذي عمل لسنوات طويلة على أحسن ما يُرام، ولكن ما شدّني إلى جت هو السرعة والأداء وصغر مساحة التخزين والتخلّص من مجلّدات إس في إن التي كانت موجودة في كل مكان.
عدم الاهتمام بحسن الأداء في تطبيقات الويب العامة سيلقي بتطبيقك في الهاوية، بغض النظر عن تميز الخصائص أو المحتوى أو الإخراج الفني؛ فكل تلك الأمور مهمة ولكن أن يكون تطبيقك جاهزا ليؤدي مهمامه في ظروف الازدحام الشديد ليس مسألة ثانوية - إلا، طبعا إذا كنت هاويا تقوم بتجريب بعض الأفكار-.
كانت توليفة هذه السنة بامتياز توليفة البساطة والسهولة والأداء العالي.
ولا أنكر أنني أشعر بالرضى الكبير عن التقانات التي عَمِلتُ عليها، وأتطلّع إلى تنفيذ المزيد من المشاريع عليها في المستقبل. كما أتطلّع إلى التعرّف على المزيد من إبداعات التقانات الجديدة في عالم البرمجة.
وإلى لقاء آخر في السنة القادمة …
بحول الله. دُمتم بخير.
كفاح عيسى، مستشار في المعلوماتية ومبرمج مخضرم. يعمل في شركة تقانات البرمجيات الحرة في عمّان وقام بتطوير وتنفيذ العديد من التطبيقات التجارية لشركات كبرى.
جميع حقوق النشر والتوزيع ممنوحة ضمن شروط رخصة وقف العامة.
| تقانات | جمع تقانة وهي technology |
| تقنيات | جمع تقنية وهي technique |
| بي أتش بي | PHP |
| جافا | Java |
| جروفي | Groovy |
| جريلز | Grails |
| روبي | Ruby |
| روبي وريلز | Ruby on Rails |
| بايثون | Python |
| النص المصدري | Source Code |
| النص المصدري المعكروني | Spaghetti code |
| البرمجة الشيئية | Object Oriented Programming |
| إطار الويب | Web development framework |
| خادم | Server |
| أداء | Performance |
| ييي | Yii |
| نظام إدارة المحتوى | Content Management System |
| إطار إدارة المحتوى | Content Management Framework |
| دروبال | Drupal |
| كيك | CakePHP |
| إجيناتور | CodeIgniter |
| سيمفوني | Symfony |
| أخيلوس | Akelos |
| نظام إدارة البيانات المخبئية | Caching-system |
| ميم-كاشد | memcached |
| ريديس | Redis |
| قواعد البيانات | Database Management System |
| قواعد البيانات العلائقية | Relational Database Management System - RDBMS |
| قواعد البيانات الشيئية | (استخدمت المصطلح رغم عدم دقته) Object Relational Database. or NoSQL. |
| بوست جريس كيو أل | PostgreSQL |
| ماي أس كيو أل | MySQL |
| مونغو | MongoDB |
| خادم الويب | Web server. Http Server |
| أباتشي | Apache |
| أتش تي أكسس | .htAccess |
| إنجن-أكس | Nginx |
| الخيوط والعمليات | Threads and processes |
| أف بيه أم | Fast Process Manager - FPM |
| فاست سي جي آي | FastCGI |
| مود_بي أتش بي | mod_php |
| فيدورا | Fedora |
| جنو\لينكس | GNU/Linux |
| التطبيقات | Applications |
| الحُزم | Packages |
| سطر الأوامر | Command line |
| عمليات | Processes |
| جدار النار | Firewall |
| آي بي تابلز | IP Tables |
| معدل الحمل | Load Average |
| فيم | vim |
| جي-إيديت | GEdit |
| إكس إف سي إي | XFCE |
| غنوم | Gnome |
| كي دي إي | KDE |
| نت-بينز | NetBeans |
| إكليبس | Eclipse |
نقاش
وعليكم السلام ورحمة الله وبركاته وبعد
شكرا جزيلا على مشاركتنا لأفكارك .
حتى نُثري الموضوع أكثر أردت أن أسألك ( رأيك الشخصي طبعا) عن: اقتباس
( وعرفت أن بايثون لا تُناسِبني بالإضافة طبعا إلى أسباب تقنية كثيرة أخرى لست بصدد ذكرها هنا. ).
أن تتفضّل علينا بذكر الأسباب التقنية وشكرا.
أهلا بكم أخي،
بداية، أيّ لغات البرمجة أفضل؟ الإجابة مسألة تعتمد على الكثير من العوامل، مما يجعل من المستحيل تحصيل إجابة واحدة وموحدة.
أما وأنك سألت :) فها هي بعضها :
أولا - بعد عدة محاولات من التعامل معها أدركت أن بعض عناصر اللغة جأءت كأنها استدراك (after thought) خذ على سبيل المثال الحاجة *النافلة* إلى استخدام الذات (self) في تعريف الدوال.
ثانيا - مسألة اعتبار التنسيق جزء أساسي من اللغة، سببت لي الكثير من الارتباك.
ثالثا - نسق كتابة بي أتش بي، أقرب للسي-سي++ والجافا. وهذا ما يسهل علي التعامل معها على خلاف البايثون.
رابعا - بي أتش بي متجذرة في بناء تطبيقات الويب، خذ على سبيل المثال تداخل برمجة بي أتش بي مع كتابة صفحة الويب.
هنالك ميزة أذكرها لبايثون على بي أتش بي : الدعم الأصيل ليونيكود بدلا من المحارف المتنوعة السعة (Mutli-byte encoding ) الموجودة في بي أتش بي.
وفي الختام فالمسألة تخضع كثيرا للذوق والارتياح الشخصي. وكما ذكرتُ في المقالة فإنني استخدمت العديد من اللغات وبشكل احترافي في السنوات الثلاثة الماضية. ولا استبعد أن اعتمد لغة برمجة أخرى في المستقبل. فاختياري ل بي أتش بي جاء ليغطي احتياجات الوقت الحالي و لا أتمسك بها، فلا تعدو لغات البرمجة كونها أدوات، يجدر بالمبرمج المتمكن أن يتقن أكثر من واحدة، حتى لو انتهى به المطاف بتفضيل واحدة على أخرى.
أخي الكريم كفاح، مقالك هذا أريد أن أفسح له مجالاً للرد عليه في مدونتي خصوصاً بعض الأشياء التي أظن أنه يمكن التعمق فيها أكثر، فما رأيك؟
أهلابكم أخي خالد، فكرة جميلة، ولك كل الشكر.
بوركت وجزاك الله خيرا . ولكن كرمك معي يجعلني أستفسر عن :
” حيث أنني أقوم بعد التنصيب الأوّلي بتجريد النظام من كافة التطبيقات والبرامج والحُزم، فيما عدا النزر اليسير والذي يلزم لتشغيل البيئة الأساسية بسطر الأوامر؛ وكل ما عدا ذلك أقوم بقطعه. انتهى بي الحال أن يستهلك النظام الخادم أقل من مئة ميغا بايت من الذاكرة، وأقل من واحد غيغا من القرص الصلب وعدد عمليات عاملة (نائمة في معظم الوقت) يقل عن الثلاثين. ”
هلاّ شاركتنا في قائمة البرامج والخدمات التي تحذفها؟
سيتطلب هذا موضوعا منفردا، لأن الأمر ينطوي كذلك على مجموعة من الإعدادات. وسأكتب فيه بإن الله. ولكن إذا شئت البحث على الشابكة فانظر Appliance Operating System - AOS أو Minimal Fedora
موافق 100%
حصلت نفس الحساسية مع ESR لكنه تعافى منها لاحقا
يقول إيريك حرفيا
أظن أن self أصيلة وليست after thought والحاجة لوضعها صراحة وليس ضمنا كما في بقية لغات البرمجة جاء نتيجة فلسفة “Explicit is better than implicit”
هذا ما أزعج ESR لكنه تعود عليه لاحقا ثم أحبه
لكني أوافق على 3 و 4
بعد كلامك هذا صار لا بد لي من المحاولة في بايثون مرة أخرى، فلربما كانت حساسية طارئة. أشكر لك تعليقك وتوضيحك،
سلام مؤيد، رغم أنني لم أذكرها، فإنني كنت أعرف عن قفل-المترجم-العام Global-Interpreter-Lock اختصارا GIL المستخدم في بايثون وروبي، الأمر الذي يعوق تبني أي منهما في بيئات احترافية تعتمد الخيوط (threads). ما رأيك؟
سلام كفاح، شكراً على المقالة الغنية. يبدو لي أن لديك حساسية مفرطة من أوراكل و مشتقّاتها. أظن أن أستحواذ أوراكل على سان دفع الجميع للتطلع إلى البدائل.
سلام محمد، بالفعل ف أوراكل تأبطت شرا منذ شرائها المشؤم لصن. وهذا ليس شعوري لوحدي، فقد انشق الكثيرون عن المكتب المفتوح ليطرحوا واحدا جديدا اسمه المكتب الحُر. وانسحبت مؤسسة أباتشي من مجلس إدارة جافا، وتوقفت المشاريع الحرة المبنية على أوبن سولاريس و . . . وهذا كله غيض من فيض. ومرده إلى ازرداء أوراكل لمفاهيم البرمجيات الحرة ومن يساهم بها.
يا سلام يا أستاذنا كفاح
المقال جميل .. وشعرت وكأني أعرفك بالتفصيل رغم لقائنا القصير ..
بالتوفيق
أهلا بك دكتور ميلاد، تشرفنا بمعرفتك ولقاءك، وشكرا لكلماتك الجميلة. :)
متابعة لتوليفة تقانات الويب
بارك الله فيك أخي على المقال المميز و شكرا لموقع اعجوبة على استضافة مثل هذه المواضيع المميزة، و على الخدمة الراقية.
السلام عليكم ورحمة الله وبركاته : مقالة رائعة و كما يقال هي زبدة الكلام ….
, ولكن أظن انها فكرة غير سيئة إضافة فقرة الوسيط البرمجي middleware لهذه التوليفة والمقارنة بينها والوصول إلى افضل اختيار (طبعا ذلك يعتمد على العديد من العوامل ….) , فمثلا MOM Message-oriented middleware هو مثال جيد للعمل مع تطبيقات الويب الكبيرة.
مرة اخرى مقالة رائعة وتنم عن خبرة عميقة , بالرك الله فيك , و إني لاتوق لقراءة مفال : “أفضل توليفة لتقانات تطوير تطبيقات الويب لعام 2011”
إن شاء المولى.
أهلا بك عامر، الحقيقة أن السبب الوحيد الذي لم أذكرها به هو انني لم استخدمها. فمشاريعي هذه السنة كانت تطبيقات ويب عامة. وكنت سأفكر في استخدام الوسيط البرمجي وأنظمة تراسل التطبيقات لو كانت التطبيقات تطبيقات أعمال، وذلك لتحقيق أداء أفضل وسرعة في الرد على الطلبات. أرجو أن تطلعنا على أهم برمجيات أنظمة تراسل التطبيقات اذا كانت لديك خبرة بها. وشكرا لك :)
سؤال في العنوان: أراك استخدمت كلمة تقانة مقابلة لكلمة Technology فما رأيك بكلمة تقنية والتي يستخدمها وادي التقنية؟؟
كنت أظن أن تقنية تعني technique. وأظن أن تقانة ( رغم غرابتها لأول مرة) دارجة في المراجع العلمية لتقابل كلمة technology. إذا كانت عندك معلومات إضافية حول افضلية كلمة تقنية، فلا مانع عندي أبدا من اعتمادها بدلا من التقانة.
في الحقيقة عندما قرأت المقال وقفت عاجزا عن الكلام ,لدي طلب صغير أرجو أن أرسله على بريدك ولكن لم أستطع الحصول على عنوانه. لدي سؤال هنا لماذا XFCE وليس Gnome وأيضا ما رأيك ب Centos
أهلا بك أخي عمر، بريدي هو kefah _at_ freesoft _dot_ jo
بالنسبة لل إكس إف سي إي، فهنالك فارق كبير عند في أداءه عن غنوم أو كي دي إي. على الاقل أسرع بمرتين، ولم افتقد أية خاصية عندما استخدمته بدلا من غنوم، بل إن شعوري هو أن أكس إف سي إي أزال عن وجهي كل الثقل الذي كانت تسببه أنظمة إدارة سطح المكتب ويجعلني أركز على تطبيقاتي.
جزاك الله خيرا , إذا سأعود لتجربة إكس إف سي إي مرة اخرى شكرا لك
رائعة … إستخدام اللغة العربيه أعطاها طعم أخر …. متشوق لقرائة المزيد
الرائع هو قرائتكم لمقالي والحماس الذي يشجعني لكتابة المزيد من المقالات. شكرا لكم.
بسم اله الرحمن الرحيم بارك الله بك اخ كفاح اود استفيد من خبرتك البرمجية كون مجال عملي بالمستقبل معلم مدرسة لكن حب للبرمجة واخص برمجة الويب يدفعني للتفيكير باحتراف برمجة الويب واجعلها مصدر رزقي الاول هل من نصائح سريعة اخ كفاح لاحتراف البرمجة
قرأة مشاركة سابقة للاخ مويد السعدي انك تنوي في المستقبل اعتماد XFCE كواجهة رئيسية في اعجوبة هل هذا صحيح ربما يكون الجوب لسؤال الاخ عمر الخرسة
نعم، على رأس كل إصدارة، إعيد مناقشة أفضلية استخدام إكس إف سي إي مع أخي مؤيد. إذا اكتملت ترجمته إلى العربية فلعنا نفعل ذلك في الإصدارة القادمة … من يدري :)
بالنسبة للنصائح، فلا توجد وصفة سحرية، كما يقولون ” ابدأ من البداية ” . أنصح بالبحث والقراءة والتجريب.
السلام عليكم ورحمة الله وبركاته،،
كيف تستخدم VIM في مشاريعك العربية؟ (هل تستخدم VTE أو بيكون أو Konsole لدعم العربية؟ أم أنك لا تستخدم VIM في الملفات العربية في مشاريعك وتستخدم بدلاً من ذلك Gedit؟)، وكيف تعد VIM للعمل كمنصة تطوير متكاملة؟
أتمنى أن تثري مقالة VIM هاهنا في مشروع التوثيق بخبرتك في VIM ..
والسلام ..
وعليكم السلام ورحمة الله وبركاته، أهلا أخي أنس، دعم “فيم” للغة العربية محدود، فهو يكتب ويُظهر الأحرف العربية مقطعة و من اليسار إلى اليمين. لذلك فإن استخدمه في نطاق الكتابة الانجليزية، أما العربية فبشكل محدود جدا. واستخدم “جي إيديت” عوضا عنه في الكتابة العربية المطولة. الحقيقة أنني استخدم “فيم” بصورته العادية، فهو بالنسبة لي محرر نصوص لا أكثر ولا أقل.
وسأرى إن كان بإمكاني المساهمة بتلك المقالة، شكرا لك :)
شكرا على هذه المقالة الممتعة والأسلوب الشيق لتداعي الأفكار في ذهن المطور، أظننا بحاجة ماسة إلى كثير من تبادل المعلومات والخبرات بهذا الأسلوب والمحتوى، فعوض التركيز على المشاريع والمنتجات النهائية لعملنا، أرى أن نأخذ وقفة صغيرة نناقش فيها الأدوات التي نستخدمها والأسباب التي دفعتنا إلى مثل هكذا خيارات، فهذه بحد ذاتها خبرة قيمة أظن أنها تفيد الكثيرين سواء كانوا هواة أم محترفين، وقد أعجبتني أيضا مقالة الأخ خالد حوراني في تعقيبه على مقالتك هذه، وهو ما دفعني بدوري أن أكتب مقالة ثالثة على نفس الشاكلة، عسى أن تكون نواة كرة ثلج تتدحرج ناشرة معها كما كبيرا من المعلومات والخبرات المفيدة للجميع، مع كل تمنياتي لك بالتوفيق، فنحن في شوق دائم لكتاباتك وأعمالك المميزة.
أهلا بكم أخي خالد، نتمنى رؤية كرة الثلج تلك، والتشارك هو طريقة رائعة لينتفع الجميع مما نتعلم؛ حيث أنني استفدت كثيرا من مقالتك، وكذلك من مقالة الأخ خالد الحوراني. سأحاول كتابة المزيد في المواضيع التقنية باللغة العربية بإذن الله. ولكم منا كل التقدير والاحترام.
رابط متابعة اﻷستاذ خالد الشمعة.
لماذا لم يذكر أحد الإخوة الأساتذة الثلاثة: أطر الجافاسكربت؟
من ناحيتي،، ففي العام ٢٠١٠ استقريت على إطار Dojo Toolkit
بعد حيرة طويلة بينه وبين ExtJs
لكن رخصة دوجو أفضل بكثير من الثانية
وبالنسبة للأعمال السريعة التي لا تتطلب ميزات ضخمة، أستخدم jquery
أهلا بك أخي، في حالة إطار الويب ييي، فإنه يتضمن جيه كويري للجافاسكريبت، كما وأنه يتضمن إطار السي أس أس “بلوبرنت”.
طلب مني بعض الأخوة التعليق على مسألة global interpreter lock التي “يعاني منها بايثون” أنا سمعت عن GIL لأول مرة من أخي كفاح، قمت بالقراءة عنه وإليكما الملخص من عدة جوانب:
روابط
أريد أن أسمع رأيكم أنتم
يقول صاحب بايثون أن هناك شخص تمكن من إزالة GIL ووضع مكانها العديد من الأقفال المضبوطة بدقة حول الأماكن اللازمة تم عمل تققيم للإداء فوجد عبئ الأقفال الكثيرة fine-grained locks أكبر بكثير من أي مكسب مهما كان نظام التشغيل سريعا فيها
لكن إن كنت تحتاج عمليات موازاة في عمليات طحن الأرقام (وليس IO سواء للقرص أو الشبكة) هناك pp
http://www.parallelpython.com/content/view/17/31/
كذلك يمكن تشغيل أكثر من عملية كل واحدة على عنوان وتوزيع الحمل عليها http://wiki.nginx.org/LoadBalanceExample
السلام عليكم و رحمة الله و بركاته أشكرك اخي الكريم على المقالة الرائعة و الموقع الأروع فقد استفدت منهما كثيرا في بناء موقع متواضع http://chiffra.eb2a.com/index.php الذي أقوم حاليا بتطويره كما أنوه لتقنية jquery و أثرها الكبير في تغير الواب و تطويره فهي الان تعد من أسس البرمجة الاحترافية في الواب موفقين اخوتي
Unbelievable how well-written and ifnomrative this was.
Great post with lots of imorptnat stuff.
I told my kids we'd play after I found what I neeedd. Damnit.
I really ndeeed to find this info, thank God!
There is a critical shortage of inofmtraive articles like this.
IJWTS wow! Why can't I think of thigns like that?
أتمنى أن تكتب مقالة أخرى عن السنة الفائتة
I had no idea how to approach this boefre-now I'm locked and loaded.
Wait, I cannot fathom it being so striaghtforward.
I am ttoally wowed and prepared to take the next step now.
I see, I supopse that would have to be the case.
That's the smart thinking we could all beenift from.
sqYAU1 <a href=“http://rctctxaykmkq.com/”>rctctxaykmkq</a>
I found just what I was needed, and it was entertaiinng!
You've got it in one. Couldn't have put it bteetr.
We've arrveid at the end of the line and I have what I need!
Gosh, I wish I would have had that ifnormtaion earlier!