Archive for 29 يناير, 2008

لمبرمجي ASP.NET الذين يريدون برمجة تطبيقات Silverlight

29/01/2008

الكثير من مبرمجي ASP.NET و أثناء تعلمهم لـSilverlight يبدؤون بمقارنة كل سمة من سمات Silverlight بنظيرتها في ASP.NET، كيف نتعامل مع كذا، كيف نقرأ قيمة كذا، … إلخ.
هناك ناحية أساسية قرأت عنها و أردت التنبيه لها لأن الكثيرين لا ينتبهون لها رغم أهميتها، و هي سرّية الكود الذي تكتبه لتطبقات سيلفرلايت.

ما المشكلة؟
لشرح المشكلة سنتذكر الطريقة التي يتم تنفيذ تطبيقات ASP.NET بها، بشكل بسيط و مختصر، يقوم السيرفر بتنفيذ كود البرنامج و إظهار النتائج على شكل HTML يتم إرسالها إلى العميل ليقوم متصفحه بعرضها بالطريقة المطلوبة، أي أن “جميع” العمل يتم تنفيذه على السيرفر.
و أما بالنسبة لسيلفرلايت، الحال باختصار هو أن الكود و بعد أن تتم ترجمته إلى لغة MSIL يتم تخزينه على السيرفر على شكل ملفات DLL، و عندما يطلب العميل صفحة أحد تطبيقات سيلفرلايت، يتم إرسال الكود و ملفات XAML إليه لتقوم إضافة سيلفرلايت بتشغيلها على جهاز العميل نفسه.
ماذا يعني هذا؟ يعني أن أي تطبيق سيلفرلايت يمكن أن يخضع للهندسة العكسية و فك ترجمته Decompiling، مثله مثل أي تطبيق دوت نيت عادي، و هذا يعني بدوره أن “عليك” ألا تضع أي كودات لها أهمية (خورازميات خاصة بك، طرق التشفير، …) ضمن كود تطبيقات سيلفرلايت التي تكتبها.

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

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

Advertisements

هل Build تعني Compile؟ و مواضيع أخرى

23/01/2008

يطرح هذا السؤال العديد من مبرمجي دوت نيت، فلا نجد في Visual Stduio قائمة تسمى Compile، و نجد فيه قائمة تسمى Build تقوم في معظم الأحيان بمجرد عملية Compile، لذلك يبني البعض استنتاجاتهم أن Build تعني Compile.
و في الحقيقة أن هذا الاستنتاج خاطئ، فعملية Build تختلف تماماً عن عملية Compile، هذا الاختلاف هو أن الـCompile ما هي إلا جزء من أجزاء الـBuild، الأجزاء الأخرى قد تتضمن إنشاء Installer، نشر البرنامج إلى مكان ما، القيام باختبارات مختلفة عن المشروع، إخبار الفريق بالعملية، و غيرها…

و هاهي بعض الروابط التي وجدتها مفيدة :
أفضل إضافات تطوير المواقع لـInternet Explorer : لقد تعودنا أن نرى الكثير من الإضافات لمتصفح Firefox، و لكن قلما نرى إضافات لـIE.
أكثر من 50 مصدر لطلاب علوم الكمبيوتر : و هي تتضمن كل ما يحتاجون (أدوات، مراجع، نصائح، عمل، ..) في مختلف المجالات (حماية، ذكاء صناعي، برمجة، …).
40 سبب لموت البرمجيات : و كل سبب هو عبارة عن رابط لمقال آخر مفصل.
أفضل مئة لائحة بالـCheet Sheets : و كل لائحة بدورها تتضمن عدة Cheet Sheets في مختلف مجالات البرمجة، صفحة مفيدة جداً.
درس في MySQL : درس طويل و مفيد و مفصل لمن يريد أن يتعرف على هذا النظام الشهير.
أفضل 10 مواقع لمصممي الويب المستقلين (Freelancers).

مطوري برامج قواعد البيانات، مرجع رائع لكم!

20/01/2008

ما أتحدث عنه هو موقع بسيط يدعى ConnectionStrings، يوفر -كما يوحي اسمه- العشرات من قيم الاتصال (Connection Strings) للعديد من أنظمة تخزين قواعد البيانات و صيغ ملفات المعلومات (مثلاً ملفات نصية، ملفات Excel).
يمتاز الموقع بأنه يحوي أكثر من قيمة اتصال واحدة لكل مصدر للبيانات، فمثلاً ستجد أكثر من 30 قيمة للاتصال بـSQL Server 2005، كل واحدة حسب طريقة الاتصال و إعداداته، كما ستجد كود للاتصال بكل من #C و Visual Basic.NET، و هو يوفر شرحاً لا بأس به عن كل قيمة أيضاً.

أنصحك بزيارته و الاحتفاظ به في الـBookmarks لحين تحتاج إليه!

Javascript Intellisense مع Silverlight 1.0

19/01/2008

يبدو الإلمام بكل الخصائص و الإجراءات التي تلزم لبرمجة تطبيقات Silverlight 1.0 مسألة ليست بهذه السهولة، و خاصة لمن يتلمس طريقه في هذا العالم الجديد.
بشكل افتراضي، لا يوفر Visual Studio 2008 أي مساعدة مهمة للمبرمج فيما يتعلق بـIntellisense جاد، لذلك، ما سنتوقع الحصول عليه عند برمجة مشروع باستخدام الإصدار الأول من Silverlight هو Intellisense لا تزيد قوته عما يلي :
Default Visual Studio 2008 Javascript Intellisense
و أما مع استخدام الإضافة الرائعة Silverlight 1.0 Javascript Intellisense فسيبدو الأمر بهذه السهولة :
With Silverlight 1.0 Javascript Intellisense Project
الإضافة السابقة هي مشروع مجاني و مفتوح المصدر، مستضاف على موقع CodePlex، و هو يوفر سهولة كبيرة جداً لبرمجة مشاريع Silverlight باستخدام Javascript، من ميزات الإضافة الكبيرة أنك تستطيع بعد استخدام المشروع التخلص من مكوناته (أي عدم تضمينها في النسخة النهائية من المشروع) قبل توزيع التطبيق للاستخدام العام، و هذا يتم عن طريق أداة مرفقة مع النسخة الكاملة من الإضافة (بحجم 2,8 ميغابايت) تقوم بتخليص كود جافاسكريبت الذي كتبته من أي تبعيات لها.
قم بـتحميل الإضافة (أنصح بشدة بالنسخة الكاملة) و من ثم قم بتحميل مقطع الفيديو التعليمي و الذي سيعطيك معلومات عن استخدام هذه الإضافة و استخدام Silverlight 1.0 بشكل عام.
لاحظ أن هناك نسخة أحدث يمكنك الوصول إليها من القائمة على يمين الصفحة السابقة لذلك احرص على تحميلها.

Sun تشتري MySQL

17/01/2008

في صفقة جديدة من صفقات تلك الشركات الكبرى، أعلنت شركة MySQL أنه تم شراؤها من قبل شركة Sun Microsystems الشهيرة.

صفقة مثيرة فعلاً، و نقطة إضافية لمصلحة Sun، تهانينا!

Sun acquires MySQL

عودة إلى المدونة، و أخبار جيدة!

17/01/2008

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

و أما الأخبار الجيدة فهي رائعة فعلاً، فقد أعلن Scott Guthrie في مدونته الشخصية عن طرح الـSource Code للعديد من مكتبات إطار عمل دوت نيت، مما سيسمح للمبرمجين بالاطلاع على آلية عمله و عمل Debug لتلك المكتبات، و هي:

-.NET Base Class Libraries (System, System.CodeDom, System.Collections, System.ComponentModel, System.Diagnostics, System.Drawing, System.Globalization, System.IO, System.Net, System.Reflection, System.Runtime, System.Security, System.Text, System.Threading, …)
-ASP.NET (System.Web, System.Web.Extensions)
-Windows Forms (System.Windows.Forms)
-Windows Presentation Foundation (System.Windows)
-ADO.NET and XML (System.Data and System.Xml)

على نية من مايكروسوفت بطرح الـSource Code لمكتبات أخرى (مثل Workflow, WCF, LINQ, …)
و رغم ذلك ماتزال هناك محدوديتان، أولهما أن عليك أن تكون متصلاً بالإنترنت لتحميل المعلومات الضرورية من سيرفرات MSDN أثناء قيامك بالـDebug، و ثانيهما أن نسخة الكود هي للقراءة-فقط، فلا يمكنك تعديل الكود.
رغم ذلك، ماتزال تلك تجربة رائعة برؤية طريقة عمل دوت نيت، حتى أنك سترى تعليقات المبرمجين على الكود، رائع جداً!
لمعرفة كيفية الاستفادة من هذه الميزة الجديدة، قم بزيارة هذه المقالة، و بالمناسبة، إن واجهتك أية مشكلة في التعامل مع هذه الميزة يمكنك طرحها في القسم المختص في منتديات MSDN.