سوالف #7 VirtualBox و procedural programming و ابعد من الاستسلام للحلول

اهلا وسهلا

اهلا وسهلا

حل

من فترة طويلة ماكتبت شي في المدونة (اخاطب الخلا والجن) بس فعلا من فترة طويلة و طويلة جدا ايام ماكان virtualbox يبتع لشركة sun قبل استحواذ اوراكل عليها كتبت موضوع في نقطة تطوير 🥺 -واحد من اعظم المنتديات في وقته (لا تتصفح الارشيف)- وفحوى الموضوع هو مشاركة مجلد بين الـ host و guest VM مع صلاحيات كاملة R/W

مشكلة

المشكلة كانت في وقتها ان عملية المشاركة البسيطة الافتراضية في VirtualBox لا تعطي صلاحية كتابة, ثم بدأت وقتها ابحث عن حل واتذكر شاركت في نقاش حول الموضوع اعتقد في احد صفحات sourceforge او موقع ثاني الله العالم, وكانت ثمرة النقاش وجود حل بمشاركة المجلد عن طريق الشبكة من ادوات vbox مباشرة, و بالرغم من بساطة الموضوع الا انه كان وقتها ثورة في المنتديات العربية وكان واحد من موضوعين (الاول كتبت عنه في 2011 وموجود في بدايات المدونة) كتبتها و تم نقلها ونشرها كعادة اعضاء المنتديات في ذلك الوقت لكن كان نشر ضخم و في اكثر من منتدى اجنبي والسبب تسهيل نقل سيرفرات bifrost 😅

تذكرت هذا الموضوع وانا اشتغل على احد المشاريع البرمجية البسيطة موخرا, انتهيت منه لكن ما اعجبني تصميم الكود واعدت تعديل هيكلة الكود 3 مرات خلال فترة قصيرة! more on that later

Continue reading

I’m weak at CI/CD

من بداية السنة الميلادية احتجت اسوي مجموعة تعديلات على بعض التطبيقات asp.net (core) وفي هذي الفترة القصيرة كانت عملية النشر للتعديلات مقرفة وتاخذ وقت, فكنت انقل ملفات واكواد عملية البناء build للسيرفر واعمل اعادة تشغيل للتطبيق 🤷🏻‍♂️

في عملية التطوير والتكامل المستمر CI/CD بمجرد عمل commit لاي تعديل لبرانش البرودكشن او release فالمفروض يكون عندك اتمتة بحيث تصير عملية الـ build بشكل تلقائي وفي حال نجاحها يتم نقل المخرجات بشكل تلقائي ايضاً CD لمكان عمل التطبيق بدون اي مجهود اضافي من المستخدم.

وانا ما فكرت من قبل اسوي اتمتة كاملة لهذي الفكرة, بعد الي صار معي في هالفتره قلت ابدأ اعمل حاجة بسيطة من خلال visual studio و دوكر بدون ادوات مخصصة لعمليات CI/CD لأني اصلا مشغل التطبيق على حاوية فبيكون اختيار جيد لي كبداية 🙄

Continue reading

من Google cloud إلى Digital Ocean وفتح المنافذ في راوتر 5G

قبل 3 سنوات نقلت هذه المدونة من استضافة مشتركة بسيطة إلى Google cloud platform -نختصرها gcp- , وكان الهدف الرئيس من النقل هو تجربة وتعلم خدمات السحابة بشكل فعلي وفي بيئة عمل production وكمان استفيد من مساحة تخزين اكبر و نقل بيانات اكبر وسعر اقل.

داخل السحابة الخيارات كثيرة لبناء المدونة منها التطبيقات او الحاويات (managed apps/contianers) وعملها بسيط وبتكون شبه جاهزة, لكن قررت ابني كل شي من الصفر باستخدام جهاز افتراضي VM من خلال Compute Engine في gcp.

اخترت اصغر خطة f1-micro وكانت تكلفتها الشهرية تقريباً 7 دولار مع 10GB وبدون احتساب نقل البيانات outbound traffic حيث تسعيرته متغيرة حسب الاستخدام.

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

Continue reading

من .Net Framework إلى .Net Core:كيف قللت التكلفة بنسبة 98%

