-
المساهمات
13209 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
365
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
هل تقصد تصميم واجهة مستخدم؟ بخصوص الواجهة التي أشرت إليها في الصورة فهى بسيطة، تستطيع تنفيذها باستخدام HTML, CSS, JS. أما الواجهات المعقدة نسبيًا، فيتم تصميمها أولاً باستخدام أدوات مثل Figma أو Adobe XD، أما إذا كانت بسيطة فيتم تصميمها مباشرًة باستخدام الكود كما ذكرت. وعليك بتحويل ذلك القالب إلى XHTML من أجل استخدامه كقالب لمنصة بلوجر، وتستطيع البحث عن "دورة تصميم قالب بلوجر من الصفر " وستجد شرح وافي لكيفية فعل ذلك. وبخصوص تعلم لغات الواجهة الأمامية فإليك المصادر التالية: دروس HTML دروس CSS https://wiki.hsoub.com/الصفحة_الرئيسية
-
الخطأ يعني طريقة GET لا تدعم عملية الإرسال (POST) ولن تستطيع استخدام GET لإضافة عناصر جديدة إلى قاعدة البيانات، بل يتم استخدام طريقة POST بدلاً من ذلك. ومثلاً إذا كنت تستخدم لغة جافاسكريبت فإليك مثال بالإعتماد على مكتبة axios لإرسال طلب إضافة: // استيراد المكتبة اللازمة لإجراء طلبات الشبكة import axios from 'axios'; // بيانات العنصر الجديد الذي سيتم إضافته إلى قاعدة البيانات const newItem = { name: 'اسم العنصر', description: 'وصف العنصر' }; // إجراء طلب POST لإضافة العنصر إلى قاعدة البيانات axios.post('رابط الخادم/المسار', newItem) .then(response => { console.log('تمت إضافة العنصر بنجاح!', response.data); }) .catch(error => { console.error('حدث خطأ أثناء إضافة العنصر:', error); }); وإذا كنت تستخدم لغة PHP فإليك مثال: <?php // بيانات العنصر الجديد الذي سيتم إضافته إلى قاعدة البيانات $newItem = array( 'name' => 'اسم العنصر', 'description' => 'وصف العنصر' ); // معلومات الاتصال بقاعدة البيانات $servername = 'اسم خادم قاعدة البيانات'; $username = 'اسم مستخدم قاعدة البيانات'; $password = 'كلمة مرور قاعدة البيانات'; $dbname = 'اسم قاعدة البيانات'; // إنشاء اتصال بقاعدة البيانات $conn = new mysqli($servername, $username, $password, $dbname); // التحقق من نجاح الاتصال if ($conn->connect_error) { die('فشل الاتصال بقاعدة البيانات: ' . $conn->connect_error); } // استعلام SQL لإضافة العنصر إلى قاعدة البيانات $sql = "INSERT INTO اسم_جدول_قاعدة_البيانات (اسم_العمود_1, اسم_العمود_2) VALUES ('" . $newItem['name'] . "', '" . $newItem['description'] . "')"; // تنفيذ الاستعلام والتحقق من نجاحه if ($conn->query($sql) === TRUE) { echo 'تمت إضافة العنصر بنجاح!'; } else { echo 'حدث خطأ أثناء إضافة العنصر: ' . $conn->error; } // إغلاق الاتصال بقاعدة البيانات $conn->close(); ?> وبالطبع عليك استبدال "اسم_خادم_قاعدة_البيانات" و "اسم_مستخدم_قاعدة_البيانات" و "كلمة_مرور_قاعدة_البيانات" و "اسم_قاعدة_البيانات" و "اسم_جدول_قاعدة_البيانات" و "اسم_العمود_1" و "اسم_العمود_2" بالقيم المناسبة وفقًا لبيئة قاعدة البيانات لديك، وأيضًا تعديل الاستعلام SQL وفقًا لهيكل جدول قاعدة البيانات.
-
في البداية أرجو منك طرح السؤال أسفل فيديو الدورة الخاص به (في التعليقات) ليتم مساعدتك بشكل أفضل، وطرح الأسئلة العامة هنا في قسم أسئلة البرمجة. وعليك بقراءة رسالة الخطأ فهى تخبرك بسبب المشكلة في الكثير من الأحيان وهي "Identifier 'Person’ has already been declared" وتعني أنك قد قمت بتعريف متغير أو معرف بالاسم "Person" مرتين في نفس النطاق (scope) في الكود. وذلك صحيح، حيث أنك في النطاق العالمي أي خارج الدوال والكائنات، قمت بتعيين دالة باسم Person في النطاق العالمي، ثم بالأسفل قمت بإعلان متغير باسم Person وذلك غير صحيح، حيث أنه أصبح هناك معرفان باسم Person في النطاق العالمي الآن. ولذلك عليك بتغيير اسم المتغير Person إلى person أو person1. ولاحظ أن متغير person يختلف عن Person لكونه يبدأ بحرف p صغير، لكون لغة جافاسكريبت حساسة للحروف case-sensitive. لكن من الأفضل استخدام person1 لكي لا تشتت نفسك ويسهل قراءة الكود.
-
الحل الأفضل بالفعل هو الإعتماد على docker ومن المفترض أنه إذا قمت بتصدير المشروع الذي يتكون من Django وReact وMySQL باستخدام Docker وقمت بتشغيله بنجاح على نظامك الخاص، فإنه ينبغي أن يعمل بشكل سليم على نظام العميل أيضًا، طالما تم استيراد Docker Image وتشغيله بشكل صحيح. وعند تلقي العميل ملف Docker المضغوط (.tar) الذي أرسلته، عليه باتباع الخطوات التالية لتشغيله: أولاً يحتاج العميل إلى تثبيت Docker وذلك متوفر من خلال الموقع الرسمي: https://www.docker.com/products/docker-desktop/ وبعد ذلك عليه استيراد Docker Image الموجود في ملف الضغط باستخدام الأمر التالي في واجهة الأوامر، بشرط أن يكون Docker مثبتًا وتشغيله بنجاح: docker load -i path/to/your/docker_image.tar حيث path/to/your/docker_image.tar هو المسار الكامل إلى ملف Docker Image المضغوط الذي تم تلقيه. وبمجرد استيراد نسخة Docker بنجاح، بإمكان للعميل تشغيل Docker Container باستخدام الأمر التالي: docker run -p 3000:3000 my_project:latest وبالطبع استبدل "my_project:latest"، باسم ملف الـ Docker الذي تم استيراده. ولاحظ في الأمر تم توجيه المنفذ 3000 داخل الحاوية إلى المنفذ 3000 على جهاز العميل، وبالتالي، سيستطيع العميل الوصول إلى التطبيق عن طريق استخدام http://localhost:3000 في المتصفح.
- 1 جواب
-
- 1
-
في البداية تحتاج إلى استيراد الحزمة المطلوبة من React و Yup و axios وتعيين الدوال المستخدمة بشكل صحيح، ولديك أخطاء أخرى في الكود هي كالتالي: هناك خطأ في استخدام الدوال المتعلقة بـ useState، حيث يجب عليك كتابة useState بدلاً من usestate، أيضًا يجب إزالة المسافة بين set و errors في السطر الأول من الدالة. ولا يجب وضع كود الـ export بداخل الدالة بل خارجها. هناك خطأ في استخدام الدوال المتعلقة بـ useFormik، والصحيح هو أن تكون initialValues و validationSchema و onSubmit خارج الكائن وليس داخله. في دالة register، تقوم بإرسال البيانات إلى رابط الـ API ولكن لم تقم بالتعامل مع الرد المستلم. يجب أن تحقق إذا كانت العملية ناجحة (data.message === 'success') وتتبع الخطوات المناسبة بناءً على ذلك. يجب أن يكون لديك دالة handleSubmit تستدعي دالة formik.handleSubmit. عليك استخدام onChange بدلاً من onchange في العناصر النمطية لـ HTML. والكود بعد تصحيح الأخطاء سيكون بالشكل التالي: import React, { useState } from "react"; import { useFormik } from "formik"; import * as Yup from "yup"; import axios from "axios"; const schema = Yup.object({ email: Yup.string().required("Email is required").email("Not valid email"), password: Yup.string() .required("Password is required") .matches(/^[A-Z][a-z0-9]{4,8}$/, "Invalid password format"), }); export default function Login() { const [errors, setErrors] = useState([]); const navigate = useNavigate(); const [statusError, setStatusError] = useState(""); const formik = useFormik({ initialValues: { email: "", password: "", }, validationSchema: schema, onSubmit: sendRegisterData, }); async function sendRegisterData(values) { try { const { data } = await axios.post( "https://preicous-bass-tights.cyclic.app/auth/login", values ); console.log(data); if (data.message === "success") { setErrors([]); setStatusError(""); navigate("/login"); console.log("welcome"); } else { setErrors(data.err[0]); } } catch (err) { setStatusError(err.response.data.message); } } return ( <div className="container mt-5 pt-5"> <form className="w-50 m-auto text-center" onSubmit={formik.handleSubmit}> <div className="mb-3"> <label htmlFor="exampleInputEmail1" className="form-label"> Email address </label> <input type="email" className="form-control" id="exampleInputEmail1" value={formik.values.email} onChange={formik.handleChange} name="email" aria-describedy="emailhelp" /> </div> <div className="mb-3"> <label htmlFor="exampleInputName" className="form-label"> Name </label> <input type="text" className="form-control" id="exampleInputName" name="name" /> </div> <div className="mb-3"> <label htmlFor="exampleInputPassword1" className="form-label"> Password </label> <input type="password" className="form-control" id="exampleInputPassword1" name="password" value={formik.values.password} onChange={formik.handleChange} /> </div> </form> </div> ); }
- 1 جواب
-
- 1
-
ما فهمته أنك تريدين إرسال البيانات إلى كل من جدول التشخيص وجدول المرضى في قاعدة البيانات باستخدام PHP، صحيح؟ ستحتاجي إذن للقيام بالتالي: تعريف المتغيرات التي تحمل القيم التي تم جمعها من النموذج HTML الخاص بك، مثل $doctor_id و $nut_id و $p_id و $date وغيرها من المتغيرات. استخدمي جملة SQL INSERT INTO لإدخال البيانات في جدول التشخيص باستخدام الاستعلام $sql، ثم تنفيذ هذا الاستعلام باستخدام mysqli_query(). استخدمي جملة SQL INSERT INTO لإدخال البيانات في جدول المرضى باستخدام الاستعلام $sql2، وتنفيذ ذلك الاستعلام أيضًا باستخدام mysqli_query(). وإليك الكود بعد بعد تنفيذ ما سبق: if (isset($_POST['save'])) { $doctor_id = $_SESSION["D_id"]; $nut_id = $_POST['nut_id']; $p_id = $_POST['pat_id']; $date = $_POST['date']; $diabetess = $_POST['diabetess']; $fats_checkup = $_POST['fats_checkup']; $hypertension = $_POST['hypertension']; $dia_description = $_POST['dia_description']; $med_description = $_POST['med_description']; $dia_id = $_POST['dia_id']; // Check if the allergy checkbox is checked if (isset($_POST['allergy-check']) && $_POST['allergy-check'] == 's1') { $allergy = $_POST['allergy_area']; } else { $allergy = ''; } if (isset($_POST['state'])) { $states = $_POST['state']; } if (isset($_POST['if_need_admitting']) && $_POST['if_need_admitting'] == 'yes') { $dormitory = $_POST['dormisory']; $number_room = $_POST['number_room']; } // Insert the patient data into the diagnosis table $sql = "INSERT INTO diagnosis (doctor_id, nutrition_id, patient_id, date, diabetess, state, fats_checkup, hypertension, allergy, dia_description, med_description) VALUES ('$doctor_id', '$nut_id', '$p_id', '$date', '$diabetess', '$states', '$fats_checkup', '$hypertension', '$allergy', '$dia_description', '$med_description')"; // Insert the patient data into the admit table $sql2 = "INSERT INTO admit (dia_id, nut_id, dormitory, room) VALUES ('$dia_id', '$nut_id', '$dormitory', '$number_room')"; $result = mysqli_query($conn, $sql); $result2 = mysqli_query($conn, $sql2); // تحقق من نتائج التنفيذ if ($result && $result2) { // تمت الإضافة بنجاح إلى كلا الجدولين echo "تمت إضافة البيانات بنجاح."; } else { // حدث خطأ أثناء إضافة البيانات echo "حدث خطأ أثناء إضافة البيانات."; } } وعليك بتعديل المتغير $conn في mysqli_query($conn, $sql) و mysqli_query($conn, $sql2) ليكون متغير الاتصال الصحيح بقاعدة البيانات.
-
الإجابة ببساطة هي نعم في حال كنت مصمم وليس مبرمج واجهات أمامية UI\UX. ويجب أن تصحح مفهومك عن أمرًا ما، وهو في حالة أنك تريد أن تصبح مطور واجهات أمامية فعليك بعدم تشتيت نفسك بالأدوات والمنصات المختلفة، والتركيز على تعلم اللغات الأساسية وهي HTML, CSS, JS وبالأخص التركيز على JS لكونها لغة البرمجة الأولى لك، والتطبيق على مشاريع بمفردك وخاصًة المشاريع التي تركز على جافاسكريبت وذلك بعد تعلم HTML وCSS والتطبيق عليهما أيضًا. أما منصات الـ Low code والـ No code فهي مخصصة للمشاريع البسيطة والغير ديناميكية كالتي يمكن بنائها عن طريق إطارات ومكتبات الواجهة الأمامية مثل React. ومنصة Webflow هي منصة No code بمعنى السحب والإلقاء من أجل بناء الواجهة بدون كتابة كود، وهي لها استخدامتها ويوجد لها مشاريع على مواقع العمل الحر الأجنبية ولا مشكلة في ذلك. لكن يتم استخدامه بكثرة من قبل مصممي الواجهة الأمامية UI\UX حيث يوفرون تصميم للواجهة مع إمكانية تصميم الموقع وتسليمه للعميل من خلال Webflow وذلك لكونه لا يتطلب كتابة كود. أما أنت فتخصصك هو مبرمج واجهة أمامية وليس مصمم، مع أنك قادر على التصميم بنسبة معينة وهو ليس من إختصاصك، لكنك إختصاصك هو تخصيص الموقع وإضافة الميزات التي تريدها بدون أي قيود كالتي توجد في Webflow. ولا يوجد مشكلة في تعلم المنصة لزيادة مهاراتك وما أنت قادر على تقديمه للعملاء عند العمل على مواقع العمل الحر، وأيضًا تستطيع إنشاء موقع وعرض الفكرة أو التصميم المبدأي بشكل سريع قبل كتابة الكود في حال لم تريد استخدام أداة مثل Figma. وأنصحك بقراءة النقاش التالي:
-
هل تقصد ملخصات نصية؟ لا يتوفر ذلك حاليًا، والمتوفر فقط هي الملفات الخاصة بكل مسار في حال لزم ذلك. وأيضًا رابط لمستودع المشروع به الكود النهائي للمشروع وذلك في المسارات الخاصة بالمشاريع العملية. وإذا أردت ملخص للغة أو إطار معين أو مكتبة تستطيع البحث عن cheat sheet ثم اسم اللغة مثلاُ وليكن js إذا ستبحث عن cheat sheet for js وستجد ملخصات مثل التالي: https://htmlcheatsheet.com/js/ http://cheatsheets.shecodes.io/javascript وأيضًا يوجد موسوعة حسوب وبها شرح لأغلب اللغات والمكتبات: https://wiki.hsoub.com/الصفحة_الرئيسية وأنصحك بالإطلاع على التالي:
-
بعد الإنتهاء من الدورة وإجتياز الإختبار والحصول على الشهادة فهناك فترة 6 أشهر من موعد اجتيازك للامتحان سيتم مساعدتك فيها للحصول على عمل، وذلك بإرشادك لتحسين السيرة الذاتية الخاصة بك وتحسين معرض الأعمال لديك وكيفية التقديم على وظائف سواء من خلال العمل الحر أو وظيفة. وحتى بعد استكمال الدورة والحصول على شهادة تستطيع طرح الأسئلة هنا بعد البحث، وسيتم مساعدتك من قبل الجميع. أولاً عليك بتحديد ما هي الوظيفة التي تريدها، وأنت اخترت مجال تطوير الواجهة الأمامية، وهنا عليك بالتركيز على اللغات الأساسية HTML, CSS,JS وخاصًة JS حيث أنها لغة البرمجة الأولى لك وستجد في المسار الأول لدورة تطوير التطبيقات باستخدام جافاسكريبت شرح إضافي للأساسيات أنصحك بالإطلاع عليها. بعد ذلك ستجد مشاريع على مواقع العمل الحر وهم مستقل وخمسات تتطلب المهارات التي تعملتها وهي HTML, CSS,JS بجانب Bootstrap وjQuery ولكن تلك المشاريع المنافسة عليها محتدة بعض الشيء، وما تعلمته هو هام جدًا وهو الأساس بلا شك ويجب تعلمه في البداية. ولكن سيتعين عليك أن تعلم إطار عمل أو مكتبة مثل React أو Angular أو Vue.js، وذلك ضروري لكي يتم قبولك في وظيفة بالشركات ومن غير إطار العمل من الصعب إيجاد وظيفة بدوام كامل. وتستطيع تحديد الإطار أو المكتبة المطلوبة في سوق العمل لديك من خلال البحث عن وظائف Front-End على مواقع مثل LinkedIn وIndeed وغيرها تبعًا للمواقع الشهيرة في بلدك. أي عليك تحديد هل تريد العمل على مواقع العمل الحر أو تريد وظيفة، من أجل تحديد اللغات والمهارات المطلوبة التي يجب عليك تعلمها، ألقي نظرة على المشاريع أو متطلبات الوظيفة وستفهم ما عليك تعلمه. وأنصحك بالإطلاع على التالي: وستجد في مدونة مستقل دليل للمستقلين: https://blog.mostaql.com/tag/mostaql-freelancers-guide/
- 3 اجابة
-
- 1
-
الرسالة تعني أن المتغير $nmaes غير معرف ويتم تمرير قيمة null إلى دالة array_pad() وأيضًا اسم المتغير غير صحيح فهو names. أي يجب تعريف المتغير $names وتمرير قيمة مصفوفة إليه قبل استخدامه في دالة array_pad() بتحديد المصفوفة التي ترغب في تعبئتها وتمريرها كمعامل أول للدالة array_pad() كالتالي: $names = ['John', 'Sarah', 'Michael']; وستتمكن الآن من تنفيذ الكود بنجاح دون أي أخطاء، حيث ستقوم array_pad() بتعبئة المصفوفة $names بقيمة 'Hello' لتصل إلى طول 10 عناصر، ومن ثم ستتم طباعة المصفوفة المعبأة باستخدام print_r(). والكود النهائي هو: $names = ['John', 'Sarah', 'Michael']; echo '<pre>'; print_r(array_pad($names, 10, 'Hello')); echo '</pre>';
- 2 اجابة
-
- 1
-
أولاً عليك إنشاء قالب HTML لعرض النموذج على الواجهة الأمامية للموقع (website باستخدام قالب النموذج المدمج في Odoo أو تخصيص قالب خاص بك، وتصميم النموذج وتضمين الحقول اللازمة مثل name و partner_id و partner_mobile وما إلى ذلك، وتأكد من تعيين الأسماء الصحيحة للحقول وإضافة البيانات اللازمة للتحقق من صحة المدخلات. ثم بناء وحدة (module) مخصصة لإدارة عملية التسجيل على النموذج في الواجهة الأمامية، عن طريق إنشاء ملف Python جديد بالاسم الذي ترغب فيه، مثلاً controllers.py. وفي الملف controllers.py، قم بتعريف وحدة التحكم الخاصة بك واستيراد الوحدات اللازمة كالتالي: from odoo import http from odoo.http import request ولا تنسى تعريف المسار (route) الذي سيتم استخدامه لعرض النموذج ومعالجة بياناته، بواسطة الديكوريتور http.route لتحديد المسار وطريقة الوصول (GET أو POST) والوظائف المرتبطة به كالتالي: class MaintenanceReceiptController(http.Controller): @http.route('/maintenance/receipt', type='http', auth='public', website=True, methods=['GET', 'POST']) def maintenance_receipt_form(self, **kw): # عرض النموذج ومعالجة بياناته return http.request.render('your_module.template_name', {}) والآن تعريف دالة لمعالجة بيانات النموذج عند الإرسال واستخدامها لاستلام البيانات المرسلة من النموذج وإنشاء سجل جديد في نموذج maintenance.receipt: class MaintenanceReceiptController(http.Controller): @http.route('/maintenance/receipt', type='http', auth='public', website=True, methods=['GET', 'POST']) def maintenance_receipt_form(self, **kw): if request.httprequest.method == 'POST': # استلام البيانات من النموذج name = kw.get('name') partner_id = kw.get('partner_id') partner_mobile = kw.get('partner_mobile') partner_main = kw.get('partner_main') building_name = kw.get('building_name') unit_name = kw.get('unit_name') # إنشاء سجل جديد في maintenance.receipt receipt = request.env['maintenance.receipt'].sudo().create({ 'name': name, 'partner_id': partner_id, 'partner_mobile': partner_mobile, 'partner_main': partner_main, 'building_name': building_name, 'unit_name': unit_name, }) # يمكنك تنفيذ أي إجراءات إضافية هنا return http.request.render('your_module.template_name', {}) والآن نأتي لخطوة تعريف قالب (template) لعرض النموذج ورسالة تأكيد بعد تسجيل البيانات بنجاح، بالإعتماد على قالب HTML لإظهار رسالة تأكيد أو إعادة توجيه المستخدم إلى صفحة أخرى، وتستطيع استخدام الديكوريتور http.route لتحديد القالب المستخدم كما يلي: class MaintenanceReceiptController(http.Controller): @http.route('/maintenance/receipt', type='http', auth='public', website=True, methods=['GET', 'POST']) def maintenance_receipt_form(self, **kw): if request.httprequest.method == 'POST': # استلام البيانات من النموذج name = kw.get('name') partner_id = kw.get('partner_id') partner_mobile = kw.get('partner_mobile') partner_main = kw.get('partner_main') building_name = kw.get('building_name') unit_name = kw.get('unit_name') # إنشاء سجل جديد في maintenance.receipt receipt = request.env['maintenance.receipt'].sudo().create({ 'name': name, 'partner_id': partner_id, 'partner_mobile': partner_mobile, 'partner_main': partner_main, 'building_name': building_name, 'unit_name': unit_name, }) # رسالة تأكيد أو إعادة توجيه المستخدم إلى صفحة أخرى return http.request.render('your_module.template_success', {}) return http.request.render('your_module.template_name', {}) واستبدل 'your_module.template_name' باسم قالب النموذج لديك و'your_module.template_success' باسم قالب الرسالة التأكيدية. وأخيرًا تسجيل وحدة التحكم الخاصة في ملف __manifest__.py لتمكينها في Odoo بإضافة اسم الملف واسم الوحدة ومسار الملفات وأي تبعيات أخرى.
- 3 اجابة
-
- 1
-
يجب تعيين خاصية charset، حيث أن خاصية charset في Nodemailer تُستخدم لتعيين ترميز الحروف للنصوص الموجودة في البريد الإلكتروني لتعيين ترميز الحروف بشكل صحيح مهم لضمان عرض النصوص بشكل صحيح في البريد الإلكتروني، والسبب هو أن ترميز UTF-8 يدعم العديد من اللغات، بما في ذلك العربية. ونستخدم تلك الخاصية في كائن options كالتالي: const nodemailer = require("nodemailer"); const mailOptions = { from: "sender@example.com", to: "recipient@example.com", subject: "This is an email with Arabic text", text: "هذا هو نص بريد إلكتروني باللغة العربية", charset: "utf-8" }; nodemailer.sendMail(mailOptions, (error, success) => { if (error) { console.log(error); } else { console.log("Email sent successfully!"); } }); وقد يفيدك تحديد خاصية encoding إلى utf-8 مع أنك لست بحاجة إلى ذلك فهى محددة إفتراضيًا إلى utf-8. وتستطيع تفقد جميع الخصائص من خلال المستند الرسمي: https://nodemailer.com/message وإذا استمرت المشكلة فحاول تجربة استخدام مكتبات أخرى بدلاً من Nodemailer ومنها: SendGrid Mailgun SMTP.js
- 4 اجابة
-
- 1
-
الخطأ من نوع SQL syntax أي هناك خطأ في كتابة كود SQL بشكل غير صحيح، عليك بالتحقق من تنسيق الجملة وضمان أنها تتوافق مع قواعد اللغة SQL والتنسيق الصحيح لقواعد البيانات الخاصة بك. وإليك بعض النقاط التي يجب مراعاتها: يجب أن جميع القيم محاطة بعلامات اقتباس صحيحة، فإذا كانت القيم هي نصوص، فعليك بإحاطتها بعلامات اقتباس واحدة أو علامتي اقتباس مزدوجة، كالتالي: '2019-03-06' التأكد من أن جميع القيم الرقمية غير فارغة وتحتوي على أرقام صحيحة. التحقق من أن الفواصل بين القيم في الجملة القيمة صحيحة ومفصولة بفواصل قائمة كالتالي: 'value1', 'value2', 'value3' يجب أن تكون الأعمدة في جدول قاعدة البيانات محددة بشكل صحيح وتتوافق مع ترتيب القيم في الجملة. استخدام وظيفة التحقق من الأخطاء في PHP للكشف عن أي أخطاء في جملة الاستعلام الخاصة بك، مثل mysqli_error(). وإليك مثال لكتابة استعلام SQL: $sql = "INSERT INTO table_name (column1, column2, column3, column4, column5, column6) VALUES ('value1', '2019-03-06', '2', 'can_walk', '30', '66')"; واستبدلي"table_name" بالاسم الصحيح للجدول الذي تريد إدخال البيانات إليه، وأيضًا "column1" وما يليها بأسماء الأعمدة الصحيحة في الجدول.
-
المطلوب هو كتابة اسم التطبيق ووصف له باللغة العربية لكن عليك كتابة ذلك بناءًا على القواعد الخاصة بمتجر آبل، وستجدها من خلال الرابط التالي وأنصحك بقرائتها بالكامل لتجنب الكثير من المشاكل: https://developer.apple.com/app-store/review/guidelines/#:~:text=App names must be limited,specific to the metadata type. والقواعد بخصوص اسم التطبيق (App Name) هي: يجب أن يكون اسم التطبيق فريدًا وغير مكرر. ينبغي تعيين كلمات رئيسية تصف تطبيقك بدقة. يجب تجنب تضمين علامات تجارية لشركات أخرى أو أسماء تطبيقات شهيرة أو معلومات حول الأسعار أو عبارات غير ذات صلة بهدف استغلال النظام. قواعد الوصف (Description): يجب أن يكون الوصف واضحًا وموجزًا، ويشرح فوائد وميزات التطبيق. يجب تجنب تضمين الأسعار أو المصطلحات أو الوصف الذي لا يتعلق بنوع البيانات المحدد. يمكن استخدام عناوين فرعية (subtitles) لتوفير سياق إضافي للتطبيق، ولكن يجب أن تتبع قواعد المحتوى القياسية وعدم تضمين محتوى غير لائق أو إشارة إلى تطبيقات أخرى أو تقديم مزاعم غير قابلة للتحقق. وبالطبع يجب أن يكون الاسم والوصف مماثل للنسخة الإنجليزية من التطبيق. وإليك مثال لتوضيح الأمر بناءًا على تلك القواعد: اسم التطبيق (App Name): FitnessTracker وصف التطبيق (App Description): "تطبيق FitnessTracker هو شريكك الرقمي لتحقيق أهداف اللياقة البدنية. قم بتتبع نشاطك الرياضي والتمارين اليومية ومراقبة تقدمك بسهولة، يوفر التطبيق واجهة بسيطة وسهلة الاستخدام لتسجيل السعرات الحرارية، ومسافات المشي والجري، والوقت المستغرق في التمارين، بإمكانك تحليل بياناتك وتتبع تطورك على مدار الأسابيع والشهور احصل على تحفيز مستمر من خلال تحديات ومكافآت مشوقة، جرّب تطبيق FitnessTracker اليوم واجعل لياقتك أفضل."
-
أنت تريد أن تصبح مطور واجهات أمامية صحيح؟ وأقصد بمطور هنا ليس مصمم بل مطور حيث أن المصمم لا يحتاج أصلا ً إلى تعلم HTML,CSS,JS بل قد يتعلم ذلك لزيادة مهاراته وقيمته في سوق العمل ويصبح UI developer. لكن أنت تريد تحويل التصاميم إلى كود وتطوير الواجهة أي مبرمج، ولذلك أنت بحاجة إلى تعلم لغة برمجة وهي جافاسكريبت ولا غنى عن التعمق في جافاسكريبت وتعلم كل الأساسيات ثم التطبيق على المشاريع للمبتدئين وستجدها من خلال البحث على يوتيوب ولا تنزعج إذا وجدت أشياء جديدة لم تتعلمها في تلك المشاريع فهو المطلوب أصلاً أن تتعلم أشياء جديدة وخلق تحدي لك وزيادة معلوماتك. وبعد الإنتهاء تستطيع الإنتقال إلى مشاريع متقدمة من أجل زيادة معرفتك بلغة جافاسكريبت، لكن أولاً يجب التركيز بشدة على الأساسيات، أي دراسة الأساسيات في دورة تطوير واجهات المستخدم أولاً ثم الإنتقال إلى الأساسيات الموجودة في دورة جافاسكريبت. ثم تنتقل إلى اليوتيوب وابحث عن مشاريع جافاسكريبت للمبتدئين وطبق على أكثر من مشروع وابحث واقرء في حال واجهتك مشاكل لكن فكر أولاً في حل قبل البحث، وفي حال تعثر عليك تنفيذ المطلوب، قم بمشاهدة الشرح في الفيديو ولا مشكلة في ذلك فأنت ما زلت تتعلم لكن بعد المحاولة أولاً. وبعد ذلك عد لدورة تطوير واجهات المستخدم لاستكمالها وتنفيذ المشاريع العملية التي بها وهي إنشاء المواقع.
-
يجب التوضيح أن Bootstrap هو إطار عمل (Framework) لتصميم المواقع والتطبيقات الويب، أي يوفر مجموعة واسعة من الأدوات والمكونات التي تساعد في بناء وتنظيم الهيكلة الأساسية للموقع، ويحتوي على نظام الشبكة (Grid system) الذي يساعد في توزيع العناصر على الصفحة بشكل مرن ومتجاوب. وبالنسبة للأوامر المحددة مثل تغيير الهوامش والحواف والبادينج، فإن Bootstrap يوفر مجموعة من الفئات (Classes) التي يمكنك استخدامها لتحقيق التأثيرات المرغوبة، ومنها فئات البادينج (Padding classes) لإضافة الهوامش والبادينج بأحجام مختلفة، بما في ذلك القيم الكبيرة التي ذكرتها كالتالي: p-1 (لإضافة بادينج صغير) p-2 (لإضافة بادينج متوسط) p-3 (لإضافة بادينج كبير) p-4 (لإضافة بادينج أكبر) p-5 (أكبر بايدينج متوفر بقياس 3rem) بالإضافة إلى البادينج، Bootstrap يوفر أيضًا الفئات المماثلة لتطبيق تأثيرات الهوامش (Margins) على العناصر، وتستطيع استخدام الفئات المناسبة وتطبيقها على العنصر الذي تريد تعديل هوامشه أو الإزاحة. وفي حال أردت استخدام قيمة أكبر من p-5 من الأسهل استخدام كلاس مخصص لذلك وتنسيقه من خلال ملف CSS في مشروعك أي كالتالي: .custom-space { padding: 5rem; /* قيمة إزاحة كبيرة */ } وعند التوجه لصفحة الإزاحات spacing في المستند الرسمي لـ Bootstrap ستجد أنه يخبرك بالتالي: (You can add more sizes by adding entries to the $spacers Sass map variable.) ومعناه إمكانية إضافة مقاسات إضافية للبادينج (Padding) عن طريق إضافة إدخالات إلى متغير خريطة "Sass map" المسمى "$spacers". وقد وضح لك عمر كيفية فعل ذلك. وهناك العديد من الكلاسات والمكونات الجاهزة لتخصيص موقعك بواسطة Bootstrap ومن الأفضل تعلم الإطار، وأيضًا التعرف على الكلاسات المتاحة من خلال المستند الرسمي ولكنه باللغة الإنجليزية ويوجد شرح باللغة العربية لـ Bootstrap 4.5 في موسوعة حسوب. وأيضًا يوجد دروس ومقالات في أكاديمية حسوب عن إطار عمل Bootstrap ومنها:
-
صحيح، تعني أنه يجب عليك تقديم نسخة جديدة من التطبيق تحتوي على أول عملية شراء داخل التطبيق، وإذا قمت بتفعيل Apple Pay أو أي نظام آخر للدفع داخل التطبيق، يتعين عليك إنشاء عملية الشراء داخل التطبيق الأولى وتحديدها في قسم "In-App Purchases and Subscriptions" على صفحة النسخة قبل تقديمها لفريق مراجعة التطبيقات في آبل. وبمجرد تحميل الملف الثنائي للتطبيق وتقديم عملية الشراء الأولى للمراجعة، تستطيع تقديم مزيد من عمليات الشراء داخل التطبيق من قسم "In-App Purchases" في الواجهة.
-
الدورة ليس لها علاقة بالألعاب، إلا أنه يتم لغة سكراتش من خلال تطوير الألعاب من أجل جعل عملية التعلم ممتعة في البداية وتشجيعك على تعلم المزيد من أجل إنشاء لعبة أفضل. حيث أنك ستقوم بتعلم كيفية كتابة الخوارزمية ثم إنشاء مخطط التدفق والشفرة الزائفة، أي تعلم التفكير المنطقي قبل أن تتعلم كتابة الكود وهي المهارة الأهم، ثم التطبيق في النهاية من خلال إنشاء اللعبة على سكراتش، ولاحظ أننا لم نقم بإنشاء اللعبة مباشرًة وتلك هي الطريقة الصحيحة في تنفيذ المشاريع، عليك بالتفكير أولاً وتحديد الطريقة المناسبة ثم كتابة الكود هي أخر خطوة. وبعد ذلك ستتعلم أساسيات البرمجة من خلال جافاسكريبت وبايثون، ثم ستتعلم قواعد البيانات والبرمجة الكائنية وأمور أخرى أيضًا في علوم الحاسب. وأنصحك بالإطلاع على النقاش التالي:
- 3 اجابة
-
- 1
-
التنسيق الوحيد لعنصر header الذي يفرضه user agent stylesheet أي التنسيقات الإفتراضية من قبل محرك المتصفح هو التالي: header { display: block; } لكون العنصر من نوع block. وتستطيع معرفة ذلك من خلال تفقد العنصر من خلال أدوات المطور كالتالي:
- 3 اجابة
-
- 1
-
الأمر ليس كما تظنه مطلقًا حاليًا، فلا تقارن نفسك في بداية تعلم البرمجة بالذكاء الاصطناعي فسيتفوق عليك بالتأكيد، لكن قارن نفسك بعد الإنتهاء من المسار البرمجي الخاص بك وتنفيذ عدة مشاريع بمفردك لا مجرد محاكاة المدرب فقط بل عليك التنفيذ بمفردك مرة أخرى لكي تتعلم من أخطائك وتكتسب ثقة القدرة على إنشاء المشاريع ويتم تثبيت المعلومات التي اكتسبتها. ولا تخف من تجربة إنشاء مشروع مختلف بمفردك، حتى لو تكن تعلم كل شيء في بداية التنفيذ فمع البحث والتفكير وتقسيم المشكلة إلى أجزاء صغيرة سيتم تنفيذ المطلوب طالما أنك تعلم 70% من المعرفة اللازمة لتنفيذ المشروع، ولا تشغل بالك بجودة الكود في البداية المهم هو تنفيذ المطلوب فقط ثم الإهتمام بالجودة، أي تعلم الطريقة الصحيحة لكن لا تشغل بالك بتطبيقها في البداية. وركز على الأساسيات وبالأخص لغة البرمجة الأولى لك تعلم كيف يعمل الكود في الخلفية وكيف يتم قرائته وترجمته وطبيعة المحرك الخاص باللغة والأمر ليس بذلك التعقيد كما تتخيل. وبعد ذلك سترى الأمر على حقيقته، وهو أن الذكاء الاصطناعي غير قادر على تنفيذ مشاريع بل هو مجرد أداة مساعدة لك يتوقف حجم قدرته على معرفتك أنت وقدرتك على توجيهه وتصحيح الأخطاء له. وأرجو منك قراءة النقاش التالي فهو هام جدًا في بدايات تعلمك للبرمجة وإعتماد البعض على الذكاء الاصطناعي للتعلم ونسخ الأكواد منه:
-
بالطبع هناك إختلاف، فكلية الذكاء الاصطناعي في كفر الشيخ كلية متخصصة وستقوم من البداية بدراسة المناهج التأهيلية الخاصة بمجال الذكاء الاصطناعي ثم التخصص في مجال الذكاء الاصطناعي وذلك على مدار 4 سنوات وهي فترة الجامعة. أما في حاسبات ومعلومات فستقوم بالتخصص في مجال الذكاء الاصطناعي من السنة الثالثة، وبالتالي لن تتعمق بشكل كبير في ذلك المجال. حيث أنك في كلية الذكاء الاصطناعي ستقوم بالتخصص في مجالات الذكاء الاصطناعي المختلفة والدراسة بشكل معمق ومتخصص أكثر خلال الـ 4 سنوات وليس سنتين فقط. وستجد أن هناك 4 أقسام في كلية الذكاء الاصطناعي وهم: الروبوتات والآلات الذكية – Robotics & Intelligent Machines تعلم الآلة واسترجاع المعلومات – Machine Learning & Information Retrieval تكنولوجيا أنظمة الشبكات المدمجة – Embedded Network Systems علوم البيانات – Data Science
-
كلاهما مفاهيم مختلف، فقواعد البيانات عني مجموعة من البيانات المنظمة والمخزنة بطريقة مرتبة ومرتبطة. وتهدف إلى تخزين وإدارة البيانات بطريقة فعالة ومنظمة لتمكين استرجاع البيانات وتحليلها بشكل سهل وسريع، وتستخدم قواعد البيانات نظم إدارة قواعد البيانات (DBMS) للتحكم في البيانات والاستفادة منها. ونعتمد عليها في تطبيقات مختلفة مثل أنظمة إدارة المحتوى (CMS) وأنظمة إدارة علاقات العملاء (CRM) وأنظمة إدارة المستودعات (ERP) وغيرها. أما هياكل البيانات (Data Structures) تعني طرق تنظيم وتخزين البيانات في الذاكرة الحاسوبية. وتهدف إلى تحسين كفاءة الوصول والتلاعب بالبيانات وتوفير وقت الاستجابة واستخدام المساحة بشكل فعال، و تشمل مجموعة متنوعة من التراكيب مثل القوائم المرتبة والأشجار والمجموعات والمصفوفات والجداول وغيرها. ونستخدم هياكل البيانات في برمجة الحواسيب لتنظيم البيانات وتحقيق أداء فعال للخوارزميات والعمليات المختلفة.
- 4 اجابة
-
- 2
-
PSأنت لم تحدد الميزانية الخاصة بك، وأيضًأ لم تحدد ما هي المنصة الخاصة بموقعك هل هي ووردبربس أم برمجة خاصة؟ علي أي حال أمامك عدة خيارات، الأول هو والذي أفضله هو شراء VPS (سيرفر بمواصفات مرتفعة وبنظام ويندوز أو لينكس) من مزود خدمة مثل Linode وDigital ocean لكن ستحتاج إلى ضبط إعدادات السيرفر ودراية بكيفية التعامل مع الـ vps، أو تستطيع تعيين تلك المهمة للمبرمج الذي قام بتنفيذ المنصة التعليمية لك، وهناك خدمة ستجدها باسم Managed وتعني إدارة السيرفر الخاص بك من قبل فريق الدعم الفني. والأسهل هو الإشتراك في خدمة استضافة سحابية مثل cloudways والتي توفر لك إدارة كاملة للسيرفر الخاص بك سواء من خلال digital ocean أو AWS أو Google cloud. أما إذا كنت الميزانية منخفضة وتريد التجربة في البداية، فتستطيع الإعتماد على الاستضافات المشتركة shared hosting وأرشح لك fastcomet أو verpex ولديك أيضًا chemicloud. وكنصيحة تستطيع تفقد موقع hostadvice.com وستجد ترشيحات جيدة للإستضافات بأنواعها المختلفة وبناءًا على تقييمات عملاء سابقين.
- 4 اجابة
-
- 1
-
الغرض منه هو توفير الكود النهائي للمشروع بعد التعديلات والتحسينات النهائية، بحيث تتمكن من الرجوع إليه في حال أردت مقارنة الكود الخاص بك بالكود النهائي للمشروع. ففي بعض الأحيان ستواجه مشكلة معينة في مشروعك، ووقتها تستطيع الرجوع إلى مستودع المشروع وتفقد هل الإعدادات لديك صحيحة؟ هل الكود مماثل أو يؤدي نفس الغرض المطلوب تنفيذه؟ هل لدي خطأ في كتابة المسارات أو وضعت كود بالمكان الخطأ؟ وأيضًا هل إصدارات الحزم لديك مطابقة للتي في المستودع من أجل تجنب مشاكل تعارض في الإصدارات او تغير في طريقة الاستخدام مع تغير الإصدارات، وتستطيع نسخ إصدارات الحزم وتثبيتها في مشروعك. وفي بعض الأحيان ستحتاج إلى نسخ كود في حال لم تريد إعادة كتابة جزء معين من المشروع، أو في حال فقدت ملفات المشروع الخاص بك، فتستطيع نسخ الجزء الذي فقدته واستكمال الدورة. لكن بالطبع ذلك لا يعني أن تقوم بنسخ المشروع ولا تقوم بفهم الكود إعادة تنفيذ المشروع بمفردك مرة أخرى، حيث سيتم سؤالك عن كيفية تنفيذك للمشروع ومدى استيعابك للكود.