كمبرمج ماهي انجازاتك لعام 2014 وماهي اهدافك للعام القادم؟
كمبرمج ماهي انجازاتك لعام 2014 وماهي اهدافك للعام القادم؟
دعك من روبي فإنها لا تدخل في شيء إلا وتخربه بعد فوات الاوان ولا يمكنك الخروج إلا بثمن مرتفع. إطار العمل rails رائع ويحتوي أنماط برمجية رائعة جدا (يمكنك تعلمها وتطبيقها في أي لغة).
من مشاكل لغة روبي أن مجتمعها لا يهتم بالتوافقية فهو يعمل لغات مختلفة في الإصدارات المختلفة ويسميها روبي فقط بطريقة لا تسمح بثبيتهما معا إلى عبر rvm قارن ذلك ببايثون الذي قالوا أن بايثون 3 لغة مختلفة تماما بحيث يمكنك كما في أغلب التوزيعات تثبيت بايثون 2 و بايثون 3 على نفس النظام من خلال مدير الحزم.
من المشاكل الأخرى أن خوادم لغة روبي للإصدار ruby 1.9.x لا تدعم threads بل تعمل fork بمعنى حتى أتمكن من معالجة 100 طلب دفعة واحدة أحتاج عمل 100 process (سواء fork أو prefork) كل واحدة تحجز كامل الذاكرة.
وقت الاستهلالي لتحميل تطبيقات rails مبالغ فيه فالوقت بين تشغيل الخدام (أو إعادة تشغيل الخادم) وأول قبول ناجح لأول طلب من الطبيعي أن يكون 30 ثانية وقد يصل إلى 3 دقائق في التطبيقات الكبيرة. (في حين أن الوقت بين تشغيل جانغو وقبول أول طلب بالكاد يصل إلى ثواني)
ومن المشاكل الأخرى هي الاستهلاك الفلكي المبالغ فيه للذاكرة (مثلا هناك تطبيق مشهور اسمه puppet يعمل على إعداد الخوادم عند تجربة تركيب openstack/packstack وهو من أعقد المشاريع في العالم ويتضمن تشغيل وإعداد Galera MariaDB Cluster و Rabbit Message Queue و عدد كبير من خوادم openstack الشاهد في القضية أن التجربة فشلت على 2 غيغا لأن روبي في puppet إلتهمت كل الذاكرة فقط في قولبة ملفات الإعدادات مع أنها مهمة تافهة والمفترض أن تفشل لأن كل تلك المكونات الكثيرة تستهلك ذاكرة)
من خلال متابعتي لتعليقاتك، شعرت أنك من المبرمجين الـ Professionals القلّة المتواجدون في العالم العربي،
هلّا كتبت لي، متفضلاً، عن تجربتك في البرمجة؟ وكيف اكتسبت هذه الخبرة ..
شكرا لك. يمكنك متابعة مدونتي حيث سانشر تدوينة جامعة قريبا. وموقع وثائق اعجوبة وحسابي على github
آخر مقالة لي فيه عن قواعد البيانات
وطبعا في Arabia.io مثل مقالي عن مشروعي ajax-ops
بدأت تعلم اليوم البارحة ولكن لا أدري، تبدو لي غير عملية عند كبر المشروع وكبر عدد الزوار، ربما السبب هو عملها على thread واحد فحسب مما قد يسبب مشاكل عند تضخم الطلب عليها
أنا تعلمتها من أجل انشاء تطبيقات سطح مكتب وتبدو لي مناسبة جدا في تلك الحالة حيث لديك مستخدم واحد فحسب لذا لا مشكلة إطلاقا
بل يمكن تشغيل أكثر من process وعمل load balance لها من داخل nginx إذا استعملت redis adapter
أما موضوع ال thread الواحد فهذا لأن هناك non blocking io أو ما يسمى green threads وهذا شيء جيد. أنا مشكلتي مع جافاسكربت في مكان آخر لا علاقة له بالأداء والتحمل.
خارج السياق. لا اظن انها تفعل شيء سوى مكياج بموضة مترو لمحبي سطح مكتب ويندوز 8. الأمور تسير الآن بالعكس فسطح المكتب يموت. ناهيك اني لا احب مترو ولا ويندوز. مترو نظام فاشل على سطح المكتب والجوال معا.
اقصد اطار عمل
المفروض أن المشكلة threads محلولة في روبي 2. مشكلة الذاكرة مشهورة جدا والخوادم الجيدة إما تعد لتقتل ال process بعد كذا طلب لتحرير الذاكرة او تستدعي GC وكلاهما عمليات مكلفة. اقتبس
Adding threading support in Ruby 1.8 is out of discussion.
ايضا
By default the memory management of this plugin is very aggressive (as Ruby can easily devour memory like it was going out of fashion). The Ruby garbage
collector is invoked after every request by default.
ايضا
Starting from 4.0, Rails support multiple threads (only for ruby 2.0):
والموضوع مشهور ولا علاقة له بخادم uWSGI يمكنك ان تقرأ مثلا مدونة github حيث شرحوا كيف واجهوا تلك المشاكل في روبي مستخدمين عدة unicorns علما ان عنق الزجاجة في github والطحن من المفترض ان لا يكون في روبي بل هو في اداة git وال disk io إلا انهم احتاجوا إلى تشغيل عدد كبير جدا من الخوادم لروبي.
التعليقات