d مدونة الفريق – الصفحة 19 – مدونة فريق شركة المطورون بلس

المدونة

  • Visual Studio 2010 Beta 2 جاهزة للتحميل

    وأخيرا وبعد طول انتظار ، قامت شركة Microsoft  بالإعلان عبر موقعها عن النسخة التجريبية الثانية من أقوى بيئة تطور عرفتها البشرية ، وستكون هذه النسخة جاهزة للتحميل يوم الأربعاء بتاريخ 21-أكتوبر-2009 .. الجميل في الأمر أن النسخة التجريبة الثانية تحميل في طياتها – كالمعتاد – ما ستحتوي النسخة النهائية من إضافات عديدة وجديدة تكون أضعاف أضعاف  النسخة التجريبية الأولى.
    إن النسخة  التجريبية الجديدة والتي ستصدر النسخة النهائية منها في 21-3-2010 تحتوي على العديد من الإضافات منها:
    1- العديد العديد من الإضافات والتحسينات في ال Web Forms  ، المزيد من الأدوات الجديدة ، المزيد من الدعم للمتصفحات ، دعم للمزيد من المعايير ، حتى إضافة ميزة التصفية في Data sources.
    2- المزيد من التحكم في عرض البيانات ديناميكيا وذلك لتسهيل وتسريع إنتاج المواقع المعتمدة على قواعد البيانات، ومكتوب شيء جديد يفهم من عنوانه وهو automatic validation.
    3- تحسينات على الفيجوال ستوديو في إضافات عديدة لستهيل العمل ، وأيضا تطوير في بيئة تحرير Html,CSS, JavaScript

    انظروا للشكل ما أبدعه

    وهذا بعض ما ورد في ASp.NET 4.0 :
    – URL Routing وتم طرح هذه التقنية في التحديث الأول للمنصة 3.5 كجزء من MVC ، وهي مشابهة لتقنية Mod ReWrite in PHP وهي لدعم أكبر لمحركات البحث SEO  في أرشفة الروابط ، وقد كنا نحلم بها منذ سنين .. والحمد لله تحقق الحلم بدون منتجات وأدوات خارجية .
    – Auto-Start Web Applications : حيث أن العديد من المواقع الضخمة تحناج إلى تحميل بعض البيانات عند تشغيلها للمرة الأولى وهذا يتطلب بعض الوقت أحيانا، ولكن مع هذه الميزة الجديدة والتي تسمح لك باختصار الوقت وتحميها مسبقا استعداد لأول طلب للموقع ، مع العلم أن هذه الميزة تحتاج ل IIS 7.5 الموجود في Windows 7 and Windows Server 2008 R2 .
    – RedirectPermanent : حل بعض المشاكل مثل خطأ 301 الذي يظهر عند نقل صفحة في موضع آخر

    بما أن المقال لتوضيح أن النسخة الجديدة قابلة للتحميل وللتجربة ـ فإنه لي وقفة مرات عديدة بإذن الله لشرح الميزات الجديدة والإَافات العديدة.

    وهذه كل الإضافات الجديدة والتي أسأل الله أن يعطيني الوقت لأوضحها لك عزيزي المطور – العربي

    Core Services   

        Web.config File Minification   
        Extensible Output Caching   
        Auto-Start Web Applications   
        Permanently Redirecting a Page   
        The Incredible Shrinking Session State   
        Expanding the Range of Allowable URLs   
        Extensible Request Validation
        Object Caching and Object Caching Extensibility
        Extensible HTML, URL, and HTTP Header Encoding   
        Performance Monitoring for Individual Applications in a Single Worker Process   
        Multi-Targeting  

     
    New Features in ASP.NET AJAX 4  

     
        Client Template Rendering   
        Instantiating Behaviors and Controls Declaratively   
        Live Data Binding   
        Using the Observer Pattern with JavaScript Objects and Arrays   
        The DataView Control   
        The AdoNetServiceProxy Class   
        The DataContext and AdoNetDataContext Classes   
        Refactoring the Microsoft AJAX Framework Libraries   
        The DOM Ready Event   
        Using JSONP to Retrieve Cross-Domain Data

      
    Web Forms  

     
        Setting Meta Tags with the Page.MetaKeywords and Page.MetaDescription Properties   
        Enabling View State for Individual Controls   
        Changes to Browser Capabilities   
        Routing in ASP.NET 4   
        Setting Client IDs   
        Persisting Row Selection in Data Controls   
        ASP.NET Chart Control   
        Filtering Data with the QueryExtender Control   
        Html Encoded Code Expressions   
        Project Template Changes   
        CSS Improvements   
        Hiding div Elements Around Hidden Fields   
        Rendering an Outer Table for Templated Controls   
        ListView Control Enhancements   
        CheckBoxList and RadioButtonList Control Enhancements   
        Menu Control Improvements   
        Wizard and CreateUserWizard Controls   

    ASP.NET MVC
        Areas Support

        Data-Annotation Attribute Validation Support
        Templated Helpers

    Dynamic Data

        Enabling Dynamic Data for Existing Projects   
        Declarative DynamicDataManager Control Syntax   
        Entity Templates   
        New Field Templates for URLs and E-mail Addresses   
        Creating Links with the DynamicHyperLink Control   
        Support for Inheritance in the Data Model   
        Support for Many-to-Many Relationships (Entity Framework Only)   
        New Attributes to Control Display and Support Enumerations   
        Enhanced Support for Filters   

    Visual Studio 2010 Web Designer Improvements   

        Improved CSS Compatibility   
        HTML and JScript Snippets   
        JScript IntelliSense Enhancements   
        Web Application Deployment with Visual Studio 2010   
        Web Packaging   
        Web.config Transformation   
        Database Deployment   
        One-Click Publish for Web Applications   

    ييمكن تحميل النسخة التجريبة الثانية عبر هذا الرابط
    http://msdn.microsoft.com/ar-sa/vstudio/dd582936(en-us).aspx

    بالتوفيق للجميع

  • Visual Studio 2010 Beta 1 جاهزة للتحميل

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

    حاليا سأضع لكم رابط النسخة وقد وضعت مايكروسوفت نسختين، ولكل نسخة وصغت مايكروسوفت طريقتين للتحميل ، نبدأ باسم الله:
    1- Visual Studio Team System 2010
    – Web Installer
    – ISO File

    2- Visual Studio 2010 Professional
    Web Installer
    – ISO File

    نسخة الويب حجم الملف 5 ميغا وسيقوم بتحميل اللازم من الإنترنت
    أما نسخة  الصورة الكاملة فهي ما بين 1100 ميغا بايت إلى 1300 ميغا بايت .

    وهذه هي  متطلبات التشغيل من مايكروسوفت

    System Requirements
    Supported Operating Systems: Windows Server 2003; Windows Server 2008; Windows Vista; Windows XP
    Computer that has a 1.6GHz or faster processor
    Visual Studio 2010 can be installed on the following operating systems:
    Windows Vista (x86 or x64), all editions except Starter Edition
    Windows XP (x86 or x64), Service Pack 2 or later, all editions except Starter Edition
    Windows Server 2003 (x86 or x64), Service Pack 1 or later, all editions
    Windows Server 2003 R2 or later (x86 or x64), all editions
    Windows Server 2008 (x86 and x64) or later (all editions)
    Windows Server 2008 R2 RC (x64) Enterprise Edition
    Windows 7 RC (x86 and x64) Ultimate Edition
    1024MB RAM
    3GB of available hard disk space
    5400 RPM hard disk drive
    DirectX 9-capable video card that runs at 1280 x 1024 or higher display resolution
    DVD-ROM drive

     

    بالتوفيق للجميع وانتظرنا بالجديد في هذه النسخة كما وعدناكم

  • صدور حزمة Visual Basic لمطوري Windows Phone

    p>صدرت حزمة تطوير الفيجوال بيسك دوت نت لبيئة الوندوز فون 7 وهي النسخة CTP

    النسخة تتطلب اصدار من الفيجوال ستوديو Professional  أو أعلى

    أيضا لا تستطيع ان تبرمج بها ألعاب XNA فقط مسموح تطبيقات Silverlight

    لمن أراد التجربة هذا هو الرابط

    Visual Basic CTP for Windows Phone Developer Tools

  • كيفية تقطيع جملة عبر كلمة وليس حرف

    الأمر يبدو بسيط ، ولكن ما نقع به دائما في الفيجوال بيسك استخدام دالة Split الموجودة في الفئة String ، وإرسال وسيطة كلمة لها ، معتقدين أن عملية التقطيع ( التقسيم ) ستتم عبر الكلمة. ولكن ما يحدث هو أن الفيجوال بيسك يعمل كعمل دالة التقطيع الخاصة بالسي شارب ويقوم بتحويل النص إلى مصفوفة أحرف ويقسم حسب كل حرف في الكلة وليس حسب الكلمة ككل الحل بسيط يكمن في استخدام دالة Regex.Split وهذا كمثال

                Dim ar As String() = Regex.Split("بطتنا بطت بطن بطتكوا بطتين ونص بطة", "بط")                 
  • حل استخدام التقارير في WPF

    حينما تستخدم التقارير في تطبيقات Windows Forms أو في ASP.NET، يكون الأمر سهلا، ولكن حينما تستخدمها في WPF ، ستواجهك بعض العقبات، ساستعرض هنا الطريقة المثلى والمشاكل التي قد تواجهك في أثناء العمل

    بداية لا توجد أداة مدمجة في WPF تسمح لك باستخدام التقارير مباشرة ( أقصد بالتقارير بالدرجة الأولى تقارير الفيجوال ستوديو نفسه، وقد ينطبق هذا الشرح على تقارير الكريستال ريبورت )، وإذا أردت استخدام التقارير في  WPF  فعليك باستدعاء عارض التقارير الموجود في Windows Forms.

     

    طريقة الاستدعاء سهلة، عليك باتباع الخطوات التالية

    – أضف المرجع Add Reference التالي إلى المشروع / Microsoft.Reporting.WinForms

    – قم باستدعاء المرجع في منطقة الاستدعاء : xmlns:rv="clr-namespace:Microsoft.Reporting.WinForms;assembly=Microsoft.ReportViewer.WinForms"  من داخل الصفحة

    – قم بوضع الوسم WindowsFormsHost أينما تحب في المشروع وهذه الأداة مسؤولة عن جلب أدوات من الWindows Forms  بداخل WPF

    – استدعي أداة عارض التقارير بداخل الوسم بالأعلى كالتالي <rv:ReportViewer

    تصبح المحصلة لديك كالصورة التالية :

    wpf report

     

    الآن نأتي لتحميل ملف التقرير ، مع العلم أنني سأفترض أنك قد أعددت تقريرا

               Private Sub Button_Click(sender As Object, e As RoutedEventArgs) 
    '' جلب الداتا سيت التي قد قمت بربطها بالتقرير، مهما كان اسمها
    Dim dataset As New JewellyManagement.KhalilSaleemDataset
    dataset.BeginInit()


    '' تعبئة البيانات بالشكل المطلوب وتستطيع كتابة أي شروط او استعلامات كما تشاء ، الأمر روتيني لمن استخدم التقارير سابقا
    Dim conn As New SqlCeConnection(My.Settings.JDConnectionString)
    Dim cmd As SqlCeCommand = conn.CreateCommand()
    cmd.CommandText = "SELECT [ID], [DOB], [Name], [Price], [Notes], CASE [Ttype] WHEN 1 THEN 'يومي' WHEN 2 THEN 'شهري' WHEN 3 THEN 'سنوي' ELSE 'يومي' End as TType,Currency FROM [WalletOut]"
    Dim da As New SqlCeDataAdapter(cmd)
    da.Fill(dataset.CInfo)



    Dim reportinfo As New Microsoft.Reporting.WinForms.ReportDataSource()
    reportinfo.Name = "DSInfo"
    reportinfo.Value = dataset.CInfo
    Me._reportViewer.LocalReport.DisplayName = ReportNameWithDate("تقرير المصروفات ")
    Me._reportViewer.LocalReport.DataSources.Add(reportinfo)
    Me._reportViewer.LocalReport.ReportEmbeddedResource = "JewellyManagement.WalletFullReport.rdlc"
    dataset.EndInit()
    _reportViewer.RefreshReport()
    End Sub

    wpf report

    في مثالي انا استخدمت قاعدة بيانات داخلية وربطت البيانات بها، أنت حر كما تريد، قمت بتوزيع الكود إلى 3 أقسام ، لتفهم أن القسم الأول عليك باستدعاء datasource

    في القسم الثاني عليك بكتابة استعلامك وملء البيانات وهو إجراء روتيني لك كمبرمج.

     في القسم الثالث عليك بارسال اسم مصدر البيانات من التقرير وفي حالتي كان DSInfo وكذلك عليك استدعاء اسم التقرير ومساره في JewellyManagement.WalletFullReport.rdlc ، وهنا تكمن الخدعة، وهنا سبب كتابتي للمقال.

     

    توضيح حول المسار

    المعتاد دائما في هذا الكود هو استدعاء المسار بالشكل التالي

              _reportViewer.LocalReport.ReportPath = "../../Incomes/BrakeReport.rdlc" 

    حيث ../../ تشير إلى اسم المجمع assembly وثم اسم فضاء الأسماء namespace و Incomes على سبيل المثال هي للمجلد الفرعي ( الداخلي ) الذي أضع فيه التقرير والذي يحمل اسم BrakeReport.rdlc

    هذا الأمر طبيعي في Windows Forms ونفس الشيء في WPF المشكلة تظهر حينما تحاول نشر البرنامج ستجد أن المشاكل تظهر ولا ينم عرض التقرير

    السبب بسيط هو أن التقرير Embeded Resource وبالتالي لا مسار فيزيائي له، وستفشل كل الطرق في WPF لجلب المسار

    الحل يكمن في اسدعاء خاصية ReportEmbeddedResource بدلا من ReportPath  كما عملت في الكود بالأعلى ، ولكن هنالك خدعة بسيطة يجب عملها ألا وهو استبدال ../../ بالمسار الحقيقي في Embedding

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

            _reportViewer.LocalReport.ReportEmbeddedResource = "AssemblyName.NameSpace.ReportName.rdlc"

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

            _reportViewer.LocalReport.ReportEmbeddedResource = "AssemblyName.NameSpace.FolderName.ReportName.rdlc"

    أما في الفيجوال بيسك دوت نت الأمر يختلف فلا يوجد لديك فضاءات اسماء فرعية ( وهذه المعلومة تكلف ثمنها لأني سهيت عنها فاسغرقتني 3 أيام من البحث لحين خطرت على بالي وحللت المشكلة وقررت أن أكتب المقال حتى لا يقع غيري بها ) ، فكل ما عليك فعله هو كتابة اسم المجمع ثم اسم التقرير مهما كان في مجلدات فرعية كالتالي

            _reportViewer.LocalReport.ReportEmbeddedResource = "AssemblyName.ReportName.rdlc

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

    بالتوفيق للجميع

  • استخدام مصادقة ASP.NET في تطبيقات سطح المكتب

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

    ولكن ماذا عن مبرمجي تطبيقات سطح المكتب ؟! ألا يوجد لديهم نظام لإدارة الصلاحيات
    والمستخدمين لتوفير الوقت عليهم ؟.

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

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

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

    وهذا يوصلنا بأن هذا النظام الخاص بالمصادقة هو مجموعة من الدوال لإجراء عمليات في
    قاعدة البيانات، وهو الغرض الرئيسي منه وبالتالي بغض النظر عن الأجزاء الثانية والثالثة
    منه يمكننا الاستفادة من الجزء الأول الخاص بالتعامل مع قاعدة البيانات.

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

    الخطوة الأولى تكمن في تكوين قاعدة البيانات لمصادقة الويب وهذا باستخدام أداة
    aspnet_regsql
    والتي يمكنك استدعاءها من موجه أوامر الفيجوال ستوديو أو من هذا
    المسار
    C:\Windows\Microsoft.NET\Framework\v2.0.50727
    واختيار قاعدة البيانات المعنية لكي يتم تجهيز الجداول والدوال وباقي ما يتعلق بالمصادقة.

    الخطوة الثانية تكون بإنشاء تطبيق جديد ليتم تجربة الأمر عليه ويتم إضافة المرجع
    System.Web من خلال الضغط بالزر اليمين للماوس على اسم التطبيق واختيار Add Reference


    visual studio add new item

    visual studio add Reference
    وبهذه الخطوة تكون قد أضفت المكتبة أو المرجع المسؤول عن الوصول للقاعدة بنظام مصادقة
    الويب من اتصال ودوال .

    لتوفير العناء من استيراد فضاء الأسماء في كل شيفرة كالتالي:
    Improts System.Web.Secutity

    أفضل استيراد فضاء الأسماء في كل المشروع وذلك من خلال خصائص المشروع.

    الآن لنراجع الخطوات:
    لدينا قاعدة بها جداول ودوال جاهزة، ولدينا مشروع مستعد للاتصال بهذه القاعدة وجلب
    البيانات منها والإضافة إليها.

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

    أيضا يلزمنا تحديد بعض الخيارات كتمكين الصلاحيات أو تعطيلها وأيضا يلزمنا تحديد
    باقي خيارات المصادقة مثل كيفية حفظ كلمة المرور، وأقل طول لكلمة المرور … الخ.

    وكالمعتاد يجب الذهاب لملف إعدادات المشروع وحيث كان في برمجة الويب اسمه web.config
    هنا اسمه app.config.

    قم بإضافة هذه الوسوم آخر ملف الإعدادات وإن لم يكن موجود بشكل افتراضي ملف الإعدادات
    قم بإضافة ملف جديد عبر إضافة عنصر جديد واختيار Application Configuration File
    واترك مسماه الافتراضي app.config .

    الوسوم هي:

    <system.web>   <membership>
        <providers>
          <remove name="AspNetSqlMembershipProvider"/>
          <add name="DevelopersSqlMembershipProvider"
              type="System.Web.Security.SqlMembershipProvider,System.Web,
               Version=2.0.0.0,
    Culture=neutral,

               PublicKeyToken=b03f5f7f11d50a3a"
               connectionStringName="ConnStr"
               enablePasswordRetrieval="false"
               enablePasswordReset="false"
               requiresQuestionAndAnswer="false"
               applicationName="/"
               requiresUniqueEmail="false"
               passwordFormat="Hashed"
               maxInvalidPasswordAttempts="3"
               minRequiredPasswordLength="4"
               minRequiredNonalphanumericCharacters="0"
               passwordAttemptWindow="10"
               passwordStrengthRegularExpression=""
    />

        </providers>
      </membership>
    </system.web>

    مع العلم أن المواصفة connectionStringName يجب أن تأخذ اسم الجملة من الوسم
    الموجود في المشروع، وأنا أفضل أن تكون موجودة ضمن وسوم إعداد التطبيق وليس من وسوم
    إعداد الويب، وقد قمت بوضع صورة من مشروع معد مسبقا لتوضح المقصود من كلامي.

    visual studio web.config

    الآن كل شيء جاهز واعتبر نفسك مبرمج ويب وابدأ بعملك المعتاد دون تردد.

    كبداية العمل نحتاج لإنشاء بعض المستخدمين وبعض الصلاحيات وذلك عبر

    إنشاء مستخدمين :

    Membership.CreateUser( UserName,Password)

    Membership.CreateUser( "Khalil","Khalil")

    أو أن ترسل أي عدد من الوسيطات للدالة كإرسال كافة الوسيطات

    Dim status As MembershipCreateStatus
    Membership.CreateUser( "Khalil","Khalil")

    Membership.CreateUser("admin@developers.ps","Password","Email","Password
    question","Password answer", True ,status)

    والفئة MembershipCreateStatus تشير إلى نجاح أو فشل محاولة إنشاء مستخدم
    جديد ويمكن كتابة قيمة status لعرض المشكلة سواء كان الخلل في كلمة المرور أو البريد
    أو حتى لو كان خطأ عام .

    والآن حان وقت إنشاء الصلاحيات وكما أسلفت فالأمر هو نفسه الدارج في بيئة تطوير المواقع،
    وذلك عبر استخدام الفئة
    Roles.

    ولإنشاء صلاحية عليك باستدعاء الدالة CreateRole أما تعيين
    مستخدم لهذه الصلاحية فسيكون من خلال استدعاء الدالة
    AddUserToRole
    بهذا الشكل:

    Roles.CreateRole("Developer")
    Roles.AddUserToRole("Khalil", "Developer")

    ممكن فحص أن المستخدم موجود مسبقا في صلاحية معينة عبر

    If Roles.IsUserInRole("Khalil", "Developer") Then
       MessageBox.Show ("Is a developer.")
    Else
       MessageBox.Show ("Is not a developer.")
    End If

    visual studio

    يمكن التحقق من المستخدم عبر

    If Membership.ValidateUser("Khalil", "Khalil") Then
        MessageBox.Show("User validated.")

    Else
        MessageBox.Show("User invalid!")
    End If

    visual studio

    الحديث هنا يطول ولا ينتهي في كل جزئية من الصلاحيات والغرض من المقال فقط توضيح
    استخدام المصادقة في تطبيقات سطح المكتب باعتبار أنك مطور مواقع لا بأس به.


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

    أكون قد استعرضت كيفية إنشاء مستخدمين وصلاحيات وتعيين صلاحيات للمستخدمين بدون أن
    يكلف الأمر دقائق معدودة، والجميل كالمعتاد أن مايكروسوفت لم تنسى شيء وجعلت التكامل
    في بيئتها أمر يفوق التوقع، ومنها بتوفير مصادقة ASP.NET
    واستخدامها في تطبيقات
    سطح المكتب بكل سهولة.

  • أسعار أعلى نقرات شهر سبتمر 2010 في ادسنس

    بسم الله الرحمن الرحيم
    اليوكم نقدم لكم ملف اكسل يحتوي على اعلى اسعار الكلمات في جوجل ادسنس والتى يمكنك الاستفادة منها في زيادة ارباحك
    للتحميل اضغظ هنا
    ملاحظة سيتم كل شهر ارفاق لكل شهر متجدد

  • تفصيل حول بنية النظام: ويندوز فون 8 Windows Phone

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

    عندما صدر الويندوز فون 7 ، قمت بالحديث عن البرمجة لهذا النظام ، حيث البرمجة المتاحة كانت بخيارين هما Silverlight  و XNA وكلاهما كود مدار Managed Code أي دوت نت فقط (C# and VB.NET)،
    أما الكود الغير مدار Native Code – السي بلس بلس C++ –  فهو ممنوع إطلاقاً ، وهذا معناه أنك من خلال الكود المسموح لك ( الكود المدار ) لا تستطيع الوصول المباشر إلى دوال النظام الأساسية واستدعائها ( Win32 API ) ،
    وعليك فقط متابعة ما تصدره مايكروسوفت من هذه الدوال في إطار الكود المدار فقط.

    هذه الحدود في الوصول المباشر لها عوارض كثيرة ، وبما أنها حدود برمجية هذا يعني أنه سيكون هنالك حدودية برامجية ،
     أي أن بعض البرامج المتعارف عليها لن تكون ممكنة لأنه يلزمها وصول مباشر لنظام التشغيل ولعتاد الهاتف ، وأبسط مثال على هذا الأمر برنامج الكشاف ( والذي يستخدم فلاش الكاميرا ) لم يكن متاح لبعض الأجهزة والسبب أن الدوال المدارة لا تدعم هذا العتاد وعلى المبرمج الانتظار حتى تدعمه مايكروسوفت في إصدار الكود المدار القادم،
     
    وهذا ما كنت ذكرته في تأخر بعض البرامج الشهيرة من العمل على الويندوز فون 7 مثل السكايب أو حتى قارئ ملفات الأكروبات الكئيب المتوفر . بل وحتى بعضها لم يكن مكتوبا له أن يصدر يوما ما وقد قلت هذا في متصفح الفايرفوكس ، لأن هذه البرامج يلزمها وصول مباشر أو يلزمها استخدام مكتبات مكتوبة بال C++ .

    ما هو السبب ؟

    سبب العلة الرئيسي هو أن منصة الدوت نت المستخدمة في الويندوز فون 7 مبنية على .NET Compact Framework وهو أمر بالكاد تقبلته أول ما قرأت عنه لعدة أسباب سيتضح بعضها بعد قليل.

    ال .NET Compact Framework 3.7 هو إصدار المنصة التي تم استخدامها في الويندوز فون 7 واختصارا NETCF ، وهو نسخة مصغرة من الدوت نت تعمل على نظام التشغيل Windows Compact Embedded (WinCE) لتعمل على الأجهزة ذات العتاد المحدود مثلا الجوالات ، الثلاجات ، السيارات ، أي شيء لديه حدود في الذاكرة والمعالج ، ومرة أخرى طالما هنالك حدود في السعة والذاكرة ، سيكون هنالك حدود في الدوال ، وبالتالي حدود في البرامج …… .

    ولكي يكتمل الموضوع ولا انسى شيء ، ال NETCF 3.7  هو نسخة محدثة عن NETCF 3.5 ، والاختلافات كالتالي

    يتكون NETCF 3.5 من
    1-  NETCF 3.5 runtime المحرك
    2-  NETCF 3.5 BCL مكتبة الدوال والأصناف
    3-  NETCF 3.5 UI programming model مبنى على الويندوز فورمز !!!!!!

    أما NETCF 3.7 يتكون من السابق نفسه بهذه التعديلات بالترتيب
    1-  NETCF 3.7 runtime بتعديلات هائلة
    2-  NETCF 3.7 BCL (طبعا بإضافة مكتبات Silverlight 3 مع تعديلات بسيطة  )
    3-  تم استبدال UI programming model بالخيارات التالين( Silverlight 3 ، XNA  )

    أعتقد الصورة وضحت الآن وهي أن ال NETCF 3.5 مبنية واجهته للعمل للويندوز فورمز ، وقد تم استبدالها بكافة السبل بواجهة سيلفرلايت للعمل على الويندوز فون ، وهذا ما تبعه الكثير من التعديلات والجهد على مايكروسوفت ،

    ولكن يكفي الحديث أنه مثلا عند إصدار مايكروسوفت لأي تعديل أو نسخة من السيلفرلايت ( مثلا الإصدار الرابع ) لا يمكنهم بسهولة نقله على الجوال ، لأن السيلفرلايت في حقيقته يستخدم جزء فوقي خاص من منصة الدوت نت العادية،
    وهذا الجزء الخاص يجب تعديله مرة أخرى ليتوافق مع NETCF 3.7 ، ومن ثم تعديله مرة ثانية أو ثالثة ليتوافق مع الجوال ، يعني فيلم هندي ،
    لذلك تأخر مثلا دعم عرض النص العربي في الويندوز فون ( حتى نزول 7.1 )  مع أن السيلفرلايت 4 كان قد صدر قبل إصدار الويندوز فون 7.0  ،
    هذا بسبب الجهد الشاق الذي كان يتوجب على المطورين القيام به لدعم السيلفرلايت 4 على NETCF 3.7.
    الكثير والكثير من المعاناة والجهد والحدود ، بلا جدوى ، وهذا ما أدى إلى الويندوز فون 8

    مرحبا بالويندوز فون 8 ( احبيبي )

    عند الحديث عن الويندوز فون 8 ، فهنا الحديث عن نقلة نوعية في بنية النظام ، بل هنا نظام جديد كليا والشبه بينه وبين الويندوز فون 7 ، هو كالشبه بين الفيجوال بيسك 6 ، والفيجوال بيسك دوت نت .

    الاختلافات كثيرة ويكفي الاختلاف في نظام التشغيل الأساسي ، فالويندوز فون 7 الذي يعمل على Compact Framwork كان يتطلب Windows Compact والذي كان مخصص للويندوز موبايل القديم حيث تم تطويره من من الإصدار السادس إلى السابع ليماشي المطلوب ،
    أما الويندوز فون 8 فهو يعمل على نظام تشغيل مخصص مشابه بشكل كبير لنظام التشغيل ويندوز 8 مع بعض الخصومات ، أي أن النظام السابق Windows Compact تم التخلص منه واستخدام نظام مشابه للويندوز العادي ، وهذا يعني أنه يمكنك مستقبل استخدام بعض المكتبات في تطبيقاتك بين الويندوز فون 8 والويندوز 8 بدون تعديل ، وهو ما توفره مايكروسوفت في المكتبة المحمولة Portable Class Library.

    عندما يكون أساسا النظام مشترك أو واحد بين الويندوز فون والويندوز العادي ( المقصود بالمشترك هنا هي نفس ملفات الكيرنال والتعاريف والولوج للذاكرة .. إلخ ) ، سيكون أسهل للمهندسين في مايكروسوفت التعديل والتطوير فهو في النهاية نظام واحد وليس نظامين كالسابق ، فما سيتم تعديله وتطويره في الويندوز العادي سيكون متاح للويندوز فون 8 بدون جهد يذكر ( نسبيا ) .

    ماذا عن منصة الدوت نت المستخدمة ؟!!!.

    هذا هو السؤال المهم وسبب كتابة هذا الموضوع ، بالتأكيد يجب استبدال .NET Compact Framework المخصصة للويندوز فون 7 على ال Win CE  بمنصة جديدة على النظام المشترك ،

    أعزائي الكرام رحبوا معي ب .NET for Windows Phone 8 والذي يستخدم CoreCLR ،
    إذا كنت لم تفطر فول هذا الصباح ستعلم أنها نفس منصة الدوت نت العادية المخصصة للويندوز 8 ، ولكن مع حذف الدوال التي لا تلزم على الجوال وهو أمر منطقي ، وتعديلات وإضافات أخرى أيضا منطقية ، وأضيف هنا عما لتوي قلته عن الفطور ، أنك لو كنت نبيها ، فستعلم أن CoreCLR ما هي إلا مكتبات العمل للسيلفرلايت مباشرة مرة أخرى مع بعض التعديلات والإضافات.
    هذا يعني أن السيلفرلايت سيعمل بمكتباته مباشرة على الجوال ، ولا داعي لتعديله مرتين ، مرة ليتوافق مع منصة الكومباكت ( وهي الخطوة الصعبة ) ومن ثم تعديله ليتوافق مع الجوال ( وهي الخطوة الأسهل ) ، بل هنا يتم تعديله فقط لتوافق مع الجوال ( وهي الخطوة الأسهل ).

    التحدي هنا لمطوري مايكروسوفت هو دعم التطبيقات السابقة التي كانت تعمل على الويندوز فون 7 ، لتعمل على الويندوز فون 8 ، فهو نظام جديد ببنية جديدة ، ولكن المطورون اجتهدوا كل الجهد وأتموا الأمر ، فبما أن تطبيقات السيلفرلايت sandbox مغلقة ومغلفة عن النظام ، هنا مع النظام الجديد لدينا بنية مختلفة وقابلية للوصول للنظام ، فوداعا لل sandbox ، ولكن أن تتخيلوا الجهد الذي بذلوه في دعم هذه التطبيقات !

    هنالك العديد من الاستنتاجات بدورها بعد دعم النظام الجيد وبعد دعم منصة الدوت نت بشكل أوسع منها

    لدينا في هذا النظام قابلية الوصول المباشر ولدينا قابلية استخدام الكود الغير مدار Native code  وأهلا بالسي بلس بلس ، هذا يعني لدينا تطبيقات أقوى لا محدودة .

    أيضا يعني أن السي شارب 5 ، والفيجوال بيسك 11 – الموجودين في منصة الدوت نت 4.5 – بكل خصائصهم الجديدة تم دعمها على الجوال بشكل افتراضي مثلا البرمجة الغير متزامنة async والبرمجة الموازية للأنوية المتعددة ( طبعا مع دعم نظام التشغيل بشكل مستقل لهذا الأمر ).

    أيضا يعني أن تطبيقات الويندوز فون 7 القديمة ستكون أسرع وأقل استهلاك للذاكرة على الويندوز فون 8 ، ببساطة لأنها تستخدم مكتبات سيلفرلايت مباشرة وليست معدلة لتعمل على منصة دخيلة كالسابق .

    لهذا يتطلب الأمر شراء جهاز جديد يعمل بالويندوز فون 8 ، لأن الويندوز فون 8 يتطلب عتاد جديد ببنية جديدة، لا أقول أنه لن يعمل على العتاد السابق ، بل أقول أن الكفاءة ستكون أفضل على العتاد الجديد، وأقل جهدا على الشركات من تعديل النظام الجديد ليتوافق مع عتادها القديم.

    أيضا لهذا لن تقوم مايكروسوفت بإصدار تحديث للويندوز 8، فالنظام الجديد ليست نظام معدل، بل هو نظام جديد كليا ، والذي يفترض من باب أن يصدر هذا التحديث هو شركات التصنيع ، مثلا شركة HTC  تدفع ثمن تراخيص النظام الجديد لكل مستخدم وتقوم بتعديله وإرساله كتحديث للأجهزة الخاصة بها ، وهذا ما لن يتم ، حظاً أوفر لنا مستخدمي الويندوز فون 7.

    شكرا لكم وأعتذر عن الإطالة.

  • لماذا لا يظهر النص كامل في أداة ScrollViewer

    واجهتني هذه المشكلة في العمل على برنامج صدر المسلم للجوال وندوز فون 7 ، حيث النص
    يظهر مقطوع في أداة الScrollViewer ، وبعد التجارب الفاشلة ، وثم البحث الناجح ،
    وجدت المشكلة بفضل الله

    المشكلة لا تكمن في الأداة ، المشكلة تكمن في أداة عرض النص مثلا TextBlock ، حيث
    لا تقبل بأكثر من 5000 حرف ، وبعد ذلك لا يظهر الباقي ، فكان الحل مني هو تقسيم
    النص ، أحسب عدد الحروف وإذا كانت أقل من 5000 ن أقوم بإضافة أداة عرض نص جديدة

    جربت أيضا أداة RichTextBox ، وهي تتصرف بنفس الآلية