كيف تنصب برنامج آر R Language

    السلام عليكم ورحمة الله | مرحباR logo.svg

    باللغة العربية نتقدم..

     

    تطيبق آر R من التطبيقات المهمة للعمليات الإحصائية. في هذه المقالة سنتعرف إلى كيفية تنصيب وإعداد بيئة آر

إقرأ المزيد

Advertisements

جهز مشروعك الأول من نموذج-عرض-تحكم MVC في بيئة دوت نت كور

السلام عليكم | مرحبا بكم

 

باللغة العربية نتقدم،،


بيئة دوت نت كور بيئة مازالت جديدة وبيئة يمكن أن تعتبر المستقبل إذ أن بيئة دوت نت كور مستقلة عن بيئة دوت نت التقليدية ولكن أبرز مزاياها أنها توفر لك امكانية تشغيل برنامجك على جميع المنصات من ويندوز إلى لينكس إلى نظام تشغيل أبل

 

في هذه المقالة سنتعرف كيف تجهز تطبيق نموذج-عرض-تحكم MVC في بيئة دوت نت كور

 

إقرأ المزيد

تعرف إلى الواصفة ValidationAttribute وطريقة استخدامها

هناك عدة طرق للتحقق من قيم نموذج model منها

  • باستخدام IValidatableObject
  • باستخدام الواصفة ValidationAttribute
  • الطريقة الأخرى هي استخدام Enterprise

 

 

في هذه المقالة سنتعرف إلى كيفية استخدام الفئة ValidationAttribute

 

باختصار التطبيق الذي سنقوم به هو تعريف واصفة UnlikeAttribute مهمتها هي التحقق من عدم التطابق (الإختلاف) بين حقلين أو خاصيتين داخل فئة. اذا كنت قد استخدمت الواصفة CompareAttribute ستدرك أن ما سنقوم به الآن هو العكس تماما لمبدأ عمل Compare. حيث أن الفئة السابقة مهمتها التحقق من التطابق وبالتالي حدوث اختلاف بين قيمتين فهذا يعني أن النموذج غير صحيح وعليه يترتب إجراء مناسب لضمان سلامة وصحة البيانات. ولكن الواصفة UnlikeAttribute التي سنقوم بإنشائها ستكون مخالفة تماما. قد تتساءل ما الفائدة من ذلك؟ ببساطة في حال كنت قد قررت إضافة إمكانية تغير كلمة المرور للمستخدم داخل أحد تطبيقاتك فربما ستقرر بعدم السماح للمستخدم باستخدام نفس كلمة المرور الحالية ككلمة مرور جديدة!

إقرأ المزيد

أنشء مشروعك الأول بايثن Python في بيئة فيجوال ستديو كود

هل جربت بيئة العمل الجديدة من مايكروسوفت فيجوال ستديو كود  header

في هذه المقالة سوف نتعرف إلى بيئة العمل هذه واستخدامها في كتابة التطبيق المشهور “أهلا عالم” باستخدام بايثن

إقرأ المزيد

كيف تستخدم حلقة foreach واحدة للحصول على قيم من مجموعتين مختلفتين؟!

 

السلام عليكم

وأهلا بكم،،

 

هل ترغب في أن تحصل على أكثر من قيمة من أكثر من مجموعة باستخدام تعليمة foreach واحدة؟  لنقل أنه لديك مجموعات (مصفوفتان) وترغب باستخدام حلقة foreach واحدة لمعالجة كلا المصفوفتين؟

 

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

 

clip_image001 طبعا اذا كان كلا المجموعتين ذات بعد متساو فلا بأس أما إن لم يكونا كذلك فإن التابع سوف يتوقف عند الوصول لآخر عنصر من أحد المجموعتين.

 

 لاحظ المثال التالي:

 

مثال سي شارب

 

var numbersInWords = new[] { “One”, “Two”, “Three” };

var numbers = new int[] { 1, 2, 3 };

 

foreach(var item in numbers.Zip(numbersInWords, (n, nw) =>

new { Number = n , Word = nw}))

{

Console.WriteLine($”{item.Number}: {item.Word}”);

}

 

 

نفذ البرنامج السابق لتحصل على:

 

ناتج خرج تنفيذ الشيفرة السابقة

PS C:\Sample> dotnet run

1: One

2: Two

3: Three

ابنِ تطبيقك في بيئة ويندوز WPF باستخدام حزمة Prism.Unity

