• الإعلانات

    • فيصل الحربي

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

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

Eng.Tareq Jehad

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

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

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

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

81 جيد

1 متابع

عن Eng.Tareq Jehad

  • الرتبة
    عضو
  • تاريخ الميلاد 01/01/1989

معلومات الملف الشخصي

  • الجنس ذكر
  • الدولة : Syria
  • اهتمامات GNU/Linux, Windows
    C/C++/C#/Java/Prolog
    ASP.NET, MVC, Silverlight MVVM, PHP
    HTML5, CSS3, jQuery
    WPF MVVM, WCF, LINQ,
    ADO.NET Entity Framework
    XML, SQL, Oracle, JSON.
    Android, Windows Phone 8

طرق الإتصال

  • Facebook https://www.facebook.com/administrationmanager

أحدث الزائرين لملفلك الشخصي

1,919 زياره للملف الشخصي
  1. وعليكم السلام ورحمة الله، اذا كنت تستخدم ASP.NET Web Forms هناك عنصر Wizard يفيدك في الحل. أما اذا كنت تستخدم ASP.NET MVC فالحل باستخدام مجموعة Actions او Multiple Views كما ذكر الأخ altae13، بمعنى الصفحة الاولى تحوي على رابط للصفحة الثانية بحيث يتم تمرير البيانات إليها، والصفحة الثانية تقوم بجمع بياناتها مع بيانات الصفحة الاولى وترسلها للصفحة الثالثة، وهكذا. واذا اردت العمل بمرونة اكبر استخدم Partial Views لتغيير فقط الجزء المخصص من الصفحة الخاص بالبيانات. او اذا كان لديك بعض المهارات في JavaScript و CSS، يمكنك عمل جميع التبويبات ضمن صفحة واحدة واخفاءها واظهارها بحسب حالة البيانات الحالية.   بالتوفيق،،،
  2. كوردوفا ، مشكلة تظهر عند الbuild ؟

    وعليكم السلام ورحمة الله، يلزمك تعريف الجافا ضمن متغيرات بيئة العمل في ويندوز. تابع الفيديو التالي: https://www.youtube.com/watch?v=jLArUJt-tBs
  3. لماذا ظهر Attach بدل من Srart

    معذرة على التأخير. يظهر انك لم تقم بتحديد مشروع الإقلاع، اضغط بالزر الأيمن على اسم المشروع ( Project) واختر Set as Startup Project   بالتوفيق،،،
  4. مرحبا بك اخي الكريم. دائما البداية تكون ضبابية وغير واضحة، لكن بعدها تصبح الطريق واضحة للجميع، ويمكن للشخص بعدها ان يغير حتى ما قد بدأ به ويبدأ مع ما يثير اهتمامه اكثر. على العموم، دعني اجيبك على اسئلتك بشكل عام. في النقطة الثانية، اكيد علوم الحاسوب من اجمل العلوم، وسواء بدأت بدارستها قبل دخول البرمجة ام لم تدخل، ستجد نفسك في مواجهتها في نقطة معينة، لكن بالطبع ليس جميعها، مثلا ستجد نفسك في مواجهة نظم التشغيل وMulti-threading و وغيرها من المفاهيم عندما سيتعلق برنامجك بزيادة الكفاءة واستخدام نظام التشغيل بالشكل الأمثل، لذلك يمكنك البداء بتعلم البرمجة من اليوم، مع اعتبار علوم الحاسوب كمرجع دائم في مختلف المشاكل التي قد تواجهك. في النقطة الثالثة، المقارنة غير صحيحة ب Visual Studio هو بيئة تطوير (مجموعة مترجمات وتقنيات) يعتمد على اطار عمل دوت نت الخاص بمايكروسوفت على انظمة الويندوز، اما vb.net في لغة برمجة اسمها فيجوال بيسك تعمل على بيئة الدوت نت. كما يوجد لغات اخرى مثل C#.net (سي شارب) ايضا تعمل تحت بيئة دوت نت، ويمكنك استخدام visual studio لكتابة برامجك بهذه اللغات. اعود واجمع لك النقطة الأولى مع النقطة الرابعة، وهي من أين ابدأ واي لغة اختار: هذا السؤال لا يوجد له جواب محدد لانه يعتمد بالدرجة الاولى عليك وعلى ميولك، ثم على سوق العمل الذي انت متواجد فيه، مثلا التطوير بلغات  مثل C أو ++C اصبح ضمن الشركات الكبيرة التي تعمل على انظمة تهتم بالسرعة والاداء وغيرها. لذلك عليك تحديد ما هو ميولك اولا، وسأعطيك الاختبار التالي: 1. هل ترغب بتعلم البرمجة كهواية؟ 2. هل ترغب بتعلم البرمجة لكتابة تطبيقات سطح المكتب فقط؟ 3. هل ترغب بتعلم البرمجة لكتابة تطبيقات الويب؟ 4. هل ترغب بتعلم البرمجة لكتابة تطبيقات الموبايل؟ بالتأكيد عالم البرمجة مغري، خصوصا بعد التطوير الكبير في العقد الماضي، لذلك اذا كنت بالبداية وترغب بالبداء من الصفر، انصحك بالبدء بتعلم لغة HTML  لعمل صفحات الويب والتعريج بعدها على CSS لإعطاء تصميم افضل لهذه الصفحات، الموضوع هنا لن يتسغرق منك الكثير من الوقت، خصوصا اذا كنت شغوفاً بهذا العالم. بعدها من الضروري جدا تعلم لغة JavaScript، وبأمكاني ان اصفها بلغة البرمجة الأولى على الإطلاق (مع التحفظ عليها كلغة برمجة في مخصصة للعمل فقط ضمن متصفح الويب وعدة عناصر اخرى) لكنها جوهرية وستعطيك اغلب المفاهيم في اللغات الأخرى مثل java او سي شارب او PHP وغيرها. هنا انت في مرحلة تسمى Client Side، تنتقل بعدها لمرحلة Server Side لكتابة البرامج الحقيقة التي تعمل مع قواعد البيانات وغيرها، هنا لكن الخيار. بإمكانك اختيار جافا، او سي شارب او PHP، وبإمكاني ان انصحك بالابتعاد عن PHP، لانها مخصصة للويب فقط، بينما سي شارب وجافا بإمكانها عمل جميع انواع التطبيقات (ويب، موبايل، ديسكتوب) الخيار صعب بين هاتين اللغتين، ولكن برأيي الشخصي الذهاب مع سي شارب سيكون افضل لك واسرع، لان مايكروسوفت لديها البيئة الكاملة لاحتضان جميع تقنياتاها، ولو اردت التعمق في برامج سطح المكتب اطلع على WPF وهي تقنية تكتب بلغة سي شارب، واطلع على مواضيع Data-Binding الموجودة ضمنها، لترى جمالية انشاء برامج سطح مكتب.   بالنهاية الخيار عائد لك، يلزمك اجراء دراسة بناءً على ما ذكرت وعلى ما اصبح لديك من معلومات والاختيار، وبالنهاية كما اخبرتك عند نقطة معينة ستصبح قادر على تحديد هدفك والمطلوب.   بالتوفيق،،،
  5. لماذا ظهر Attach بدل من Srart

    وعليكم السلام ورحمة الله. اخي الكريم عملية Attach مفيدة جدا في حال اردت ربط برنامجك مع Process اخرى، كما يعمل الـ Visual studio في حالة Debug حيث يقوم بربط البرنامج (او بتشغيله ضمن نفس مجال عمل Process معينة). مثل Visual Studio Debugger يتضح من الصورة ان برنامجك قيد التنفيذ حالياً، بحيث لا يمكنك تنفيذه مرة اخرى حتى تغلق الـ process الأولى التي تشغله، يقوم الـ visual studio ب 10 محاولات للتنفيذ وبعدها يعطيك رسائل الخطأ هذه.   بالتوفيق،،،
  6. وعليكم السلام ورحمة الله. لا انصحك بحفظ الصور ضمن قاعدة البيانات، أياً كان نوعها. الأفضل ان تقوم بتخزين إسم او مسار الصورة في جدول قاعدة البيانات (من نوع TEXT)، وتقوم بحفظ الصورة في مكان ما (عادة بمجلد ضمن مجلد المشروع) ولعرض الصورة نقوم بإنشاء مسارة الصورة (مسار مجلد الصور + إسم الصورة من قاعدة البيانات) ثم نقرأها عن طريق #C. هذه الطريقة تشبه الطريقة المتبعه في تطبيقات الويب أيضاً. ملاحظة: تجنباً لحفظ صورتين بنفس الإسم (مما سيعمل على استبدال الصورة الأصلية) عند حفظ الصورة قم بإعطاءها إسم مميز، مثل GUID او DateTime HashCode   بالتوفيق،،،
  7. وعليكم السلام ورحمة الله، اخي الكريم جرب المثال التالي: var users = Db.Users.Where(x => Db.Admins.Any(admin => admin.UserId != x.Id)); بالتوفيق،،،
  8. المساعدة في رسالة الخطأ في جملة ال SQL

    وعليكم السلام ورحمة الله اخي الكريم اتوقع الخطأ في جملة SQL INSERT INTO TBL1 Valuse(@ID, @Namee), @Picemp يجب ان تكون بالشكل INSERT INTO TBL1 Valuse(@ID, @Namee, @Picemp) يعني جميع القيم ضمن الأقواس   بالتوفيق
  9. وعليكم السلام ورحمة الله. بالطبع انت بحاجة ل Sql server على جهاز العميل، ولا اقصد Sql server management studio،  بحيث يمكنك الاتصال بها عن طريق Sql server Management studio المثبت على جهازك انت، لان Sql server هو بالنهاية Windows Service. بالنسبة للحماية يمكنك جعلها محمية باسم مستخدم وكلمة مرور، بحيث يمكن قراءة هذه البيانات من ضمن البرنامج فقط.   بالتوفيق
  10. ما معنى ان كائن يساوى كائن

    وعليكم السلام ورحمة الله اخي الكريم، جملة المساواة تتم دائما بين متغييرين من نفس النوع، لكن يجب التمييز بين حالتين: c1 = c2 تعني أنه تم نقل مؤشر الكائن c1 ليؤشر على موقع الكائن c2 بالذاكرة. ملاحظة: عند تعريف كائن (car1) يتم حجز مساحة لعنوانه فقط ضمن Stack والتي هي ذاكرة محدودة وسريعة الوصول بالنسبة للمعالج، وجميع البيانات المعرفة ضمن هذا الكائن يتم تخزينها ضمن الذاكرة الشاسعة Heap، بالتالي تبقى مساحة الـ Stack خفيفة، والعلاقة بين Stack و Heap هي المؤشر نفسه Pointer. لذلك تسمى الأنواع المشتقة من الأصناف ب Reference Type أما عند تعريف المتغيرات الأساسية Primitive Data Types مثل int, double, char, bool، يتم حجزها مع قيمتها مباشرة ضمن ال Stack، لذلك تعرف ب Value Type بالتالي يجب التفريق بين عملية المساواة بين Value Type او Reference Type. Value Type، يتم نسخ القيمة من المتغير الثاني إلى المتغير الأول مع احتفاظ كل منهم بعنوانه الخاص، وأي تعديل لاحق على احدى المتغيريين لا يؤثر على قيم المتغير الأخر. Reference Type، يتم نسخ عنوان الكائن الثاني إلى الكائن الأول بالتالي تصبح المصادر (البيانات ضمن Heap) مشتركة بين الكائنين وأي تعديل على بيانات كائن ستؤثر مباشرة على بيانات الكائن الاخر.   بالنسبة للمساواة بغرض التحقق (true, false) Value Type، إذا كانت قيمة المتغير الأول تساوي قيمة المتغير الثاني فإن ناتج الجملة True او فإنها بالتأكيد False (مثال 5==5) Reference Type، إذا كان عنوان المتغير الأول يساوي عنوان المتغير الثاني (وهذا لن يحدث أبداً) بالتالي فنتيجة التحقق دائما False للتغلب على هذه المشكلة ننظر للمثال التالي: public class Car { public string Model { get; set; } public string Color { get; set; } public Car(string model, string color) { Model = model; Color = color; } } class Program { static void Main(string[] args) { Car car1 = new Car("Toyota", "White"); Car car2 = new Car("Toyota", "White"); bool isEqual = (car1 == car2); Console.WriteLine(isEqual); // False } } نلاحظ ان نتيجة التحقق كانت False، مع أن قيم الكائنين نفسها، والسبب كما ذكرت أن التحقق يتم على العنوان بالذاكرة وليس القيم. لجعل التحقق يتم عن طريق القيم، يجب تعريف دوال Operators، او عمل Override للميثود Equals public class Car { public string Model { get; set; } public string Color { get; set; } public Car(string model, string color) { Model = model; Color = color; } public override bool Equals(object obj) { Car tempCar = (Car)obj; return (tempCar.Model == this.Model && tempCar.Color == this.Color); } public static bool operator == (Car car1, Car car2) { return (car1.Model == car2.Model && car1.Color == car2.Color); } public static bool operator !=(Car car1, Car car2) { return (car1.Model != car2.Model || car1.Color != car2.Color); } } class Program { static void Main(string[] args) { Car car1 = new Car("Toyota", "White"); Car car2 = new Car("Toyota", "White"); bool isEqual = (car1 == car2); Console.WriteLine(isEqual); // True } } لاحظ ان نتيجة المساواة اصبح True، لان التحقق اصبح حسب الشروط المعرفة. اخيرا: أترك لك تمرين صغير، جرب نفس التجربة السابقة على كائن Struct وليس Class   بالتوفيق،،، طارق جهاد
  11. هناك الكثير من الحلول، تختلف حسب طبيعة التطبيق. 1. المفتاح الرئيسي في جدول Details هو رقم (يمثل رقم الفاتورة) بالتالي عند تحرير فاتورة (وجبة جديدة) يتم طباعة رقمها معها والتعامل على اساسه. 1. يتم حفظ تاريخ ووقت الفاتورة الجديدة، وبالتالي احدث فاتورة لوجبة معينة هي الاحدث زمنا. 2. يمكن عمل حقل جديد ضمن جدول Details هو حقل الحالة Status، وليكن قيم عددية       0 =  جديد                    1 =  ملغي                   2 =  أرشيف  بالتالي عند اضافة فاتورة جديدة يكون بحالة  جديد  وعند تقديم الطلب والانتهاء منه ننقله ل  أرشيف  وفي حال الغى الزبون الطلب ننقله لحالة  ملغي . وهذه العملية تعتبر مهمة في حالة كان هناك اهتمام بمراحل الفاتورة والعمليات اللاحقة عليها.   طبعا الحل الاول هو الحل الأسهل والأمثل نوعا ما. بالتوفيق،،،
  12. وعليكم السلام ورحمة الله. بالتأكيد لا يمكن تكرار المفتاح الرئيسي، في الحالة التي تتحدث عنها، الافضل عمل جدول جديد وليكن MealDetails، بحيث نضع فيه تفاصيل الوجبة من حيث السعر وعدد الأفراد والتاريخ وووو، ونترك الجدول الرئيسي الخاص بالوجبات (كجدول تصنيفات) ويكون الباركود (المفتاح الرئيسي) هو مفتاح ثانوي في الجدول الجديد. بهذه الحالة لا يمكن تكرار الباركود، ولكن يمكن جلب كل الوجبات المرتبطة به.   بالتوفيق،،،
  13. السلام عليكم ورحمة الله. التطبيقات التي يتم تطويرها ضمن بيئة الـ .NET Framework. يتم تنفيذها ضمن هذه البيئة (الافتراضية)، بمعنى انها لا تتنفذ مباشرة ضمن CPU، نفس الأمر موجود بالنسبة لتطبيقات الجافا Java، لأنها ايضا تتنفذ ضمن البيئة الافتراضية Java Virtual Machine. بالتالي فالتطبيق بحاجة لوجود هذه البيئة حتى يتمكن من التنفيذ.   الحل: كما ذكر الأخ ابو طلال يمكن تحزيم .NET framework بنفس الحزمة، إليك هذا الفيديو التوضيحي تحزيم البرامج بواسطة InstallShield لكن الأخبار الجيدة والجديدة، أن NET Framework. أصبح جزءا اساسيا من نظام التشغيل Windows 8 وما بعده من اصدارات، فالاجهزة التي تعمل بنظام 8 او ما بعده ليست بحاجة لتثبيت .NET إلا في حالة الترقية لإصدار أحدث.   اخيراً: نصيحة عامة بأن ندرس أساسيات عمل نظم التشغيل و Virtual Machine، وادارة الذاكرة، وغيرها من مفاهيم نظم التشغيل، مما يساعدنا في تطوير البرمجيات بالشكل الأمثل.   بالتوفيق
  14. جلب البيانات من sql server

    وعليكم السلام ورحمة الله. لا فائدة من عرض جميع البيانات مرة واحدة، وحتى وان كان الهدف البحث والتصفيه، فالأفضل أن يتم طلب البيانات (حسب معايير البحث والتصفيه) في كل مرة نحتاج لعمليات البحث. بمعنى أن يتم البحث ضمن SQL Server وليس ضمن ذاكرة جهاز العميل.   الحل الأمثل: 1. عند طلب البيانات لأول مرة (لايوجد معايير بحث حاليا) يتم جلب عدد معين من البيانات (25) سطر فقط، ويتم عمل Paging لباقي البيانات، وعند الانتقال للصفحة الثانية، يتم احضار الأسطر من الجدول بدءأ من السطر (26) وحتى السطر (50)، والصفحة الثالثة تبدأ من السطر (51) وحتى (75) وهكذا. 2. عند الحاجة لعمل بحث او تصفيه نقوم بطلب (Query) تحوي على بيانات البحث ونقوم أيضا بطلبها بشكل Paging في حال كانت النتائج تتجاوز 25 سطر مثلاً.   بالتوفيق
  15. طباعة جدول في فورم

    السلام عليكم ورحمة الله،،، استطيع افادتك لكن ضمن  WPF   فهناك بإمكانك طباعة كل محتويات الواجهة، ومن ضمنها جدول بيانات. مثلاً، لو كان لدينا Panel وبها مجموعة من العناصر بالإمكان طباعة المحتويات عن طريق PrintVisual الموجودة ضمن PrintDialog   وطبعاً هناك الكثير من المزايا أيضا، مثل بإمكانك حفظ الشكل كصورة بدل الطباعة.   اذا كان موضوع الطباعة هذا يهمك مع wpf بإمكاني اعطائك امثلة عنه.   بالتوفيق،،،