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

ياسر مسكين

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

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

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

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

    6

كل منشورات العضو ياسر مسكين

  1. عند استيراد ملف CSV إلى جدول في قاعدة بيانات MySQL، تظهر البيانات النصية باللغة العربية عادةً على أنها علامات استفهام بدلاً من النص الصحيح باللغة العربية، يجب أولا التحقق من ترميز الحروف في ملف CSV لهذا يجب عليك أن تقوم: بفتح الملف CSV باستخدام برنامج نصي مثل Notepad++ والتأكد من أن ترميز الحروف يتوافق مع اللغة العربية، ويفضل استخدام UTF-8. لكن عند استيراد الملف CSV إلى MySQL، تأكد من تحديد الترميز المناسب. يمكنك استخدام الأمر التالي: LOAD DATA INFILE 'file.csv' INTO TABLE table_name CHARACTER SET utf8 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS; يجب عليك التأكد من أن ترميز الحروف للجدول في قاعدة البيانات MySQL معين بشكل صحيح. ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; وقبل استيراد الملف CSV، استخدم أمر SET NAMES لتعيين الترميز المناسب. SET NAMES 'utf8'; وهذا مثال لأشرح لك بشكل مبسط أكثر، لنفترض أن لدينا ملف CSV يُدعى `data.csv` ويحتوي على البيانات التالية: "اسم","عمر" "ياسر",25 "مسكين",30 ونريد استيراده إلى جدول يُدعى `users` في قاعدة البيانات نستخدم هذه الأوامر: SET NAMES 'utf8'; LOAD DATA INFILE 'data.csv' INTO TABLE users CHARACTER SET utf8 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 ROWS; ALTER TABLE users CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; بهذا، يجب أن يتم استيراد البيانات العربية بشكل صحيح دون أي مشاكل في الترميز.
  2. نعم لقد فهمت ما تريد أن تصل له، ولتعديل الروابط الخاصة بالمدونة يمكنك اتباع الأكواد التي قمنا بإرفاقها لك في الإجابة السابقة.
  3. هذه المشكلة كانت تواجه العديد من المستخدمين خاصة من كانوا يستخدمون محاكيات لتشغيل ال ios 14 فواجهوا مشكلة في سرعة عملية التجميع والتشغيل في Xcode على نظام macOS، بينما لا يواجه نفس المشكلة عند استخدامه لتطوير تطبيقات Flutter على نظام Windows. لحل هذه المشكلة، يمكن بدايةً القيام بحذف المجلدات داخل هذا الإجراء يهدف إلى تخفيض أي تأثير سلبي قد يكون لهذه المجلدات على سرعة عملية التجميع، لكن في حال لم يعمل معك يمكنك تجربة هذه الخطوات: يمكن القيام بعملية إلغاء الإقتران مع الجهاز في حالة استخدام جهاز فعلي يعمل بنظام iOS 14، ومن ثم إعادة الإقتران مع Xcode. هذا الإجراء يمكن أن يساعد في تحسين التوصيل وزيادة سرعة العمل. يمكن أيضًا التحقق من إعدادات Xcode وتحسينها، والتأكد من توافق إصدار Xcode المستخدم مع إصدار Flutter، وتحسين الكود لتجنب العمليات الزائدة التي قد تؤثر على سرعة التجميع والتشغيل.
  4. العفو، هذا مثال عن كود ملف htaccess: مثلا ووردبريس افتراضيا لا يأتي مصحوب بملف .htaccess ولا يقوم بإنشائه مباشرة بعد التثبيت، بل يتم إنشائه تلقائيا داخل المجلد الرئيسي للموقع عند تغيير او تحديث للروابط الدائمة، الكود ويكون الملف افتراضيا يحتوي على هذه الأوامر. # BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress بحيث يمكنك إضاقة أي كود تريده بعد # END WordPress أز قبل # BEGIN WordPress وذلك لتفادي خلط الاوامر المخصصة مع الاوامر التي يكتبها ووردبريس افتراضيا على ملف .htaccess. RewriteEngine On # إعادة توجيه من /old-page إلى /new-page Redirect 301 /old-page /new-page # إعادة توجيه من HTTP إلى HTTPS RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # منع الوصول إلى ملفات .htaccess <Files .htaccess> Require all denied </Files> # منع الوصول إلى ملفات php.ini <Files php.ini> Require all denied </Files> # منع تصفح المجلدات Options All -Indexes
  5. لتعديل الروابط يمكن استخدام ملف .htaccess لتحويل لتحويل الرابط "page.php?id= الاستعلام" إلى "page-الاستعلام.html" يمكن أولا، البدء بتفعيل محرك الإعادة الكتابة (Rewrite Engine) من خلال هذا الأمر: RewriteEngine On بعدها يمكنك كتابة القاعدة لإعادة الكتابة (Rewrite Rule)من خلال هذين الأمرين: RewriteCond %{QUERY_STRING} id=(.*) RewriteRule ^page.php$ /page-%1.html? [R=301,L] وهذه القاعدة تحدد أنه إذا كانت السلسلة الاستعلامية تحتوي على متغير "id"، ستتم إعادة الكتابة لتكون بتنسيق "page-الاستعلام.html" بواسطة الرابط "page.php". بعدها مباشرة تقوم بتوجيه الزوار إلى الرابط الجديد، فهنا يتم استخدام `R=301` لإعادة توجيه الزوار إلى الرابط الجديد بواسطة إعادة توجيه دائمة (301 Redirect)، و `L` تحدد أن هذه هي آخر قاعدة إعادة كتابة ستتم تطبيقها. وهذا مثال عملي لأشرح الطريقة، ففرضا لدينا الرابط التالي: http://example.com/page.php?id=الاستعلام باستخدام القواعد التي ذكرتها لك سيتم تحويله إلى: http://example.com/page-الاستعلام.html وبهذا، يتم تحقيق الهدف المطلوب في تعديل الرابط.
  6. يمثل "type=text/css" في عنصر HTML `<link>` توضيحًا لنوع الملف الذي يتم ربطه بالصفحة، في سياق وربط ملف CSS، يُعرف هذا النوع بأنه وسائط نصية (text) للنوع (type) لغة التنسيق (CSS). لكن في الإصدارات الحديثة من HTML (مثل HTML5)، يُعتبر تحديد "type=text/css" اختياريًا بالنسبة لملفات CSS. هذا يعني أنه يمكنك حذفها دون تأثير على أداء ملف CSS الخاص بك. يتم فهم ملفات CSS تلقائيًا كملفات CSS من قِبل المستعرضات الحديثة، حتى بدون تحديد نوع الملف بشكل صريح. لذا، يُمكنك كتابة العنصر `<link>` ببساطة كما يلي: <link href="style.css" rel="stylesheet"> لذا يمكن ربط وكتابة عنصر الربط وبهذه الطريقة، يتم توضيح أن الملف المرتبط هو ملف CSS بدون الحاجة إلى تحديد نوع الملف بشكل صريح. هذا يجعل الشيفرة أقل تعقيدًا وأكثر وضوحًا.
  7. الفرق بينهما متباين للغاية، فالمترجم مثلا (Compiler) هو برنامج يقوم بتحويل الشفرة المصدرية للبرنامج (مثل الشفرة المكتوبة بلغة C++ أو Java) إلى رمز ثنائي (ملف تنفيذي) يمكن تشغيله مباشرة من قبل الحاسوب. ويتم استخدامه لكونه يحمل: أداءً عاليا: حيث يتم تحويل الشفرة المصدرية إلى رمز ثنائي مباشرة، وبالتالي تكون البرامج التي تم إنشاؤها باستخدام المترجم عادةً أكثر كفاءة من حيث الأداء. تحسينات في الأمان: فبمجرد تحويل الشفرة المصدرية إلى رمز ثنائي، يصعب بشكل عام على المستخدمين الآخرين رؤية أو تعديل الشفرة المصدرية. هذا يجعل من الصعب استغلال الثغرات الأمنية في البرامج. الانتشار الواسع: بحيث يمكن تشغيل البرامج التي تم تحويلها باستخدام المترجم على أنظمة متعددة دون الحاجة إلى ترجمتها مرة أخرى، مما يجعلها ملائمة للتوزيع. أما ال (Interpreter) فهو برنامج يقوم بتنفيذ الشفرة المصدرية للبرنامج مباشرة دون الحاجة إلى تحويلها إلى رمز ثنائي. ويتم استخدامه عادة لوجود هذه الميزات: التطوير والاختبار السريع: بحيث يمكن تطوير واختبار البرامج باستخدام المترجم بشكل أسرع من المترجم، حيث يمكن للمطورين رؤية نتائج تنفيذ الشفرة المصدرية على الفور دون الحاجة إلى تحويلها أولاً. التفاعلية: هو مفيد في بناء الأنظمة التفاعلية مثل الواجهات الرسومية، حيث يمكن للمستخدمين التفاعل مباشرة مع البرنامج ورؤية النتائج على الفور. التوزيع السهل: بحيث يمكن توزيع البرامج التي تستخدم المترجم بسهولة أكبر، حيث لا يلزم إعادة تحويل الشفرة المصدرية إلى رمز ثنائي قبل تشغيلها على الأنظمة الأخرى. ومن هنا يمكنك أن تستفيد أكثر لفهمهما بشكل جيد:
  8. بالطبع، ففهم أنظمة التشغيل من المواد النظرية في مجال علوم الحاسوب ويعتبر ذلك أمراً مهماً. فأنظمة التشغيل تعتبر جزءاً أساسياً في هذا المجال، وهي تهتم بكيفية تنظيم وإدارة الموارد في الحاسوب مثل المعالج، الذاكرة، والتخزين، بالإضافة إلى توفير واجهة بين المستخدم والجهاز الحاسوبي. بالنسبة للشقّ الثاني من سؤالك، فالمواد النظرية تشمل مجموعة واسعة من المواضيع التي تركز على الأسس والمبادئ الرئيسية التي تقوم عليها تطبيقات الحاسوب والبرمجيات. من بين المواد النظرية الشائعة في علوم الحاسوب: هياكل البيانات والخوارزميات**: دراسة تنظيم وتخزين البيانات بشكل فعال وفعالية الخوارزميات في معالجتها. تشمل هذه المواد النظرية دراسة القوائم المتسلسلة، الأشجار، الجرافات، وأساليب البحث والفرز نظرية الحوسبة**: وتشمل المواد مثل نظرية الأتمتة، والحساب المعقد، والحوسبة التوزيعية، ونظرية اللغات والآلات. نظرية قواعد البيانات: وتشمل دراسة هياكل البيانات القاعدية، والاستعلامات، والمعالجة المتعددة المستوى. الشبكات وأمن المعلومات: ويغطي هذا المجال البروتوكولات الشبكية، وأمان المعلومات، وإدارة الشبكات. نظرية اللغات البرمجية: وتشمل دراسة النماذج اللغوية، وتحليل وتصميم اللغات، وتحويل اللغات. نظرية النظم: وتركز على تحليل وتصميم النظم الكبيرة والمعقدة، وتضمن تكامل مكونات النظام وتحديد متطلبات النظام وتصميم الهياكل المناسبة. بالنسبة للسؤال الآخر، فإن فهم أنظمة التشغيل والمواد النظرية في علوم الحاسوب يمكن أن يفرق بين مبرمج جيد ومبرمج ممتاز، لكنه ليس العامل الوحيد. البرمجة مثلا بلغات مثل C و C++ تتطلب فهماً عميقاً للمفاهيم البرمجية والقدرة على كتابة الشيفرة بشكل فعال ومنظم. ومع ذلك، فهم كيفية تفاعل البرامج مع النظام التشغيل وكيفية استخدام الموارد بشكل فعال يمكن أن يجعل فارقاً في أداء المبرمج وفي جودة البرمجيات التي يقوم بتطويرها. وهذه بعض المصادر التي يمكن أن تفيدك لفهم أنظمة التشغيل:
  9. في حالة ما كنت تقصد بالموقع أكاديمية حسوب، فهي بالفعل تتضمن مقالات في هذا السياق والمجال، هذه بعض المصادر التي يمكنك الاطلاع عليها: كما يوجد مقال شامل على مدونة مستقل أتمنى أن يفيدك: https://blog.mostaql.com/content-writing-skills/
  10. من أجل جلب بيانات مستخدم محدد من Firebase في Flutter، يمكنك استخدام Firebase Realtime Database أو Firebase Firestore باستخدام حزمتي `firebase_database` أو `cloud_firestore`. مثلا باستخدام باستخدام Firebase Firestore سيكون بهذا الشكل: import 'package:flutter/material.dart'; import 'package:cloud_firestore/cloud_firestore.dart'; class UserScreen extends StatelessWidget { final String userId; UserScreen({required this.userId}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('User Data'), ), body: FutureBuilder<DocumentSnapshot>( future: FirebaseFirestore.instance.collection('users').doc(userId).get(), builder: (context, AsyncSnapshot<DocumentSnapshot> snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return Center(child: CircularProgressIndicator()); } if (snapshot.hasError) { return Center(child: Text('Error: ${snapshot.error}')); } if (!snapshot.hasData || !snapshot.data!.exists) { return Center(child: Text('User not found!')); } var userData = snapshot.data!.data() as Map<String, dynamic>; return ListView( children: [ ListTile( title: Text('Name: ${userData['name']}'), ), ListTile( title: Text('Email: ${userData['email']}'), ), // يمكنك عرض المزيد من البيانات هنا ], ); }, ), ); } } ففي هذا المثال، يتم تحميل بيانات المستخدم المحدد (باستخدام `userId`) من مجموعة المستخدمين في Firebase Firestore، ثم يتم عرضها في واجهة المستخدم باستخدام `ListView`. يرجى استبدال `users` بمسار مجموعة المستخدمين الخاصة بك في Firebase Firestore، لكن يجب على المستخدم الذي تحاول جلب بياناته أن يكون لديه إذن الوصول إلى البيانات في قاعدة البيانات وإلا فلن يتم الأمر.
  11. يبدو أنك نسيت إرفاق السؤال بشكل جيد، من فضلك أرفق السؤال كاملا كي أتمكن من فهمك ومساعدتك.
  12. في بعض الأحيان قد لا يعمل معك التطبيق وانت تستخدم خدمات Firebase وذلك لان المده المسموح بها قد انتهت ولتفادي هذة المشكلة يمكنك الانتقال الى حسابك في الfirebase ومنها اختيار cloud firebase ( يمكنك الوصول اليه من الشريط العلوي ) ومن rules سوف تشاهد المدة الخاصه بالتطبيق يمكنك رفعها. العديد من المشاكل قد تكون السبب وهذا عادي، يمكنك التحقق من إعدادات التوجيه Domain Verification بحيث يجب أن تقوم بإضافة نطاق تطبيقك إلى إعدادات التوجيه في Firebase. هذا يتطلب التحقق من ملكية النطاق وتفعيله. ويساعد هذا الإجراء كثيرا في ضمان توافق خدمات Firebase مع تطبيقك عندما يتم نشره. الخطوة التالية هي إضافة مفتاح SHA-1 الخاص بتطبيقك على Google Play إلى إعدادات مشروعك في Firebase. وهذا مهم لتمكين التواصل الآمن بين تطبيقك وخدمات Firebase على Google Play. قد تحتاج أيضا إلى ضبط بعض القواعد في لوحة التحكم في Firebase للسماح بالوصول من تطبيقك. هذا يشمل إعداد قواعد الأمان والوصول بحسب احتياجات تطبيقك لضمان استخدامها بطريقة آمنة وفعالة. كما يجب أن تتأكد من أن جميع مفاتيح الواجهة البرمجية المستخدمة في تطبيقك مفعلة وصحيحة. قد تكون هذه المفاتيح مطلوبة لتمكين بعض الخدمات في Firebase مثل التحليلات وتخزين البيانات.
  13. السبب وراء وجود مجلد سطح المكتب في OneDrive هو تفعيل المزامنة التلقائية بين حسابك على OneDrive وجهاز الكمبيوتر الخاص بك. فعندما تقوم بتفعيل المزامنة التلقائية، يتم نسخ ومزامنة الملفات والمجلدات من حاسوبك إلى حسابك على OneDrive والعكس، وهذا يشمل أيضًا مجلد سطح المكتب. لكن في حالة ما إذا كنت تفضلين عدم مشاركة مساحة القرص الصلب مع OneDrive أو تفضلين حفظ ملفات سطح المكتب محليًا، يمكنك إيقاف المزامنة لمجلد سطح المكتب من إعدادات OneDrive على جهاز الكمبيوتر الخاص بك. هذا من خلال فتح تطبيق OneDrive على جهاز الكمبيوتر، ثم النقر فوق "المزامنة" أو "الإعدادات" والبحث عن الإعدادات التي تسمح لك بتحديد المجلدات التي ترغبين في مزامنتها. وهناك يمكنك إلغاء تحديد مجلد سطح المكتب لمنع مزامنته مع OneDrive والاحتفاظ به محليًا على القرص الصلب الخاص بك.
  14. لا شكر على واجب أخي، في الخدمة.
  15. نعم، يمكنك ضبط إعدادات اللغة والموقع (Locale settings) في جهازك لتكون متوافقة مع القيم التي تتوقعها من برنامجك دون الحاجة لاستخدام `Locale.US` في الكود. في نظام التشغيل Windows مثلا يمكنك فعل ذلك عن طريق اتباع الخطوات التالية: فتح "Control Panel" (لوحة التحكم) من قائمة "Start" (ابدأ). اختيار "Clock and Region" (الساعة والمنطقة). النقر على "Region" (المنطقة). الانتقال إلى علامة التبويب "Formats" (تنسيقات). اختيار اللغة والتنسيق المطلوب من قائمة "Format" (التنسيق). أخبرني في حال واجهتك أي مشكلة أخرى.
  16. يجب أن تقوم أولا بإعداد متغيرات البيئة الخاصة بالنظام. فإن كنت تستخدم نظام الويندوز، يمكنك الوصول إلى متغيرات البيئة عن طريق القيام بالتالي: اضغط على زر البدء في نظام التشغيل Windows. قم بالبحث عن "متغيرات البيئة" أو "Edit the system environment variables" واضغط عليها. في نافذة متغيرات النظام، انقر على الزر "متغيرات البيئة". ستظهر لك نافذة تحتوي على الـ"User variables" (المتغيرات الخاصة بالمستخدم) و "System variables" (المتغيرات النظام). اختر "System variables" وانقر على زر "New" لإضافة متغير جديد. أما إذا كنت تعمل على نظام تشغيل آخر، فيمكنني أن أقدم لك الإرشادات المناسبة له.
  17. العديد من الأسئلة تطرح في مقابلات العمل، ولا يمكن توقعها كاملة، فمثلا حينما نتحدث حول البرمجة الديناميكية فهي تقنية حاسوبية تُستخدم لحل مجموعة متنوعة من المشاكل التي تتطلب تقسيمها إلى مشاكل أصغر وحلها بشكل تدريجي، مع استخدام التخزين المؤقت للنتائج الفرعية لتحسين الأداء. هذه التقنية غالبًا ما تُستخدم في مجموعة متنوعة من المجالات بما في ذلك العلوم الحاسوبية، والهندسة، وعلوم البيانات، والرياضيات، والاقتصاد، وغيرها. أبرز تلك المشكلات: مشكلة الرقم الثلاثي الأمثل (Optimal Binary Search Tree). مشكلة السلسلة الأمثل (Longest Common Subsequence). مشكلة القطع الأمثل (Cutting Stock Problem). مشكلة البائع المتجول (Travelling Salesman Problem). مشكلة التحميل الأمثل (Knapsack Problem). مشكلة تحليل الأمثل (Parsing Problem). مشكلة الأعمدة الرأسية (Vertical Sticks Problem). مشكلة ترميز هوفمان (Huffman Coding Problem). مشكلة القص المشترك (Maximum Cut Problem). مشكلة تقسيم الصفوف (Partition Problem). فمثلا تطرقنا من قبل حول مشكلة البائع المتجول هنا في الأكاديمية ويمكنك الاطلاع عليها من خلال هذا المصدر:
  18. لا مشكلة، سأشرح لك، قبل أي شيء آخر، يجب عليك التسجيل في مزود خدمة الدفع الإلكتروني الذي يوفر دعما لبطاقات الائتمان المختلفة مثل فيزا وماستركارد، بعض المزودين الشهيرين شاملين لعدة بلدان مثل Stripe و PayPal. يجب عليك التحقق من إمكانية دعم بلدك وطرق الدفع المختلفة لها. فبعد التسجيل في مزود خدمة الدفع مثل Stripe أو PayPal ستحصل على مفاتيح API الخاصة بك. ستجدها غالبا في لوحة التحكم الخاصة بالمزود وتتضمن هذه المفاتيح مفتاح Publishable API ومفتاح Secret API. هنا نأتي لمرحلة إعداد نموذج الدفع، بحيث يمكنك إنشاء نموذج دفع بسيط باستخدام HTML و PHP. على سبيل المثال: <form action="process_payment.php" method="POST"> <input type="text" name="card_number" placeholder="Card Number"> <input type="text" name="expiry_date" placeholder="Expiry Date"> <input type="text" name="cvv" placeholder="CVV"> <button type="submit">Pay Now</button> </form> ثم ننتقل إلى مرحلة ربط النموذج بواجهة برمجة التطبيقات (API) لمزود الدفع: هنا نذهب إلى ملف PHP (مثلا process_payment.php)، يمكنك استخدام مكتبة Stripe لربط النموذج بواجهة API لـ Stripe. بهذا الشكل: <?php require_once('vendor/autoload.php'); // تحميل ملفات Stripe \Stripe\Stripe::setApiKey('your_secret_key'); if ($_SERVER['REQUEST_METHOD'] == 'POST') { $token = $_POST['stripeToken']; $charge = \Stripe\Charge::create([ 'amount' => 1000, // المبلغ بالسنت 'currency' => 'usd', 'source' => $token, 'description' => 'Payment for services' ]); // يتم معالجة الدفع بنجاح echo 'Payment processed successfully'; } ?> بعد الانتهاء من ربط النموذج بمزود الدفع، يجب اختبار العملية للتأكد من أن كل شيء يعمل كما هو متوقع، وكما نعلم يوفر معظم مزودي الخدمات وسائل للاختبار مثل بيئات اختبار محاكاة الدفع، وبعد التأكد من أن كل شيء يعمل بشكل صحيح، يمكنك نشر تغييراتك على موقعك الإلكتروني الحي. لكن يجب عليك متابعة أداء نظام الدفع الخاص بك بانتظام وتطويره وتحسينه بمرور الوقت، مع مراعاة أي تغييرات في متطلبات الأمان أو القوانين، هذا كله من أجل حماية بيانات العملاء وتجنب المشاكل القانونية التي قد تطرأ.
  19. لعمل ذلك يجب استخدام هذا الكود: <button class="btn btn-danger confirm" id="delete-row"> <a href="delete.php?deleteid='.$id.'" class="text-light text-decoration-none">حذف </a> </button> بحيث يستخدم الكود مع مكتبة SweetAlert2. في الزر "حذف"، نقوم بإضافة الكلاس "confirm" لتفعيل السيناريو الذي يتطلب تأكيدًا قبل الحذف، ويُمكنك استخدام الرابط المحدد في الزر لتوجيه المستخدم إلى الصفحة "delete.php" للقيام بعملية الحذف بعد التأكيد. هناك طريقتين للقيام بذلك، أولهما باستخدام عنصر زر مباشرة بهذا الشكل: <button class="btn btn-danger confirm" id="delete-row" onclick="confirmDelete('delete.php?deleteid=<?php echo $id; ?>')">حذف</button> الثانية باستخدام تابع: <a href="#" class="btn btn-danger confirm" id="delete-row" data-id="<?php echo $id; ?>">حذف</a> ثم يمكن استخدام السكريبت التالي للتعامل مع الأحداث وعرض رسالة التأكيد: <script> document.addEventListener('DOMContentLoaded', function() { const deleteButtons = document.querySelectorAll('.confirm'); deleteButtons.forEach(button => { button.addEventListener('click', function(e) { e.preventDefault(); const id = this.getAttribute('data-id'); Swal.fire({ title: 'هل أنت متأكد؟', text: "لن تتمكن من التراجع عن هذا الإجراء!", icon: 'warning', showCancelButton: true, confirmButtonColor: '#3085d6', cancelButtonColor: '#d33', confirmButtonText: 'نعم، احذفه!' }).then((result) => { if (result.isConfirmed) { window.location.href = 'delete.php?deleteid=' + id; } }); }); }); }); </script> فهذا السكريبت يضيف مستمعين للأحداث إلى جميع الأزرار التي تحتوي على الكلاس "confirm". وعند النقر على أي من هذه الأزرار، يتم عرض رسالة تأكيد من خلال مكتبة SweetAlert2، وفي حالة الموافقة، يتم توجيه المستخدم إلى صفحة "delete.php" مع معرف السجل المراد حذفه.
  20. الكود عندي يعمل سواء باستيراد المكتبة أو من دونها، فالمكتبة `java.util.Locale` فهذه المكتبة تستخدم بشكل رئيسي لإعدادات اللغة والمنطقة وتنسيق النصوص. فعند كتابة الرقم العشري في Java باستخدام `Scanner`، يمكننا استخدام `()nextDouble` لقراءة الأرقام العشرية من المدخل القياسي، وهذا لا يتأثر بأي استيراد لمكتبة `Locale`. وهذا ما نراه واضحا من خلال تشغيلي لكلا البرنامجين، إذ يظهر أنه يعمل بهذا الكود: import java.util.Scanner; public class Firstproject1 { public static void main(String[] args) { Scanner in = new Scanner (System.in); System.out.println("Enter Your Height: "); double Height = in.nextDouble(); System.out.println("Your height is: " +Height); } } أما بالنسبة لرسالة الخطأ التي ظهرت لك من نوع "java.util.InputMismatchException" فهي تحدث عندما يحاول المستخدم إدخال نوع بيانات لا يتوافق مع النوع المتوقع من قبل البرنامج. في هذه الحالة، الخطأ يحدث عندما تحاول قراءة الرقم العشري باستخدام `()nextDouble` ولكن الإدخال الذي تم إرفاقه قد لا يكون رقمًا عشريًا صالحًا، وربما يكون ذلك بسبب إدخال نصي بدلاً من رقم.لحل هذه المشكلة، يمكن التحقق من نوع الإدخال المدخل قبل قراءته. يمكن استخدام دالة `()hasNextDouble` للتحقق مما إذا كان الإدخال يمكن تحويله إلى رقم عشري أم لا. بهذا الشكل: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); System.out.println("Enter Your Height: "); // التحقق مما إذا كان الإدخال يمكن تحويله إلى رقم عشري while (!in.hasNextDouble()) { System.out.println("Invalid input. Please enter a valid number."); in.next(); // تجاهل الإدخال غير الصالح وقراءة الإدخال التالي } double height = in.nextDouble(); System.out.println("Your height is: " + height); } } فهنا إذا كان الإدخال غير صالح (أي غير رقمي)، سيتم عرض رسالة خطأ وطلب إدخال صالح. أما بالنسبة لمثالك فالواضح أنك قمت بإدخال الرقم 5.5 وليس نصا أو رقما خاطئا، والسبب في ظهور المشكلة يكمن في أن السبب في ذلك هو استخدام الفارق في تنسيق الأرقام العشرية. ففي بعض البلدان، يتم استخدام الفارق أي النقطة "." كمحدد للأرقام العشرية، بينما في بلدان أخرى تستخدم "," كمحدد للأرقام العشرية.لحل هذه المشكلة، يمكننا تعيين المحدد الصحيح للأرقام العشرية باستخدام `Locale` بشكل صريح. على سبيل المثال، يمكنك تعيين `Locale.US` الذي يستخدم "." كمحدد للأرقام العشرية بدلاً من ",". بهذا الشكل: import java.util.Locale; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); in.useLocale(Locale.US); // تعيين المحدد الصحيح للأرقام العشرية System.out.println("Enter Your Height: "); // التحقق مما إذا كان الإدخال يمكن تحويله إلى رقم عشري while (!in.hasNextDouble()) { System.out.println("Invalid input. Please enter a valid number."); in.next(); // تجاهل الإدخال غير الصالح وقراءة الإدخال التالي } double height = in.nextDouble(); System.out.println("Your height is: " + height); } } فبتعيين `Locale.US`، يجب أن يتم قبول 5.5 كرقم عشري صالح دون وجود أخطاء.
  21. ليس هذا فقط، فإطار العمل PyTorch يستخدم للتعامل مع الشبكات العصبية الاصطناعية، PyTorch هنا يساعدنا في تدريب الأجهزة الحاسوبية (المعروفة باسم النماذج) لفهم الصور والنصوص وحتى التنبؤ بالأحداث. أما مكتبة OpenCV، فهي أداة رائعة للتعامل مع الصور ومقاطع الفيديو. بحيث تتيح إجراء الكثير من العمليات الممتعة، مثل تغيير حجم الصورة، وقصها، وتغيير الألوان، واكتشاف الوجوه. فلو تذكرت كيف تلعب مع الألعاب المصغرة التي تأتي معها مربعات مختلفة الألوان والأشكال، فإن OpenCV تساعد الكمبيوتر على فهم ما هي هذه الأشكال والألوان. وبشكل عام، ولتوضيح الفروق بينهما فلنفترض أن لدينا مجموعة من الصور لقطط وكلاب، ونريد تطوير نظام لتصنيف الصور إما كقطة أو ككلب. إذا أردت استخدام PyTorch: سنستخدمه لتدريب نموذج تعلم آلي يتعرف على الصور ويصنفها بناءً على محتواها. بحيث نقوم بتحميل الصور وتحويلها إلى تنسيق مناسب للتدريب، ثم نستخدم PyTorch لبناء وتدريب النموذج على هذه الصور. أما إذا أردت استخدام OpenCV: سنستخدمه لمعالجة الصور مباشرة، مثل تغيير حجم الصور، وتحويلها إلى الأبيض والأسود، واستخراج الميزات المهمة منها مثل الأشكال والهياكل. لكننا لن نقوم ببناء نموذج للتعلم من هذه الصور، بل سنستخدمها مباشرة في التحليل والاستخدامات الأخرى. يمكنك التعمق في هذا الأمر من خلال تصفح هذه المصادر:
  22. للأسف، في حالة تغيير package name لتطبيق ما، فلن تكون قادرًا على تحديث التطبيق الموجود في المتاجر سواء (Google Play وApp Store) مباشرة ولحل المشكل سيتعين عليك إصدار تطبيق جديد بالـ package name الجديد ورفعه كتطبيق منفصل في المتجر. ولتوضيح الأمر، فما أقصده هو أنه سيتعين عليك إصدار التطبيق الجديد كنسخة جديدة في المتجر والترويج له كتطبيق مستقل، وستبدأ من جديد بالتحميلات والتقييمات. أما بالنسبة لملف KEY STORE، فستحتاج إلى استخدام نفس الملف KEY STORE الذي استخدمته لتوقيع التطبيق القديم، أو يمكنك إنشاء مفتاح توقيع جديد واستخدامه لتوقيع التطبيق الجديد. لكن يجب أن يكون لديك نسخة احتياطية من ملف KEY STORE الخاص بالتطبيق القديم لضمان قدرتك على تحديث التطبيقات الموجودة في المتاجر في المستقبل، ويجب الحفاظ على هذا الملف بأمان وهذه النقطة برأيي أكثر من ضرورية.
  23. لا، ليس من الضروري أن يعمل الجهاز الذي يحتوي على ملف HTML لموقع الويب لمدة 24 ساعة كاملة حتى يعمل الموقع بالعكس، يمكن للموقع أن يكون متاحا على الإنترنت دون الحاجة لتشغيل الجهاز المضيف للملف HTML طوال الوقت، هذا بفضل خدمات استضافة الويب التي تعمل على السيرفرات المخصصة لهذا الغرض. يمكنني أن أشرح لك ذلك، فمن خلال خدمات الاستضافة المشتركة مثلا يمكنك استضافة موقعك على سيرفرات مشتركة مع مواقع أخرى بحيث تتم إدارة هذه السيرفرات بواسطة شركة الاستضافة، وهي متاحة على مدار الساعة دون الحاجة لجهاز خاص بك. كما توجد خوادم VPS (Virtual Private Servers) بحيث توفر هذه الخوادم الافتراضية الخاصة بالتمويل المشترك مستوى أعلى من الأداء والتحكم مقارنة بالاستضافة المشتركة، حيث يتم تخصيص موارد معينة للموقع. وهذه مراجعة قيمة لأهم خدمات الاستضافة وأفضلها:
  24. هناك عدة طرق لتحقيق تلك النتيجة باستخدام CSS مثلا هنا قمت باستخدام الخاصية `::before` وتكون بهذا الشكل: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Border Left and Padding Example</title> <link rel="stylesheet" href="styles.css"> <!-- ربط ملف الـ CSS --> </head> <body> <div class="container"> <div class="content"> <p>This is a text inside the container.</p> </div> </div> </body> </html> وهذا ملف ال CSS (styles.css): .container { padding: 20px; /* تعيين التباعد للعنصر الأب */ } .content { position: relative; /* جعل العنصر يحتوي على عناصر متوازية */ } .content::before { content: ''; /* إنشاء عنصر قبل العنصر الفرعي */ position: absolute; /* تحديد الموقع المطلوب */ left: 0; /* تحديد الموضع من اليسار */ top: 0; /* تحديد الموضع من الأعلى */ height: 100%; /* تعيين الارتفاع ليمتد على ارتفاع العنصر الفرعي */ width: 5px; /* تعيين العرض للحد الأيسر */ background-color: #000; /* تعيين لون الحد */ } ففي هذا المثال يتم تعيين `position: relative` على العنصر الفرعي لجعل `::before` يعتمد على موقعه. ثم يتم استخدام `position: absolute` لتحديد موقع الحد الأيسر بالنسبة إلى العنصر الفرعي، وتحديد عرضه ولونه على حسب الرغبة.
  25. لا يمكن الإجابة على سؤالك بشكل مباشر، فاختيار اللغة المناسبة لتطوير الواجهات الخلفية للمواقع يعتمد على عدة عوامل مثل مستوى الخبرة الخاص بك أولا واحتياجات المشروع الذي حبذا لو ذكرته كي نفهم في أي اتجاه تسير. فمثلا لغة جافاسكريبت، بإطارات العمل الشهيرة الخاصة بها مثل React.js وAngular.js وVue.js من مميزاتها أنها قوية وواسعة التوافق مع متصفحات الويب، وتفاعلية عالية، وسهلة التطوير. فالمشاريع المناسبة لها مثل تطبيقات الويب الديناميكية وغيرها. أما لغة ال PHP والغنية عن التعريف عبر إطار العمل الشهير Laravel من مميزاتها أنها سهلة التعلم، والتوافق مع مختلف أنظمة إدارة قواعد البيانات، مع وجود مجتمع كبير للدعم والمشاريع الأنسب برأيي هي المواقع الكبيرة والتطبيقات الأكثر تعقيدا التي تتطلب أمانًا وقابلية للتوسع. من المهم أن يتم اختيار اللغة والإطار المناسبين بناء على احتياجاتك الفردية ومتطلبات مشروعك. https://io.hsoub.com/programming/1551-كيف-احدد-لغة-البرمجة-المناسبه
×
×
  • أضف...