أصبح تصميم برامج منصة ويندوز لا يقل تقنيا عن مفاهيم المستخدمة في تطبيقات شبكة الإتصالات. في هذه المقالة سوف نتعرف إلى كيفية استخدام مكتبة من مايكروسوفت تدعى Prism. سوف تساعدك هذه المكتبة وغيرها من المكتبات المرتبطة بها على بناء تطبيقات ديناميكية ومرنة من حيث أنها تسمح لك بتحديد معالم المناطق Regions في النافذة الرئيسية لتطبيقك فبذلك تكون قادرا على تغير  شرائح العرض Views أثناء عمل التطبيق. ولكن أولا دعنا نتعرف إلى بعض المفاهيم الأساسية والبسيطة!

 

بعد قراءة هذه المقالة ستكون قادرا استخدام مكتبة Prism.Unity من خلال

  1. تجهيز واجهة تطبيقك الرئيسية Shell
  2. رسم وتحديد الأماكن ضمن النافذة الرئيسة Shell مثلا
  3. بناء شرائح عرض Views

 

clip_image001 مفهوم Shell

بإختصار مفهوم Shell هي الواجهة الرئيسية  Master Windowأو Master Page بالنسبة لمطوري تطبيقات شكبة الإتصالات (ويب)

 

clip_image001[1] مفهوم المنطقة (المكان) Region

تتيح لك مكتبة Prism تعريف مناطق داخل الواجهة الرئيسية Shell لتمكنك من إضافة شرائح العرض Views أثناء عمل البرنامج

 

clip_image001[2] مفهوم “شرائح العرض” Views

شرائح العرض هي مفهوم العنصر مادون النافذة Window. هذه قد تمثل UserControl أو custom control. شريحة أو شرائح العرض ستظهر ضمن المناطق أو الأماكن Regions التي تم تحديدها داخل الواجهة الرئيسية Shell . بإختصار فإن عملك ستركز على شرائح العرض Views بعد أن تكون قد أتممت بناء واجهتك الرئيسية Shell و رسمت المناطق داخلها.

 

لاحظ الشكل التالي فإن Shell تمثل قالب الواجهة التي تراها ومن ثم فإن المناطق المعرفة عديدة منها Main Region و MainToolBarRegion و  ResearchRegion وأخير فإن شرائح العرض Views هي عبارة عن العناصر التي تراها داخل كل منطقة

 

كيف تنشء قاعدة بيانات جديدة في ماي سكول

إذا كانت هذه المرة الأولى التي تنشء فيها قاعدة بيانات ماي سكول فهذه المقالة تناسبك تماما.

 

بعد أن تكون قد أتممت عملية تنصيب MySQL Workbench بنجاح

 

      1. قم بتشغيل التطبيق MySQL Workbench

clip_image001[4]

 

  إقرأ المزيد

كيف تربط أكثر من حساب ون درايف على حاسبتك

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

     

    1. أدخل إلى حسابك الثانوي الجديد من خلال المتصفح
    2. ثم قم بإنشاء مجلد داخل الحساب يمكن أن تسميه مثلا “ملفات مشتركة”
    3. انقل محتويات ون درايف كاملا إلى هذا المجلد
    4. اختر المجلد الجديد واختر من القائمة “مشاركة”
    5. في نافذة المشاركة ، اختر مشاركة عبر البريد الإلكتروني (لاحظ الصورة التالية)

     

    clip_image001

     

    1. أدخل عنوان البريد الإلكتروني الأساسي الذي تود من خلاله الوصول إلى محتويات ون درايف الثانوي
    2. ستصل لك رسالة إلى بريدك الإلكتروني الأساسي تعلمك أنه قد مشاركتك مجلد من حساب آخر (حسابك الثانوي)
    3. انقر على الزر داخل الرسالة ليقوم المتصفح بفتح المجلد المشارك معك
    4. ستلاحظ في الصفحة هناك زر “إضافة إلى ون درايف الخاص بك” ، انقر عليه (لاحظ الصورة التالية)

    clip_image002

    1. وبعدها ستلاحظ أن المجلد الجديد قد ظهر ضمن حسابك الرئيسي في ون درايف على حاسبتك

     

    المصادر:

    [1]. http://windowsreport.com/two-onedrive-accounts/

ماذا تفعل لو فقدت محتوى أحد ملفاتك بعد انهيار مفاجئ لفيجوال ستديو

السلام عليكم ورحمة الله \ أهلا ومرحبا بكم

 

هل صادفك أن فقدت فحوى أحد ملفاتك بعد انهيار فيجوال ستديو اثناء عملك لتظهر لك الرسالة Visual Studio has stopped working ومن ثم Visual Studio Recovered Files ومن ثم تفاجئت أنك فقدت فحوى أحد الملفات؟؟

 

 

clip_image001

 

clip_image002

 

 

C:\Users\<UserName>\Documents\Visual Studio 2015\Backup Files\<Project Name>\

 

C:\Users\<UserName>\Documents\Visual Studio 2010\Backup Files\<Project Name>\ 

 

 

clip_image003

 

المراجع:

[1]. https://stackoverflow.com/a/6250480/2696230

كيف تغير نوع كائن من object إلى كائن مجهول (بدون التعريف) Anonymous Type

هل احتجت في يوم أو في مهمة إلى تغير نوع كائن object إلى كائن غير معرف (anonymous type)؟ الأمر في غاية البساطة:

 

private T ConvertTo<T>(T typeHolder, object obj) => (T)obj;

 

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

تساؤلك في محله والجواب انه قد تحتاج إلى إنشاء نسخة ثانية أو ثالثة من كائن غير معرف (anonoymous type) باستخدام  

FormatterServices أو Activator.

 

ملاحظة: هناك فرق في قدارت كلا الفئتين Activatior و FormatterServices. في حين أن Activator تتطلب منك مسبقا معرفة شكل الباني من حيث القيم الممررة (برامترات) إذ أن الأنواع غير مسبقة التعريف لا تحتوي على باني افتراضي أو باني بدون قيم ممررة (Parameterless Constructor) وهذا سوف يسبب متاعب خاصة مع الأنواع المعقدة (Complex Type)

 

var car = new { Maker = “BMW”, Type = “Sedan”, Year = 2017 };
var anotherCar = Activator.CreateInstance(car.GetType(), new object[] { “Mercedes-Benz”, “Four-Wheels”
, 1995 });
anotherCar.Dump();

 

5ø4

 

Maker

Mercedes-Benz

Type

Four-Wheels

Year

1995

 

ولكن ماذا عن المثال التالي:

var complexCar = new { Maker = “BMW”, Owners = new { First = “Ahmad”, Second = “Yaser” } };
var anotherComplexCar = Activator.CreateInstance(complexCar.GetType(), new object[] { “Mercedes”, new object[] { “Lama”, “Malek”
} });
anotherComplexCar.Dump();

 

6MissingMethodException4

Constructor on type ‘<>f__AnonymousType1`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[<>f__Anonymou…

المشكلة أن القيم الممررة لم تكن توافق شكل الباني

 

الحل الثاني هو استخدام FormatterService التي توفر عدد من التوابع لإنشاء نسخة من كائن object الميزة التي تقدمها أنها ستقوم بإنشاء نسخة من كائن دون استدعاء الباني

 

var complexCar = new { Maker = “BMW”, Owners = new { First = “Ahmad”, Second = “Yaser” } };
//var anotherComplexCar = Activator.CreateInstance(complexCar.GetType(), new object[] {“Mercedes”, new object[] { “Lama”, “Malek”}} );

var anotherComplexCar = System.Runtime.Serialization.FormatterServices.GetUninitializedObject(complexCar.GetType());
anotherComplexCar.Dump();

 

5ø4

 

Maker

null

Owners

null

 

لكن التابع GetUninitializedObject سوف يعيد نسخة لكن من نوع object وبالتالي نحتاج إلى عمل تغير نوع من object إلى نوع الكائن المجهول. علينا استخدام التابع المعرف في أول المقالة على النحو التالي:

private T CastTo<T>(T typeHolder, object obj) => (T)obj;

 

var complexCar = new { Maker = “BMW”, Owners = new { First = “Ahmad”, Second = “Yaser” } };
//var anotherComplexCar = Activator.CreateInstance(complexCar.GetType(), new object[] {“Mercedes”, new object[] { “Lama”, “Malek”}} );

var anotherComplexCar = System.Runtime.Serialization.FormatterServices.GetUninitializedObject(complexCar.GetType());
var castedAnotherComplexCar = CastTo(complexCar, anotherComplexCar);
anotherComplexCar.Dump();

 

المصادر:

[1]. https://stackoverflow.com/a/1409776/2696230

[2]. https://connect.microsoft.com/VisualStudio/feedback/details/521722/system-activator-createinstance-throws-system-missingmethodexception-with-constructor-containing-an-optional-parameter

[3]. https://stackoverflow.com/a/2501231/2696230

%d مدونون معجبون بهذه: