docs:أفضل_توليفة_لتقانات_الويب_لعام_2010

أفضل توليفة لتقانات تطوير تطبيقات الويب لعام 2010

السلام عليكم ورحمة الله وبركاته،

أيامٌ قليلة تفصلنا عن نهاية العام، فكانت لي هذه الوقفة مع ما تعلّمته خلال هذه السنة وما رغبت بمشاركة مطوّري الويب به.

كان هذا العام طويلا فعلا بالنسبة لي، فقد شاركت خلاله بتطوير أربعة تطبيقات ويب عامة يتراوح عدد زائريها من عشرة آلاف إلى ربع مليون زائر. وكان التطبيق الأخير الذي قُمت بتنفيذه هو موقع مقولة غير الربحي.

لم تكن المهمّة في كل واحدة من هذه التطبيقات سهلة أبدا.

ولا تستغربوا أنّني وفي كل واحد منها قُمتُ بدراسة طبيعة التقانات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
1) التقانات هي جمع تقانة وهي technology
2) make it work
3) make it work well
4) make it work fast
5) Life and in production
6) Java
7) Groovy
8) Grails
9) Ruby on Rails
10) PHP
11) Spaghetti code
12) Visual Basic
13) Object Oriented Programming
14) Alternative PHP Cache - APC
15) Servers
16) Python
17) Web Development Framework
18) CakePHP
19) CodeIgniter
20) Symphony
21) Akelos
22) Yii
23) Drupal
24) Content Management System - CMS
25) Content Management Framework
26) JQuery
27) BluePrint CSS Framework
28) Caching-system
29) memcached
30) Redis
31) Relational Database Management System
32) PostgreSQL
33) MySQL
34) NoSQL, Object Oriented DBMS
35) MongoDB
36) Apache
37) Nginx
38) .htAccess
39) Non-blocking I/O
40) Threads and Processes
41) Fast Process Manager - FPM
42) FastCGI
43) mod_php
44) Fedora
45) GNU/Linux
46) IP Tables Firewall
47) Load Average
48) Real, dedicated
49) Cloud Computing
50) Virtual Operating Systems
51) Intensive I/O
52) KVM
53) Scalability
54) Single Point of Failure
55) Development Environment
56) Vim
57) GEdit
58) XFCE
59) GNOME
60) KDE
61) NetBeans
62) Eclipse
63) git
64) subversion -svn

نقاش

أبو حفصة, 2010/12/15 06:39

وعليكم السلام ورحمة الله وبركاته وبعد

شكرا جزيلا على مشاركتنا لأفكارك .

حتى نُثري الموضوع أكثر أردت أن أسألك ( رأيك الشخصي طبعا) عن: اقتباس

( وعرفت أن بايثون لا تُناسِبني بالإضافة طبعا إلى أسباب تقنية كثيرة أخرى لست بصدد ذكرها هنا. ).

أن تتفضّل علينا بذكر الأسباب التقنية وشكرا.

كفاح عيسى, 2010/12/15 12:40

أهلا بكم أخي،

بداية، أيّ لغات البرمجة أفضل؟ الإجابة مسألة تعتمد على الكثير من العوامل، مما يجعل من المستحيل تحصيل إجابة واحدة وموحدة.

أما وأنك سألت :) فها هي بعضها :

أولا - بعد عدة محاولات من التعامل معها أدركت أن بعض عناصر اللغة جأءت كأنها استدراك (after thought) خذ على سبيل المثال الحاجة *النافلة* إلى استخدام الذات (self) في تعريف الدوال.

ثانيا - مسألة اعتبار التنسيق جزء أساسي من اللغة، سببت لي الكثير من الارتباك.

ثالثا - نسق كتابة بي أتش بي، أقرب للسي-سي++ والجافا. وهذا ما يسهل علي التعامل معها على خلاف البايثون.

رابعا - بي أتش بي متجذرة في بناء تطبيقات الويب، خذ على سبيل المثال تداخل برمجة بي أتش بي مع كتابة صفحة الويب.

هنالك ميزة أذكرها لبايثون على بي أتش بي : الدعم الأصيل ليونيكود بدلا من المحارف المتنوعة السعة (Mutli-byte encoding ) الموجودة في بي أتش بي.

