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

Adnane Kadri

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

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

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

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

    51

كل منشورات العضو Adnane Kadri

  1. عملية التعلم يجب أن تتبع خطوطا عريضة ومراحل واضحة، ومثل هذا الشيء لا يمكن أن يتضح لك إلا من خلال معلم أو دليل يخبرك ما الخطوة الحالية وما هي متطلباتها وما الخطوة التالية لعملها أو تعلمها أو تطبيقها. ولذلك سوف تحتاج اتباع كورس أو دورة منظمة وممنهجة لكي يسعك دخول المجال الذي تجد أنك مهتم به. وهذا بشكل أساسي، فيما يلي بعض النصائح الجانبية التي تعينك في ذلك: التزم بـالاستمرارية طور مهارتي المرونة والصبر لديك ولا تستعجل العملية التدريب والممارسة العملية انخرط في المجتمعات البرمجية للاستزادة، يمكنك الإطلاع على المقالة التفصيلية التالية:
  2. أهمية الشهادة CS50 تعتمد على أهدافك الشخصية ومجال عملك والمجال الذي تستمد منه هاته الأهمية. فمن ناحية أنها تأسيس قوي فهي مهمة بطبيعة الحال، فهي تمنحك فهما قويا لأساسيات علوم الحاسب من مثل البرمجة وهياكل البيانات والخوارزميات. أما من ناحية دفعك إلى تعلم المزيد فهي أيضا كذلك. هذا بجانب المساهمة في سيرتك الذاتية، فقد تكون الشهادة مفيدة عند التقديم للوظائف أو الانضمام إلى برامج دراسات عليا. فهي تظهر الاستثمار في التعليم والتطوير المستمر بإيجابية على سيرتك الذاتية. ولذلك، فهي لا تقل أهمية عن أي شهادة أخرى مكافئة خصوصا لشهرتها، تأهيلا وتأسيسا وشهادة.
  3. اقتراح جميل، لربما يتم العمل على ذلك مستقبلا. حاليا، يمكنك التوصل إلى العديد من الطلبة عبر مجتمعات حسوب I/O فالكثير منهم يتواجد أو ينشط هنالك. يمكنك أيضا طرح انشغالاتك هنا في أقسام مختلفة من أقسام الأسئلة العامة، ستجد الكثير من الطلبة يشاركونك نفس الأفكار أو الاهتمامات.
  4. قد لا يكون تعلم بايثون وحده كافيا لعمل تطبيقات فعالة في مجال معين، فأنت ستحتاج بجانب ذلك الإحاطة ببعض أساسيات التعامل مع قواعد البيانات و اطار عمل في المجال المستهدف، بجانب بعض أساسيات المجال الذي تستهدفه. مثال: ان كنت تنوي تطوير تطبيقك على الويب، فأنت ستحتاج الإلمام بأساسيات تطوير الواجهات الأمامية. ان كان سؤالك بخصوص دورة تطوير التطبيقات باستخدام لغة بايثون، فالإجابة هي نعم. يتم اعتبار كل هاته النقاط في الدورة، ويتم تعليم الطلبة كل الجزئيات الاضافية التي يحتاجونها، وبذلك يتم تأسيس الطلبة في مجالات مختلفة تمكنهم من بناء تطبيقات فعالة في هاته المجالات. يذكر أن دورة تطوير التطبيقات باستخدام لغة بايثون تتوفر على المسارات التالية: أساسيات لغة بايثون تطبيقات عملية باستخدام بايثون أساسيات إطار العمل جانغو تطوير متجر إلكتروني باستخدام جانغو تطوير واجهة برمجية لتعديل الصور باستخدام فلاسك تطوير تطبيقات أودو بناء مدونة باستخدام فلاسك تحليل البيانات أساسيات تعلم الآلة Machine Learning يمكنك الإطلاع أكثر عنها من خلال: الرابط
  5. قم بربط ذلك مع عملية التسجيل، نفذ شيفرة ارسال البريد بعد شيفرة تسجيل مستخدم جديد وتوليد رمز token له.
  6. فكرة تأكيد الإيميل في مضمونها هي فكرة بسيطة ولا تحتاج إلا تطبيقا عمليا صحيحا وتكاملا بين مختلف مكونات التطبيق بصورة صحيحة. فيما يلي الخطوات العامة لذلك: في جدول المستخدمين أضف حقلا/عمودا يحمل قيمة بوليانية Boolean تعبر عما ان كان المستخدم حاليا قد قام بتأكيد عنوان بريده الإلكتروني أو لا. ولتكن email_is_verified وتحمل القيمة false بشكل افتراضي. يضاف أيضا حقل/عمود يحمل سلسلة نصية تعبر عن كود التفعيل الخاص بالمستخدم وليكن email_verification_token. في كل تسجيل جديد سوف يتم تعيين قيمة email_is_verified بـ false، كما يتم توليد سلسلة نصية عشوائية تعبر عن كود التفعيل. في كل تسجيل جديد يتم ارسال رسالة الى البريد الالكتروني في عنوان البريد المرفق، بحيث تحمل زرا يقوم بإعادة التوجيه إلى التطبيق حاملا قيمة رمز token كمعامل query param مثال: https://yourdomain.co/email/verify?token=PUT_TOKEN_HERE طبعا فإن الهيكلة الموافقة يتم بناءها وارسالها كرسالة HTML الى عنوان المستخدم. يقوم التطبيق بالمسار السابق بفحص قيمة token المرسلة في الطلب والتأكد مما ان كانت مطابقة لقيمة token المسجلة في قاعدة البيانات. في حال كان ذلك، يتم تأكيد عنوان المستخدم، وفي حال لم يكن يتم اخبار المستخدم بذلك. بين كل هذا وذاك، يجب بطبيعة الحال تقييد الوصول إلى بعض ميزات التطبيق للمستخدمين الذين لم يقوموا بتفعيل عناوين البريد الالكتروني الخاص بهم. وهي لا تكلف أي مال بطبيعة الحال، عدى تكاليف الاستضافة.
  7. بغض النظر عن المهمة او التوقيت المرتبط بعرض الاشعار، يمكنك استعمال واجهة Notification في جافاسكربت لإرسال إشعارات سطح المكتب في التطبيق. فيما يلي مثال فعال عن كيفية القيام بذلك: function notifyMe() { if (!("Notification" in window)) { // التحقق مما ان كان المتصفح يدعم الاشعارات alert("هذا المتصفح لا يدعم الاشعارات"); } else if (Notification.permission === "granted") { // التحقق مما ان كان قد تم منح قبول دفع الاشعارات من قبل // في حال ما كان ذلك const notification = new Notification("مرحبا"); } else if (Notification.permission !== "denied") { // طلب عرض الاشعارات Notification.requestPermission().then((permission) => { // في حالة القبول ارسال اشعار if (permission === "granted") { const notification = new Notification("مرحبا"); } }); } } يمكن استخدام هذا المثال بعفالية أكبر من خلال استعماله في سياق مناسب، مثل الذي ذكرته.
  8. لا يبدوا بالرابط المرفق أي مشكلة، يتم ارسال رد بشكل جيسون بشكل عادي تماما. يرجح أن هنالك مشكلة بالتعامل مع الرد من خلال شيفرة PHP لديك، قد يكون هنالك حاجة إلى استخدام json_decode لتحليل كائن جيسون واستخراج التواقيت المرادة، فيما يلي مثال عن كيفية ذلك بصورة صحيحة: <?php $endpoint = 'https://api.aladhan.com/v1/calendarByCity/2017/4?city=London&country=United'; $response = file_get_contents($endpoint); $data = json_decode($response, true); foreach ($data['data'] as $day) { $date = $day['date']['gregorian']['date']; $prayerTimes = $day['timings']; echo "تاريخ: $date <br>"; echo "مواقيت الصلاة:<br>"; foreach ($prayerTimes as $name => $time) { echo "$name: $time<br>"; } echo "<br>"; } يتم هاهنا استعرض مختلف تواقيت الآذان لسنة 2017 في المدينة المستدفة والبلد المستهدفة,
  9. ضمن كل فيديو من الدورة يوجد هنالك قسم كامل لإنشغالات الطلبة وأسئلتهم والمشاكل التي يواجهونها. قم بالنزول أسفل الفيديو وستلحظ وجود قسم بعنوان "قسم تعليقات الطلبة"، أسفل الصفحة تماما سوف يكون هنالك نموذج يمكنك من عليه كتابة تعليقك واضافته. رغم هذا إلا أن تعليقك لن يظهر فهو لا يزال يحتاج موافقة احد المشرفين والمدربين. بطبيعة الحال، سوف ينتبه المشرفون إليه وسيتهمون بتقديم المساعدة لك في اللحظة. يمكنك الإطلاع عن تفاصيل ذلك وأكثر في قاعدة المعرفة > الدورات > كيف أتواصل مع المدرّبين.
  10. هنالك خلط قليلا في التعامل مع الوعود Promises في الشيفرة الخاصة بك، فأنت تقوم باستقبال عائد الطلب دون إعادته كخرج للدالة. لا داعي من عبارة then في الشيفرة الأولى، قم بتعديل الشيفرة الخاصة بك لتكون على نحو: let getPost = async (id) => { let res = await axios.get(baseURL + '/posts/' + id) return res.data.data } const viewAllComments = async (id) => { let posts = await getPost(id) console.log(posts) } viewAllComments(99)
  11. يمكنك الاستعانة بـ netlify كحل سريع، يوجد أيضا استضافات تقدم خدمات او خطط مجانية من مثل: Render Fly.io Railway Glitch بخصوص الاستضافات المدفوعة، لعل الأكثر شيوعا حاليا هي منصة Digital Ocean. بحيث تقوم بإدارة البنية التحتية الخاصة بتطبيقك (اعتماديات نود) وتشغيل التطبيق على الخادم، يوجد أيضا: استضافة بلوهوست Bluehost استضافة هوست قيتر Hostgator هوستنجر Hostinger A2 Hosting
  12. مرحبا زياد، سعيدون بتأثير الأكاديمية على درجاتك العلمية وعلى مستواك في المجال، سيدفع هذا القائمين على الأكاديمية إلى بذل المزيد في سبيل الطلبة والمحتوى العربي. بخصوص التقنيات الجديدة، فهي مضمنة بالفعل ويتم تحديث المحتوى الرقمي في الأكاديمية بما في ذلك الدورات بشكل دوري ودائم. فمكتبة رياكت مثلا يتم التعرض لها في مسارات عديدة من دورة تطوير التطبيقات باستخدام جافاسكربت. اذ تتوفر على: 40 درس تأسيسي في أساسيات رياكت بإجمالي ثلاث ساعات وربع. 64 درس يتم فيها بناء تطبيق دردشة يشبه whatsapp باستخدام React و NodeJS و socketIo. 49 درس آخر يتم فيها التطرق لواحد من أشهر أطر عمل رياكت هو إطار NextJs فضلا عن التحديثات التي شملت التعامل مع تقنيات الذكاء الصناعي من قبل OpenAI في تطبيقات NextJS.
  13. المشكلة تكمن في استدعاءك للتابع listen، أصلح السياق التالي: app().listen(3000 ليصبح: app.listen(3000 ثم أعد تشغيل الخادم.
  14. إليك أوجه الفرق بشكل مبسط: هندسة البرمجيات (Software Engineering): تهتم بصورة أولى بتصميم وتطوير البرمجيات بشكل هندسي ومنهجي. والهدف الأساسي هو إنتاج برمجيات ذات جودة عالية وقابلة للصيانة. المهندسون البرمجيون يعملون على تطوير البرمجيات والتحكم في العمليات الهندسية للتطوير والصيانة. وتتضمن المهارات في تصميم البرمجيات، وتطوير البرمجيات، وإدارة المشاريع البرمجية، واختبار البرمجيات وما نحوها من مهارات. علوم الحاسب الآلي (Computer Science): تركز علوم الحاسب الآلي على دراسة النظريات والمفاهيم والأسس التي تقف وراء علم الحاسب والبرمجة. تتضمن دراسة الألغام المعلوماتية والتطبيقات الحاسوبية. علماء الحاسب يقومون بالبحث والتطوير ودراسة النظريات الحاسوبية والعمليات الحاسوبية. تشمل المهارات الرياضيات، والبرمجة، والتحليل الحاسوبي، والذكاء الاصطناعي. تكنولوجيا المعلومات (Information Technology): تركز على تقديم ودعم حلول تكنولوجيا المعلومات وأنظمة تكنولوجيا المعلومات لتلبية احتياجات الأعمال. محترفو تكنولوجيا المعلومات يديرون ويدعمون أنظمة المعلومات والشبكات ويقومون بتحليل احتياجات الأعمال وتقديم حلول تكنولوجيا المعلومات. تتضمن مهارات الإدارة، والتشغيل، وتكنولوجيا المعلومات، والأمن السيبراني.
  15. مثلما يتضح وفق رسالة الخطأ فإن الدالة التي تحاول تمرير مخرجات الدالة sum عبرها غير معرفة، يرجح أنك نسيت تعريفها أساسا أو تقوم بذلك بشكل خاطئ. قم أولا بتصريح هاته الدالة: function printNumper(input){ console.log(input) } ثم سيسعك استعمالها لاحقا: function sum(f,s){ return s + f } printNumper(sum(2,4))
  16. يمكنك أيضا اضافة طبقة سوداء بحيث تتموضع بشكل نسبي داخل حاوية الصورة، فيكون: <div class="img-container"> <img src="path/to/your-image.png" /> <div class="overlay"></div> </div> و لتعطها التنسيقات التالية: .overlay{ position: absolute; top:0; right:0; height:100%; width:100%; } أيضا لا تنسى إعطاء الحاوية الوضعية relative .img-container{ position: relative; } بهذا الشكل سوف يمكن للحاوية أن تحتوي طبقة سوداء تجعل الخلفية أو الصورة أكثر تعتيما. طبعا يمكنك التحكم في موضع الصورة على المحور z باستخدام الخاصية z-index.
  17. الـ freemium هو واحدة من أنواع النسخ المصغرة للمنتج MVP، وهي نسخة مقللة من المنتج تخدم نفس الغرض وتمرر نفس القيمة الى جمهور المنتج المستهدف .. ويقدم أحيانا للاستفادة من آراء فعالة حول المنتج feedbacks غرض تطويره أو تجميع استطلاعات حوله أو لتحقيق أغراض أخرى تخص عملية ادارة المنتج الرقمي .. ولذلك فإنه من المجدي بطبيعة الحال اطلاق نسخة مجانية من المنتج أو نسخة مقللة بامتيازات محدودة لذلك. اذ يمكن لذلك أن: يزيد من فرص المنتج في جلب اهتمامات الجمهور المستهدف يعطي فرصة للمستخدمين النهائيين لتجربة المنتج وبالتالي الحصول على تقييمات فعالة يقوي العلاقة بين المستخدمين النهائيين والمنتج
  18. مشكلة cors -وتعني "Cross-Origin Resource Sharing"- هي مشكلة شائعة، أين يتم حظر الطلبات من نطاق مختلف. لتلافي هاته المشكلة في تطبيقات NodeJS يقترح استخدام المكتبة cors عادة، قم بتتثبيتها: npm install -S cors ثم في ملف الخادم الرئيسي قم باستيرادها: import cors from 'cors'; وقم باستعمالها من طرف التطبيق: app.use(cors()); أعد تشغيل الخادم وانظر ما ان اختفت المشكلة.
  19. شراء نطاق (Domain) ليس ما يمنحك حقوق ملكية كاملة على الاسم بحد ذاته. فعند شراء نطاق، فإنك تكون مؤهلاً لاستخدام هذا النطاق كعنوان لموقع الويب الخاص بك أو للإيميلات الخاصة بك، ولكن ليس ذلك بالضرورة يمنحك حقوق ملكية فعلية على الاسم. إذ أن حقوق الملكية الفعلية للاسم يمكن أن تتغير باختلاف السياق القانوني والقوانين المحلية في بلدك. للمطالبة بحقوق ملكية قوية على النطاق، يجب عادةً تسجيل العلامة التجارية (Trademark) الخاصة بالاسم والمرتبطة بنشاطك التجاري. هذا سيساعدك على حماية الاسم من الاستخدام غير المصرح به من قبل الآخرين. بمعنى، أن شراء نطاق يمنحك الحق في استخدامه للأغراض التي تمثلها موقعك أو خدمتك على الإنترنت، ولكنه لا يمنحك حقوق ملكية فعلية على الاسم خارج هذا السياق. للمزيد من الأمان وحماية حقوق الملكية الفكرية الخاصة بك، يجب التفكير في تسجيل العلامة التجارية المرتبطة بالنطاق إذا كنت تعتزم استخدامه لأغراض تجارية معينة. بعض الخطوات العملية لذلك ذكرها المدرب مصطفى في تعليق مصطفى.
  20. كلاهما معروف بكفاءته في التعامل مع تحميل الملفات وادارتها.، وقد لا يلحظ اختلاف ما بينهما في المشاريع ذات الحجم الصغير والمتوسط، ولكن قد تكون هنالك بعض الفروقات في الآداء والميزات الاضافية كلما ازداد توسع المشروع وحجمه. ولكن عموما: بخصوص Multer: يعد multer من أكثر حزم تحميل الملفات شيوعًا في Node.js ومعروف بكفاءته وقدرته على التعامل مع الرفع المتعدد. يوفر مجموعة متنوعة من الخيارات لتكوين سلوك تحميل الملفات بما يناسب احتياجاتك. يدعم تخزين الملفات في مكان مخصص مثل القرص الصلب أو خدمات تخزين سحابية مثل Amazon S3 أو Google Cloud Storage. قد تحتاج إلى برمجة إضافية لمعالجة الأخطاء وإدارة الملفات المرفوعة والتحقق من أمانها وما نحو ذلك، قد يعد عيبا أحيانا ولكنه أيضا ميزة من حيث القدرة على تخصيص مثل هاته الجزئيات بحسب حاجة المشروع. بخصوص Express-Uploader: express-uploader هي مكتبة تساعد في تبسيط عملية تحميل الملفات في تطبيق Express.js. تقدم واجهة أكثر بساطة واستخدامًا بالمقارنة مع multer. يمكن أن يكون خيارًا جيدًا إذا كنت تبحث عن شيء سريع وبسيط لمشروعك الصغير. تحتوي على مجموعة محدودة من الخيارات والميزات مقارنة بـ multer، وقد تكون أقل قوة ومرونة للمشاريع الكبيرة والمعقدة.
  21. ان كنت تقصد بعد اتمام دورة ما من دورات الأكاديمية، فإن الأكاديمية تضمن لك استعادة استثمارك خلال ستة أشهر، فبعد حصولك على الشهادة، وإن لم تحصل على عمل خلال ست أشهر من بعد التخرج تغطي ميزانيته قيمة الدورة التي دفعتها، فسيعاد لك ما دفعته في الدورة. اذ يتم توجيهك بعد التخرج والمتابعة معك لحد تحصلك على فرصة عمل تغطي ما دفعته، هذا هو الأمر ببساطة. يمكنك أيضا الاستفادة من الأجوبة على الأسئلة التالية:
  22. يبدوا أن التصميم يخص قاعدة بيانات لتطبيق أفلام أين يقوم المستخدمون بإنشاء قوائم لمشاهدة الأفلام يمكن أن تسع أكثر من فيلم ويمكن لكل فيلم أن يوضع في العديد من قوائم المشاهدة .. في نفس الوقت يمكن تنظيم هاته الأفلام في قوائم. مبدئيا لا مشكلة بالتصميم. اذ يتم اعتبار: العلاقة بين انموذج بيانات المستخدم وقائمة المشاهدة كعلاقة one to one، أين يمتلك كل مستخدم قائمة مشاهدة واحدة. العلاقة بين انموذج بيانات قائمة المشاهدة والأفلام كعلاقة many to many، أين يمكن أن تسع قائمة ما العديد من الأفلام وفي نفس الوقت يمكن لفيلم ما أن يوضع في العديد من قوائم المشاهدة. العلاقة بين انموذج بيانات القائمة والأفلام كعلاقة many to many، أين يمكن أن ينتمي الفيلم لأكثر من قائمة وفي نفس الوقت يمكن لقائمة ما أن تحتوي العديد من الأفلام. يتم توصيف جداول وسيطة لمقاربة علاقة many to many بصورة صحيحة. رغم هذا، إلا أنه يوجد بعض الملاحظات التي تخص التصميم: لا يظهر أن هنالك داع من خاصية movies_ids في انموذج بيانات قائمة المشاهدة watch_list، اذ تربط هذا الأخير مع انموذج الفيلم movie علاقة many to many، ولذلك فإنه سيكون من السهل الاستعلام عن الأفلام الخاصة بالقائمة دون الحاجة إلى حقل يميز ذلك في انموذج القائمة. لا يتضح الفرق بين انموذج قائمة المشاهدة watch_list وانموذج القائمة list، قد يمكن التخلي عنها في حال لم تكن تختلفان عن بعض. بخصوص التوسع في التصميم، ما عليك إلا إضافة المزيد من النماذج واعتبار علاقات فعالة ما بين نماذج البيانات.
  23. نظام مثل نظام ادارة المؤسسات التعليمية غالبا ما لا يأخذ الكثير من الوقت والجهد، فالمكونات الشائع العمل عليها هي جزئيات بسيطة ولا تنطوي على تعقيدات كثيرة - طبعا فإن المقصود هاهنا هو النسخة الأولية من هاته النظم -، بمعنى أنها لن تأخذ وقتا أطول من المتوقع ما ان تم العمل بوتيرة جيدة. وان شئت اختصار الوقت في العمل على النظام كاملا دون أي خبرة بالواجهة الخلفية فستحتاج العمل على واجهة التطبيق الأمامية وإتمام كل ما يخصها من واجهات الطلاب، الأساتذة والمدراء وواجهة الموقع الأساسية وما نحوها .. ثم سيكون لاحقا العمل على الواجهة الخلفية أخف وأسرع. فيما يلي بعض الخطوات العامة لذلك: أنشئ مجلد مشروع الواجهة الأمامية وقم بهيكلة الملفات بشكل صحيح. ضع ملفات الأصول من مثل الصور والأيقونات وملفات الخطوط بمجلد منفصل. ضع ملفات المكتبات وملفات التنسيقات بمجلدات منفصلة. احفظ المشروع في مستودع على الغيتهب. أنشئ اللبنات الأولى فيه ثم طوره باستمرار. اللحظة التي تتعلم فيها تطوير الواجهات الخلفية سوف تكون على إلمام بكيفية ربط هاتين الواجهتين.
  24. رغم أن السؤال قد لا يخص المواقع على منصة بلوقر على وجه الخصوص، فيما يلي بعض الخطوات العامة للتعامل مع هاته الجزئية: اختيار قالب بسيط وسريع تقليل حجم الصور واعتماد قياسات صور أقل استخدام خدمة استضافة اسرع ضغط المحتوى وتقليله استخدام شبكة توصيل المحتوى (CDN) للتعامل مع ملفات الأصول من مثل ملفات الجافاسكربت الخارجية وغيرها تفعيل تخزين المتصفح (Browser Caching) تجربة الأداء وتحليل الأخطاء، بالاعتماد على أدوات من مثل Google insights والالتزام بالنصائح المشار إليها هنالك
  25. سؤالك غير واضح جيدا ويحتاج تفصيلا أكثر، ان كنت تحاول البحث عن طريقة لهيكلة مشروع PHP فأنت في الغالب سوف تحتاج التعامل مع نمط تصميم شائع معين، من مثل نمط MVC الذي يقتضي فصل مكونات التطبيق إلى ثلاث: النموذج (Model): يمثل النموذج البيانات والمنطق الأساسي للتطبيق.يقوم بمعالجة وإدارة البيانات والتفاعل مع قاعدة البيانات إذا كان ذلك ضروريًا. العرض (View): يمثل العرض وواجهة المستخدم (UI) للتطبيق. يتعامل مع عرض البيانات وتقديمها للمستخدمين بشكل مناسب. يتفاعل مع المستخدم ويمكنه إرسال طلبات إلى المتحكم للتحكم في التطبيق. المتحكم (Controller): يعمل المتحكم كوسيط بين النموذج والعرض. يتلقى الطلبات من العرض وينفذ العمليات المنطقية اللازمة. يحدد أي نموذج وأي عرض يجب استخدامهما وكيف يجب تنسيقهما معًا. طبعا فإن هاته المكونات الثلاث سوف تهتم بالتخاطب فيما بينها بشكل فعال، وكل هذا يكون لخدمة أغراض ومهام معينة من مثل ما ذكرت: عرض البيانات أو المعلومات بحسب صلاحيات المستخدم.
×
×
  • أضف...