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

محمد ربيع زليول

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

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

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

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

    18

كل منشورات العضو محمد ربيع زليول

  1. خلال مواضيع الأكادمية ستتعلم عن أساسيات C# وبعض مواضيع Xamarin. هذه المواضيع ستمكنك من صناعة بعض التطبيقات، لكنك ستحتاج إلى دراسة مواضيع أخرى أيضًا. الجزء الأكبر من تعلم لغة برمجية معينة، يكون عند تطبيقك لما تعلمته، بعد تعلمك للأساسيات حاول إنشاء تطبيق بسيط، وعندما تواجهك مشاكل حاول البحث عن حلول للمشاكل التي واجهتك، خلال عملية البحث عن الحلول ستتعلم الكثير من الأشياء الجديدة. وهكذا، في كل مرة ستنشئ فيه تطبيقًا جديدًا ستواجهك بعض المشاكل ستبحث عن حل لها وخلال بحثك وستتعلم وتتطور.
  2. ستجدين الشرح الكامل للخوارزمية في هذه الصفحة: الترتيب بالإدراج. تشرح الصفحة طريقة عمل الخوارزمية مع شرح إنشائها بالطريقة التكرارية والتعاودية مع الأكواد. حسب السؤال المشار من طرفك، ستحتاجين الطريقة التعاودية. حل الخوارزمية كالتالي: #include <iostream> using namespace std; void insertionSortRecursiveAscending (int arr[], int n) { // الحالة الأساس if (n <= 1) return; // n-1 ترتيب أول العناصر التي تحمل القيمة insertionSortRecursiveAscending( arr, n-1 ); // إدراج العنصر الأخير في مكانه الصحيح ضمن المصفوفة المرتبة int last = arr[n-1]; int j = n-2; /* تحريك العناصر في المصفوفة arr[0..i-1] والتي تكون أكبر من المفتاح المعطى بمقدار موقع واحد عن موقعها الحالي */ while (j >= 0 && arr[j] > last) { arr[j+1] = arr[j]; j--; } arr[j+1] = last; } void insertionSortRecursiveDescending(int arr[], int n) { // الحالة الأساس if (n <= 1) return; // n-1 ترتيب أول العناصر التي تحمل القيمة insertionSortRecursiveDescending( arr, n-1 ); // إدراج العنصر الأخير في مكانه الصحيح ضمن المصفوفة المرتبة int last = arr[n-1]; int j = n-2; /* تحريك العناصر في المصفوفة arr[0..i-1] والتي تكون أصغر من المفتاح المعطى بمقدار موقع واحد عن موقعها الحالي */ while (j >= 0 && arr[j] < last) { arr[j+1] = arr[j]; j--; } arr[j+1] = last; } // دالة مساعدة لطباعة محتويات المصفوفة void printArray(int arr[], int n) { for (int i=0; i < n; i++) cout << arr[i] <<" "; cout << endl; } /* اختبار الدوال السابقة */ int main() { int i; int arr[10]; cout << "enter 10 numbers: " << endl; // نطلب من المستخدم إدخال 10 أرقام for (i = 0; i < 10; i++) { cin >> arr[z]; // نقرأ الأرقام من المستخدم } int n = sizeof(arr)/sizeof(arr[0]); insertionSortRecursiveAscending(arr, n); printArray(arr, n); // نطبع قيم المصفوفة التصاعدية insertionSortRecursiveDescending(arr, n); printArray(arr, n); // نطبع قيم المصفوصة التنازيلة return 0; }
  3. إن كنت تفضل الدروس المكتوبة، قم بمتابعة مواضيع الأكاديمة، لكن إن كنت تفضل الدروس المرئية أنصحك بقناة بغداد الجديدة.
  4. أغلب تلك الكورسات تحتوي على أغلب الأساسيات، فقط اختر إحدها وابدأ التعلم.
  5. ما هي اللغة البرمجية، التي تريدين حل التمرين عن طريقها؟
  6. لن تعلمك المواضيع كل الأساسيات لكنها ستعلمك العديد منها.
  7. أتفق وبشدة مع فكرة الأخ عبود سمير، لا توجد أفضل دورة لتعلم أي تقنية أو شيء ما، لكل شخص تفضيلاته، والطريقة التي يحب أن يتعلم عن طريقها. وأضيف أنا الترشيحات التالية: تعلم أساسيات البرمجة ب سي شارب: دورة مقدمة من صاحب قناة بغداد الجديدة، أحببت طريقة شرحه وتبسيطه للمفاهيم، كما أن قناته تحتوي على شروحات أخرى، كشرح xamarin أو دورات تعلم برمجة الألعاب عن طريقة Unity. Tutorialspoint: وهو موقع باللغة الإنجليزية يحتوي على العديد من الشروحات لمختلف اللغات البرمجية وإيطارات العمل والمكتبات، ومن بينها شرح للغة C#، أستخدمه عادة في تعرف على اللغات البرمجية او التقنيات. أكادمية حسوب: ستجد في الرابط التالي، سلسلة لشرح C#، كما أن الأكادمية تقدم شروحات لتعلم Xamarin و Unity3D. C# Tutorial - Full Course for Beginners: يشرح هذا الفيديو مجموعة من مفاهيم C#، يبدأ بالمقدمة وتحميل الأدوات وصولًا لمفاهيم الصفات والكائنات. يمكنك تجربة بعض الدورات وستجد بعد ذلك الدورة الأفضل بالنسبة لك.
  8. هل لم يشتغل التطبيق؟ أم اشتغل ولم يظهر pdf؟
  9. للتعديل على مكان الأزرار يمكنك تغير ترتيب الكود بحيث تجعل قائمة الأزرار بعد viewer. الكود الحالي: <div class="top-bar"> <button class="btn" id="prev-page"> <i class="fas fa-arrow-circle-left"></i> Prev Page </button> <button class="btn" id="next-page"> Next Page <i class="fas fa-arrow-circle-right"></i> </button> <span class="page-info"> Page <span id="page-num"></span> of <span id="page-count"></span> </span> </div> <canvas id="pdf-render"></canvas> يصبح كالتالي: <canvas id="pdf-render"></canvas> <div class="top-bar"> <button class="btn" id="prev-page"> <i class="fas fa-arrow-circle-left"></i> Prev Page </button> <button class="btn" id="next-page"> Next Page <i class="fas fa-arrow-circle-right"></i> </button> <span class="page-info"> Page <span id="page-num"></span> of <span id="page-count"></span> </span> </div> أما بالنسبة لحجم الأزرار نقوم بإدخال span الذي يحتوي على كلاس page-info داخل div نعطيه مثلا كلاس page-info-container كالتالي: <div class="page-info-container"> <span class="page-info"> Page <span id="page-num"></span> of <span id="page-count"></span> </span> </div> ونقوم ببعض التغيرات في ملف CSS: .btn { background: coral; color: #fff; border: none; outline: none; cursor: pointer; padding: 0.7rem 2rem; /* نضيف الأسطر التالية */ width: 50%; float: left; } .page-info-container { width: 100%; clear: both; } ليكون ملف HTML كالتالي: <!DOCTYPE html> <html lang="ar"> <head> <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;" /> <meta name="format-detection" content="telephone=no" /> <meta name="msapplication-tap-highlight" content="no" /> <meta name="viewport" content="initial-scale=1, width=device-width, viewport-fit=cover" /> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous" /> <link rel="stylesheet" type="text/css" href="css/index.css" /> </head> <body> <canvas id="pdf-render"></canvas> <div class="top-bar"> <button class="btn" id="prev-page"> <i class="fas fa-arrow-circle-left"></i> Prev Page </button> <button class="btn" id="next-page"> Next Page <i class="fas fa-arrow-circle-right"></i> </button> <div class="page-info-container"> <span class="page-info"> Page <span id="page-num"></span> of <span id="page-count"></span> </span> </div> </div> <script src="../../node_modules/pdfjs-dist/build/pdf.js"></script> <script type="text/javascript" src="./js/index.js"></script> </body> </html> وملف CSS كالتالي: * { margin: 0; padding: 0; } .top-bar { background: #333; color: #fff; padding: 1rem; } .btn { background: coral; color: #fff; border: none; outline: none; cursor: pointer; padding: 0.7rem 2rem; width: 50%; float: left; } .btn:hover { opacity: 0.9; } .page-info-container { width: 100%; clear: both; } .page-info { margin-left: 1rem; } .error { background: orangered; color: #fff; padding: 1rem; }
  10. تستخدم الإثنين معًا، SQL Server كقاعدة بيانات، وASP.NET كإطار عمل للتواصل بالقاعدة.
  11. نعم، يجب إضافة browser أولًا، أو يمكنك تشغيلها على Android مثلًا. لإضافة browser إستخدم الأمر التالي: cordova platform add browser وإن حصلت مشكلة يمكنك حذفه وإعادة إضافته من خلال الأمرين: cordova platform rm browser cordova platform add browser
  12. هناك إختلاف بين SQL Server و Asp.NET، لكل واحدة منها وظيفة مختلفة، إذن ليمكنك تعويض واحدة بالأخرى. أما SQL Server هو نوع من أنواع قواعد البيانات. تستخدم قواعد البيانات لتخزين المعلومات، بحيث يتم تنظيم المعلومات على شكل جداول، لكل جدول وظيفة. مثلًا، نقوم بإنشاء جدول لتسجيل الأعضاء ومعلوماتهم، جدول لتسجيل المقالات، جدول للتعليقات ... كل جدول من الجداول يحتوي على بنية معينة ( مجموعة من الأعمدة )، مثال: في جدول الأعضاء سيكون الجدول مكونًا من الإسم الأول، الإسم الأخير، رقم الهاتف، الإميل، كلمة السر. أما جدول المقالات سيتكون من أعمدة، كإسم المقال، المحتوى، التصنيف و الكاتب. ASP.NET هو إطار عمل لتطوير صفحات الويب ومن بين إستخداماته التواصل مع قواعد البيانات بحيث يمكننا عن طريقه الإتصال بقواعد البيانات وجلب المعلومات، إضافتها، تعديلها أو حذفها من القاعدة، بحيث يعمل الإطار كوسيط بين التطبيق وقاعدة البيانات.
  13. المشكلة هنا، أنك لم تقم بتشغيل الملفات عن طريق أمر: cordova run browser
  14. يعمل البرنامج عندي بشكل جيد, المرجو التحقق من تثبيت المكتبة عن طريق الأمر في الرد السابق، وإن لم تعمل قم بعمل صورة لل console لنرى ما هي الأخطاء التي تظهر.
  15. قمت برفع ملف www، يمكنك الإطلاع عليه من هنا: www.zip قم بإضافة ملف pdf.pdf لمجلد docs لأنني لم أقم برفعه، وطبعًا عوض هذا المجلد بمجلد www لديك.
  16. هل قمت بتغير مسار الملف؟ أو تعديل إسمه؟ يجب وضع الملف بإسم pdf.pdf داخل مجلد docs ليعمل الكود.
  17. المشكلة هنا مشكلة إصدارات ،الكود بالمستودع إصداره قديم ولا يوافق الإصدار الحديث من المكتبة. قم بالخطوات التالية لحل المشكلة: أولًا قم بثتبيت المكتبة عن طريق إستخدام الأمر التالي: npm i pdfjs-dist بعد ذلك قم بتغير هذا السطر في ملف index.html <script src="https://mozilla.github.io/pdf.js/build/pdf.js"></script> بهذا السطر: <script src="../../node_modules/pdfjs-dist/build/pdf.js"></script> وستحل المشكلة ويعمل viewer الخاص بك.
  18. يحتوي الكود على بعض الأخطاء البسيطة وهي كالتالي: الخطأ الأول: نكتب println وليس printIn، الحرف هنا هو L وليس I الخطأ الثاني: إذا اخترت إسم متغير على شكل ما يجب إحترام نفس الشكل في باقي الكود الخاص بك بمعنى لو قمت بكتابة number2 عليك إستخدمها وعدم إستخدام Number2 بحرف Capital لأن لغة جافا case-sensitive بمعنى أنها حساسة للحالة الأحرف، أي أن كلمة case مثلًا ليست هي Case وليس cAse أو caSe وغيرها. الخطأ الثالث: نكتب int وليس Int بمعنى أن حرف I ليس capital. import java.util.Scanner; public class callf { public static void main(string[] args) { int number1, number2; Scanner reader = new Scanner(System.in); System.out.printIn("Enter the first value: "); // الخطأ الأول number1 = reader.nextInt(); System.out.printIn("Enter the second value: "); // الخطأ الأول Number2 = reader.nextInt(); // الخطأ الثاني Int sum = number1 + number2; // الخطأ الثالث System.out.printIn("The sum is: "+sum); // الخطأ الأول } } ليكون الكود بعد الإصلاحات كالتالي: import java.util.Scanner; public class callf { public static void main(string[] args) { int number1, number2; Scanner reader = new Scanner(System.in); System.out.println("Enter the first value: "); number1 = reader.nextInt(); System.out.println("Enter the second value: "); number2 = reader.nextInt(); int sum = number1 + number2; System.out.println("The sum is: " + sum); } } يمكنك تجربة الكود من هذا الرابط.
  19. بما أن لديك خلفية جيدة عن تطبيقات الهايبرد، أقترح عليك العمل بإستخدام مكتبة PDF.js، وهي مكتبة مقدمة من شركة mozilla، تحتوي المكتبة على الكثير من الأدوات التي يمكنك من خلالها التعامل مع ملفات PDF، ومن بينها أدوات لعمل Viewer خاص بك لعرض ملفات PDF والتنقل بين صفحاتها، يمكنك من خلال هذه الأدوات، عمل الكثير من العمليات على ملف PDF سيساعدك هذا في عرض الملف والتنقل بين صفحاته، وإن كنت تعلم مثلًا مواضع السور يمكنك أن تعد قائمة بها وعند الضغط على إسم السورة تنتقل إلى الصفحة التي بها هذه السورة والعديد من الأفكار الأخرى ... ستجد في هذا الرابط: مستودعًا به مثال لعمل Viewer، وفي هذا الرابط، فيديو يشرح طريقة عمل هذا Viewer بإستخدام المكتبة.
  20. يمكنك ان تطلب من المستخدم في أول دخول له إختيار بلده، أو يمكنك على ما أعتقد إستخدام بعض الدوال في أندرويد لإعطائك دولة المستخدم، مثلًا هته الدالة ستعطيك كود دولة إنطلاقًا من اللغة المستخدمة في الهاتف: String locale = context.getResources().getConfiguration().locale.getCountry(); يمكنك أيضًا إستخدام الكود التالي للحصول على 3 أرقام للبلد: String locale = context.getResources().getConfiguration().locale.getDisplayCountry(); يعتمد هذا الحل على إعدادات هاتف المستخدم، يمكنك إستخدمه أو إستخدام location المستخدم مثلًا، ومن الجيد أن توفر إمكانية تعديل البلد من خلال التطبيق.
  21. هناك العديد من الطرق بالطبع. هناك من يربط المتاجر بالدول: فمثلاً عند تسجيل متجر جديد يحدد المتجر الدول التي يتواجد بها، وبهذا وبعد أن يقوم المستخدم بإختيار دولته، يقوم الموقع بعرض المتاجر الموجودة بتلك الدولة التي اختارها المستخدم، أو بالأحرى يقوم الموقع بعرض السلع المتواجدة بمتاجر تلك الدولة. وهناك من يقوم بعرض السلع الأكثر زيارةً أو الأكثر شراءًا من طرف المستخدمين في تلك الدولة التي اختارها المستخدم. يمكنك عمل هذا عن طريق إضافة خانة عند تسجيل متجر جديد أو عند التعديل على معلومات المتجر تطلب من المتجر إدخال الدولة أو الدول التي يتواجد بها، وبعد ذلك عند دخول مستخدم ما وإختار دولته، قم بتسجيل الدولة ضمن معلومات المستخدم، وإن لم يكن المستخدم مسجلًا لدخوله يمكنك تسجيل الدولة في التطبيق، وبعد ذلك عندما تقوم بإرسال طلب لجانب الخادم ليأتي بالمواضيع، ارسل رقم أو إسم الدولة، وقم بالبحث عن المواضيع التي تتواجد بمتاجر تلك الدولة.
  22. على العموم يمكنك إستخدام بعض مميزات firebase مع قواعد بيانات mysql، كما يمكنك الإشتغال ب firebase وحده، بحيث أن firebase يوفر ميزة قواعد البيانات real time. نعم، يمكن إستخدام قواعد بيانات firebase في حالتك، عليك فهم الطريقة التي تعمل بها هذه القواعدة والطريقة التي يمكنك عن طريقها القيام بكل عملية من العمليات في جزء الخادم، فالإشتغال ب firebase مختلف عن الإشتغال عن طريق PHP وMySQL في جزء الخادم.
  23. هناك العديد من مواقع الإستضافات، وتختلف الأسعار وخدمة العملاء والعروض المقدمة من موقع لأخر. تحتوي القائمة التالية على أفضل الإستضافات على مستوى العالم: Bluehost HostGator Hostinger SiteGround InMotion Hosting GoDaddy تعتبر Bluehost الخدمة الأفضل لهذه السنة، كما تعتبر خدمة Hostinger الخدمة الأرخص، ولموقع SiteGround أفضل خدمة عملاء حسب تصنيف بعض المواقع. ستجد في هذا الرابط، مقارنة لمواقع الإستضافة، المقارنة بعدة معايير يمكنها أن تساعدك في إختيار الأفضل. شخصيًا جربت كل من Bluehost و GoDaddy، وبالنسبة لي كانت Bluehost هي الأفضل. كما أنه سبق لي تجربة 000webhost مرة واحدة، لكني لم أحب الإشتغال بها، أعتقد أن المشكلة كانت من cpanel لم أكن متعودًا عليه.
×
×
  • أضف...