الأحد، 10 أغسطس 2014

ميزات و عيوب الاعتماد علي آلة وهمية virtual machine في العمل

حينما تستخدم حاسوبك في إنجاز أحد الأمور التي تعمل عليها، فإنك في المعتاد ستستخدم نظام التشغيل المُنصَّب عليه و البرمجيات التي تم تثبيتها علي ذلك النظام، و هو الأمر العادي و الطبعي. و لكن هناك خيار مختلف يقضي بأن تقوم بتنصيب نظام تشغيل آخر علي آلة وهمية Virtual Machine، و أن تقوم بتنصيب البرامج التي تحتاجها علي ذلك النظام؛ بحيث تستخدم تلك الآلة للعمل كأنها هي حاسوبك الرئيس و ليست مجرد آلة وهمية !، و هي الفكرة التي قد تبدو غريبة و غير ذات جدوي في النظرة الأولي (خصوصاً إذا لم يكن لك باع طويل في بناء البرمجيات متعددة المنصات cross-platform)، إلا أن لها الكثير من الفوائد في أحيان معينة.
 
لذلك ففي هذا المقال سأتحدث عن فوائد و عيوب هذه الطريقة للعمل من وجهة نظري، و الجدير بالذكر أنني جربتُ هذه الطريقة لبعض الوقت (القليل جداً من الوقت في واقع الأمر)، مما يعني أن أغلب ما سأذكره هنا (إن لم يكن كله) ليس كلاماً نظرياً، بل هو نتيجة خبرة عملية حتي و إن كانت لفترة صغيرة للغاية.

مرحباً Swift، ما الذي أخَّرك حتي الآن ؟!

 
في مؤتمر WWDC 2014 الصاخب الذي عقدته Apple في الأيام الماضية كان هناك العديد من المفاجآت، منهن أن نظام mac os x صار قريب الشكل من نظام iOS (و هو الأمر الذي لا أخفي كرهي الشديد له، و ربما أخصص مقالاً قادماً لانتقاد هذا الأمر و أوضح فيه مدي استيائي منه). و لكن كان هناك الكثير من الأمور التي أسعدتني، و علي رأسها كان خبر إطلاق Apple للغة برمجة جديدة تسمي swift ستعمل كبديل للغة Objective-C علي المدي البعيد. و في هذا المقال أنوي أن أكتب بعض الفقرات التي أوضح فيها وجهة نظري لتلك اللغة الجديدة.

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

هل يمكن لبرمجيات الـNet. أن تصير محمولة كبرمجيات الـjava ؟

كما أفضتُ في الشرح في أحد المقالات السابقة، فإن من أكثر الأمور التي تجعلني أحب لغة الـjava أن البرامج المكتوبة بها لها القدرة علي العمل علي أنظمة التشغيل الشهيرة كلها بدون أي تعديل في الأكواد الرئيسة. بالطبع سيكون لزاماً عليك في أكوادك أن تراعي أن تلك الأنظمة تختلف فيما بينها في بعض الأمور، مثل مسارات الملفات و المجلدات، و بالتالي قد يكون مسار مجلد برنامجك (بعد أن يتم تنصيبه) في أنظمة الـWindows كالتالي:

C:\Windows\programfolder

بينما يكون علي أنظمة التشغيل شبيهة اليونكس unix-like (مثل توزيعات الـGNU\linux، و الـmac os x) كالتالي:

/usr/bin/programfolder
و هو ما يعني أنه يجب عليك لكي يكون برنامجك محمولاً portable أن تنتبه إلي مثل هذه الأمور جيداً، و أن تحتاط لها في أكواد البرنامج. و لكن بشكل عام فإن نفس الأكواد التي كتبتَها بالـjava ستعمل علي كل أنظمة التشغيل، و نفس ملفات الـjar (التي تمثل الملفات التنفيذية لبرامجك) ستعمل علي كل أنظمة التشغيل بلا مشاكل.

