Category Archives: Uncategorized

Operations on Array (Linear Equations)

Summary:

I developed long time ago an app to solve n linear equations. the software performs all mathematics operations on arrays such as: multiplication, division, and inversion. In addition, the application is main duty is to solve NxN first order (Linear) equations with n variable.

All arrays used in this software could be in any dimensions (n×n).

Finding mathematics solution –  never was the code copied or located from the Internet.

100% self-solution written 

 

Features:

  1. Solving N linear equations (unlimited number of equations)
  2. Different operations on arrays: addition, subtraction, multiplications, divisions
  3. Friendly-user interface
  4. Ability to save inputs as well as results
  5. Ability to turn a result into an input by simple Copy-Paste
  6. User interface supports two languages: Arabic and English
  7. Totally free: no ads
  8. Compatible with: Windows 10, 8.1, 8, 7, Vista, XP

 

The application has been downloaded hundreds of times

 

Visit my website to get some snapshots of the user interface + download
https://www.a-kanaan.com/Project/ViewProject/1

Abdulkarim

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

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

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

     

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

إقرأ المزيد

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

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

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

 

 

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

 

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

 

إقرأ المزيد

كيف تستخدم حلقة 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

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

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

     

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

     

    clip_image001[4]

     

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

    clip_image002[4]

    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)؟ الأمر في غاية البساطة:

 

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

var vs. dynamic in C#

This is going to be a very short article talking about var vs dynamic features in C#. var is a new keyword added to .NET 3.5. var is a new way to declaring variables in C#. In other words, instead of specifying the type of the defined variable, the compiler is going to figure out the data type of the declared variable.

For example, you can use var deceleration keyword instead of using int in the following lines.

  1.  int x = 3;
  2.  var y = 3;

For your information, both previous lines are exactly the same. Where the first line was written using int keyword to declare an integer variable; whereas, the second line used var to let the compiler figure out the value type. Both of the variables, x and y are integers variables.

This is helpful especially in complicated declared types when using LINQ.

dynamic was introduced in C# 4.0 where it is a new way to declare objects and variables. The main objective is that to let the compiler ignore type checking during the compile time, and force it during the run-time. If you rewrite the previous example using dynamic, you will not notice any difference in the execution.

  1.  dynamic z = 3;

The only difference is that the compiler has no idea about the data type of the variable z during the compile-time, but during the run-time. This is why it is called late bound.  This could be useful in certain matters where you need to deal with interoperability for example.

To recap, var is considered as early binding where data type determination and method lookup are done during compile-time; whereas, dynamic is a late bound where data type and method lookup are carried out through the run-time using reflection. Thus, we can conclude syntax checking happens during compile-time and typos must be corrected before program execution when using var; while dynamic syntax could throw errors during the run-time as syntax checking never happens before execution. To illustrate the last point, consider the following example:

  1. var s1 = “Hello”;
  2. int n1 = s1.Leng;
  3. dynamic s2 = “Hello”;
  4. int n2 = s2.Leng;

notice that the property name is wrong on purpose, Line 1 has a syntax error as type checking took place during the compile time. Unlike var, using dynamic is not going to highlight any syntax error in compile-time (Line 4 has no problem during compile-time), but an error will be thrown during the run-time after type checking takes place and property lookup-operation fails to find a property with the name ‘Leng’.

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