-
المساهمات
6975 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
218
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Wael Aljamal
-
يمكنك البحث في غوغل عن كيفية معرفة البرامج التي تحجز المنفذ. netstat -aon | findstr 80 ثم توجهي لمدير المهام و اعملي إغلاق لهم. بعد تغيير port تأكدي من حفظ الإعدادات، ثم إعادة تشغيل الخادم، و يتوجب فتح الرابط مع المنفذ الجديد في المتصفح ليستطيع توجيه الطلبات على السيرفر. كما في ملف env عليك تعديل APP_URL و نضع المنفذ الجديد في نهايته
-
إن جافاسكربت تعمل في الويب و على الهواتف الذكية، جميع مسارات الدورة تشرح تقنيات الويب و هذه تعمل على جميع أنظمة التشغيل لأنك تحتاج للمتصفح فقط لتحميل الموقع. المسار الخاص بتطبيقات سطح المكتب هو مسار Electron.js. المسار الذي يطور تطبيقات الهاتف الجوال هو الخاص ب React Native. في هذا المسار يستخدم المدرب كما باقي المسار نظام ويندوز للبرمجة لأن 99% من الطلاب تستخدمه. يمكن تشغيل مشروع React Native على المتصفح او هاتف أندرويد باستخدام تطبيق expo او محاكي أندرويد او هاتف ios او (محاكي ios على نظام mac وهذا يتبع حاسوب الطالب). يوفر EXPO طريقة لبناء تطبيقات IOS عن طريق خوادمه على الانترنت بدون الحاجة لاقتناء جهاز mac. إن كان هاتفك android او ios عليك تحميل تطبيق Expo Go app لتشغيل المشروع على الهاتف خلال فترة التطوير، أي قبل مرحلة بناء التطبيق نفسه عندما يصبح جاهز للنشر (apk, ipa, aab) هذه المرحلة بعد الانتهاء من تطوير تطبيق الهاتف
- 2 اجابة
-
- 1
-
للاسف لايوجد دورة لإطار عمل فلاتر في أكاديمية حسوب، يمكنك البحث عن مصادر تعلم في يوتيوب او مواقع أخرى، او توظيف شخص من مستقل لتعليمك ما تريده، و يمكنك بالطبع نشر اسئلة هنا لمواضيع و افكار برمجية لنشرحها لك و نساعدك في حل المشكلات التي تواجهك.
-
رسالة الخطأ تتعلق بالمنفذ الذي يعمل عليه الخادم ويقول blocked port. اي المنفذ الافتراضي 80 محجوز. حاولي إعادة تشغيل الجهاز سبب المشكلة استخدام برنامجين يحجزان نفس المنفذ (حاولي إغلاق skype) أو تشغيل نسختين من xamp نفسه أو تشغيل سيرفر ويب آخر بنفس الوقت
-
بالنسبة للغة ++C يوجد برنامج CppDroid أما بايثون يوجد Pydroid 3 جافاسكربت يوجد JavaScript For Android
- 3 اجابة
-
- 1
-
يوجد تطبيقات بالفعل، ولكن على الأغلب كل منهم خاص بلغة معينة، حاول البحث باستخدام اسم اللغة التي تريد التطبيق بها، يمكن أن تجد تطبيق خاص بها. لكن من الأفضل التعلم باستخدام الحاسوب
- 3 اجابة
-
- 1
-
جرب الاحتمالات الممكنة لقمية v ( كائن - مصفوفة ..) جرب المثال، ماذا تلاحظ؟ let v = [] if (v) {console.log('true')} فارغة ممكن null - undefined و محاولة الوصول للخاصية تعطي خطأ المهم عدم استدعاء خاصية لكائن لا يحوي قيمة
- 11 اجابة
-
- 1
-
لنراجع الشيفرة لديك، أنت تقوم بتعريف مصفوفة tasks لتضع فيها البيانات الجديدة ثم تخزنها نفسها في localStorage في المفتاح value هذا يحذف القيمة القديمة. لذلك يتوجب نقل العناصر من v إلى tasks أول تشغيل البرنامج ثم تتابع التعامل مع tasks let v = window.localStorage.getItem("value"); console.log(v); let tasks = Array(); tasks.push(...(v.split(","))); console.log(tasks); السطر التالي يعطي خطأ، نتأكد من أن v فيها قيمة قبل جلب طولها if (!v || v.length === 0) { console.log("tasks not found"); } !v => اختبار هل هي فارغة أو طولها صفر
- 11 اجابة
-
- 1
-
في حال طباعة طول مصفوفة data console.log(data.length); سوف يكون 62 وهو عدد الشخصيات، وفي حال طباعة data سوف تظهر النتائج على الشكل التالي: (مصفوفة كائنات) [ { char_id: 1, name: 'Walter White', birthday: '09-07-1958', occupation: [ 'High School Chemistry Teacher', 'Meth King Pin' ], img: 'https://images.amcnetworks.com/amc.com/wp-content/uploads/2015/04/cast_bb_700x1000_walter-white-lg.jpg', status: 'Presumed dead', nickname: 'Heisenberg', appearance: [ 1, 2, 3, 4, 5 ], portrayed: 'Bryan Cranston', category: 'Breaking Bad', better_call_saul_appearance: [] }, { char_id: 2, name: 'Jesse Pinkman', birthday: '09-24-1984', occupation: [ 'Meth Dealer' ], img: 'https://vignette.wikia.nocookie.net/breakingbad/images/9/95/JesseS5.jpg/revision/latest?cb=20120620012441', status: 'Alive', nickname: "Cap n' Cook", appearance: [ 1, 2, 3, 4, 5 ], portrayed: 'Aaron Paul', category: 'Breaking Bad', better_call_saul_appearance: [] }, ..... ...... .... ] فالسؤال ما هو الاسم الذي تريدينه من بين 62 شخصية؟ يمكن الوصول لشخصية معينة عبر دليل المصفوفة data 0-1-2-3 let character1 = data[0]; بهذه الطريقة سوف يحمل المتغير character1 كائن يمثل بيانات أول شخصية (كما في المثال السابق) وطالما أنه كائن JSON يمكن الوصول لخواص هذا الكائن عن طريق النقطة let name = data[0].name; or let name = character1.name; في حال أردت عمل فلترة ضمن المصفوفة نستخدم filter مع تمرير شرط ( رقم الشخصية) let character = data.filter(obj => obj.char_id == 1) console.log(character[0].name);
- 1 جواب
-
- 1
-
إن الطريقة fetch تقوم بإرسال طلب غير متزامن للخادم المتمثل في المسار الممرر لها، وتعيد كائن من نوع Promise ولكي نعمل resolve له، يتوجب انتظاره لينتهي تنفيذه، وذلك بوضع الكلمة المفتاحية await قبل استدعائه بالشكل التالي: const response = await fetch( "https://www.breaking.com/api/") أرجو التأكد من الرابط لأنه لا يعمل يمكن استعمال موقع json placeholder للتجريب الخطوة الثانية هي تحويل رد الخادم لكائن JSON ليسهل التعامل معه وتعريف المتغير data لأنه غير معرف لديك. const data= await response.json() لاحقاً يمكن طبع البيانات. ملاحظة: الموقع الصحيح هو: breakingbadapi.com الشيفرة النهائية: لاننسى استدعاء الدالة async function breaking_bad() { const response = await fetch("https://www.breakingbadapi.com/api/"); const data= await response.json() console.log(data); } breaking_bad()
- 1 جواب
-
- 1
-
عليك إرفاق الملفات كاملة، و تسليم المشروع، أي تسليم كامل الملفات. فريق مستقل يضمن حقوقك. أي لن يستطيع صاحب المشروع تحميل الملفات والاستفادة منهم أو سرقتهم و عدم الدفع. طالما تم توظيفك على المشروع فأنت بأمان، أما في حال كنت ضمن فترة النقاش لا ترسل أي ملفات ولا تنجز أي جزء من المشروع. عند موافقة صاحب المشروع على العرض يتم حجز أموال من رصيده حتى إنتهاء العمل من المشروع.
- 3 اجابة
-
- 1
-
عندما ينتهي المستقل من عمله 100% أو حسب المتفق عليه أثناء فترة تنفيذ المشروع (يجب أن تكون ضمن مرحلة التوظيف أي وافق صاحب المشروع على عرضك وليس قبل ذلك)، يقوم المستقل بإرفاق جميع الملفات المتفق عليها التي قام بإنجازها ثم يضغط على زر تسليم المشروع. خلال أسبوعين كحد أقصى يمكن لصاحب المشروع الإطلاع على العمل و تجريبه للتأكد من إنجاز المستقل للعمل كما يرغب، ثم يقوم صاحب المشروع بقبول الاستلام. في حال لم يرد صاحب المشروع أو ظهر أي خلاف في التسليم، يمكنك تقديم شكوى لمركز مساعدة مستقل، سوف يقومون بالاطلاع على المحادثة و الملفات و ما تم طلبه خلال المشروع و تم الاتفاق عليه. ثم يقرر مركز المساعدة النتيجة النهائية هل قام المستقل بإنجاز العمل كالمطلوب أو كلا. يمكنك قراءة قسم ضمان حقوقك من على موقع مستقل
-
ما الخطأ الذي يظهر؟ أرجو مشاركة تفاصيل أكثر
-
إن أفضل طريقة لإنشاء تطبيق React هو من خلال NodeJS - Npm وتثبيت المكتبات من خلالهم يوجد المكتبة create-react-app التي من خلالها يمكن إنشاء مشروع ابتدائي مع هرمية ملفات مناسبة و مرتبة للبدء بالتطوير، ننصب هذه المكتبة في الحاسوب من خلال CMD بالأمر: npm install -g create-react-app ثم ننتقل لمسار إنشاء المشروع و نقوم بالتالي: npx create-react-app my-app إنشاء المشروع cd my-app npm start تشغيله تقدم أكاديمية حسوب مجموعة شروحات عن React يمكن أن تجدها في دروس و مقالات البرمجة: باقي المقالات: ReactJS سؤال مشابه: أرجو البحث في الموقع.
- 1 جواب
-
- 2
-
مرحبا أحمد، في أي دورة أو محتوى تعليمي يوجد من الطلاب ما تناسبه الدورة و يتعلم منها بشكل جيد، والبعض لا يعجبه أسلوب مدرب ما أو يكون غير ملتزم ولا يتحلى بالصبر المناسب لعلوم البرمجة ليتحسن مستواه.. من الطبيعي لكل شخص يريد تعلم البرمجة، أن يختار مصدر موثوق و جيد. مدربي أكاديمية حسوب متواجدين طيلة الوقت يتابعون استفسارات الطلاب، ويقدمون شرح و مساعدة في حل أي مشكلة تواجه الطلاب. عند اشتراكك في الدورة سيكون أمامك متسع من الوقت للتعلم والدراسة، و الأكاديمية ملتزمة بأن تعيد لك الأموال في حال لم تعجبك الدروة و أردت إلغاء الاشتراك، وحتى بعد التخرج من المسار ب 6 أشهر إن لم تجد عمل خلال هذه الفترة. أرجو قراءة الأسئلة الشائعة ومعلومات دورة جافا سكربت بشكل جيد.
- 2 اجابة
-
- 1
-
أنت تقوم بإنشاء مصفوفة فيها عنصر بقيمة v والتي تكون null أول تشغيل البرنامج، فيكون tasks فيها عنصر وحيد فارغ let tasks = [v]; console.log(tasks); => v null tasks [null] length: 1 لذلك يمكنك بناء المصفوفة الفارعة من خلال باني المصفوفات في جافاسكربت let tasks = Array(); وسيكون: v null tasks [] length: 0
- 11 اجابة
-
- 1
-
يمكن عمل بيئة وهمية لكل مشروع، كي تستطيع تثبيت إصدارات مختلفة من نفس المكتبة لأكثر من مشروع مختلف حيث أن كل بيئة وهمية تعتبر بيئة مستقلة. والحل يدعم بقاء تشغيل الإصدارات القديمة من المشاريع في حال كان لها بيئة افتراضية خاصة، لأن تثبيت مكتبة من جديد بإصدار X مستعملة في مشروع قديم بإصدار Y سوف يسبب توقف عمله بسبب استبدال المكتبة القديمة بالإصدارا لجديد ومشاكل من هذا النوع
- 6 اجابة
-
- 1
-
إن List هي بنية معطيات مدعومة ضمن لغة برولوك، نضع فيها قيم مختلفة، وتتكون بشكل رئيسي من رأس القائمة head و الذيل وفيه بقية العناصر tail. التعامل مع القوائم في Prolog : يعبر عن القائمة الخالية ب [ ] أما القوائم غير الخالية فتأخذ الشكل: [Head |Tail] مثال: إذا كتبنا الحقيقة التالية: factlist([a,b,m,j,k]). ومن ثم سألنا الاستفسار التالي في مفسر ال Prolog : ?- factlist([Head|Tail]). سيكون الجواب : Head= a Tail= [b,m,j,k]. لتمييز نوع العناصر ذرات أما قوائم يمكن استخدام الإسنادات التالية: atom(X) تكون صحيحة إذا كان الوسيط فعلا ذرة. ولكن لا يمكن استخدام هذه الإسنادية مع الأرقام ! is_list(X) تكون صحيحة إذا كان الوسيط فعلا قائمة. ويمكن أن تكون عناصر القائمة أرقام مثال: ( تطبيق find في المثال الأخير) البحث عن عنصر ضمن قائمة: member( _ , _ ) للبحث عن عنصر ضمن قائمة. X قيمة نبحث عنها القائمة نقارن الرأس أي أول عنصر من القائمة مع العنصر الذي نبحث عنه، وفي حال لم يتم التطابق يتم البحث في باقي عناصر القائمة والتي هي Y (قائمة الذيل) نفس القائمة الأولى بدون أول عنصر member2(X,[X|_]). member2(X,[_|Y]):- member2(X,Y). أما Array: فهي غير موجودة من أصل اللغة، أي لا يمكن الحصول على قائمة مفهرسة (لا يمكن الوصول للعنصر 3 مباشرة) أي يتم التعامل مع القوائم بشكل قوائم مترابطة Linked List وعليك المرور عليهم بطريقة عودية من خلال استدعاء الدالة التي تقوم بالتجوال على القائمة مع تمرير عداد لمعرفة ترقيم العناصر أو فحص القيم الخاصة بهم. أي لتشكيل قائمة لها طول ثابت عليك تعريف هذا الموضوع برمجياً بشكل مخصص. أما menu هي عبارة عن قائمة اختيارات ممكنة للمستخدم، لتنفيذ إجراءات أو استعلامات محددة مسبقاً. يتم العمل بهذه menu على شكل حلقة تكرارية تطبع الخطوات الممكنة التي يقوم بها البرنامج ثم تستقبل دخل المستخدم و تنفذ الإجرائية ثم تعود لطباعة قائمة الاختيارات. تستخدم القائمة menu الأمر repeat للتكرار و المثال التالي لاستعراض قائمة اختيارات ثم تنفيذ فعل action محدد بالرقم المدخل من المستخدم. main :- repeat, % تكرار طباعة القائمة write('-------MENU-------'), nl, write('1. add'), nl, write('2. find'), nl, write('3. delete'), nl, write('4. exit'), nl, write('Choose : '), read(Z), % قراءة دخل المستخدم ( Z = 4 -> !, fail ; true ), % ايقاف البرنامج if Z = 4 action_for(Z), % تنفيذ الإجرائية fail. % إيقاف البرنامج لدخل 4 يكون الإجرائية أو الدالة action for مكتوبة من المبرمج مثال: action_for(X) :- write('Action for '), write(X), nl. ... سيكون التنفيذ: | ?- main. -------MENU------- 1. add 2. find 3. delete 4. Exit Choose : 1. Action for 1 -------MENU------- 1. add 2. find 3. delete 4. Exit Choose : 2. Action for 2 -------MENU------- 1. add 2. find 3. delete 4. Exit Choose : 4. no | ?-
-
ظهرت رسالة الخطأ التالية: Html Webpack Plugin: Error: html-webpack-plugin could not minify the generated output. In production mode the html minifcation is enabled by default. If you are not generating a valid html output please disable it manually. You can do so by adding the following setting to your HtmlWebpackPlugin config: | | minify: false | See https://github.com/jantimon/html-webpack-plugin#options for details. For parser dedicated bugs please create an issue here: https://danielruf.github.io/html-minifier-terser/ Parse Error: وسببها أن هنالك جزء من HTML غير مكتوب بطريقة صحيحة تماماً (هو صحيح لكن ليس 100%) وهو في السطر blog.html 87 : ModuleError: Module Error (from ./node_modules/html-loader/dist/cjs.js): Parse Error: <div class="card mb-3" "> <div class="card mb-3" "> ^^^ خطأ <div class="card mb-3"> الصحيح عندها يعمل build بشكل صحيح. ظهرت تنبيهات بشأن الأداء وحجم الصور، يمكنك تقليل حجم الصور و ضغطهم، ثم استخدام الصورة المضغوطة أو إبطال التحقق من ذلك بإضافة performance مع الخصائص التالية module.exports = { performance: { hints: false, maxEntrypointSize: 512000, maxAssetSize: 512000, }, ثم أصبح npm run build يعمل بشكل سليم. يمكنك نشر السؤال أسفل الدرس في حال كنت تدرسه وليس مشروع امتحان
-
تمام، ظهرت الصفحة، تأكديمن console لمسارات باقي ملفات التنسيقات و الصور و غيرها