الثلاثاء، آذار ٢٩، ٢٠٠٥
يتحدث هذا {المقال} عن اسلوب جديد في البرمجة Language Oriented Programming. يقوم هذا الأسلوب الجديد في البرمجة على مبدأ السماح للمبرمج بدمج أي اضافات يجدها مفيدة الى لغة البرمجة التي يستخدمها. عندما نتحدث عن اضافات لا نعني مثلا Function جديد, بل القدرة على تغيير حتى الSyntax للغة البرمجة ليتناسب مع المبرمج.
الاثنين، آذار ٢٨، ٢٠٠٥
الأربعاء، آذار ٢٣، ٢٠٠٥
Programming : Self Documenting Code
أن تستطيع أن تكتب برنامج هذا سهل, أما أن تستطيع أن تكتب برنامج يفهمه غيرك فهذا من أحد معجزات العصر. أعجبني جدا مقال Martin Fowler بعنوان {Code As Documentation} ثم توصلت لهذه {الصفحة} التي تحوي الكثير من النصائح المتعلقة بهذا الموضوع.
الاثنين، آذار ٢١، ٢٠٠٥
Programming : Information Retrieval Library
هذا هو عصر الSearch, وجميع الشركات تحاول أن تقدم حلول تساعدك في البحث عما تريد (سواء في الHard Disk أو الWeb).
Lucene يقدم Framework تساعدك على توفير خدمة "استعادة المعلومات" في برامجك بطريقة ميسرة.
الأحد، آذار ٢٠، ٢٠٠٥
Others : Squeak
من أكثر المواضيع التي تثير اهتمامي هي تعليم الأطفال استخدام الكمبيوتر في الوطن العربي. أختي الصغيرة تعتبر حصص الكمبيوتر في المدرسة عبارة عن فرصة لتضييع الوقت (بالنسبة لطفلة في العالم العربي يوجد في منزلها DSL وتستخدم الVideo Conferencing تقريبا يوميا فهذا طبيعي). كل مايتعلمه الطفل هو كيف يستخدم الماوس ولوحة المفاتيح وقليل من الword.
أردت من فترة تعريب برنامج Squeak وطرحه ليتم استخدامه في المدارس (أوعلى الأقل المدارس الخاصة) حتى يتعلم الطفل منطق البرمجة (programming logic).
السبت، آذار ١٩، ٢٠٠٥
الجمعة، آذار ١٨، ٢٠٠٥
Programming : Visio Stencil and Template for UML 2.0
UML 2.0 تحتوي الكثير من التحديثات على الdiagrams المختلفة, مؤخرا احتجت أن أرسم Activity diagram لجزء معقد من أحد البرامج التي أعمل عليها وأنا من عشاق برنامج Visio لسهولته.
لقد وجدت المجموعة من الstencils التي تحوي الرموز الموجودة في UML 2.0 (ورموز أخرى موجودة في كتب تتحدث عن OOP مثل كتاب effective use cases) ... تستطيع تحميلها من هذا الموقع.
الأربعاء، آذار ١٦، ٢٠٠٥
Programming : Free UML tutorials
اذا كنت ممن يستخدم UML يوميا فسوف تجد هذه الtutortials لا تحتوي شرح متقدم عن الdiagrams المختلفة المتوفرة في الUML, ولكنها تصلح كبداية جيدة لمن يريد أن يستخدم UML لأول مرة.
الاثنين، آذار ١٤، ٢٠٠٥
Hardware : 1 treabit per square inch
من الصباح حتى الآن, أغلب المواقع تتحدث عن منتج IBM الجديد المسمى Millipede الذي أعلنت عنه في معرض CeBIT المبنى على تكنولوجيا MEMS التي تسمح بتخزين 1 terabit في كل انش مربع, أي مايعادل 25 DVD في مساحة تعادل مساحة طابع البريد.
عندما تقوم IBM بطرح Millipede في الأسواق سوف نحصل على SD card يستطيع تخزين 100 gigabytes !!!!
هذه أرقام خرافية وأنا لا أكاد اصدق ... مزيد من المعلومات في هذا المقال.
الجمعة، آذار ١١، ٢٠٠٥
Tips : Enabling Remote Desktop, remotely
حاولت بالأمس أن أقوم بعمل remote login على أحد الأجهزة في المكتب من المنزل. آكتشفت أني لم أقم باختيار Enable remote desktop connection على هذا الجهاز. بعد البحث في الإنترنت وجدت هذا الblog السريع الذي يشرح كيف تعمل enable للremote desktop على جهاز remotely.
ببساطة استخدم الأمر
reg add "\\machinename\hklm\system\currentcontrolset\control\terminal server" /f /v fDenyTSConnections /t REG_DWORD /d 0
الأربعاء، آذار ٠٩، ٢٠٠٥
Hardware : Virtualization strikes again, on the hardware front
يبدوا أني مغرم بموضوع الVirtualization, اليكم مقال أخر عن تكنولوجيا Pacifica من شركة AMD والذي سوف يسمح بتشغيل أكثر من نظام تشغيل على نفس الجهاز.
الجدير بالذكر أن AMD سوف تقوم بعمل Port لبرنامج Xen على Pacifica مجانا.
Others : The best of Google in one place
بإمكانك استخدام هذا الموقع لإستخدام خدمات Google المطورة دون أن تحتاج لتعرف عما يسمى بGoogle hacking.
Others : Bittorrent and now Blogtorrent
كان من البرامج التي لم يسمع بها أحد, لكن الآن هناك احصائية بأن ثلث الbits يتم نقلها على الإنترنت باستخدام BitTorrent, ولكن مع ذلك فإن عمل upload للملفات التي تريد أن تسمح للمستخدمين بتنزيلها وعمل الtorrent files لها ليس بهذا السهولة بالنسبة للweb admins. هنا يأتي دور Blogtorrent حيث يعمل على تسهيل كل هذه العملية.
الأربعاء، آذار ٠٢، ٢٠٠٥
Programming : Sign XML documents using .NET - Part 1
مؤخرا احتجت في أحد البرامج التي أقوم بكتابتها الي تبادل XML Documents بين الClient والServer.
أحد المتطلبات كانت حماية الDocuments من العبث أو التغيير والتأكد من أنها صادرة من الServer. كان الحل الأسهل هو استخدام Digital Signatures من أجل حماية الDocuments ,فيما يلي سوف أستعرض كيف يمكن عمل ذلك باستخدام لغة C Sharp.
يجب الملاحظة أننا لانقوم هنا بمحاولة اخفاء المحتويات الDocument بل القصد هوه حماية هذه المحتويات من العبث. لذلك في هذا المثال لا نقوم بعملية تشفير لكامل محتويات الDocument ولكننا في نفس الوقت نريد أن نحمي الDigital Signature وهو في العادة يكون مرفق في نهاية الDocument وهو الجزء الوحيد الذي يتم تشفيره.
يحتوي الDigital Signature على مايسمى بHash وهوه عبارة عن رقم يتكون من عدد كبير من الBits ويتم حساب هذا الرقم بمعادلة والمدخلات لهذه المعادلة هي الDocument التي نريد حمايتها. ان أي تغيير طفيف على أي حرف من الDocument ينتج عنه تغيير كبير في الHash المرفق في الDigital Signature.
ان استخدام الDigital Signature مبني على أساس وجود نوعين من الkeys أحدهما يدعى بالPublic Key والآخر بالPrivate Key للقيام بعملية التشفير, حيث يقوم أحد الطرفين باستخدام الPrivate Key الخاص به لعمل التشفير ولا يستطيع أحد القيام بفك التشفير الا باستخدام الPublic Key الذي يتم توفيره للطرف الأخر.يمكن توزيع الPublic Key بحرية على الانترنت حيث أن فك تشفير الDigital Signature لا يشكل أي خطر من تسرب المعلومات لأن الDocument في الأصل ليست مشفرة.
أحد الفوائد الأخرى من تشفير الDigital Signature باستخدام الPrivate Key هوه أننا بذلك نضمن أن الDocument صادرة من الServer الخاص بنا وليس من Server أخر. لأنه يستحيل فك التشفير الا باستخدام الPublic Key ولهذا يمكن التأكد بأن الSignature صادر من الServer الخاص بنا.
حسنا ندخل الآن في البرنامج بعد هذه العجالة المختصرة جدا لعمل الDigital Signatures. نريد أولا أن نحصل على زوج من الPublic والPrivate Keys. سوف أستخدم هنا الRSA Provider المتوفر من أجل الحصول على ذلك.
using System.Security.Cryptography;
namespace TestSignatrue
{
using System.Security.Cryptography;
namespace TestSignatrue
{
public class TestSignatureClass}
{private RSACryptoServiceProvider}
RSAKey = new RSACryptoServiceProvider();
private string privateKeyStr;
private string publicKeyStr;
public TestSignatureClass()
{privateKeyStr = RSAKey.ToXmlString(true);}
publicKeyStr = RSAKey.ToXmlString(false);
public string GetSignedDocument()
{.}
.
فيما يلي شرح البرنامج :
using System.Security.Cryptography;
تحتاج أولا الى اضافة الnamespace التالي System.Security.Cryptography وسوف تحتاج الى اضافة الReference اليه باستخدام الAdd refernce dialog.
private RSACryptoServiceProvider RSAKey = new RSACryptoServiceProvider();
توفر الDot Net Framework مجموعة من الClasses التي تقدم خدمات التشفير, يطلق على هذه المجموعة اسم Crypto Service Providers. كل من هذه الClasses يمثل Algorthim تساعد في الحصول على الKeys المستخدمة في التشفير وأيضا في عملية التشفير. في هذا المثال استخدمنا الRSACryptoSerivceProvider وهو يمثل الRSA Algorthim التي تسمح بالحصول على Private و Public Keys.
string privateKeyStr = RSAKey.ToXmlString(true);
string publicKeyStr = RSAKey.ToXmlString(false);
من أجل الحصول على الKeys يجب أن نقوم باستدعاء ال RSACryptoServiceProvider.ToXmlString واذا قمت بتمرير true للparameter الأول فسوف تحصل على الPrivate key في الxml string الذي تحصل عليه واذا مررت false فسوف تحصل على Public key فقط.
في مثالنا هذا نقوم بتخزين الPrivate key في المتغير privateKeyStr وسوف نستخدمه للحصول على الDigital signature ومن ثم نمرر الPublic key (والذي تم تخزينه في المتغيرpublicKeyStr) بكل حرية لكل من يريد أن يتأكد بأن الDigital signature المرفق هو صحيح ولم يتم العبث بمحتويات الDocument.
في المقال التالي سوف أشرح كيف يمكن استخدام المتغيرات هذه للحصول على Digital signature من أي document.