في 2016 اطلقت مايكروسوفت إطار عمل جديد مبني من الصفر بإسم .net core (دوت نيت كور) والهدف منه تحويل إطار العمل الاساسي .net framwork (دوت نيت فريمورك) لبيئة مفتوحة المصدر, متوافقة وداعمة لمختلف الانظمة, خفيفة وقابلة للنقل بسهولة.

خلال السنة الماضية تم اطلاق النسخة الاحدث من إطار العمل الجديد بإسم .net 5 (دوت نيت 5) والتخلص من كلمة core وسيكون اطار العمل هذا هو الاساس الذي يتم تطويره واضافة خصائص جديدة له, وسيتم ايقاف تطوير .net framwork عند الاصدار 4.8 مع دعم تحديثات الامان فقط.

هذا الفرق بين النسختين بشكل عام, لكن ايش علاقة تقليل التكاليف؟ نذكر بعض تفاصيل النسختين بشكل سريع 💨🏃🏻‍♂️

Continue reading

كيف تستضيف تطبيقك محلياً Self-hosting

تستخدم خدمات اونلاين كثير؟ تدوين, بريد الكتروني او حتى تخزين ملفات على السحابة. أكيد كلنا نستخدم بعض الخدمات وبشكل يومي وتقريباً كلها خدمات جاهزة للاستخدام مباشرة و نقدر نبدأ في ارسال الايملات على Gmail او نكتب تدوينة على wordpress او نرفع ملفات على dropBox او حتى نغرد على تويتر, كل هذا نسويه بسهولة بمجرد التسجيل في الخدمة المرغوبة.

طيب.. تبي تبني احد الخدمات السابقة بنفسك من الصفر؟ تبي تسخدم سطر الاوامر وتعدل ملفات اعدادت؟ تبي كل فترة تسوي تحديثات يدوية وممكن تخبص عليك و تضطر تعيد كل شي من جديد؟ تبي وجع راس؟! 😬 لالا معليش مش وجع راس.. تبي تتعلم احدى طرق استضافة التطبيقات في الشركات؟ تبي تشغل تطبيق خاص فيك اونلاين؟ تبي تسوي لك مدونة زي هذي اونلاين بدون سيرفر خاص او بدون خدمة مدفوعة وتتحكم في كامل بياناتك؟

واحد من المصطلحات الشائعة في الوسط التقني وبين المطورين او اصحاب السيرفرات المنزلية هو Self-hosting وهذا هو موضوعي اليوم وبوضح ايش هو و الهدف منه وكيف تقدر تستفيد منه.

Continue reading

سيرفر جديد ونظام جديد بس هذي المرة Custom Build

👀
في احد هنا

سنتين ونص من اخر تدوينه وكانت خاصة بأيش؟ خاصة بالسنولوجي سيرفر و الي خدمني لأكثر من 5 سنوات ومازال، كان الوحيد والفريد من نوعه في حياتي وكان اساسي في استخدامات كثيرة والان احيل للتقاعد كسيرفر اساسي وصار الملاذ الاخير وقت المشاكل offline-onsite-last-resort-backup وحل مكانه R1Land والي بأتكلم عنه بعدين.

السيرفر القديم عبارة عن صندوق صغير يشيل 4 هاردسكات وغير قابل للترقية (باستثناء الرام) او اضافة كروت توسعه مع معالج entry-level بأربع انويه باستهلاك طاقة كلي 30-40 واط! بصراحة كان مدخل ممتاز لعالم الـ NAS ونظام تشغيل السنولوجي DSM كان خادمني بشكل كامل ومميز (كنت اظن) رغم السعر المرتفع بالنسبة للمواصفات, في موديلات بسعر معقول لكن حدها تكون nas فقط لاغير.

