• الإعلانات

    • فيصل الحربي

      تسجيل عضوية جديدة في المنتدى   01/31/2016

      السلام عليكم ورحمة الله وبركاته  عزيزي العضو الجديد :  حاليا رسالة الإيميل لتأكيد صحة إيميلكم تذهب للبريد العشوائي ( جاري حل المشكلة )  فإذا لم تجد رسالة التحقق من إيميلكم في صندوق الوارد لديكم إتجه للبريد العشوائي ( JUNK)  وقم بتفعيل إشتراككم من هناك   

عبد العظيم بخاري

اعضاء
  • عدد المشاركات

    57
  • تاريخ الانضمام

  • تاريخ اخر زياره

السمعه بالموقع

47 عادي

عن عبد العظيم بخاري

  • الرتبة
    عضو
  1. قام طلاب جامعة النجاح الوطنية في فلسطين بإستخدام أداة كنكت الخاصة بxbox لإبتكار عصا ذكية قادرة على مساعدة العميان في التنقل داخل البيوت وخارجها بكل سهولة. مشروع التخرج الذي طوره كل من عبدالعظيم البخاري وعلاء الهدهد هي عبارة عن عصا للعميان تستخدم كنكت ليقوم بقراءة الغرفة وتكوين صورة ثلاثة الأبعاد ومن ثم تحديد الأماكن التي تصلح للسير والأماكن التي يجب الإبتعاد، ومن ثم بإمكان المستخدم أن يبدأ في تحرك العصا لتسير بشكل تلقائي إلى الأمام مع تنبيهه في حالة وجود أي عائق قد يمنعه من السير. بالإضافة إلى تكون خرائط ثلاثية الأبعاد يستطيع مستخدم هذه العصى أن يقوم بتسجيل الأماكن فمثلا حين يصل إلى غرفة الجلوس يقوم بإصدار أمر صوتي للعصا لتقوم يتخزين هذا المكان على خريطتها وفي المرة القادمة التي يريد فيها الشخص العودة إلى غرفة الجلوس عليه أن يصدر أمراً فقط وستقوم العصى بحساب أقصر الطرق ومن ثم تتحرك عجلاتها عبرالمحرك صغير الموجود في أسفلها لتوصلك إلى هدفك. العصا تحتوي أيضا على أزرار للتحكم بالسرعة كما توفر زراً يستطيع عبره المستخدم أن يطلب النجدة من أهله عبر إرسالة رسالة SMS إليهم. لاننسى أن هذا الجهاز عبارة عن مشروع تخرج لذلك مازال هناك مجال للتحسين حيث يريد مطوروا الفكرة أن يتمكنوا من إستخدام الهواتف الذكية وحتى الحوسبة السحابية في هذه الفكرة وهم يعملون الآن على النسخة الثانية من العصا والتي ترتبط بنظام GPS لتتمكن من أخذك إلى أماكن خارج المنزل، كما أنهم سيشاركون في مسابقة مسابقة إيميجن التي تقيمها مايكروسوفت كل سنة. المصدر هذا وقد أنهى قسم هندسة الحاسوب في جامعة النجاح الوطنية مناقشة مشاريع التخرج للفصل الأول من العام الأكاديمي 2011\2012 بظهور متميز للمشاريع المتعلقة بذوي الاحتياجات الخاصة، حيث تم تقديم ثلاثة مشاريع متعلقة بتسهيل التعامل اليومي للأشخاص الفاقدين القدرة على الكلام والقدرة على البصر. المشروع الأول قام الطالبان فيصل عليوي وعمر زعرور ببناء نظام يقوم بترجمة لغة الإشارة الخاصة بالصم والبكم إلى نص مكتوب أو مسموع، حيث ترتكز الفكرة على تأدية الإيماءات الخاصة بلغة الإشارة أمام كاميرا تلتقط البيانات وتبعثها إلى الحاسوب ليقوم بتحليلها ومعرفة المعنى المراد. الصعوبة – كما قال الطالبان- كانت في بناء نظام قادر على فهم جمل كاملة وليس كلمات منفصلة وهذا ما يقوم به النظام حاليا مع دقة عالية جدا وسهولة كبيرة في توسيع قاموس الكلمات الذي يحتويها النظام من خلال تدريبه على كلمات جديدة. يهدف هذا النظام أساسا إلى تسهيل حياة مستخدمي لغة الإشارة وجعل اندماجهم مع أناس لا يفهمون لغتهم أكثر سهولة. إضافة إلى ذلك يمكن استخدام النظام في مدارس تعليم لغة الإشارة كي يتعلم الطلاب الإشارات بطريقة ممتعة وسهلة. أما المشروع الثاني فقد قامت به الطالبتان ديمة الكيلاني و رسمية سمارة، وهو متصفح انترنت مصمم خصيصاً لفاقدي وضعاف البصر. الفكرة الأساسية من المشروع هي تقديم الفرصة لمستخدمي الانترنت من فاقدي البصر للاستفادة من جميع المزايا التي تقدمها شبكة الانترنت. وبسبب أن عدد فاقدي البصر في العالم عامة وفي فلسطين خاصة لا يستهان به، وفي عالم أصبح الاعتماد فيه على الانترنت أمر شبه أساسي جاءت الحاجة لتوفير هذا البرنامج، خاصة بسبب ارتفاع أسعار الوسائل البديلة المستخدمة لتسهيل عملية استخدام الحاسوب لفاقدي البصر. الميزات الأساسية في هذا المشروع هي ترجمة الكلام المدخل إلى نصوص، وتحويل النصوص المخرجة إلى كلام (هذه الميزة تدعم اللغة العربية والانجليزية)، وقراءة وتحليل المعلومات الواردة من الخادم إلى المتصفح، وذلك عن طريق ترتيبها بطريقة تجعلها أكثر فهماً للمستخدم حتى يستطيع المستخدم تكوين صورة عامة عن الموقع تجعل عملية تصفح الانترنت أكثر سهولة وسرعة. وقد عرضت الطالبتان خلال المشروع مقابلة قصيرة تحدث فيها رئيس مركز الحاسوب للمعاقين بصرياً في جامعة النجاح السيد أحمد حسين(وهو فاقد للبصر) تحدث فيها عن مدى صعوبة استخدام وغلاء البرامج المستخدمة في المركز، وقد أثنى السيد أحمد على عمل الطالبتين وركز على أهمية هكذا مشاريع والتي تعنى بهذه الفئة من المجتمع. أما المشروع الثالث فكان من عمل الطالبين عبد العظيم البخاري وعلاء الهدهد، حيث قام الطالبان ببناء نظام للأشخاص الفاقدين القدرة على الرؤية. حيث قاما بتطوير نظام يقوم بمسح المكان الموجود فيه الشخص وبناء مجسم ثلاثي الأبعاد له. تتم الاستفادة من هذه المعلومات في بناء خارطة للمكان داخل الحاسوب من خلالها يتم توجيه الشخص عن طريق عصا ذات عجلات تسير اوتوماتيكا وتتخطى العقبات أمامها. يمكن للمستخدم إعطاء أوامر صوتية للعصا مثل التقدم للامان أو الالتفاف أو الرجوع للخلف وخلال هذه العملية تقوم الحساسات المستعملة في النظام بفحص فيما إذا كان هناك أية عوائق في الطريق وترشده إلى طريق آخر. يذكر أن هذه المشاريع قد تمت تحت إشراف الدكتور أشرف عرموش المدرس في قسم هندسة الحاسوب في الجامعة. http://www.najah.edu/ar/node/31049
  2. عند وضع حقول static داخل اي نوع فيجب علينا التأكد من تهيئة تلك الحقول قبل انشاء اي instance من ذلك النوع. في الواقع يوجد هناك طريقتين لتهيئة حقول static وذلك عن طريق التهيئة المباشرة الشائعة أو عن طريق staic constructor والذي هو عبارة عن فنكشن خاص تمتاز به لغة C# يتم تنفيذه قبل استدعاء لأي ميثود او متغير او property لاول مرة في الكلاس. يمكننا استعمال static counstructor لتهيئة حقول static مما يعطينا قابلية اجراء اي عملية ما قبل تهيئة هذه الحقول او تهيئة الكلاس بشكل عام. فلا يجب عليك استعمال الconstructors العادية أو اي فنكشنات خاصة او اي شكل اخر لتهيئة متغيرات static في برامجك. سننظر الان للطريقة الشائعة لتهيئة متغيرات static في كلاس ما حيث تعتبر هذه الطريقة الاكثر استخداماً من قبل المطورين , فعندما تحتاج لحجز موقع في الذاكرة لأي حقل من نوع static استخدم الطريقة الشائعة اما اذا احتجت لبعض العمليات اللازمة لتهيئة متغيرات static فعليك بالstatic constructor. يمكننا ببساطة تهيئة انواع static بساطة كالاتي: public class MyClass { private static readonly MyClass myField = new MyClass(); public static MyClass MyField { get { return myField; } } private MyClass() { } // باقي الكلاس } يمكننا ايضاً استعمال static constructor في حال احتجنا لعمليات اكثر تعقيدا من اجل تهيئة تلك المتغيرات كالاتي: public class MyClass2 { private static readonly MyClass2 myField; static MyClass2() { myField = new MyClass2(); } public static MyClass2 MyField { get { return myField; } } private MyClass2() { } // باقي الكلاس } يقوم CLR باستدعاء static constructor بشكل تلقائي قبل اول وصول للAppDomain. يمكنك أن تعرف static constructor واحد فقط داخل كلاسك ويجب أن لا يأخذ أي باراميتر وذلك لأن استدعاء هذا الconstructor يتم من قبل CLR. يجب عليك أيضاً أن تأخذ حذرك من الإستثناءات exceptions التي قد تحصل داخل static constructor حيث انه اذا حصل اي استثناء فإن CLR سيقوم بايقاف عمل برنامجك لإنه لو لم يقم بذلك فإن الكودات التي تحاول انشاء النوع سوف تفشل حتى يتم تفريغ ما في الAppDomain وبالتالي لن يستطيع CLR تهيئة النوع عن طريق تنفيذ static constructor ولن يحاول القيام بذلك مرة اخرى ايضاً لذلك لن يتم تهيئة النوع بشكل صحيح ولذلك تم منع ذلك عن طريق ايقاف البرنامج من قبل CLR. معالجة الإستثناءات هي اهم سبب يجعلنا نستخدم static constructor بدلاً من الطريقة المباشرة في التهيئة لانك في تلك الطريقة لن تستطيع الامساك بالاستثناءات ومعالجتها اما مع static constructor فيمكنك ذلك كالاتي: static MyClass2() { try { myField = new MyClass2(); } catch { // نعالج الخطأ هنا. } } اذا يمكننا تهيئة حقول static بالطريقة المباشرة الشائعة أو باستعمال static constructor وكلتاهما طرق واضحة وسهلة تمت اضافتهم إلى C# لازالة الصعوبات المتعلقة في التعامل مع متغيرات static التي تواجهها اللغات الاخرى. عبد العظيم بخاري http://www.el-bukhari.com/2011/04/c-4-static.html
  3. حتى أنت يا مايكروسوفت؟

    السلام عليكم اعتقد أن على منتقدي الإكسبلورر تجربة الإصدار الأخير الذي صدر قبل ايام. لن اقول انه افضل من بقية المتصفحات الاخرى لان هذا الامر يحتاج إلى دراسة ومقارنة في مختلف الجوانب. لكن يمكنني القول أنه متصفح ممتاز وسريع ويختلف 180 درجة عن الاصدارات السابقة ويستحق وضعه ضمن افضل المتصفحات الموجودة حالياً بعض الدراسات الحديثة التي اجريت على اخر اصدار: http://www.computerworld.com/s/article/9214674/Internet_Explorer_9_speeds_past_the_competition?taxonomyId=167&pageNumber=2 http://www.it-networks.org/2011/03/17/internet-explorer-9-is-released-should-you-switch/
  4. محتويات المقالة : - التعرف على منصة Windows Azure. - بناء وتجريب ونشر التطبيقات باستعمال Windows Azure. - تخزين البيانات في الجداول والblobs والqueues الخاصة ب Windows Azure. - استعمال SQL Azure في استضافة قواعد بياناتك على السحب. - فهم طبيعة عمل AppFabric. ازداد في الفترة الاخيرة الإهتمام بمبدأ الحوسبة السحبية Cloud Computing , وقد تبنى هذا النوع من التقنيات عدة شركات عالمية مثل جووجل وامازون اضافة لوجود عدة شركات تستعد للدخول لهذا السوق . اما دخول شركة مايكروسوفت اكبر شركة برمجية في العالم فقد كان عن طريق منصة عمل Windows Azure حيث اصبح بإمكانك انشاء تطبيقات جديدة يتم استضافتها على السحابة أو تحويل تطبيقاتك وبرامجك الجاهزة واي service قمت بانشاءها سابقا لكي يتم استضافتهم على السحابة, وكل ذلك باستعمال Visual Studio 2010. لن نتطرق كثيراً لمعنى الحوسبة السحبية بتفاصيلها لكن من الضروري أن تعرف عزيزي القارئ أن مايكرسوفت قد حضرت سيرفرات خارقة الأداء في احدى المناطق المجهولة في الولايات المتحدة الأمريكية , حيث يمكنك تشغيل تطبيقاتك على تلك السيرفرات "والتي سنسميها بالسحابة". تمتاز البرمجة على السحب بعدة مميزات تبشر بمستقبل مبهر لهذه التقنية , فقوة وسرعة تلك السيرفرات الموجودة على السحب تجعل اداء برامجك عالي المستوى اضافة لنسبة توفره العالية للمستخدم بدون اي انقطاع . احد الأسباب الاخرى المهمة هو امكانية زيادة وانقاص حجم موارد النظام من اجل تلبية الطلب على تطبيقك, بمعنى أنه في حال زيادة استعمال تطبيقك فإنك لن تحتاج للخوف على موارد النظام لإنها ستزداد بشكل ديناميكي لتلبية حاجة تطبيقك . يبقى السبب الأهم لنمط الحوسبة السحبية هو تقليل التكلفة عليك بكل تأكيد. سنتكلم في هذه المقالة عن ثلاثة امور رئيسية : منصة عمل Windows Azure و SQL Azure و AppFabric. تقوم منصة عمل Windows Azure باستضافة تطبيقات الويب الخاصة بك وتعطيك امكانية تغيير عدد الinstances التي تعمل في ان واحد بشكل ديناميكي. وتقدم لك هذه المنصة ايضاً خدمات تخزين على شكل جداول وblobs و queues . يقدم لك SQL Azure خدمة استضافة قواعد بيانات على السحب. يمكنك استعمال AppFabric للتحقق من المستخدمين والتحكم في الوصول إلى خدماتك وتطبيقاتك . ويسهل عليك ايضاً مهمة عرض الخدمات من داخل مؤسستك. منصة عمل Windows Azure كما هو الحال مع اغلب تقنيات مايكروسوفت فإن البدء في العمل على منصة Windows Azure سهل جداً ولا يحتاج منك إلا لانشاء تطبيق جديد في الفيجوال ستديو 2010 ومن ثم بناء هذا التطبيق وبعدها تقوم بتشغيله وتجريبه ونشره للسحب. عند النقر على New Project في الفيجوال ستديو 2010 ستلاحظ وجود خيار جديد باسم Cloud والذي يحتوي على قالب واحد اسمه Windows Azure Project. اذا لم تجد قالب المشروع عليك تحميل الأدوات من هذا الرابط : http://www.microsoft.com/web/gallery/install.aspx?appid=WindowsAzureToolsVS2010 بعد اختيار مشروع Windows Azure Project فستأتيك نافذة من اجل اضافة Role واحد او اكثر إلى تطبيقك. يمكننا تجزئة مشروع Azure إلى عدة Roles بناء على نوع العمل الذي سنقوم به في هذا التطبيق وبكونه يقبل مدخلات من المستخدم أو لا. فWeb Roles تقبل مدخلات المستخدم عن طريق اتصال inbound (مثل http على البورت 80). بينما لا تقبل Worker Roles ذلك. ولهذا الأمر يجب علينا استخدام Web Role من اجل قبول البيانات خاصة عندما نريد انشاء موقع أو خدمة ويب. اذاً فمهمة Web Role هي تسليم البيانات الواردة من المستخدم إلى queue على سبيل المثال أو إلى Worker Role والتي تحتوي على اي عملية معالجة نحتاج لتنفيذها على تلك البيانات. وجود هذا الفصل بين الطبقتين يعطينا امكانية تطوير وتحسين وتكبير برنامجنا كالمطاط. نعود الان لمشروعنا ونختار ASP.NET Web Role و Worker Role عن طريق اختيارهم من القائمة على اليسار والضغط على السهم الأيمن. عند الضغط على رمز التعديل edit على الrole المختار فإنه يسمح لنا بتغيير اسمه قبل الضغط على OK لاتمام عملية انشاء المشروع. كما تلاحظ في الصورة التالية فإن التطبيق الذي تم اضافته يحتوي على مشروع لكل role قمنا باختياره في الخطوة السابقة (CloudFront و CloudWorker). هناك ايضاً مشروع اضافة اسمه MyAzureApplication والذي يقوم بتعريف قائمة الroles اضافة لمعلومات اخرى تتعلق بتطبيقك. مشروع CloudFront هو ببساطة عبارة عن تطبيق ويب ASP.NET, فإذا قمت بالضغط بالزر الأيمن على اسم هذا المشروع واخترت Set as Startup Project فإن تطبيقك سيتحول لمشروع ASP.NET عادي. اما مشروع CloudWorker قهو عبارة عن class library بسيطة تحتوي على كلاس واحد اسمه WorkerRule والذي يحتوي على نقطة الدخول للworker. حتى نشغل تطبيقنا يجب أن نتأكد أن مشروع MyAzureApplication هو المشروع الإبتدائي في تطبيقنا (يكون لون اسمه غامق فإذا لم يكن كذلك قم بالضغط بالزر الأيمن على اسم هذا المشروع واختار Set as Startup Project). بعد ذلك نقوم بالضغط على مفتاح F5 من اجل بدء الdebugging. في حال كانت هذه المرة هي الأولى في تشغيل تطبيق Azure فسوف تلاحظ ظهور صندوق حوار يقوم بتهيئة الDevelopment Storage وهذه العملية تحتاج لدقيقة أو دقيقتين حتى تنتهي, وعندما تنتهي ستلاحظ ظهور ايقونتين على الtaskbar الخاص بالويندوز. تسمح لك الأيقونة الأولى بالتحكم في خدمات الDevelopment Storage والتي هي عبارة عن مجموعة تتكون من ثلاث خدمات محلية تمثل طرق التخزين المتوفرة في بيئة استضافة Azure وهم الجداول tables و blobs و queues. اما الأيقونة الثانية فتسمح لك بمراقبة الDevelopment Fabric وهو نسخة محلية طبق الأصل لبيئة استضافة Azure الموجودة على السحب حيث تسمح لك بتشغيل تطبيقك وعمل debug له. ملاحظة هامة: تم تغيير بعض التسميات في الإصدار الأخير للفيجوال ستديو 2010 , فاصبح اسم الDevelopment Fabric هو Windows Azure Compute Emulator واصبح اسم الDevelopment Storage هو Storage Emulator . ويمكن الوصول للخياران الذين دمجا في ايقونة واحدة عن طريق الضغط بالزر الايمن على تلك الأيقونة ومن ثم اختيار احد منهما لتشغيله. هذا الشرح تم عمله على التسميات القديمة مع العلم أنه لا فرق في الوظائف بينهم. بعد أن يتم تهيئة الDevelopment Storage فإنك ستلاحظ أن صفحة Default.aspx الموجودة في مشروع CloudFront قد تم عرضها في المتصفح, وعلى الرغم من أنك ترى صفحة واحدة فقط قد تم عرضها في المتصفح إلا أنه في الواقع يوجد عدة instances من الwebrole تعمل كلها في ما يسمى Development Fabric. التعرف على Development Fabric لو نظرت لمشروع MyAzureApplication فإنك سترى ملفين يقومان بتعريف الattributes الخاصة بتطبيقك. يقوم الملف الأول ServiceDefinition.csdef بتعريف التركيب والattributes للroles التي قمت بانشاءها في تطبيقك, فعلى سبيل المثال لو احتاج احد الroles الذين انشأتهم للكتابة على نظام الملفات في القرص فيمكنك وضع شرط على الproperty المسماة LocalStorage ومن ثم تحدد صلاحيات وصول الrole إلى كمية صغير من مساحة القرص من اجل كتابة وقراءة الملفات المؤقتة. يقوم هذا الملف ايضاً بتعريف اي اعدادات تحتاجها الrole في وقت التشغيل, فبمجرد تعريف الإعدادات فإنك ستحصل على طريقة عظيمة لجعل الroles الخاصة بك متكيفة في وقت التشغيل دون الحاجة لاعادة بناءهم ونشرهم. يعرف الملف الثاني ServiceConfiguration.cscfg اعدادات وقت التشغيل للroles وهذا يتضمن عدد الinstances التي يجب أن تعمل لكل role اضافة لاي اعدادات قمت بتعريفها في ملف ServiceDefinition. اذا قمت بتعديل لأي من القيم الموجودة في ملف الإعدادات هذا (على سبيل المثال قمت بتغيير قيمة الattribute المسمى count للعنصر Instances إلى 4 لكل الroles) ثم قمت باعادة تشغيل التطبيق فسوف يتم العمل بالإعدادات الجديدة في الDevelopment Fabric المحلي. اذا قمنا بالضغط بالزر الأيمن على ايقونة Development Fabric الموجودة في شريط مهام الويندوز ثم قمنا باختيار Show Development Fabric UI فسوف ترى تمثيل ترتيبي للتطبيقات التي تعمل ضمن Development Fabric كما هو مبين في الصورة التالية: لاحظ MyAzureApplication الذي يتضمن الroles الذين قمنا بانشائهم CloudFront و CloudWorker. لاحظ أنه يمكنك رؤية عدد الinstances التي تعمل في كل من الroles وذلك على شكل نقاط خضراء والتي قمنا بتحديد عددها إلى 4. لو نظرت للنافذة اليمنى فسترى سجلاً لمخرجات الinstances العاملة, فإذا قمنا بالضغط على شريط العنوان لأي من الinstances فسوف يتم عرضها بشكل كامل. تشير الأيقونة الموجودة في اعلى اليمين لكل instance إلى logging level ويمكنك تعديل هذا الأمر عن طريق الضغط بالزر الأيمن على العنوان واختيار القيمة المطلوبة من عناصر قائمة Logging Level. مخزنات الجداول والBlobs والQueues الذي قمنا به فعلياً لحد الان هو انشاء web role (لا تحتوي على اي شيئ) وworker role لا تعمل أي شيئ. يمكننا اضافة محتوى إلى الweb role بكل بساطة عن طريق اضافة controls إلى صفحة Default.aspx بنفس طريقة انشاء تطبيقات الويب الإعتيادية. سنبدأ باضافة textbox باسم JobDetailsText وزر باسم SubmitJob, ثم نضغط بشكل مزدوج على الزر من اجل الذهاب لملف الcode behind . يمكنك تمرير البيانات بين كل من الweb role والworker role عن طريق كتابتها إلى مخزنات tables (بيانات مهيكلة) أو blobs (كائنات binary منفردة) أو queues (رسائل). يمكنك العمل مع هذه المخزنات ضمن منصة عمل Azure عن طريق انترفيس REST الذي لها. ورغم أن هذه الطريقة ليست جيدة بناءً على خبرتنا في .NET إلا أن فريق عمل Azure قام بوضع تغليف لهذا الأمر مما جعل استعمال التطبيقات لمخزنات Windows Azure امراً في غاية السهولة. لو نظرت للreferences الموجودة في مشاريع Web Role و Worker Role فستجد رفرنس لملف Microsoft.WindowsAzure.Storage.dll والذي يحتوي على كلاسات التغليف التي تحتوي على methods يمكنك استعمالها ضمن مشروعك. قم باضافة الكود التالي في ملف الcode behind التابع لصفحة Default.aspx والذي ينشئ رفرنس لqueue ويضيف عليها رسالة بسيطة. ملاحظة: هناك بعض جمل using يجب أن تضيفها لمشروعك حسب الحاجة. C# //انظر لملف Default.aspx.cs protected void SubmitJob_Click(object sender, EventArgs e){ // read account configuration settings var storageAccount = CloudStorageAccount. FromConfigurationSetting("DataConnectionString"); // create queue to communicate with worker role var queueStorage = storageAccount.CreateCloudQueueClient(); var queue = queueStorage.GetQueueReference("sample"); queue.CreateIfNotExist(); queue.AddMessage(new CloudQueueMessage(this.JobDetailsText.Text)); } VB 'انظر لملف Default.aspx.vb Protected Sub SubmitJob_Click(ByVal sender As Object, ByVal e As EventArgs) Handles SubmitJob.Click ’ read account configuration settings Dim storageAccount = CloudStorageAccount. FromConfigurationSetting("DataConnectionString") ’ create queue to communicate with worker role Dim queueStorage = storageAccount.CreateCloudQueueClient() Dim queue = queueStorage.GetQueueReference("sample") queue.CreateIfNotExist() queue.AddMessage(New CloudQueueMessage(Me.JobDetailsText.Text)) End Sub يقوم هذا الكود بأخذ القيمة الموجودة في الtextbox المسمى JobDetails ويضيفه على الqueue وينفذ الأعمال المناسبة. يقوم الكود التالي باستقبال الرسالة التالي على الqueue ويقوم بطباعة الرد على السجل قبل أن يقوم بحذفها من الqueue. في حال لم تقم بحذف تلك الرسالة من الqueue فسيتم دفعها للخلف بعد انتهاء الtimeout والذي يمكن تعديله. C# //انظر لملف WorkerRole.cs private CloudQueue queue; public override bool OnStart(){ DiagnosticMonitor.Start("DiagnosticsConnectionString"); Microsoft.WindowsAzure.CloudStorageAccount. SetConfigurationSettingPublisher((configName, configSetter) =>{ configSetter(Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment. GetConfigurationSettingValue(configName)); }); Trace.TraceInformation("Worker entry point called"); // read account configuration settings var storageAccount = CloudStorageAccount. FromConfigurationSetting("DataConnectionString"); // create queue to communicate with web role var queueStorage = storageAccount.CreateCloudQueueClient(); var queue = queueStorage.GetQueueReference("sample"); queue.CreateIfNotExist(); return base.OnStart(); } public override void Run(){ Trace.TraceInformation("CloudWorker entry point called"); while (true){ try{ // Pop the next message off the queue CloudQueueMessage msg = queue.GetMessage(); if (msg != null){ // Parse the message contents as a job detail string jd = msg.AsString; Trace.TraceInformation("Processed {0}", jd); // Delete the message from the queue queue.DeleteMessage(msg); } else{ Thread.Sleep(10000); } Trace.TraceInformation("Working"); } catch (Exception ex){ Trace.TraceError(ex.Message); } } } VB 'انظر لملف WorkerRole.vb Private queue As CloudQueue Public Overrides Function OnStart() As Boolean DiagnosticMonitor.Start("DiagnosticsConnectionString") CloudStorageAccount.SetConfigurationSettingPublisher( Function(configName, configSetter) configSetter(RoleEnvironment. GetConfigurationSettingValue(configName))) Trace.TraceInformation("Worker entry point called") ’ read account configuration settings Dim storageAccount = CloudStorageAccount. FromConfigurationSetting("DataConnectionString") ’ create queue to communicate with web role Dim queueStorage = storageAccount.CreateCloudQueueClient() queue = queueStorage.GetQueueReference("sample") queue.CreateIfNotExist() Return MyBase.OnStart() End Function Public Overrides Sub Run() Trace.TraceInformation("CloudWorker entry point called.") Do While (True) Try ’ Pop the next message off the queue Dim msg As CloudQueueMessage = queue.GetMessage() If (msg IsNot Nothing) Then ’ Parse the message contents as a job detail Dim jd As String = msg.AsString Trace.TraceInformation("Processed {0}", jd) ’ Delete the message from the queue queue.DeleteMessage(msg) Else Thread.Sleep(10000) End If Trace.TraceInformation("Working") Catch ex As StorageClientException Trace.TraceError(ex.Message) End Try Loop End Function لاحظ أن الكود السابق يقوم بعمل override لاثنتين من الmethods وهما OnStart و Run. يتم استعمال الاولى لتحميل قيم الإعدادات ولوضع المتغيرات المحلية من اجل العمل مع مخزنات Windows Azure. اما ميثود Run فتحتوي على حلقة while غير منتهية تقوم بالاستمرار في معالجة الرسائل الموجودة في الqueue. قبل أن نشغل الroles التي قمنا باعدادهم فإننا نحتاج لتحديد موقع تخزين الqueue التي سوف نستعملها . سيتحول هذا الأمر في النهاية لعضوية Azure Storage عند نشر التطبيق على السحابة لكن الان نحتاج لوضع تفاصيل الDevelopment Storage المحلي وذلك في ملف ServiceConfiguration: <?xml version="1.0"?> <ServiceConfiguration serviceName="MyAzureApplication" xmlsn="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration"> <Role name="CloudFront"> <Instances count="2" /> <ConfigurationSettings> <Setting name="DataConnectionString" value="UseDevelopmentStorage=true" /> <Setting name="DiagnosticsConnectionString" value="UseDevelopmentStorage=true" /> <!-- <Setting name="DeploymentConnectionString" value="DefaultEndpointsProtocol= https;AccountName=[YOUR_ACCOUNT_NAME];AccountKey=[YOUR_ACCOUNT_KEY]" /> --> </ConfigurationSettings> </Role> <Role name="CloudWorker"> <Instances count="2" /> <ConfigurationSettings> <Setting name="DataConnectionString" value="UseDevelopmentStorage=true" /> <Setting name="DiagnosticsConnectionString" value="UseDevelopmentStorage=true" /> </ConfigurationSettings> </Role> </ServiceConfiguration> لاحظ أننا قمنا بتعريف اعدادات DataConnectionString و DiagnosticsConnectionString في كل من CloudFront role و CloudWorker role . وفي اثناء عملنا على المنصة المحلية سيتم وضع القيم من اجل استعمال عضوية Development Storage. لكن عندما تصل لمرحلة نشر تطبيقك إلى Windows Azure فإنك تحتاج لاستبدال هذه القيم باسم حسابك والمفتاح في المكان الموضح في DeploymentConnectionString. يجب علينا تحديث ملف ServiceDefinition من اجل التصريح بالإعدادات المعرفة من قبل كل role وذلك لكي تتمكن الroles من الوصول للقيم السابقة. <?xml version="1.0" encoding="utf-8"?> <ServiceDefinition name="MyAzureApplication" xmlsn="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"> <WebRole name="CloudFront" enableNativeCodeExecution="false"> <InputEndpoints> <!-- Must use port 80 for http and port 443 for https when running in the cloud --> <InputEndpoint name="HttpIn" protocol="http" port="80" /> </InputEndpoints> <ConfigurationSettings> <Setting name="DataConnectionString" /> <Setting name="DiagnosticsConnectionString" /> </ConfigurationSettings> </WebRole> <WorkerRole name="CloudWorker" enableNativeCodeExecution="false"> <ConfigurationSettings> <Setting name="DataConnectionString" /> <Setting name="DiagnosticsConnectionString" /> </ConfigurationSettings> </WorkerRole> </ServiceDefinition> نقوم الان لتجربة تشغيل تطبيقنا بعد كل هذه التغيرات ولاحظ أنه كلما قمنا بالضغط على زر "ادخال" فإنك سوف ترى رسالة "Processed" تظهر في احد الinstances التابعة للworker role وذلك في واجهة Development Fabric. نشر التطبيق بعد أن ننتهي من بناء تطبيقنا باستعمال Development Fabric و Development Storage فإن هدفنا الان هو نشر هذا التطبيق للسحب أي لمنصة Windows Azure التابعة لمايكروسوفت. سنحتاج اولاً لعمل حساب في منصة Windows Azure لكل من خدمة الإستضافة hosting وخدمة التخزين storage.ونبدأ ذلك بالذهاب لموقع http://www.azure.com ونسجل الدخول باستعمال Live ID إلى حساب Windows Azure الخاص بنا وبعد ذلك نضغط على رابط "Go to the Windows Azure Developer Portal" والذي سيفتح لنا بوابة Windows Azure كالاتي: نضغط على Project Name وبعدها على زر New Service ونختار نوع الخدمة التي نريد اضافتها. في حال قمت باضافة Storage Account Service فإنك سترى شاشة اعدادات كالاتي: ستحتاج لنسخ معلومات العضوية والendpoints إلى داخل ملف ServiceConfiguration. وبعد ذلك يمكنك تشغيل تطبيقك. سيبقى تطبيقك هذه المرة يعمل على Development Fabric المحلي لكنه سيستعمل Azure Storage بدلاً من Development Storage وهذا امر جيد لتجريب تطبيقك والتأكد منه قبل نشره بشكل كامل للسحب. عندما تقوم بوضع عضوية hosting service فسوف ترى شاشة كالاتي: لاحظ وجود بيئتين عمل يمكنك النشر لهما باسم Production و Staging. فكما هو الحال مع جميع تقنيات النشر الجيدة فAzure تدعم النشر إلى Staging وبعد ان تشعر بأن تطبيقك يعمل بارتياح يمكنك الإنتقال لProduction. نعود إلى Visual Studio 2010 ونضغط بالزر الأيمن على مشروع MyAzureApplication ونختار Publish حيث سيتم بناء تطبيقنا وانشاء حزمة نشر development package اضافة لملف اعدادات. يتم عرض هذه الملفات في صندوق Windows Explorer عند الإنتهاء. نعود الان إلى Windows Azure ونضغط على زر Deploy الموجود تحت بيئة Staging (لاحظ الصورة السابقة) سيطلب منك بعدها تحديد حزمة النشر development package اضافة لملف الإعدادات. بعد الإنتهاء من عملية الupload ستم ارجاعك إلى صفحة hosting service حيث ستلاحظ تحديث المعلومات عند بيئة Staging كما في الصورة التالية: يجب أن تعلم أنه لا يمكنك تشغيل مشاريع Azure مباشرة بعد الإنتهاء من نشرها كما هو الحال مع تطبيقات الويب المبنية ب ASP.NET. فيجب عليك الضغط على زر Run من اجل بدء تشغيلها حيث سيتم تحديث الشاشة لكل الroles لتعلمك بتهئيتها وفي النهاية سيتم تحديثهم من اجل البدء حيث تكون كل الroles جاهزة لاستقبال المدخلات والبدء في العمل. المرحلة الأخيرة في هذه العملية هي تطوير ونقل التطبيقات التي تعمل على بيئة عمل Staging إلى Production حيث أن هذا الإنتقال يتم بتوجيه معالج ذكي وسريع بحيث يضمن عدم حدوث خطأ 404 (أو صفحة غير موجودة) للمستخدمين اثناء طلبهم لصفحات مشروعك في تلك اللحظة. حتى ننتقل من Staging إلى Production نقوم باختيار الزر الذي يحتوي على سهمين والموجود بين البيئتين في نافذة الAzure. تعديل اعدادات تطبيقك بعد النشر قد يتغير الطلب على تطبيقك مع مرور الوقت فتحتاج لتعديل بعض اعدادات مشروعك الموضوع في ملف ServiceConfiguration. يمكنك عمل ذلك بشكل ديناميكي عن طريق الضغط على زر Config (الموضح في الصورة السابقة). بعدها ستظهر لك شاشة للاعدادات تمكنك من تعديلها بنمط XML أو عن طريق عمل upload لملف اعدادات بديل. عليك استعمال هذه الطريقة فقط مع Staging حتى لا تقوم بالتأثير على الProduction الذي يعمل حالياً. حيث أن الطريقة الأفضل للتعامل مع تطبيقات Azure هي بانشائها وتعديلها اولاً على بيئة Staging وثم السماح بتهيئتها وبدءها وبعد ذلك يتم التحويل للنشر إلى Production. تسمح لنا هذه الشاشة ايضاً بتصدير السجلات المولدة من قبل الroles الموجودة ضمن تطبيقنا إلى Storage account وبعد القيام بعملية النسخ فإننا نقوم بجلب تلك السجلات من تلك الstorage account. ويتم ذلك عن طريق استعمال مثال CloudDrive الموجود في Azure SDK والذي يمكن استعماله لربط عضوية storage account مع القرص المحلي والذي يمكنك استعلامه في Powershell. التعرف على SQL Azure تقدم لنا منصة عمل Windows Azure ايضاً خدمة استضافة البيانات على شكل SQL Azure وذلك اضافةً إلى مخزنات Azure tables و الblobs والqueues. يمكنك أن تعتبر كل قاعدة بيانات من SQL Azure هي عبارة عن instance مستضاف من قاعدة بيانات SQL Server 2008 , ويعمل ذلك الinstance بوضعية high-availability. هذا يعني أنه في اي لحظة من الزمن سيكون هناك ثلاثة instances متزامنين من قاعدة بياناتك وفي حال حصول فشل لأي منهم سيتم مباشرة جلب instance جديد مع مزامنة البيانات له من اجل ضمان توفر مصدر بياناتك وعدم انقطاعه عن المستخدمين. حتى نستطيع انشاء قاعدة بيانات SQL Azure نقوم بتسجيل الدخول لبوابة Windows Azure ونذهب لخيار SQL Azure حيث تستطيع هناك ادارة عضوياتك في SQL Azure فيمكنك انشاء وحذف قواعد البيانات بكل سهولة. بعد انشاء قاعدة بيانات جديدة يمكنك الحصول على الConnection String الخاص بها (والذي نحتاجه من اجل الإتصال بها) عن طريق اختيار قاعدة البيانات والضغط على زر Connection String كما في الصورة التالية: يوجد (حتى هذه اللحظة) عدة طرق للتعامل مع قاعدة بيانات SQL Azure. فمع أن SQL Azure تعتمد على SQL Server 2008 إلا أن هناك عدد من المحددات تعيقك من استعمال اغلب الأدوات المرئية مثل SQL Server Management Studio (Object Browser) وفيجوال ستديو 2010. يمكنك على اي حال الإتصال بقاعدة بيانات SQL Azure عن طريق SQL Management Studio ويمكنك بعدها تنفيذ جمل T-SQL Query Window على تلك القاعدة. هناك ايضاً عدة ادوات من الthird-party أو اضافات الفيجوال ستديو 2010 تساعدك في التعامل مع SQL Azure مثل SQL Azure Migration Wizard و SQL Azure Manager و SQL Azure Explorer. أما من داخل تطبيقك فيمكنك الإتصال ب SQL Azure باستعمال الConnection String الذي قمنا بجلبه من بوابة Windows Azure . يمكنك بعدها استعمال اغلب اطارات العمل المبنية على ADO.NET مثل LINQ to SQL و Entity Framework أو حتى استعمال ADO.NET نفسها لانشاء وتعديل وقراءة وحذف البيانات في قاعدة بيانات SQL Azure التي قمت بانشاءها. التعرف على AppFabric المكون الثالث الرئيسي في منصة عمل Windows Azure هو AppFabric وهو المسؤول عن تكوين Access Control Serving و Service Bus , أي قضايا التواصل والإتصال بين التطبيقات اضافة لقضايا الأمان Security. Service Bus تمتلك الغالبية العظمى من الشركات اتصالاً مع الإنترنت, لكن هذا الإتصال قد يكون محدداً في كثير من المرات بمعنى أن هناك تحديد لتدفق الترافيك في الشركات . يحصل ذلك عن طريق استخدام اجهزة firewall تعمل ايضاً على عمل translation لعناوين الشبكة بمعنى أنه من الصعب اعطاء اجهزة الحاسوب القابعة خلف جدران الحماية تلك عناوين من خارج الشبكة. وبما أن عدد عناوين IPv4 يتضائل فيتم تخصيص عدة connections على عنوان IP بشكل ديناميكي, الأمر الذي يجعل استضافة تطبيق داخل شبكة الشركة والوصول إليه من الخارج امراً مستحيلها. يسمح الService Bus بتسجيل خدمة في URL معين قابل للعنونة عن طريق service registry فالطلبات التي تتم لهذا الURL يتم تحويلها للخدمة عن طريق outbound connection يتم ايجاده من قبل الخدمة نفسها. يمكن أن يكون العمل مع Service Bus سهلاً بنفس درجة سهولة تغير WCF bindings الى bindings تقوية جديدة. عندما يتم تشغيل الخدمة يتم تسجيلها في service registry وتبدأ بعمل توجيه للإتصال المطلوب من قبل الإتصالات الاخرى. Access Control Service (ACS) في حين ارادت شركة أو منظمة ما مكاملة عدة تطبيقات لها تعمل على السحب فمن الضروري ايجاد طريقة للتحقق من الوصول لتلك التطبيقات عن طريق توفير عدة مصادر للauthorization. هذا هو في الوقاع مهمة Access Control Service والذي ما زال في بداياته ويتوقع أن يتطور كثيراً في المستقبل. يمكن لACS أن يتحقق من هوية المستعمل عن طريق تصديق طلبات الدخول وتنفيذ معالجة لتلك الطلبات واعطاء ناتج منها إلى التطبيقات المحددة. فمثلاً يمكنك تسجيل الدخول لتطبيق ما عن طريق وضع بريدك الإلكتروني وكلمة المرور حيث يتم استخدام هذه المعلومات كطلب دخول لك وتستعمل لتصديقك اضافة إلى تحديد مجموعة صلاحياتك للدخول للتطبيقات المرتبطة بACS. بعدها يقوم التطبيق الذي دخلته بأخذ معلومات الواردة من ACS ويثق فيها بناء على العلاقة المبنية سابقاً بين ذلك التطبيق و Access Control Service. خلاصة المقالة: تكلمنا في هذه المقالة عن منصة عمل Windows Azure وعن كيفية انشاء التطبيقات والخدمات ووضعها على السحب باستعمال Visual Studio 2010. تعتبر كل من Development Storage المحلية والFabric ادوات عظيمة لفحص المشاريع محلياً قبل نقلها للسحب دون مواجهة اي مشاكل. اذا لم ترد نقل مشروعك للعمل على السحب فيمكنك على الأقل الإستفادة من SQL Azure و AppFabric من اجل استضافة بياناتك أو حل مشاكل ربط العناوين أو توحيد نظام الامن لتطبيقاتك. لمزيد من المعلومات: http://www.microsoft.com/windowsazure/windowsazure/ ملفات مشروع المقالة: http://www.4shared.com/file/sR1FObes/MyAzureApplication-El-bukhari.html عبد العظيم بخاري http://www.el-bukhari.com/2011/03/2010-windows-azure.html
  5. السلام عليكم اظن أخي أن الخبر قديم : http://www.islammemo.cc/akhbar/Oloom-we-seha/2009/05/12/81885.html الثلاثاء 12 مايو 2009
  6. نقاش حول (Visual Studo ) بيئة .Net

    جاء الفيجوال ستديو 2010 بدعم لكثير من التقنيات الحديثة حيث تم اضافة لغة F# 2.0 بشكل رسمي إلى بيئة العمل واصبح بالامكان انشاء مشاريع SharePoint 2010 اذ تم اضافة كثير من ادوات الشيربوينت ايضا تم اضافة دعم لانشاء المشاريع على السحب cloud computing اضافة دعم لادوات الVisualization تحسينات لكثير من الادوات الخاصة بتحرير الكود وتتبع الاخطاء والنشر ومراقبة الاداء
  7. نقاش حول (Visual Studo ) بيئة .Net

    السلام عليكم شكرا لك على هذه البادرة الطيبة وان شاء الله يكون موضوع علمي بحت , قبل أن نبدا المناقشة احب ان اضع رابط لمجلة قمت بتاليفها تشرح الجديد في اطار عمل الدوت نت 4 http://www.el-bukhari.com/2011/01/4.html
  8. جديده في التكنلوجيا فهل من نصيحة

    الحكومة الألمانية تتخلى عن المصادر المفتوحة وتعود للويندوز http://www.teedoz.com/2011/%D8%A7%D9%84%D8%AD%D9%83%D9%88%D9%85%D8%A9-%D8%A7%D9%84%D8%A3%D9%84%D9%85%D8%A7%D9%86%D9%8A%D8%A9-%D8%AA%D8%AA%D8%AE%D9%84%D9%89-%D8%B9%D9%86-%D8%A7%D9%84%D9%85%D8%B5%D8%A7%D8%AF%D8%B1-%D8%A7%D9%84/ بدون تعليق :cool:
  9. جديده في التكنلوجيا فهل من نصيحة

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

    السلام عليكم اخواني لم تقولوني مالم اقل !! اخي محمد تقول أنني قلت ان لغات السكريبتات ضعيفة !! أين قلت هذا غفر الله لنا ولك الذي قلته أن لغات السكريبتات محدودة القدرات مقارنة بلغات الجافا والسي شارب وأنت من يجب أن تعرف ذلك بناء على علمك بالمترجمات. البايثون ولغات السكريبتات بشكل عام هي interpreted بمعنى انها تختلف بشكل كبير عن اللغات السابقة ومن بين هذه الاختلافات قصورها في دعم الmulti-tasking بناء على تجاربي في هذا المجال, اخي bastr3 : أنت تخلط الكثير في كلامك مرة تقول لي الفيجوال بيزك مرة تقول فيجوال ستديو مرة تقول دوت نت الخ.. اذا كان كلامك على الفيجوال بيسك وطبيعة العمل في الفيجوال ستديو فأنت اول شخص يشتكي من هذا الأمر , بالعكس اخونا محمد يقول ان الدوت نت للكسالى بمعنى أن أنشاء البرمجيات فيها لا يحتاج أي جهد يذكر .. اما اذا كان كلامك عن اطار عمل الدوت نت فهذا الاطار بامكانك التطوير فيه بأي لغة تريدها , مايكروسوفت وضعت اكثر من 50 برمجية للتعامل مع هذا الاطار ومنها IronPython و IronRuby وهي مفتوحة المصدر: http://ironpythonstudio.codeplex.com/ البرمجة في اطار عمل الدوت نت سهلة جداً وبامكانك عمل ما تريد بالطريقة التي تريد , اذا لم يعجبك السحب والافلات يمكنك البرمجة باي تقنية تريد اما بخصوص النقطة الرابعة بأن عدد اسطر لغات السكريبت اقل من عدد كودات "الدوت نت" ( طبعا تقصد الفيجوال بيسك وليس الدوت نت لان الدوت نت يتيح لك الكتابة بالسكريبتات) هذا الامر غير واقعي على الاطلاق : اذا اردت انشاء برنامج خدمات باستعمال تقنية WCF في سي شارب فإنك تحتاج لعدد قليل من الاسطر لن يزيد على العشرة على فرض مثال صغير , بينما لو اردت عمله بالبايثون الذي هو اكثر لغات السكريبتات اختصارا للكودات فإنك تحتاج ل45 اذا كنت مبرمج ذا خبرة . اختي الكريمة صاحبة الموضوع : لا اقول لك اهتمي بتقنيات مايكروسوفت ودعي باقي الامور , بالعكس , اهتمي بجميع التقنيات حتى تستطيعي الحكم الاخوة يريدون منك أن لا تنظري ابداً إلى تقنيات اكبر شركة برمجية في العالم بحجة أنها ستنقرض وإنها عميلة كما يدعون :P انا نفسي (واعوذ بالله من كلمة انا) اعمل بتقنيات "مجتمع المصدر المفتوح" واعمل بتقنيات مايكروسوفت ايضاً ولن تعرفي قيمة التطور والابداع في تقنيات مايكروسوفت مالم تجربي تقنيات الطرف الاخر. :wink:
  11. جديده في التكنلوجيا فهل من نصيحة

    لغات السكريبت محدودة القدرات اخي الكريم وليست مثل لغات الدوت نت والجافا على أي حال فالدوت نت في اخر 3 سنوات حصل لها اضافات عظيمة جعلتها متميزة للغاية في اغلب مجالات البرمجة خاصة في الامور الجديدة المتعلقة في البرمجة المتوازية وايضا في دعمها للبرمجة الديناميكية , حيث لو كان عندك سكريبت بايثون أو جافاسكريبت فيمكنك تشغيله بكل سهولة في برنامج مكتبي مبني في السي شارب اما قولك انك وجدت لغات السكريبت افضل مئات المرات من الفيجوال "تقصد فيجوال بيزك ام ستديو؟"!! فهكذا تثير الفضول للقارئ لمعرفة تلك الأسباب ؟
  12. جديده في التكنلوجيا فهل من نصيحة

    ما دام تحقد على مايكروسوفت لسبب سياسي لكونها "عميلة" واحتكارية بحد وصفك , وما دام لم تجرب تقنيات الدوت نت ولم تعمل معها اذا فحكمك عليها ليس من باب علمي. لذلك ارجو منك أن لا تخلط الامور على القارئ, يمكنك القول نعم لمقاطعة مايكروسوفت بسبب عمالتها واحتكاريتها.. لكن لا تقل أن مستعملي تقنياتها متخلفين الخ..
  13. جديده في التكنلوجيا فهل من نصيحة

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

    هل عملت على احدى تقنيات الدوت نت ؟ قلي ما هي لو تكرمت ؟ ثق بي لن يخرج معك حمولة سيارة عمومي