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

Mustafa Suleiman

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

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

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

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

    365

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

  1. ستحتاج إلى استخدام إضافة مثل إضافة Admin User Activity Log أو ما شابه، والإضافة توفر لك التالي: أي مستخدم أضاف أي منتج. أي مستخدم حذف أي فئة. أي مستخدم قام بتحرير أي مراجعة. أي مستخدم وافق على أي عميل. أي مستخدم شاهد أي طلب. كم عدد المنتجات التي أنشأها كل مستخدم في إطار زمني معين. كم عدد الفئات التي أنشأها كل مستخدم في إطار زمني معين. والمزيد... وهناك إضافة أخرى باسم Admin Monitor - Monitor Admin Activities لكن بتكلفة أعلى. وهناك إضافة مجانية باسم Admin Log حاول تجربتها.
  2. صحيح 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');
  3. دائمًا ما أنصحك بعدم الإنتقال مباشرًة إلى تعلم React.js والصبر والتأني في تعلم جافاسكريبت بشكل جيد، وعدم الإكتفاء بالأساسيات فقط بل التعمق وتنفيذ مشروع كبير وذلك بفرض أن لديك الوقت لذلك فلا يوجد نصيحة واحدة قابلة للتطبيق على الجميع. والمشروع الذي اًنصح به هو مشروع single page app من خلال جافاسكريبت وستتعلم الكثير خلال تنفيذه، وتستطيع البحث على اليوتيوب عن ذلك وبالطبع المشروع يجب أن يتم به استخدام API. وبإمكانك أيضًا التدرج في مستوى صعوبة المشاريع، ابحث عن مشروع بسيط ثم متوسط ثم مشروع single page app على اليوتيوب من خلال كتابة مشاريع جافاسكريبت أو js project وأنا أفضل بالإنجليزية إذا استطعت. وتلك مدارس فالبعض قد ينصحك بتعلم الأساسيات ثم الإنتقال مباشرًة لـ React لكن تلك التجربة لا أنصح بها. بالطبع لا يوجد شخص على علم بجميع تفاصيل اللغة لكن يوجد مبرمج متمكن من اللغة من خلال تعلمه للأساسيات بشكل قوي والتطبيق عليها والبحث والقراءة عن ما لا يفهمه أو يعرفه وأيضًا سنوات الخبرة والمشاريع التي عمل عليها يتعلم من خلالها ما لا يمكن تعلمه من خلال مشاهدة بعض الشروحات. وجميع المبرمجين يعتمدوا على البحث بشكل كبير من أجل تذكر أو معرفة كيفية تنفيذ أمر معين فهو لن يتذكر كل شيء وأيضًا الكثير من المشاكل تم حلها من قبل، وبخصوص تلك النقطة الأفضل التفكير في الحل بمفردك وتفقد سبب المشكلة قبل البحث إن كانت في الكود الخاص بك وليس مشكلة في مكتبة مثلاً. وبالطبع المشاريع المتقدمة تتعلم من خلالها الكثير مقارنًة بالمشاريع البسيطة لذلك أخبرتك بتنفيذ مشروع مثل single page app، ولكن كن رحيمًا بنفسك ولا ترهقها بالتفكير الزائد فأنت ما زلت تتعلم ولا مشكلة في كونك لا تعلم لكنك تتعلم وتحاول. لا أنصحك إطلاقًا بالإبتعاد لمدة 3 أشهر ستنسى ما تعلمته في البداية عليك بتثبيت ذلك من خلال المشاريع واكتساب الخبرة لذلك عليك بتقسيم الوقت ما بين تنفيذ مشاريع وما بين تعلم مهارة الـ Problem Solving إدارة الوقت هي أهم شيء. ولكن هل أنت تعلم مهارت الـ Problem Solving من أجل مقابلة العمل أم ماذا؟ فإذا كنت كذلك فمن الأفضل لك حل المسائل من على موقع leetcode وأيضًا البدء بالحل بعد الإنتهاء من مسارك البرمجي وتعلم اللغات والتقنيات المطلوبة للوظيفة التي تريدها أي عند بدء رحلة التقديم على الوظائف مباشرًة
  4. لو اتجهت لبرنامج vscode وفتحت ملف ستجد بالأسفل الترميز الخاص بقراءة الحروف في اللغات، ويمكنك تغيير الترميز. حيث يُستخدم ترميز UTF-8 لتمثيل مجموعة واسعة من الأحرف، بما في ذلك الأحرف من اللغات الآسيوية والأفريقية، يجعله ترميزًا شائعًا للاستخدام مع الملفات التي قد تحتوي على أحرف من لغات متعددة. لذلك في أي برنامج أو قاعدة بيانات مثلاً، عليك بإختيار الترميز المناسب من أجل دعم حروف اللغة التي تريد استخدامها.
  5. الكود الخاص بك هو خاص بسرقة بيانات أشخاص وخداعهم بأن الصفحة خاصة بالعملات الإلكترونية أو ما شابه، لا يمكن مساعدتك بخصوص تلك الأمور، إذا كنت تريد التدرب وإنشاء المشاريع فعليك بالبحث عن مشروع مناسب. أرجو عدم نشر سؤال آخر يتعلق بمثل تلك الأمور وشكرًا لتفهمك.
  6. دالة searchProducts تقوم بقراءة القيمة المدخلة في حقل البحث ثم البحث عن المنتجات المتطابقة بناءًا على اسم المنتج أو تصنيف المنتج، ثم بتحديث الجدول لعرض نتائج البحث المطابقة من خلال المصفوفة في متغير searchResults والناتجة عن الميثود filter. عند تغيير وضع البحث بين "اسم المنتج" و "تصنيف المنتج" بناءًا على قيمة searchmood، يتم تغيير وضع البحث ونص العنصر المرشح للبحث في الواجهة.
  7. تابع الإجابة على سؤالك هنا، وفي حال استمرت المشكلة أخبرني:
  8. المشكلة هي أنك قمت بتحديد دالة باسم 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="البحث" />
  9. الأهم هو إحتواء العقد على النقاط التالية: تحديد اسم وعنوان كل من صاحب العمل أو المتعاقد والمورد بشكل واضح. تفاصيل المشروع بدقة، بما في ذلك الغرض منه، والوظائف التي يجب تنفيذها، والجدول الزمني المتوقع للتسليم، والميزانية المحددة. طريقة الدفع، والمبلغ الإجمالي، والجدول الزمني للدفعات. المعايير التي سيتم من خلالها قبول المشروع، وكيفية تحديد أي عيوب أو أخطاء. المسؤوليات القانونية لكل طرف، بما في ذلك المسؤولية عن الأضرار الناتجة عن الإهمال أو الخطأ. سرية المعلومات. تسليم الكود المصدري. آلية حل النزاعات في حالة حدوث أي خلافات بين الطرفين. بالإضافة إلى العناصر الأساسية، تتضمن عقود العمل في مجال البرمججة أيضًا عناصر أخرى، مثل: تحديد من سيمتلك حقوق الملكية الفكرية للمشروع. تحديد التزام كل طرف بعدم الكشف عن معلومات سرية للطرف الآخر. تحديد كيفية إجراء أي تغييرات في المشروع. كيفية التعامل مع أي ظروف طارئة قد تؤثر على المشروع. وبخصوص الصيغة أو قالب جاهز فابحث عن contract template for Software Development projects، أو ابحث عن "عقد برمجة موقع" وستجد نماذج يمكنك الإطلاع عليها. ومن الأسهل استخدام موقع عمل حر مثل مستقل والإتفاق على شروط المشروع بالتفصيل وكتابتها في محادثة المشروع، وستضمن المنصة حقك وحق العميل، ولديك منصة مستقل.
  10. لا تقلق بخصوص ذلك الأمر، أغلب المشاريع البرمجية التي تعمل عليها الشركات هي مشاريع تجارية سواء تنفيذ فكرة مشروع وتحويله إلى موقع أو إنشاء موقع لشركة معينة أو جهة حكومية وخلافه، لذلك نوعية المشاريع نفسها ليس بها يثير قلقك، وبالطبع قد تواجه مواقع بها صور لنساء بشكل غير مرضي إسلاميًا، فيمكنك تجنب العمل على ذلك الجزء مثلا أو إضافة تلك الصور على قدر استطاعتك ومحاولة توفير صور أخرى تؤدي نفس الغرض إذا أمكن كصور كروتونية مثلاً أو 3D. ولنفترض أسواء الإحتمالات أن المكان الذي تعمل به لا يحترم مثل تلك الأمور ويضع أمور العمل في المقام الأول، فببساطة عليك البحث عن مكان آخر ورزقك مكتوب من قبل ولادتك أساسًا فلا داعي للقلق خذ بالأسباب فقط.
  11. في الكود الخاص بالنموذج لديك لا أرى أن الزر الخاص بإرسال البيانات موجود حاول إضافته والتجربة كالتالي: <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 ولم تقم بتعريفه في الكود.
  12. في الإصدارات الأخيرة من برنامج 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
  13. لا مشكلة أبدًا، لكن من الأفضل استخدام vscode فهو أسهل في التعامل في بداية تعلمك للبرمجة ومجاني تمامًا ويمكن تثبيت إضافات لتخصيصه كما تريد وإضافة الخواص التي تريدها. ولكن إذا كان Pycharm مناسب لك فلا مشكلة، لكن هناك بعض الخواص الإَضافية متوفرة فقط في النسخة المدفوعة ولن تحتاجها في بداية تعلمك. وستجد هنا نقاش مفصل أكثر:
  14. السبب هو أنك تحاول الوصول إلى قاعدة البيانات من عنوان IP غير مدرج في القائمة البيضاء، ومن الأفضل السماح بأي عنوان IP بالإتصال من خلال التوجه إلى لوحة معلومات MongoDB Atlas ثم اختر NetworkAccess ومنها اختر Edit ثم Allow Any أو قم بوضح الـ IP بالشكل التالي: 0.0.0.0/0 ثم التأكيد confirm ومحاولة الإتصال من جديد.
  15. بخصوص مشكلة النسيان، فلا تقلق بخصوص تلك النقطة، لكن بشرط أن تحاول جاهدًا استيعاب وحفظ ما يتم شرحه في البداية ثم التطبيق بمفردك ومحاولة التغيير في الكود لفهم كيف يعمل ولماذا كتبت هذا وذاك وليس الكتابة وراء المدرب فقط، وأيضًا التطبيق على ما تعلمته من خلال مشروع بسيط لتوظيف المعلومات التي لديك وتثبيتها. وأثناء مرحلة التعلم عليك المراجعة سواء من خلال إعادة إنشاء نفس المشروع أو مشروع غيره أو مراجعة ملخص قمت بكتابته أو مشاهدة الدرس بسرعة أكبر مثلاً، لكن من الأفضل المراجعة من خلال كتابة الكود بالطبع فتلك هي البرمجة أي تحتاج إلى الممارسة وليس المشاهدة والاستماع. وقد تم نفاش ذلك بشكل مفصل من قبل: أولاً عليك البحث عنها على جول ويوتيوب مثل كتابة اسم الدالة ثم بجانبها اسم اللغة ولتكن جافاسكريبت لكي يفهم جوجل أنك تريد تلك الدالة في تلك اللغة وسيظهر لك نتائج وتستطيع تفقد النتائج الأجنبية والعربية وستجد على يوتيوب الكثير من الشروحات بخصوص ما تريده، وذلك طبيعي في أي دورة فلا تكتفي بما يتم شرحه فقط أحيانًأ تحتاج إلى البحث من أجل المزيد من التوضيح والفهم. وبعد البحث تستطيع السؤال هنا وسيتم مساعدتك بلا شك.
  16. لو تفقدت العنصر container من خلال أدوات المطور ستجد أن التنسيقات الخاصة به يظهر به أن قيمة الخاصية grid-template-columns غير صحيحة وبتفقدها ستجد أن كتبت auot بدلاً من auto وبعد تعديل السطر للشكل التالي سيعمل الكود بدون مشكلة: grid-template-columns: repeat( auto-fill, minmax(300px, 1fr) );
  17. جزاك الله خيرًا على محاولة تحري الحلال من الحرام، وبخصوص الرسم فأولاً تصميم واجهة المستخدم ليست من إختصاص مطور الواجهة الأمامية بل هي من إختصاص مصمم واجهات المستخدم UI/UX، ولكن أغلب مطوري الواجهات الأمامية لديهم القدرة على تصميم واجهات جيدة وبمستويات مختلفة حسب قدرة وخبرة كل مطور، لكن ذلك ليس من إختصاصه، أما في حالة العمل على مواقع العمل الحر فستجد أنه مطلوب منك تنفيذ الموقع بالكامل أحيانًا من حيث التصميم والتطوير. والتصميم الذي ستقوم به أنت لا يتضمن تلك الصور لأنك لست مصمم بالأساس، بل ما يفعله مطوري الواجهة الأمامية هو البحث عن الصور والتصميمات واستخدامها، لذلك تستطيع تجنب استخدام التصميمات التي تحتوي على ذوات أرواح لكن بشكل ناقص مثل رأس فقط بدون بدن أو بدن بدون رأس أي بشكل لا يمكن الحياة أو العيش به فلا مشكلة.
  18. الأمر بسيط عليك بتفقد وصف الوظائف المعلنة للمجال الذي تريد التخصص به، مثلا هل تريد أن تتخصص في مجال الواجهة الخلفية من خلال بايثون؟ عليك بالبحث عن وظيفة Python backend developer على مواقع التوظيف مقل LinkedIn وIndeed وغيرهم ثم تعلم المطلوب. بخصوص دورة علوم الحاسوب، فهي ستؤهلك لدخول مجال البرمجة بالفعل، من حيث تعلم أساسيات البرمجة وعلوم الحاسب. أما بخصوص دورة بايثون فعليك تحديد ما المجال الذي تنوي التخصص به من خلال تعلمك بايثون، هل تريد التخصص في مجال الويب أم مجال الذكاء الاصطناعي أم مجال تحليل البيانات. فإذا كنت مهتمًا بتطوير تطبيقات ويب، فعليك أن تطور مستواك في HTML، CSS، وJavaScript، ونفس الأمر بالنسبة لمجال الذكاء الاصطناعي والنقاشات التالية ستفيدك: فالنقاش التالي قمت بتوضيح وصف وظيفة خاصة ببايثون والمهارات التي ستتعلمها في دورة بايثون. وبعد الإنتهاء من الدورة عليك بالتدرب على حل المشاكل البرمجية لتطوير مهارة الـ Problem Solving لديك وستجد شرح حول تلك النقطة هنا: أيضًا عليك بمحاولة التدرب على مشاريع أخرى بجانب الدورة ولا تكتفي بالدورة فقط، وقد تم توضيح ذلك هنا: أيضًا تنمية مهارة البحث لديك وعدم القلق من تجربة أشياء جديدة لم تتعرض لها من قبل، والإهتمام بتعلم GIT وGitHub مبكرًا، وأيضًا لا تخف من أن تخطئ فلن تتعلم ما لم تخطئ. والأهم من ذلك كل هو التركيز على تعلم الأساسيات وعدم الإهتمام بتعلم المكتبات وإطارات العمل مبكرًا فلن تصبح مبرمج جيد وقادر على تعلم أي شيء ما لم تركز على الأساسيات وتوفير فترة مناسبة لها على قدر حاجتك فلا تستعجل.
  19. أولاً دورة تطوير المنتجات موجهة لمن يريد أن يصبح مدير تطوير منتجات أو صاحب مشروع، لكنها مفيدة لك كمبرمج بالطبع حيث ستتعرف على عملية إدارة تطوير المنتج والمشروع من البداية قبل كتابة الكود فهي آخر خطوة، لكنها ليست مناسبة لك في البداية لن تشعر بفائدة إذا كنت تريد أن تصبح مبرمج فهي مفيدة بعد تعلم البرمجة وذلك واضح من الدورات الأخرى التي اخترتها. والفيديو التالي سيوضح لك ماهية دورة تطوير المنتجات: لذلك أنصحك أولاً بتعلم أساسيات البرمجة وعلوم الحاسوب من خلال دورة علوم الحاسوب وستجد نقاش حول فائدة تلك الدورة هنا: وبعد الإنتهاء من دورة علوم الحاسوب، سيصبح لديك دراية ووعي بالمجالات البرمجية المختلفة والقدرة على الإختيار من بينها وأيضًا تعلم وإنتاجية أسرع عند تعلم الدورات الأخرى. أنصحك بالإنتقال لدورة تطوير واجهات المستخدم فهى سهلة وستؤهلك لدخول مجال الويب، وتعلم اللغات الأساسيات الخاصة به وهي HTML, CSS, JS ومكتبة jQuery وBootstrap، وستحتاج تلك الللغات والمهارات في دورة بايثون لذلك رغم أنك ستتعلمها في تلك الدورة، لكن من الأفضل البدء بالترتيب الصحيح. بعد ذلك تنتقل لدورة بايثون وستجد شرح حول تلك الدورة هنا: وأنصحك بالإطلاع على النقاش التالي ستجد به الكثير من الإجابات على الأسئلة لديك:
  20. الـ x هنا هو متغير يُستخدم للتحكم في عملية الحلقة (loop) وتحديداً حلقة الـ "for"، حيث تستخدم الحلقة لتكرار سلسلة من التعليمات عدة مرات وفقاً للقيم التي يأخذها المتغير x خلال النطاق المحدد بواسطة range(10). range(10) تقوم بإنشاء تسلسل من الأرقام من 0 إلى 9. هذا هو النطاق الذي ستقوم الحلقة بتكرار التعليمات فيه. for x in ...: تبدأ تصريح حلقة الـ "for"، وتخبر مترمجم Python أنه يجب أن يكرر التعليمات التي تأتي بعد هذا السطر لكل قيمة x في النطاق الذي تم تحديده (من 0 إلى 9). أي سيتم تنفيذ التعليمات التي تأتي بعد ذك السطر في الحلقة عدة مرات، حيث ستكون قيمة x هي 0 في التكرار الأول، ثم 1 في التكرار الثاني، وهكذا حتى 9 في التكرار العاشر.
  21. ما هي الدورة المقصودة؟ وهل تريد العمل على مواقع العمل الحر أم الشركات؟
  22. في حالة الشركات الصغيرة التي تعمل بنظام Part Time، يتم توزيع الأرباح بناءًا على المساهمة النسبية لكل شريك في نجاح الشركة، وبالتالي الشخص الأول هو صاحب رأس المال بنسبة 100%، أي يستحق الحصول على حصة أكبر من الأرباح، ولتكن بنسبة 60% أو 70%. أما بالنسبة للشخص الثاني والثالث، فهما مسؤولان عن أقسام مهمة في الشركة، وبالتالي يستحقان الحصول على حصص متساوية، كنسبة 20% لكل منهما. وبالتالي، فإن نسبة توزيع الأرباح ستكون على النحو: الشخص الأول: 60% الشخص الثاني: 20% الشخص الثالث: 20% بالطبع، تلك مجرد نسبة تقريبية، ويمكن تعديلها حسب الاتفاق بين الشركاء، فإن كان الشخص الثاني مسؤولاً عن قسم فني مهم يساهم بشكل كبير في نجاح الشركة، فقد يستحق الحصول على حصة أكبر، ويجب أن يكون هناك اتفاق مكتوب بين الشركاء بشأن نسبة توزيع الأرباح. من المهم أيضًا مراعاة العوامل التالية عند توزيع الأرباح: حجم الشركة حجم الإيرادات حجم الأرباح المخاطر التي يتحملها كل شريك مساهمة كل شريك في نجاح الشركة
  23. أنت تقصد الدعم الفني الخاص بشركة الاستضافة؟ في حال كان سيرفر VPS مدار أي يتم إدارته من قبل الاستضافة، فلا يمكن ذلك، فما فائدة الدعم الفني إن لم يكن لديه صلاحية الوصول إلى السيرفرات؟ أم إذا كان السيرفر يتم إدارته من قبلك، فالدعم الفني ليس لديه صلاحية الوصول إلى السيرفر الخاص بك، لذلك عليك بتفقد ذلك من خلال سؤال خدمة العملاء في المنصة التي تريد شراء VPS منها. ولا تقلق أبدًا من ذلك، فهناك آلاف العملاء والبيانات والشركة مسؤولة عن حماية بياناتك وعدم تسريبها، ولو أن البيانات يتم سرقتها لما قام أحد بنشر موقعه على أي استضافة.، لكن بالطبع الشركات الكبيرة لديها بنية تحتية خاصة بها وData centers من أجل حفظ بياناتها بأمان أو تستأجر تلك البنية من شركة أخرى لتولي إدارتها وحماية البيانات.
  24. في بداية تعلمك؟ نعم يجب عليك حفظ كل شيء ولا مشكلة في حال نسيانه طالما أنك استوعبته وفهمته وقم بالتطبيق عليه، أي عليك استيعاب وفهم طريقة كتابة الكود الصحيحة من حيث الـ Syntax ولماذا وضعنها فاصلة هنا مثلاً ولماذا استخدمنا ذلك وتستطيع البحث وقراءة المزيد ولا تكتفي بالدورة فقط ثم تستطيع السؤال. ولا يوجد مبرمج يتذكر كل شيء، بل هو متمكن من اللغة التي يعمل بها وقام بدراستها بشكل جيد الأمر الذي يؤهله للبحث عما يريده وتذكره بكل سهولة ثم استخدامه في الكود الخاص به. وهناك أمر هام عليك استيعابه وهو أن عملية التعلم مقترنة بالحفظ لكن الاستيعاب يأتي أولاً، وعليك بالتطبيق بمفردك لتثبيت المعلومات وأيضًا عليك بالمراجعة كل فترة سواء من خلال إنشاء مشروع أو مراجعة سريعة على ما سبق، حيث أن التعلم عملية تكرارية وليست خطية، والأسهل لك إعادة إنشاء المشاريع من أجل المراجعة ومحاولة إضافة خاصية جديدة أو تنفيذ مشروع جديد وتستطيع البحث على اليوتيوب عن مشاريع للمبتدئين ولا تخف من تجربة وتعلم أشياء جديدة. وقد تم شرح الأمر بشكل مفصل هنا: وقد يفيدك الإطلاع على التالي أيضًا:
  25. كان هناك عدّة أخطاء في الكود وبعد التعديل الكود التالي يعمل بشكل سليم: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <div id="banner-ad"> <div id="reward-box" style="display: none"> <div class="form-group"> <div class="col-sm-offset-4 col-sm-4"> <input type="submit" class="btn btn-primary btn-lg claim-button" value="Get reward!" /> </div> </div> </div> </div> <script> let banners = [ "<a href='https://serfclick.net' target='_blank'><img src='https://serfclick.net/load/img/material/200-3.gif'></a>", "<a href='https://serfclick.net' target='_blank'><img src='https://serfclick.net/load/img/material/200-5.gif'></a>", "<a href='https://serfclick.net' target='_blank'><img src='https://serfclick.net/load/img/material/200-2.gif'></a>", ]; let increment = Math.floor(Math.random() * banners.length); document.getElementById('banner-ad').innerHTML = banners[increment]; let banner = document.getElementById('banner-ad'); let rewardBox = document.getElementById('reward-box'); banner.addEventListener('click', function () { rewardBox.style.display = 'block'; }); </script> </body> </html> ما قمت به: تعريف مصفوفة banners التي تحتوي على جميع بنراتك. استخدام طول المصفوفة banners.length في حساب عشوائي لاختيار بانر عشوائي. استخدام innerHTML لتحديث محتوى div البانر بدلاً من document.write لتحسين أداء وأمان الكود. وضع الكود الخاص بالتفاعل مع البانر وظهور صندوق الجوائز داخل نفس الهيكل.
×
×
  • أضف...