-
المساهمات
5401 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
11
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو عبدالباسط ابراهيم
-
لاحظت أنك قمت بإضافة علامة + قبل قيمة userInput.value في السطر الأخير من الدالة myFunction()، وهذا السبب في ظهور قيمة 0 عند تقديم النموذج بدون قيمة في حقل الإدخال. يمكنك حل هذه المشكلة عن طريق إضافة شرط يتحقق من أن حقل الإدخال ليس فارغًا قبل تعيين قيمته إلى العنصر innerHTML. وبالإضافة إلى ذلك، يمكنك إزالة السطر الذي يحتوي على الدالة myFunction() من زر الإرسال (submit) لأنها لن تحل المشكلة التي واجهتك. ولحل هذه المشكلة يمكنك استخدام الكود التالي: <article> <form id="form" action="/" method="get"> <h1>Hello, write your name</h1> <br> <div class="inputBox"> <input id="userInput" name="Name" type="text" required> <span>Last Name</span> <br> <br> <button type="submit" required>Submit</button> <h1 id="printName"></h1> </div> </form> </article> <script> const form = document.querySelector("#form"); const userInput = document.querySelector("#userInput"); const printName = document.querySelector("#printName"); form.addEventListener("submit", function(event) { event.preventDefault(); if (userInput.value.trim() !== "") { printName.innerHTML = userInput.value; } else { printName.innerHTML = ""; userInput.setCustomValidity("Please enter your name"); userInput.reportValidity(); userInput.focus(); } }); </script> في هذا الكود، قمت بإضافة مستمع حدث submit إلى النموذج (form) باستخدام الدالة addEventListener()، والتي تتيح لك تنفيذ دالة عند حدوث الحدث. ثم، وضعت الشرط الذي يتحقق من أن حقل الإدخال ليس فارغًا باستخدام الدالة trim() التي تزيل الفراغات العائمة من النص. إذا كان حقل الإدخال غير فارغٍ، ستعيد الدالة قيمة الإدخال إلى العنصر innerHTML، وإذا كان فارغًا، يتم إزالة النص من العنصر innerHTML وتعيين رسالة الخطأ المخصصة (setCustomValidity()) إلى "Please enter your name". ثم يتم استدعاء الدالة reportValidity() ليتم عرض رسالة الخطأ المخصصة، ويتم وضع التركيز على حقل الإدخال باستخدام الدالة focus().
-
في البرمجة، تشير كلمة "الكائن" (Object) إلى أي شيء يمكن التلاعب به في البرنامج. ويمكن تقسيم الكائنات في البرمجة إلى قسمين رئيسيين: الكائنات القابلة للتكرار (Mutable Objects) والكائنات غير القابلة للتكرار (Immutable Objects). الكائنات القابلة للتكرار (Mutable Objects): هي الكائنات التي يمكن تغييرها أو تعديلها بعد إنشائها. وهذا يعني أن البرنامج يمكنه تغيير قيم الكائنات القابلة للتكرار خلال تنفيذه. وبعض أمثلة الكائنات القابلة للتكرار تشمل: القوائم (Lists)، والمصفوفات (Arrays)، والمجموعات (Sets)، وقواعد البيانات (Databases). الكائنات غير القابلة للتكرار (Immutable Objects): هي الكائنات التي لا يمكن تغييرها بعد إنشائها. وهذا يعني أن البرنامج لا يمكنه تعديل قيم الكائنات غير القابلة للتكرار. وبعض أمثلة الكائنات غير القابلة للتكرار تشمل: الأعداد (Numbers)، والسلاسل (Strings)، والتفاصيل (Tuples)، والقواميس (Dictionaries). ويمكن للمبرمج استخدام الكائنات القابلة للتكرار في العديد من الأماكن، مثل عمليات الإضافة أو الحذف في البيانات، بينما يمكن استخدام الكائنات غير القابلة للتكرار في المواقف التي يحتاج فيها البرنامج إلى تمثيل كائن فريد من نوعه، مثل الإسم أو العمر أو الوظيفة. هنا بعض الأمثلة على الكائنات القابلة للتكرار والغير القابلة للتكرار في Python: الكائنات القابلة للتكرار: القوائم (Lists) يمكن إنشاء قائمة جديدة واضافة عنصر جديد إليها باستخدام الدالة append(): my_list = [1, 2, 3, 4] my_list.append(5) print(my_list) # [1, 2, 3, 4, 5] المصفوفات (Arrays) يمكن إنشاء مصفوفة جديدة والتعامل معها باستخدام المكتبة numpy: import numpy as np my_array = np.array([1, 2, 3, 4, 5]) print(my_array) # [1, 2, 3, 4, 5] الكائنات غير القابلة للتكرار: الأعداد (Numbers) يمكن إنشاء متغير جديد وتعيينه بقيمة رقمية: my_number = 10 print(my_number) # 10 السلاسل (Strings) يمكن إنشاء سلسلة جديدة والتلاعب بها باستخدام العديد من العمليات المتاحة للسلاسل، مثل الجمع والتكرار: my_string = "Hello" print(my_string + " World") # Hello World print(my_string * 3) # HelloHelloHello
-
يمكن استخدام إطار العمل ASP.NET MVC لإنشاء صفحة واحدة تحتوي على تفاصيل كل منتج، والتي يمكن الوصول إليها باستخدام معرف فريد لكل منتج. يمكن استخدام الإطار Entity Framework لإنشاء موديل لكل منتج وحفظه في قاعدة البيانات، ومن ثم استخدام عرض (View) واحد لعرض تفاصيل المنتجات. يمكن استخدام رابط ديناميكي (Dynamic Link) يحتوي على معرف المنتج في عنوان URL للوصول إلى الصفحة الخاصة بتفاصيل المنتج. لنفترض أن لديك تطبيق ASP.NET MVC للإعلانات على الإنترنت وتريد إنشاء صفحة تفاصيل المنتجات التي يتم الوصول إليها عند النقر على إعلان منتج. سنفترض أيضًا أن لديك قاعدة بيانات تحتوي على جدول يسمى Products يحتوي على معلومات المنتجات. يتم إنشاء موديل (Model) باستخدام Entity Framework ويحتوي على جميع المعلومات المتعلقة بالمنتج، مثل الاسم والوصف والصور والسعر وغيرها. يمكن إنشاء موديل بالشكل التالي: public class Product { public int Id { get; set; } public string Name { get; set; } public string Description { get; set; } public decimal Price { get; set; } public string ImageUrl { get; set; } } يتم إنشاء قاعدة بيانات باستخدام Entity Framework وإضافة جدول يحتوي على بيانات المنتجات. يمكن إنشاء قاعدة بيانات باستخدام أدوات إدارة قاعدة البيانات مثل Microsoft SQL Server أو MySQL أو PostgreSQL أو Oracle. يمكن إنشاء قاعدة بيانات بالشكل التالي: CREATE TABLE Products ( Id INT PRIMARY KEY IDENTITY, Name NVARCHAR(50) NOT NULL, Description NVARCHAR(MAX), Price DECIMAL(18, 2) NOT NULL, ImageUrl NVARCHAR(MAX) ) يتم إنشاء عرض (View) واحد لعرض تفاصيل المنتجات. يمكن استخدام أدوات ASP.NET MVC مثل Razor View Engine لإنشاء العرض. يمكن إنشاء العرض بالشكل التالي: @model Product <h2>@Model.Name</h2> <p>@Model.Description</p> <p>Price: @Model.Price</p> <img src="@Model.ImageUrl" alt="@Model.Name" /> يتم إنشاء إجراء تحكم (Controller Action) لاسترداد بيانات المنتجات من قاعدة البيانات وعرضها في العرض (View). يمكن استخدام أدوات ASP.NET MVC لإنشاء الإجراء. يمكن إنشاء الإجراء بالشكل التالي: public class ProductController : Controller { private readonly ApplicationDbContext _db; public ProductController(ApplicationDbContext db) { _db = db; } public IActionResult Details(int id) { var product = _db.Products.Find(id); if (product == null) { return NotFound(); } return View(product); } } إضافة رابط ديناميكي (Dynamic Link) يحتوي على معرف المنتج في عنوان URL لكل إعلان على الموقع <a href="@Url.Action("Details", "Product", new { id = product.Id })">@product.Name</a>
-
في الشرط الأخير في الكود، المتعلق بـ "Awesome Rows and Columns"، تم استخدام الشرط الخاص بـ "Awesome Diagonals" بشكل خاطئ، حيث تم إدراجه كجزء من شرط الصفوف والأعمدة والقطرين. بالتحديد، كان الخطأ في هذه الجملة: else if (row1 == col1 || row1 == col2 || row1 == col3 || row1 == diag1 || row1 == diag2 || row2 == col1 || row2 == col2 || row2 == col3 || row2 == diag1 || row2 == diag2 || row3 == col1 || row3 == col2 || row3 == col3 || row3 == diag1 || row3 == diag2) { printf("Awesome Rows and Columns"); } حيث تم وضع "diag1" و "diag2" كجزء من شرط الصفوف والأعمدة والقطرين. وبالتالي، لم يتم تمييز الحالة المراد الإشارة إليها بشكل صحيح. لحل هذه المشكلة، يجب تحريك الشرط الخاص بـ "Awesome Diagonals" إلى موضعه الصحيح، كما هو موضح في الكود التالي: if (row1 == row2 && row2 == row3 && row3 == col1 && col1 == col2 && col2 == col3 && col3 == diag1 && diag1 == diag2) { printf("Awesome Numbers"); } else if (row1 == row2 || row1 == row3 || row2 == row3) { printf("Awesome Rows"); } else if (col1 == col2 || col1 == col3 || col2 == col3) { printf("Awesome Columns"); } else if (diag1 == diag2) { printf("Awesome Diagonals"); } else if (row1 == col1 || row1 == col2 || row1 == col3 || row2 == col1 || row2 == col2 || row2 == col3 || row3 == col1 || row3 == col2 || row3 == col3) { printf("Awesome Rows and Columns"); } else if (col1 == diag1 || col2 == diag2) { printf("Awesome Columns and Diagonal"); } بعد هذا التعديل، يجب أن يتم طباعة الرسالة النهائية بشكل صحيح وفقًا لشروط الكود.
-
إذا كنت قد قمت بتثبيت مفسر لغة Ruby مسبقاً والمشكلة كما هي تحتاج إلى إضافة مسار تنفيذ Ruby إلى متغير بيئة النظام PATH باتباع هذه الخطوات: قم بفتح قائمة "بدء" وابحث عن "Environment Variables" وانقر فوق "Edit the system environment variables". انقر فوق "Environment Variables". في قسم System variables، انتقل إلى الأسفل وابحث عن المتغير "Path"، ثم انقر على "Edit". انقر على "New" وأدخل مسار تنفيذ Ruby. على سبيل المثال، إذا كان Ruby مثبتًا في المسار الافتراضي، يمكنك إضافة المسار التالي:``C:\Ruby27-x64\bin` ملاحظة: استبدل C:\Ruby27-x64 بالمسار الفعلي إلى مجلد تثبيت Ruby. انقر فوق "OK" لإغلاق جميع النوافذ. افتح نافذة جديدة من سطر الأوامر أو PowerShell وحاول تشغيل أمر Ruby مرة أخرى.
-
يمكن استخدام أي لغة برمجة لشرح المفاهيم الكائنية، بما في ذلك Java و Python وغيرها من اللغات. ومع ذلك، يتم استخدام Python لشرح المفاهيم الكائنية لعدة أسباب، منها: سهولة اللغة: Python تعتبر لغة برمجة سهلة التعلم والاستخدام وتتميز بقوة في التعبير وبساطة الكتابة. شيوعية الاستخدام: يستخدم Python على نطاق واسع في الصناعة والأكاديمية، ولذلك فإن استخدامه في شرح المفاهيم الكائنية يسهل على الطلاب تطبيق هذه المفاهيم في المستقبل. مرونة اللغة: تتيح Python للمستخدمين حرية الاختيار بين البرمجة الكائنية والبرمجة الإجرائية والبرمجة الوظيفية والبرمجة التوجيهية والعديد من الأساليب الأخرى، مما يجعلها لغة مرنة ومتعددة الاستخدامات. كما أن هناك دورة كاملة خاصة بال python في الأكاديمية فلذلك يعتبر استخدام python مفيد لمن يريد التكملة باستخدام هذه اللغة بشكل عام، يتم اختيار لغة البرمجة المستخدمة في دورة تعليمية بناءً على الأهداف التعليمية ومستوى الطلاب والأدوات المتاحة. حتى لو كانت Java هي اللغة المستخدمة في الدورة، فمن الممكن تطبيق المفاهيم الكائنية باستخدام Python أو أي لغة أخرى. المهم هو فهم المفاهيم بشكل صحيح وتطبيقها في الأمثلة العملية.
- 3 اجابة
-
- 1
-
-
بمجردك حصولك على أياً من دورات حسوب يتم فتح المسار الأول من بقية الدورات الموجودة بأكاديمية حسوب لذلك إذا كنت مهتماً بتعلم تطوير الواجهات الأمامية بجاني تعلم ال php فذلك يتيح لك تعلم أساسيات HTML و CSS و JavaScript و jQuery وهذه المهارات هي الأساسيات المطلوبة في مجال ال frontend كما أن هناك عرض موجود حالياً طوال شهر رمضام يسمح لك بالحصول على دورة مجانية أي دورتين بسعر دورة واحدة فيمكنك الحصول على دورة تطوير واجهات المستخدم + تطوير تطبيقات الويب بواسطة php بسعر دورة واحدة بالطبع تمكنك من تطوير واجهات أمامية بدون أي مشكلة ولكن هناك بعض المفاهيم التي يجب عليك تعلمها لم يتم شرحها في المسار الأول ولكن كلغات فيمكنك تطوير أي واجهة أمامية بال HTML و CSS و JavaScript كما أن حتى تصبح frontend محترف يجب عليك تعلم بعض المهارات المتقدمة والفيديو التالي يشرح بالتفصيل هذه المهارات
-
ربما تكون المشكلة في اسم ال class الخاص بالأيقونات حيث أن الإصدار السادس وهو الأحدث مختلف عن الإصدارات القديمة فمثلاً إذا كنت تستخدم الإصدار السادس فسيكون الكود مشابه للشكل التالي <i class="fa-solid fa-user"></i> أما إذا كنت تستخدم إصدار قديم فسيكون كما بالشكل التالي <i class="fas fa-user"></i> لاحظ الفرق بين الكود الأول والثاني كما أن هناك بعض الأيقونات الغير مجانية فمثلاً التنسيقات Regular و Light و Duotone غير مجانية فإذا كنت تستخدم التسيقات التالية فلن تظهر fa-regular fa-light fa-thin fa-duotone fa-sharp
-
تتبع جوجل أدسنس مجموعة من المعايير للحفاظ على الجودة والمصداقية والموثوقية في الإعلانات التي يتم عرضها، وتشمل هذه المعايير: محتوى عالي الجودة: يجب أن يكون المحتوى الذي يتم عرض الإعلانات فيه ذو جودة عالية ومتنوع، ويجب أن يكون محتوى مفيد للقراء ولا يخالف سياسات جوجل. الصفحات المستهدفة: يجب أن تتماشى الصفحات التي تعرض فيها الإعلانات مع سياسات جوجل ولا تحتوي على محتوى مخالف، مثل المحتوى الغير قانوني أو الخادش للحياء. المصداقية والشفافية: يجب على الناشرين أن يكونوا شفافين فيما يتعلق بأساليبهم لجذب المرور إلى مواقعهم وعرض الإعلانات. ولا يجوز لهم استخدام أساليب غير مشروعة مثل النقر العشوائي أو الشراء الغير شرعي للنقرات. الإعلانات المقصودة: يجب أن تتوافق الإعلانات التي يتم عرضها مع سياق الموقع ومحتواه، ولا يجوز عرض إعلانات غير ملائمة أو غير متناسبة مع المحتوى. الأمان والخصوصية: يجب أن يتم حماية بيانات المستخدمين والمعلومات الشخصية، ولا يجوز جمع أي معلومات بشكل غير مشروع أو استخدامها بطريقة لا تتوافق مع سياسات جوجل والقوانين المعمول بها. الأداء: يجب على الناشرين توفير تجربة استخدام مريحة للمستخدمين وتحسين أداء الإعلانات على الموقع، مثل تحسين سرعة التحميل والاستجابة والتوافق مع مختلف الأجهزة. والمدونة ليست بها أي محتوى حالياً لذلك قم بإضافة بعض المقالات التي تتبع المعايير السابقة كما أخبرك مصطفى في التعليق السابق ولكن بالنسبة لشكل لواجهة المدونة فهي جيدة وتعتبر متجاوبة مع الشاشات الصغيرة ويتصبح أفضل إذا قمت باستخدام نوع خط مختلف مع الموجود حالياً
- 2 اجابة
-
- 1
-
-
تعتمد على الظروف الخاصة بالمدونة. بعض الآثار المحتملة لترك المدونة دون الاهتمام بها تشمل: انخفاض في حركة المرور: بدون محتوى جديد وتحديثات، قد تبدأ المدونة في فقدان جمهورها ويمكن أن ينخفض حجم الزيارات التي تتلقاها مع مرور الوقت. تراجع في تصنيفات محركات البحث: تميل محركات البحث إلى تفضيل المحتوى الجديد والمحدث، لذلك إذا لم يتم تحديث المدونة بانتظام، فقد تتراجع تصنيفاتها في محركات البحث، مما يجعل من الصعب على القراء المحتملين العثور عليها. معلومات قديمة: إذا أصبح محتوى المدونة قديمًا، فقد تفقد جدواها ومصداقيتها، مما يجعل القراء يفقدون الاهتمام ويبحثون في مكان آخر للحصول على المعلومات. ولذلك يعتمد على المدونة الخاصة بك وإذا كانت كما قلت ليس بها أي محتوى حالياً فالأفضل هو عند البدأ في التدوين هو بناء مدونة أخرى وذلك في حالة أنك لن تقوم بإضافة أي محتوى لفترة كبيرة
- 2 اجابة
-
- 1
-
-
كلا استخدام CDN وتنزيل المكتبة محليًا لهما مزايا وعيوبهما الخاصة، ويعتمد الاختيار على الاحتياجات والظروف الخاصة بك. يمكن أن يكون استخدام شبكة توزيع المحتوى (CDN) للمكتبات الشائعة مثل jQuery وBootstrap وFont Awesome مفيدًا لأنه يوفر العديد من الفوائد، مثل: تحميل الصفحة بشكل أسرع: تمتلك شبكات CDN خوادم موزعة على نطاق العالم ، مما يمكن أن يقلل من وقت تحميل موقع الويب الخاص بك للزوار الذين يبعدون بعيدًا عن خادمك. تقليل استخدام النطاق الترددي bandwidth : عند استخدام CDN ، يتم تقديم ملفات المكتبة من خوادم CDN بدلاً من خادمك الخاص ، مما يقلل من كمية عرض النطاق الترددي الذي يحتاج إليه خادمك. زيادة التوفر: توفر شبكات CDN توافرًا عاليًا وإعادة توجيهًا ، مما يمكن أن يساعد على ضمان بقاء موقع الويب الخاص بك يعمل حتى خلال فترات الارتفاع المروري أو انقطاع الخادم. من ناحية أخرى ، يمكن أيضًا أن يكون تنزيل المكتبة محليًا له بعض المزايا ، مثل: الاستخدام دون اتصال: إذا كنت بحاجة إلى العمل على موقع الويب الخاص بك بدون اتصال بالإنترنت ، فقد يكون تنزيل ملفات المكتبة محليًا مفيدًا. مزيد من التحكم: تملك السيطرة الكاملة على إصدار المكتبة التي تستخدمها ، وهو ما يمكن أن يكون مهمًا إذا كنت ترغب في الحفاظ على الاتساق عبر مشاريع متعددة أو تجنب مشاكل التوافق. الأمان: إذا كان لديك مخاوف بشأن الاعتماد على شبكة CDN من جهة ثالثة لرمز موقع الويب الخاص بك ، فقد يساعد تنزيل المكتبة محليًا على ضمان أمان رمز موقع الويب الخاص بك. بشكل عام، يعتمد الاختيار بين استخدام CDN أو تنزيل المكتبة محليًا على الاحتياجات والظروف الخاصة بك.
- 3 اجابة
-
- 1
-
-
لغة البرمجة Ruby هي لغة برمجة للأغراض العامة. يتم استخدامه في مجموعة واسعة من المجالات ، ولكن اشتهرت كلغة لتطبيقات الويب ، بسبب إطار عمل Ruby on Rails.تجعل طبيعة الغرض العام من Ruby مناسبة لمجموعة واسعة من مهام البرمجة ، تمامًا مثل Perl و Python واللغات الأخرى ذات الأغراض العامة. تركز الميزات الرئيسية لـ Ruby على "سعادة" المطور وسهولة الاستخدام ، مما يجعلها لغة جيدة لأولئك الذين يتعلمون البرمجة فقط ولأولئك الذين يرغبون في إنجاز المزيد باستخدام كود أقل. إنها ميزات منتشرة وموجهة للكائنات تجعلها بديهية للغاية. يمكن لمهندسي DevOps استخدام Ruby في البرمجة النصية من جانب الخادم وإدارة التكوين. على سبيل المثال ، Puppet هو برنامج مفتوح المصدر شائع مكتوب بلغة Ruby لإدارة تكوين الخادم. يمكن لمطوري الأجهزة المحمولة استخدام RubyMotion لإنشاء تطبيقات أصلية لنظامي التشغيل iOS و Android باستخدام لغة Ruby ، بدلاً من استخدام لغة مختلفة لكل نظام أساسي (Objective-C / Swift for iOS و Java لنظام Android). بالنسبة لتطبيقات سطح المكتب ، يمكن أيضًا استخدام RubyMotion لتطوير تطبيقات OSX. كما توجد الكثير من التطبيقات الأخرى لهذه اللغة ولكن السؤال الأهم هل يستحق تعلم لغة Ruby في عام 2023 ؟ الشعبية كانت روبي وريلز تحظى بشعبية كبيرة في أوائل العقد الأول من القرن الحادي والعشرين. منذ شعبية Node.js ، انتقل العديد من المطورين من Ruby . هذا لا يعني أن اللغة قد ماتت. في الواقع ، إنها بعيدة كل البعد عن ذلك. لقد نضجت على مدار كل هذه السنوات وما زالت واحدة من أفضل التقنيات المستخدمة في تطوير الويب. يبسط منطق الأعمال لدى Ruby بنية جميلة وأنيقة تجعل تنفيذ منطق الأعمال المعقد أكثر بساطة. علاوة على هيكل إطار عمل Ruby on Rails، تجعل التطوير منظمًا وسهل الكتابة وقراءة التعليمات البرمجية. مجموعة كبيرة جدًا من الالمكتبات هناك مكتبة لكل ما يخطر ببالك. لقد ابتكر مجتمع المطورين الكثير من المكتبات ، والتي يمكن أن تخفف من مشكلتك.يمكنك العثور على مكتبة لتفويض واجهة برمجة التطبيقات ، لتنفيذ وظائف الخلفية ، لكل وصول إلى مخزن البيانات ، إلخ. ويعتبر لغة Ruby منتشرة بسبب إطار عمل Ruby on Rails لذلك تلخيصاً لا يزال Ruby on Rails مناسبة في عام 2023 وستظل مناسبة لبضع سنوات قادمة. إنها منصة بسيطة وفعالة لبناء نماذج أولية سريعة و MVP وأي نوع من تطبيقات / خدمات الويب.إنه يقلل من وقت التطوير ويساعدك على الوصول إلى السوق في وقت قصير حقًا.
-
يمكنك استخدم الحزمة HijriDateLib لتحويل التواريخ الهجرية إلى Gregorian أولًا يجب تضمين ملف المكتبة في ملف php هكذا: <?php require_once('hirji.class.php'); echo (new hijri\datetime()); يعرض: 8 شعبان 1436هـ ويوجد العديد من الدوال بحيث يمكنك التحويل بين التواريخ المختلفة فمثلاً GregorianToHijri تحويل من التقويم الجريجوري (المعمول به حاليا في جميع الدول) إلى التقويم الهجري HijriToGregorian تحويل من التقويم الهجري إلى الجريجوي مميزات هذه المكتبة التقويم الاصطلاحي في المكتبة مطابق تماما للتقويم المتعارف عليه عند الفلكيين ومطابق للتقويم عند شركة مايكروسوفت في جميع برامجها، ومطابق لكتاب تقويم القرون للفلكي صالح العجيري إمكانية حفظ واسترجاع تعديلات على التقويم بحيث تتناسب مع إعلان رمضان والأعياد وغير ذلك، ويتم حفظ هذه التعديلات وليست مؤقتة بحيث أن ما نشر في تاريخ معين يبقى بهذا التاريخ حتى بعد سنين. الجمع بين التقويمين الميلادي والهجري في سطر واحد من البرمجة مما يوفر ويضبط. استعمال مكتبة datetime التي تقوم بضبط فروق التوقيت تلقائيا. عرض التقويم الميلادي باللغة العربية في حالة اختيارها. دعم 20 لغة عالمية في أسماء الأشهر الهجرية.
- 3 اجابة
-
- 1
-
-
بالإضافة لما شرحع مصطفى في التعليق السابق فإنه يجب عليك الإلتزام بالشروط التالية لتسمية المتغيرات في python يمكن لأسماء المتغيرات أن تحتوي فقط على الحروف (بحروف كبيرة وصغيرة) والأرقام والشرطة السفلية (_). لا يمكن أن تبدأ أسماء المتغيرات بالأرقام. لا يمكن أن تكون أسماء المتغيرات مفتاحية محجوزة في Python (مثل if، else، while، for، إلخ). تُميِّز أسماء المتغيرات بين الأحرف الكبيرة والصغيرة، وهذا يعني أن "myVariable" و"myvariable" هما اسمان مختلفان لمتغير واحد. يفضل أن تكون أسماء المتغيرات واضحة ووصفية، ويجب أن تعكس الغرض والمعنى الذي يتم استخدام المتغير له. فيما يلي بعض الأمثلة على أسماء المتغيرات الخاطئة في Python: 123abc: يبدأ اسم المتغير بالأرقام. my-variable: يحتوي اسم المتغير على علامة شرطة (-) بدلاً من الشرطة السفلية (_). if: اسم المتغير يحتوي على كلمة محجوزة في Python. my var: يحتوي اسم المتغير على مسافة بين الكلمات بدلاً من استخدام الشرطة السفلية (_).
-
هل تقصد أنه تريد العنصر أن يذهب لليسار ويعود لمكانه عند الحدث hover أما تريد أن يذهب لليسار وبعد ال hover يرجع مكانه ؟ إذا كنت تقصد الحالة الأولى فيمكنك استخدام ال animation كما بالشكل التالي HTML: <input type="button" value="Submit"> CSS: input[type=button] { position: relative; transition: transform 0.3s ease-in-out; } input[type=button]:hover { animation-name: move-left; animation-duration: 0.3s; animation-fill-mode: forwards; } @keyframes move-left { 0% { transform: translateX(0); } 50% { transform: translateX(-5px); } 100% { transform: translateX(0); } } في هذا المثال، تم استخدام transition لتحريك الزر بشكل سلس عند ال hover، ويتم تطبيق الحركة بواسطة animation باستخدام @keyframes. تم تحريك الزر بمقدار 5 بكسل إلى اليسار في نصف الوقت باستخدام الخاصية transform: translateX(-5px). ثم تم استخدام animation في الزر، حيث تم تعيين مدة الحركة animation-duration إلى 0.3 ثانية وتم تعيين اسم الحركة animation-name إلى move-left، وهو اسم الـ @keyframes الذي تم تحديده سابقًا. تم استخدام animation-fill-mode لجعل الزر يبقى في مكانه بعد انتهاء الحركة. باستخدام animation ، يمكن تنفيذ المطلوب بشكل سلس ومرن، ويمكن تعديل سرعة ومدة الحركة والتأثيرات التي يتم استخدامها.
-
مشكلة csrf mismatch token تحدث عادة عندما يتم إرسال طلب POST من خلال React لتسجيل الدخول إلى Laravel، وذلك لأن Laravel يستخدم حماية CSRF (Cross-Site Request Forgery) كإجراء أماني إضافي. لحل هذه المشكلة، يمكنك إما تعطيل حماية CSRF بشكل مؤقت في Laravel عن طريق إزالة الحماية من الـ middleware، أو استخدام CSRF token في طلبات React. إذا كنت ترغب في استخدام CSRF token، فيمكنك القيام بما يلي: قم بإنشاء ملف في React يسمى csrf.js وضع فيه الكود التالي: import axios from 'axios'; const csrfToken = document.head.querySelector('meta[name="csrf-token"]').content; axios.defaults.headers.common['X-CSRF-TOKEN'] = csrfToken; ضع الملف csrf.js في مجلد الـ helpers في React. قم بتضمين csrf.js في ملف التكوين الخاص بك في React، عن طريق إضافة السطر التالي: import './helpers/csrf'; بعد ذلك، سيتم إضافة CSRF token إلى رأس كل طلب axios من React، مما يمكن لـ Laravel التحقق من صحة الطلب.
-
الخطوات الأساسية في إنشاء نظام المستخدمين هي: إنشاء جدول في قاعدة البيانات لتخزين معلومات المستخدمين وصلاحياتهم: يتم إنشاء جدول يحتوي على حقول لاسم المستخدم وكلمة المرور ودور المستخدم. يمكن أيضًا إضافة حقول إضافية حسب احتياجات التطبيق. إضافة بعض البيانات الافتراضية إلى جدول المستخدمين: يتم إضافة بعض الحسابات الافتراضية التي يمكن استخدامها لتسجيل الدخول فيما بعد. يمكن أيضًا للمسؤولين إضافة المزيد من المستخدمين وتحديد صلاحياتهم. إنشاء صفحة تسجيل الدخول login.php: تستخدم هذه الصفحة لتحقق من اسم المستخدم وكلمة المرور وتحديد دور المستخدم. يتم استخدام الطريقة POST لنقل بيانات تسجيل الدخول مثال على ذلك . if ($_SERVER['REQUEST_METHOD'] == 'POST') { $username = $_POST['username']; $password = $_POST['password']; $query = "SELECT * FROM users WHERE username = '$username' AND password = '$password'"; $result = mysqli_query($conn, $query); if (mysqli_num_rows($result) == 1) { $row = mysqli_fetch_assoc($result); $_SESSION['user_id'] = $row['id']; $_SESSION['user_role'] = $row['role']; header('Location: profile.php'); exit; } else { $error = 'Invalid username/password'; } } إنشاء صفحة الملف الشخصي profile.php: تستخدم هذه الصفحة لتحقق من دور المستخدم وتوجيهه إلى الصفحة المناسبة، بحيث يمكن للإداريين الوصول إلى صفحة الإدارة والأطباء الوصول إلى صفحة الأطباء والممرضين الوصول إلى صفحة الممرضين والمرضى الوصول إلى صفحة المرضى مثال على ذلك session_start(); if (!isset($_SESSION['username']) || !isset($_SESSION['role'])) { header("Location: login.php"); exit(); } if ($_SESSION['role'] == 'admin') { header("Location: admin.php"); exit(); } elseif ($_SESSION['role'] == 'doctor') { header("Location: doctor.php"); exit(); إنشاء صفحات المستخدمين الفردية: يتم إنشاء صفحات المستخدمين الفردية وتصميمها وفقًا للاحتياجات المحددة، بحيث تحتوي صفحة الإدارة على الوظائف التي يمكن للإداريين القيام بها وصفحة الأطباء تحتوي على الوظائف التي يمكن للأطباء القيام بها وهكذا.
-
سأشرح لك خدمة ال Web Scraping من عدة إتجاهات مثل السوق والطلب على هذه الخدمة : شهد مجال ال Web Scraping نموًا كبيرًا في السنوات الأخيرة، ومع ذلك فإن السوق لا يزال تنافسيًا وجاهزًا للابتكار. واحدة من الاتجاهات في المجال هي إعادة تسمية ال Web Scraping باسم استخراج البيانات وتطبيع البيانات المجموعة عالية الجودة. وآخر اتجاه هو سعي الشركات لتوفير دورة حياة البيانات الكاملة للويب، بما في ذلك الاندماجات والاستحواذات لبناء بيئة متكاملة. وفقاً للعديد من منصات العمل الحر على الإنترنت، فإن طلبات وظائف ال Web Scraping قد ارتفعت بنسبة 129% في السنوات الخمس الماضية. • حسب موقع Freelancer، يتم تسجيل أكثر من 2 مليون مهمة ويب سكرابينغ كل عام على المنصة. • تشير التقديرات إلى أن سوق خدمات ال Web Scraping العالمي سيصل إلى 4.16 مليار دولار بحلول عام 2026. اللغات والمكتبات: في عام 2023، يعتبر Python الخيار الأفضل لل Web Scraping. واحدة من أشهر المكتبات لسكرابينغ Node.js هي Crawlee، بقدراتها المتقدمة لمنع الحظر. بالنسبة لأتمتة المتصفح، فإن Selenium و Playwright هما الأدوات المفضلة، حيث يتيحان تقديم JavaScript على المواقع الديناميكية، والتحكم في المتصفح الخفي وأتمتة سير العمل. مكافحة ال Web Scraping: من المتوقع في عام 2023 أن يصبح الذكاء الاصطناعي معيارًا في الصناعة، وسوف تؤثر حماية الروبوتات على تجربة المستخدم، وسوف تتضمن تطبيقات الهواتف المحمولة تدابير مكافحة الويب سكرابينغ، وسيتم إخفاء المزيد من البيانات وراء صفحات تسجيل الدخول. اتجاهات ال Web Scraping لعام 2023: استمرار شعبية ال Web Scraping لمواقع التواصل الاجتماعي والتجارة الإلكترونية. زيادة الإشارات إلى ال Web Scraping في وسائل الإعلام الرئيسية، وزيادة استخدام الحكومة والمنظمات غير الحكومية لل Web Scraping تركيز متزايد على خصوصية البيانات والأمان. تطبيق تدابير أكثر صرامة لمكافحة ال Web Scraping من قبل المواقع، بما في ذلك تلك التي تعتمد على الذكاء الاصطناعي. زيادة استخدام ال Web Scraping في قطاعات مختلفة مثل الأبحاث العلمية والطبية والتعليم والتسويق والأعمال والعديد من الصناعات الأخرى. تطوير أدوات وبرامج جديدة لل Web Scraping توفر تحسينات في الأداء والدقة والسرعة والسهولة في الاستخدام. تلخيصاً يتوقع أن يستمر نمو ال Web Scraping في عام 2023 مع تركيز أكبر على الخصوصية والأمان والتحسينات التقنية الجديدة. سيشهد هذا العام أيضًا تزايدًا في استخدام ال Web Scraping في مختلف الصناعات والقطاعات وزيادة في الحوار حول الذكاء الاصطناعي وتحسينات الأداء.
-
بما أنك تريد الحصول على عمل في أقرب فرصة متاحة فأقرب مسار أو مجال يمكنك العمل به حالياً ( في مجال تطوير الويب كما ذكرت أن تريد هذا المجال ) هو تعلم مجال ال frontend أو مجال تطوير واجهات المستخدم حيث يمكنك إتقان هذا المجال الموجود في مجال تطوير الويب والبحث عن عمل بجانب تطوير مهاراتك سواء في ال frontend أو التكملة في مجال آخر لماذا مسار ال frontend جيد بالنسبة لك ؟ لأنك ببساطة قمت بتعلم ال html و ال css أي قمت بالدراسة في هذا المجال مسبقاً فالأفضل هو التكملة به يمكنك التكملة على هذا المجال وتعلم ال backend لاحقاً بالتزامن مع البحث عن عمل في مجال ال frontend يوجد الكثير من المصادر لتعلم هذا المجال أكثر من غيره كيف يمكنك تعلم هذا المجال ال frontend ؟ يوجد الكثير من الدورات المتاحة سواء مجانية أو مدفوعة مثل دورة تطوير واجهات المستخدم في أكاديمية حسوب كما أن يجب عليك أولاً معرفة المهارات المطلوبة بهذا المجال ويمكنك الإطلاع على المقالات الموجودة بأول تعليق ونصيحة لك تعلم أكمل دراسة دورة أساسيات علوم الحاسوب بالتزامن مع دراسة مجال ال frontend لأم هذه الدورة هي بناء للأساسيات لك في مجال علوم الحاسوب وهي مفيدة جداً في البرمجة
-
يوجد العديد من الأمثلة والتطبيقات على موقع github التي توفر لك هذا التطبيق وهي مفتوحة المصدر فيمكنك تحميلها والتعديل عليها والتعلم منها لإكتشاف الكثير من المهارات التي لم تكن تعرفها لذلك قم بالدخول ل github وقم بالبحث عن عن اسم اللعبة بالإضافة للغة التي تريدها وستطهر لك العديد من المستودعات وفي حالة وجود كود لم تعرفه أو مشكلة واجهتك يمكنك إضافة سؤال وسيتم الإجابة عليك ومثال يمكنك الإطلاع على المشاريع الموجودة بهذه الصفحة وفي ملف ال README الموجود في أي مشروع ستجد المتطلبات لتشغيل التطبيق على جهازك بحيث يمكنك تحميل الحزم المستخدمة
-
يجب عليك أول قبل تحديد أهمية تعلم jquery حالياً معرفة أسباب استخدامها في السابق كانت jQuery موجوده للمساعدة في العديد من المشكلات المتعلقة بالمتصفحات في ذلك الوقت. مشاكل توافق المستعرض كان هناك الكثير من الاختلافات بين المتصفحات. إذا اختبرت الرمز الخاص بك في مستعرض حديث - مثل Firefox أو Chrome - فلن يكون مضمونًا أنه يعمل في Explorer. كان هناك الكثير من الاختلافات في CSS ، وأقل قليلاً في JS. المحددات : تحتوي CSS على نموذج معقول للغاية لاختيار العناصر من مستند: المحددات.في ذلك الوقت ، تم استخدام JavaScript فقط على المتصفح: لذلك ، تم استخدام JS و CSS من قبل نفس الأشخاص ، وكانوا يريدون محددات CSS على جانب JS أيضًا. في ذلك الوقت ، لم يكن لدى المتصفحات أي شيء مثل هذا متاحًا في الأصل.كانت هذه ميزة أخرى متوفرة مع jQuery. باستخدامه ، يمكنك العثور على عناصر DOM بشيء بسيط مثل var element = $(‘.some-class’); واجهات برمجة تطبيقات المتصفح : تم تطوير الإصدار الأول من JavaScript في 10 أيام — لذلك كان هناك العديد من الحواف الخشنة.استمرت طبيعتها الخاصة على مر السنين. كان XMLHttpRequest ميزة أساسية لتحويل JavaScript إلى لغة يمكن استخدامها لتطوير التطبيقات من جانب المستعرض — فقد سمح بإجراء طلبات إضافية من JS إلى الخادم. طريقة استخدامه ليست لطيفة للقراءة ولكن باستخدام jQuery ، يمكن تحقيق الهدف نفسه بسهولة أكبر: ولكن حالياً بالكاد نسمع عن مشكلات التوافق في الوقت الحاضر. فيمكنك افتراض أن جميع المتصفحات تعمل بنفس الطريقة. وانتظر تقارير الأخطاء في حالة أنها لا تعمل جميعها بالطريقة نفسها.تتم معالجة مشكلات واجهة برمجة التطبيقات أيضًا - لدينا document.querySelectorAll و fetch الذي يوفر واجهة برمجة تطبيقات لطيفة لإجراء عمليات مشتركة بوظائف أصلية. لذلك تلخيصاً فإنه يفضل تعلم ال jquery في حالة أنك تتعامل مع مواقع ومشاريع قديمة نسبياً وتستخدم ال jquery عند التعديل على الكود مثلاً
-
لتخصيص حدث معين ليظهر بأولوية عند عرض الأحداث على الموقع باستخدام اطار العمل Laravel، يمكنك اتباع الخطوات التالية: إضافة حقل الأولوية إلى جدول الأحداث في قاعدة البيانات. يمكن استخدام نوع البيانات "integer" لحقل الأولوية. اضافة قيمة الأولوية الافتراضية للأحداث الجديدة في وحدة التحكم (Controller) الخاصة بإنشاء الأحداث. استخدام وظيفة Laravel الداخلية "orderBy()" لترتيب الأحداث وفقًا للأولوية عند عرضها في الصفحة. استخدام وظيفة Laravel الداخلية "first()" لاسترداد الحدث الذي له أولوية عالية ويجب عرضه في المقدمة. عرض الحدث الذي له أولوية عالية في المقدمة في الصفحة ومن ثم عرض الأحداث الأخرى بعد ذلك. على سبيل المثال، يمكنك استخدام الكود التالي في وحدة التحكم (Controller) الخاصة بعرض الأحداث: public function index() { $events = Event::orderBy('priority', 'desc')->get(); $featuredEvent = $events->first(); return view('events.index', compact('events', 'featuredEvent')); } ويمكنك استخدام الكود التالي في عرض الأحداث (View): <div class="featured-event"> <h2>{{ $featuredEvent->title }}</h2> <p>{{ $featuredEvent->description }}</p> </div> <div class="other-events"> @foreach($events as $event) @if($event->id != $featuredEvent->id) <div class="event"> <h3>{{ $event->title }}</h3> <p>{{ $event->description }}</p> </div> @endif @endforeach </div>
-
الأسباب التي قد تؤدي إلى هذه المشكلة تتضمن: عدم توفر جميع المعلومات الصحيحة لإنشاء ملف التوقيع، مثل مسار المفتاح الخاص وكلمة المرور واسم المستخدم. عدم وجود الصلاحيات الكافية لإنشاء ملف التوقيع. يجب أن تكون مسجلًا كمطور Android وتحديث نظام Android SDK الخاص بك. خطأ في Gradle أو Android Studio. لحل هذه المشكلة، يمكنك متابعة الخطوات التالية: التأكد من توفر جميع المعلومات الصحيحة لإنشاء ملف التوقيع. يمكنك التأكد من أن مسار المفتاح الخاص صحيح، وأن كلمة المرور واسم المستخدم صحيحان. التأكد من أن لديك الصلاحيات الكافية لإنشاء ملف التوقيع. يجب أن تكون مسجلًا كمطور Android وتحديث نظام Android SDK الخاص بك. يمكنك التأكد من ذلك بالتحقق من حسابك الخاص بموقع المطورين الخاص بـ Google. إذا كنت تستخدم Gradle، يمكنك تحديد مستوى السجلات في Gradle لمعرفة المزيد عن المشكلة. يمكنك إضافة السطر التالي في ملف الـ build.gradle: android { ... signingConfigs { debug { ... debuggable true signingConfig signingConfigs.debug } } ... } يمكنك أيضًا تجربة إعادة إنشاء ملف التوقيع من البداية باستخدام Keytool وتحديث ملفات Gradle. يمكنك استخدام Keytool لإنشاء ملف التوقيع الجديد قم بإتباع الحل الموجود بالتعليق السابق ثم، يمكنك تحديث ملفات Gradle بإضافة الأسطر التالية في ملف الـ build.gradle: android { ... signingConfigs { release { storeFile file("my-release-key.keystore") storePassword "password" keyAlias "alias_name" keyPassword "password" } } ... }
-
بالإضافة للإقتراحات السابقة يمكنك استخدم الوسائط المتجاوبة: يمكنك استخدام علامة <picture> والمصدر srcset لتوفير صور متعددة بأحجام مختلفة تتناسب مع أبعاد الشاشة. لنفترض أن لديك صورة بأبعاد مختلفة للشاشات الصغيرة والكبيرة: <picture> <source media="(min-width: 800px)" srcset="large.jpg"> <source media="(min-width: 400px)" srcset="medium.jpg"> <img src="small.jpg" alt="صورة توضيحية"> </picture> هذه الطريقة يمكنك استخدامها مع الطرق السابقة للإستفادة من عرض الصور بشكل جيد كما يمكنك الأستفادة من خلال هذه الطريقة عن طريق توفير في الموارد لزيادة أداء الموقع ويمكنك قراءة المزيد من خلال البحث عن responsive image html https://academy.hsoub.com/programming/html/الصور-المُتجاوبة-responsive-images-r652/
-
f-strings هي ميزة مهمة في Python 3.6 والإصدارات الأحدث، وتسمح للمبرمجين بتضمين قيم المتغيرات والتعبيرات في النصوص بشكل مباشر باستخدام علامة الدولار والأقواس المنحنية. وتتميز f-strings بسهولة القراءة والكتابة والفهم، وتجعل الشفرة أكثر تنظيمًا وأقل عرضة للأخطاء. كما أن f-strings في Python توفر عدة مزايا أخرى، من بينها: الدعم الكامل للتعابير الرياضية والتعابير الشرطية والدوال الرياضية وغيرها من التعابير المعقدة. إمكانية استخدام f-strings في أي سياق في Python، بما في ذلك دوال الطباعة (print) ورسائل التنبيه (assert) والأوامر الشرطية (if-else) وغيرها. إمكانية استخدام f-strings لتكوين أسماء المتغيرات والدوال والكائنات الأخرى باستخدام تعابير Python. إمكانية استخدام f-strings لإنشاء نصوص ديناميكية ومتغيرة تعتمد على البيانات التي تم إدخالها في الوقت الحالي. وهذه هي بعض الأمثلة البسيطة لتوضح المزايا السابقة استخدام f-strings لإظهار قيمة متغير داخل النص: name = "Alice" age = 25 print(f"My name is {name} and I am {age} years old.") استخدام f-strings لتنسيق الأرقام: pi = 3.14159265 print(f"Pi is approximately {pi:.2f}.") استخدام f-strings لإنشاء قائمة: fruits = ["apple", "banana", "orange"] print(f"The fruits are {[fruit.capitalize() for fruit in fruits]}.")