شغلت السيرفر القديم بثلاث هاردسكات فقط وكان في درج مشبوك مباشرة في الكهرباء وعلى كثر انقطاع الكهرباء ظل صامد ومعروف ان الهاردسكات حساسة جداً جداً لانقطاع الكهرباء المفاجيء, بعد 3 سنوات ونص تقريبا فللت الهاردسكات الثلاث وفي نفس الوقت طلع لي اول bad sector ⚡️ والي كان خلفه العشرات منهم , اضفت الهاردسك الرابع وكانت هذي لحظة الحقيقة تم اضافة الهاردسك وبدأت عملية إعادة بناء المصفوفة لأربع هاردسكات, تعتبر هذي العملية قوية/خطيرة على الهاردسكات وتشغلة بكامل طاقته وتأثر على الحياة الافتراضية له لكنها ضرورية حتى تعمل توسعة بالهاردسك الجديد ومع اخذ البادسكتورز بالحسبان………. TLDR تم الامر بنجاح, تم بدون مشاكل تقريباً.

في نص 2019 جاتني هذي الرسالة والمشكلة مو في قرب انتهاء المساحة المشكلة اني ماعاد اقدر اوسع نهائياً (REMEMBER! only 4 HDD) و من وقتها بديت التفكير في التوسعة, الخدمات الجديدة الي ممكن استخدمها و الأهم من كل ذا كيف اتجنب حالة مثل كذا في المستقبل.

Continue reading

تثبيت rtorrent على سيرفر synology باستتخدام docker

قبل فترة شرحت طريقة تركيب برنامج rtorrent وواجهة rutorrent بشكل يدوي وبطريقة كانت نوعاً ما متعبة وتحتاج فهم لسطر الاوامر خصوصاً عند التعطل احيانا مع التحديثات, بالرغم من وجود ملف تثبيت مباشر من خلال الاستور مقدم من مستودعات Synocommunity إلا انني واجهت ايضاً بعض المشاكل والتي قد تختلف من مستخدم لآخر ولصعوبة توضيح حلها بطريقة واضحة لذلك لم اتطرق لها.

تكلمت كثير عن حاويات لينكس هنا و هنا وانها تقنية رائعة في مجال dev-ops او حتى للمستخدم العادي, و من قبل سنة تقريباً بدأت استخدام docker بشكل مباشر على اي جهاز وفي اي مشروع اعمل عليه حتى لو مجرد تشغيل قاعدة بيانات لتفادي التثبيت وعوار الراس :)

دوكر منصة سطر اوامر بالكامل ولكن شركة synology وفرت GUI لعملائها في نظام تشغيلها وصار استخدامه سهل لاي شخص, الان بشرح طريقة انشاء حاوية تحتوي على برنامج التورنت الشهير rtorrent كذلك يحتوي على واجهة ويب rutorrent و معظم الاضافات المهمة مثل اضافة auto-dl وبطريقة بسيطة وبدون اي اوامر في الطرفية.

Continue reading

سوالف #6 مشروع التخرج و nodeJS

تكلمت في اخر بوست عن مشروع التخرج كمادة ومتطلباتها وطريقة اجتيازها وان المطلوب في الاخير هو تنفيذ عملي لفكرة تكون بشكل او بآخر حل لمشكلة او تطوير حل متوفر حالياً, فكرة مشروع تخرجي عبارة عن منصة خاصة بطلاب الكلية توفر كل مايحتاجة الطالب من مصادر تعليمية (كتب, سلايدات وغيرها) و برامج وبيئات تطوير (Netbeans, Eclips, Android Studio, MySQL,PacketTracer) و برامج Office وغيرها حسب حاجة الطالب وجدولة الدراسي, بمعنى ان كل طالب سيجد الكتب الخاصة بالمواد في الترم الدراسي الحالي وسيجد البرامج والادوات الي يحتاجها مع تلك المواد.

طبعاً ربط الكتب والبرامج مع المواد كان بناء على مادرسته خلال الاعوام السابقة وما احتجته كطالب ومن خلال نتائج الاستبيانات في فترة بناء التوثيق لمشروع التخرج.

كيف؟

التطبيق يجب ان يكون مرتبط  بقاعدة بيانات طلاب الكلية وعند استخدام الطالب للتطبيق (تسجيل الدخول باستخدام الرقم الجامعي) يتم جلب بيانات الجدول الدراسي للترم الحالي عن طريق الرقم الجامعي ثم تكون عملية انشاء بيئة العمل (تحميل الكتب والبرامج والادوات لنظام التشغيل), يتم تحميل سطح المكتب الخاص بالطالب ويكون جاهزا للاستخدام عن بعد عن طريق المتصفح  (_0

Continue reading