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

Adnane Kadri

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

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

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

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

    51

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

  1. أشجعك على اهتمام بالبرمجة في مثل هذا العمر، وبالطبع سيفيدك الاستزادة منها والتوغل في مفاهيمها، ولكن لا اقترح عليك العجلة في الأمر. فإن كان هدفك العمل، فقد لا يكون مناسبا لك في عمر صغير، فهو يتطلب بعض المتطلبات الأخرى التي يمكن أن تتوفر في عمر مناسب. ولكن بشكل عام، الدخول في المجال في سن مبكرة سيشجعك على الإبداع مستقبلا، وباستطلاع بسيط سيمكنك معرفة أن حتى المبرمجين المحترفين عالميا قد بدأو البرمجة في سن مبكرة. وبما أن دورات الأكاديمية ذات وصول دائم، فستحصل على إشعار بأي تحديثات مستقبلية مما سيعني أنك ستحصل على محتوى قيم بشكل دائم، بشكل يواكب أي تغييرات قد تحصل حتى بلوغك السن الطبيعي للعمل. ولحد ذلك، سيمكنك تطوير استيعابك وتفكيرك البرمجي والرياضي والقدرات المنطقية لديك، بشكل يجعلك قادرا على الإبداع مستقبلا.
  2. السؤال عن الفرق بين main و master هو سؤال عام جدا فقد يكون لكلمة main دلالة معينة مثلا في لغة جافا او c++، وفي سياق git في مثالك هما مثلما أشير اليه سابقا.
  3. الفرق بين main و master يختلف حسب السياق الذي يستخدم فيه كل منهما، ولكن بشكل عام: في Git: كان يتم استخدام الفرع الافتراضي "master" للإشارة إلى النسخة الرئيسية من المستودع، ولكن في الآونة الأخيرة، تم تغيير اسم الفرع الافتراضي إلى "main" في الإصدارات الحديثة من Git، تماشيًا مع الجهود العالمية للحد من استخدام المصطلحات التي قد تسيء إلى بعض الأشخاص مثلما اشار المدرب مصطفى. أما في البرمجة بشكل عام: فعند كتابة برنامج، يعتبر الدالة main هي دالة البداية التي يتم تشغيلها في البداية، وتعتبر بمثابة الباب الرئيسي للبرنامج، ويتم العودة إليها في النهاية. يجب الانتباه إلى أن استخدام "main" أو "master" يختلف تبعاً للسياق ويمكن أن يختلف في الاستخدام بين اللغات البرمجية وأدوات إدارة المشاريع المختلفة. وفي حالتك، هو ليس أكثر من تسمية الفرع الرئيسي لمستودع git لديك.
  4. مرحبا اسامة، سعر الاشتراك في أي دورة من دورات أكاديمية حسوب هو 290$. وهي: دورة ادارة تطوير المنتجات . دورة علوم الحاسب. دورة تطوير التطبيقات باستخدام لغة جافاسكربت . دورة تطوير التطبيقات باستخدام لغة بايثون . دورة تطوير التطبيقات باستخدام لغة PHP . دورة تطوير التطبيقات باستخدام لغة Ruby. دورة تطوير واجهات المستخدم.
  5. مرحبا صلاح، لا يتم حل الأسئلة الاختبارية بشكل مباشر في الأكاديمية، جرب العمل على محاولة وسنعينك في بلوغ الصواب. فيما يلي بعض الخطوات العامة التي يمكنك الاستعانة بها لعمل المطلوب: أنشئ فئة للدرجات تحتوي على التالي: مصفوفة تخزن الدرجات للطالب الواحد دالة تحسب مجموع الدرجات دالة تحسب المعدل دالة تحسب التقدير دالة تطبع اعلى درجة مع المعدل والتقدير يتم إنشاء فئة للطالب تحتوي على التالي: اسم الطالب كائن لفئة الدرجات يتم إنشاء كائن لكل طالب يحتوي على معلومات الطالب والدرجات. يتم إنشاء مصفوفة تخزن كائنات الطلاب. يتم إنشاء دالة تطبع اعلى درجة مع المعدل والتقدير لجميع الطلاب في المصفوفة. يتم انشاء دالة main() لادخال درجات الطلاب وطباعتها. يتم استدعاء الدوال وإرجاع القيم الناتجة لتطبيقها على بيانات الطلاب. يتم تشغيل البرنامج واختباره.
  6. جرب استعمال ترميز &lt; المعبر عن الرمز > لتجنب تفسير وسم php?> كوسم بداية لشيفرة PHP، فيكون: &lt;php? echo "النص النص النص"; ?&gt; سيتم تفسيرها كـ: <?php echo 'النص النص النص'; ?>
  7. بجانب المقترح، يمكنك تصدير مشروعك في لغة Go إلى ملف تنفيذي exe باستخدام أحد أدوات التحزيم (Packaging) المتاحة. أحد هذه الأدوات هي آداة "goxc"، وهي أداة تحزيم مستقلة عن go. يمكن استعمال الامر التالي لتثبيت الآداة: go get github.com/laher/goxc ثم الأمر التالي لتخريج وتحزيم المشروع بها: goxc -d=./out -pv=1.0.0 -os="windows" -arch="386 amd64" -bc="windows,amd64" حيث تعني كل من: -d: مجلد الإخراج للملفات المعبأة. -pv: رقم الإصدار الحالي للمشروع. -os: نظام التشغيل المستهدف (Windows). -arch: المعمارية المستهدفة (32 بت أو 64 بت). -bc: البناء المستهدف.
  8. يحتمل أن المشكلة في استخدام setInterval داخل useEffect، حيث أن setInterval لا يتوقف عن العمل عند إعادة رسم العنصر الخاص بالمؤشر الزمني، مما يؤدي إلى تكرار تشغيل المؤشر الزمني وزيادة ثانيتين في كل دورة. يمكن استخدام setTimeout بدلاً من setInterval، وإعادة تشغيل المؤشر الزمني فقط عند تغيير الحالة. وللحفاظ على تحديث المؤشر الزمني كل ثانية، يمكن إنشاء دالة مساعدة تستدعى setTimeout مع مهلة زمنية وتحديث الحالة. const [timer, setTimer] = useState(0); const format = (time) => { let hours = Math.floor((time / 60 / 60) % 24); let minutes = Math.floor((time / 60) % 60); let secondes = Math.floor(time % 60); hours = hours < 10 ? "0" + hours : hours; minutes = minutes < 10 ? "0" + minutes : minutes; secondes = secondes < 10 ? "0" + secondes : secondes; return hours + ":" + minutes + ":" + secondes; }; const updateTimer = () => { setTimer((timer) => timer + 1); setTimeout(updateTimer, 1000); }; useEffect(() => { setTimeout(updateTimer, 1000); }, []); return <div>{format(timer)}</div>;
  9. باختصار، كل من الدورات التالية تؤهلك للعمل كمطور ويب شامل: دورة تطوير التطبيقات باستخدام لغة Python دورة تطوير التطبيقات باستخدام لغة JavaScript دورة تطوير تطبيقات الويب باستخدام لغة PHP دورة تطوير تطبيقات الويب باستخدام لغة Ruby فكل منها تستعمل لتطوير تطبيقات الويب، وسيمكنك استعمال اي منها لعمل تطبيقات ويب شاملة ومتكاملة. هذا بجانب أن كلا منها يتفصل في شرح أشهر أطر عملها ومكتباتها على الساحة، ففي Python نجد Django و في Javascript نجد MERN stack وفي PHP نجد Laravel وفي Ruby نجد Rails. وكلها يتم التعرض له بإسهاب في الدورة الخاصة به. ولذلك فإنه سيجب عليك فقط اختيار المسار الذي تريد التخصص فيه والبدء في الأمر مباشرة.
  10. بجانب الفروقات التي أشار اليها المدربان، وجب الاشارة ايضا الى أن هنالك ملف composer.phar الذي هو الآخر ملف يختلف عن كليهما كليا. فهو ملف قابل للتنفيذ يستخدم لتثبيت وإدارة حزم PHP باستخدام أداة Composer دون تثبيتها. اذ يتم تحميله عادة من الموقع الرسمي لـComposer. تختلف الميزات التي يوفرها ملف composer.phar قليلاً عن تلك التي تقدمها النسخة المثبتة من Composer. فعلى سبيل المثال، يمكن استخدام ملف composer.phar لتثبيت Composer على نظام لا يحتوي على PHP، ويمكن تشغيل الملف phar على أي منصة تدعم PHP. يتم استخدام الملف composer.phar عند تشغيل الأوامر التالية: php composer.phar install php composer.phar update ويتم استخدام هذا الملف بدلاً من تنزيل وتثبيت Composer على النظام المحلي. يتم تنفيذ الملف composer.phar بتشغيله باستخدام PHP من خلال الأمر "php composer.phar" متبوعًا بالأمر المطلوب.
  11. أظن أن موضوع شريك التعلم هو من أكثر المواضيع تكررا في الوسط البرمجي ككل. ولكن لا يوجد اي شرط او لازمة لذلك في الغالب. ورغم بعض الميزات التي يفرضها الالتزام بالتعلم مع الشريك من مثل: تنظيم الوقت التحفيز على التعلم والتحصيل اكثر التشجيع على المنافسة والاطلاع إلا أنه يمتلك سلبيات لا يجب الغفلة عنها، من بينها: الخضوع لظروف الآخر وتوقيته واحتمال عدم التزام الشريك، فليس كل الناس سواءا من ناحية الظروف المحيطة فقد يمكنك التعرض لمادة علمية لمدة 6 ساعات مثلا في حين ان شريكك غير قادر على التركيز بعد ان يتجاوز الساعتين. هذا بجانب احتمالية تعطيل التعلم لسبب يخص شريكك ولا يخصك اصلا. الفروقات في الاستيعاب والتركيز والذكاء، وهو ما يؤدي في الأخير الى استفادة احد الطرفين دون الآخر. طبيعة المجال تقتضي الاجتهاد والبحث والتطوير والشخصي. اختلاف الرؤى والاهداف، وهو الأمر الذي قد يؤثر في مسار التعلم او في طريقته او في كثافته.
  12. طبعا فإن هذا يعتمد على اللغة التي تستخدمها مثل ما اشار اليك المدرب مصطفى، فإذا كنت تستخدم لغة برمجة مثل Python يمكنك استخدام برامج مثل برنامج PyInstaller . فهي تطبيقات وبرمجيات تقوم بتحزيم المشروع وجميع المكتبات التي يعتمد عليها في ملف تنفيذي واحد exe .. أو برنامج Launch4j مثلا للتعامل مع مشاريع جافا أو Advanced Installer لمشاريع Net. ابحث عن البرمجية المناسبة للغة التي تستعملها وسيمكنك ايجاد الكثير.
  13. بالطبع فإنه من الممكن أن يتعرض كود PHP للاختراق إذا لم يتم كتابته بطريقة آمنة متينة. واضافة الى ما أشار اليه المدربون، فيما يلي بعض الممارسات الأخرى التي تقلل من احتمالية ذلك: استخدام بروتوكولات SSL / TLS: لتأمين اتصالات الشبكة، ويتم توفيرها عادة من قبل مزود خدمة الاستضافة. استخدام إعدادات php.ini الآمنة: اذ يجب تعيين الإعدادات الأمنية في ملف php.ini للتحكم في سلوك PHP والتحكم في إدارة الأخطاء والتقارير، مثل تخريج الاخطاء وغيرها. إخفاء معلومات الاتصال بقاعدة البيانات: اذ يجب إخفاء معلومات الاتصال بقاعدة البيانات في ملفات الكود لعدم إتاحة هذه المعلومات للمهاجمين. استخدام اطر العمل التي تهتم بمعالجة مثل هاته الثغرات، من مثل لارافيل و Symfony و codeigniter وغيرهما. الاستعانة بمفاهيم البرمجة كائنية التوجه في معالجة البيانات وتخريجها من مثل التغليف encapsulation وما الى ذلك. الصيانة الدورية. متابعة سجلات الوصول Access Logs والمستخدمين الجدد قبل منحهم صلاحيات معينة. استعمال مقيدات معدل التراسل Rate limiting، وذلك للحد من هجمات DDos وما الى ذلك. الحد من استخدام الوظائف المتخصصة في اللغة من مثل eval و exec وغيرهما، مثل هاته الاوامر تعتبر مكافئات لسطر اوامر. الحد من الوصول العام للملفات والمجلدات وادارة الاذونات والصلاحيات عليها.
  14. مرحبا عبدالله، عند إتمام عملية الشراء ودفع المبلغ سيتم إرسال تأكيد بالشراء إلى بريدك الإلكتروني المسجل في الأكاديمية، فبعد مراجعة طلبك والتأكد من وسيلة الدفع المستخدمة، ستلاحظ إضافة أيقونة جديدة في الشريط العلوي للموقع باسم دوراتي، عند الضغط عليها ستصل إلى الدورات التي سجلت بها، أين سيمكنك بدأ الدروس. وقد يأخذ ذلك بضع دقائق إلى ساعات.
  15. ان كان السؤال هو حول سطر الاوامر في محتلف أنظمة التشغيل، ففيما يلي بعض الطرق الشائعة لكل نظام: في نظام Windows: اضغط على زر "Start" ثم اكتب "cmd" في صندوق البحث. اضغط على مفتاح "Enter" لفتح نافذة سطر الأوامر. في نظام MacOS: افتح "Terminal" من الـ "Applications" أو من خلال البحث. يمكنك أيضًا استخدام الاختصار "Command + Space" لفتح نافذة البحث، ثم اكتب "Terminal". في نظام Linux: يمكن الوصول إلى سطر الأوامر بالنقر على زر "Terminal" في شريط المهام، أو باستخدام اختصارات لوحة المفاتيح مثل "Ctrl + Alt + T".
  16. مثلما أشار اليك المدرب مصطفى، فإن شعورك كذلك امر طبيعي ولا مشكلة فيه من الأساس. وفيما يلي بعض الخطوات التي تساعدك في تخطي الأمر وزيادة تحصيلك وتركيزك: قم بتنظيم ملاحظاتك: يمكنك استخدام الورق والقلم أو برامج الملاحظات الإلكترونية لتسجيل المفاهيم والتعليمات التي تحتاجها. احرص على الكتابة بطريقة منظمة ومفهومة لديك. وفي هذا أحب الاشارة دوما للطلبة الى هيكلة دروسهم وفق هيكل الدروس والمسارات في الدورة، فيكون مثلا ملف منفصل لكل درس به تفاصيل او ملاحظات ذلك الدرس. فتكون مرجعا او فهرسا او ملخصا تعود له وقت الحاجة. اعمل على مشاريع عملية: فتطبيق المفاهيم والأفكار المكتسبة في مشاريع عملية يمكن أن يساعدك في فهمها وتذكرها بشكل أفضل. كما يمكنك استخدام المشاريع كطريقة لترسيخ المعلومة والتحقق من فهمك. استخدم الرسوم البيانية والمخططات الذهنية: يمكن استخدام الرسوم البيانية لتصور العلاقات والاتصالات بين المفاهيم المختلفة. يمكنك استخدام مخططات بيانية مثل الدوائر الزمنية أو المخططات الهرمية لتمثيل العلاقات بين المفاهيم وهذا يكون بالطبع وفق فهمك وتصورك ونمذجتك، فهي موجهة لك. ابحث عن المصادر الإضافية: يمكنك البحث عن الموارد الإضافية على الإنترنت مثل الكتب الإلكترونية والمقاطع الفيديو التعليمية والمدونات المختلفة. ويجب في هذا بطبيعة حال التأكد من اختيار مصادر موثوقة او ذات سمعة جيدة. تواصل مع المجتمعات البرمجية: اذ انه من المفيد جدا البقاء في محيط برمجي لكي يمكنك الاستفادة من خبراتهم. كل هذا سيلزمه الصبر وبعد النظر وعدم العجلة بالطبع.
  17. أظنك قد وضعت قيمة مباشرة في الحقل الخاص بك بدون اي اسناد لأي وظيفة او callback للمستمع للحدث onChange، يمكنك إما إزالة القيمة من: <input type="text" className="form-control" placeholder="name..." value="name..."/> لتصبح: <input type="text" className="form-control" placeholder="name..." /> أو إذا كنت تريد ضبط قيمة افتراضية، فيمكنك على كل حل حال تعيينها عن طريق الخاصية defaultValue: <input type="text" className="form-control" placeholder="name..." defaultValue="name..."/>
  18. يبدوا أن يتم رفض الاتصال بسبب عدم وجود المفتاح الخاص بك في حساب GitHub. يمكن حل هذه المشكلة بإنشاء مفتاح SSH جديد وإضافته إلى حساب GitHub الخاص بك. للقيام بذلك، يمكنك اتباع الخطوات التالية: افتح موجه الأوامر (Terminal) الخاص بجهازك. استخدم الأمر ssh-keygen لإنشاء مفتاح SSH جديد. سيتم حفظ المفتاح الخاص في المسار الافتراضي ~/.ssh/id_rsa. انسخ المحتوى العام للمفتاح العام باستخدام الأمر cat ~/.ssh/id_rsa.pub. قم بالدخول إلى حساب GitHub الخاص بك، وانتقل إلى إعدادات (Settings) الحساب. اختر SSH and GPG keys، ثم انقر على New SSH key. أدخل عنوان الاسم (Title) والمحتوى العام (Key) الخاص بالمفتاح العام الذي تم نسخه في الخطوة 3. انقر على Add SSH key، وستظهر لك رسالة تأكيد على نجاح إضافة المفتاح. بعد إضافة المفتاح الخاص بك، يجب أن يعمل الأمر ssh -T git@github.com بشكل صحيح ويعطيك رسالة ترحيب من GitHub. وبعد ذلك، يمكنك استخدام اوامر git الاعتيادية لادارة مشروعك مثل امر git push -u origin main لرفع التعديلات إلى مستودع GitHub الخاص بك.
  19. أظن أن أغلب هاته الطرق يكون مخالفا لشروط استخدام واتساب فهي في الغالب غير مستقرة وغير موثوقة وسرعان ما يتم حظر الوصول منها، وقد رأيت الكثير من الشكاوى بخصوص مثل هاته التطبيقات او تعرض حسابات واتساب للحظر. فالأصح هو استعمال الخدمة الرسمية من واتساب او الخدمات الوسيطة مثل twilio او غيرها، فهي الأخرى تستخدم واجهة التطبيق الرسمية الخاصة بواتساب. ومع ذلك، يوجد بعض القيود والشروط التي يجب على المستخدمين الالتزام بها عند استخدام Twilio مع WhatsApp Business API. على سبيل المثال، يتعين على المستخدمين تسجيل أرقام هواتفهم وتحصيل الموافقة المسبقة من مالكي هذه الأرقام قبل استخدامها لإرسال الرسائل عبر WhatsApp. فهي نفس الشيء تقريبا.
  20. لا يمكن تحديد الخطوة التالية بدقة ولكن عموما ستحتاج: الاطلاع أكثر على افضل ممارسات الشيفرة النظيفة. التطبيق والممارسة اكثر والعمل على مشاريع حقيقية. تعلم الاختبار عن طريق اطار عمل للاختبار مثل JEST. تعلم مختلف تقنيات الـ web sockets والـ web RTCs. تعلم بناء Restful APIs. تعلم كيفية نشر تطبيقاتك على خوادم الويب باستخدام خدمات السحابة مثل Heroku أو AWS. تعلم كيفية إنشاء تطبيقات web الموزعة باستخدام مفهوم الـ Microservices. تعلم كيفية إنشاء APIs باستخدام GraphQL. يذكر أنه لا يجب التوقف عن التطبيق وممارسة العمل على مشاريع حقيقية سواء لك او لعملاءك، فعملية التعلم بعد حد ما يجب ان تكون موازية لعملية التعلم.
  21. صحيح أنه من الصعب إيجاد مصادر عربية حول هاته الفكرة، ولكن يمكن الاستفادة من المصادر الإنجليزية المتاحة على الإنترنت. إليك بعض المصادر التي يمكن استخدامها للبدء في برمجة نواة تشغيل: OSDev.org: هو مجتمع متخصص في برمجة نظم التشغيل من الصفر ويحتوي على العديد من الدروس والمقالات والمشاريع الخاصة ببرمجة نواة التشغيل. The little book about OS development: كتاب صغير يحتوي على شرح بسيط ومباشر لبناء نواة تشغيل من الصفر، ويمكن تحميله مجانًا من الموقع الرسمي. يمكنك ايضا البحث عن سلاسل ودورات في اليوتيوب او يوديماي تختص بذات الشيء. يرجى ملاحظة أن برمجة نواة تشغيل من الصفر هي عملية معقدة وتحتاج إلى معرفة جيدة بلغات البرمجة ومفاهيم نظم التشغيل وعمليات الكمبيوتر.لذلك، ينصح بالتدريج في البداية واختيار المصادر المناسبة والتعلم الجيد للأساسيات قبل الشروع في هذه المهمة المعقدة.
  22. Redux باختصار هي مكتبة لإدارة حالة التطبيق في ReactJS. اذ تهدف إلى تسهيل إدارة الحالة وتوحيد الطريقة التي يتم بها إجراء تحديثات المكونات واستدعاء البيانات في التطبيق ككل. تتضمن بعض الأغراض الرئيسية لاستخدام Redux: إدارة الحالة العامة للتطبيق، مثل الإعدادات العامة أو الحالة المتعلقة بالمستخدم. توحيد عمليات الإنشاء والحذف والتحديث للبيانات في تطبيق React والتحكم فيها. توفير وسيلة موثوقة للتواصل بين مكونات التطبيق وحالتها المشتركة. فهي تجعل من السهل تتبع وفهم تدفق البيانات في تطبيق React وإجراء العمليات المختلفة على هذه البيانات بطريقة موحدة ومنظمة.
  23. حفظ السياق بالمفهوم التقليدي لن يفيدك شيئا سوى أنه قد يدخلك في دوامة لن تخرج منها. فالمفترض أن تخزن هاته السياقات والأكواد في ذاكرتك بشكل لا ارادي عن طريق اكتسابها من الممارسة والتطبيق. فأنت ستتعود عليها لتتكرر أمامك حد الحفظ، ولا بأس ان استعملت مستقبلا محرك البحث لاستذكار جزئية او سياق معين، فذلك لن ينقص من كونك مطورا محترفا ان كنت تعي هاته المفاهيم على نحو عميق .. فالذي يجدر بك تذكره هو طريقة فعل الأشياء وليس سياقها التفصيلي، على سبيل المثال: ان كنت تفهم كيفية طباعة الأعداد الزوجية من مصفوفة ما. فأنت ستجد نفسك قادرا على البحث قليلا لكتابة نفس السياق بلغات أنت أصلا لم تتعلمها ابتداءا. فالفكرة هنا هي أن السياق ليس بتلك الأهمية. رغم هذا إلا أنه يجب تذكر البنية العامة للسياق في كل لغة، على سبيل المثال: الأسطر البرمجية في لغة PHP تنتهي بفاصلة منقوطة، أو أن أكواد PHP تعلق بوسم <?php في ملفات php. وهو الأمر الآخر الذي ستألفه بعد أولى أيامك مع اللغة او الآداة التي تتعلمها.
  24. لا توجد طريقة محددة، ولكن قد يكون هنالك بعض الممارسات والنصائح التي تحسن من استيعابك للمفاهيم التي تطرح خلال الدرس، نذكر منها: التطبيق والممارسة العملية مع المدرب، فهي ما ستقوم بترسيخ الدرس اكثر. التدوين وتلخيص مجمل الأفكار في آخر كل درس. الصبر وعدم العجلة، والانشغال بالتحصيل والتطبيق بدل حساب الوقت. السؤال والنقاش والأخذ والرد، خصوصا وان واجهت مشكلة ما، فجزء كبير من مسارك التعليمي سيشلكه تعاملك مع الأخطاء. التركيز والابتعاد عن المشتتات أثناء مشاهدة الدروس. تطوير حس الالتزام عن طريق حضور الدروس بشكل يومي وعدم الانشغال عنها إلا للضرورة.
×
×
  • أضف...