كمبرمج ماهي انجازاتك لعام 2014 وماهي اهدافك للعام القادم؟
كمبرمج ماهي انجازاتك لعام 2014 وماهي اهدافك للعام القادم؟
لعل الشيء الوحيد الذي تعلمته هذه السنة هو NodeJS ولكنني لم أتعمق فيها بالشكل الذي أريده.
لست من الأشخاص الذين يضعون أهداف كل سنة.
انا متشوق لتعلمها فأعطيني رأيك كوني لا اريد الخوض في PHP واتعمق مباشرتاً في Node.JS ؟
كذلك اخبرني بالمصادر التي افادتك كثيراً؟
الكثير مماتعلمته كان عن إطار أكسبرس الذي يسهل عمل تطبيقات إنترنت بسرعة ويعتبر أشهر إطار عمل يستخدم مع NodeJS وتعلمه ليس صعباً وبإمكانك إلقاء نظرة على المستندات في موقعهم لتفهم طريقة العمل.
سوى ذلك إعتمدت كثيرا على جوجل وقمت بشراء كتابين :
The Node Begginer Book
Hands on Node.js
ولكنني لم أتفرغ لقرائتها بعد.
إنجازي لهذا العام هوأنني إستطعت ان اطلق اول تطبيقين لي للأندرويد :)
دعك من روبي فإنها لا تدخل في شيء إلا وتخربه بعد فوات الاوان ولا يمكنك الخروج إلا بثمن مرتفع. إطار العمل 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 إلا انهم احتاجوا إلى تشغيل عدد كبير جدا من الخوادم لروبي.
يوجد نقطتين تعليقا علي كلامك
الاولي
هل فرات عن كل الهلوم والتخصصات واخترت هذا المجال ام انك احببته او اعجبك لشئ ما وتريد ان تستمر فيه
الان المجالات عديده جدا ومتطوره وتعلم لغات الويب ليست سيئه وبها مجالات عده للعمل بالطبع وهي مستمره ولكن ان كنت ستبدا من الصفر لماذا لا تبدا في مجال جديد وناشئ وبالتالي تكون ابعدت عن الاعداد الكلبره التي تدخل المجال لسهولته وبالتالي ابتعدت عن منافسه ليس لها اهميه وميزت نفسك وكنت في مجال ناشئ وبالتالي ربما في القريب تكون احد رواد المجال في بلدك بدلا من ان تكون مجرد نسخه من الاف النسخ الموجوده
ثانيا ان كنت تعلم كلامي السابق وفكرت فيه واستقريت علي تصميم المواقع واكرر هذا ليس مجال سئ ولازال به العمل وسيظل مجال مفتوح للعمل
فاريدك ان تدخل علي الدروات وليكن ستاخذ دورتان في كل من الhtml &css احسب مده الشرح لهم واضرب في 5 هذا هو الوقت الكافي لانجاز تعلمك لهم وبالتالي ان كنت تريد تحقيق نجاح حقيقي فاحسب كم من الوقت تستطيع ان تتفرغ للتعلم في عامك القادم وان حددت ذلك وقسمته علي دروات ستجد انه كافي جدا لات تدخل السنه الجديده لا تعلم شئ وتخرج منه محترف في المجال ككل ابتداء من تكويد المواقع الي البرمجات وانظمه ادراه المحتوي والتصميم المتجاوب وايضا البرمجات الخاصه الكامله
اري اني لست عالم برمجيات اني افهم في كل المجالات ولكن بخبره في مجال اليوب ان الامر لم يعد بجودته مثل قبل ذلك
وقد ظهر توجهات عديده اخري يمكن مراجعتها من خلال الرابط
ويبقي فيها برمجه المواقع ولكن ستري فيها توجهات للجديد وبالتالي وجودك بنفس القدرات والمهارت الموجوده في السوق لن يضيف لك ايي شئ ولكن اذا اخذت توجه غير مشهور ستجد لنفسك مكان خاص تستطيع التميز فيه
وايضا يمكن ان تدخل علي مواقع الفريلانس وئيه كيف تكون المنافسه علي تصميم المواقع الاعداد مهوله في الوقت يوجد تخصصات مكافئاتها اعلي بكثير وبخصص اعلي وبقيمه وسط المبرمجين اعلي
كأهم إنجاز تحدثت عنه بالتفصيل بردي على الموضوع التالي :
وبالنسبة للتعلم فهي ازدياد الخبرة بشكل عام لما أعلمه ، ربما تعلمت مفاهيم جديدة ولكن كانت لمجرد الإحاطة والمعرفة وادخارها لحين الحاجة
بالنسبة للاهداف ، الأهداف كثيرة ولكنها أقرب للأماني منها للتطبيق ، لأن تطبيقها يحتاج تفرغ و تمويل وراحة بال.
مثلاً كنت أضع في ذهني تصور أن أقوم ببناء برنامج خاص بالخط العربي ولكن مبدؤه مختلف عما هو موجود الآن ، بمعنى لا يقوم على وجود أحرف وتركيبات جاهزة و لصقها ببعضها ، وإنما يقوم على محاكاة عمل قصبة أو قلم التخطيط ، وهو سيكون موجه للخطاطين اليدويين و لمن يريد تعلم الخط.
لدي عدة تصورات حول برامج خدمية تعتمد على التفاعل الجرافيكي أكثر من الأرقام ، أحد الأمثلة التي كنت أفكر بها ، برنامج لإدارة العقارات.
لا زلت أتمنى تهيؤ الظروف لأكمل سلسلة الدروس عبر اليوتيوب وهي دورة فنيات الطباعة والتصميم الطباعي ، ودورة الإنديزاين ، وأيضاً دورة للسي شارب.
والله ولي التوفيق.
اطلاق
اطلاق سكربت company
بعض الأعمال الأخرى الغير مصرح لى التحدث عنها
بدأت تحضير الماجستير و عندى إمتحانات يوم 1/فبراير .. ان شاء الله
اهم انجاز لي في 2014
و العام القادم ان شاء الله
الدخول في QT و الفلاش او احدهم على الاقل
التعليقات