الـWindows فيه سم قاتل!… حقاً ؟!

 
 
 
قليل جداً من البرامج التي أستخدمها (أو أكون قد استخدمتُها) أثار إعجابي حتي تعلقتُ به عاطفياً، و لا أتذكر من تلك الفئة سوي الـVisual Studio و الـNetBeans و Kubuntu، ثم مؤخراً Windows 8 و تحديثاته. و أتذكر أنني كنتُ مع أحد أصدقائي في يوم من الأيام (حينما كنتُ في السنة قبل النهائية في الكلية) في أحد الحدائق، فأشار إلي مكعبات من القرميد مصفوفة علي شكل علامة المالانهاية في الرياضيات، فما كان مني إلا أن أشرق وجهي و قلتُ في سعادة “علامة الـVisual Studio” !، و لكم أن تتخيلوا إحساس ذلك الصديق ساعتها.
 
و نفس الأمر ينطبق علي توزيعة Kubuntu لسطح المكتب؛ حيث استخدمتُها لفترة طويلة و أثارت إعجابي إلي حد أن مجرد رؤية كلمة Kubuntu مكتوبةً في أي مكان يجعل قلبي يهفو ناحيتها. و لا زلتُ حتي اليوم أعتبرها أنضج التوزيعات المخصصة للمستخدمين العاديين؛ و السبب الرئيس وراء ذلك هو أنها تحوي كل البنية الأساسية التي ترثها من Ubuntu لكنها تضع واجهة الـKDE فوق كل ذلك، كبديل ممتاز لواجهة الـunity التي لا أحبها و أري أنها أضعف و أقل جمالاً (بالنسبة لي علي الأقل)، إذا ما قُورنت بالـKDE الغاية في النضج و الجمال و القابلية للتخصيص.

الدروس المستفادة من أزمة نزف القلب (3)

هذا هو المقال الرابع و الأخير في حديثنا عن أزمة نزف القلب heartbleed و الدروس المستفادة منها، و قد كتبتُ هذه الرباعية من المقالات بسبب أن تلك الأزمة نبهتني إلي بعض الأمور البدهية التي يحتاج الكثيرون للانتباه إليها، و كان من الممكن أن أطيل أكثر من ذلك لكنني آثرتُ السلامة و أن أكتفي بهذا القدر؛ حتي لا يعزف الناس عن قراءة هذه المقالات مللاً، فتفقد وظيفتها الأساسية و تصير كأنها لم تكن، و الكابوس الأكبر لأي كاتب (مبتديء كان أو محترف) هو أن يجده الناس مملاً و يعزفون عن قراءة ما يكتب.

الدروس المستفادة من أزمة نزف القلب (2)

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

السبت، 7 يونيو 2014

فرص أمام Google لتطوير منصة Blogger

أنا أعلم أنه كان من المفترض أن يكون هذا المقال تكملة للمقالين السابقين عن أزمة “نزف القلب heartbleed” التي تم اكتشافها مؤخراً في مكتبة OpenSSL مفتوحة المصدر، و لكن بما أن الأمر استغرق بالفعل مقالين سابقين، و بما أنه سيطول بعض الشيء و سأكتب عنه ما لا يقل عن مقالين آخرين، فقد رأيتُ أن أجعل بين تلك المقالات ذات الموضوع الواحد مقالاً يتحدث عن أمر مختلف؛ ليكسر حدة الملل و يجعلنا قادرين علي الاستفاضة في الحديث عن الدروس المستفادة من أزمة نزف القلب بدون كثير من التثاؤب و مغالبة النعاس.

الاثنين، 26 مايو 2014

الدروس المستفادة من أزمة نزف القلب (1)

