-
المساهمات
15399 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
403
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
عليك بتحديد الخلية أو الخلايا التي تريد تنسيقها وتغيير لونها أو لون الخط، ثم اضغط على Conditional Formatting الموجودة في تبويب Home، ثم اختر منها Highlight Cells Rules ثم اختر More Rules كالتالي: ثم اختر Format only cells that contain ثم من الأسهل ستجد قائمة لتحديد هل تريد تنسيق الخلايا التي تحتوي تلك القيمة أو النص وخلافه كالتالي: أنا قمت بإختيار القيمة cell value لأنني أريد تنسيق الخلية التي تقل قيمتها على قيمة أول خلية في العمود C لذلك سأقوم بإختيار less than وفي الحقل الفارغ سأقوم بالضغط عليه ثم اضغط على الخلية التي أريدها كقيمة لتنسيق باقي الخلايا، وهنا بالضغط على الحقل الفارغ ثم ضغط على أول خلية في C كالتالي: بعد ذلك اضغط على Format اوختر التنسيق الذي تريده وليكن لون الخط ثم اضغط على ok للحفظ: وكما ترى الخلية التي قمت بإختيارها أصبح لون الخط أحمر كما حددت:
- 4 تعليقات
-
- conditional
- excel
-
(و 6 أكثر)
موسوم في:
-
بسبب أنه يتم فك التشفير وغالبًا الهارد لديك من نوع HDD وليس SSD، الحل الأسهل هو حذف خاصية التشغير BITLOCKER من على قرص الـ C عليك بتنفيذ الأوامر التالية من خلال منفذ الأوامر ابحثي عن PowerShell في شريط البحث بالويندوز بالأسفل ثم كتابة الأمر التالي: Disable-BitLocker -MountPoint "C:" ثم تنفيذ الأمر التالي: manage-bde -off C: والآن سيتم فك التشفير في الخلفية وعليك الإنتظار وعدم إغلاق الحاسوب لحين الإنتهاء، ولمعرفة نسبة التقدم في عملية فك التشفير قومي بكتابة الأمر التالي: manage-bde -status وبعد الإنتهاء عليك بإعادة تشغيل الحاسوب.
- 10 اجابة
-
- 2
-
-
الملفات التي يتم حفظها باستخدام Multer يتم تخزينها في الذاكرة المؤقتة، والذاكرة المؤقتة هي منطقة تخزين مؤقتة تستخدم لحفظ البيانات التي يتم استخدامها بشكل متكرر، مثل الملفات التي يتم تحميلها من خلال استمارات HTML، وعندما تنتهي جلسة المستخدم أو يتم إعادة تشغيل الخادم، يتم مسح البيانات المخزنة في الذاكرة المؤقتة. وستحتاج إلى تخزين الملفات في موقع دائم عن طريق استخدام نظام ملفات على الخادم الخاص بك أو عن طريق استخدام خدمة تخزين سحابية مثل Amazon S3 أو Google Cloud Storage. عليك بالتالي: إنشاء دليل جديد لحفظ الملفات. منح الخادم الخاص بك حقوق الوصول للكتابة إلى هذا الدليل. تعديل middleware Multer الخاص بك لتخزين الملفات في هذا الدليل. أي إن قمت بإنشاء دليل يسمى "uploads" في جذر موقع الويب الخاص بك، يمكنك تعديل middleware Multer الخاص بك كالتالي: const multer = require('multer'); const storage = multer.diskStorage({ destination: './uploads', filename: (req, file, cb) => { cb(null, file.originalname); } }); const upload = multer({ storage }); ومن المفترض تخزين الملفات التي يتم تحميلها في دليل "uploads" على الخادم الخاص بك. وفي حال ترغب في استخدام خدمة تخزين سحابية، يمكنك استخدام الخطوات التالية: إنشاء حساب في خدمة التخزين السحابية التي تختارها. إنشاء حاوية تخزين جديدة. منح الخادم الخاص بك حقوق الوصول إلى حاوية التخزين. تعديل middleware Multer الخاص بك لتخزين الملفات في حاوية التخزين. مثلاً إن قمت بإنشاء حاوية تخزين تسمى "uploads" في حساب Amazon S3 الخاص بك، عليك تعديل middleware Multer الخاص بك كالتالي: const multer = require('multer'); const s3 = require('aws-sdk').S3; const storage = multer.s3({ s3: new s3({ accessKeyId: process.env.AWS_ACCESS_KEY_ID, secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY, region: 'us-east-1' }), bucket: 'uploads', filename: (req, file, cb) => { cb(null, file.originalname); } }); const upload = multer({ storage });
-
بالنسبة لهواتف الأندرويد عليك استخدام التالي: fb://facewebmodal/f?href=العنوان الذي تريد هنا مثال: <a class="mobile" href="fb://facewebmodal/f?href=https://facebook.com/Microsoft">mobile</a> بالنسبة لنظام iOS عليك باستخدام fb://page/PAGEID كما أخبرتك وبالتالي عليك استخدام جافاسكريبت من أجل معرفة نوع النظام وتوفير الرابط الصحيح.
- 13 اجابة
-
- 1
-
-
حاول تجربة خاصية onFilePicked لحفظ الملفات المحددة، ثم، عند النقر على "إضافة" مرة أخرى، استخدم خاصية getSelectedFiles لاسترداد الملفات المحددة السابقة وعرضها في واجهة المستخدم الخاصة بك. مثال: import 'package:file_picker/file_picker.dart'; void main() { runApp(MyApp()); } class MyApp extends StatefulWidget { @override _MyAppState createState() => _MyAppState(); } class _MyAppState extends State<MyApp> { List<File> _selectedFiles = []; @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: Text("File Picker"), ), body: Center( child: Column( children: [ ElevatedButton( onPressed: () async { // Use `onFilePicked` to save the selected files. _selectedFiles = await FilePicker.pickFiles( // Specify the extensions that you want to allow. allowedExtensions: ['jpg', 'png'], ); }, child: Text("Pick files"), ), Expanded( child: ListView.builder( itemCount: _selectedFiles.length, itemBuilder: (context, index) { // Use `getSelectedFiles` to get the selected files. return ListTile( title: Text(_selectedFiles[index].name), ); }, ), ), ], ), ), ), ); } } عند النقر على "Pick files"، تستخدم خاصية onFilePicked لحفظ الملفات المحددة في قائمة _selectedFiles، ثم، عند النقر على "إضافة" مرة أخرى، تستخدم خاصية getSelectedFiles لاسترداد الملفات المحددة من القائمة، ثم عرض تلك الملفات بعد ذلك في واجهة المستخدم.
-
البرمجة وبرمجة الذكاء الاصطناعي هما مجالان متداخلان، لكنهما مختلفان في جوهرهم. فالبرامجة هي عملية إنشاء وتطوير البرامج الحاسوبية، وتتضمن تحديد المشكلات التي يجب حلها، وتصميم حلول لتلك المشكلات، وكتابة التعليمات البرمجية التي تنفذ تلك الحلول. وبالإمكان تلخيص الفرق بين البرمجة وبرمجة الذكاء الاصطناعي في النقاط التالية: الهدف من البرمجة هو إنشاء برامج قادرة على أداء مهام محددة، والهدف من برمجة الذكاء الاصطناعي هو إنشاء برامج قادرة على التفكير والتعلم مثل البشر. تستخدم البرمجة مجموعة واسعة من التقنيات، بما في ذلك الخوارزميات والبنى البيانات والبرمجة الموجهة للكائنات، وتعتمد برمجة الذكاء الاصطناعي مجموعة من التقنيات الخاصة بالذكاء الاصطناعي، مثل التعلم الآلي والتعلم العميق. تستخدم البرمجة في مجموعة واسعة من المجالات، بما في ذلك تطوير الويب وتطوير الألعاب وتطوير التطبيقات، بينما تستخدم برمجة الذكاء الاصطناعي في مجموعة من المجالات التي تتطلب الذكاء والتعلم، مثل الرؤية الحاسوبية والتعرف على الكلام والتعلم الآلي. وفي البرمجة لا نعتمد على الرياضيات وتحليل البيانات بل أساسيات الرياضيات فقط، أما في برمجة الذكاء الاصطناعي فيتم الإعتماد على الحساب التفاضلي (Calculus) وجبر الخطي (Linear Algebra) والاحتمالات والإحصاء (Probability and Statistics) والرياضيات التفاضلية والمنطق الرياضي (Discrete Mathematics وMathematical Logic)، وهنا توضيح مفصل لذلك: وبإمكانك دخول مجال البرمجة في خلال سنة مثلاً أما مجال الذكاء الاصطناعي فيحتاج إلى دراسة تستمر 3 سنوات على الأقل.
- 3 اجابة
-
- 1
-
-
من الممكن أن الذاكرة العشوائية لديك منخفضة مما يسبب مشكلة عند تشغيل المشروع حيث يستهلك إطار EXPO الذاكرة العشوائية بشكل كبير، لذلك حاول أية برامج أخرى غير ضرورية أثناء العمل على المشروع. من الممكن بناء مشروع React Native بدون EXPO وبذلك تتخلص من تلك المشكلة.
- 3 اجابة
-
- 1
-
-
أولاً وثم أولاً عليك بالتركيز على تعلم الأساسيات والتطبيق على ذلك من خلال نماذج بسيطة لفهم آلية عمل الكود وليس مجرد كتابة الكود، ثم التدرج في مستوى صعوبة المشاريع سواء بتنفيذ المشاريع الموجودة في الدورة، وأيضًا البحث عن مشاريع أخرى للتطبيق عليها فلا تكتفي بما يوجد في أي دورة. ابحث عن مشاريع جافاسكريبت للمبتدئين مثلاً أو مشاريع جافاسكريبت واختر من بين النتائج على اليوتيوب، ونفس الأمر بالإنجليزية JavaScript projects وستجد مشاريع للـ Beginners ومشاريع متوسطة ومتقدمة. على الأقل يجب تنفيذ 3 مشاريع من خلال جافاسكريبت مستوى مبتدأ ومتوسط ومتقدم، أي كلما تقدمت في الدورة ابحث عن مشروع في البداية ثم في المنتصف ثم في النهاية. ولا تقلق في حال وجدت أشياء جديدة لم تتعرض إليها في تلك المشاريع فذلك هو المطلوب، وحاول تنفيذ المشروع بمفردك أولاً ثم مشاهدة الشرح أو مشاهدة الشرح لتنفيذ جزء معين ثم الاستكمال المهم هو المحاولة في البداية. ولا تشغل بالك بجودة الكود طالما أنه يؤدي نفس الغرض لكن بالطبع عليك معرفة الطريقة الصحيحة لكتابة الكود وإذا وجدت طريقة أفضل وأٍسهل من خلال الشرح حاول تطبيقها لكن ذلك لا يعني أن تعيد ما كتبته من البداية في حال كنت تقوم بالتنفيذ بمفردك.
- 4 اجابة
-
- 1
-
-
بالطبع يمكنك إنشاء تطبيق مماثل من خلال Flutter، وفلاتر هو إطار عمل مفتوح المصدر ومتعددة المنصات، مما يعني أنه يمكنك استخدامه لإنشاء تطبيقات تعمل على أجهزة Android و iOS. من خلال استخدام API وAPI هي اختصار لـ Application Programming Interface، أي طريقة للتواصل بين تطبيقات مختلفة، وهناك العديد من API المتاحة لتطبيقات حجوزات السفر، مثل API الخاص بـ Google Hotels API و API الخاص بـ Booking.com، أو Expediو Hotels.com وغيرهم. ونفس الأمر بالنسبة لرحلات الطيران. هناك العديد من الطرق للربح من تطبيق حجوزات السفر، وإحدى الطرق هي الحصول على عمولة من الفنادق أو شركات الطيران عند حجز المستخدمين، ويمكن أيضًا الحصول على الربح من خلال عرض الإعلانات داخل التطبيق. أيضًا بعض التطبيقات تقدم خدمات إضافية للمستخدمين مقابل اشتراك شهري أو سنوي، أي خدمات وميزات خاصة. ولربط طريقة الربح بتطبيقك، تحتاج إلى إنشاء نظام أساسي لدفع الأموال، ويتوفر العديد من الأنظمة الأساسية المتاحة، مثل Stripe و PayPal، بمجرد إنشاء نظام أساسي لدفع الأموال، تحتاج إلى ربطه بـAPI الخاص بتطبيقك. عندما ينقر المستخدم على فندق أو شركة طيران، ستحتاج إلى إرسال طلب إلى API الخاص بتطبيقك، وسيتضمن الطلب المعلومات عن الفندق أو شركة الطيران، مثل السعر وتفاصيل الحجز، وسيحتاج API الخاص بتطبيقك إلى إرسال ذلك الطلب إلى نظام الدفع، وإذا تم الدفع بنجاح، فسيتم إرسال إشعار إلى المستخدم. وبالطبع عند الحجز من خلالك يكون هناك كود أو id خاص بك من أجل أن يتم معرفة أن ذلك المستخدم قد قام بالحجز من خلالك أي أنك وسيط ثم تحصل على عمولة من الفندق. يدخل المستخدم إلى التطبيق ويحدد وجهته. يقوم التطبيق بإرسال طلب إلى API الخاص بتطبيقك للحصول على قائمة الفنادق والرحلات الجوية المتاحة. يعرض التطبيق قائمة الفنادق والرحلات الجوية للمستخدم. يمكن للمستخدم مقارنة الأسعار وتفاصيل الحجز. إذا وجد المستخدم فندقًا أو رحلة جوية مناسبة، فيمكنه النقر عليها لتأكيد الحجز. يقوم التطبيق بإرسال طلب إلى نظام الدفع لمعالجة عملية الدفع. إذا تم الدفع بنجاح، فسيتم إرسال إشعار إلى المستخدم.
-
الأسئلة الإختبارية عليك محاولة حلها بنفسك لكي تحققي استفادة والأمر سهل أنتِ بحاجة إلى تعلم أساسيات بايثون وستصبحي قادرة كتابة البرنامج البسيط المطلوب منك. وسأوضح لك الخطوات التي عليها إتباعها: تعريف الـ function باسم sum_even_numbers. إنشاء متغير total_sum لتخزين مجموع الأرقام الزوجية. دخول في حلقة while True تستمر حتى يقوم المستخدم بإدخال "done". استخدام input لطلب إدخال المستخدم. التحقق إذا كان المدخل هو "done" بغض النظر عن حالة الأحرف الكبيرة أو الصغيرة باستخدام lower()، إذا كان الشرط صحيحًا، سيتم الخروج من الحلقة باستخدام break. استخدام try و except للتحقق مما إذا كان المدخل عبارة عن رقم صالح أم لا، وإن كان الإدخال صالحًا، سيتم تحويله إلى عدد صحيح باستخدام int() والتحقق مما إذا كان العدد زوجيًا باستخدام العبارة number % 2 == 0. إذا كان العدد زوجيًا، سيتم إضافته إلى المجموع total_sum، وإلا سيتم طباعة رسالة تذكير بإدخال رقم زوجي. إن لم يكن المدخل عبارة عن رقم صالح، سيتم طباعة رسالة تذكير بإدخال رقم صالح. بعد الانتهاء من الحلقة، سيتم طباعة مجموع الأرقام الزوجية. يتم استدعاء الـ function sum_even_numbers() لبدء التنفيذ. مصادر لتعلم بايثون: https://wiki.hsoub.com/Python دروس ومقالات متنوعة حول لغة بايثون
-
مجلد المشروع لديك باسم omar على ما أعتقد، عليك بالضغط بزر الفارة الأيمن على واجهة لاراجون ثم اختر www وهو مجلد الجذر الذي به المشاريع، وستظهر لك قائمة بالمشاريع به اضغط على اسم المشروع وسيتم فتحه في المتصفح. وإذا لم يتم تشغيله فهناك مشكلة بالمشروع إذن، حاول إغلاق الخادم وقاعدة البيانات من خلال الضغط على إيقاف ثم تشغيل مرة أخرى.
-
ستحتاج إلى استخدام إضافة مثل إضافة Admin User Activity Log أو ما شابه، والإضافة توفر لك التالي: أي مستخدم أضاف أي منتج. أي مستخدم حذف أي فئة. أي مستخدم قام بتحرير أي مراجعة. أي مستخدم وافق على أي عميل. أي مستخدم شاهد أي طلب. كم عدد المنتجات التي أنشأها كل مستخدم في إطار زمني معين. كم عدد الفئات التي أنشأها كل مستخدم في إطار زمني معين. والمزيد... وهناك إضافة أخرى باسم Admin Monitor - Monitor Admin Activities لكن بتكلفة أعلى. وهناك إضافة مجانية باسم Admin Log حاول تجربتها.
- 6 اجابة
-
- 1
-
-
صحيح Google Translate API لا يعمل مع Webpack بشكل افتراضي، وذلك لأن API يتطلب استدعاءات HTTP خارجية، والتي لا يمكن تنفيذها من داخل Webpack. هناك عدة طرق لاستخدام Google Translate API مع Webpack، وأحد الخيارات هو استخدام بديل API مجاني ومفتوح المصدر مثل Translateer. حيث Translateer هو API ترجمة يعتمد على Puppeteer، وهو إطار عمل لاختبار الويب يسمح بالتحكم في متصفح الويب من خلال JavaScript. ولاستخدام Translateer مع Webpack، يمكنك تثبيت المكونات الإضافية التالية: npm install translateer-webpack-plugin puppeteer-core ثم إضافة الكود التالي إلى ملف webpack.config.js: const TranslateerPlugin = require('translateer-webpack-plugin'); module.exports = { plugins: [ new TranslateerPlugin({ // API key key: 'YOUR_API_KEY', // Language pair from: 'en', to: 'ar', }), ], }; وذلك سينشئ محولًا يترجم النص من الإنجليزية إلى العربية، وباستطاعتك استخدامه لترجمة أي نص في مشروعك باستخدام التعبير التالي: const translatedText = await Translateer.translate(text, 'ar'); خيار آخر هو استخدام بديل API غير مجاني مثل Google Cloud Translation API. وGoogle Cloud Translation API هو API ترجمة مدفوع من Google، ويوفر API ترجمة أكثر دقة وسرعة من Translateer. وتستخدم Google Cloud Translation API مع Webpack من خلال تثبيت التالي: npm install @google-cloud/translate ثم يمكنك إضافة الكود التالي إلى ملف webpack.config.js: const { Translate } = require('@google-cloud/translate'); module.exports = { plugins: [ new TranslatePlugin({ // Project ID projectId: 'YOUR_PROJECT_ID', // Key file keyFile: './path/to/key.json', // Language pair from: 'en', to: 'ar', }), ], }; ونفس الأمر سينشئ محولًا يترجم النص من الإنجليزية إلى العربية باستخدام Google Cloud Translation API، وتستطيع استخدامه لترجمة أي نص في مشروعك باستخدام التعبير التالي: const translatedText = await Translate.translate(text, 'ar');
-
دائمًا ما أنصحك بعدم الإنتقال مباشرًة إلى تعلم React.js والصبر والتأني في تعلم جافاسكريبت بشكل جيد، وعدم الإكتفاء بالأساسيات فقط بل التعمق وتنفيذ مشروع كبير وذلك بفرض أن لديك الوقت لذلك فلا يوجد نصيحة واحدة قابلة للتطبيق على الجميع. والمشروع الذي اًنصح به هو مشروع single page app من خلال جافاسكريبت وستتعلم الكثير خلال تنفيذه، وتستطيع البحث على اليوتيوب عن ذلك وبالطبع المشروع يجب أن يتم به استخدام API. وبإمكانك أيضًا التدرج في مستوى صعوبة المشاريع، ابحث عن مشروع بسيط ثم متوسط ثم مشروع single page app على اليوتيوب من خلال كتابة مشاريع جافاسكريبت أو js project وأنا أفضل بالإنجليزية إذا استطعت. وتلك مدارس فالبعض قد ينصحك بتعلم الأساسيات ثم الإنتقال مباشرًة لـ React لكن تلك التجربة لا أنصح بها. بالطبع لا يوجد شخص على علم بجميع تفاصيل اللغة لكن يوجد مبرمج متمكن من اللغة من خلال تعلمه للأساسيات بشكل قوي والتطبيق عليها والبحث والقراءة عن ما لا يفهمه أو يعرفه وأيضًا سنوات الخبرة والمشاريع التي عمل عليها يتعلم من خلالها ما لا يمكن تعلمه من خلال مشاهدة بعض الشروحات. وجميع المبرمجين يعتمدوا على البحث بشكل كبير من أجل تذكر أو معرفة كيفية تنفيذ أمر معين فهو لن يتذكر كل شيء وأيضًا الكثير من المشاكل تم حلها من قبل، وبخصوص تلك النقطة الأفضل التفكير في الحل بمفردك وتفقد سبب المشكلة قبل البحث إن كانت في الكود الخاص بك وليس مشكلة في مكتبة مثلاً. وبالطبع المشاريع المتقدمة تتعلم من خلالها الكثير مقارنًة بالمشاريع البسيطة لذلك أخبرتك بتنفيذ مشروع مثل single page app، ولكن كن رحيمًا بنفسك ولا ترهقها بالتفكير الزائد فأنت ما زلت تتعلم ولا مشكلة في كونك لا تعلم لكنك تتعلم وتحاول. لا أنصحك إطلاقًا بالإبتعاد لمدة 3 أشهر ستنسى ما تعلمته في البداية عليك بتثبيت ذلك من خلال المشاريع واكتساب الخبرة لذلك عليك بتقسيم الوقت ما بين تنفيذ مشاريع وما بين تعلم مهارة الـ Problem Solving إدارة الوقت هي أهم شيء. ولكن هل أنت تعلم مهارت الـ Problem Solving من أجل مقابلة العمل أم ماذا؟ فإذا كنت كذلك فمن الأفضل لك حل المسائل من على موقع leetcode وأيضًا البدء بالحل بعد الإنتهاء من مسارك البرمجي وتعلم اللغات والتقنيات المطلوبة للوظيفة التي تريدها أي عند بدء رحلة التقديم على الوظائف مباشرًة
- 4 اجابة
-
- 1
-
-
لو اتجهت لبرنامج vscode وفتحت ملف ستجد بالأسفل الترميز الخاص بقراءة الحروف في اللغات، ويمكنك تغيير الترميز. حيث يُستخدم ترميز UTF-8 لتمثيل مجموعة واسعة من الأحرف، بما في ذلك الأحرف من اللغات الآسيوية والأفريقية، يجعله ترميزًا شائعًا للاستخدام مع الملفات التي قد تحتوي على أحرف من لغات متعددة. لذلك في أي برنامج أو قاعدة بيانات مثلاً، عليك بإختيار الترميز المناسب من أجل دعم حروف اللغة التي تريد استخدامها.
-
الكود الخاص بك هو خاص بسرقة بيانات أشخاص وخداعهم بأن الصفحة خاصة بالعملات الإلكترونية أو ما شابه، لا يمكن مساعدتك بخصوص تلك الأمور، إذا كنت تريد التدرب وإنشاء المشاريع فعليك بالبحث عن مشروع مناسب. أرجو عدم نشر سؤال آخر يتعلق بمثل تلك الأمور وشكرًا لتفهمك.
- 7 اجابة
-
- 1
-
-
دالة searchProducts تقوم بقراءة القيمة المدخلة في حقل البحث ثم البحث عن المنتجات المتطابقة بناءًا على اسم المنتج أو تصنيف المنتج، ثم بتحديث الجدول لعرض نتائج البحث المطابقة من خلال المصفوفة في متغير searchResults والناتجة عن الميثود filter. عند تغيير وضع البحث بين "اسم المنتج" و "تصنيف المنتج" بناءًا على قيمة searchmood، يتم تغيير وضع البحث ونص العنصر المرشح للبحث في الواجهة.
- 4 اجابة
-
- 1
-
-
تابع الإجابة على سؤالك هنا، وفي حال استمرت المشكلة أخبرني:
- 7 اجابة
-
- 1
-
-
المشكلة هي أنك قمت بتحديد دالة باسم searchdata وهي خاصة بعملية البحث، لكنها غير موجودة في ملف script.js هل قمت بحذفها؟ علي أي حال استخدم الدالة التالية للبحث وتحديث الجدول بناءًا على البحث: function searchProducts() { let searchTerm = document.getElementById('search').value.toLowerCase(); let searchResults = []; if (searchmood === 'اسم المنتج') { searchResults = dataPro.filter(product => product.title.toLowerCase().includes(searchTerm)); } else { searchResults = dataPro.filter(product => product.category.toLowerCase().includes(searchTerm)); } console.log(searchResults); let table = ''; for (let i = 0; i < searchResults.length; i++) { table += `<tr class="trclass"> <td>${i + 1}</td> <td class="tdclass">${searchResults[i].title}</td> <td class="tdclass">${searchResults[i].price}</td> <td class="tdclass">${searchResults[i].taxes}</td> <td class="tdclass">${searchResults[i].ads}</td> <td class="tdclass" id="sump"> - ${searchResults[i].discount}</td> <td class="tdclass" id="sumpaq">${searchResults[i].total}</td> <td class="tdclass">${searchResults[i].category}</td> <td><button id="update" onclick="updateData(${i})" >تعديل <i class="fa-solid fa-pen fa-2xs"></i></button></td> <td><button id="delete" onclick="deleteData(${i})" >حذف <i class="fa-solid fa-trash-can fa-3xs"></i></button></td> </tr>`; } document.getElementById('tbody').innerHTML = table; } لكن عليك تعديل قيمة السطر التالي وحذف المسافة فعند استخدام === أو == يجب أن يكون النص متطابق لذلك نحذف المسافات لكي لا تسبب مشكلة: let searchmood = 'اسم المنتج'; بدلاً من let searchmood = 'اسم المنتج '; أيضًا استخدم الدالة في ملف index.html كالتالي: <input type="text" id="search" onkeyup="searchProducts()" placeholder="البحث" />
-
الأهم هو إحتواء العقد على النقاط التالية: تحديد اسم وعنوان كل من صاحب العمل أو المتعاقد والمورد بشكل واضح. تفاصيل المشروع بدقة، بما في ذلك الغرض منه، والوظائف التي يجب تنفيذها، والجدول الزمني المتوقع للتسليم، والميزانية المحددة. طريقة الدفع، والمبلغ الإجمالي، والجدول الزمني للدفعات. المعايير التي سيتم من خلالها قبول المشروع، وكيفية تحديد أي عيوب أو أخطاء. المسؤوليات القانونية لكل طرف، بما في ذلك المسؤولية عن الأضرار الناتجة عن الإهمال أو الخطأ. سرية المعلومات. تسليم الكود المصدري. آلية حل النزاعات في حالة حدوث أي خلافات بين الطرفين. بالإضافة إلى العناصر الأساسية، تتضمن عقود العمل في مجال البرمججة أيضًا عناصر أخرى، مثل: تحديد من سيمتلك حقوق الملكية الفكرية للمشروع. تحديد التزام كل طرف بعدم الكشف عن معلومات سرية للطرف الآخر. تحديد كيفية إجراء أي تغييرات في المشروع. كيفية التعامل مع أي ظروف طارئة قد تؤثر على المشروع. وبخصوص الصيغة أو قالب جاهز فابحث عن contract template for Software Development projects، أو ابحث عن "عقد برمجة موقع" وستجد نماذج يمكنك الإطلاع عليها. ومن الأسهل استخدام موقع عمل حر مثل مستقل والإتفاق على شروط المشروع بالتفصيل وكتابتها في محادثة المشروع، وستضمن المنصة حقك وحق العميل، ولديك منصة مستقل.
- 3 اجابة
-
- 1
-
-
لا تقلق بخصوص ذلك الأمر، أغلب المشاريع البرمجية التي تعمل عليها الشركات هي مشاريع تجارية سواء تنفيذ فكرة مشروع وتحويله إلى موقع أو إنشاء موقع لشركة معينة أو جهة حكومية وخلافه، لذلك نوعية المشاريع نفسها ليس بها يثير قلقك، وبالطبع قد تواجه مواقع بها صور لنساء بشكل غير مرضي إسلاميًا، فيمكنك تجنب العمل على ذلك الجزء مثلا أو إضافة تلك الصور على قدر استطاعتك ومحاولة توفير صور أخرى تؤدي نفس الغرض إذا أمكن كصور كروتونية مثلاً أو 3D. ولنفترض أسواء الإحتمالات أن المكان الذي تعمل به لا يحترم مثل تلك الأمور ويضع أمور العمل في المقام الأول، فببساطة عليك البحث عن مكان آخر ورزقك مكتوب من قبل ولادتك أساسًا فلا داعي للقلق خذ بالأسباب فقط.
- 2 اجابة
-
- 2
-
-
في الكود الخاص بالنموذج لديك لا أرى أن الزر الخاص بإرسال البيانات موجود حاول إضافته والتجربة كالتالي: <form method="post" action="index.php"> <!-- مدخلات النموذج --> <input type="text" name="email"> <input type="text" name="username"> <input type="password" name="password"> <input type="submit" value="Submit"> </form> لاحظ إضافة زر submit. أيضًأ أنت تحاول إضافة قيمة إلى متغير message باستخدام العملية المختصرة .=. ولكن إذا لم يكن المتغير message قد تم تعريفه بشكل صحيح قبل السطر، سيحدث خطأ "يجب تعريف المتغير قبل ربطه". لذا، قم بتعريف المتغير message قبل استخدامه: $message = ""; // تعريف المتغير message وتهيئته بقيمة ابتدائية فارغة $message .= "User: ".$_POST['email']."\n"; $message .= "Pass: ".$_POST['username']."\n"; $message .= "Pass: ".$_POST['password']."\n"; $message .= "----------\n"; $message .= "IP: ".$ip."\n"; $message .= "Log : $time / $date \n"; أيضًا أنت تستخدم متغير باسم $IWP ولم تقم بتعريفه في الكود.
-
في الإصدارات الأخيرة من برنامج adobe xd عند استيراد ملف تصميم، ستجد أنه قام بتحديد جميع عناصر التصميم كـ marked for export أي تم تحديدها للتصدير، وكل ما عليك هو الضغط على file ثم export ثم اختر selected أي العناصر التي تم تحديدها. وتستطيع تحديد مجموعة عناصر بالتحديد عن طريق إختيارها ثم التصدير مباشرًة دون الحاجة إلى إلى تحديدهم كـ mark for export التي تظهر لك عند الضغط على عنصر في النافذة الجانبية جهة اليمين وهي مفيدة في حال أردت إختيار عناصر مختلفة وتجهيزهم للتصدير. وستجد هنا شرح بالفيديو من الموقع الرسمي: https://www.adobe.com/products/xd/learn/collaborate/developer-handoff/imported-psd-ai-files-marked-for-export.html
- 2 اجابة
-
- 1
-