اذهب إلى المحتوى

طارق جهاد

الأعضاء
  • المساهمات

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

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    17

كل منشورات العضو طارق جهاد

  1. وعليكم السلام ورحمة الله. RESTful API او Representational State Transfer بمعنى ارسال/استقبال البيانات عن طريق بروتوكول http http يسمح لنا بارسال طلب بصيغة معينة وباكشن معين Get, Post, Put, Delete تسمى http verb بالتالي عندما اقوم بارسال طلب إلى السيرفر، فإن السيرفر سيفهم نوع الطلب بناءا على الـ verb المرسل مع الطلب بالتالي: اصبح تطوير rest api اسهل بمعنى يمكن ارسال الطلب لنفس العنوان ولكن باختلاف verb حتى استطيع عمل مختلف ال verbs على البيانات مثلا: https://www.mywebsite.com/api/customers يمكن ان استخدم هذا العنوان سواء لقراءة البيانات او كتابة بيانات جديدة إلى السيرفر. وطبعا انت المسؤول عن تطوير هذه الروابط والدوال المرتبطة معها والمسؤولة عن ادارة البيانات. اعود إلى سؤالك: اذا Restful api هي الية لارسال واستقبال البيانات وليس لانشاء الواجهات او ادارة قواعدة البيانات. ما انت بحاجة للتركيز عليه هو Client Application او التطبيق الذي سيقوم باستهلاك هذه البيانات. يجب ان يكون لديك شكل البيانات القادمة من rest إلى client application التالي: { "members": [ { "id": 1, "name":"member1", "level": 1, }, { "id": 2, "name":"member2", "level": 2, } ] } لدي هنا مجموعة من الاعضاء مع تفاصيل كل عضو، واستطيع بكل بساطة ان احدد للعضو الاول اضافة موضوع واحد والعضو الثاني اضافة موضوعين، بالاستفادة من خاصية level ضمن هذه الـ api بالتالي حاليا انت بحاجة لقراءة البيانات من قاعدة البيانات على السيرفر وتحويلها إلى json كما في المثال، او xml بحسب ما يناسبك. ثم تعريف طرح هذه البيانات بشكل web service يمكن الوصول لها عن طريق روابط معينة. وتقوم انت من خلال client application باستهلاك هذه البيانات وعرض واجهات المستخدم بالشكل المناسب. ملاحظة: client application يمكن ان يكون Web app Desktop app Mobile app IoT app TV app او اي تطبيق اخر حاول تفصيل ما تحاول انجازه بالتفصيل حتى استطيع مساعدتك اكثر بالتوفيق،،،
  2. وعليكم السلام ورحمة الله. اخي بأي حال انت بحاجة لاستضافة الموقع على IIS. سواء على الويب او على شبكة محلية. من خيارات المشروع ضمن فيجوال ستوديو، اختر Web ثم من قائمة السيرفرز اختر Local IIS ثم اضغط على Create Virtual Directory بالطبع انت بحاجة لان يكون IIS مفعل مسبقا على الجهاز، لذلك تأكد من ذلك كالتالي: اضغط على زر ابدء ابحث عن iis يظهر لديك Internet Information Services Manager IIS. اذا لم يظهر لديك، اتبع الخطوات التالية: Control Panel Programs and Features Turn Windows features on or off ثم ابحث فعل خيارات iis كما في الصورة اخيراً، اذا كنت تستخدم SQL Server لقاعدة البيانات، فأنت بحاجة لمنح IIS صلاحية للوصول إلى قاعدة البيانات، هذا موضوع اخر بالطبع بالتوفيق،،،
  3. هذا الكود لن يعمل في حال كانت جميع الاعداد المدخلة أكبر من الصفر )دائما سيكون 0 هو اصغر عدد!( لذلك يجب اعتبار اول عدد تم ادخاله هو اصغر رقم، ثم المرور على باقي الاعداد. الطرق كثيرة هذه احداها: public static void Main() { int min; int[] numbers = new int[7]; for (int i = 0; i < 7; i++) { numbers[i] = int.Parse(Console.ReadLine()); } min = numbers[0]; for (int i = 1; i < 7; i++) { if (numbers[i] < min) min = numbers[i]; } Console.WriteLine($"Min = {min}"); } وهذه طريقة اخرى: public static void Main() { int min = 0; for (int i = 0; i < 7; i++) { int number = int.Parse(Console.ReadLine()); if(i==0) { min = number; } if (number < min) { min = number; } } Console.WriteLine($"Min = {min}"); } بالتوفيق،،،
  4. أخي الكريم. على اعتبار ان اي برنامج سيتم تحويلة إلى لغة الألة بالنهاية Binary. وهي الشيء الوحيد الذي يفهمة المعالج بالتالي انت بحاجة للتعرف على ألية عمل المعالج نفسه، والذي يتكون من مجموعة من Registers المتصلة مع بعضها، ويتم نقل الاشارات الكهربائية Bits بين هذه register بطريقة منطقية، بمعنى بطريقة مصممة مسبقاً، بحيث ينتج عنها معالجة البيانات )معالجة البيانات ليست اكثر من عملية الجمع!( لاحظ الصورة المرفقة ل Register. يحوي المعالج على دارات مشابه له. مع مجموعة من الداوئر الالكترونية الاخرى مثALU, Accumulator جدير بالذكر، ان طبيعة هذه الـ Register إما 32-bit او 64-bit، وبالطبع 64 بت تكون اكثر قدرة على تخزين البيانات بالتالي قدرة معالجة اكبر حاول الاطلاع على الية عمل المعالج CPU، وهذا فيديو مساعد https://www.youtube.com/watch?v=cNN_tTXABUA
  5. You need something like this You can create the database by running this script todo-erd.sql
  6. بشكل مبسط يمكنك انشاء صورة (ربما صورة متحركة ايضا) لكن كلمة في لغة الاشارة، بحيث يصبح لديك قاموس في النهاية (يربط بين الكلمات والصور) ثم يكون لديك خوارزمية تقوم بقراءة النص وقراء الصور الموافقة لها من القاموس (يمكنك قراءة النص كلمة كلمة او جملة جملة بحسب القاموس المعرف مسبقاً) واخيرا نقوم بعرض الصور. يوجد مثال مرفق لهذا المقترح بشكل متطور. يمكنك استخدام احدى تقنيات 3D ونمذجة الكلمات والجمل إلى حركات بحيث يتم ايضا رسم المشهد بشكل متسلسل وانسيابي بين الحركات. اذا كان لديك خبرة ب سي شارب فإن تقنية WPF توفر بيئة رائعة لتطوير تطبيقات 3D، شاهد المثال على الرابط https://www.youtube.com/watch?v=3Nkh03djvo4 بالتوفيق،،، SignLanguageApp.rar
  7. اخي الكريم حدد ميولك في البداية (اي مجال برمجة بالضبط تود العمل به) الويب ام الموبايل او تطبيقات سطح المكتب، ام لا تعرف بالضبط حتى الآن؟ وثانيا حاول الاطلاع على مختلف انواع التكنولوجيا الموجودة وستجد نفسك منجذبا لبعضها دون الآخر. ومن هناك تستطيع ان تنطلق بشكل افضل. حالياً مجتمع البرمجيات يتجه بالكل نحو التكنولوجيا والتقنيات مفتوحة المصدر، واصبحت مشاركة الشركات الكبرى في تطوير ادواتها ولغاتها امرا روتينيا، بإمكانك الآن مثلا مشاركة قوقل او مايكروسوفت او مجتمع بايثون وغيرهم في تطوير الادوات والتنقيات. لديك على سبيل المثال وليس الحصر NodeJS AngularJS .NET Core ASP.NET Core Python Ruby Ruby On Rails Xamarin and Xamarin Forms Flutter وغيرها العديد جميعها تقنيات ولغات جميلة ومفتوحة المصدر، يمكن المشاركة في تطويرها واستخدامها في تطوير تطبيقات واحتراف مجال عملك، وبالطبع ستفتح لك المجال لاستكشاف تقنيات جديدة خصوصا اذا كنت شغوفا في البرمجة، ستجد نفسك متابعاً لكل ما هو جديد. مثلاً، امس تم اصدار النسخة 3.6 من تقنية Xamarin Forms وكنت بانتظارها لاحد المشاريع عندي، ومباشرة قمت بترقية التطبيق لدي. ودائما ابحث اين يتجة مجتمع البرمجة واحاول التكيف من المجتمع الجديد. نصيحتي لك من كل ما سبق، لا تعتمد على تقنية دون اخرى، لا تدخل في نقاشات اي تقنية او لغة افضل من الاخرى، حافظ على التعلم المستمر ومتابعة كل ما هو جديد، تحلى دائما بالصبر عند مواجهتك لمشاكل معينة، وحاول البحث عنها، وفهم سبب المشكلة لتزيد من رصيد خبرتك ومهاراتك. عذار على الاطالة بالتوفيق،،،
  8. وعليكم السلام ورحمة الله 1. كل لغات البرمجة تستخدم RAM في تخزين البيانات اثناء التنفيذ Run time حتى لو كنت تقرأ من ملف او من الانترنت، بالنهاية ستكون البيانات على ذاكرة جهازك، والمصفوفات سيتم تمثيلها بالذاكرة بشكل متشابه لكن يختلف النحو Syntax المستخدم ضمن لغة البرمجة لتعريف المصفوفات. 2. بالإمكان عمل اي شيء، لكن السؤال ما هي الفائدة من تفادي استخدام هياكل البيانات اذا كان الجواب لصعوبتها، فأنت حتما ستحتاجها عاجلا او آجلاً. لا تنسى ان هناك هياكل بيانات يوجد بها مسبقا خوارزميات البحث والترتيب (مثل Lists و Arrays) في جافا وسي شارب. 3 -4. الخوارزميات التكرارية او Loops هي من اساسيات جميع لغات البرمجة، حالها كحال الجمل الشرطية وتعريف المتغيرات والدوال وغيرها. لكن يوجد العديد من الاشكال لها وقد تجد بعض لغات البرمجة تحوي على اليات تكرارية لا توجد عند غيرها، لكن بشكل عام جميع لغات البرمجة يجب ان تحوي على اساسيات معينة حتى تسمى لغة برمجة ومن ضمن هذه الاساسيات الحلقات التكرارية بالتأكيد. وغالبا ستجد حل لاي مشكلة بأي لغة برمجة كانت عند اتقانك لدرجة معينة من هذه اللغة. 5. لديك انظمة عد مختلفة لانه لا يمكن لنظام عد واحد ان يشمل جميع الحالات، المعالج لا يفهم الى اشارة كهربائية (on -off) يتم اعتبارها رياضيا (0 -1) بالتالي انت بحاجة نظام عد يعتمد فقط على الصفر والواحد حتى يستطيع انجاز باقي العمليات الرياضية، لذلك لديك Bindary، ايضا نظام السداسي عشر Hexadecimal يستخدم لتسهيل تمثيل Binary (ويمكن استخدام 16 رمز في تمثيله) ( 0 1 2 3 4 5 6 7 8 9 A B C D E F) مثلا الرقم 0000 binary يقابل 0 hexadecimal 0001 يقابل 1 0010 يقابل 2 0011 يقابل 3 ... 1001 يقابل 9 1010 يقابل 10 ... 1111 يقابل F وهي 16 الحد الاعلى في نظام السداسي عشر، الان يمكنك تمثيل الاعداد بشكل اسهل ضمن النظام السداسي عشر بدل النظام الثنائي مثلا: العدد 11010100 بالنظام الثنائي مساوي ل D4 بالسداسي عشر والعدد 11111111111111110011 بالنظام الثنائي مساوي لFFFF3 بالسداسي عشر النظام الثماني octal يمكنك استخدم من 0 إلى 7 فقط لتمثيل الارقام، يعني 1 بايب فقط. 6. preemptable resources و non preemptable resources هي الية عمل ضمن نظام التشغيل وتعني ان مشاركة المصادر من عدمه. بمعنى هناك بعض المصادر يمكن مشاركتها وهناك مصادر لا يمكن، مثال مختصر، يمكن مشاركة الطابعة (الطباعة مصدر هنا) مع اكثر من شخص (عملية او Process ضمن نظام التشغيل) بحيث يقوم نظام التشغيل بالتحويل بين هذه العمليات Switching او Swapping، اي اذا تم انتهاء مدة التنفيذ المسموحة للعملية الاولى ولم تنهي الطباعة يقوم بتحويل المصدر للعملية الثانية وهكذا. هذا يسمى ب Multi-Tasking وهو اساس عمل جميع انظمة التشغيل الحديثة. طبعا انت لن تشعر ب Switching. لانه غالبا يتم على مستوى اجزاء من الثانية عدة مرات. هنا بامكانك اعتبار الطابعة preemptable resources، على الطرف الآخر سواقة الاقراص المدمجة CD لا يمكن مشاركتها او تحويلها لعملية اخرى، بمجرد اخراجك ل CD منها، انت انهيت العملية Process الخاصة بها، وبادخالك ل قرص اخر انت اعطيت كامل المصدر (CD Driver) الى عملية اخرى، لانه لا يمكن اجراء تحويل Swapping او Switching. اتمنى ان تصل الفكرة حاولت اختصارها 7. لا ليست جميع لغات البرمجة متكافئة، كل لغة تم تصميمها لاغراض معينة ولها متطلبات معينة. هناك لغات يمكنها التنفيذ مباشرة علىى نظام التشغيل مثل لغة السي والسي بلس بلس، وهناك لغات بحاجة بيئة افتراضية للتنفيذ مثل جافا بحاجة ل Java Virtual Machine وسي شارب بحاجة ل .Net Framework. اخيرا، كملاحظة الاسئلة السابقة هي اسئلة نظرية اكثر من كونها عملية، واذا كانت ترغب بالدخول او دخلت مسبقا في البرمجة، فهذه الاسئلة لا تشكل فرقا كبيرا في العمل، اما اذا كنت تدرس او تعمل بمجال علوم الحاسوب، فنعم انت بحاجة لمزيد من التعمق. بالتوفيق،،
  9. اخي الكريم، منتدى البرمجة هنا مختص بالبرمجيات وليس بصيانة الحاسوب. على أي حال، ربما يكون لديك مشكلة ماس كهربائي في الماوس نفسها، جرب تبديلها. بالتوفيق،،،
  10. أخي الكريم فقط كملاحظة قبل البدء بتعلم php او اي لغة اخرى. حاول ان تفهم بداية ما فائدة هذه اللغة او التقنية مثلاً php هي لغة الموقع على السيرفر بينما html,css, javascript واجهة المستخدم التي يراها ويتفاعل معها، لتنفيذ الكود الموجود على الموقع. لذلك دائماً احرص ان لا تبدأ بتعلم تقنية او لغة بمجرد نصيحة أحد الزملاء فقط، بل حاول الاطلاع على اللغات والتقنيات الموجودة ومقارنتها، ثم اختر ما يناسبك. فمثلاً، انا لا انصحك بتعلم php! لكن ربما انصحك بتعلم ASP.NET Core لذلك أيضاً لا تأخذ بنصيحتي قبل ان تتطلع بنفسك على هذه التقنيات ثم تختار المناسب لك. بالتوفيق،،،
  11. أخي الكريم، من الطبيعي جداً ان تواجه هكذا مشاكل في رحلتك في تعلم البرمجة. ومهما تابعت من الدورات التعليمية يبقى عليك جهد يجب ان تبذله بنفسك ومشاكل تواجهها أيضاً! وهي الضريبة التي يجب أن تدفعها! وإلا لكان الجميع يعمل الآن في مجال البرمجة! لكن يبقى هذا المجال فقط للصبورين اصحاب الشغف فيه. وعند نقطة معينة، تصبح جميع هذه المشاكل هي قاعدة بيانات معرفية تساعدك في تحسين مهاراتك واكتساب مهارات جديدة. ولذلك تأكد دائما ان المشكلة التي ستواجهك لها فائدين: ستقوم بتعليمك معلومة جديدة (غالباً تكون مفهوم معين لم تأخذه بعين الاعتبار مسبقاً) لان المشاكل في البرمجة هي اكبر معلم. تتخلص من عقبة في طريقك (وهي المشكلة نفسها، وطريقة تفاديها لاحقاً). وتصبح الامور اوضح مع مرور الوقت بالتوفيق،،،
  12. من ناحية التنفيذ او الاداء لا يوجد فرق. لكن عند حجم مشروع معين، يصبح تقسيم المشروع إلى أقسام (Packages) ضرورة، ومفيد في عدة نقاط: 1. هيكلية واضحة لملفات المشروع بحيث يسهل الوصول لاي ملف مطلوب. 2. سهولة البحث في نظام الملفات نفسه، فعندما يكون كل كلاس ضمن ملفه الخاص، فإن البحث عن الملف يعني البحث عن الكلاس، بعكس ان يكون مجموعة كلاسات ضمن نفس الملف. 3. إعادة الاستخدام او Reusability بمعنى يمكن اعادة استخدام نفس الخوارزميات في مشاريع اخرى. كما نقوم نحن باعادة استخدام كلاس Input/Output او كلاسات Graphics و Math وغيرها. اخيراً يجب الانتباه ان هذه المفاهيم لم تولد من العدم، لذلك بغض النظر عن مدى فائدتها حالياً إلا انني لا يمكنني ان اتجاهل هذه الفائدة، وسأعمل بمشروعي بحسب المعرفة التي لدي، وعندما اصل لنقطة احتاج فيها لهذه المفاهيم، ستكون الفائدة ظاهرة تمام. الامر مشابه لاسئلة، ما فائدة Abstract Class, Interface, Events, Delegates وغيرها؟ هي بالتأكيد مفيدة، لكن اذا كنت في مشروع ولم احتاج لها حقاً، لا يوجد اي مشكلة، لانني ساحتاجها لاحقاً. بالتوفيق،،،
  13. وعليكم السلام ورحمة الله. انت بحاجة فقط لمجموعة حلقات تكرارية loops للمرور على المصفوفة لتعبئتها اولا ثم لجمع الاسطر والاعمدة والاقطار. using System; namespace ConsoleApp1 { class Program { static void Main(string[] args) { // Read the array dimensions from the user Console.Write("Enter the array size: "); int size = int.Parse(Console.ReadLine()); // If the array size is even (not odd), then break; if (size % 2 == 0) { Console.WriteLine("Please enter en odd number!"); return; } // Define our [Size x Size] array int[,] array = new int[size, size]; // Assume that the array is magic until we make our calculations bool isMagic = true; // Just Print the array, to make it more readable // We have 2 loops, one for rows and the other for columns // It start from the [0,0], then [0,1] index until complete the first row // Then complete for [1,0], then [1,1] index until complete the second row, and so on... Console.WriteLine("Array size:"); for (int row = 0; row < size; row++) { for (int col = 0; col < size; col++) { Console.Write($"[{row},{col}]"); } Console.WriteLine(); } // Fill the array // Also using 2 loops Console.WriteLine(); Console.WriteLine("Please fill the array"); for (int row = 0; row < size; row++) { for (int col = 0; col < size; col++) { Console.Write($"Enter number at [{row},{col}]: "); array[row, col] = int.Parse(Console.ReadLine()); } } // Start our calculations Console.WriteLine(); Console.WriteLine("Calculating:"); // Sum the first row, where other rows, columns and diagonals must match int magicValue = 0; for (int i = 0; i < size; i++) { magicValue += array[i,0]; } // We will start by calculating the first row sum and the first col sum. for (int row = 0; row < size; row++) { int rowValue = 0; int colValue = 0; for (int col = 0; col < size; col++) { rowValue += array[col, row]; colValue += array[row, col]; } // if the current row sum != magicValue then break if(rowValue!= magicValue) { isMagic = false; break; } // Also if the current column sum != magicValue then break if(colValue!= magicValue) { isMagic = false; break; } // first loop match // Reset values to calcaute the rest of rows and cols. rowValue = 0; colValue = 0; } // If we reach this code without any break, then all rows and cols are matched // we need to check if isMagic still true, and not flagged to false inside the loops. if (isMagic) { // Print the final array Console.WriteLine("It's Magic Array :)"); for (int row = 0; row < size; row++) { for (int col = 0; col < size; col++) { Console.Write($"[{array[row,col]}]"); } Console.WriteLine(); } } else { Console.WriteLine("Not match"); } } } } يمكنك التجربة بمصفوفة بحجم 3x3 والمدخلات كالتالي: [2][7][6] [9][5][1] [4][3][8] بالتوفيق،،،
  14. أخي الكريم Convert ليست دالة ولكنها كلاس او Helper class تحوي على مجموعة دوال (دول int.Parse و double.Parse و DateTime.Parse وباقي دوال التحويل الاخرى) بحيث يمكن الوصول لجميع هذه الدوال عن طريق Convert. ولذلك ذكرت بان Convert هي Helper Class بمعنى كلاس يحوي على Static Methods يمكن استدعائها مباشرة (دون الحاجة لعمل اوبجكت من هذا الكلاس). مثال مشابه. لو فرضنا ان لديك كلاس Student بحيث يحوي على FirstName و LastName وكنت بحاجة للحصول على الاسم الكامل لهذا الطالب، فستقوم انت بعمل دالة داخل الكلاس Student بالشكل التالي: public string GetFullName(){ return FirstName + " " + LastName; } الآن لو كان لديك كلاس اخر Customer مثلا، ويحوي ايضا على FirstName و LastName فستوم ايضاً بإضافة نفس الدالة للحصول على الاسم الكامل. لكن ولكي لا تقوم بتكرار نفس الخوارزميات، يمكنك إنشاء Helper Class وليكن اسمه PrintHelper ويكون شكله بالشكل التالي: pulic static class PrintHelper { public static string GetFullName(string firstName, string lastName) { return firstName + " " + lastName; } } الآن ضمن كلاس Student يمكنك عمل التالي: public class Student { ... public string GetFullName() { return PrintHelper.GetFullName(FirstName, LastName); } } ضمن كلاس Customer ايضاً: public class Customer { ... public string GetFullName() { return PrintHelper.GetFullName(FirstName, LastName); } } اذا فعلياً كل ما قمت به أنا هو تسهيل عملية الوصول لهذه الخوارزميات، لكن النتيجة دائماً نفسها. بالتوفيق،،،
  15. وعليكم السلام ورحمة الله. مرفق طريقتين للحل واحدة باستخدام المصفوفات Arrays وواحدة باستخدام Lists طريقة المصفوفة using System; namespace ConsoleApp1 { class Program { static void Main(string[] args) { int[] numbers = new int[10]; int option = 0; for (int i = 0; i < 10; i++) { Console.Write("Enter number " + (i + 1) + ": "); numbers[i] = int.Parse(Console.ReadLine()); } do { Console.WriteLine(); Console.WriteLine("Choose what you want to do:"); Console.WriteLine(" 1. Show the largest number"); Console.WriteLine(" 2. Show the smallest number"); Console.WriteLine(" 3. Show the mean to one decimal"); Console.WriteLine(" 4. Display all input numbers"); Console.WriteLine(" 5. Finish this program"); option = int.Parse(Console.ReadLine()); if (option == 1) { int max = numbers[0]; for (int i = 0; i < 10; i++) { if (numbers[i] > max) max = numbers[i]; } Console.WriteLine("Max = " + max); } else if (option == 2) { int min = numbers[0]; for (int i = 0; i < 10; i++) { if (numbers[i] < min) min = numbers[i]; } Console.WriteLine("Min = " + min); } else if (option == 3) { int sum = 0; int count = 10; double average; for (int i = 0; i < 10; i++) { sum += numbers[i]; } average = sum / count; Console.WriteLine("Average = " + average); } else if (option == 4) { for (int i = 0; i < 10; i++) { Console.WriteLine(numbers[i]); } } } while (option != 5); } } } طريقة List using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApp1 { class Program { static void Main(string[] args) { List<int> numbers = new List<int>(); int option = 0; for (int i = 0; i < 10; i++) { Console.Write("Enter number " + (i + 1) + ": "); numbers.Add(int.Parse(Console.ReadLine())); } do { Console.WriteLine(); Console.WriteLine("Choose what you want to do:"); Console.WriteLine(" 1. Show the largest number"); Console.WriteLine(" 2. Show the smallest number"); Console.WriteLine(" 3. Show the mean to one decimal"); Console.WriteLine(" 4. Display all input numbers"); Console.WriteLine(" 5. Finish this program"); option = int.Parse(Console.ReadLine()); if (option == 1) { Console.WriteLine("Max = " + numbers.Max()); } else if (option == 2) { Console.WriteLine("Min = " + numbers.Min()); } else if (option == 3) { Console.WriteLine("Average = " + numbers.Average()); } else if (option == 4) { for (int i = 0; i < 10; i++) { Console.WriteLine(numbers[i]); } } } while (option != 5); } } } بالتوفيق،،،
  16. وعليكم السلام ورحمة الله. الهدف واحد، وهو التحويل بين الأنواع، وخاصة من القيم النصية إلى القيم العددية. لكن Parse تتبع لكل نوع، مثلا تجد int.Parse و double.Parse و DateTime.Parse و... لكن Convert تجميع بين هذه الدوال (دوال Parse المختلفة) مع خيارات اضافية في التحويل بين الأنواع. استخدم ما يناسبك بحسب السياق. جميعها تعتمد على نفس الخوارزميات في التحويل. بالتوفيق،،،
  17. أخي الكريم انت بحاجة للتعامل مع Package Manager بغض النظر عن لغة البرمجة او التقنية. باختصار Package Manager يقوم بإدارة المكتبات بالنيابة عنك (التنزيل، متابعة الاصدارات الجديدة، متطلبات كل مكتبة) وغيرها من المهام. يرجى الاطلاع على المقالة التالية عن Package Manager http://www.tarekjihad.com/archive/package-manager-ar بالتوفيق،،،
  18. أخي الكريم احترم اجابتك، لكني اراها تزيد من درجة التعقيد وصعبة على الفهم، بالاضافة انها تخلط المفاهيم ببعضها يعمل الويب على اساس نموذج اساسي معياري وهو (خادم - عميل) Server side & Client side بالشكل التالي: 1. Client يرسل طلب معين إلى سيرفر معين (كتابة رابط في المتصفح) 2. Server يقوم باستقبال الطلب وتنفيذه وتوليد النتيجة (صفحة html غالباً) 3. Client يقوم باستقبال النتيجة ويعرضها للمستخدم بالشكل المطلوب. مرة أخرى: 1. Client هو المتصفح (وعنوان IP الخاص بجهازك) 2. Server هو برنامج (مكتوب باحدى لغات Server Side) يوجد على الانترنت بحيث يمكن لاي Client الوصول اليه. 3. Client هو موحد بين جميع الانظمة واللغات، عكس Server side الاختلاف فقط بلغات Server Side فتجد مثلاً: PHP ASP.NET Ruby on Rails Python Java تختلف هذه اللغات فيما بينها، لكنها بالمجمل تتشابه بالية العمل، وتولد نتائج يستطيع اي client قراءتها وعرضها. اذا لا يمكن المقارنة بين Client side و Server side اطلاقا. لكن فعلياً يمكنك المقارنة بين لغات Server side. وكنصيحة شخصية ابتعد عن المقارنات التي هدفها اثبات ان تقنية افضل من الاخرى، واستخدم التقنية التي تتقارب مع حجم ومتطلبات مشروعك. ولا تنحاز إلى تقنية او لغة. ملاحظة: 1. هناك خلط بين مفاهيم لغة البرمجة واطار العمل، مثلاً Ruby هي لغة برمجة متعددة الانماط، لكن Ruby on Rails هو اطار عمل لكتابة تطبيقات الويب بلغة Ruby. ايضا ASP.NET هي اطار عمل لكتابة تطبيقات الويب بلغة سي شارب المتعددة الانماط. هناك لغات هي فقط للويب مثل PHP، عكس اللغات المتعددة الانماط التي تمكنك من كتابة انواع مختلفة من التطبيقات وليس فقط للويب. لكن يمكننا تجاوز هذه النقطة. 2. يمكن كتابة تطبيقات الويب ايضا باستخدام JavaScript باستخدام NodeJS ولكن هذا لن يخرجنا من النموذج (خادم - عميل). بالتوفيق،،،
  19. بإمكانك استخدام Visual Studio Code https://code.visualstudio.com/ وهو محرر نصي يعمل على جميع انظمة التشغيل، وبإمكانك تنفيذ سي شارب من خلاله. سي شارب في الماضي كانت لغة الويندوز فقط، ومرتبطة ارتباطا وثيقا ب فيجوال ستوديو، لكن مع تحول .NET إلى منصة مفتوحة اصبح هناك ادوات اخرى تمكنك من كتابة سي شارب على اكثر من بيئة عمل. بالتوفيق
  20. لديك قوس < اضافي قم بازالته. <script>src="A1.js"></script> Should be <script src="A1.js"></script> اعتقد ان هذا الملف مسؤول عن بعض animation، يمكنك ازالته، وتشغيل الصفحة من جديد، وفي حال لم يكن هناك فرق يمكنك ازالته. <script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/2.0.2/anime.min.js"></script> بالتوفيق،،،
  21. تعرضت لمسألة مثل هذه، كان لدي بيانات عدد كبير من العملاء، يمكنك الاكتفاء بالاسم والرقم او الرقم فقط. قمت بعمل تطبيق بسيط على السي شارب، يقوم فقط بالمرور على هذه البيانات (في حالتي وضعتها في جدول قاعدة بيانات) ومن اجل كل رقم، قمت بتوليد نص، وبالنهاية قمت بكتابة النتيجة إلى ملف contacts.vcf TempContactsEntities db = new TempContactsEntities(); var contacts = await db.Contacts.ToListAsync(); StringBuilder vcf = new StringBuilder(); List<string> names = new List<string>(); foreach (var item in contacts) { if (names.Contains(item.Name)) item.Name = item.Name + names.Count(x => x == item.Name); if(item.Phone.Length>=8) { vcf.AppendLine("BEGIN:VCARD"); vcf.AppendLine("VERSION:2.1"); vcf.AppendLine($"FN:{item.Name}"); vcf.AppendLine($"TEL;CELL:{item.Phone.Substring(0,8)}"); vcf.AppendLine("END:VCARD"); } names.Add(item.Name); } File.WriteAllText("contacts.vcf", vcf.ToString()); لست بحاجة للتقيد بلغة السي شارب أو بأي جزء من هذا الكود، باستثناء كود توليد النص، لاحظ من السطر 11 كيف اقوم بتوليد النص ودمجه مع المتغير vcf ليتكون لدي في النهاية نص طويل هو محتوى ملف vcf if (names.Contains(item.Name)) item.Name = item.Name + names.Count(x => x == item.Name); قمت بإضافة هذا الشرط، لانه في بعض الاحيان قد يتكرر لديك نفس الاسم في الملف الاصلي، لذلك قمت بخطوة بسيطة وهي في حال تكرار الاسم نضع بجانب الاسم عدد مرات التكرار، فيصبح لدي مثلا (أحمد، أحمد 1، أحمد 2، أحمد 3) وهكذا. بالتوفيق،،،
  22. وعليكم السلام ورحمة الله. اخي الكريم فكر في المنبه الموجود في نظام الاندرويد لديك، لو قمنا بضبطه على ساعة معينة، بحيث يعمل يومياً! انت بحاجة لنفس الالية، لكن بدل تنبيه المستخدم صوتياً سنقوم بجلب البيانات من السيرفر. تابع الحل على سؤال على الرابط: https://stackoverflow.com/questions/29058179/android-app-with-daily-notification بالتوفيق،،،
  23. وعليكم السلام ورحمة الله اذا كنت نتيجة الـ JSON تأتي صحيحة من السيرفر، يبقى عليك فقط تشكيل الـ html من هذه النتيجة ثم اضافتها إلى الـ DOM $(document).ready(function () { $('#btnSearch').click(function () { $.ajax({ type: "POST", url: "<?php echo base_url('user/search');?>", data: dataString, success: function (data) { var content = '<table><tr><th>ID</th><th>Full Name</th><th>Mobile</th></tr>'; $.each(data, function (index, value) { content += '<tr><td>' + data.ID + '</td><td>' + data.FULL_NAME + '</td><td>' + data.MOBILE +'</td></tr>'; }); content += '</table>'; $("#searchResult").html(content); } }); return false; }); }); لاحظ كيف قمنا بتشكيل الـ html داخل المتغير content ثم قمنا بالمرور على جميع العناصر، واضافة كل عنصر بشكل سطر. واخيرا اضافة ال html الناتج إلى الصفحة بالتوفيق،،،
  24. لا أعلم بالضبط ما هو المطلوب من نص سؤالك. لكن دعني اشاركك اخي الكريم ما دار في رأسي. الرياضيات بشكل عام، كانت لقرون طويلة مجرد علم تجريدي نظري (منطقي بالدرجة الاولى)، ولم تتوافر اليات تطبيقيه له، كما توافرت لعلوم اخرى مثل الفيزياء والكيمياء وغيرها. لكن مع قدوم الثورة المعلوماتية، وجد العلماء والباحثين والمعلوماتيين انفسهم امام مصدر علمي هائل وضخم وبِكر لم يسبق تطبيقه، وهو الرياضيات. لذلك حدث هذا الانفجار الهائل في الثورة المعلوماتية. فترى خوارزميات التشفير والرسوميات والذكاء والاصطناعي (وغيرها الاكثير) هي اساس رياضي وجد للعلن عن طريق البرمجة والخوارزميات. الآن، ما قمت انت بالعمل عليه هو ربط المنطق الرياضي في سوق المال مع المنطق البرمجي بحيث تظهر لنا برمجية جديدة قادرة على تحديد الاتجاه والسرعة ووو. اتفقت معك او اختلفت حول موضوع الخوارزمية، (التنبوء بسوق المال)، لكن انت فعلياً بحاجة لتطبيق الفكرة برمجياً، والافضل بدل تطبيقها بشكل برنامج، ان يتم تطبيقها كخدمات ويب، بحيث يمكن الاستفادة منها في انشاء اي تطبيق اخر سواء كان ويب او ديسكتوب او موبايل. بمعنى تقوم بتطوير هذه الخوارزميات (باي لغة برمجة تختارها) بحيث يتم نشر هذه الخدمة على شكل خدمة ويب Web API. بالتالي يصبح بالإمكان ارسال المدخلات إلى خدمة الويب هذه، والحصول على النتائج بشكل بيانات خام (يمكن لاي مطور اخر استغلال هذه البيانات الخام لعرضها بالشكل المناسب). بالتوفيق،،،
  25. الشهادة الجامعية ليست ضرورية في الحصول على وظيفة في مجال البرمجة، وكما زادت خبرتك في هذا المجال كانت فرصك اكبر. لكن تبقى الشهادة الجامعية ضرورية وحصرية للعديد من الوظائف (بما فيها البرمجة)، عدا عن كونها ضرورية في مجالات اخرى في هذه الحياة. بالتأكيد انت ستختار ما يناسب ظروفك الآن، لانه لو فرضنا بضرورة وجود الشهادة الجامعية، فانك ستحتاج اربع او خمس سنوات على الاقل من الآن للحصول عليها، ولا نعلم مالذي سيتغير وقتها! إما اذا كان سؤالك كنظرة للمستقبل، فأنا انصحك بالتأكيد بالدراسة الجامعية ومتابعة الدورات والورش التعليمية. بالتوفيق،،،
×
×
  • أضف...