وفي الختام فالمسألة تخضع كثيرا للذوق والارتياح الشخصي. وكما ذكرتُ في المقالة فإنني استخدمت العديد من اللغات وبشكل احترافي في السنوات الثلاثة الماضية. ولا استبعد أن اعتمد لغة برمجة أخرى في المستقبل. فاختياري ل بي أتش بي جاء ليغطي احتياجات الوقت الحالي و لا أتمسك بها، فلا تعدو لغات البرمجة كونها أدوات، يجدر بالمبرمج المتمكن أن يتقن أكثر من واحدة، حتى لو انتهى به المطاف بتفضيل واحدة على أخرى.

خالد الحوراني, 2010/12/16 00:58

أخي الكريم كفاح، مقالك هذا أريد أن أفسح له مجالاً للرد عليه في مدونتي خصوصاً بعض الأشياء التي أظن أنه يمكن التعمق فيها أكثر، فما رأيك؟

كفاح عيسى, 2010/12/16 07:27

أهلابكم أخي خالد، فكرة جميلة، ولك كل الشكر.

أبو حفصة, 2010/12/16 05:47

بوركت وجزاك الله خيرا . ولكن كرمك معي يجعلني أستفسر عن :

” حيث أنني أقوم بعد التنصيب الأوّلي بتجريد النظام من كافة التطبيقات والبرامج والحُزم، فيما عدا النزر اليسير والذي يلزم لتشغيل البيئة الأساسية بسطر الأوامر؛ وكل ما عدا ذلك أقوم بقطعه. انتهى بي الحال أن يستهلك النظام الخادم أقل من مئة ميغا بايت من الذاكرة، وأقل من واحد غيغا من القرص الصلب وعدد عمليات عاملة (نائمة في معظم الوقت) يقل عن الثلاثين. ”

هلاّ شاركتنا في قائمة البرامج والخدمات التي تحذفها؟

كفاح عيسى, 2010/12/16 07:33

سيتطلب هذا موضوعا منفردا، لأن الأمر ينطوي كذلك على مجموعة من الإعدادات. وسأكتب فيه بإن الله. ولكن إذا شئت البحث على الشابكة فانظر Appliance Operating System - AOS أو Minimal Fedora

مؤيد السعدي, 2010/12/16 07:09
دروبال … وأظن أنه يصلح لمن ليس لديهم خبرة طويلة في البرمجة أو من يحتاج إلى إنشاء موقع أساسي بسرعة كبيرة.

موافق 100%

أُصاب عند التعامل مع بعضها بحالة من عسر الهضم (المعدة والأمعاء) وأقصد ذلك حرفيا :-) وعرفت أن بايثون لا تُناسِبني بالإضافة طبعا إلى أسباب تقنية كثيرة أخرى لست بصدد ذكرها هنا.

حصلت نفس الحساسية مع ESR لكنه تعافى منها لاحقا

يقول إيريك حرفيا

وعلى الفور تعثرت بأول سمة من سمات بايثون الغريبة والتي يمكن للجميع ملاحظتها : وهي أن المسافات الفارغة (أو “الإزاحة البادئة” indentation) لها أهمية كبيرة في صيغة اللغة. واللغة لا تشبه سي أو بيرل في استخدام الحاصرة في التراكيب، وبدلا من ذلك تفصل مجموعة العبارات عبر التغيّر في الإزاحة. ومثلما وقع لمعظم الهاكرز عند إدراكهم الأول لهذه الحقيقة، ولّيت منها مشمئزا. ... المزيد
أولا - بعد عدة محاولات من التعامل معها أدركت أن بعض عناصر اللغة جأءت كأنها استدراك (after thought) خذ على سبيل المثال الحاجة *النافلة* إلى استخدام الذات (self) في تعريف الدوال.

أظن أن self أصيلة وليست after thought والحاجة لوضعها صراحة وليس ضمنا كما في بقية لغات البرمجة جاء نتيجة فلسفة “Explicit is better than implicit”

ثانيا - مسألة اعتبار التنسيق جزء أساسي من اللغة، سببت لي الكثير من الارتباك.

هذا ما أزعج ESR لكنه تعود عليه لاحقا ثم أحبه

لكني أوافق على 3 و 4

كفاح عيسى, 2010/12/16 07:30

بعد كلامك هذا صار لا بد لي من المحاولة في بايثون مرة أخرى، فلربما كانت حساسية طارئة. أشكر لك تعليقك وتوضيحك،

كفاح عيسى, 2011/01/07 22:49

سلام مؤيد، رغم أنني لم أذكرها، فإنني كنت أعرف عن قفل-المترجم-العام Global-Interpreter-Lock اختصارا GIL المستخدم في بايثون وروبي، الأمر الذي يعوق تبني أي منهما في بيئات احترافية تعتمد الخيوط (threads). ما رأيك؟

محمد التلاوي, 2010/12/16 08:14

سلام كفاح، شكراً على المقالة الغنية. يبدو لي أن لديك حساسية مفرطة من أوراكل و مشتقّاتها. أظن أن أستحواذ أوراكل على سان دفع الجميع للتطلع إلى البدائل.

كفاح عيسى, 2010/12/16 13:11

سلام محمد، بالفعل ف أوراكل تأبطت شرا منذ شرائها المشؤم لصن. وهذا ليس شعوري لوحدي، فقد انشق الكثيرون عن المكتب المفتوح ليطرحوا واحدا جديدا اسمه المكتب الحُر. وانسحبت مؤسسة أباتشي من مجلس إدارة جافا، وتوقفت المشاريع الحرة المبنية على أوبن سولاريس و . . . وهذا كله غيض من فيض. ومرده إلى ازرداء أوراكل لمفاهيم البرمجيات الحرة ومن يساهم بها.

ميلاد, 2010/12/16 13:39

يا سلام يا أستاذنا كفاح

المقال جميل .. وشعرت وكأني أعرفك بالتفصيل رغم لقائنا القصير ..

بالتوفيق

كفاح عيسى, 2010/12/16 21:37

أهلا بك دكتور ميلاد، تشرفنا بمعرفتك ولقاءك، وشكرا لكلماتك الجميلة. :)

خالد الحوراني, 2010/12/17 01:23

متابعة لتوليفة تقانات الويب

محمد أمين, 2010/12/17 13:46

بارك الله فيك أخي على المقال المميز و شكرا لموقع اعجوبة على استضافة مثل هذه المواضيع المميزة، و على الخدمة الراقية.

عامر رضوان , 2010/12/18 05:22

السلام عليكم ورحمة الله وبركاته : مقالة رائعة و كما يقال هي زبدة الكلام …. :-) , ولكن أظن انها فكرة غير سيئة إضافة فقرة الوسيط البرمجي middleware لهذه التوليفة والمقارنة بينها والوصول إلى افضل اختيار (طبعا ذلك يعتمد على العديد من العوامل ….) , فمثلا MOM Message-oriented middleware هو مثال جيد للعمل مع تطبيقات الويب الكبيرة.

مرة اخرى مقالة رائعة وتنم عن خبرة عميقة , بالرك الله فيك , و إني لاتوق لقراءة مفال : “أفضل توليفة لتقانات تطوير تطبيقات الويب لعام 2011:-) إن شاء المولى.

كفاح عيسى, 2010/12/18 17:20

أهلا بك عامر، الحقيقة أن السبب الوحيد الذي لم أذكرها به هو انني لم استخدمها. فمشاريعي هذه السنة كانت تطبيقات ويب عامة. وكنت سأفكر في استخدام الوسيط البرمجي وأنظمة تراسل التطبيقات لو كانت التطبيقات تطبيقات أعمال، وذلك لتحقيق أداء أفضل وسرعة في الرد على الطلبات. أرجو أن تطلعنا على أهم برمجيات أنظمة تراسل التطبيقات اذا كانت لديك خبرة بها. وشكرا لك :)

أنس أحمد, 2010/12/18 16:16

سؤال في العنوان: أراك استخدمت كلمة تقانة مقابلة لكلمة Technology فما رأيك بكلمة تقنية والتي يستخدمها وادي التقنية؟؟

كفاح عيسى, 2010/12/18 17:23

كنت أظن أن تقنية تعني technique. وأظن أن تقانة ( رغم غرابتها لأول مرة) دارجة في المراجع العلمية لتقابل كلمة technology. إذا كانت عندك معلومات إضافية حول افضلية كلمة تقنية، فلا مانع عندي أبدا من اعتمادها بدلا من التقانة.

عمر خرسه, 2010/12/19 12:20

في الحقيقة عندما قرأت المقال وقفت عاجزا عن الكلام ,لدي طلب صغير أرجو أن أرسله على بريدك ولكن لم أستطع الحصول على عنوانه. لدي سؤال هنا لماذا XFCE وليس Gnome وأيضا ما رأيك ب Centos

كفاح عيسى, 2010/12/20 20:13

أهلا بك أخي عمر، بريدي هو kefah _at_ freesoft _dot_ jo

بالنسبة لل إكس إف سي إي، فهنالك فارق كبير عند في أداءه عن غنوم أو كي دي إي. على الاقل أسرع بمرتين، ولم افتقد أية خاصية عندما استخدمته بدلا من غنوم، بل إن شعوري هو أن أكس إف سي إي أزال عن وجهي كل الثقل الذي كانت تسببه أنظمة إدارة سطح المكتب ويجعلني أركز على تطبيقاتي.

عمر خرسه, 2010/12/20 20:18

جزاك الله خيرا , إذا سأعود لتجربة إكس إف سي إي مرة اخرى شكرا لك

منذر أبو الشيخ, 2010/12/19 15:43

رائعة … إستخدام اللغة العربيه أعطاها طعم أخر …. متشوق لقرائة المزيد

كفاح عيسى, 2010/12/20 20:10

الرائع هو قرائتكم لمقالي والحماس الذي يشجعني لكتابة المزيد من المقالات. شكرا لكم.

محمد شطناوي, 2010/12/20 10:32

بسم اله الرحمن الرحيم بارك الله بك اخ كفاح اود استفيد من خبرتك البرمجية كون مجال عملي بالمستقبل معلم مدرسة لكن حب للبرمجة واخص برمجة الويب يدفعني للتفيكير باحتراف برمجة الويب واجعلها مصدر رزقي الاول هل من نصائح سريعة اخ كفاح لاحتراف البرمجة


قرأة مشاركة سابقة للاخ مويد السعدي انك تنوي في المستقبل اعتماد XFCE كواجهة رئيسية في اعجوبة هل هذا صحيح ربما يكون الجوب لسؤال الاخ عمر الخرسة

كفاح عيسى, 2010/12/20 20:16

نعم، على رأس كل إصدارة، إعيد مناقشة أفضلية استخدام إكس إف سي إي مع أخي مؤيد. إذا اكتملت ترجمته إلى العربية فلعنا نفعل ذلك في الإصدارة القادمة … من يدري :)

بالنسبة للنصائح، فلا توجد وصفة سحرية، كما يقولون ” ابدأ من البداية ” . أنصح بالبحث والقراءة والتجريب.

أنس أحمد, 2010/12/21 02:52

السلام عليكم ورحمة الله وبركاته،،

  "بيئة التطوير التي أفضّلها من بين كل ما هو متوفر هي استخدام محرر النصوص “فيم” من سطر الأوامر. أما بالنسبة للبيئة الرسومية فقد اعتمدت المحرّر جي-إيديت ضمن بيئة إكس إف سي إي (وليس غنوم ولا كي دي إي)."

كيف تستخدم VIM في مشاريعك العربية؟ (هل تستخدم VTE أو بيكون أو Konsole لدعم العربية؟ أم أنك لا تستخدم VIM في الملفات العربية في مشاريعك وتستخدم بدلاً من ذلك Gedit؟)، وكيف تعد VIM للعمل كمنصة تطوير متكاملة؟

أتمنى أن تثري مقالة VIM هاهنا في مشروع التوثيق بخبرتك في VIM ..

والسلام ..

كفاح عيسى, 2010/12/25 12:10

وعليكم السلام ورحمة الله وبركاته، أهلا أخي أنس، دعم “فيم” للغة العربية محدود، فهو يكتب ويُظهر الأحرف العربية مقطعة و من اليسار إلى اليمين. لذلك فإن استخدمه في نطاق الكتابة الانجليزية، أما العربية فبشكل محدود جدا. واستخدم “جي إيديت” عوضا عنه في الكتابة العربية المطولة. الحقيقة أنني استخدم “فيم” بصورته العادية، فهو بالنسبة لي محرر نصوص لا أكثر ولا أقل.

وسأرى إن كان بإمكاني المساهمة بتلك المقالة، شكرا لك :)

خالد الشمعة, 2010/12/21 15:01

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

كفاح عيسى, 2010/12/25 12:14

أهلا بكم أخي خالد، نتمنى رؤية كرة الثلج تلك، والتشارك هو طريقة رائعة لينتفع الجميع مما نتعلم؛ حيث أنني استفدت كثيرا من مقالتك، وكذلك من مقالة الأخ خالد الحوراني. سأحاول كتابة المزيد في المواضيع التقنية باللغة العربية بإذن الله. ولكم منا كل التقدير والاحترام.

خالد الحوراني, 2010/12/21 15:32

رابط متابعة اﻷستاذ خالد الشمعة.

أسامة عزام, 2010/12/29 17:32

لماذا لم يذكر أحد الإخوة الأساتذة الثلاثة: أطر الجافاسكربت؟

من ناحيتي،، ففي العام ٢٠١٠ استقريت على إطار Dojo Toolkit

بعد حيرة طويلة بينه وبين ExtJs

لكن رخصة دوجو أفضل بكثير من الثانية

وبالنسبة للأعمال السريعة التي لا تتطلب ميزات ضخمة، أستخدم jquery

كفاح عيسى, 2010/12/30 20:29

أهلا بك أخي، في حالة إطار الويب ييي، فإنه يتضمن جيه كويري للجافاسكريبت، كما وأنه يتضمن إطار السي أس أس “بلوبرنت”.

مؤيد السعدي, 2011/01/10 11:24

طلب مني بعض الأخوة التعليق على مسألة global interpreter lock التي “يعاني منها بايثون” أنا سمعت عن GIL لأول مرة من أخي كفاح، قمت بالقراءة عنه وإليكما الملخص من عدة جوانب:

  • أولها معنى GIL: وهي أن المفسر يعمل قفل عام يمنع عمل المسارات الأخرى threads بالتوازي مع المسار الذي طلب القفل وتظل الأخرى متوقفة حتى تحرير القفل
  • ثانيها هل هو موجود في بايثن:
    • والجواب على هذا أنه موجود في تنفيذ أشهر مفسر بايثون (وهو cpython) وليس في تصميم اللغة
    • هو غير موجود في مفسرات بايثون الأقل شهرة مثل jython و iron python وربما pypy
    • أن القفل في مفسر بايثون يحيط بعدد قابل للتغيير/المعايرة من العمليات البايثونية byte code ولا تتجاوز ذلك العدد - بكلمات أخرى لن يكون هناك thread متوقف منتظرا اكتمال thread آخر لكن وجود القفل يجعلها متسلسلة مع التبديل بينها
  • ثالثا أثره على الأداء
    • يقول أحدهم أن هذا القفل العام ليس نقطة ضعف لكنه في نفس الوقت ليس نقطة قوة بل هو طريقة في تنفيذ
    • أن هذا القفل لا يؤثر على موازاة عمليات I/O سواء على الأقراص أو الشبكة (يعني يتحرر القفل تلقائيا في هذه الحالة) بمعنى آخر عندما يقوم thread بالانتظار ريثما يستلم عميل بطيء ما تم إرساله على الشبكة فإن القفل يكون محررا ويمكن ل threads أخرى أن تعمل
    • أن هذا القفل لا يؤثر عند التحدث مع مكتبات thread-safe مكتوبة على سي مثلا
  • رابعا جدوى إزالة القفل:
    • تزعم بعض المقالات أن وجود هذا القفل يؤدي إلى زيادة كبيرة في الأداء حتى في البيئات متعددة المعالجات
  • خامسا: بدائل استخدام ال threads مجدية في عالم لينكس حيث هناك وحدة اسمها multiprocessing تستخدم تماما مثل ال threads لكن عبر fork وعيبها الوحيد أنها لا تعمل في ويندوز
  • سادسا: الجمع بين هذا وذاك حيث يمكن تحديد عدد من threads و ال process ل mod_wsgi الذي يشغل تطبيقات بايثون في أباتشي
  --- It is faster in the single-threaded case.
  --- It is faster in the multi-threaded case for i/o bound programs.
  --- It is faster in the multi-threaded case for cpu bound programs that do their compute-intensive work in C libraries.

روابط

أريد أن أسمع رأيكم أنتم

مؤيد السعدي, 2011/01/19 13:58

يقول صاحب بايثون أن هناك شخص تمكن من إزالة GIL ووضع مكانها العديد من الأقفال المضبوطة بدقة حول الأماكن اللازمة تم عمل تققيم للإداء فوجد عبئ الأقفال الكثيرة fine-grained locks أكبر بكثير من أي مكسب مهما كان نظام التشغيل سريعا فيها

