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

عبد الوهاب بومعراف

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

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

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

كل منشورات العضو عبد الوهاب بومعراف

  1. ليس من الضروري فهم جميع المواضيع الموجودة في موسوعة حاسوب أو أي مرجع آخر من البداية إلى النهاية فالعديد من المفاهيم سيتم التطرق إليها بشكل طبيعي خلال العمل على المشاريع، لكني أنصح بالاهتمام أكثر والالمام بالأساسيات ثم ستتقنها فيما بعد عند العمل على المشاريع، كما أرجو أن تقوم بإرفاق الأسئلة والاستفسارات المتعلقة بكل درس في صندوق التعليقات أسفل كل درس.
  2. أجل، يمكنك ذلك من خلال إنشاء نموذج HTML يحتوي على حقل select والذي سيتيح للمستخدم اختيار الجنس، بالإضافة إلى حقول أخرى مطلوبة، وزر إرسال يرسل البيانات إلى ملف PHP لمعالجتها وسأرفق أمثلة عن كل خطوة: <form action="process_form.php" method="post"> <!-- حقول أخرى هنا مثل الاسم والبريد الإلكتروني --> <label for="gender">الجنس:</label> <select name="gender" id="gender"> <option value="male">ذكر</option> <option value="female">أنثى</option> </select> <input type="submit" value="إرسال"> </form> الخطوة التي تلي ذلك وهي معالجة البيانات في ملف PHP في هذا الملف، نقوم بمعالجة البيانات المرسلة من النموذج وتحديد قيمة مختلفة لحقل specified_value بناء على اختيار الجنس، ثم إدخال البيانات في قاعدة البيانات هكذا: <?php // الاتصال بقاعدة البيانات $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "database_name"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("فشل الاتصال: " . $conn->connect_error); } // الحصول على بيانات النموذج $gender = $_POST['gender']; $specified_value = 0; // تحديد القيمة بناءً على الجنس if ($gender == "male") { $specified_value = 10; } else if ($gender == "female") { $specified_value = 5; } // إدخال البيانات في قاعدة البيانات $sql = "INSERT INTO table_name (gender, specified_value) VALUES ('$gender', $specified_value)"; if ($conn->query($sql) === TRUE) { echo "تم إدخال البيانات بنجاح"; } else { echo "خطأ: " . $sql . "<br>" . $conn->error; } $conn->close(); ?> هنا نسترجع البيانات من قاعدة البيانات ونعرضها في جدول HTML ونقوم باسترجاع الجنس والقيمة المحددة وعرضها في الصفوف: <?php // الاتصال بقاعدة البيانات $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "database_name"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("فشل الاتصال: " . $conn->connect_error); } $sql = "SELECT * FROM table_name"; $result = $conn->query($sql); if ($result->num_rows > 0) { echo "<table><tr><th>الجنس</th><th>القيمة المحددة</th></tr>"; while($row = $result->fetch_assoc()) { echo "<tr><td>" . $row["gender"] . "</td><td>" . $row["specified_value"] . "</td></tr>"; } echo "</table>"; } else { echo "لا توجد نتائج"; } $conn->close(); ?>
  3. من فضلك نحن عادة لا نجيب على أسئلة الدورات هنا فهذا قسم الأسئلة العامة، ستجد أسفل الدرس في نهاية الصفحة صندوق للتعليقات من فضلك قم بوضع سؤالك أسفل الدرس هناك وذلك لمساعدتك بشكل أفضل وجيد.
  4. نظام الدعم الآلي SVM (Support Vector Machine) هو تقنية تعلم آلي تُستخدم للتصنيف والتنبؤ. يعتمد على إيجاد الفاصل الأمثل الذي يفصل بين مجموعات البيانات المختلفة بأكبر هامش. يمكن استخدامه في التصنيف الثنائي والتعرف على الأنماط، وله تطبيقات مثل التعرف على النصوص والصور والتنبؤ بالسوق. يتميز SVM بفعاليته في المساحات العالية الأبعاد واستخدامه لمجموعة فرعية من نقاط التدريب، لكنه يمكن أن يكون بطيئًا على مجموعات البيانات الكبيرة وقد يتطلب اختيار دالة كيرنية مناسبة. في هذه المقالة ستتعرف أكثر على هذا النظام:
  5. وعليكم السلام، حينما نقرأ رسالة الخطأ "could not find driver" فنجد أنها تشير إلى أن Laravel غير قادر على العثور على محرك قاعدة البيانات sqlite وهو مطلوب للاتصال بقاعدة البيانات. لحل هذه المشكلة قم بتثبيت امتداد pdo_sqlite. فإذا كنت تستخدم XAMPP أو Laragon أو أي بيئة سيرفر محلية مشابهة، تأكد من أن امتداد pdo_sqlite مفعل في إعدادات PHP وافتح ملف php.ini وابحث عن السطر الذي يحتوي على: ;extension=pdo_sqlite وقم بإزالة التعليق (إزالة الـ ; في بداية السطر). وتأكد من وجود السطر التالي أيضا بدون تعليق: extension=sqlite3 بعد تعديل ملف php.ini، أعد تشغيل سيرفر Apache أو Nginx لتطبيق التغييرات كما تأكد من أنك قمت بتثبيت حزم Composer اللازمة. في مجلد المشروع من خلال تشغيل الأوامر التالية: composer install composer update تأكد من أن إعدادات قاعدة البيانات في ملف .env صحيحة. يجب أن تكون الإعدادات كالتالي عند استخدام SQLite: DB_CONNECTION=sqlite DB_DATABASE=/path_to_your_database/database.sqlite
  6. يمكنك تثبيت النسختين من خلال اتباع هاته الخطوات، النسخة الواحدة بنمط Desktop Class والثانية بنمط Server Class، أولا قم بتحميل النسختين من موقع Oracle الرسمي، ثم أنشئ مجلدين منفصلين على جهازك لكل واحدة منهما، مثل `C:\Oracle\Desktop` و`C:\Oracle\Server`. اتبع هذه الخطوات لتثبيت النسخة الأولى (Desktop Class): افتح برنامج التثبيت. اختر 'C:\Oracle\Desktop' كمجلد التثبيت. استمر في عملية التثبيت واتبع التعليمات. أعط النسخة الأولى اسم SID فريد، مثل 'ORCL1'. بالنسبة لتثبيت النسخة الثانية (Server Class) كذلك قم: بفتح برنامج التثبيت الثاني. واختر `C:\Oracle\Server` كمجلد التثبيت. ثم استمر في عملية التثبيت واتبع التعليمات. وأعط النسخة الثانية اسم SID فريد، مثل 'ORCL2'. كما لا تنسى تعديل المتغيرات البيئية من خلال فتح إعدادات النظام وإضافة مساري التثبيت إلى متغير PATH وتأكد من أن إعداد متغيرات 'ORACLE_HOME' بشكل صحيح لكل نسخة. تحديث ملفات الشبكة أمر ضروري أيضا من خلال فتح ملفات `tnsnames.ora` و`listener.ora` وإضافة معلومات الاتصال لكل نسخة بحيث يتمكن النظام من التعرف على كلا المثيلين. يمكن استخدام أدوات مثل SQL*Plus للاتصال بكل نسخة على حدة وشغل بعض الاستعلامات البسيطة للتأكد من أن كل نسخة تعمل بشكل صحيح.
  7. لإتقان الأساسيات في البرمجة، يجب عليك أولا اختيار لغة برمجة واحدة للتركيز عليها، مثل Python أو JavaScript، لأنهما تعتبران من أسهل اللغات للمبتدئين، ثم تبدأ بتعلم المفاهيم الأساسية مثل المتغيرات (variables)، الحلقات (loops)، الشروط (conditionals)، والدوال (functions) وهذا الأمر سيساعدك على بناء أساس قوي. يمكنك أن تهمّ بقراءة وفهم أمثلة من الأكواد البرمجية المكتوبة بلغة البرمجة التي اخترتها، ثم كتابة أكواد برمجية مثل البرامج التي تنفذ عمليات حسابية بسيطة أو تلك التي تتعامل مع النصوص والبيانات وحاول دائما حل المشاكل البرمجية البسيطة في البداية، مثل تلك التي تتطلب منك حساب الأعداد الفردية أو الزوجية أو التحقق من صلاحية بيانات معينة. تذكر دائما، أنه من الضروري ممارسة البرمجة بانتظام من خلال أن تجعل لنفسك تحديات يومية أو أسبوعية مع تصفح وقراءة الأكواد المفتوحة المصدر على منصات مثل GitHub فيمكن تعطيك فكرة عن كيفية هيكلة البرامج الكبيرة وكتابة كود نظيف وفعال.
  8. حجم البيانات بلا شك له أهمية كبيرة، ولا يمكن حصرها، لكن مع ذلك صحيح، يمكن أن يؤثر وجود كمية كبيرة من البيانات سلبا على نماذج تعلم الآلة بسبب زيادة التعقيد الحسابي، وطول وقت التدريب مع صعوبة إدارة جودة البيانات، وتعقيد النماذج التي تعمل عليها، يمكنك تصفح هذه المقالة:
  9. ليس شرطا أن تكون ملما بكل النماذج في مكتبة sklearn لكن مع ذلك يفضل معرفة النماذج الأكثر شيوعا واستخداما وفهم كيفية اختيار وتطبيق النماذج المناسبة لهذا من المهم أن تكون لديك معرفة بالنماذج الأساسية مثل الانحدار الخطي واللوجستي، الأشجار العشوائية، التعزيز التدرجي، آلات الدعم الآلي، نماذج الجيران الأقرب، ونماذج نايف بايز وأن تكون قادرا على استخدام أدوات التقييم والتحسين مثل GridSearchCV وRandomizedSearchCV لضبط وتحسين أداء النماذج مع فهم تقنيات خفض الأبعاد مثل PCA وLDA كما أنها تعتبر مهمة لتبسيط البيانات. بالنسبة للمقابلات، فقد تسأل عن كيفية عمل النماذج واختيار الأنسب منها، لذا قم بالتركيز على الفهم العميق للنماذج وكيفية تطبيقها، وكن مستعدا لشرح كيفية تحسين الأداء باستخدام هذه النماذج.
  10. حاليا حسب آخر الأخبار التقنية التي مرت علي، لا أرى أنه يوجد نظام ذكاء اصطناعي يمكنه التفكير واتخاذ القرارات كما نفعل نحن، فجميع أنظمة الذكاء الاصطناعي الموجودة تعتمد على تدريب نماذجها على بيانات ضخمة وقدرتها على معالجة البيانات بسرعة عالية من خلال اعتمادها على خوارزميات التعلم الآلي، والتي تمكنها من تحليل البيانات واستخلاص الأنماط واتخاذ القرارات بناء على ذلك. فهو اليوم لا يملك الوعي الذاتي أو الفهم الحقيقي الذي يتمتع به الإنسان لأنها تعتمد على التعلم من البيانات وليس لديها فهم حقيقي أو وعي. بالنسبة للسؤال عن التفكير مثل طفل صغير أو بنسبة 40% مثل الإنسان، فإن هذا يشير إلى محاكاة الأنماط السلوكية وليس إلى الذكاء الحقيقي. ربما يمكن لبعض الأنظمة أن تتعلم تقليد سلوكيات معينة بناء على البيانات التي تم تدريبها عليها، لكنها لا تفهم أو تفكر بالطريقة التي يفعلها البشر.
  11. هل تستخدم هذه الإضافة Bitdefender Anti-tracker‬؟ أو أي إضافة خاصة بمانع الإعلانات؟ إن كان نعم فحاول تعطيلها أو حذفها لمعرفة ما إن كانت المشكلة في الإضافة نفسها أو من المتصفح. إن كانت المشكلة مستمرة أرجو حذف الملفات المؤقتة في المتصفح من خلال الضغط على Ctrl + shift + r لتحميل الصفحة مع حذف الملفات المؤقتة تلقائيا، أو كحل سريع قم بتجربة استخدام متصفح آخر، فقد تكون بعض المتصفحات غير متوافقة مع مشغلات الفيديو.
  12. عملية التنبؤ بالمبيعات باستخدام تحليل السلاسل الزمنية، يمكننا أن نبدأ بهذه الطريقة، أولا نقوم بجمع بيانات المبيعات التاريخية التي تشمل التواريخ وكميات المبيعات، هذه البيانات يمكن أن تكون يومية، أسبوعية، أو شهرية. بعد جمعها، نبدأ بفهمها من خلال استعراضها ورسمها لرؤية الأنماط العامة مثل الاتجاهات والتغيرات الموسمية وأي تقلبات غير منتظمة. تفكيك السلسلة الزمنية يتضمن ثلاثة مكونات رئيسية وهي الاتجاه (Trend) الذي يمثل التغيرات طويلة الأمد، الموسمية (Seasonality) التي تعكس الأنماط المتكررة على فترات محددة مثل الزيادة في المبيعات خلال فصل الصيف، والتغيرات العشوائية (Noise) التي لا تتبع نمطا محددا. لتحليل وتفكيك السلسلة الزمنية، يمكننا استخدام أدوات برمجية مثل Python، في هذا السياق يمكن أن نستخدم مكتبة statsmodels لتفكيك السلسلة الزمنية من خلال قراءة بيانات المبيعات من ملف CSV، ثم استخدام seasonal_decompose لتفكيك السلسلة الزمنية وعرض النتائج باستخدام الرسوم البيانية. وبعد تحليل السلسلة الزمنية، نختار نموذجا مناسبا للتنبؤ. مثلا نموذج ARIMA أو (الانحدار الذاتي والمتوسط المتحرك) هو أحد النماذج الشائعة. ففي هذا النموذج، نقوم بإعداد النموذج باستخدام بيانات المبيعات، ثم التنبؤ بالمبيعات للأشهر القادمة وعرض التنبؤات. أهم مرحلة وهي تقييم النموذج بمقارنة التنبؤات مع البيانات الفعلية باستخدام مقاييس مثل MAE (متوسط الخطأ المطلق) أو RMSE (جذر متوسط مربعات الخطأ) لتحسين دقة النموذج. أما بالنسبة لتحليل المبيعات، يمكن أن يكون التحليل على مستوى المنتجات الفردية إذا كنا نهتم بأداء منتج معين، أو على مستوى التحصيلات الكلية إذا كنا مهتمين بالأداء العام للشركة من خلال اختيار مستوى التحليل الذي يعتمد على الهدف من التنبؤ.
  13. نعم، هي مناسبة ويمكن استخدامها لكتابة الأكواد وتنفيذها بسهولة دون الحاجة إلى إعداد برامج معقدة، فالنسخة المجانية تقريبا توفر كل ما تحتاجه للبدء في تعلم البرمجة والعمل على مشاريع صغيرة. وعندما تتقدم في مهاراتك وتحتاج إلى موارد أكبر أو وقت تشغيل أطول، يمكن التفكير في الاشتراك في الخدمات المدفوعة للحصول على ميزات إضافية. ولكن في البداية، النسخة المجانية ستكون كافية جدا لتعلم الأساسيات والقيام بمشاريع بسيطة. تصفح هذه المصادر لمعلومات أكثر حول Google Colab:
  14. يمكنك ضبط حجم واجهة Visual Studio Code بسهولة وإعادة تكبير أو تصغير الشاشة إلى الحجم الطبيعي باتباع الخطوات التالية: استخدام اختصارات لوحة المفاتيح: - لتصغير التكبير (Zoom Out): اضغط على `Ctrl` و`-`. - لتكبير الشاشة (Zoom In): اضغط على `Ctrl` و`+`. - لإعادة التكبير إلى الوضع الافتراضي (Reset Zoom): اضغط على `Ctrl` و`0`. استخدام قائمة العرض (View Menu): - اذهب إلى شريط القوائم في الأعلى واختر View. - من القائمة المنسدلة، اختر Appearance. - هنا ستجد خيارات مثل Zoom In و Zoom Out , Reset Zoom. يمكنك إيجاد العديد من الاختصارات التي ستفيدك من هنا:
  15. حسنا هذا مثال باستخدام مكتبة Smarty. لنبدأ أولا بصفحة تعديل القالب التي ستسمح للمستخدم بتحرير محتوى ملفات القالب من خلال لوحة التحكم. <?php require_once('init.php'); $template = isset($_GET['template']) ? $_GET['template'] : 'default'; $templateDir = __DIR__ . "/templates/{$template}"; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $filepath = $templateDir . '/' . $_POST['file']; file_put_contents($filepath, $_POST['content']); echo "Template updated successfully!"; } $files = array_diff(scandir($templateDir), ['..', '.']); $selectedFile = isset($_POST['file']) ? $_POST['file'] : (reset($files) ?: ''); ?> ولتثبيته هذا مثال عليه: <!DOCTYPE html> <html> <head> <title>Edit Template</title> </head> <body> <h1>Edit Template: <?php echo htmlspecialchars($template); ?></h1> <form method="get"> <label for="template">Select Template:</label> <select name="template" id="template" onchange="this.form.submit()"> <?php $templates = array_diff(scandir(__DIR__ . '/templates'), ['..', '.']); foreach ($templates as $tpl) { echo "<option value='{$tpl}'" . ($tpl == $template ? ' selected' : '') . ">{$tpl}</option>"; } ?> </select> </form> <form method="post"> <label for="file">Select File:</label> <select name="file" id="file" onchange="this.form.submit()"> <?php foreach ($files as $file) { echo "<option value='{$file}'" . ($file == $selectedFile ? ' selected' : '') . ">{$file}</option>"; } ?> </select> <br> <textarea name="content" rows="20" cols="80"><?php echo htmlspecialchars(file_get_contents($templateDir . '/' . $selectedFile)); ?></textarea> <br> <input type="submit" value="Save"> </form> </body> </html>
  16. Matplotlib هي مكتبة رسم بياني في بايثون تقدم تحكما دقيقا في تفاصيل الرسوم البيانية وتتيح مرونة كبيرة في التخصيص، كما يمكن استخدامها لإنشاء رسوم بيانية بسيطة ومعقدة وتدعم مجموعة واسعة من الأنواع مثل الخطوط والأشرطة والدوائر وحتى الرسوم البيانية ثلاثية الأبعاد. في حين أن Seaborn مبنية على Matplotlib وتستخدم لإنشاء رسوم بيانية أكثر تعقيدا وجمالية بشكل أسهل وتأتي بأنماط جاهزة تجعل الرسوم البيانية أكثر جاذبية وتوفر دوال مدمجة لإنشاء الرسوم البيانية الإحصائية بسهولة. كما أنها تتكامل بسهولة مع مكتبة Pandas، مما يجعلها مناسبة لتحليل البيانات والاستكشاف في النهاية فإن اختيار المكتبة يعتمد على احتياجات المشروع، فإذا كنت بحاجة إلى تخصيص دقيق، فإن Matplotlib هي الأفضل، أما إذا كنت تريد سهولة في الاستخدام ورسوم بيانية جميلة بسرعة، فإن Seaborn هي الخيار الأنسب.
  17. إذا بدأت بدورة علوم الحاسوب وليس لديك خبرة سابقة، نعم يمكنك دخول سوق العمل بعد الانتهاء منها بشرط أن تكون الدورة شاملة وتغطي الأساسيات مثل البرمجة وهياكل البيانات والخوارزميات. مسألة الدخول لسوق العمل برأيي أنه لا يحتاج اكتساب خبرة كبيرة، فيمكن البدء من خلال العمل على مشاريع صغيرة نجد أنفسنا قادرين على حلها ثم التدرج شيئا فشيئا وبالطبع سنتعلم أكثر من خلال المشاريع التي ننجزها. من المهم أيضًا أن تطبق ما تتعلمه من خلال مشاريع عملية وتبقى على اطلاع بالتطورات الجديدة في المجال. الخبرة العملية، سواء من خلال التدريب أو العمل بدوام جزئي، ستساعدك كثيرا. وإذا وجدت نفسك مهتما بمجال معين بعد الانتهاء من الدورة، يمكنك متابعة التعلم في هذا المجال لتزيد من فرصك في الحصول على وظيفة مناسبة مستقبلا، فهذه الدورة يبدو أنها ضرورية لدخول الدورات الأخرى وتعلمها. يمكنك مراجعة الاستفسارات والإجابات حول دورة علوم الحاسوب من هنا:
  18. العديد من المواقع توفر إمكانية تصميم صفحات ويب باستخدام قوالب جاهزة، وتتيح لنا أيضا تحميل الكود الخاص بالموقع بعد الانتهاء من التعديلات. من بين هذه المواقع، موقع Wix وهو أحد الخيارات الشهيرة، حيث يمكن استخدام واجهة مستخدم بديهية وسهلة لتصميم الموقع دون الحاجة إلى كتابة أي كود وبعد الانتهاء من تصميم الموقع، يمكن تصديره كملفات HTML وCSS وJavaScript. Squarespace هو الآخر يقدم خدمة مماثلة، حيث يتيح استخدام مجموعة من القوالب الاحترافية التي يمكن تخصيصها بسهولة. بعد تصميم الموقع، يمكن نشره مباشرة أو تصديره للاحتفاظ بنسخة من الكود. WordPress غني عن التعريف وهو يعتبر منصة مرنة للغاية، خصوصا عند استخدام إضافات مثل Elementor أو Divi. فهذه الإضافات توفر واجهات سحب وإفلات تتيح تصميم الموقع بدون كتابة كود. بعد الانتهاء، يمكن تصدير الكود الخاص بالموقع فإذا كنت تستخدم مكونات إضافية معينة تدعم هذه الخاصية. Bootstrap Studio هو تطبيق يمكن تنزيله، ويتيح تصميم مواقع باستخدام Bootstrap من خلال واجهة سحب وإفلات أيضا والعديد من المواقع تعمل بنفس المبدأ لأن استخدام هذه الأدوات يوفر الوقت والجهد لكن استخدامها قد لا يكون مناسبا عندما تحتاج إلى تخصيصات متقدمة جدا أو تفاعلات معقدة لا تستطيع هذه الأدوات توفيرها بشكل كامل. فإذا كان الأداء الأمثل هو هدف رئيسي، فقد تنتج هذه الأدوات كودا غير فعال مما يؤثر سلبا على سرعة وأداء الموقع. ففي المشاريع التي تتطلب توافقا مع أنظمة أو متصفحات قديمة، قد يكون من الضروري كتابة الكود يدويا لضمان التوافق الكامل. أما بالنسبة للمشاريع التي تتطلب مستويات عالية من الأمان، الاعتماد على أدوات التصميم بدون كود قد يكون غير كاف لضمان كل متطلبات الأمان الضرورية.
  19. أنصحك باتباع خطة تتضمن الاستماع للدرس مرة واحدة بتركيز ثم تدوين الملاحظات، وبعد الانتهاء من الدرس، تقوم بتلخيص المفاهيم والدوال الرئيسية مع استخداماتها ثم افتح محرر الأكواد وابدأ في تجربة الدوال والأمثلة التي تم شرحها. مع محاولة تطبيق ما تتعلمه فورا لترسيخ المفاهيم وتثبيتها في ذهنك. لتحقيق أفضل النتائج، من المفيد البحث عن مصادر إضافية للتعلم. يمكنك الاعتماد على أكاديمية حسوب حيث توفر العديد من المقالات والمصادر من بينها: كما يمكنك استخدام موقع roadmap.sh للحصول على خارطة طريق مفصلة توضح المهارات والمفاهيم التي يجب تعلمها لتصبح مطور بايثون محترف فتلك الخارطة تقدم ترتيبا منطقيا للموضوعات وتساعد على تتبع تقدمك في التعلم وهذا رابطها: Step by step guide to becoming a Python developer in 2024
  20. أول خطوة نقوم بتنظيم ملفات القوالب وذلك من خلال إنشاء مجلد `templates` في جذر الموقع، ونضع بداخله مجلدات لكل قالب بحيث يكون لكل مجلد قالب يحتوي على ملفات `.tpl` الخاصة به هكذا: project_root/ |-- templates/ | |-- template1/ | | |-- header.tpl | | |-- footer.tpl | | |-- index.tpl | |-- template2/ | |-- header.tpl | |-- footer.tpl | |-- index.tpl |-- other_files_and_folders/ لإعداد نظام القوالب نستخدم مكتبة مثل Smarty لتسهيل الأمر، نقوم بتثبيتها من خلال ال Composer composer require smarty/smarty ثم نقوم بإعداد ملف php: require_once('vendor/autoload.php'); $smarty = new Smarty; $template = isset($_GET['template']) ? $_GET['template'] : 'default'; $templatePath = __DIR__ . "/templates/{$template}"; $smarty->setTemplateDir($templatePath); $smarty->setCompileDir('templates_c'); $smarty->setCacheDir('cache'); $smarty->setConfigDir('configs'); // Assign variables and display template $smarty->assign('name', 'Abdelouahab'); $smarty->display('index.tpl'); ثم نقوم بإنشاء صفحة في لوحة التحكم لعرض وتعديل ملفات القوالب بهذا الشكل: $templatesDir = __DIR__ . '/templates'; $templates = array_diff(scandir($templatesDir), ['..', '.']); foreach ($templates as $template) { echo "<a href='edit_template.php?template={$template}'>{$template}</a><br>"; } صفحة تعديل القالب: $template = isset($_GET['template']) ? $_GET['template'] : ''; $filepath = __DIR__ . "/templates/{$template}/index.tpl"; if ($_SERVER['REQUEST_METHOD'] === 'POST') { file_put_contents($filepath, $_POST['content']); } $content = file_get_contents($filepath); ?> <form method="post"> <textarea name="content" rows="20" cols="80"><?= htmlspecialchars($content) ?></textarea><br> <input type="submit" value="Save"> </form> ثم نضيف جدول في قاعدة البيانات لحفظ القالب المختار من قبل المستخدم: CREATE TABLE settings ( id INT AUTO_INCREMENT PRIMARY KEY, template VARCHAR(255) NOT NULL ); ثم نقوم بحفظ القالب: $template = $_POST['template']; $pdo = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password'); $stmt = $pdo->prepare("UPDATE settings SET template = ? WHERE id = 1"); $stmt->execute([$template]); ثم نستخدمه من خلال هذه الشيفرة: $stmt = $pdo->query("SELECT template FROM settings WHERE id = 1"); $template = $stmt->fetchColumn(); $templatePath = __DIR__ . "/templates/{$template}"; $smarty->setTemplateDir($templatePath); $smarty->assign('name', 'Abdelouahab'); $smarty->display('index.tpl'); وأخيرا في لوحة التحكم، نقوم بإضافة خيار لتحديد القالب الحالي من خلال إنشاء قائمة منسدلة (Dropdown) لاختيار القالب، وتحديث القيمة في قاعدة البيانات عند التغيير هكذا: $templatesDir = __DIR__ . '/templates'; $templates = array_diff(scandir($templatesDir), ['..', '.']); echo "<form method='post'>"; echo "<select name='template'>"; foreach ($templates as $template) { echo "<option value='{$template}'>{$template}</option>"; } echo "</select>"; echo "<input type='submit' value='Save'>"; echo "</form>"; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $selectedTemplate = $_POST['template']; $stmt = $pdo->prepare("UPDATE settings SET template = ? WHERE id = 1"); $stmt->execute([$selectedTemplate]); }
  21. بداية، ستحتاج إلى إنشاء نموذج Django يعبر عن البيانات التي تريد تخزينها لنفترض أنك تريد حفظ اختيار المستخدم في حقل يسمى 'choice' فأول خطوة كما ذكرنا هي إنشاء النموذج على النحو التالي في ملف `models.py`: from django.db import models class ChoiceModel(models.Model): CHOICES = [ ('option1', 'Option 1'), ('option2', 'Option 2'), ('option3', 'Option 3'), ] choice = models.CharField(max_length=10, choices=CHOICES) def __str__(self): return self.choice وهذا النموذج يحتوي على حقل يتضمن خيارات ثابتة يمكن للمستخدم الاختيار منها. ثاني شيء ستحتاج إلى إنشاء نموذج Form يعرض القائمة المنسدلة في HTML ننشؤه من خلال ملف forms.py على النحو التالي: from django import forms from .models import ChoiceModel class ChoiceForm(forms.ModelForm): class Meta: model = ChoiceModel fields = ['choice'] ولتوضيح الفكرة فهذا النموذج يستخدم النموذج الذي أنشأته في الخطوة السابقة لعرض القائمة المنسدلة في HTML. بعدها ستحتاج إلى إنشاء عرض أو (View) يعرض النموذج ويتعامل مع البيانات المرسلة من المستخدم ننشؤه في ملف views.py على النحو التالي: from django.shortcuts import render, redirect from .forms import ChoiceForm def choice_view(request): if request.method == 'POST': form = ChoiceForm(request.POST) if form.is_valid(): form.save() return redirect('success') else: form = ChoiceForm() return render(request, 'choice_form.html', {'form': form}) هذا العرض يتأكد من أن النموذج يتم عرضه بشكل صحيح ويتعامل مع إرسال البيانات فإذا كان الطلب من نوع POST يتم التحقق من صحة النموذج وحفظ البيانات في قاعدة البيانات لكن سنحتاج إلى إنشاء قالب HTML يعرض النموذج. يمكنك إنشاء هذا القالب في ملف choice_form.html داخل مجلد `templates` على النحو التالي: <!-- templates/choice_form.html --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Choice Form</title> </head> <body> <h1>اختر من القائمة المنسدلة</h1> <form method="post"> {% csrf_token %} {{ form.as_p }} <button type="submit">إرسال</button> </form> </body> </html>
  22. لحل المشكلة يمكنك تعطيل الكود في ملف 'AuthServiceProvider.php' مؤقتا حتى يتم إنشاؤه بنجاح أثناء عملية الترحيل والبذر لأنه يستخدم جدول 'permissions' كما هو موضح هنا: /* Permission::whereIn('name', ['edit-post', 'delete-post', 'add-post'])->get()->map(function($per) { Gate::define($per->name, function($user, $post) use ($per) { return $user->hasAllow($per->name) && ($user->id == $post->user_id || $user->isAdmin()); }); }); Permission::whereIn('name', ['edit-user', 'delete-user', 'add-user'])->get()->map(function($per) { Gate::define($per->name, function($user) use ($per) { return $user->hasAllow($per->name) && $user->isAdmin(); }); }); */ ثم قم بتشغيل الأمر التالي لإنشاء مفتاح التطبيق: php artisan key:generate ثم تأكد من إدخالك لمعلومات الاتصال الصحيحة في ملف `.env` مثلما هو موضح هنا: DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=اسم_قاعدة_بياناتك DB_USERNAME=اسم_مستخدم_قاعدة_بياناتك DB_PASSWORD=كلمة_مرور_قاعدة_بياناتك والآن يمكنك القيام بتشغيل الأمر التالي لترحيل الجداول وتعبئتها بالبيانات الأولية: php artisan migrate:fresh --seed وبعد الانتهاء من الترحيل والبذر بنجاح، افتح ملف `AuthServiceProvider.php` مرة أخرى وقم بإزالة التعليق عن الأسطر التي علقتها سابقا. Permission::whereIn('name', ['edit-post', 'delete-post', 'add-post'])->get()->map(function($per) { Gate::define($per->name, function($user, $post) use ($per) { return $user->hasAllow($per->name) && ($user->id == $post->user_id || $user->isAdmin()); }); }); Permission::whereIn('name', ['edit-user', 'delete-user', 'add-user'])->get()->map(function($per) { Gate::define($per->name, function($user) use ($per) { return $user->hasAllow($per->name) && $user->isAdmin(); }); }); وشغل المشروع مباشرة: php artisan serve ففي هذه العملية، قمنا بتعليق الكود مؤقتا لتجنب حدوث خطأ عند تشغيل الأوامر المتعلقة بتهيئة قاعدة البيانات. فالكود الذي يتم تعليقه يستخدم جدول permissions، وهو جدول لم يتم إنشاؤه بعد. تعليق الكود مؤقتا هنا سيسمح لك بإتمام عملية الترحيل والبذر بنجاح وبمجرد أن يتم إنشاء الجدول من خلال عملية الترحيل والبذر، يمكن إزالة التعليق وإعادة تفعيل الكود لتشغيله بشكل طبيعي.
  23. نعم، يمكنك استخدام منصات مثل Glide أو AppSheet أو Power Apps لتحويل ملف بصيغة Excel يحتوي على معادلات إلى تطبيق موبايل يعمل على نظام أندرويد. لتحويل ملفك باستخدام Glide، قم بتحويل ملف Excel إلى Google Sheets برفعه على Google Drive، ثم الذهاب إلى موقع Glide وإنشاء مشروع جديد بربطه بملف Google Sheets. لاستخدام Glide يمكنك التوجه للموقع موقع GLIDE والتسجيل باستخدام حساب Google ثم: الضغط على "New Project" لإنشاء مشروع جديد. اختيار "Google Sheets" كمصدر البيانات، ثم اختيار جدول البيانات الذي قمت بإنشائه سابقا. بعد ربط جدول البيانات، سيتم توجيهك إلى واجهة تصميم التطبيق في Glide. يمكنك تخصيص شاشات التطبيق، الأزرار، النماذج، والعناصر الأخرى حسب احتياجاتك. والتأكد من أن جميع البيانات والمعادلات تظهر وتعمل بشكل صحيح داخل التطبيق. بعد الانتهاء من تخصيص التطبيق، اختبره جيدا للتأكد من أن كل شيء يعمل كما هو متوقع فإذا كان كل شيء صحيحا، اضغط على "Publish" لنشر التطبيق وستتمكن من مشاركة رابط التطبيق أو رمز الاستجابة السريعة (QR code) للوصول إليه على جهاز أندرويد.
  24. الأغلب أن مشكلة الألوان عند الطباعة يمكن حلها من خلال ضبط إعدادات الطابعة على نوع الورق اللاصق الذي تستخدمه وهذا الإعداد موجود في خصائص الطابعة ضمن خيارات الطباعة مع تنزيل وتثبيت ملف تعريف الألوان المناسب للطابعة والورق اللاصق من موقع الشركة المصنعة للطابعة. هذا سيساعد الطابعة على معالجة الألوان بشكل صحيح. الأمر ثاني، وهو من خلال معايرة الشاشة لضمان عرض الألوان بشكل صحيح، يمكن القيام بذلك باستخدام أدوات المعايرة المدمجة في نظام التشغيل أو برامج متخصصة مثل X-Rite أو Datacolor. على نظام Windows، من خلال الذهاب إلى "لوحة التحكم" ثم "إدارة الألوان" واختيار "معايرة الشاشة". الحل الآخر الممكن من خلال تحويل الصورة إلى نموذج الألوان CMYK، حيث تستخدم الطابعات هذا النموذج للطباعة. في Adobe Photoshop، يمكنك القيام بذلك عن طريق الذهاب إلى "صورة" ثم "نمط" واختيار "CMYK". في Adobe Illustrator، اذهب إلى "ملف" ثم "نمط المستند" واختر "CMYK". مثل الصورة:
  25. هنا في الأكايمية عادة لا نجيب على الأسئلة الاختبارية وأسئلة الامتحانات، يمكنك تعلم المفاهيم الأساسية للغة بايثون والعمليات الحسابية من خلال هذه المصادر ستفيدك جيدا:
×
×
  • أضف...