الأحد، 18 ديسمبر 2011
تسجيل محاضرات ثلاثاء عمان التقني
الخميس، 8 ديسمبر 2011
مشاركتي في ثلاثاء عمان التقني
الأحد، 18 سبتمبر 2011
إنطباعتي عن مؤتمر ما يكروسوفت الأخير و نظام ويندوز ٨
لماذا ويندوز ٨ فمايكروسوفت لم تُحدث ضجة كهذه عند إطلاق و يندروز ٧ الجواب يكمن في الشيئين التاليين
- الأول : واجهة مِترو و هي خلاصة إعادة بناء واجهة الويندوز من البداية بشكل يجعلها قابلة للإستخدام مع شاشات اللمس و الأجهزة اللوحية و أُعْتُمِد في بنائها بشكل كبير على أفكار و واجهات Windows Phone 7 و التي لاقت استحساناً و اعجاباً معظم من جربها و اهتمت مايكروسوفت بجعل هذه الواجهة تعمل جنباً إلى جنب مع الواجهة التقليدية لويندوز.
- الثاني : و هو طبقة برمجية جديدة لبناء التطبيقات لويندوز تدعى Windows Runtime , لقد كانت مايكروسوفت تعاني من التخبط في السنوات العشرة الماضية في إختيار منهجية مناسبة لبناء التطبيقات لويندوز فهي منذ إطلاق الدوت نت في عام ٢٠٠٠ أطلقت ٣ منهجيات لبناء التطبيقات لويندوز من ال Windows Forms مرورا بال Windows Presentation Foundation إلى ال Silver Light و كل منهجية منها كانت تعود بخيبة الأمل على المطورين إذ لم تقم مايكروسوفت بإستخدام هذه المكتبات لبناء التطبيقات في ويندوز أو أوفيس بل على العكس من ذلك إعتمدت دوما على الأخ الأكبر و التاريخ العريق C++ و صديقها العزيز سيد COM+ و ذلك لعدم قدرة هذه المنهجيات على بناء برامج سريعة بالشكل الكافي و يبدو أن هذا هدى مايكروسوفت لإجراء إصلاح ضروري على طبقة الدوال (api)التي يستخدمها المطورين للتواصل مع نظام التشغيل، و عندما عرضت مايكروسوفت أول تجربة لويندوز ٨ قبل عدة أشهر أثارت غضب المطوريين حينما ذكرت أنه يمكن إستخدام جافا سكربت و HTML5 و ال CSS لبناء التطبيقات ويندوز ٨ فقط و هو ما جعل كثير من المطورين يعتقد بأن مايكروسوفت تخلت عن تشغيل الدوت نت على نظام التشغيل لكن الأن بعد وضوح الأمر تبين أنك تستطيع أن تبني تطبيقاتك لويندوز بإستخدام مجموعة مختلفة من التقنيات بدئا من C++ و مرورا بدوت نت حتى جافا سكربت و HTML . حيث سهلت هذه الطبقة الجديدة مناداة الدوال المختلفة لنظام التشغيل بدون صعوبة كما كنا نواجهة صعوبة كبيرة في هذا بالسابق.
الثلاثاء، 2 أغسطس 2011
حلقة جديدة من دوت نت عربي
الاثنين، 1 أغسطس 2011
أي تقنية أستخدم لأبني تطبيقي
في الأسبوع الماضي سألني صديق عن كيفية إختيار التقنية التي سأستخدمها لبناء خدمة أو موقع على الشبكة العنكبوتية (الويب) ؟ والحقيقة أن لا أحد يستطيع إعطائك الجواب الشافي، لكنّي في هذه المقالة أحببت أن أُلقي الضوء على بعض العوامل التي قد تؤثر بإختيار التقنية المناسبة .
- المتطلبات التقنية : مثل عدد الزوار و حجم البيانات المتوقع تبادلها عبر الشبكة و حجم البيانات المتوقع تخزينها والتعامل معها و مدى سهولة أو تعقيد بُنية هذه البيانات ، و من الطبيعي في هذه الحالة أن تُفضل تقنية على أخرى لأن بعض التقنيات تجعل من السهولة بمكان أن تعالج و تجد الحلول لبعض هذه المشكلات.
- الكلفة : هل تتوقع أن يُدر المشروع دخلاً ؟ و متى ؟ و إذا كان كذلك هل أنت مستعد للدفع لقاء التقنية التي ستستخدمها؟ و ما نسبة ما أنت مستعد لدفعة مقابل إستخدامها؟ تلك الأسئلة جميعُها يجب أن تجيب عليها خلال فترة إختيار التقنية.
- توفر الموارد البشرية: فمهارات فريق العمل و ما هو قادر علية و ماهي التقنية التي لدية خبرة بخفاياها ربما يكون من الأشياء الضرورية جداً و أحياناً يكون العامل الأهم ذلك أن كلفة تدريب فريق من المتخصصين ستكون عالية جداً عدا عن الفرق في الأجور لأنك إن إخترت تقنية غير رائجة ستدفع مزيداً من الأجور ليقبل المختصين العمل بهذه التقنية.
- تقنيات دوت نت.
- تقنيات جافا.
- تقنيات المصادر المفتوحة بإستخدام روبي أو بايثون.
- تقنيات مفتوحة بإستخدام بي أتش بي.
- المتطلبات التقنية : الثلاث تقنيات تمتلك القدرات الكافية لبناء التطبيق الذي أريد فأنا لا أتوقع الوصول إلى أكثز من ١٠٠ ألف مستخدم خلال السنوات الثلاث أو الأربع سنوات التالية.
- نأتي للكلفة : في حالة الجافا بإمكانك التطوير بأدوات مجانية لكنني أحتاج لخبراء في اللينكس و الخادمات الخاصة بالجافا لأني لا أعرف شيئاً عنها ، أما في المصادر المفتوحة فهي مجانية و يفضل إختيار تقنية مجتمعها كبير و ضخم كي لا تحتاج دعما مدفوعا ، و في حالة الدوت نت فمايكروسوفت تقدم لك حسابا للشركة أو حساب مطور يقدم لك مجموعة ضخمة من البرامج و أدوات التطوير مع الدعم مجاناً لمدة ثلاث سنين بعد ذلك أنت بحاجة إلى دفع حساب msdn بالإضافة إلى كلفة بيئة تشغيل الخدمة أو بإمكانك إستخدام مكتبة ASP.Net MVC المفتوحة المصدر و أدوات mono develop و عندها تستطيع تشغيل دوت نت على لينكس و هناك مشرع ناجح عمل بهذه الطريقة و هي ماي سبيس.
- الموارد البشرية : و هنا أنا أتكلم عن الوضع في الأردن و نسبة الدخول بين هذه المجتمعات في كل من الجافا و المصادر المفتوحة هناك عدد أقل من التقنيين و بالتالي فمعدل دخولهم أكبر نسبيا أما في حالة الدوت نت فأنت تستطيع الحصول على تقنين بكافة المستويات بدئا من طلاب الجامعات حتى المتقدميين في الخبره فعددهم أكبر نسبيا من التقنيات الأخرى بالأردن.
الثلاثاء، 7 يونيو 2011
حلقة دوت نت عربي رقم ١٩
الاثنين، 16 مايو 2011
إدارة المكتبات البرمجية NuGet
ربما إحدى أهم المميزات التي تعجب المطورين الذين يستكشفون عالم لغة روبي هي عملية إدارة المكتبات البرمجية في نظامك فهناك ما يسمى بال Gem وهي كال package في جافا أو DLL في الدوت نت حيث هناك موقع واحد يحتوي أحدث المكتبات التي تحتاجها وهو يدار من قبل مجتمع مطوريي روبي و هو موجود على هذا الموقع http://rubygems.org/.
لذا حاول الكثيرين نقل هذه التجربة لعالم دوت نت و كان هناك مشروع مثل HornGet الذي كتبت عنه في مدونتي الإنجليزية آو مشروع آوبن راب OpenWrap و مشروع نو Nu وهذا الأخير كان نال إعجاب العديد من مطوري الدوت نت لذا قامت مايكروسوفت بتوظيف الفريق القائم على المشروع و وضع المشروع تحت مظلة CodePlex.org و تم إعادة تسميتة بعد الإطلاق ب Nu Get.
إذا نو قيت هو ببساطة مجمع للمكتبات البرمجية المختلفة التي يحتاجه مبرمج الدوت نت من مكتبات مفتوحة المصدر وغيرها حيث تحصل على أخر تحديث من النسخة التي تريدها و بنقرات أو أوامر بسيطة تحصل عليها و تتخلص من عناء البحث عليها في الإنترنت و تنزيلها من مختلف المواقع.
كيف يعمل NUGET
- قم بزيارة الموقع التالي http://nuget.org/ و إضغط على هذا الزر
سيقوم يتحميل إضافة تعمل على أ نسخة من الفيجوال ستديو 2011
- الأن قم بإنشاء مشروع جديد من File=> New => Project و إختر Console Application و إختر الإعدادات كما يلي.
- تم من Solution Explorer تقوم بإختيار المشروع الذي أتشأته و تختار Add Library Package Reference كما يلي .
- فيخرج لك الصندوق التالي إختر Online من يسار الصندوق ثم إبحث عن المكتبة التي تريدها تم إضغط Install فسيتم إضافة المكتبة في ال Referances الخاصة بمشروعك وكمثال أنا قمت بإضافة NLog أداة تعقب سير عمل البرنامج المعروفة.
- الطريقة الأخرى لتنزيل المكتبة هو بالذهاب إلى View => Other Windows => package manager console فستظهر لك نافذة بأسفل الفيجوال ستديو و هي سطر أوامر للتعامل مع NuGet كما في الشكل التالي.
هكذا هو سطر الأوامر وهو يوفر طريقة أسهل لمن يفضلون سطر الأوامر حيث يتضمن ميزة إكمال الأوامر عندما تنقر علر زر Tap في الكيبورد.
وفي نهاية المقال أثني على هذا الجهد الجميل من مايكروسوفت لجعل الفيجوال ستديو البيئة الأفضل والأمثل للمبرمجين.
الثلاثاء، 16 فبراير 2010
إستخدام Using Block في سي شارب
تتميز الدوت نت .NET كغيرها من البيئات عالية المستوى بأننا لا نحتاج لإدارة الذاكرة فيها إذ يعمل ما يسمى بال Garbage Collector أو GC “ترجمتة الحرفية جامع النفايات” كل فترة من الوقت و يزيل الكائنات التي لم تعد تستخدم.
لكن خلال برمجتنا للتطبيقات نتعامل كثيرا مع كائنات غير مدارة (Unmanged) من قبل بيئة الدوت نت مثل بعض الدوال في نظام التشغيل او الإتصال مع قواعد البيانات أو الملفات المختلفة الموجودة على القرص الصلب و في هذه الحالة لا يعرف ال GC عن هذه الكائنات شيئا و بهذة الحالة و فرت لنا الدوت نت طريقة لنخبر بها ال GC بأن يقوم أيضا بإزالة هذه الكائنات و التخلص منها وتحرير الذاكرة التي كانت مستخدمة من قبل هذه الكائنات.
و في حالة و جود هذه الكائنات غير المدارة أو كائنات مدارة تستخدم كائنات غير مدارة نحتاج في تعريفيها إلى الوراثة من واجهة IDisposable التي توجب عليك إضافة دالة Method بإسم Dispose و بهذه الدالة نكتب الكود اللازم لتحرير هذه الكائنات و احد الامثلة الشهيرة في هذه المجال هو كتابة الكود المسؤل عن الإتصال بقواعد البيانات حيث يكتب كما يلي
//نقوم بوارثة واجهة IDisposable
public class DataAccess:IDisposable
{
//نعتمد على الواجهات في إنشاء الكائنات الخاصة بنا حتى لا تكون عملية تغير البرنامج
//إلى أي قواعد بيانات أخرى عملية صعبة
public IDbConnection DbConnection { private set; get; }
public DataAccess()
{
//الحصول على إعدادات الوصول إلى قواعد البيات من ملف الإعدادات
var connectionString = ConfigurationManager.ConnectionStrings["SqlConnection"].ConnectionString;
// إنشاء كائن الأتصال بقاعدة بيانات SQL
DbConnection = new SqlConnection(connectionString);
}
// دوال أخرى
//الدالة التي تفرضها علينا واجهة IDisposable
public void Dispose()
{
// سيتم تنفيذ الكود الموجود هنا عند منادة هذه الدالة أو عند إستخدامها مع Using Block
DbConnection.Close();
//نقوم هنا بكتابة الكود المسؤل عن تحرير المصادر غير المدارة مثل إغلاق الإتصال بقواعد البيانات
DbConnection.Dispose();
}
}
عندها نستطيع إستخدام ال Using Block إذ أننا لا نستطيع أستخدامة إلا إذا كان الفئة Class التي نستخدمها معه قد و رثت من واجهة IDisposable و لأريكم كيف يتم إستخدامه تابعو الكود التالي:
class Program
{
static void Main(string[] args)
{
//ننشئ كائن من الفئة التي ترث IDisopoable
using (var Db = new DataAccess())
{
//نكتب العمل الذي نريده
// Do Some Code Here
}// عن الخروج من هذه المنطقة ستجبر الدوت نت الفئة على مناداة دالة Disopose
// حتى لو حدث أي عطل خارج عن إرادتنا
}
}
و الأن بعدما تعلمت كيفية إستخدامه أرجو منك تطبيقها و الإستفادة منها في الحيات العملية و ان تكون ممن يعرفون كيف يستخدم الميزة المناسبة في المكان المناسب.
الجمعة، 25 ديسمبر 2009
حلقة جديدة من دوت نت عربي
نشر الصديق العزيز عماد العشي الحلقة الجديدة من دوت نت عربي مع مؤيد رجا الحلقة تتكلم عن تصميم قواعد البيانات , حلقة جميلة ورائعة و مليئة بالفائدة أنصحكم بسماعها.
وصلات اخرى:
- مشاركة عن مميزات فبجوال ستديو 2010 في منتدى VB4Arab.
الاثنين، 30 نوفمبر 2009
كتابة السيرة الذاتية و المقابلات للمبرمجين
مؤخرا كنا نحتاج إلى مجموعة من المبرمجين المبتدئين (بدون خبرة) في شركتنا فكنت أراجع مجموعة من السير الذاتية للمتقدمين كي أقابلهم فكان لي مجموعة من الملاحظات على طريقة كتابتها و على المقابلات أحببت أن أشارككم بها.
- السيرة الذاتية تخبرني من انت لذا يجب أن تكون مرتبة و أنيقة وهناك الكثير من الامثلة لقوالب جيدة و بالنسبة لي أرى أن معظم القوالب في مايكروسوفت أوفيس جميلة.
- لا تضع شيئا لست متمكنا منه أو على الأقل ضع مستو معرفتك به,فلقد فوجئت بالكثيرين يضع كل لغة او تقنية سمع بها ومثال على ذلك تراه يضع C, C++ , C# , JAVA, Java Script , VB.NET , عندما أرى هذا أسأل عن معلومات بديهية موجودة بأول جزء في أي كتاب يشرح تلك التقنية فلا يعرف, و مرد ذلك بالحقيقة بعود إلى أن الطالب يمر على هذا كله في الجامعة و لكن لنقص الكفائة الحقيقية في المدرسين أو في المتعلمين لا يستطيعون تغطتية إحداها كليا و ما يخرج به الطالب هو فتات من العلم لا يقيت البدن و لا ينفع العقل , و الحل أكثر من واضح كما ذكرت في تدوينة سابقة أن أفضل طريقة لتعلم تقنية جديدة هو الكتاب. مثال :
- C# Very good
- JavaScript Beginner
- C++ good
أسد لنفسك معروفا و أترك الكسل إلتقط كتابا يتحدث في تخصصك و أقرأه كاملا أنت مدين لنفسك بذلك
- قم بترتيب المعلومات بشكل جيد تعرف بنفسك اولا ثم تذكر هدفك العام من الحصول على الوظيفة ثم تذكر الشهادات العلمية الأحدث فالأقدم فتضع مثلا الماجستير أولا ثم البكالوريس ثم الثانوية العامة ولا تضع مجموعك إلا إذا كان مميزا.
- ثم تدرج مشاريعك الجامعية بذكر نبذه عن كل مشروع و اتبع النبذة بمجموعة المهارات التقنية التي إستفدتها من هذا المشروع ( سيقول البعض أنا لم أعمل أي مشروع و عذره هذا قبيح إذ لا توجد حامعة لا تضع مشروعا في نهاية المساقات الدراسية لأغراض التخرج) ما يهم المقابل هو إكتشاف الشغف لدى المتقدم بالبرمجة و المهتم سيحاول كتابة برامج و حل معضلات برمجية و ما إلى ذلك.
- لاتضع معلومات أو مهارات ليست لديك.
- في المقابلة يجب أن تظهر شغفك بالبرمجة ولا ترتبك و أبق واثقا من نفسك.
- إذا لم تعرف الإجابة قل لا اعرف لكن أذكر كيف تستطيع إيجادها و البحث عنها.
السبت، 26 سبتمبر 2009
عرض الكود في مدونات بلوغرز
كنت ابحث عن طريقة لعرض الشيفرة المصدرية source code بالمدونة و كنت أستخد سابقا إحدا الإضافات التي تدعم ذلك على محرري العزيز Window Live Writer لكنها لم تعد تعمل الأن على النسخة الجديدة :(.
لذا بحثت من جديد و لفت نظري إضافة تستخدمها كثير من المدونات التقنية إسمها SyntaxHighlighter و الجميل فيها أنها إضافة جافاسكريبت أي تستطيع تستخدنها في أي مكان ومثال على ذلك.
لذا قررت أن أستخدمها عند و أنا كما تعلمون أستضيف مدونتي على بلوغرز و هنا سأشرح كيفية إضافتها إلى بلوغر .
- فور دخولك لبلوغر إختر التخطيط –> تحرير HTML .
- خذ نسخة إحتياطية من القالب عن طريق حفظ قالب.
- ثم إبحث عن نهاية وسم Tag </head>d قبل نهايته ضع ما يلي .
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shCore.css' rel='stylesheet' type='text/css'/>
<link href='http://alexgorbatchev.com/pub/sh/current/styles/shThemeDefault.css' rel='stylesheet' type='text/css'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shCore.js' type='text/javascript'/>
<!-- add brushes here -->
<script type='text/javascript'>
SyntaxHighlighter.config.bloggerMode = true;
SyntaxHighlighter.all();
</script>
- الأن بعد إضافة هذا الكود في رأس القالب نريد أن نضيف ما تسميها هذ الإضافة ب فرشاة كي تلون الكود حسب اللغة المستخدمة و ضع هذه الكود مكان التعليق
<!-- add brushes here -->
- بالنسبة لي وضعت الفراشي التالية و هي ل HTML , XML , C#, Python , javascript و بإمكانك الإختيار من مجموعة واسعة من الفراشي هنا .
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushJScript.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCSharp.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushPython.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushSql.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushXml.js' type='text/javascript'/>
<script src='http://alexgorbatchev.com/pub/sh/current/scripts/shBrushCss.js' type='text/javascript'/>
- بكل بساطة تستطيع أن تضيف الكود الذي تريده لكن إذا أردت أن تضيف كود HTML تأكد أن يكون مشفرا يعني بدل > تضع < و ما إلى ذلك من علامات HTML و هناك خدمة بسيطة تفعل ذلك على هذا الموقع فتضع الكود الذي تريد عرضة هنا و تحولة.
لتكون نتيجة عرض ما الدالة التالية المكتوبة بجافا سكريبت
<pre class="brush:js">
function Sum(var1, var2)
{
var sum = var1 + var2;
//Return value;
return sum;
};
</pre>
كما يلي
function Sum(var1, var2)
{
var sum = var1 + var2;
//Return value;
return sum;
};
و أريد أن أذكر أن لن تستطيع أن ترى النتيجة النهائية إلا بعد نشر التدوينة .
الأربعاء، 23 سبتمبر 2009
هل أنت مبتدئ بالبرمجة ؟
أطلقت مايكروسوفت على بوابة المطورين الخاطبة بها MSDN قسما للمبتدئين بالبرمجة MSDN Beginner
تحتوي البوابة على أربعة أقسام مختلفة.
- قسم الويب : لتعلم البرمجة للويب بواسطة ASP.NET .
- قسم الويندوز: لتعليم برمجة الادوات والألعاب لويندوز.
- قسم الطموح : لتعلم المهارات اللازمة للهواة حتى يصبحون محترفين في البرمجة أو لمن يريدون الإنتقال من تقنية ASP الكلاسيكية أو بي أتش بي PHP إلى دوت نت (لا أعرف صراحة لماذا ما زال البعض يستخدم ASP Classic).
- قسم الأطفال: لتعليم الأطفال في المراحل الأخيرة من المدرسة البرمجة بطريقة مسلية وجذابة( بالمناسبة لا أعتقد أن لغات مثل C# أو JAVA أو فيجوال بيسبيك دوت نت أو حتى C++ لغات جيدة لتعليم البرمجة فهي تربك المتعلمين من كمية الكود المراد كتابتة أعتقد أن لغة مثل بايثون هي اللغة الأمثل لمثل هذا الامر ).
السبت، 19 سبتمبر 2009
مايكروسوفت والمصادر المفتوحة
في الأسبوعين الماضين قامت مايكروسوفت بإنشاء منظمة جديدة للماصادر المفتوحة Open Source بإسم CodePlex Foundation و هي شئ مختلف تماما عن موقع Codeplex.com لإستضافة المشاريع المفتوحة المصدر التابع لها أيضا.
وقد يستغرب الكثريين هذا الأمر لكن المتابعيين للأمور عن كثب يعرفون أن مايكروسوفت خطت عدة خطوات بإتجاه سوق المصادر المفتوحة فهي أنشأت رخصة مفتوحة خاصة بها كرخصة MIT و GPL تحت أسم MS-PL و التي تنص على حصولك على الكود الخاص بالبرنامج ولكن إذا عدلت علية فهي غير مسئولة عن أي شئ في هذا البرنامج. فأصدرت تحت هذه الرخصة عدة برامج منها
- WTL : (لا أعرف لماذا ما زال مستضاف في Source Forge ) الذي أستخدم في متصفح غوغل كروم .
- AJAX Control Toolkit : مكتبة الأجاكس الخاصة بمايكروسوفت.
- ASP.NET MVC : مكتبة ASP.NET الجديدة لكتابة التطبيقات الويب على طريقة Model View Controller.
ولنعود لموضوعنا حددت مايكروسوفت هدف هذه المنظمة ب
Enabling the exchange of code and understanding among software companies and open source communities
تمكين التفاهم وتبادل الشيفرة المصدرية بين الشركات و ومجتمعات المصادر المفتوحة المختلفة.
ماذا يعني ذلك ؟ من يعمل في شركات تطوير البرمجيات المعتمدة على شركة معينة مثل مايكروسوفت أو أوراكل أو أي بي أم يعلم صعوبة إقحام منتج مفتوح المصدر بمجموعة البرامج والمكتبات المستخدمة لتطوير الحلول و البرمجيات المختلفة , و الأسباب التي تستخدم كثيرة منها غير أمنة أو إذا وجد بها مشاكل برمجة من سيصلحها أو الخوف من التغيير و مشاكل الملطية الفكرية وما إلى ذلك.
كان حل ما يكروسوفت بالسابق هو أن تنشئ برنامجا يفعل ما يفعلة البرنامج مفتوح المصدر و الأمثلة كثيرة عندنا MS Test مقابل NUnit و هناك ASP.NET MVC مقابل Mono Rails و غيرهما,لكن مع هذه المنظمة ستساهم في زيادة ثقة الشركات التجارية بالبرامج مفتوحة المصدر لا بل ستتخطى ذلك إلى مشاركتها بالمشاريع مفتوحة المصدر سواء من خلال المصادر البشرية و حتى تصل إلى التمويل.
لذا قامت مايكروسوفت بإنشاء هذه المنظمة المنفصلة تمام عنها لتذويب الفواصل بين الطرفين و إيجاد أرضية تحمي مطوري البرامج الذين يعملون على برامج تجارية وبرامج مفتوحة المصدر من مشاكل الحماية الفكرية والمشاكل القضائية و ما إلى ذلك.
لكن المعرف أن مايكروسوفت تشارك بمنظمة Apache فلماذا تنشئ منظمة جديدة والجواب في الموقع الخاص بالمنظة حيث تعد بأنها ستلعب دورا مكملا للمنظمات الأخرى كموزيلا و أباشي وبايثون و غيرها و ستؤدي الدور الغائب في هذه المنظمات و الذي ذكرته بالفقرة السابقة.
عينت مايكروسوفت رئيس هذه المنظمة و مجلس إداري فيه شخصين من خارج مايكروسوفت و مجلس مستشارين به 5 من خارج مايكروسوفت في فترة إنتقالية حتى يتم تشكيل الهيكلية النهائية في غضون الثلاث أشهر القادمة.
وما زالت الكثير من الأمور حول هذه المنظمة غير واضحة و ستتضح خلال الفترة القادمة.
وصلات
- تحليل سكوت بيلوير حول المنظمة .
- مقال سكوت هانسلمن حول المنظمة.
- موقع المنظمة.
- بوابة مجتمع المصادر الحرة الخاص بمايكروسوفت.
الثلاثاء، 1 سبتمبر 2009
روابط 1 أيلول
- صديقي العزيز عماد العشي قد قام بنشر مقابلته مع الرائع محمد الميليجي وهذه هي الحلقة الخامسة من دوت نت عربي عن ال ORM و هي مكتبات تستخدم لتسهيل التعامل مع قواعد البيانات في البرامج التي تعتمد على تقنيات البرمجة كائنية التوجه OOP.
- و قد نسيت أن أعلن سابقا عن الحلقة الماضية من دوت نت عربي مع محمد زايد خبير ال Sharepoint من مايكروسوفت و تجدونها هنا.
- عقد في الشهر الماضي في النرويج مؤتمر مطوري النرويج ndc09 و قد كان مؤتمر مفيدا جدا و قد نشرت محتوياته على الإنترنت و هنا تجدون ملفات التورنت الخاصة بتحميل محاضراته المختلفة.
- محمد بدوي كتب عن كيفية تحصيل الخبرة أثناء الدراسة أنا أويده بالفكرة و قد إطلعت على عدة تجارب لأصدقاء عملوا على تحصيل الخبرة أثناء الدراسة.
الاثنين، 3 أغسطس 2009
مشروع لغتنا والتقنية
لقت اخر تدوينة والتي كانت عن اللغة العربية والتكنولوجيا صدى عند الاصدقاء و كانت التعليقات متنوعة , هذا دفعني الى التفكير بإيجابية و تبني خطوة عملية فقررت ان أقدم هنا بين أيديكم مشروعا لترجمة الكلمات التقنية لنناقشة سويا عله يرى النور و لكن هذا يعتمد على جهد افراد مستعدين للعمل على هذا القضية.
- المشكلة : الترجمة الحرفية للمصطلحات التقنية غير واقعية و وقعها على السمع غريب.
- الهدف: الخروج بمصطلحات عربية توصل الفكرة إلى القارئ بدون الإخلال بالمعنى.
- الأليات: هنا مجموعة من الاليات لتحقيق الهدف المطلوب و حل المشكلة.
- التواصل مع علماء اللغة المتخصصين المهتمين يالموضوع فإحدى المشاكل هي وجود هوة يجب ردمها بينهم وبين التكنولوجيا.
- إيصال المعنى المطلوب من الكلمات المراد ترجمتها لهم حتى يستطيعوا الخروج بكلمة تقابل المعنى.
- نشر النتيجة على الإنترنت (ربما من خلال مدونة لهذا الغرض) و من خلال مجامع اللغة العربية.
هذا تصوري المبدئي للمشروع و ارجوا منكم المشاركة في مناقشته و تطويرة علنا نعود به بفائدة على أمتنا.
ملاحظة: اذكر أنه كان كاتب بمجلة بي سي العربية عندما كانت عربية يدعى فداء ياسر الجندي كان يكتب في هذا المواضيع و له جهد طيب لكني لم استطع الحصول على طريقة للتواصل معه الإن سوى أنه يكتب في مجلة ليبية تدعى التقنية و ساحاول الحصول على طريقة التواصل معه منها.
تحديث : أشكر الأخ محمد شحروري لوضع بريد الأستاذ فداء, الذي حصلت عليه أيضا من مجلة التقنية الليبية.
الاثنين، 20 يوليو 2009
شيفرة مصدرية للقراءة !!
Learning to program is like learning to write good natural language. The best way to do it is to read some stuff written by masters of the form, write some things yourself, read a lot more, write a little more, read a lot more, write some more ... and repeat until your writing begins to develop the kind of strength and economy you see in your models.
تعلم البرمجة يكاد يكون مثل تعلم أي لغه بشريه حيث أفضل طريقة لتعلم اللغات البشريه هي قراءة بعض ما هو مكتوب من قبل أساتذة تلك اللغات و كتابة بعض الأشياء بنفسك و قراءة الكثير و كتابة القليل ثم قراءة الكثير و كتابة القليل حتى تبدأ كتاباتك في التطور لتصل إلى المستوى الذي تريده.
- DasBlog: برنامج التدوين الاول في عالم دوت نت فكرته ان يوفر بنية لمدونة تعتمد على الملفات البسيطة لتخزين محتوياتها فيه الكثير من الافكار الجميلة على الرغم انه اصبح قديما فبعض المشاكل التي يحلها مثل القوالب (Themes)اصبحت موجودة بشكل طبيعي و بشكل افضل من قبل المكتبة الاساسية في الدوت نت و هي خاصية تدعى بال (Master Page).
- SubText: برنامج تدوين اخر و لكنه على نطاق اوسع يدعم قواعد بيانات مختلفةو يصلح لإنشاء مجتمع تدويني.
- DotNetNuke: لم يتوقف هذا البرنامج عن إضافة الجديد و الجميل من الأفكار ليدفع به ليكون أفضل برنامج إدارة محتوى مفتوح المصدر في عالم الدوت نت.
- Storefront: قام الرائع روب كونري ببناء هذا البرنامج مع مجموعة من الشروح المسجلة علية لتعليم المكتبة الجديدة لبناء تطبيقات الويب في دوت نت ASP.NET MVC و التي تقدم إطار عمل Framwork شبية في بعض نواحيها ب Ruby On Rails و PHP Cake و Django و غيرها من المكتبات الجديدة حيث كان احد أفراد الفريق الذي قام ببنائها و على فكرة المكتبة ذاتها مفتوحة المصدر بالكامل و تم بنائها بالاعتماد على مراجعات مجتمع المطورين حول مايكروسوفت.
- C4F dev kit:في هذا ستجد مجموعة من البرامج الجميلة التي نشرت في دروس في مدونة Codeing 4 Fun تستطيع أن تتعلم فيها اشياء مختلفة مثل برامج تشارك الصور او التعامل مع البلوتوث من برنامجك.
- Witty: هذا برنامج للتراسل على تويتر Twitter مبني بإستخدام WPF لعمل واجه المستخدم.
- عماد العشي تحديث عماد كتب عن الموضوع هنا.
- محمد بدوي تحديث محمد كتب هنا عن الموضوع.
- زاهر غيبة تحديث زاهر كتب عن الموضوع هنا.
- شامخ تحديث وسيم كتب عن تجربته هنا.
- و محمد حجازي( أبارك لك فوزك بجائزة شبايك).
- المقالة العربية “ كيف تصبح هاكرا” – على فكرة اذا كنت تعتقد ان الهاكر هو المخترق و المخرب فعليك ان تقرأ المقال لأنه سيغير وجهة نظرك كليا.
السبت، 11 يوليو 2009
الجديد في SQL Server 2008
اليوم نشرصديقي العزيز عماد العشي الحلقة الجديدة من برنامجه الجميل دوت نت عربي, هذه الحلقة اتت مع احد اعضاء مجتمع جوردف JorDev الفاعلين و هو محمود مناصر يتحتدث فيها عن الجديد في Microsoft SQL Server 2008 حيث لدية من الخبرة ما يقارب ال 7 سنين في التعامل مع هذا البرنامج.
نرجوا لكم الإستمتاع و انت تستمعون إلى هذه الحلقة و أنا حاليا اقوم بإنزال الحلقة لأستمع لها.
الأحد، 5 يوليو 2009
كيف تستمر بالتعلم و تطور نفسك كمبرمج
إذا كنت مبرمجا فمن الطبيعي أن تعلم أنك في الوقت الذي تتوقف فيه عن التعلم تكون قد أعلنت عن وفاتك تقنيا !! لذا تجد المبرمجين يبحثون دائما عن طرق للتعلم بشكل اسرع و بفاعلية اكبر, و مع زيادة سرعة التطور التقني زادت طرق الوصول إلى المعلومة فإذا كانت بالامس القريب محدودة بالتعلم من الاقران او عن طريق الدورات أو الكتب , أصبح المجال لدينا مفتوحا على مصراعية, وليس هناك مستحيل في هذه المهنة على من يتعلم ويتابع التعلم بشكل مستمر لأنه إذا ما توقف سيجد نفسة يكاد يخرج كليا من السوق بعد فترة قليلة.
إذا كيف أتعلم وهناك الكثير من الطرق والمواد في الشبكة و كيف سأعرف الطريق ؟
و هنا تقع العقبة الكبرى في وجه المبرمج فكيف يتعلم؟ و كيف يتابع؟ هو بالكاد يستطيع أن ينهي عمله !! لذا ساتكلم عن آلية التعلم و يليها بعض المصادر التي أستخدمها.
- الكتب : سنويا تصدر الكثير من الكتب التفقنية في مجالات متعددة لكن هل يستطيع معضمها إفادتك فالكتب بالنسبة لي تنقسم إلى نوعين, النوع الاول الذي يعلمك كيف تكتب الشيفرة المصدرية بإستخدام لغة س أو ص و بإستخدام مكتبة ع أو ل و لا يبتعد اكثر من هذا و معضم الكتب تقع في ضمن هذا المجال, و هناك النوع الثاني الذي يعلمك كيف و لماذا و أين تستخدم هذه الميزة او تلك المكتبة و هذه هي الكتب المطلوبة و التي ترتقي بطريقة تفكيريك و تفيدك.
- تستطيع أن تخصص ساعة يوميا من عملك لتتعلم شيأ جديدا و نعم انا أقول عملك ولا تسمح لنفسك بالشعور بالذنب ابدا لذالك , لأنك ببساطة ستجد أن مديرك في العمل في يوم من الأيام عندما يقيمك يقول لك: إنك لا تتابع أخر التقنيات أوانت لا تتعلم أشياء جديدة ,و لكن ما ستتعلمة سيظهر على طريقة كتابتك للبرامج و هو ما يفيد العمل و يفيدك أنت, لذا لا بأس أن تخصص هذا الوقت يوميا للقراة والتعلم.
- هناك العديد من البرامج المصورة التعليمية ضمن ما يصنف كويب كاست أو سكرين كاست وهي موجودة على الإنترنت بكثرة من قبل عدة جهات,حيث يقوم أحدهم بشروح موضوع معين ضمن سلسلة أو في مرة واحدة قد تكون احيانا تسجيلا لمحاضرة فعلية أو تكون مخصصة للويب, لذا ببساطة تستطيع أن تنزل هذه البرامج و تشاهد احدها في كل أسبوع مرة على الأقل, تستطيع حتى أن تجمع مجموعة من زملائك في العمل لتشاهدوا أحدها في وقت الغذاء مثلا , أو تخصصوا ساعة من الدوام بالإتفاق مع إدارة عملكم.
- إنتمي لمجموعة المستخدمين في منطقتك هذا المهوم قليل لدينا في المنطقة العربية لكنه بدأ يتعزز في الاونة الاخيرة حيث بدات تجد مجموعة من المبرمجين الذين يعملون على تقنية معينة يجتمعون بشكل دوري لتبادل المعلومات و التعرف على بعضهم بعضا و ما إلى ذلك سأضع في هذه المقالة قائمة بمجموعات مستخدمي دوت نت التي أعرفها في المنطقة.
- المقابلات الصوتية مع المبرمجين حيث بامكانك انزالها من الإنترنت وو ضعها في الايبود خاصتك او هاتفك النقال لتستمع لها في طريقك إلى العمل مثلا.
- ثم نأتي للطريقة الاخيرة و هي قراءة الشيفرة المصدرية للبرامج , سيستغرب الكثيرون فأفول لهم ام تجدوا ان من أراد ان يحسن الكتابة يطثر من القراة لإمتلاك المفرادات والتحكم بها و لإمتلاك الأدوات الخاصة بها, و عندنا معشر المبرمجين ستجد أن الأمر مشابة يدخل الشاب من الجامعة إلى الشركة بدونخبرة تذكر ربما يكون بنى مشروع تخرجه و ربما كتب عدة مشاريع لأناس اخرين لكنه لا يكون على ذات الخبرة ببناء مشاريع كبيرة فيبدأ التعلم من الزملاء في العمل يقراء بشفريتهم ويكتب مثلهم , ولكن هذه قد يضره إذا كانوا يكتبون بطريقة خاطئة, لذا تستطيع أن تبحث عن برنامج معين من البرامج المفتوحة و تقراءه و تتعلم منه, و تعجبني سلسلة من التدوينات للمدون المشهور سكوت هانسلمن بعنوان “Weekly Source Code” إذ يقوم سكوت في كل تدوينة منها بذكر شيء لفت نظره في لغة ما أو في مكتبة برمجية ما أو في برنامج مفتوح المصدر أو بتطبيق فكرة معينة و انا انصح بمتابعة هذه السلسة كثيرا.
هذه كانت مجموعة من النصائح لكيفية التعلم أما الأن فساضع مجموعة من المصادر التي أستخدمه.
- مدونات : هنالك الكثير من المدونات الرائعة لكن هنا سأضع بعض أفضلها
- سكوت هانسلمن : سكوت من المشهورين في عام برمجة الدوت نت و هو مشارك ببرنامج مفتوح المصدر يدعى داس بلوغ و يعمل في مايكروسوفت.
- مجموعة Code Better : وعي مجموعة من المدونين الذين يتكلمون عن تطوير البرامج بتقنية دوت نت و بأستخدام الأدوات والمكاتب مفتوحة المصدر.
- مجموعة devlicio.us: و هي أيضا مجموعة من المبرمجين المهتمين بالويب و الدوت نت.
- طبعا بجانب المواقع الخاصة بالشركات المنتجة كموقع MSDN لمطوري مايكروسوفت.
- مواقع البرامج المرئية و السكرين كاست:
- dimecasts : موقع ينشر فيه مجموعة من المطورين ملفات فيديوة بمدة 10 إلى 12 دقيقة تتكلم عن تقنية معينة أو طريقة لحل مشكلة معينة.
- MSDN WebCasts : هنا ستجد مجموعة من المحاضرات الرائعة من قبل مطوري التقنيات المختلفة في مايكروسوفت.
- dnrTV : وهو نسخة الفيديو من البود كاست المشهور Dot Net Rocks حيث يقوم احد المبرمجين المختصين بشرح موضوع ما في ما يقارب الساعة.
- Virtual Alt .NET: هدا الموقع يعقد أجتماعات بشكل دوري تبث عن طريق office live meeting تستطيع أن تحضرها أو أن تحضرها على قناة الموقع في موقع مشاركة الفيديو viddler.
- برامج البود كاست (الصوتية الإذاعية).
- برنامج الصديق العزيز عماد العشي دوت نت عربي اول برنامج دوت نت عربي بالعالم (عماد ننتظر الحلقات الجديدة بعد حصولك على أدوات التسجيل الجديدة).
- Hansel Minutes : برنامج سكوت هانسلمن الاسبوعي فيه كثير من الفائدة و المتعة.
- Dot Net Rocks:اول برنامج إذاعي عن الدوت نت وصل إل حلقته السادسة بعد الأربعمئة.
- herding the code :مجموعة من المدونين المبرمجين يتحدثون في شتى القضايا في المجال.
- مجموعات المبرمجين الخاصة بدوت نت بالمنطقة او ما يسمى بال User Group:
- JorDev: مجموعة مستخدمي دوت نت بالأردن.
- PalDev: مجموعة مستخدمي دوت نت بفلسطين.
- dotNetWork:مجموعة مستخدمي دوت نت من مصر.
- DevLifeStyle:مجموعة مستخدمي دوت نت بالرياض
- DotNetBoom: مجموعة دوت نت بالكويت.
هذه المجموعات التي اعرفها أذا كنت تعرف مجموعة ليست مدرجة هنا رجاء اضفها بالتعليقات.
أرجو ان أكون قد قدمت مايفيدكم و ارجو ممن له ملاحضات او إضافات ان يشارك لنثري الموضوع أكثر.
الأحد، 29 مارس 2009
تلمبحات سي شارب #1
واحدة من المهام التي نحتاج لها خلال البرمجة هي معالجة النصوص (string manipulation ) هي عملية وصل و قطع و تعديل مجوعات النصوص مع بعضها البعض. و هنا أتكل مع عن جمع النصوص في الدوت نت هناك اكثر من طريقة لنستخدم هذه الخاصية و هي كالتالي علما باني ما يوجد هنا ينطبق على علميات معالجة النصوص الأخرى و أستخدمت الجمع كمثال لأشرح الموضوع.
- الطريقة الأولى عملية الجمع +.
هناك خاصية بالسي شارب تسمى (Operators Overloading ) حيثم يتم أعطاء وظائف أخرى لمعاملات الجمع والطرح و القسمة التي تعمل مع الارقام فقط, لكن في الدوت نت تم إعطائها وظائف اخرى و بالتالي نستطيع إستخدامها مع متغيرات النصوص (string variables ). نقوم بإستخدام معامل الجمع + لجمع نصين مختلفين ليصبحوا نصا واحدا كما هو واضح في المثال ادناه.
string firstStr = "FirstString";
string secondStr = "SecondString";
string result = firstStr + " " + secondStr;
نتيجة السطر الثاث هو تخزين القيمة التالية “FirstString SecondString” في المتغير result .
الطريقة الثانية نستخدم الدالة العامة String.Concat
حيث يوجد في الدوت نت بعض الدوال العامة المعرفة في فئات الأنواع (Class Type) الخاصة بها فمثلا الفئة ( Class ) التي تمثل النوع string هي String و بها تم تعريف عدد من الدوال (Method) المميزة بكونها Static و هذا النوع من المتغيرات و الدوال نستطيع أستخدامة والوصول إلية بدون إنشاء كائن (Instantiate an Object) على عكس المتغيرات و الدوال العادية.
لنعد إلى موضوعنا نستطيع ان نستخم هذه الدالة لجمع متغيرين أو أكثر و ممكن أن نستخدمها لجمع المتغيرين السابقية firstStr و المتغير secondStr كالتالي.
string concatResult = String.Concat(firstStr, secondStr);
- الطريقة الثالثة : أستخدام فئة StringBuilders . و هي فئة موجودة في ال namespace الذي يدعى System.Text و هي شبية جدا بالنوع string إذ انها تنشئ سلسلة نصية من الأحرف والرموز لكن الفرق الوحيد بينها و بين النوع string يكمن في أن الكائن الذي تنتجه قابل للتغير إذ أن الكائنات الناتجة من النوع string غير قابلة للتغير مطلقا هذا الفرق سنبين أهميتة فيما بعد و لأريكم الان كيف تستخدمو هذه الفئة في المثال التالي.
StringBuilder sb = new StringBuilder();
sb.Append(firstStr);
sb.Append(secondStr);
Console.WriteLine(sb);
حيث نعرف كائن جديد من نوع StringBuilder و نستخدم الدالة Append لكي نغير النص المخزن فيها و نظيف له كما في السطر الثاني و الثالث ثم نخرجه للطباعة.
حسنا ها قد عرفنا الطرق المختلفة لعملية جمع النصوص و معالجتها, إذا ما الفرق بين العمليات الثلاث؟ الفرق يكمن في السرعة.
فكما عرفنا سابقا أن النوع String غير قابل للتغير أي Immutable و هذا يقود لمشكلة في السرعة عند إستخدامه, إذ أننا عند محاولة تغير الكائن الخاص به مثل عملية الجمع أو تغير القيمة فإن ما تقوم به بيئة تشغيل الدوت نت هو إنشاء مساحة جديدة على الذاكرة و وضع القيم الجديدة بها و تغير مؤشرات القيم إليها. لذلك تشعر أنها لم تغير شيئا أما في الحالتين الاخريين على الرغم من أن الكائن من نوع stringغير قابل للتغير من قبلنا إلا أنه ليس كذلك بالنسبة لمكتبات الدوت نت نفسها إذ انها تستطيع التغير به كما تشاء.
و لأثبت ذلك قمت بكتابة برنامج يقوم بفحص السرعة للثلاث طرق و هو ببساطة جمله دوران ل 100000 مرة كيث أجمع أكون نص من قيمة الأرقام المتولدة و هذا هي الشفر المصدرية للبرنامج.
using System;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string firstStr = "FirstString";
string secondStr = "SecondString";
//string result = firstStr + " " + secondStr;
//Console.WriteLine(result);
string str="";
DateTime firstTime = DateTime.Now;
for (int i = 0; i <= 100000; i++)
{
str += i;
}
DateTime secondTime = DateTime.Now;
Console.WriteLine("for spend this time:" + (secondTime - firstTime).ToString());
string concatResult = String.Concat(firstStr, secondStr);
str = "";
firstTime = DateTime.Now;
for (int k = 0; k <= 100000; k++)
{
String.Concat(str,k.ToString());
}
secondTime = DateTime.Now;
Console.WriteLine("for spend this time String.Concat :" + (secondTime - firstTime).ToString());
StringBuilder sb = new StringBuilder();
firstTime = DateTime.Now;
for (int j = 0; j <= 100000; j++)
{
sb.Append(j.ToString());
}
secondTime = DateTime.Now;
Console.WriteLine("for spend this time for StringBuilders :" + (secondTime - firstTime).ToString());
Console.Read();
}
}
}
وكما ترون أقوم بحساب الوقت لكل عملية و طباعتة و هذه هي النتيجة عندما شغلته على جهازي ولاحظوا الفرق الهائل في الوقت بين إستخدام معامل الجمع و الطرق الأخرى.
for spend this time:00:01:42.4687500
for spend this time String.Concat :00:00:00.0312500
for spend this time for StringBuilders :00:00:00.0312500
إذا لماذا توجد الطريقة الاولى و أستخدمها؟ نستخدم طريقة الجمع بمعامل ال + في حالة معالجة نصوص بسيطة لكن عندما نعالج كميات كبيرة سنستخدم الطرق الأخرى. أرجوا أن أكون قد اكون أفدتكم بهذا الموضوع و للأسئلة والتعليقات يمكنك التعليق هنا.
الاثنين، 23 مارس 2009
مقابلتي في دوت نت عربي
هذا عنوان بود كاست ( برنامج إذاعي على الإنترنت ) أنشاه الصديق والاخ عماد العشي. يقابل في البرنامج عدد من المبرمجين العرب للتكلم عن موضوعات مختلفة تهم المطور العربي و خاصة مطورو الدوت نت. و الحلقة الأولى من البود كاست كانت معي :-)