في المقال السابق تحدثتُ عن ثغرة “نزف القلب heartbleed” التي تم اكتشافها في الفترة الماضية في مكتبة OpenSSL مفتوحة المصدر و ذات الشهرة الفائقة في عالم التشفير، و تحدثتُ عن ردود الفعل المختلفة لاكتشاف الثغرة و التي صدرت من أفراد و هيئات مختلفين، ثم عبَّرتُ في نهاية الأمر عن رأيي القائم علي أن الثغرات البرمجية يكاد لا يخلو منها برنامج سواء أكان مفتوح المصدر أو مغلقه، و سواء أكان ضخماً أو صغير الحجم، و سواء أكان يتم الإنفاق عليه بالملايين أو لا يُنفق عليه أي شيء؛ فالأمر الذي يعلمه كل المبرمجين أنه مهما بلغ الواحد منهم من البراعة و الذكاء فإنه يظل مجرد بشري له أخطاؤه و خطاياه، و حتي أفضل تصميماته و أكواده يظل فيها و لو هامش صغير من الثغرات، التي يمكن لمن هو أكثر علماً و/أو ذكاءً (أو حتي أقل علماً و ذكاءً!) أن يكتشفها قبله و يستغلها.

الأحد، 18 مايو 2014

عن نزف قلب المصادر المفتوحة

منذ فترة بسيطة اكتشف الباحث في الأمن المعلوماتي ”Neel Mehta” (و الذي يعمل في شركة google) ثغرة أمنية في غاية الخطورة في المكتبة البرمجية مفتوحة المصدر OpenSSL، و قد تم إطلاق اسم “نَزْف القلب heartbleed” علي تلك الثغرة. مما جعل الدنيا كلها تنشغل بالحديث عن الأمر ليل نهار، و مما لا شك فيه أنكم مثلي تشبعتم تماماً من كثرة المقالات التي قرأتموها و تتحدث عن هذا الأمر، مما قد يدفع الكثير منكم للتساؤل عن السبب الذي يدفعني إلي الكتابة عن ذات الموضوع الذي قتله الجميع بحثاً !.
 
في الواقع فإنني أحب أن أتحدث عن الأخبار و الأمور التقنية بعد فترة غير قصيرة من ظهورها و انشغال الناس بها، لستُ أتذكر إن كنتُ قد تحدثتُ من قبل عن أمر من الأمور التقنية في عُجالة أم لا، و لكن ما أدريه عن نفسي أنني أفضِّل أن أقرأ معظم (إن لم يكن كل) وجهات النظر عن المسائل التي تشغلني، ثم أدون بعض الأفكار عما قرأته، و بين فترة و أخري أعود لما كتبتُه لأعدِّل فيه بما يتفق مع الجديد الذي قرأتُه عن ذات الموضوع. خصوصاً في تلك الأحيان التي يكون فيها الموضوع خارج نطاق تخصصي، و/أو يكون شائكاً و يمثل حقل ألغام لكل من يريد الخوض فيه، و في الواقع فإن مسألة الثغرة التي تم اكتشافها في OpenSSL من أهم الأمثلة علي النوعين الأخيرين.

الأربعاء، 5 مارس 2014

مقدمة سريعة عن الحوسبة و البرمجة

توطئة:
 
هذه مقدمة بسيطة مختصرة تصلح لشرح الفكرة العامة لبعض الأمور و المفاهيم الأساسية المتعلقة بالحوسبة computing و البرمجة programming، و الهدف الرئيس من ورائها أن تكون هي نفسها مجرد توطئة للدخول فيما بعد إلي عالم التفاصيل التقنية المتخصصة رويداً رويدا. و لذلك حرصتُ أن تكون خاليةً قدر الإمكان من أية تفاصيل تقنية تتطلب أي نوع من أنواع المعرفة السابقة، مع الحرص علي تشبيه معاني المفاهيم و المصطلحات الحاسوبية المذكورة هنا بأشياء محسوسة من الواقع؛ لتكون الأمور أيسر في الاستيعاب حتي بالنسبة لمن ليست له أية خلفية تقنية قديمة *.