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

Adnane Kadri

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

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

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

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

    51

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

  1. ما تتعلمه في الدورة هو الأعم والأشمل، أما طلبات العملاء فهي قد لا تكون بالضرورة عن الأشياء العامة وغالبا ما تكون جزئيات دقيقة أو طلبات محددة في تفرعات. فعلى سبيل المثال، توصيف المشروع الذي أضفته هو ليس إلا برمجة وهيكلة وتصميما باستخدام التقنيات التي تعلمتها فقط، سوى أن التصاميم التي تكون موجهة لمتاجر سلة هي تخصيص للمتاجر التي بنيت على منصة سلة ، فأنت ستحتاج فقط كتابة css أو custom HTML وفق المعايير التي تفرضها سلة فقط. نفس الشيء بالنسبة لمثلها من المنصات والمتاجر، ما هي إلا css التي تعرفها.
  2. قد أحسنت الاختيار بأخذك لدورة علوم الحاسب مع دورة أخرى، فعلوم الحاسب والدورة في نفسها يعتبران توطئة لأي مجال برمجي تود الدخول فيه، بما في ذلك المجالات التي يتم التعرض لها والتكوين فيها في دورات الأكاديمية الأخرى. الاختيار بين جافاسكربت، بايثون وواجهات الاستخدام هو واحد من أكثر الأسئلة تكررا في الأكاديمية، والحسم فيه غالبا ما يكون من وجهة نظر ذاتية، بمعنى أن ما ستختاره سيكون بناءا عليك وعلى ميولاتك وعلى ما تريد أن تكونه مستقبلا. فإن كنت تريد أن تصبح مطور بايثون فستكون دورة بايثون مناسبة لك. أما ان كنت تريد احتراف واجهات الاستخدام وأن تصبح مطور فرونت أند ستكون دورة واجهات الاستخدام مناسبة لك. أما ان كنت تجد نفسك تميل أكثر الى جافاسكربت فما عليك إلا أخذ دورتها لبرمجة وتصميم تطبيقات ويب، موبايل وسطح مكتب باستخدام تقنيات وأطر عمل جافاسكربت.
  3. الخطأ الذي تواجهه يشير إلى مشكلة في عملية التواصل عبر SSL (Secure Sockets Layer) مع مضيف بعيد (Remote Host) أثناء محاولة تشغيل تطبيق Flutter باستخدام Android Studio. هذا الخطأ قد يحدث لعدة أسباب محتملة، وعموما، تأكدي من التالي: تحديث Android Studio وFlutter: تأكد من أنك تستخدم أحدث إصدار من Android Studio وFlutter. قم بتحديثهما إذا لزم الأمر. تحديث Gradle: تحقق من أن لديك أحدث إصدار من Gradle المثبت. يمكنك تحديثه من خلال ملف gradle-wrapper.properties في مشروعك. تحديث SDK والأدوات: تأكد من أنك قمت بتحديث Android SDK وجميع الأدوات المرتبطة بها إلى أحدث إصدارات. معالجة مشكلات الاتصال: قد يكون هناك مشكلة في اتصال الشبكة أو البروكسي. تأكد من أن اتصال الإنترنت لديك يعمل بشكل صحيح وأنك غير مقيد ببروكسي. إعادة بناء المشروع: قم بمسح مجلد .gradle في مجلد مشروعك، ثم حاول إعادة بناء المشروع.
  4. مصطلح وفكرة "التغليف" (Encapsulation) لا تختص بها بايثون على وجه الخصوص، بل هي أعم وتشمل كامل اللغات البرمجية التي تدعم البرمجة الكائنية التوجه. فهو يشير إلى مفهوم يهدف إلى حماية وتقييد الوصول إلى البيانات والعمليات داخل الكائنات (Objects)، وذلك من خلال تقييد الوصول المباشر إلى المتغيرات والدوال في الكائنات. يتم تحقيق التغليف عادة باستخدام الأنواع المختلفة من محددات الوصول (Access Modifiers) مثل public و private و protected، فهي ما تحدد طريقة وصلاحيات الوصول إلى هاته المتغيرات. مثال نظري: لنفترض أن لدينا تطبيقًا لإدارة معلومات الموظفين في شركة. في هذا التطبيق، لديك كائن "موظف" يحتوي على معلومات مثل الاسم والراتب والتاريخ الذي تم توظيفه فيه. تريد حماية بعض هذه المعلومات لضمان الأمان والخصوصية. هنا سيمكن توظيف فكرة التغليف لتحديد البيانات التي يتطلب حمايتها بداخل هذا الكائن، وبالتالي إمكانية وكيفية الوصول إليها من خارج الكائن.
  5. يحتمل أن ما يحدث هو بسبب الكاش فقط، جرب محوه عن طريق الأوامر: git rm -r --cached . git add . git commit -m "Update .gitignore" يحتمل أيضا أنك قد قمت مسبقا بدفعه ثم توقفت عن ذلك بعد اضافته الى gitignore، قد تحتاج حذفه من المستودع المحلي ثم البعيد (لا أقصد مجلد العمل) عن طريق تنفيذ الأوامر: git rm config/default.json git commit -m "Remove the file" git push -u origin main
  6. بجانب العبارة النمطية التي اقترحها المدرب مصطفى، يمكنك ايضا استعمال هاته العبارة لذات الغرض: ^(.*?)((0|1)?\d)/((0|1|2|3)?\d{1})/((19|20)\d{2})(.*?)$ حيث: ^: يرمز إلى بداية السلسلة. (.*?): هذا الجزء يستخرج أي محتوى في النص. ((0|1)?\d): هذا الجزء يمثل الشهر في الصيغة (dd/mm/yyyy) أو (mm/dd/yyyy). يتم تمثيل الشهر بالأرقام من 1 إلى 12. ((0|1)?\d) يلتقط رقم الشهر، وقد يكون في الصيغة المفتوحة (مثل 03 أو 3) أو المغلقة (مثل 12). ((0|1|2|3)?\d{1}): هذا الجزء يمثل اليوم في الصيغة (dd/mm/yyyy) أو (mm/dd/yyyy). يتم تمثيل اليوم بالأرقام من 1 إلى 31. ((0|1|2|3)?\d{1}) يلتقط رقم اليوم، وقد يكون في الصيغة المفتوحة (مثل 07 أو 7) أو المغلقة (مثل 25). ((19|20)\d{2}): هذا الجزء يمثل السنة في الصيغة (dd/mm/yyyy) أو (mm/dd/yyyy). يلتقط السنة في القرنين 1900 أو 2000. (.*?): هذا الجزء الثاني يستخرج أي محتوى في النص. $: يرمز إلى نهاية السلسلة.
  7. انظر ما ان كنت تستوفي شروط الامتحان والحصول على الشهادة وتقدم لذلك، سوف يمكنك إعادة الاختبار في حالة الفشل. يذكر أن شروط اجتياز الاختبار هي: إتمام أربعة مسارات تعليمية على الأقل التطبيق العملي مع المدرب، والاحتفاظ بالمشاريع العملية الناتجة لإرسالها للمراجعة رفع المشاريع على حسابك على GitHub ولذلك فإن المشاريع التي ستقوم بتسليمها سوف تكون بشكل مستودعات غيتهب وليس ملفات مضغوطة، وهذا بالنسبة لمشاريع الدورة، أما بالنسبة لمشروع التخرج فسوف يتم التنسيق معك بشكل فردي واستلامه منك بعد التواصل معك. بخصوص النسيان، فهو أمر طبيعي ولا يجب عليك الالتفات إليه، يكفي أن تكون قد اجتزت هاته المسارات بعد اسيتعابها وفهم ما تم التعرض له من مادة علمية. قد يكون من الجيد المراجعة قبل اجتياز الاختبار نعم، خصوصا في المرحلة الثانية منه أين يتم تحديد موعد لاجراء محادثة صوتية لمدة 30 دقيقة يطرح المدرب فيها أسئلة متعلقة بالدورة ويناقش معك ما نفذته خلالها. ولذلك فإن الخطوة التالية الصحيحة هي التقدم للإمتحان وبعد ضبط الموعد سيمكنك المراجعة وإعادة الاطلاع على المسارات السابقة.
  8. أظن أن تعلم css نفسها يعزز من فهم HTML على نحو عميق، فأنت تستعمل العناصر ومحدداتها لتوصيف قواعد تنسيق، بمعنى أنك تنطلق بالفعل من الهيكلة إلى التصميم، ولذلك فإنك تقوم ضمنيا بتطبيق HTML وتعزيز فهمها وترسيخ مفاهيمها بتعلمك لـ CSS وممارستها. أما بالنسبة للشك فهو أمر طبيعي يحس به أي متعرض لمجال جديد مهما كان، ولذلك فإنه لا يجب عليك القلق بشأنه وما عليك إلا مواصلة المسير والمرور الى المسارات التالية مباشرة.
  9. يتم تطبيق الخاصية على الأب ويؤثر ذلك بطبيعة الحال على العناصر الأبناء، من حيث تموضعها وتوزيعها سواء على المحور الأفقي أو العمودي بداخل هذا الحاوي الأب. ولذلك فإن تأثيرها يظهر على الأبناء في حين أنه يتم تطبيق الخواص على الأب. على الرغم من ذلك، يمكنك أيضًا استخدام بعض الخصائص الأخرى في العناصر الابناء لتخصيص التصميم بشكل أفضل. مثلاً، يمكنك استخدام الخصائص المُشابهة لـ Flexbox مثل align-self و order لضبط محاذاة وترتيب العناصر داخل الكونتينر. مثال: نفترض أن لدينا كونتينر (عنصر أب) يحتوي على عدة عناصر أبناء (عناصر فرعية) ونرغب في استخدام تقنية Flexbox لتوزيعها وتنسيقها: <div class="container"> <div class="child">عنصر 1</div> <div class="child">عنصر 2</div> <div class="child">عنصر 3</div> </div> .container { display: flex; align-items: center; /* محاذاة العناصر عموديًا في المنتصف */ } .child { padding: 10px; background-color: #f0f0f0; } النتيجة:
  10. مستويات العملاء في إدارة عملية التطوير المنتج غالبا ما تكون متباينة، ولذلك فإنك قد تصادف من يتوفر على كامل الملفات والأدوات اللازمة لتنفيذ المشروع وقد تصادف من لا يعرف من المشروع إلا اسمه. في مثل هاته الحالات، قد لا يكون للعميل تصور كامل عن ما يريده بالضبط تماما، أو أنه يعرف ولكنه لا يجد الطرق اللازمة لوصف ذلك، وهو الغالب. فيما يلي بعض الخطوات العملية التي يمكنك بها استفتاء رأيه قبل الإنطلاق في التنفيذ لتلافي أي سوء تفاهم لاحقا: اسأله ما ان كان يرى موقعا او تطبيقا مشابها لفكرته، وحاول فهم النقاط التي يريد تطبيقه أن يتميز بها. اعرض عليه مجموعة من الأمثلة والصور الجاهزة واجعله يختار فيما بينها. ان كنت تجيد استعمال تطبيقات مثل figma، يمكنك القيام بذلك له واحتساب العمولة الاضافية. اتركه على اطلاع بتقدم المشروع وراسله بتقارير يومية ودورية لاختبار مدى رضاه عن المشروع وان كان ذلك ما يريده حقا.
  11. فهمك تقريبا صحيح، فبإستعمالك السياق التالي: car.key أنت تحاول قراءة الخاصية key من الكائن car، فإن كان الكائن car هو ما كالتالي: const car = { key: 'value', color: 'blue', brand: 'Toyota' }; كان عائد car.key هو 'value' أما السياق التالي: car[key] فهو سيعني قراءة الخاصية الموافقة لقيمة المتغير key. فإن كان المتغير key هو ما كالتالي: var key = 'brand'; فإن الموافق لـ car[key] سيكون هو 'Toyota' وليس 'value'
  12. ولما السرعة؟ اعلم أن المهارات سريعة وسهلة التعلم والاكتساب فيها تنافس كبير وقد لا تجد نفسك مع الكفاءات التي تشتغل في سوق العمل. ولذلك فإن الاستعجال لا طائل منه، فالمهارات النادرة هي المهارات صعبة التعلم، وهو ما يعطيك قيمة مضافة في سوقك المستهدفة. عموما، يمكنك البدء مع دورة تطوير واجهات المستخدم فهي الأكثر تخصصا في تطوير الواجهات الأمامية. وبها سيمكنك التحصل على المعارف والمهارات اللازمة للدخول في سوق العمل الفعلي. أما عن مسألة الوقت، فللأسف لا يوجد حل سحري لذلك. سوف تحتاج وقتا معتبرا لكي يمكنك البذل في المجال الذي تريد أن تشتغل فيه، ولا يوجد من يريد من قضى شهرا في تعلم شيء ما ليقوم له بذلك.
  13. وعليكم السلام، في كل دورات الأكاديمية يوجد فريق متكامل يعمل بتنسيق عال على إجابة الطلبة عن تساؤلاتهم التي تطرأ عليهم خلال الدورة، ولمساعدتهم في حل مشاكلهم طوال الدورة. اذ أن أغلب الأسئلة يتم تقديم إجابة لها فور طرحها في مدة زمنية لا تتعدى في الغالب النصف ساعة - قد تأخذ بعض المشاكل المعقدة الأخرى أكثر قليلا. يتم ذلك عن طريق نشر الطالب لتعليق جديد في قسم يظهر أسفل كل فيديو هو قسم "تعليقات الطلبة"، ثم يتم الموافقة على نشر تعليق الطالب فورا ويهتم أحد المدربين النشطين حالا بتقديم إجابة له أو المتابعة معه. هاته هي الفكرة باختصار. تفاصيل: https://support.academy.hsoub.com/how-to-ask-in-courses
  14. أظن أن هنالك بعض حلول الدفع في المصر للتعامل بعملات مثل الدولار، اليورو أو غيرهما. يوجد مثلا: البنك الأهلى بنك QNB بنك الإسكان والتعمير بنك CIB المصرف المتحد أظن أن بعضها يدعم الدفع عبر البطاقات الإئتمانية بالدولار. كما يمكنك على كل حال التواصل مع الدعم بخصوص هاته الجزئية.
  15. الإجابة باختصار هي: لا، لا يفترض أن يمتلك موقع بمثل هاته الوظيفية قاعدة بيانات، قد يكون من الضروري امتلاك واجهة خلفية للقيام بكل منطق التجريف وتنقيح البيانات، ولكن لا يبدوا لقاعدة البيانات هنا أي دور. قد يمكن استعمال قاعدة البيانات مثلا في أرشفة هاته الأسعار وعرضها كتأريخ لاحقا، وبما أنك ذكرت أن الموقع لا يحفظ الأسعار السابقة فهاته الجزئية هي الأخرى مستبعدة.
  16. استخدام User::findOrFail($id) هو الأكثر أمانًا من User::find($id) عند البحث عن سجل محدد في قاعدة البيانات. وهذا لأن هذا الأخير يقوم بإعادة قيمة Null في حالة عدم وجود سجل، على عكس الأول الذي يقوم برمي استثناء ModelNotFoundException. لذلك، عندما تكون متأكدًا أن السجل المطلوب يجب أن يكون موجودًا -مثل أول صف مثلا من جدول إعدادات أو تفضيلات الموقع-، فإن استخدام `User::findOrFail($id)` يساعد على توفير شيفرة أكثر أمانًا وأكثر دقة في التعامل مع حالات عدم وجود السجل. وهذا لكي لا تضطر إلى التعامل مع حالات Null في ملفات المتحكمات أو العروض.
  17. قد تحتاج دورة ممنهجة ومنظمة أحسن من التعرض لمفاهيم وجزئيات المجال بنفسك، عموما، يتم التطرق لهاته المفاهيم في مثل هاته الدورات: أساسيات الحاسب ونظام لينكس. أساسيات الشبكات والبروتوكلات. بعض مهارات البرمجة. أساسيات الأمان السيبراني. قواعد البيانات. التطبيق العملي للهكر الأخلاقي أو ما سمى PEH. أظن أن الطريق عام والإبداع والاحتراف فيه يحتاج منك رسم طريق خاص، طبعا يكون هذا بعد إلتقاط أساسيات المجال. ابحث عن استاذ او دورة منظمة أو ممهنجة. قد تكون دورات قوقل مناسبة لك. اقرأ ايضا: https://academy.hsoub.com/questions/24791-أفضل-كورس-لتعلم-مجال-الأمن-السيبراني-وتخصص-الـ-ethical-hacker/
  18. مثل هاته المشكلة عامة جدا، ولا ترتبط بمشكلة محددة على وجه الخصوص. ولكن فيما يلي بعض المشاكل المحتملة التي تؤدي الى مثل هاته المشكلة: مسار الصورة غير صحيح اسم الملف أو الامتداد غير صحيح خطأ في كتابة اسم الملف أو مسار الصورة مثل كتابتها بأحرف صغيرة أو كبيرة أو مسافات مشكلة في ملف الصورة نفسه: تأكد من أن ملف الصورة نفسه غير تالف أو معطوب. قد يكون من العملي لو قمت بإرفاق صورة عن بنية ملفاتك بجانب صورة عن الشيفرة المسؤولة.
  19. المشكلة عامة وتحتاج توصيفا أكثر، ولكن يحتمل أن يكون ذلك بسبب تعارض في اصدارات الحزم مع حزم مثتبة لديك. ولذلك حاول إضافة اللاحقة force-- لجبر التثبيت أو اللاحقة with-all-dependencies-- لتثبيت أي اصدارات تتوائم مع اصدارات حزم مثبتة بالفعل. فبدل تثبيت الأمر: npm i yourPackageName نفذ: npm i yourPackageName --force أو الأمر: npm i yourPackageName --with-all-dependencies
  20. لا أظن أن هنالك طريقة مباشرة لذلك إلا ببعض المحايلة، والتي قد يكون عليها بعض التبعات القانونية ان لم يكن هنالك حق او ترخيص بتوزيع النسخة او استعمالها. قد يمكنك نسخ عنصر canvas المعني مع البحث عن شيفرة جافاسكربت المرتبطة به، وتطويع ذلك بحسب شيفرتك.
  21. غالبا ما يتم تضمين مثل هاته الألعاب بوساطة iframes، يمكنك تضمين iframe اللعبة المرادة وتصييره كمكون، مثال: // في مكون React الذي يحمل اللعبة import React from 'react'; const GameComponent = () => { return ( <div> {/* ضبط ارتفاع الـ iframe بحسب حجم اللعبة */} <iframe src="https://example.com/your-game" width="100%" height="500px" frameborder="0"></iframe> </div> ); } export default GameComponent; قد تحتاج الاستعانة بمواقع مثل htmlgames لتزويدك بعناصر iframe جاهزة لعمل embed.
  22. بشكل أساسي، يستعمل الهاش تاق (#) لكتابة تعليقات سطرية (single line comments) في الشيفرة. وهو معروف عن التعليقات في البرمجة أنهامجرد نصوص غير تنفذية ولا تؤثر على تنفيذ البرنامج تستخدم للوصف والتوضيح وتوثيق الشفرة للمساعدة في فهمها وصيانتها. بجانب هذا النوع، يوجد التعليقات متعددة الأسطر التي يمكن توصيفها بإستعمال ثلاث علامات '''، أمثلة: # هذا تعليق مفرد يوضح الهدف من السطر التالي print("Hello hsoub") # سيتم طباعة "Hello hsoub" تعليق متعدد الأسطرر: ''' هذا تعليق متعدد الأسطر يوضح استخدام التعليقات المتعددة في بايثون. يمكن أن يحتوي على أكثر من سطر. ''' print("Hello hsoub!")
  23. قد اطلعت على موقعك، وهو عموما جيد. بنية التصميم ككل جيدة، هيكلة وتقسيم الأقسام جيدة أيضا ولكن فيما يلي بعض الملاحظات: الخط المختار غير جيد، فكر باختيار خط آخر. تخلص من أيقونة المنزل وأضف رابط المنزل للشعار الرئيسي. تخلص من أيقونة تسجيل الدخول وأضف رابطا أو زرا "تسجيل / دخول" يؤدي الى صفحة تسجيل الدخول. اختر لونا آخر لكلمة "سفرني" بحيث تظهر مندمجة مع البنية العامة للتصميم. الصفحة ككل تظهر scroll على المحور x، تأكد من البحث عن السبب وحل المشكلة. حركة دوران الأيقونات عند الهوفر في بطاقات الخدمات غير احترافية، فكر باهتزاز بسيط لها فقط. سيكفي ذلك للدلالة على الهوفر. الصور في قسم الجولات الاحترافية تظهر كبيرة جدا، قد يكون من الأحسن لو كان القسم عبارة عن شبكة grid فيها ثلاث خانات كل خانة هي بطاقة لجولة احترافية مثلا. لا داع من اضافة لونين مختلفين لكل زر في قسم الجولات الاحترافية. نفس الشيء بالنسبة للتضليل، لا يظهر الضل بشكل جيد. أضف ضلا طفيفا وليكن رماديا لا غير. قسم تواصل معنا هو الآخر يحتاج تنقيحا، الأيقونات تظهر كبير جدا، أظن أنه سيكون من الأحسن لو كانت خيارات التواصل عبارة عن قائمة ul صغيرة توضع في حاوية مرنة flex مع عنصر الخريطة. كما أنك قد تحتاج ازالة الأيقونات تماما. صفحة تسجيل الدخول عموما جيدة، ولكن قد يكون من الأفضل لو تم تزويد حجم الهوامش الداخلية paddings لكل من الحقول النصية والأزرار. وفي الأخير، قد تكون هاته الملاحظات مجرد اراء شخصية لا الزمك بها، ولكنها ستحسن من جودة تصميمك ومن تجربة استخدامه ان شاء الله.
  24. أجد أن أفضل طريقة هي بإستعمال مجمع وحدات مثل webpack لتسهيل التعامل مع مثل هاته الجزئية، يوجد مثلا حزمة claudetech/node-static-i18n التي تسهل توليد ملفات HTML مترجمة ابتداءا من كائنات JSON تصف هاته اللغات. بداية قم بتحويل مشروعك إلى مشروع webpack وثبت الحزم والمحملات اللازمة. ثانيا، قم بتثبيت هاته الحزمة عن طريق الأمر: npm install -g static-i18n الآن سوف لن تحتاج إلا توصيف مفاتيح العبارات المراد ترجمتها: <html> <head> <script src="js/app.js"></script> </head> <body> <h1 data-t="my.key"></h1> <p data-t>other.key</p> <input type="submit" data-attr-t value-t="other.ok"> </body> </html> ملف locales/en.json: { "my": { "key": "Hey" }, "other": { "key": "man", "ok": "confirm" } } ملف locales/fr.json: { "my": { "key": "Salut" }, "other": { "key": "mec", "ok": "confirmer" } } ثم قم بتنفيذ الأمر: static-i18n -l en -i en -i fr dist بعد امر npm run build لتخريج نسختين لكل ملف HTML. واحدة باللغة الفرنسية والأخرى بالانجليزية. وهذا كمثال فقط، يمكنك التوسع في الفكرة أكثر.
  25. ان كنت تنظر للأمر من منظور كونه شرطا فالإجابة بالطبع هي لا. لا تعتبر دورة علوم الحاسب شرطا لإجتياز دورة جافاسكربت والتفوق فيها. أما ان كنت تنظر للأمر من زاوية التأسيس الطبيعي والتدرج في المعرفة فإن دورة علوم الحاسب ستدفعك إلى الإنتاج بشكل أكثر غزارة في دورة جافاسكربت، خصوصا وأنك ستمتلك خلفية برمجية من خلال دورة علوم الحاسب.
×
×
  • أضف...