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

Mustafa Suleiman

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

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

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

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

    336

كل منشورات العضو Mustafa Suleiman

  1. باستطاعك بناء متجر إلكتروني باستخدام إطار عمل Laravel عن طريق اتباع الخطوات التالية: 1- تثبيت Laravel على الخادم الخاص بك باستخدام Composer. 2- إنشاء قاعدة بيانات MySQL وتكوينها في ملف .env 3- إنشاء نموذج لكل منتج سيتم بيعه في المتجر الإلكتروني باستخدام Migrations. 4- إنشاء صفحات وعرض المنتجات في المتجر الإلكتروني باستخدام Controllers وViews. 5- تكوين نظام دفع آمن باستخدام أحد بوابات الدفع المتاحة مثل Stripe أو PayPal. 6- تكوين معالجات الدفع لتتمكن من معالجة الدفعات وتحويل الأموال إلى حساباتك. يمكنك استخدام Laravel Cashier لإدارة المعاملات المالية بسهولة. 7- تكوين رسائل البريد الإلكتروني لإرسال رسائل تأكيد الدفع والفواتير للعملاء. يمكنك استخدام Laravel Notifications لإرسال الرسائل البريدية. بالإضافة للخطوات السابقة هناك المكتبات المفيدة: Snipe-IT: هي منصة لإدارة الموارد الأصول والمخزونات، يمكن استخدامها لبناء نظام إدارة المخزون والمنتجات والمستخدمين في المتجر الإلكتروني. Voyager: هي لوحة تحكم مبنية على Laravel توفر واجهة مستخدم لإدارة المحتوى، يمكن استخدامها لبناء واجهة مستخدم لإدارة المنتجات والمستخدمين والطلبات في المتجر الإلكتروني. Laravel Nova: هي لوحة تحكم مبنية على Laravel تتيح إدارة الموارد المتعددة، يمكن استخدامها لإدارة المنتجات والمستخدمين والطلبات في المتجر الإلكتروني. Laravel Ecommerce: هي حزمة توفر ميزات المتجر الإلكتروني كاملة، والتي يمكن تخصيصها وتعديلها بسهولة لتناسب الاحتياجات الخاصة بك. وهناك العديد من المكتبات والحزم التي يمكن استخدامها لبناء متجر إلكتروني باستخدام لارافيل بشكل أسهل، مثلاً باستخدام الحزمة الإضافية Laravel Spark. والتي توفر حزمة Spark ميزات كاملة لإنشاء متاجر إلكترونية وتأتي مع العديد من المميزات مثل: نظام الفوترة دفع الفواتير دعم مدفوعات البطاقات الائتمانية والخدمات المالية الأخرى ميزة الإعلانات والتذكيرات الآلية نظام إدارة الطلبات والمخزون دعم الشحن وتتبع الشحنات دعم الإشعارات والبريد الإلكتروني يمكنك الحصول على Laravel Spark من موقعها الرسمي https://spark.laravel.com/ وهي تأتي بتكلفة مدفوعة. بعد تثبيت Laravel Spark، يمكنك إنشاء متجرك الإلكتروني بسهولة باستخدام أدوات التخصيص الخاصة بالحزمة. كما يمكنك تكوين قنوات الدفع المختلفة بسهولة باستخدام خيارات الدفع المدمجة في Laravel Spark. المقالات الخاصة بإطار عمل لارافيل في أكاديمية حسوب
  2. Node.js يعمل بشكل افتراضي في وضع CommonJS وليس ES Modules الذي يتضمن استخدام export وimport. وبالطبع لايزال بإمكانك استخدام export وimport في Node.js، ولكن يجب أن تقوم بتحديد نوع الموديول الذي تستخدمه في ملف package.json الخاص بمشروعك. أي يجب عليك تحديد "type": "module" في ملف package.json الخاص بمشروعك، ثم يمكنك استخدام export وimport. أيضًا، في حال استخدام CommonJS ، يجب استخدام module.exports بدلاً من export لتصدير الوحدات وrequire بدلاً من import لاستيرادها. على سبيل المثال: { "name": "myapp", "version": "1.0.0", "description": "My awesome app", "type": "module", "main": "index.js", "scripts": { "start": "node index.js" }, "author": "Your Name", "license": "MIT" } بعد تعيين "type": "module" في ملف package.json، يمكنك استخدام الـ import في ملف آخر لاستدعاء الدوال التي يتم تصديرها. على سبيل المثال، إذا كانت الدالة login تم تصديرها في ملف index.js، فيمكنك استيرادها في ملف آخر باستخدام الـ import على النحو التالي: import { login } from './index.js'; // استخدام الدالة المستوردة هنا يرجى ملاحظة أنه يجب تحديد مسار الملف الصحيح في الـ import، ويجب أن يتوافق اسم الملف المستورد مع اسم الملف الذي يتم تصديره في الملف الأصلي.
  3. تم ذكر معلومات قيمة بخصوص سؤالك، لكن لم يتم ذكر الطريقة الصحيحة لتعلم البرمجة حيث يجب القيام بالتالي: 1- إختيار مسار تعليمي واضح قبل البدء: بعد تحديد المجال الذي تريد التخصص به مثل تطوير التطبيقات أو تطوير مواقع الويب، يجب عليك إختيار مسار تعليمي Roadmap مخصص للمجال الذي إخترته من مصدر موثوق وقام طلاب آخرين من قبلك بدراسته. وإلتزم بذلك المسار التعليمي وستصل أسرع، فهناك مئات المصادر على الإنترنت وهي نعمة ونقمة في نفس الوقت، لذلك لا تشتت نفسك وإلتزم بالكورسات المذكورة في المسار أو الكورسات التي قمت بإختيارها بناءًا على تقييمات طلاب سابقين. ويجب أن تحتوي تلك الكورسات على تطبيقات عملية على مشاريع حقيقية بها تعقيد كافي لتعليمك كيف يتم بناء المشاريع وتوظيف ما تعلمته. فبناء النماذج الصغيرة في بداية مرحلة التعلم أمر لابد منه بلا خلاف، لكن فيما يتعلق بسوق العمل والواقع فأنت ستعمل على بناء مثل تلك المشاريع المعقدة والتي تتطلب وقت وجهد في تنفيذها. وفي النهاية ستحصل على مشروع يصلح لوضعه في معرض أعمالك عند التقدم للوظيفة أو في مواقع العمل الحر. 2- أنت بحاجة إلى 6 شهور أو سنة تبعًا لمستواك وجهدك تلك هي الحقيقة ولا تنخدع بالعبارات التسويقية بأنك ستصبح مبرمج خلال شهرين أو ثلاث، بل أقل فترة في رأي هي 6 شهور مع الإلتزام بمسار تعليمي. بعد تلك الفترة سيتوجب عليك العمل على مشاريع أخرى لتكتسب الخبرة والثقة اللازمة للتقدم للوظائف، ففترة الـ 6 شهور أو سنة هي فترة تعلم فقط، ولا تعتبر فترة خبرة. وخلال فترة تطبيقك على مشاريع قم بالتقديم على وظائف بمستوى Junior أو Entry level، وسيتم رفضك كثيرًا أو لن يتم الرد عليك، فلا تكن حساسًا أكثر من اللازم واستمر بالعمل، فالجميع مر بتلك المرحلة، الجميع كذلك. 3- التطبيق على المشاريع الكبيرة أكثر من مرة أثناء فترة التعلم وتطبيقك على المشاريع داخل الكورسات وبعد الإنتهاء من المشروع. يجب عليك القيام به مرة أخرى خلال فترة بحد أقصى أسبوع، فصدقًا ستجد نفسك قد نسيت الكثير من الأمور ففي البداية مرة واحدة لا تفكي، فتعلم البرمجة عملية تكرارية وتحتاج إلى التطبيق أكثر من مرة على الكود في البداية لتثبيت المعلومات والمفاهيم. لذلك لا تكتفي بالتطبيق مرة واحدة أو كتابة الكود مرة واحدة وراء المدرب في الكورس. 4- ابحث عن كل ما يدور في بالك جوجل هو صديقك كمبرمج، فلا تجعله عدوك، لكن لا تهرع بالبحث أولاً بل قم بالتفكير في حل للمشكلة وتجربته، بعد ذلك قم بالبحث عن حلول وأسباب تلك المشكلة، وقراءة المقالات ولا تتكاسل في تعلم الأشياء الجديدة التي ستجدها في طريقك بلا شك.
  4. مرحبًا @عبد الرحمن جهاد ما تشعر به أمر طبيعي للغاية، وهي نقطة فارقة فإما أن تستجمع عزيمتك وتتغلب على خوفك وقلقك وتجبر نفسك على الإعادة والتكرار، أو ستصبح مثل الغالبية الذين ظنوا أن مجال البرمجة سهل ويمكن تعلمه خلال شهر. والواقع ليس كذلك، ولولا المشقة لساد الناس كلهم، وما يعطي لمجال قيمته هو صعوبته في التعلم ومقدار الإجتهاد المطلوب فيه، لذلك ستجد مرتبات المبرمجين مرتفعة مقارنًة بباقي الوظائف، والأمر ليس من فراغ. فالمبرمجين المحترفين قليلون بسبب مقدار الجهد المطلوب للوصول لمستوى محترف، وذلك عن طريق تعلم الأساسيات والتركيز عليها بشدة، وبعد ذلك يمكنك تعلم التقنيات وإطارات العمل المختلفة. ونصيحتي إليك هي، أرجو ألا تنتقل من نقطة أو فيديو إلى آخر إلا بعد إعادة كتابة الكود أكثر من مرة حتى تفهمه وتصبح قادر على إنشاء أمثلة أخرى بنفس الكود أو التعديل عليه. وذلك الأمر يمكن أن يتم من خلال إعادة مشاهدة الفيديو وقراءة دروس ومقالات في موسوعة حسوب و أكاديمية حسوب، فهناك مقالات كثيرة جدًا تغطي لغة جافاسكريبت وبالأمثلة. فقط قم بالبحث عن اسم الدرس أو الدالة أو الجزء التي تقوم بدراسه في اللغة ثم ضع بجانبه كلمة حسوب وستجد ما تريده. صدقًا في بدايات تعلمي للبرمجة كنت أقضى أكثر من 10 ساعات يوميًا في التعلم وربما قضيت يوم كامل في فهم واستيعاب جزء من اللغة لكنه هام للغاية أو محاولة التدرب على ما تعلمته وحل المشاكل التي تواجهني بالبحث والقراءة والتجربة. والوقت هنا هو العامل الأهم، يجب أن تعطي نفسك الوقت الكافي لتشعر بالتحسن، فعند الذهاب لصالات الجيم لن تنمو لك العضلات مباشرًة بل يجب أن ترهق نفسك بشكل يومي أو متكرر على مدار الأسبوع وبعد فترة من الزمن تبعًا لمستواك ستصل بلا شك. فمن أدمن طرق الباب، يوشك أن يُفتح له. أيضًا نصيحة أخرى، لابد ويجب عليك أن تتعلم الإنجليزية جنبًا إلى جنب مع تعلم البرمجة، فصدقًا ستعاني من ذلك، فلغة البرمجة هي الإنجليزية، ولديك قناة زي أمريكان إنجليش يمكنك التعلم منها أو قناة طليق. ولا تتردد في السؤال عن أي شيء يخطر في بالك، وستجد من يساعدك هنا. بالتوفيق إن شاء الله.
  5. يمكنك استخدام jQuery لإزالة الكلاس الذي تم إضافته إلى الديف عن طريق استخدام دالة removeClass(). في الكود jQuery الذي قمت بإضافته، يمكنك استخدام محدد CSS لاستهداف الديف وإزالة الكلاس المحدد. على سبيل المثال، إذا كان للـ div الكلاس الأول "first-class" والكلاس الثاني "second-class"، يمكنك استخدام الكود التالي: $('div.first-class').removeClass('second-class'); هذا الكود يستهدف جميع الديفات التي لديها الكلاس الأول "first-class" ويزيل الكلاس الثاني "second-class". يمكنك استخدام محدد CSS آخر لاستهداف الديف الذي تريد تغييره. ويجب وضع هذا الكود داخل ملف JavaScript وتضمينه في صفحة HTML.
  6. من المرجح أن يظهر لك العديد من الأخطاء الناتجة عن عدم تمكن النظام من العثور على هذه الملفات. على سبيل المثال، إذا كنت تستخدم Python وفقدت مسار متغير البيئة "PYTHONPATH" الخاص بك، فلن تتمكن من استخدام المكتبات التي تعتمد عليها في تطبيقاتك. لحل هذه المشكلة، يمكنك إعادة تثبيت المسارات المفقودة من جديد وإضافتها إلى متغيرات البيئة path مرة أخرى. يمكنك القيام بذلك يدويًا إذا احتجت لذلك ففي الغالب يتم إضافة أغلب المتغيرات بشكل تلقائي عند التثبيت، بإضافة المسارات إلى متغيرات البيئة path من خلال خصائص النظام في Windows أو عن طريق إعدادات النظام في Linux و macOS. ولكن إذا أردت عمل نسخة إحتياطية، فيمكنك استخدام السكريبت التالي: ووظيفته هو عمل نسخ احتياطية للمسارات والمتغيرات في نظام Windows وإنشاء ملف reg لاستعادتها. يجب إنشاء ملف بإمتداد .bat ووضع السكريبت به، أي قم بإنشاء ملف باسم path-backup.bat ثم إضغط بزر الفأرة الأيمن وإختار edit ثم ضع السكريبت به وإحفظ وشغل السكريبت. @echo off set BACKUP_PATH=C:\backup set BACKUP_FILE=%BACKUP_PATH%\path_variables.reg :: create backup directory if it doesn't exist if not exist %BACKUP_PATH% mkdir %BACKUP_PATH% :: backup system path variables reg export "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" %BACKUP_FILE% /y :: backup user path variables reg export "HKCU\Environment" %BACKUP_FILE% /y echo Backup of path variables is created at %BACKUP_FILE% pause تم تعيين مسار النسخ الاحتياطي إلى مجلد C:\backup في المتغير BACKUP_PATH أي ستجد المجلد في قرص الـ C باسم backup، وتم تسمية الملف الاحتياطي path_variables.reg في المتغير BACKUP_FILE. ويتم نسخ متغيرات البيئة في نظام Windows في المفتاح HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment للنظام و HKCU\Environment للمستخدم. والأمر reg export للحصول على تفاصيل مفاتيح التسجيل وتصديرها إلى الملف المحدد. ولاستعادة المسارات والمتغيرات المحفوظة، يمكن فتح ملف reg وتشغيله بعد إعادة تحميل الويندوز أو عند الحاجة.
  7. الخطأ يشير إليك بالتوجه إلى الرابط التالي لتفعيل الفواتير، وستجد المشروع الخاص بك وسيتطلب منك تفعيل الفواتير لذلك المشروع: https://console.cloud.google.com/projectselector2/billing/enable?utm_source=Docs_BillingNudge&pli=1 والجدير بالذكر أن هناك نوعان من حسابات الفواتير متاحة على منصة Google، حساب فواتير Google Cloud وحساب فواتير Google Maps Platform. ويبدو أنك قمت باستخدام حساب فواتير Google Cloud وربما يمكنك تجربة استخدام حساب فواتير Google Maps Platform لتفعيل Places API والحصول على الملأ التلقائي للأماكن. وإذا كنت تواجه مشكلة في تغيير الحساب الخاص بالفواتير للمشروع الحالي، فيمكنك إنشاء مشروع جديد وتوصيله بحساب فواتير Google Maps Platform. https://developers.google.com/maps/get-started أيضًا باستطاعتك استخدام الرابط الذي تم توفيره لإنشاء حساب فواتير Google Maps Platform، كما يمكنك التبديل بين حسابات الفواتير عن طريق تعطيل الفواتير في المشروع الحالي ، ثم تغيير حساب الفواتير وتفعيل الفواتير مرة أخرى.
  8. هناك العديد من خيارات نظام إدارة المحتوى المتاحة لتطوير موقع جامعة باستخدام Laravel والأمر يتوقف على إحتياجاتك، وعلي أي حال هناك بعض الخيارات الجيد والتي تتضمن: 1- Laravel Nova: هي حزمة إضافية لـ Laravel توفر واجهة مستخدم مرنة وسهلة الاستخدام لإدارة المحتوى. يمكن للمستخدمين إضافة وتحرير المحتوى بسهولة وتخصيص الواجهة حسب احتياجات المشروع. 2- Backpack for Laravel: هي حزمة إضافية لـ Laravel توفر واجهة مستخدم مرنة وسهلة الاستخدام لإدارة المحتوى. توفر Backpack إدارة المحتوى بشكل أساسي، مع إمكانية تخصيص الواجهة والعمليات حسب احتياجات المشروع. 3- WordPress: هو نظام إدارة المحتوى الأكثر شيوعًا في العالم والذي يمكن تثبيته في Laravel باستخدام حزمة الإضافة WP-Laravel. يوفر WordPress واجهة مستخدم سهلة الاستخدام ويتيح للمستخدمين إنشاء وتحرير المحتوى بسهولة. 4- Joomla: هو نظام إدارة المحتوى آخر يمكن تثبيته في Laravel. يوفر Joomla واجهة مستخدم سهلة الاستخدام ويتيح للمستخدمين إنشاء وتحرير المحتوى بسهولة، مع إمكانية تخصيص الواجهة حسب احتياجات المشروع. 5- October CMS: هو نظام إدارة محتوى مفتوح المصدر يعتمد على لارافيل، ويتميز بتصميم جميل وواجهة مستخدم سهلة الاستخدام، ويدعم العديد من الإضافات المفيدة لتوسيع وظائفه. وبالنسبة لـ Dashboard الافتراضية في لارافيل، فهي توفر واجهة مستخدم لإدارة المشروع بشكل عام ولكنها لا توفر كل الوظائف التي يمكن أن تحتاجها في إدارة موقع جامعة، ولذلك يمكن استخدام الخيارات السابقة لتلبية المتطلبات المحددة لمشروعك. وبالطبع هناك برمجة خاصة لإنشاء نظام محتوى يلبي إحتياجاتك إذا لم تتوافر، لكن لا أظن أنك بحاجة إلى ذلك.
  9. لنفترض أنك تريد إنشاء صفحة ويب لنشر أخبار على موقعك باستخدام ASP.NET. يمكنك القيام بذلك باستخدام عدة خطوات: إنشاء قاعدة بيانات: يجب عليك إنشاء قاعدة بيانات لتخزين معلومات الأخبار. يمكن استخدام أي قاعدة بيانات تدعم .NET مثل SQL Server أو MySQL. إنشاء صفحة إضافة الأخبار: يمكنك إنشاء صفحة ويب تحتوي على نموذج لإضافة أخبار جديدة. يمكن استخدام عناصر تحكم ASP.NET مثل TextBox وDropDownList وFileUpload لجمع المعلومات المطلوبة. فيما يلي مثال بسيط لصفحة إضافة الأخبار: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="AddNews.aspx.cs" Inherits="AddNews" %> <!DOCTYPE html> <html> <head> <title>Add News</title> </head> <body> <form runat="server"> <div> <label for="title">Title:</label> <asp:TextBox ID="txtTitle" runat="server"></asp:TextBox> </div> <div> <label for="category">Category:</label> <asp:DropDownList ID="ddlCategory" runat="server"> <asp:ListItem Value="1">Sports</asp:ListItem> <asp:ListItem Value="2">Politics</asp:ListItem> <asp:ListItem Value="3">Entertainment</asp:ListItem> </asp:DropDownList> </div> <div> <label for="image">Image:</label> <asp:FileUpload ID="fuImage" runat="server" /> </div> <div> <label for="content">Content:</label> <asp:TextBox ID="txtContent" TextMode="MultiLine" Rows="10" runat="server"></asp:TextBox> </div> <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" /> </form> </body> </html> إنشاء صفحة عرض الأخبار: يجب عليك إنشاء صفحة لعرض الأخبار التي تم إضافتها. يمكنك استخدام عناصر تحكم ASP.NET مثل GridView لعرض الأخبار في جدول. فيما يلي مثال بسيط لصفحة عرض الأخبار: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ViewNews.aspx.cs" Inherits="ViewNews" %> <!DOCTYPE html> <html> <head> <title>View News</title> </head> <body> <form runat="server"> <asp:GridView ID="gvNews" runat="server" AutoGenerateColumns="False"> <Columns> <asp:BoundField DataField="Title" HeaderText="Title" /> <asp:BoundField DataField="Category" HeaderText="Category" /> <asp:BoundField DataField="Content" HeaderText="Content" /> </Columns> </asp:GridView> </form> </body> </html> البرمجة الخلفية: يجب عليك برمجة الصفحات الخلفية لإضافة وعرض الأخبار. فيما يلي مثال بسيط لكيفية إضافة وعرض الأخبار باستخدام ASP.NET وC#: // AddNews.aspx.cs protected void btnSubmit_Click(object sender, EventArgs e) { string title = txtTitle.Text; int category = int.Parse(ddlCategory.SelectedValue); string content = txtContent.Text; string image = ""; if (fuImage.HasFile) { string fileName = Path.GetFileName(fuImage.FileName); fuImage.SaveAs(Server.MapPath("~/images/" + fileName)); image = "~/images/" + fileName; } string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand("INSERT INTO News (Title, Category, Content, Image) VALUES (@Title, @Category, @Content, @Image)", connection); command.Parameters.AddWithValue("@Title", title); command.Parameters.AddWithValue("@Category", category); command.Parameters.AddWithValue("@Content", content); command.Parameters.AddWithValue("@Image", image); connection.Open(); command.ExecuteNonQuery(); } Response.Redirect("ViewNews.aspx"); } // ViewNews.aspx.cs protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlDataAdapter adapter = new SqlDataAdapter("SELECT ID, Title, Category, Content, Image FROM News", connection); DataTable table = new DataTable(); adapter.Fill(table); gvNews.DataSource = table; gvNews.DataBind(); } } } protected void gvNews_RowEditing(object sender, GridViewEditEventArgs e) { gvNews.EditIndex = e.NewEditIndex; BindGrid(); } protected void gvNews_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { gvNews.EditIndex = -1; BindGrid(); } protected void gvNews_RowUpdating(object sender, GridViewUpdateEventArgs e) { string ID = gvNews.DataKeys[e.RowIndex].Value.ToString(); string title = ((TextBox)gvNews.Rows[e.RowIndex].FindControl("txtTitle")).Text; int category = int.Parse(((DropDownList)gvNews.Rows[e.RowIndex].FindControl("ddlCategory")).SelectedValue); string content = ((TextBox)gvNews.Rows[e.RowIndex].FindControl("txtContent")).Text; string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand("UPDATE News SET Title = @Title, Category = @Category, Content = @Content WHERE ID = @ID", connection); command.Parameters.AddWithValue("@ID", ID); command.Parameters.AddWithValue("@Title", title); command.Parameters.AddWithValue("@Category", category); command.Parameters.AddWithValue("@Content", content); connection.Open(); command.ExecuteNonQuery(); } gvNews.EditIndex = -1; BindGrid(); } protected void gvNews_RowDeleting(object sender, GridViewDeleteEventArgs e) { string ID = gvNews.DataKeys[e.RowIndex].Value.ToString(); string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlCommand command = new SqlCommand("DELETE FROM News WHERE ID = @ID", connection); command.Parameters.AddWithValue("@ID", ID); connection.Open(); command.ExecuteNonQuery(); } BindGrid(); } private void BindGrid() { string connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; using (SqlConnection connection = new SqlConnection(connectionString)) { SqlDataAdapter adapter = new SqlDataAdapter("SELECT ID, Title, Category, Content, Image FROM News", connection); DataTable table = new DataTable(); adapter.Fill(table); gvNews.DataSource = table; gvNews.DataBind(); } } الكود السابق يقوم بعرض الأخبار المضافة في قاعدة البيانات باستخدام GridView. ويتم استخدام SqlDataAdapter لاستعلام قاعدة البيانات وتعبئة DataTable، ثم يتم تعيين هذا DataTable كمصدر بيانات لـ GridView. بعد ذلك يتم استخدام الحدث RowEditing للسماح للمستخدم بتحرير سجل الأخبار، ثم استخدام الحدث RowUpdating لتحديث السجل بعد التعديل.
  10. نرحب بك في أي وقت يا محمد وإذا كنت تريد إلغاء الإشتراك، فالسبيل الوحيد هو عن طريق التحدث إلى مركز المساعدة الخاص بأكاديمية حسوب، وسيتم الرد عليك لا تقلق. وإذا كنت تواجه أي مشكلة في الدورات أو تريد فهم شيئًا ما فلا تتردد في السؤال. تحياتي.
  11. مرحبًا @محمد بن حبيش يمكنك التواصل مع مركز المساعدة بخصوص طلبك، ثم الإنتظار وسيتم الرد عليك بلا شك، لذلك أرجو من الإنتظار. ولكن هل يوجد مشكلة تواجهك تريد لها حل؟ تحياتي.
  12. بالتأكيد، وربما يجب عليك تعلم لارافيل فهي تعطي أفضلية كبيرة، حيث ستجد الكثير من الوظائف التي تقبل مبرمج لارافيل بمستوى Junior وأيضًا كم كبير جدًا من الوظائف على مواقع العمل الحر. وبخصوص Node.js فهي سهلة التعلم فخلال شهر أو أقل تبعًا لقدرتك ومستواك، ستتمكن من تعلمها فعلى أي حال أنت قد تعلمت لغة JS بالفعل، وستتعلم بيئة العمل وقاعدة البيانات فقط.
  13. في البداية هناك تفاوتات كبيرة في المميزات والعيوب والاستخدامات المناسبة. Node.js Node.js هو إطار عمل مبني على محرك JavaScript V8، ويستخدم لبناء تطبيقات الويب الحديثة التي تعتمد على الوقت الحقيقي والإرسال المستمر للبيانات، وغالبًا ما يستخدم في تطبيقات الشبكات والدردشة والألعاب الحية وتطبيقات الميديا. وبالتالي تتميز Node.js بالسرعة والقدرة على التعامل مع حمولات عالية والتحكم في الإدخال/الإخراج. كما يوفر أيضًا مجموعة كبيرة من المكتبات والأدوات لتطوير التطبيقات بسهولة. Laravel Laravel هو إطار عمل PHP شائع ويستخدم لبناء تطبيقات الويب المتكاملة. ويتميز Laravel بسهولة الاستخدام والمرونة والتحكم الكبير في قواعد البيانات. كما يوفر أيضًا مجموعة كبيرة من المكتبات والأدوات لتطوير التطبيقات بسهولة، وتدعم Laravel البرمجة الكائنية ونظام توجيه متقدم ويتكامل بسلاسة مع مكتبات الجافاسكريبت. ولذلك عندما يتعلق الأمر بالأداء، فإن Node.js يتفوق على Laravel، حيث تعمل Node.js بشكل متزامن ويمكنها التعامل مع عدد كبير من الطلبات بسرعة عالية، بينما يعمل Laravel بشكل متزامن وقد يتأخر في التعامل مع حمولة عالية من الطلبات. ومع ذلك، فإن Laravel يتميز بتوفير العديد من الأدوات والمكتبات التي تسهل عملية التطوير، ويعتبر من أفضل إطارات العمل لبناء تطبيقات الويب المتكاملة. لكن الأمر ليس بتلك البساطة، فهناك الكثير من العوامل التي لم يتم ذكرها وستؤثر على إختيارك. فبالنسبة لمشروع كبير يحتوي على معاملات حساسة وكبيرة، فإنه يمكن استخدام كلا الإطارين، ولكن يجب اختيار الإطار الذي يتناسب مع احتياجات المشروع بشكل أفضل. على سبيل المثال، إذا كانت سرعة الاستجابة والقدرة على التعامل مع الطلبات الكبيرة هي الأولوية، فقد يكون Node.js الخيار الأفضل. ومع ذلك، إذا كانت المتطلبات تتطلب القدرة على العمل مع قواعد بيانات كبيرة ومعقدة وإمكانية الوصول إلى المعلومات بسهولة، فقد يكون Laravel الخيار الأفضل. ومع ذلك، يجب ملاحظة أن الأداء ليس العامل الوحيد الذي يجب النظر إليه، بل يجب أيضًا النظر إلى المرونة والملاءمة للاحتياجات المحددة للمشروع كما أشرت.
  14. إذا أردت نصيحتي فالأفضل عدم الإنتظار والبدء من الآن، ولن تجد مصدر مجاني أفضل من قناة ZAmerican English أو قناة طليق، وقناة طليق مخصصة لمن يريد تحدث الإنجليزية بطلاقة، أما إذا كنت تريد دراسة الإنجليزية بالتفصيل فقناة ZAmericanEnglish هي الأفضل. وبخصوص المنح الدراسية، فالأمر يعتمد على مكان تواجدك، فبعض البلدان بها منح مجانية وأخرى من الصعب العثور على منح بها، لذلك يجب معرفة البلد التي تقيم بها، وإذا كنت في منطقة الخليج فستجد الكثير من المنح. وفي البداية قبل البدء في التعلم يجب عمل إختبار لتحديد مستواك في اللغة، وهناك العديد من المواقع والتطبيقات، ومنها تطبيق British Council EnglishScore أو موقع اللغة الإنجليزية التابع لـ جامعة كامبريدج. بعد ذلك يجب وضع خطة بوقت محدد يتم الإلتزام بها بشكل يومي وستجد تحسن بلا شك، والأهم في تلك المرحلة هما الكتابة ثم التحدث طالما أنك بمستوى متوسط.
  15. بخصوص إنشاء مخطط أو رسم بياني في OriginPro، باستطاعتك اتباع الخطوات التالية: اختر النوع المناسب للمخطط أو الرسم البياني من القائمة الرئيسية لـ OriginPro. على سبيل المثال، يمكنك اختيار "Line + Symbol Plot" لإنشاء مخطط خطي بنقاط. اختر البيانات التي تريد عرضها في المخطط أو الرسم البياني. يمكنك استيراد بيانات من ملفات خارجية أو استخدام البيانات التي تم إدخالها بواسطة OriginPro. ثم اختر الخيارات المناسبة للمخطط أو الرسم البياني، مثل الألوان والخطوط والمحاور والتسميات وغيرها. ويمكنك إجراء التعديلات اللازمة للمخطط أو الرسم البياني، مثل تغيير الألوان أو الخطوط أو تحريك العناصر. قم بحفظ المخطط أو الرسم البياني عند الانتهاء من تعديله، باستخدام الأمر "File > Save" من القائمة الرئيسية. ويمكنك العثور على مزيد من المصادر والمعلومات حول OriginPro وكيفية استخدامها في الدليل الرسمي للمستخدم الذي يتضمنه البرنامج.
  16. بالطبع من الممكن أن تكون المشكلة هي بطء الاتصال بالإنترنت الخاص بك. فيجب التأكد من إتصال الإنترنت بعمل إعادة تشغيل للراوتر أو تجربة إتصال إنترنت آخر أو تشغيل VPN أو تغيير إعدادات الـ DNS الخاصة بإتصال الإنترنت إلى: 1.1.1.1 1.0.0.1 يمكنك أيضًا المحاولة باستخدام الأمر التالي بدلاً من استخدام npm init react-app: npx create-react-app my-app ,هذا الأمر يعمل على تثبيت مشروع React جديد دون الحاجة إلى استخدام npm init react-app. والأفضل استخدام Vite في تثبيت react فهو أسرع بمراحل من webpack الذي يتم تثبيته عند استخدام الأمر npx create-react-app my-app. ولاستخدام Vite لتثبيت React قم باستخدام الأمر التالي: # npm في حالة الإصدار 6 من npm create vite@latest my-react-app --template react # npm في حالة الإصدار 7 أو أعلى من npm create vite@latest my-react-app -- --template react مع استبدال my-react-app باسم المشروع الخاص بك.
  17. يمكنك استخدام طريقة مشابهة باستخدام Intent لعرض ملف PDF مباشرة من ذاكرة التخزين الخاصة بالتطبيق. فيما يلي مثال على ذلك: // إنشاء ملف PDF باستخدام PdfDocument PdfDocument pdfDocument = new PdfDocument(); // قم بإضافة صفحات PDF هنا // إنشاء Intent لعرض ملف PDF مباشرة من ذاكرة التخزين الخاصة بالتطبيق Intent intent = new Intent(Intent.ACTION_VIEW); // تحديد نوع الملف باستخدام MIME type intent.setType("application/pdf"); // استخدام ContentProvider للوصول إلى الملف المخزن في ذاكرة التخزين الداخلية للتطبيق Uri uri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".provider", pdfFile); // تحديد الملف المراد فتحه intent.setData(uri); // تحديد عنوان النشاط intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // تمرير علامة التبويب لإظهار التطبيق المختار لفتح الملف intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // بدء النشاط لفتح الملف try { startActivity(intent); } catch (ActivityNotFoundException e) { // إذا لم يتم العثور على تطبيق PDF، قم بإنشاء كائن Intent جديد لفتح رابط تحميل التطبيق من متجر التطبيقات Intent marketIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.adobe.reader")); startActivity(marketIntent); } تم استخدام FileProvider للوصول إلى الملف المخزن في ذاكرة التخزين الداخلية للتطبيق وتمرير علامة التبويب لإظهار التطبيق المختار لفتح الملف. ويرجى ملاحظة أن استخدام FileProvider يتطلب إنشاء ملف ملفات موفر وتعريفه في ملفات التهيئة الخاصة بالتطبيق. ولعمل ملف موفر، يجب تعريفه في ملف التهيئة الخاص بالتطبيق الخاص بك. يمكنك القيام بذلك عن طريق إنشاء ملف جديد بالاسم file_paths.xml ووضعه في المجلد res/xml في مشروع Android الخاص بك. يمكن استخدام الكود التالي كمثال لتعريف ملف موفر في file_paths.xml: // Get the file File file = new File(getFilesDir(), "my_file.txt"); // Get the FileProvider String authority = "com.example.package.fileprovider"; Uri uri = FileProvider.getUriForFile(this, authority, file); // Use the Uri to access the file كما ترى تم الحصول على Uri لملف باستخدام FileProvider. ويجب تغيير com.example.package.fileprovider إلى اسم الموفر الخاص بتطبيق Android الخاص بك. يمكن استخدام الـ Uri المسترد للوصول إلى الملف بطرق مختلفة، مثل استخدام Intent لفتح الملف أو استخدام ContentResolver لقراءة محتويات الملف. ولمزيد من المعلومات عن استخدام FileProvider في تطبيق Android الخاص بك، يمكنك الاطلاع على الوثائق الرسمية لـ Android Developer.
  18. يجب أولاً الإشارة إلى أنه يتم التحكم في المحتوى والتصميم باستخدام لغتي HTML و CSS معًا وليس CSS فقط، لذلك يجب الإنتباه إلى طريقة بناء العناصر باستخدام HTML. لذلك إذا قمت ببناء العناصر بشكل جيد وقمت باستخدام Grid و Flex وبالأخص Grid بشكل صحيح، ستقل نسبة استخدامك للـ Media Query بشكل كبير جدًا، وذلك يعرف باسم Fluid Layouts. ولكي لا أعيد ما قلته سابقًا، أنصحك بشدة بقراءة المقالات والنقاشات التالية:
  19. يمكنك استخدام الكود التالي: const filtered = (selected.length === 0) ? products : products.filter(item => selected.includes(item.category)) وبهذا الشكل، إذا لم يتم تحديد أي صنف، فستعود المنتجات كما هي، وإذا تم تحديد أي صنف، فسيتم تصفية المنتجات بناءً على الصنف المحدد. بالنسبة للمتغيرات الإضافية التي كنت قد استخدمتها سابقًا، يمكنك الاستغناء عنها بسهولة من خلال تطبيق العبارة السابقة مباشرة في الدالة الخاصة بالفلترة.
  20. يمكن تنفيذ ما تريد باستخدام Intent في اللغة Java لفتح ملف PDF بعد إنشائه باستخدام Pdfdocument. يمكنك استخدام التالي كنموذج لفتح الملف: // تحديد مسار الملف String filePath = "path/to/your/file.pdf"; // إنشاء كائن Intent Intent pdfIntent = new Intent(Intent.ACTION_VIEW); // تحديد نوع الملف باستخدام MIME type pdfIntent.setType("application/pdf"); // تحديد الملف المراد فتحه pdfIntent.setData(Uri.fromFile(new File(filePath))); // تحديد عنوان النشاط pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); pdfIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // بدء النشاط لفتح الملف try { startActivity(pdfIntent); } catch (ActivityNotFoundException e) { // إذا كان لا يوجد تطبيق مثبت لعرض ملفات PDF، قم بإظهار رسالة خطأ Toast.makeText(getApplicationContext(), "No Application available to view PDF", Toast.LENGTH_SHORT).show(); } يرجى ملاحظة أن هذا الكود يعمل على افتراض أن لديك تطبيق PDF مثبتًا على جهاز الهاتف المحمول الخاص بك. في حالة عدم وجود تطبيق PDF مثبت، يمكن توجيه المستخدمين إلى تنزيل تطبيق PDF من متجر التطبيقات. وباستطاعتك توجيه المستخدمين لتنزيل تطبيق PDF من متجر التطبيقات باستخدام Intent ورابط متجر التطبيقات. استخدم التالي كنموذج لإظهار رسالة تحتوي على رابط تنزيل تطبيق PDF: // تحديد مسار الملف String filePath = "path/to/your/file.pdf"; // إنشاء كائن Intent Intent pdfIntent = new Intent(Intent.ACTION_VIEW); // تحديد نوع الملف باستخدام MIME type pdfIntent.setType("application/pdf"); // تحديد الملف المراد فتحه pdfIntent.setData(Uri.fromFile(new File(filePath))); // تحديد عنوان النشاط pdfIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); pdfIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); try { startActivity(pdfIntent); } catch (ActivityNotFoundException e) { // إذا لم يتم العثور على تطبيق PDF، قم بإنشاء كائن Intent جديد لفتح رابط تحميل التطبيق من متجر التطبيقات Intent marketIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.adobe.reader")); startActivity(marketIntent); } في المثال أعلاه، يتم إنشاء Intent جديد يحتوي على رابط تنزيل تطبيق PDF من متجر التطبيقات (Adobe Acrobat Reader)، ثم يتم بدء النشاط لفتح هذا الرابط. يمكن تغيير رابط التنزيل وفقًا لتطبيق PDF المستخدم على جهاز المستخدم.
  21. مرحبًا @مرح الاسطل تم الإجابة على سؤالك هنا أرجو متابعته:
  22. الأفضل والأسهل لك، هو إعادة دراسة أساسيات إطار لارافيل و PHP وستتمكن من تنفيذ المشروع فهو بسيط، ويمكنني إرشادك لطريقة التنفيذ: قم بإنشاء قاعدة بيانات جديدة لمشروعك. ثم تثبيت Laravel باستخدام Composer. يمكنك فعل ذلك بفتح محرر الأوامر وكتابة الأمر التالي: composer create-project --prefer-dist laravel/laravel myeventapp عرف نموذج (Model) للحدث (Event) باستخدام الأمر الآتي: php artisan make:model Event ثم قم بإنشاء جدول لجدول الأحداث باستخدام مهمة التحولات (Migrations) باستخدام الأمر الآتي: php artisan make:migration create_events_table الآن عرف حقول بجدول الأحداث في ملف التحول (Migration) الخاص بك، على سبيل المثال: التاريخ، الوقت، اسم الحدث، ووصفه. قم بتحديد العلاقة بين حدث (Event) والمشتركين (Subscribers) بإنشاء نموذج جديد: php artisan make:model Subscriber ثم قم بإضافة حقول الاسم والبريد الإلكتروني في الملف التحول الخاص بهذا النموذج. قم بإنشاء عملية تحكم (Controller) للأحداث باستخدام الأمر التالي: php artisan make:controller EventController قم بإنشاء عرض (View) للأحداث في المسار resources/views/events.blade.php و قم بتحديثه بتفاصيل الحدث المتوفرة في قاعدة البيانات. قم بإنشاء عرض (View) لتسجيل المشتركين في الحدث في المسار resources/views/subscribe.blade.php. في عملية تحكم (Controller) الخاصة بتسجيل المشتركين، اضف المنطق اللازم لتخزين بيانات المشترك في قاعدة البيانات. أخيرًا، قم بإضافة مسارين (routes) في ملف routes/web.php، الأول لعرض صفحة الحدث، والثاني لتسجيل المشتركين في الحدث.
  23. في البداية عمل Debugging لكود CSS يتطلب رؤية أين تقع المشكلة ولذلك أول خطوة هي حين يتعثر عليك العثور على المشكلة هو وضع الكود التالي داخل ملف CSS الخاص بالصفحة: * { outline: 1px solid rgb(128 34 199); } ولعلك تتسائل، ماهذا الكود أو ربما ما سبب استخدام outline بدلاً من border؟ الصورة خير مثال، فالكود السابق يقوم بوضع outline لجميع العناصر، وبذلك تصبح قادر على معرفة أين تقع المشكلة. حيث يتم استخدام الـ "outline" بدلاً من border لأنه لن يضيف حجمًا إلى الـ "DOM size" الخاص بللعنصر. وإضافة "border" سيؤدي إلى تغيير مظهر العنصر إذا كان يستخدم "border" بالفعل ، وقد يسبب بشكل خاطئ مشكلات إضافية في الفراغات. والهدف من استخدام الـ "outline" هو إظهار حدود العنصر وتصور كيفية تضمين العناصر داخل بعضها البعض. على سبيل المثال، إذا كانت الفراغات تسبب تمريرًا overflow غير متوقع للشريط الأفقي، فإن الـ "outline" يمكن أن يساعد في إظهار العنصر الذي يسبب هذا التمرير overflow . أسباب شائعة لمشاكل CSS الخطوة التالية بعد الخطوة السابقة في عملية تصحيح الأخطاء هي التوقف وتحديد السبب الرئيسي للمشكلة. ومن تجربتي، تعتبر مشاكل تخطيط CSS تتسبب في واحدة من الفئات التالية: تجاوز المحتوى من الأصل الذي ينتمي إليه Overflow مما يؤدي إلى ظهور أشرطة تمرير إضافية أو ظهور المحتوى خارج منطقة العرض العادية. الوراثة غير المتوقعة للتنسيقات بسبب عدم التوافق مع المتصفح الأمر الذي يؤدي إلى نتائج مختلطة عبر المتصفحات والأجهزة. وراثة غير متوقعة من ملف التنسيق cascade حيث يتم استبدال العديد من الأنماط الأخرى في أسفل الملف أو بسبب استخدام نفس الخاصية مع إختيار خاطيء للعنصر أو الكلاس، مما قد يسبب مشاكل في التنسيق والتباعد وغيرها. خطأ في التنسيق بسبب تغييرات في هيكل وتركيبة عناصر HTML المتصلة بعناصر CSS. فعلى سبيل المثال، إذا قمت بإضافة عنصر HTML إضافي بشكل غير متوقع داخل عنصر CSS، فقد يتم تطبيق التنسيق الخاطئ على العنصر المضاف حديثًا. وهذا يمكن أن يؤدي إلى مشاكل في التنسيق وعرض غير متوقع للصفحة. عدم فهم خواص CSS وطريقة عملها بشكل كافي مما يؤدي إلى مشاكل متداخلة في التنسيقات، بسبب استخدام خاصية بشكل خاطيء أو استخدام في غير محله. نصائح عامة لإصلاح الأخطاء عند حدوث خطأ ما في CSS الخاص بك ، يمكنك البدء بإستخدام أدوات التطوير المدمجة في المتصفح المفضل لديك للقيام بالأتي: 1- حذف التنسيقات واحدة تلو الأخرى من خلال عمل comment لها باستخدام الإختصار CTRL +/ في محرر النصوص البرمجية VS code. 2- إيقاف تشغيل جميع التنسيقات وإعادة تفعيل كل تنسيق على حدى لرؤية أين تقع المشكلة أو متى تحدث. 3- حذف عناصر HTML أو نقلها لرؤية ما العنصر الذي يسبب المشكلة.
  24. وعليكم السلام، أرجو منك قراءة الدليل التالي لتثبيت بايثون 3 على macOS، وإذا واجهتك أية مشاكل لا تتردي في السؤال هنا.
  25. الأسئلة الإمتحانية لا يتم الإجابة عليها، ولكن يمكن إرشادك لطريقة الحل. إليك شرح الخطوات التي يمكن استخدامها لحل هذا السؤال: بدايًة، نحتاج إلى استخدام الأمر Console.ReadLine() لجلب مصفوفة ثنائية الأبعاد المدخلة من المستخدم. سيقوم هذا الأمر بقراءة النص الذي تم إدخاله من قبل المستخدم عبر واجهة سطر الأوامر. بعد ذلك، يجب تحويل النص إلى مصفوفة ثنائية الأبعاد من الأعداد الصحيحة. يمكن استخدام الأمر Split() لتحويل النص إلى مصفوفة من الأعداد الصحيحة، ثم تحويل هذه المصفوفة إلى مصفوفة ثنائية الأبعاد. الآن، يجب البحث في المصفوفة عن الصف الذي يحتوي على أكبر مجموع C#. يمكن استخدام حلقة for للانتقال عبر كل صف في المصفوفة، ثم استخدام حلقة for آخرى للانتقال عبر كل عنصر في الصف. أثناء التحقق من الصف، يجب حساب مجموع C# لكل صف. يمكن استخدام الأمر foreach لحساب مجموع الصف، حيث سنقوم بجمع كل عنصر في الصف ثم تخزين النتيجة في متغير. بمجرد الانتهاء من حساب مجموع الصف، يمكن مقارنته بأكبر مجموع C# حتى الآن. إذا كان مجموع الصف الحالي أكبر من أكبر مجموع C# الحالي، فسنحفظ رقم الصف الجديد. في غير ذلك، سنستمر في البحث في الصفوف الأخرى. بمجرد الانتهاء من البحث في المصفوفة، سنقوم بإرجاع رقم الصف الذي يحتوي على أكبر مجموع C#. في النهاية، يمكن استخدام الأمر Console.WriteLine() لإرجاع رقم الصف الذي يحتوي على أكبر مجموع C
×
×
  • أضف...