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

Wael Aljamal

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

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

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

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

    218

كل منشورات العضو Wael Aljamal

  1. يقترح عليك موظفي المراجعة بإتاحة إضافة "إبلاغ عن إساءة" للتعليقات في التطبيق بحيث يمكن للمتابعين تنبيه الأدمن و المسؤولين عن حدوث اختراقات للخصوصية أو كتابة تعليقات ليست مناسبة. هذا واضح في الجزء: Provide a user-friendly, in-app system for reporting objectionable UGC and take action against that UGC where appropriate; كما عليك حظر و إيقاف المستخدمين و إخفاء تعليقاتهم للذين يتجاوزون القواعد في تطبيقك.
  2. سؤالك غير واضح عن كيفية حساب النقاط.
  3. إن كنت تقوم بتعريف المتغيرات التي تستعملها ضمن الدالة build فلن يتم الاحتفاظ بها، لأن كل استدعاء ل set state يقوم بإعادة تنفيذ build. لذلك تأكد من تعريف المتغيرات التي تحمل القيمة والتي لا تريد منها أن تعود لقيمتها الابتدائية خارج build. إن بقيت المشكلة أرجو مشاركة الملف كاملاً.
  4. أول خطأ يخبرك أنه لايوجد مساحة كافية على القرص، حاول إعادة تثبيت البرنامج ثاني خطأ لا يمكن لحقل يعتبر مفتاح رئيسيي أن يحوي على قيم متساوية أنت تستخدم user كاسم مستخدم بشكل متكرر وهذا خطأ، حاول عمله user1 - user2 مثلا.
  5. حاول إضافة plugins تحوي على اسم الحزمة الخاصة بتطبيقك مع إصداره ثم جرب أضفت مثال لشيفرة ملفك // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() mavenCentral() } dependencies { classpath "com.android.tools.build:gradle:4.2.0" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } plugins { id "com.comp.appName" version "8.4.1" } allprojects { repositories { google() mavenCentral() jcenter() // Warning: this repository is going to shut down soon } } task clean(type: Delete) { delete rootProject.buildDir }
  6. احذف عبارة إنشاء قاعدة البيانات من الاستعلام CREATE DATABASE Organization_Manager; فهي غير ضرورية هنا، نحن نقوم بإنشاء القاعدة لمرة واحدة فقط، أي هنا فقط عليك وضع تعليمة Use لتحديد أي قاعدة تحتاج الاتصال بها.
  7. هل حاولت وضع اسم آخر؟ مثلاً Organization_Manager123 جرب إن لم تحذف القاعدة من SQL SERER (أي حذفت الملفات الخاصة بها) فهذا خطأ لأن معلومات القاعدة ستبقى موجودة في بيانات SQL SERVER يمكن أنه من برنامج آخر تم إنشاء نقس اسم القاعدة و تم عملها ك VDB مثل اكليبس أو غيره تأكد مما قمت به
  8. اسم قاعدة البيانات هذه موجو مسبقاً كيف تقوم بحذفه؟ حاول عمل drop database Organization_Manager ثم أعد التجريب مع العلم سيتم حذف جميع البيانات.
  9. بحثت في التوثيق الرسمي للمكتبة التي تستعملها أنت، ووجدت أن IOS تتطلب إضافة إعادادت أخرى لكي تعمل هذه المكتية بطريقة صحيحة من هنا وهي إضافة RNCheckNotificationPermission.xcodeproj إلى المكتبات، حيث تم شرح الخطوات لذلك على xcode في التوثيق، وإن كنت لا تستعمل xcode فربما عليك إضافتهم بشكل يدوي. لقد عملت المكتبة لديك، لأنه في أندرويد لا يتطلب عمل إشعارات إذن أو صلاحيى على عكس IOS. إن لم تعمل هذه المكتبة جرب مكتبات أخرى، وتأكد من دعمهم للمنصات التي تنوي نشر التطبيق عليها
  10. جلب الحلقات: عليك الاشتراك بحدمة توفر API أو واجهة برمجية للويب web service تمكنك من عمل اتصال مع مخدم الفيديو الذي يحوي الملفات و يتصل تطبيقك عليها، على الأغلب تحتاج لمشغل فيديو في التطبيق. يمكنك الاستفادة من المساهمة: والتطبيق ينزل من جوجل وليس متجر بلاي: إن لم تكن تريد رفع التطبيق على غوغل بلاي ( حيث أنه المتجر الرئيسي للتطبيقات و هو متجر آمن يتأكد من سلامة التطبيقات المنشورة عليه و هذا يعطي طمأنينة للمستخدمين)، أي من الأفضل رفع التطبيق على غوغل بلاي وسيكون متاح للجميع. (مستحسن) يوجد متاجر تطبيقات أخرى مثل apkpure - apkmirror وغيرهم، أو حتى الاشتراك باستضافة و رفع ملف تطبيقك عليها أو قناة تلغرام أو حتى رفعه على google drive و مشاركة الرابط.
  11. يبدو أن لديكِ نفس اسم الدالة add مكتوبة مرتين ولكن كل منها له نمط إعادة مختلف الأولى integer و الثانية double. ولكن تم اعتبارها دالة مكررة ولم يتم تطبيق مفهوم overload. لكن شروط عمل التحميل الزائد أو overload مختلفة عن هذا. حيث أن المترجم compiler لا يقوم بالتمييز بين الدوال بالنسبة لنمط الإرجاع، بل يتأكد من التالي: يتم عمل overload للدوال العادية و الدوال البانية constructor يجب أن يملكوا نفس الاسم يمكن للدالتين اللتين لهما نفس الاسم من امتلاك: عدد وسطاء مختلف أو أنواع وسطاء مختلفة (اختلاف في عدد أو نوع الوسطاء). أو نفس عدد الوسطاء مع اختلاف ترتيبهم في حال كان لهم أنواع مختلفة (وسيطين من نفس النوع لا يعتبر overload). أمثلة: دالتين لهما عدد مختلف من الوسطاء: public int add(int a, int b) { int sum = a + b; return sum; } // غير عدد من الوسطاء هنا 3 بدل 2 public int add(int a, int b, int c) { int sum = a + b + c; return sum; } دالتين لهما ننوع مختلف من الوسطاء public int add(int a, int b, int c) { int sum = a + b + c; return sum; } // اختلاف نوع الوسطاء public double add(double a, double b, double c) { double sum = a + b + c; return sum; }
  12. الوسط br يستخدم لعمل سطر جديد ولا يعتبر وسم للكتابة و لا يمكن احتوائه على نص، هو فقط يفصل بين سطرين عند العرض في HTML ويمكن استخدامه ضمن الوسم p br نستخدم وسم واحد فقط أي لا داعي لاستخدام وسم الفتح و وسم الإغلاق <!DOCTYPE html> <html> <body> <h1>P vs PRE vs br </h1> <p> 1 one <br> 2 tow <br> 3 three 4 four 5 five <br> </p> </body> </html> والنتيجة: سيقوم الوسم br بعمل سطر جديد للنص الذي سيأتي بعده الوسم P يحدد فقرة من النص وهي paragraph أي جزء مترابط من الكلام، وعند استخدام أكثر من وسم P سيتم افتراضيا وضع سطر جديد فاصل فبل هذه الفقرة و بعدها مثال: <!DOCTYPE html> <html> <body> <h1>P </h1> <p> text 1 </p> <p> text 2 </p> <p> text 3 </p> </body> </html> النتيجة: أما الوسم pre يحافظ على عدد الفراغات التي تنتمي للنص الذي يحويه بينما الوسم p لا يقوم بذلك و يتخلص من الفراغات المكررة.. مثال: <!DOCTYPE html> <html> <body> <h1> pre vs p</h1> <pre> نص فيه فراغات مكررة </pre> <p> نص فيه فراغات مكررة </p> </body> </html> النتيجة:
  13. JPanel - JFrame ,وغيرها جميع هذه العناصر عي من نوع Container أي حاوية لعناصر العرض الأخرى، وتمكننا من توزيع و عرض العناصر بطرق متنوعة و مختلفة حسب الحاجة حسب تحديد Layout Managers. FlowLayout تخطيط الدفق: يقوم بترتيب العناصر بنفس ترتيب كتابتهم في الشيفرة (إدراجهم في الحاوية) خلف بعضهم البعض وهو الافتراضي. مثال: BorderLayout تخطيط الحواف: يسمح بتوزيع العناصر على حواف الحاوية يمين - يسار - فوق - تحت (شمال - جنوب - شرق - غرب). مثال: GridLayout تخطيط الشبكة: يسمح بترتيب العناصر على شكل أسطر و أعمدة مثال: سؤال مرتبط:
  14. أعتقد الخطأ في هذا السطر، حيث أن avatar تقبل مصفوفة من السلاسل النصية، و أنت تمرر لها مصفوفة من أغراض الملفات، حاول استخدام دالة JSON.stringify لتحويل مصفوفة الملفات لسلسلة نصية.
  15. بوتستراب هو إطار عمل HTML, CSS, JS يساعد المصممين في بناء صفحات ويب متجاوبة مع مختلف قياسات الشاشات، و يحوي على مكونات و قوالب جاهزة يمكن استخدامها مباشرة في صفحتك. بالإضافة لأصناف CSS متنوعة تساهم في تسهيل التصميم و تسريعه. إقرأ عنها أكثر من مقالات أكاديمية حسوب: شرح بوتستراب و توثيق موسوعة حسوب: التوثيق أما TailwindCSS هي مكتبة css خفيفة تحوي على الكثير من التنسيقات، و تسهل عمل المطور. و بالنسبة ل ريأكت ReactJs هي مكتبة تطوير واجهات المستخدم front end تعتمد بشكل على جافاسكربت، حيث تقوم على بناء مكونات والتي تعبر عن أجزاء الصفحة، ويتم عمل render أي تحويلها ل HTML في المتصفح بعد تحميل ملفات جافاسكربت فيه. رياكت من موسوعة حسوب: ReactJS
  16. أرجو إرفاق الشيفرة البرمجية التي تسبب المشكلة لنحاول فهمها بشكل أفضل.
  17. تعتبر كل من خوارزميتي البحث بالعمق أولاً DFS و البحث بالعرض أولاً BFS من خوارزميات التجوال في بنى المعطيات الشجرية Trees و البيان Graphs. حيث يتم تحديد عقدة الجذر للبيان و من ثم تعمل الخوارزمية المختارة على المرور على جميع العقد NODES في هذا البيان. ليكن لدينا البيان التالي والذي له العقدة 1 كجذر له root node: تقوم خوارزمية BFS البحث بالعرض بطباعة معلومات كل مستوى من البيان على حدى حيث أن المستوى يمثل مجموعة العقد التي لها نفس البعد عن العنصر الجذر أي تقوم بالمرور على الجذر 1 أولاً ثم للمستوى التالي 2 و 3 ( وهما أبناء الجذر ولهم بعد 1 عن الجذر )، ثم 4 و 5 في المستوى التالي.. وهكذا. أما خوارزمية DFS تبحث بالعمق، أي تأخذ عقدة، ثم تنتقل لأحد أولادها، ثم أحد أولاد العقدة الجديدة و تكرر هذا حتى تصل إلى ورقة (عقدة خارجية ليس لها أبناء) و بعد طباعة رقم العقدة الورقة تقوم بالتراجع لأب هذه العقدة ثم تنتقل لابنه الثاني و تستمر بالمرور ابن تاو الآخر حتى تصل إلى ورقة و هكذا حتى تنتهي من عقدة ما، فتعود لأبيها.. ثم لأبيها و من ثم يمكن أن تنتهي من أحد أفرع الشجرة و تنتقل للجذر ثم للفرع الآخر و هكذا، أي ضمن المثال، سوف تطبع 1 ثم ابنها 2 ثم ابنها 4 ثم تعود ل 2 و تنتقل لابنها الآخر 5 و عند انتهاء الأولاد تعود ل 2 ثم تعود ل 1 ثم تنتقل للفرع الآخر أو الابن الآخر للجذر والذي هو 3 فنزوره و لا تجد أبناء فتعود للجذر و تنتهي. لها 3 أنماط مرور موجودة في الصورة المثال. تحوي المقالة التالية على شرح و أمثلة لكلا الخوارزميتين. و للتعرف على كيفية تمثيل بنية المعطيات يمكنك قراءة المقالة:
  18. يمكنك استخدام حزمة multer لرفع الملفات (منها الفيديو) حيث عليك تثبيت الحزمة npm install --save multer وتضمينها const multer = require('multer'); ثم تعريف الدوال التي تقوم بالرفع. أولاً تعريف مسار رفع الفيديو: router.post('/uploadVideo', videoUpload.single('video'), (req, res) => { // نحفظ الملف }, (error, req, res, next) => { // خطأ res.status(400).send({ error: error.message }) }) ثانياً تعريف دالة المتحكم لمعالجة الملف middleware const videoUpload = multer({ storage: videoStorage, limits: { fileSize: 10000000 // 10000000 Bytes = 10 MB }, fileFilter(req, file, cb) { // تحديد أنواع الملفات الممكنة mp4 and mkv format if (!file.originalname.match(/\.(mp4|MPEG-4|mkv)$/)) { return cb(new Error('الملف المرفق ليس ملف فيديو أو ليس مدعوم من المخدم')) } cb(undefined, true) } }) ثالثاً حفظ الملف على المخدم ضمن نظام الملفات const videoStorage = multer.diskStorage({ destination: 'videos', // مسار مجلد حفظ الفيديو filename: (req, file, cb) => { // اسم الملف cb(null, file.fieldname + '_' + Date.now() + path.extname(file.originalname)) } }); لاحظ أن ملف الفيديو يتم حفظه على القرص، و نضيف في نموذج قاعدة البيانات حقل سلسلة نصية يحفظ مسار الفيديو فقط و نقوم بالربط اللازم بينهم. أضف منطق حفظ الرابط في قاعدة بيانات mongo ضمن front end نستخدم multipart/form-data مع الطريقة POST , ونعطي اسم للحقل. <form method="post" action="/uploadVideo" enctype="multipart/form-data"> <input type="file" name="videoFile"><br> <input type="submit" value="Submit"> </form> يمكنك الاعتماد على الأفكار من رفع صورة من السؤال:
  19. حاول استخدام التعليمة التالية في بداية ملف PHP ini_set('default_charset', 'utf-8'); أو قم بتعديل ملف php.ini في ملف السيرفر لجعل ترميز النصوص utf8 عدل السطر: default_charset = "utf-8" وأعد تشغيل المخدم لديك.
  20. يمكنك البحث و توظيف مستقل لديه خبرة كافية في التجارة الالكترونية مقابل عمل مأجور لأن شرحها يطول، يمكنك البحث عن الشخص المناسب من موقع مستقل أو خمسات.
  21. كلا ليس في البرمجية بل نفاذ مساحة القرص، فلم يتمكن من الكتابة على الملف Linux steps for reference. df -lh : تحقق نم مساحة التخزين cd xx : ادخل المجلد الذي لديك مساحة كبيرة du -sh * : نتحقق من الملفات فيه حسب الحجم rm xx : احذف المجلدات الغير ضرورية الأفضل هو ترقية مساحة التخزين في المخدم / الاستضافة
  22. المشكلة بسبب عدم القدرة على حجز ذاكرة مؤقتة في النظام، هل يمكنك تفصيل ما كنت تقوم به؟ حاول تنفيذ apt-get clean
  23. ما الخطأ الذي ظهر؟
×
×
  • أضف...