لكن إن كنت تحتاج عمليات موازاة في عمليات طحن الأرقام (وليس IO سواء للقرص أو الشبكة) هناك pp

http://www.parallelpython.com/content/view/17/31/

كذلك يمكن تشغيل أكثر من عملية كل واحدة على عنوان وتوزيع الحمل عليها http://wiki.nginx.org/LoadBalanceExample

يوسف, 2011/02/19 17:11

السلام عليكم و رحمة الله و بركاته أشكرك اخي الكريم على المقالة الرائعة و الموقع الأروع فقد استفدت منهما كثيرا في بناء موقع متواضع http://chiffra.eb2a.com/index.php الذي أقوم حاليا بتطويره كما أنوه لتقنية jquery و أثرها الكبير في تغير الواب و تطويره فهي الان تعد من أسس البرمجة الاحترافية في الواب موفقين اخوتي

Kamren, 2011/10/08 08:39

Unbelievable how well-written and ifnomrative this was.

Essie, 2011/11/13 04:19

Great post with lots of imorptnat stuff.

Lakiesha, 2011/12/24 00:29

I told my kids we'd play after I found what I neeedd. Damnit.

Sondi, 2011/12/24 00:41

I really ndeeed to find this info, thank God!

Maisyn, 2012/01/18 01:26

There is a critical shortage of inofmtraive articles like this.

Alan, 2012/03/02 02:17

IJWTS wow! Why can't I think of thigns like that?

عمر خرسه, 2012/03/02 02:21

أتمنى أن تكتب مقالة أخرى عن السنة الفائتة

Smart, 2012/03/21 18:04

I had no idea how to approach this boefre-now I'm locked and loaded.

Antonio, 2012/03/21 18:14

Wait, I cannot fathom it being so striaghtforward.

Daniel, 2012/03/24 02:17

I am ttoally wowed and prepared to take the next step now.

Sabrina, 2012/03/24 02:54

I see, I supopse that would have to be the case.

Chaska, 2012/03/25 19:10

That's the smart thinking we could all beenift from.

yfygasesq, 2012/03/27 10:24

sqYAU1 <a href=“http://rctctxaykmkq.com/”>rctctxaykmkq</a>

Brittney, 2012/03/31 07:57

I found just what I was needed, and it was entertaiinng!

Buttercup, 2012/05/04 17:41

You've got it in one. Couldn't have put it bteetr.

Leny, 2012/05/04 23:40

We've arrveid at the end of the line and I have what I need!

Veronica, 2012/05/17 10:41

Gosh, I wish I would have had that ifnormtaion earlier!

Ryan, 2012/05/29 03:39

I much prefer informative aritcels like this to that high brow literature.

Chris, 2012/06/14 01:50

This is an article that makes you think “never tohhugt of that!”

Mirjam, 2012/06/14 04:16

Thanks for intrduocing a little rationality into this debate.

fjikyyk, 2012/06/16 13:07

uRpZB9 <a href=“http://mnbyaolghigt.com/”>mnbyaolghigt</a>

Dustin, 2012/08/04 04:54

What a pleasrue to meet someone who thinks so clearly

Eliane, 2012/08/10 05:36

I'm so glad I found my solution onilne.

Akshay, 2012/08/13 23:47

That's a quick-witted answer to a dffiiuclt question

Emmly, 2012/08/14 02:39

I thank you humbly for sharing your widsom JJWY

wvspvcszbo, 2012/08/16 09:47

Asorfm , [url=http://lyxqtettfcis.com/]lyxqtettfcis[/url], [link=http://wflqmpqjnigv.com/]wflqmpqjnigv[/link], http://izaxmgnbsjbf.com/

Jay, 2012/09/04 06:10

If only there were more cleevr people like you!

Brynell, 2012/12/27 12:52

There's a terrific amount of knolewdge in this article!

Sela, 2013/02/12 11:20

Home run! Great slugging with that asnewr!

Jean, 2013/05/16 08:19

Hey, you're the goto eexrpt. Thanks for hanging out here.

أدخل تعليقك:
 
آخر تعديل:: 23 نيسان 2015 الساعة 00:19 (تحرير خارجي)