-
المساهمات
14889 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
393
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
ذلك غير متاح، ولديك خياران عندما يتعلق الأمر بتحويل كود أو ملف بايثون إلى ملف تنفيذي EXE في ويندوز، أو صيغ أخرى لأنظمة لينكس وماك. وهما PyInstaller (يدعم ويندوز ولينكس وماك) وAuto-Py-to-EXE (يدعم ويندوز فقط) وقد تم شرح ذلك في أول تعليق بشكل وافي.
-
أنت لم تقم بتحديد ما هي الميزانية الخاصة بك، وما هو عدد الزيارات بالفعل شهريًا، وما هي المنصة الخاصة بموقعك هل هي وورد بريس، أم تستخدم برمجة خاصة مثل MERN STACK؟ وهل لديك قدرة على إدارة إعدادات الاستضافة أم تريد استضافة مدارة؟ على أي حال سأعتبر أن الميزانية لديك متوسطة، وإليك بعض الترشيحات: DigitalOcean يقدم العديد من الخدمات مثل Droplets وSpaces وDomains، وتبدأ أسعار DigitalOcean من 5 دولارات شهريًا. Linode توفر منصة Linode خدمات مثل Linode Cloud Compute وLinode Object Storage وLinode DNS، وتبدأ أسعار Linode من 5 دولارات شهريًا. Vultr مثل SSD VPS Cloud Servers و Vultr Cloud Compute وVultr Storage وVultr DNS، وتبدأ أسعار Vultr من 5 دولارات شهريًا.
-
أولاً يجب كتابة الكود الخاص بالاستمارة ويحتوي على عناصر الإدخال التي ترغبين في جمع بياناتها كالتالي: <form action="process.php" method="POST"> <label for="name">الاسم:</label> <input type="text" id="name" name="name" required><br><br> <label for="gender">الجنس:</label> <input type="radio" id="male" name="gender" value="ذكر" required> <label for="male">ذكر</label> <input type="radio" id="female" name="gender" value="أنثى" required> <label for="female">أنثى</label><br><br> <label for="hobbies">الهوايات:</label> <input type="checkbox" id="hobby1" name="hobbies[]" value="رياضة"> <label for="hobby1">رياضة</label> <input type="checkbox" id="hobby2" name="hobbies[]" value="قراءة"> <label for="hobby2">قراءة</label><br><br> <label for="country">الدولة:</label> <select id="country" name="country" required> <option value="مصر">مصر</option> <option value="السعودية">السعودية</option> <option value="الإمارات">الإمارات</option> </select><br><br> <input type="submit" value="إرسال"> </form> ثم كتابة الكود الخاص بخادم PHP مثلاً في ملف باسم process لمعالجة البيانات المرسلة من النموذج ويقوم بإضافتها إلى قاعدة البيانات، واستخدمي MySQL أو أي نظام إدارة قاعدة بيانات آخر، كالتالي: <?php // استقبال البيانات من النموذج $name = $_POST['name']; $gender = $_POST['gender']; $hobbies = $_POST['hobbies']; $country = $_POST['country']; // تأسيس اتصال قاعدة البيانات $servername = "localhost"; $username = "اسم_المستخدم"; $password = "كلمة_المرور"; $dbname = "اسم_قاعدة_البيانات"; $conn = new mysqli($servername, $username, $password, $dbname); // التحقق من وجود أخطاء في الاتصال بقاعدة البيانات if ($conn->connect_error) { die("فشل الاتصال بقاعدة البيانات: " . $conn->connect_error); } // إدخال البيانات إلى الجداول $sql = "INSERT INTO table1 (name, gender, country) VALUES ('$name', '$gender', '$country')"; if ($conn->query($sql) === TRUE) { $table1_id = $conn->insert_id; // إدخال الهوايات إلى جدول آخر foreach ($hobbies as $hobby) { $sql = "INSERT INTO table2 (table1_id, hobby) VALUES ('$table1_id', '$hobby')"; $conn->query($sql); } echo "تمت إضافة البيانات بنجاح"; } else { echo "حدث خطأ أثناء إضافة البيانات: " . $conn->error; } // إغلاق اتصال قاعدة البيانات $conn->close(); ?> ونوع البيانات الذي يتم تخزينه في قاعدة البيانات يتوقف على التعريف الذي قمت به لجداولك، وفي الكود السابق استخدمت أنواع البيانات التالية: table1: name: VARCHAR أو TEXT (اسم العمود حسب التعريف) gender: VARCHAR أو TEXT country: VARCHAR أو TEXT table2: table1_id: INT (الرقم المميز للصف في جدول 1) hobby: VARCHAR أو TEXT وعليك استبدال "اسم_المستخدم" و"كلمة_المرور" و"اسم_قاعدة_البيانات" بمعلومات اتصال قاعدة البيانات لديك.
-
أولاً عليك إنشاء دالة كالتالي: تعريف الدالة باسم calculate_average وهي تأخذ قائمة من الأرقام كمدخل. التحقق من طول القائمة باستخدام len(numbers) لمعرفة عدد العناصر في القائمة. إذا كان طول القائمة يساوي صفر، فهذا يعني أن القائمة فارغة. وفي هذه الحالة، تعود الدالة بقيمة صفر لأنه لا يمكن حساب المتوسط في قائمة فارغة. إذا كانت القائمة غير فارغة، يتم حساب مجموع جميع الأرقام في القائمة باستخدام الدالة sum(numbers) التي تقوم بجمع جميع الأعداد. ثم يتم قسم مجموع الأرقام على طول القائمة len(numbers) للحصول على المتوسط الحسابي. يتم إرجاع القيمة المحسوبة كناتج للدالة. def calculate_average(numbers): if len(numbers) == 0: return 0 else: return sum(numbers) / len(numbers) ثم استخدامها لحساب المتوسط كالتالي: my_list = [1, 2, 3, 4, 5] result = calculate_average(my_list) print(result) # الناتج: 3.0 empty_list = [] result = calculate_average(empty_list) print(result) # الناتج: 0 حيث تعمل الدالة calculate_average على التحقق مما إذا كانت القائمة المعطاة فارغة، وإذا كانت فارغة، فإنها تقوم بإرجاع القيمة صفر، وإذا لم تكن فارغة، فستوم بحساب مجموع جميع الأرقام في القائمة باستخدام دالة sum()، وتقسمها على طول القائمة للحصول على المتوسط الحسابي.
- 3 اجابة
-
- 1
-
-
لما لا تستخدم cache ذا طابع زمني (time-based cache)، بدلاً من تخزين الصورة نفسها في الذاكرة المؤقتة، أي بتخزين رابط (URL) الصورة في الذاكرة المؤقتة مع معلومات إضافية مثل وقت إضافة المنتج ورقم المستخدم الذي أضافه، وعند طلب الصفحة marketplace، قم بفحص الذاكرة المؤقتة للحصول على رابط الصورة المخزنة. وإذا تم إضافة منتج جديد، عليك بتحديث الرابط المخزن في الذاكرة المؤقتة بالرابط الجديد، مع معلومات الوقت ورقم المستخدم، وبالطبع ستحتاج إلى تحديث الذاكرة المؤقتة بشكل متزامن وآمن للتأكد من عدم حدوث تضارب في البيانات. أو استخدام استراتيجية التعتيم المستندة إلى التجزئة (Hash-based Invalidation) لتخزين صور المنتجات في الذاكرة المؤقتة. أي يجب عليك أولاً إنشاء تجزئة (Hash) لملف صورة المنتج، حيث تُستخدم تلك التجزئة كمفتاح لتخزين صورة المنتج في الذاكرة المؤقتة. وعندما يقوم مستخدم بإضافة منتج جديد، ستقوم بإنشاء تجزئة لملف صورة المنتج والتحقق مما إذا كان موجودًا في الذاكرة المؤقتة، وإذا لم يكن موجودًا، ستقوم بتخزين صورة المنتج في الذاكرة المؤقتة باستخدام التجزئة كمفتاح. وعند طلب صورة المنتج من قبل مستخدم آخر، ستقوم أولاً بالتحقق مما إذا كانت الصورة موجودة في الذاكرة المؤقتة، فإذا كانت موجودة، ستقوم بتقديم الصورة مباشرة من الذاكرة المؤقتة، وإذا لم تكن موجودة، ستقوم بجلب الصورة من الخادم وتخزينها في الذاكرة المؤقتة. وبإمكانك الاستعانة بـ CDN (شبكة توزيع المحتوى) أو وكيل عكسي (reverse proxy). وانتبه إلى أن الـ hash-based caching والـ time-based caching هما طريقتان مختلفتان. فالـ hash-based caching يستخدم التجزئة (hash) للمورد لتحديد ما إذا كان مخزنًا في الذاكرة المؤقتة، والتجزئة هي معرف فريد للمورد، وتُستخدم لضمان تقديم الإصدار الصحيح للمورد. أما الـ time-based caching يستخدم وقت آخر تعديل للمورد لتحديد ما إذا كان مخزنًا في الذاكرة المؤقتة، وإذا لم يتم تعديل المورد منذ آخر مرة تم فيها تخزينه في الذاكرة المؤقتة، يتم تقديم النسخة المخزنة في الذاكرة المؤقتة.
- 3 اجابة
-
- 1
-
-
هناك بعض الوظائف والأساليب المتاحة كالتالي: 1- تحويل النص إلى ASCII نستخدم دالة ord() لتحويل حرف إلى قيمته الرقمية في ASCII. char = 'A' ascii_value = ord(char) print(ascii_value) # ستقوم بطباعة القيمة 65 2- تحويل القيمة الرقمية إلى حرف ASCII دالة chr() لتحويل قيمة رقمية إلى حرف ASCII المقابل. ascii_value = 65 char = chr(ascii_value) print(char) # ستقوم بطباعة الحرف 'A' 3- الحصول على القيم ASCII للأحرف في سلسلة نصية في حال كان لديك سلسلة نصية، استخدم حلقة للحصول على القيم ASCII لكل حرف في السلسلة. مثال: string = "Hello" for char in string: ascii_value = ord(char) print(ascii_value) والكود يعمل على طباعة القيم ASCII المقابلة لكل حرف في سلسلة "Hello".
- 4 اجابة
-
- 1
-
-
الكود بعد التعديل سيصبح كالتالي: <?php $passwords = array('123456', 'xxxx', '7777', '8888', '9999'); if (isset($_POST['password'])) { if (in_array($_POST['password'], $passwords)) { setcookie('loggedIn', true, time() + (30 * 24 * 60 * 60)); // تعيين الكوكيز header('Location: ' . $_SERVER['PHP_SELF']); // إعادة توجيه الصفحة بعد تعيين الكوكيز exit(); } else { die ('Incorrect password'); } } if (!isset($_COOKIE['loggedIn']) || !$_COOKIE['loggedIn']): ?> <html> <head> <title>Login</title> </head> <body> <p>You need to login</p> <form method="post"> Password: <input type="password" name="password"> <br /> <input type="submit" name="submit" value="Login"> </form> </body> </html> <?php exit(); endif; echo '<h1>Hello world... Logged in successfully.</h1>'; ?> وما تم هو تعيين قيمة الكوكيز "loggedIn" إلى true باستخدام الدالة setcookie() عند تسجيل الدخول بكلمة المرور الصحيحة، ثم تحديد صلاحية الكوكيز لمدة 30 يومًا باستخدام time() + (30 * 24 * 60 * 60)، حيث يتم ضرب 30 (عدد الأيام) في 24 (عدد الساعات في اليوم) في 60 (عدد الدقائق في الساعة) في 60 (عدد الثواني في الدقيقة) للحصول على الوقت المستقبلي الذي ينتهي فيه صلاحية الكوكيز. وفي حالة عدم وجود قيمة الكوكيز "loggedIn" أو إذا كانت قيمتها false، فسيعرض نموذج تسجيل الدخول، وعند تسجيل الدخول الصحيح، سيتم تعيين الكوكيز وإعادة توجيه الصفحة لعرض رسالة تأكيد تسجيل الدخول بنجاح. وعليك بتأمين الاتصال باستخدام SSL والتحقق من صحة البيانات المرسلة قبل تعيين الكوكيز.
-
ببساطة الكود هو لإنشاء حلقة تكرار (loop) تقوم بتنفيذ بعض الأوامر عدة مرات، وإليك تفسير الكود وفقًا للمتغيرات المستخدمة في الكود: n و m هما متغيران يمثلان أرقامًا صحيحة (integers) من خلال تمريرهما إلى الدالة sumMul. range(n, m, n) هو دالة في لغة Python تنشئ سلسلة من الأرقام بدءًا من القيمة n وحتى m بزيادة ثابتة بمقدار n. مثلًا، إذا كانت قيمة n تساوي 2 وقيمة m تساوي 10، فستنشئ range سلسلة الأرقام [2, 4, 6, 8، تخزن تلك السلسلة في المتغير i خلال كل تكرار للحلقة. والحلقة for تقوم بتنفيذ الأوامر الموجودة داخلها بناءًا على القيم المخزنة في المتغير i خلال كل تكرار، و زيادة قيمة المتغير total_sum بقيمة المتغير i، مما يعني أنه سيتم إضافة قيمة i إلى المتغير total_sum في كل تكرار للحلقة.
- 8 اجابة
-
- 1
-
-
ASCII ببساطة هو اختصار لـ "American Standard Code for Information Interchange" ويشير إلى مجموعة محددة من الرموز المستخدمة لتمثيل الحروف والأرقام والرموز الأخرى في الحواسيب وأنظمة الاتصالات. تم تطوير ASCII في الأصل في عام 1963 كمعيار لتبادل البيانات بين أجهزة الكمبيوتر المختلفة والشبكات. وتتضمن مجموعة ASCII الأصلية 128 رمزًا، حيث يمثل كل حرف بواحد من هذه الرموز، وتتضمن الرموز الأساسية الأبجدية اللاتينية الكبيرة والصغيرة، والأرقام من 0 إلى 9، ورموز ترقيم ورموز تحكم مثل المسافة والترقيم والعلامات القوسية والأقواس. ومع مرور الوقت، تطورت مجموعة ASCII لتشمل مجموعة أوسع من الرموز تسمح بتمثيل الأحرف والرموز الإضافية بما في ذلك الحروف غير اللاتينية والرموز الخاصة. يتكون ASCII الموسع من 8 بت، مما يعني وجود 256 رمزًا ممكنًا. وحاليًا تُستخدم ASCII بشكل واسع في البرمجة وعند نقل البيانات بين الأجهزة المختلفة، حيث يمكن تمثيل النصوص والرموز باستخدام تلك المجموعة المحددة من الأرقام والحروف. مثال للتوضيح: حرف "A" بالأحرف الكبيرة: يتم تمثيله بالرقم 65 في ASCII. حرف "a" بالأحرف الصغيرة: يتم تمثيله بالرقم 97 في ASCII. الرقم "5": يتم تمثيله بالرقم 53 في ASCII. الرمز "$": يتم تمثيله بالرقم 36 في ASCII. الرمز التحكم للمسافة الفارغة: يتم تمثيله بالرقم 32 في ASCII. والغرض هو توحيد تلك التمثيلات في جميع أنحاء الأنظمة التي تدعم ASCII لضمان التوافق وتبادل البيانات بسهولة. وتفقد النقاش التالي لمزيد من المعلومات:
- 5 اجابة
-
- 1
-
-
رسالة الخطأ "RenderTrxture.Creat faild: format unspported for random writes -r32 Sfloat (49)." معناها أنه تعذّر إنشاء كائن RenderTexture بسبب عدم دعم التنسيق المحدد للكتابة العشوائية. والتنسيق المحدد هو "r32 Sfloat" وهو تنسيق عشري ذو دقة واحدة وثلاثة وثلاثين بت، وربما كرت الشاشة لديك غير داعم لهذا التنسيق فيما يتعلق بالكتابة العشوائية. أولاً عليك التحقق من العرض والارتفاع (العرض والارتفاع في وحدة البكسل) لكائن RenderTexture، حيث يجب أن يكونوا عددًا موجبًا لا يتجاوز الحجم الأقصى المدعوم من قبل بطاقة الرسومات. ثم ابحث عن ما إذا كانت مواصفات كرت الشاشة لديك مناسبة التنسيق "r32 Sfloat" للكتابة العشوائية، ثم جرب استخدام تنسيق آخر لكائن RenderTexture. أيضًا حاول تحديث تعريف كرت الشاشة لديك، وربما لديك مشكلة مساحة الذاكرة العشوائية RAM فإذا كانت هناك مساحة صغيرة قد تسبب تلك المشكلة، تفقد هل تمتليء الرامات عند التشغيل؟ وحاول أيضًا تحديث نسخة Unity.
-
أرجو منك طرح السؤال أسفل فيديو الدورة الخاص بالسؤال ليتم مساعدتك بشكل أفضل، وطرح الأسئلة العامة هنا.
-
مسعود كان يقصد الأسئلة الإختبارية الخاصة بالإمتحانات وما شابه، لكن أنت تقوم بالدراسة بمفردك ولا مشكلة في توفير الحل طالما قمت بالمحاولة، عليك بذكر أنه ليس سؤال إختباري وإنما تتمرن على مهارة الـ Problem Solving. والمطلوب هو كتابة دالة في بايثون تحسب مجموع جميع أعداد مضاعفة لعدد محدد n والتي تكون أقل من العدد المحدد m، ويجب استبعاد العدد m نفسه من المجموع. وسأوضح لك طريقة الحل: قم بتعريف دالة تسمى sumMul والتي تأخذ معها معاملين، n و m. قم بالتحقق مما إذا كان كل من n و m هما أعداد صحيحة موجبة (أعداد صحيحة طبيعية)، وإذا لم يكن أحدهما عددًا صحيحًا موجبًا، فأرجع النص "INVALID". قم بإنشاء متغير يسمى total_sum واجعله يساوي 0. هذا المتغير سوف يحتوي على مجموع الأعداد المضاعفة. استخدم حلقة for لتكرار من n إلى m (باستثناء m) بزيادة n. هذا سيضمن أنك تأخذ في الاعتبار فقط الأعداد المضاعفة لـ n. في داخل الحلقة، أضف القيمة الحالية إلى total_sum. بعد الحلقة، قم بإرجاع قيمة total_sum. وإليك الكود بلغة بايثون: def sumMul(n, m): if n <= 0 or m <= 0 or type(n) != int or type(m) != int: return "INVALID" total_sum = 0 for i in range(n, m, n): total_sum += i return total_sum والآن تستطيع استخدام تلك الدالة لإيجاد مجموع الأعداد المضاعفة كالتالي: print(sumMul(2, 9)) # الناتج: 20 print(sumMul(3, 13)) # الناتج: 30 print(sumMul(4, -7)) # الناتج: "INVALID" في المثال الأول، الأعداد المضاعفة للعدد 2 أقل من 9 هي 2 و 4 و 6 و 8. مجموعهم يساوي 20. والمثال الثاني يتبع نفس المنطق لأعداد مضاعفة العدد 3 أقل من 13، مما يعطي مجموعًا قدره 30. والمثال الثالث يعود بقيمة "INVALID" لأن أحد الإدخالات، -7، ليس عددًا صحيحًا موجبًا.
- 8 اجابة
-
- 1
-
-
عليك أولاً بكتابة الكود الخاص بالاستمارة form كالتالي: <form method="POST" action="process.php"> <select name="option"> <option value="option1">Option 1</option> <option value="option2">Option 2</option> <option value="option3">Option 3</option> </select> <input type="submit" name="submit" value="إرسال"> </form> ثم إنشاء ملف PHP يُدعى process.php (أو اسم آخر حسب تفضيلك) لمعالجة البيانات المرسلة من النموذج: <?php // تأكدي من أنه تم النقر على زر الإرسال if (isset($_POST['submit'])) { // تحققي من أن تم تحديد قيمة المُدخَل select if (isset($_POST['option'])) { // قومي بالاتصال بقاعدة البيانات $servername = "اسم_الخادم"; $username = "اسم_المستخدم"; $password = "كلمة_المرور"; $dbname = "اسم_قاعدة_البيانات"; $conn = new mysqli($servername, $username, $password, $dbname); // تحققي من نجاح الاتصال بقاعدة البيانات if ($conn->connect_error) { die("فشل الاتصال بقاعدة البيانات: " . $conn->connect_error); } // استخراج القيمة المُحدَدة من المُدخَل select $selectedOption = $_POST['option']; // قومي بإدراج القيمة في جدول قاعدة البيانات $sql = "INSERT INTO اسم_الجدول (اسم_العمود) VALUES ('$selectedOption')"; if ($conn->query($sql) === true) { echo "تمت إضافة البيانات بنجاح."; } else { echo "حدث خطأ أثناء إضافة البيانات: " . $conn->error; } // أغلقي الاتصال بقاعدة البيانات $conn->close(); } else { echo "لم يتم تحديد قيمة المُدخَل select."; } } ?> ويجب استبدال "اسم_الخادم"، "اسم_المستخدم"، "كلمة_المرور"، "اسم_قاعدة_البيانات"، "اسم_الجدول"، و "اسم_العمود" في الكود بالقيم الصحيحة المطلوبة لقاعدة البيانات لديك.
-
الخوارزميات وهياكل البيانات هما من أهم المفاهيم في علوم الحاسوب، على الرغم من أنهما مرتبطان ببعضهما البعض، إلا أنهما لهما معانٍ مختلفة. والخوارزمية هي عبارة عن مجموعة من التعليمات خطوة بخطوة لحل مشكلة ما، وتتكون من سلسلة من التعليمات التي يمكن للكمبيوتر اتباعها لإكمال مهمة معينة. بينما تعد هيكل البيانات طريقة لتنظيم البيانات في الكمبيوتر بحيث يمكن الوصول إليها وتعديلها بكفاءة. والفرق الرئيسي بين الخوارزميات وهياكل البيانات هو أن الخوارزميات تتعامل مع عملية حل المشكلة، بينما تتعامل هياكل البيانات مع تخزين البيانات. في مجال تعلم الآلة، الخوارزميات وهياكل البيانات ضرورية لعدد من المهام، بما في ذلك: معالجة البيانات المسبقة، وتشمل تنظيف وتنسيق البيانات لكي يمكن استخدامها في نماذج التعلم الآلي. استخراج الميزات، ومن ضمنها تحديد واستخلاص أهم الميزات من البيانات. تدريب النماذج، كاستخدام الخوارزميات لتدريب نماذج التعلم الآلي. نشر النماذج، ويتضمن نشر نماذج التعلم الآلي في الإنتاج حتى يمكن استخدامها للتنبؤ. مهارات حل المشكلات أيضًا ضرورية في تعلم الآلة، وذلك لأن نماذج التعلم الآلي غالبًا ما تكون معقدة وصعبة التدريب، ومن أجل بناء نماذج ناجحة في تعلم الآلة، من المهم أن تتمكن من تحديد المشاكل وحلها بفعالية. وسأوضح لك بمثال: في التصنيف الآلي للصور. لنفترض أن لدينا مجموعة من الصور المصنّفة إلى فئتين: الكلاب والقطط. ونرغب في تطوير نموذج تعلم آلي قادر على التعرف على صور الكلاب والقطط بدقة. هنا كيف يمكن استخدام الخوارزميات وهياكل البيانات في هذا السياق: يتطلب ذلك استخدام خوارزميات وهياكل البيانات لتنظيف وتنسيق الصور، مثل تغيير حجم الصورة وتحويلها إلى تناظر رمادي، وتجميعها في بنية بيانات مناسبة مثل مصفوفة أو قائمة. يستخدم هنا خوارزميات استخراج الميزات لتحديد السمات الأكثر أهمية في الصور، مثل الأشكال الهندسية أو النقاط البارزة. هذه الميزات تساعد في تمثيل الصور بشكل مبسط ومعبر. تُستخدم الخوارزميات التعليمية مثل آلة الدعم القراري (SVM) أو الشبكات العصبية الاصطناعية (ANN) لتدريب نموذج التعلم الآلي على البيانات المعالجة والميزات المستخرجة، ويتضمن ذلك ضبط معلمات النموذج للحصول على أفضل أداء ممكن. بعد تدريب النموذج، تستطيع استخدام هياكل البيانات مثل الجداول أو الخرائط الهاش لتخزين النموذج والمعلومات الضرورية للتنبؤ بفئة الصورة المجهولة، واستخدام الخوارزميات للبحث والاستعلام عن الصور الجديدة وتطبيق النموذج لتصنيفها بناءً على الميزات المستخرجة.
- 4 اجابة
-
- 1
-
-
في البداية يجب التوضيح أن استخدام API من موقع ويب لإنشاء تطبيق جوال لا يحدد نوع التطبيق الناتج. وسواء استخدمت تطبيقات هجينة أو تطبيقات Native ستحتاج إلى استخدام API من عرض أو إرسال البيانات، ولا غنى عن ذلك بالطبع. والتطبيق الهجين هو تطبيق جوال يُبنى باستخدام إطار عمل تطوير الويب مثل React Native أو Ionic، ويمكن للتطبيق الهجين العمل على نظامي التشغيل Android و iOS والوصول إلى نفس البيانات والوظائف المتوفرة على الموقع. ولكن في بعض الأحيان تبعًا لحجم التطبيق ومدى تعقيده قد لا يكون التطبيق الهجين سريعًا أو متجاوبًا بنفس قدرات التطبيق الطبيعي، وله قيود في الوصول إلى بعض ميزات نظام التشغيل. أما التطبيق الطبيعي Native فهو تطبيق جوال يُبنى خصيصًا لنظام تشغيل معين مثل Android أو iOS، ويستطيع التطبيق الطبيعي الاستفادة الكاملة من ميزات نظام التشغيل، وهو أكثر استجابة وسرعة من التطبيق الهجين. ولكن، التطبيق الطبيعي يمكن أن يعمل فقط على نظام تشغيل واحد ويحتاج إلى مزيد من التكاليف في عملية التطوير. ويجب التوضيح أيضًا أن التطوير من خلال Flutter وXamrin أصبح مشابه لأداء وميزات تطبيقات الـ Native فباستخدام Flutter، يتم تطوير التطبيق مرة واحدة باستخدام لغة البرمجة Dart، وتحويلها إلى تطبيقات جاهزة تعمل بشكل طبيعي على كلا المنصتين Android و iOS. ي وستخدم Flutter محرك رسومات خاص به لتجاوب عالٍ وأداء سريع، مما يقرب التطبيقات المطورة به من تطبيقات Native في الأداء والتجاوب. ويعتبر Flutter هجينًا بالمعنى الفني للكلمة، حيث يستخدم واجهات المستخدم المخصصة التي تقدمها Flutter بدلاً من استخدام واجهات المستخدم الأصلية لكل منصة، مما يعني أن التطبيق ليس بالضرورة متكاملاً تمامًا مع نظام التشغيل الأصلي، وقد يحتاج إلى بعض التعديلات الإضافية لدعم ميزات محددة لكل منصة. أي نستطيع أن نعتبر Flutter ووXamrin تقنية تطوير تطبيقات هجينة تقدم توازنًا جيدًا بين سهولة التطوير وأداء التطبيق على منصتي Android و iOS.
- 3 اجابة
-
- 1
-
-
خطأ 500 Internal Server Error هي رسالة خطأ عامة يمكن أن يتسبب بها عدة عوامل،وفيما يلي بعض الأشياء التي يمكنك التحقق منها لمحاولة إصلاح الخطأ: عليك بتفقد ما الخطأ الذي يظهر لك في الخادم وهل يتم الإشارة إلى السبب؟ وهل يوجد خطأ في الكونسول في المتصفح؟ جرب إعادة تشغيل جهاز الكمبيوتر الخاص بك أو بيئة التطوير. إذا كنت تستخدم مكتبة من جهة ثالثة، تأكد من تحديثها إلى أحدث إصدار. تأكد من استلام الخادم للطلب إلى نقطة النهاية /api/posts. تحقق من رد الخادم من نقطة النهاية /api/posts لمعرفة وجود أي أخطاء. وأيضًا عليك بتفقد بتبويب network في المتصفح وانظر ما المشكلة وهل يتم تحميل الملفات بشكل سليم. ومن الأفضل أن تعتمد في الكود الخاص بك على استخدام try-catch blocks لتجنب تعطل السيرفر ومعالجة الأخطاء في كتلة catch وأيضًا طباعتها من أجل معرفة سبب المشكلة أنثاء عملية التطوير. بمعنى أن try-catch block تسمحلك بالتقاط الأخطاء المحتملة التي يمكن أن تحدث أثناء تنفيذ جزء من الكود مما يسمح لك بالتعامل مع الأخطاء بشكل مناسب بدلاً من توقف التطبيق عن العمل. وحاول إلقاء الاستثناءات، بمعنى أنه يتم وضع الكود المحتمل لإثارة الاستثناءات داخل كتلة try، وعندما يحدث خطأ، يتم إلقاء الاستثناء باستخدام كلمة المفتاح throw، ثم التعامل مع الاستثناء باستخدام كتلة catch حيث يوجد الكود الذي يتم تنفيذه عند حدوث الاستثناء المطابق. وإليك مثال: function divideNumbers(num1, num2) { if (num2 === 0) { throw new Error("Cannot divide by zero"); } return num1 / num2; } try { const result = divideNumbers(10, 0); console.log("Result:", result); } catch (error) { console.log("An error occurred:", error.message); }
- 4 اجابة
-
- 1
-
-
الأمر لا يسير بتلك الطريقة، تشتيت نفسك بين عدة أشياء ومحاولة تعلم كل شيء في نفس الوقت وأيضًا عدم التدرج في عملية التعلم هي خلطة سحرية للفشل في تعلم البرمجة. لكي لا تصاب بالإحباط وأنت مبتدأ في مجال البرمجة، عليك بالصبر والتأني في تعلم الأساسيات وتخصيص كل وقتك لها في البداية والتطبيق على أكثر من مشروع والتدرج في عملية التطبيق أي تبدأ أولاً بالتطبيق على نماذج صغيرة وأكواد بسيطة ثم تنفيذ مشاريع كبيرة نسبيًا. وعليك بتحديد مسار والإلتزام به، حدد مجموعة من الكورسات وإلتزم بها خلال إطار زمني محدد ولا يقل عن 6 أشهر، وحدد عدد ساعات يومية للمذاكرة ولا تقل عن 3 ساعات يوميًا. وستجد الكثير من الـ Roadmaps لكل مجالات البرمجة وتم النقاش حول ذلك هنا في أكاديمية حسوب تستطيع البحث. وبعد الإنتهاء من تعلم المسار الخاص بالمجال الذي اخترته، تستطيع تعلم الخوارزميات وهياكل البيانات، وستجد لها فائدة وستستطيع أنت تستوعبها، ففي البداية هي أشبه بكلام نظري لا قيمة له بالنسبة لك، وستنساه بلا شك. وتستطيع بعد تعلم الخوارزميات وهياكل البيانات، أن تبدأ في تعلم الـ Problem Solving ولا مشكلة في أن تبدأ بها أثناء دراستك للخوارزميات وهياكل البيانات، فقد تتحفز بسبب ذلك. وتلك هي الطريقة الصحيحة، أما تلقي نفسك في المحيط دفعة واحدة وتنزعج من كونك لا تستطيع السباحة فذلك نابع من طريقتك أنت في الدراسة.
- 5 اجابة
-
- 1
-
-
بالطبع ذلك ما قصدته، أي سؤال لا تجديه متعلق بالدورة، يتم طرحه في قسم الأسئلة الخاصة بالبرمجة هنا وسيتم الإجابة عليه من قبل الجميع.
- 8 اجابة
-
- 1
-
-
أهلاً بك في أي وقت، وتستطيعي استكمال الدورة بالأكاديمية كما هي وستحققي استفادة كبيرة من خلال التطبيق العملي على المشاريع، وبخصوص أي أمر تريدي تعلمه أو أي أمر غير واضح، أرجو منك طرح السؤال المتعلق بالدورة أسفل الفيديو الخاص به بالدورة لكي يتم مساعدتك بشكل أفضل. أما الأسئلة العامة الغير متعلقة بالدورة يتم طرحها هنا في قسم أسئلة البرمجة كما فعلتي. وبخصوص Grid تستطيعي رفع مجلد المشروع الخاص بك بعد ضغطه، أو وضع الكود هنا أو توضيح المشكلة بصورة وسيتم تفقد المشروع أو حل المشكلة التي تواجهك ولا تترددي في السؤال لكن بعد البحث والقراءة لكي تحققي استفادة لك.
-
هل سؤالك خاص بأحد الدورات؟ إذا كان السؤال خاص بدورة تصميم واجهات المستخدم، فيتم استخدام Flexbox لسهولة فهمه واستخدامه في البداية وأيضًا Grid يستخدم في التصميمات المعقدة نسبيًا، وتنفيذ التصميمات في الدورة تتم من خلال Bootstrap وهو يستخدم Flexbox بشكل أساسي. وقد تم توضيح ذلك هنا بالتفصيل: أما إذا كان سؤالك عن مصادر لتعلم Grid فإليك المصادر التالية: وتستطيعي البحث على يوتيوب أيضًا وستجدي الكثير من الشروحات، عليك بالبحث عن "شرح css grid".
-
عليك بتصفح الرابط الصحيح للمشروع، فلو كنت تستخدم Laragon تستطيع الضغط بزر الفأرة الأيمن على واجهة برنامج لاراجون ثم إختيار www ومنها اختر المشروع الخاص بك من خلال اسمه كالتالي: وسيتم فتح رابط المشروع الصحيح. وبشكل يدوي عليك بكتابة اسم مجلد المشروع ثم public أي كالتالي: http://localhost/instagram-laravel/public مع استبدال instagram-laravel باسم مجلد المشروع لديك.
- 4 اجابة
-
- 1
-
-
أولاً أرجو منك توضيح ما الذي تريد فعله بالضبط وما المشكلة التي تواجهك عند محاولة تنفيذ ذلك. وعلي أي حال في الجزء الثاني من الكود (الحلقة while) عليك بإزالة الشرط if لكونك قمت بتحديد شرط في while وهو طالما أن x أصغر من طول المصفوفة mm. if(x === mm[x]){ console. log(x); } وأيضًا عليك بزيادة قيمة x وليس خفضها أي تصبح x++، وأيضًا إزالة break حيث أن الحلقة ستتوقف عند تحقق الشرط في المرة الأولى ولن تكتمل للنهاية. وأيضًا لا حاجة لكتابة mm.length - 1 حيث أنك حددت أن x أصغر من طول المصفوفة لذلك الأمر مماثل. وبعد التعديل سيصبح الكود بالشكل التالي: const mm = ['ahmed', 'mete', 'sahlab']; for (let i = mm.length - 1; i >= 0; i--) { console.log(i, mm[i]); } let x = 0; while (x < mm.length) { console.log(x); x++; } ولمساعدتك بشكل أفضل اذكر ما الذي تريده بالضبط.
-
عليك أولاً بإنشاء استمارة HTML تحتوي على صندوق اختيار (checkbox) لتحديد وجود حساسية، وحقل إدخال (input field) لإدخال معلومات الحساسية (في حالة التحديد). مثال: <form method="POST" action="add_data.php"> <label> <input type="checkbox" name="has_allergy" value="1"> لدي حساسية </label> <br> <label>معلومات الحساسية:</label> <input type="text" name="allergy_info"> <br> <input type="submit" value="إرسال"> </form> وفي ملف PHP المسمى "add_data.php" (أي القيمة المحددة في الخاصية action في الاستمارة السابقة)، تستطعيي استلام البيانات المرسلة من الاستمارة وإدخالها في قاعدة البيانات، باستخدام استعلام SQL INSERT لذلك. مثال: <?php // تأكد من أن هذا الملف يتصل بقاعدة البيانات الخاصة بك if ($_SERVER['REQUEST_METHOD'] === 'POST') { // استلام البيانات من الاستمارة $hasAllergy = isset($_POST['has_allergy']) ? 1 : 0; // تحويل القيمة المرسلة إلى صيغة بولية (0 أو 1) $allergyInfo = isset($_POST['allergy_info']) ? $_POST['allergy_info'] : ''; // إجراء استعلام SQL لإدخال البيانات في قاعدة البيانات $query = "INSERT INTO table_name (has_allergy, allergy_info) VALUES ('$hasAllergy', '$allergyInfo')"; // قم بتنفيذ الاستعلام // يفضل استخدام مكتبة PDO أو MySQLi للتعامل مع قاعدة البيانات بشكل آمن هنا // قم بإجراء أي معالجة أخرى بعد إضافة البيانات حسب الحاجة // إعادة توجيه المستخدم إلى صفحة أخرى أو عرض رسالة تأكيد إذا تمت العملية بنجاح } ?> وعليك تعديل تكوينات قاعدة البيانات الخاصة بك، بما في ذلك اسم الجدول والأعمدة المناسبة، وعندما يقوم المستخدم بإرسال الاستمارة، ستتلقى البيانات في ملف PHP المحدد في الخاصية action في الاستمارة، ومن ثم يتم إدخالها في قاعدة البيانات باستخدام استعلام SQL INSERT.
-
لغة البرمجة الأفضل للمبتدئين بغض النظر عن المجال الذي تريد التخصص به في البرمجة، فأمامك خياران لكي يتم تأسيسك بشكل قوي في البرمجة، الأول يعتمد على ما إذا كان لديك الوقت الكافي ولست ملتزم بوقت محدد للتعلم ومحاولة الحصول على وظيفة. حيث ستتعلم أساسيات البرمجة من خلال C++ لكن الأمر يعتمد على خبراتك السابقة ومدى تخصصك، فقد يصاب البعض بالإحباط عند تعلم C++، لذلك هي ليست للجميع في البداية. وإذا كان ليس لك أي دراية بعالم البرمجة وعلوم الحاسب، فعليك بتعلم بايثون، فهي اللغة الأفضل لتقديمك لعالم البرمجة وتعلم الأساسيات من خلالها ومستخدمة بشكل واسع جدًا. ولا مشكلة في تعلم الأساسيات من خلالها وعدم التعمق بها بشكل كبير، ثم الإنتقال لتعلم جافاسكريبت إذا التخصص في مجال الويب، وهو المجال الذي أنصح به لتعلمه في البداية إذا كنت غير قادر على تحديد ما المجال الذي تريده بالضبط، حيث سيفتح آفاقك للتعرف على المجالات الأخرى وأيضًا ستستخدم المهارات التي تعلمتها في المجالات الأخرى، غير أنه سهل التعلم نسبيًا في بداية تعلمك مجال البرمجة مقارنًة بالمجالات الأخرى. الاستفادة بشكل صحيح من الدورة أي دروة ستحقق استفادة منها إذا قمت بدراستها بشكل صحيح، ووضعت وقت منطقي محدد للإنتهاء منها والتزمت بذلك الوقت، لا أن تنقطع عن الدورة بشكل متكرر ثم العودة من جديد لنقطة الصفر، ففي البداية يجب أن تحاول جاهدًا أن تنهي الدورة في الوقت المحدد وليكن شهرين مثلاً حسب الوقت المتاح لك. ولكن لا تقع في الفخ وتحاول إنهاء الدورة بأسرع وقت ولا تحقق أي استفادة، فالغرض فقط هو الإلتزام بالوقت وقياس مدى تقدمك وبذل الجهد وعدم التكاسل. ولا مشكلة في زيادة المدة طالما أنك تقوم بمشاهدة الفيديوهات ثم البحث عما تريد فهمه لتتعلم المزيد ويتضح لك بعض الأمور ثم التطبيق بمفردك ومحاولة البحث عن مشروع للمبتدئين للتطبيق عليه غير الموجود في الدورة، والتأني في تعلم الأساسيات، ومحاولة البحث عن حلول للمشكلة التي تواجهك لكن عليك التفكير في حل بمفردك أولاً وليس البحث مباشرًة. ولا تتردد أبدًا في السؤال بعد المحاولة، عليك بالبحث عن مساعدة إذا واجهت مشكلة وقد بذلت جهدك في حلها ثم بحثت وجربت بعض الحلول المتاحة. وأيضًا لا تعتمد على أي دورة مهما كانت في تعلم كل شيء فلا توجد تلك الدورة، عليك دائمًا بالبحث والقراءة من جوجل ويوتيوب سواء في المحتوى العربي أو الأجنبي. وقد تحدثت بشكل مفصل عن كيفية دراسة دورات البرمجة بشكل صحيح، في النقاش التالي والنقاشات المرفقة به: