-
المساهمات
2024 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
1
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو عبد الوهاب بومعراف
-
يمكن الاعتماد على JavaScript بدون TypeScript بشكل كامل ف JavaScript هي لغة ديناميكية مكتملة تدعم جميع ال paradigms البرمجية وتوفر مميزات حديثة كما أن النظام البيئي ل JavaScript أوسع وأكثر نضجا مع npm packages متاحة مباشرة وعمليا معظم المشاريع الناجحة مثل React، Vue، Express، وNode.js core مكتوبة ب JavaScript خالص والمشكلة الأساسية في TypeScript ليست في قدراتها التقنية، بل في التعقيد الإضافي الذي تفرضه على عملية التطوير فأنت مجبور على إعداد أدوات الترجمة (compiler) وملفات الإعدادات مثل tsconfig.json وإضافة خطوات build إضافية قبل تشغيل الكود، كما أنك تضطر لكتابة تعريفات الأنواع (interfaces وtypes) التي قد تكون معقدة ومطولة أكثر من الكود الفعلي نفس بينما JavaScript الحديث مع أدوات مثل ESLint للتحقق من الأخطاء وJest للاختبارات يوفر نفس مستوى الجودة بطريقة أبسط وأسرع، لأنك تكتب الكود وتشغله فورا دون طبقات إضافية لكن لكل تقنية ودورها وفائدتها وليس هنالك تقنية أفضل من الأخرى إنما يجب التحدث عن إن كانت مناسبة لمشروع معين من عدمه.
-
يغطي الكورس تقريبا كل ما تحتاجه لتكون مطور JavaScript كامل، فهو لا يقتصر على أساسيات JavaScript فحسب، بل يبني عليها طبقات متقدمة وأطر عمل مطلوبة في السوق مثل React.js و Node.js، مما يمنحك القدرة على تطوير تطبيقات ويب وموبايل وسطح مكتب بشكل متكامل، و الأهم من ذلك أنه يتناول تقنيات حديثة ومطلوبة بشدة في الشركات الكبرى، مثل TypeScript لكتابة كود أكثر متانة وقابلية للصيانة، وNext.js لبناء تطبيقات خادم، وGraphQL لإدارة البيانات بكفاءة، وحتى دمج الذكاء الاصطناعي، مما يضيف بعدا مهما لملفك الشخصي.
-
الأفضل أن تكتب تعليقا يشرح الفكرة العامة للكود أو المقطع البرمجي، مع إضافة تعليقات تفصيلية فقط عند وجود أسطر أو أجزاء معقدة قد تكون غير واضحة عند القراءة لاحقا لأنّ كتابة تعليق على كل سطر أمر غير عملي ويجعل الكود مزدحما ويصعب من فهمه، لأن الكود الجيد عادة يكون واضحا بذاته لذا أنصح بشرح الهدف العام للكود في تعليق واحد ثم علّق على الأسطر التي تحتوي منطقا غير بديهي أو خطوات قد تربك القارئ.
- 4 اجابة
-
- 1
-
-
هل أنت مشترك في إحدى الدورات في الأكاديمية؟ إن كان كذلك أرجو التوجه إلى الدرس الذي واجهت فيه المشكلة. ثم قم بالنزول مباشرة إلى أسفل الصفحة، وستجد صندوقا للتعليقات مثل الذي هنا يمكنك طرح سؤالك هناك.
-
السلام عليكم ورحمة الله. لقد أخبرتك في سؤالك السابق، الرجاء منك طرح أسئلتك المتعلقة بالدروس والدورات أسفل الدرس الذي واجهتك فيه المشكلة وهذا لمساعدتك على النحو الصحيح فهنا نجيب فقط على الأسئلة العامة. تحياتي.
-
يمكنك استخدام إضافة اسمها Live Server لعرض التغييرات تلقائيا في المتصفح بدون الحاجة لإعادة التحميل، في VS Code اضغط على رمز الإضافات على اليسار و اكتب في البحث: Live Server، و اختر أول نتيجة واضغط على Install. بعد تثبيت الإضافة، افتح ملف index.html واضغط كليك يمين داخل الملف، ثم اختر "Open with Live Server"، و سيتم فتح الملف في المتصفح، وكل مرة تحفظ فيها سيتم تحديث الصفحة تلقائيا.
-
وعليكم السلام ورحمة الله، Code Golf هو تحد برمجي تكون فيه الغاية عكس المعتاد أي ليس كتابة كود منظم أو واضح بل تقليص عدد الأحرف في الحل إلى الحد الأدنى. أين يطلب من المبرمج أن ينجز مهمة أو يحل مشكلة باستخدام أقل عدد ممكن من الرموز، دون اعتبار للوضوح أو سهولة الفهم. وتستخدم في هذا النوع من التحديات لغات تدعم الاختصار الشديد أو تحتوي على بناء جملي مرن مثل Python أو لغات مخصصة لل Code Golf مثل Jelly وGolfScript. وهذا النوع من البرمجة يشبه التلاعب اللغوي، ويجمع بين التفكير التحليلي والقدرة على استغلال ثغرات اللغة لتحقيق الهدف بكود صغير جدا.
- 4 اجابة
-
- 1
-
-
بناء على اطلاعي على ملفك الشخصي على منصة مستقل انصحك باستبدال صورتك الشخصية بأخرى احترافية مع تجنب وضع النظارات. ويجب كتابة وصف موجز من 150-200 كلمة يبرز خبرتك في HTML، CSS، JavaScript، وأطر عمل مثل React مع الإشارة إلى قدرتك على إنشاء واجهات مستخدم متكاملة كما في عملك السابق على مكونات مثل About.js وProjects.js. يمكنك إضافة حتى 5 مشاريع متنوعة إلى معرض أعمالك ولو كانت تجريبية ورفعها على منصات مثل Netlify أو GitHub لعرضها عمليا سيكون جذابا. وعند التقديم على مشروع يمكنك أن تقدّم عرضا مخصصا يظهر فهمك لمتطلبات العميل وحلولك المبتكرة، مثل تحسين تجربة المستخدم. وأن تركز على المشاريع الصغيرة لتقليل المنافسة وتقدّم خدمة إضافية مجانية كتحسين سرعة التحميل لتمييز نفسك.
-
أنت لديك: points = [[-3, 1, 2], [1, 4, 0], [-1, -4, 5]] وهذه عبارة عن قائمة ثنائية الأبعاد أي قائمة من القوائم بحيث كل عنصر من عناصرها هو صف مكوّن من 3 أرقام وعند كتابة: points[1] في القائمة فإنك تطلب الوصول إلى العنصر الثاني في القائمة لأن الترقيم يبدأ من الصفر وبالتالي ترجع القيمة [1, 4, 0] وهي الصف الثاني بالكامل وليس عمودا. أما القيمة [1, 4, -4] التي أشرت إليها فهي تمثل العناصر ذات الفهرس 1 في كل صف أي أنها تشكل ما يعرف بالعمود الثاني في مصفوفة ثنائية الأبعاد، وللحصول عليها في بايثون يجب استخدام حلقة أو فهم قائمة مثل: [row[1] for row in points]
- 3 اجابة
-
- 1
-
-
توفر بايثون العديد من المكتبات والأدوات التي تتيح لك التفاعل مع أنظمة التشغيل والأجهزة المختلفة، حيث يمكنك استخدام مكتبة pyautogui لأتمتة المهام على الحاسوب، أو adb-shell للتحكم في أجهزة الأندرويد عبر واجهة ADB، أو حتى مكتبات مثل OpenCV لمعالجة الصور والفيديوهات من الكاميرا.
- 5 اجابة
-
- 1
-
-
بداية يجب أن تنهي الدورة وتتقدم للامتحان الخاص بالدورة ,يمكنك التقدم إلى امتحان الدورة، من خلال التواصل مع مركز مساعدة أكاديمية حسوب, لكي تتقدم للامتحان يجب أن تتوفر بعض الشروط : يجب أن تكون قد أتممت أربعة مسارات تعليمية على الأقل من مسارات الدورة يجب أن تكون قد طبقت المشاريع التي يتم تطبيقها أثناء الدورة ، والاحتفاظ بالمشاريع العملية الناتجة لإرسالها للمراجعة أن تكون قد رفعت كافة المشاريع على حسابك على github ومشاركتها مع مركز المساعدة ثم يتم الامتحان على 4 مراحل مختلفة: بداية تتواصل مع مركز المساعدة وتخبرهم برغبتك في التقدم للامتحان محادثة صوتية مدتها 30 دقيقة يطرح عليك المدرب بعض الأسئلة المتعلقة بالدورة ويناقش ما تم تعلمه في الدورة سوف يحدد لك المدرب مشروع تخرج تقوم بتنفيذه خلال فترة بين أسبوع الى أسبوعين مراجعة المشروع ان تمت جميع الأمور بشكل صحيح تستطيع الحصول على الشهادة , يمكنك معرفة المزيد والتحدث معهم من صفحة الامتحان والحصول على الشهادة.
- 8 اجابة
-
- 1
-
-
البرمجة الإجرائية (Procedural Programming) هي نموذج برمجي يعتمد على تنظيم الكود في شكل إجراءات أو دوال منفصلة تستدعى بتسلسل محدد fpde يقوم هذا النموذج على مبدأ "فرµق تسد" حيث يتم تقسيم المشكلة الكبيرة إلى مشاكل أصغر يتم حلها بواسطة دوال منفصلة والبيانات والدوال تكون منفصلة عن بعضها البعض وتمرر البيانات كمعاملات للدوال التي تعالجها وترجع النتائج. التحكم في تدفق البرنامج يتم من خلال استدعاء الدوال بترتيب معين، مع استخدام هياكل التحكم مثل الحلقات والشروط. من أشهر لغات البرمجة الإجرائية: C و Pascal و COBOL و FORTRAN و أجزاء من JavaScript و Python. يمكنك التعرف عليها أكثر من هنا:
- 6 اجابة
-
- 1
-
-
أرجو مراجعة الإجابة التالية فهي تحلّ نفس المشكل الذي تواجهه: في حال استمرت المشكلة قم ب الضغط على Ctrl + shift + r لتحميل الصفحة مع حذف الكاش كما يمكنك تجربة استخدام متصفح آخر ثم التجربة مرة أخرى.
-
مع الأسف لا يوجد حاليا توثيق رسمي ل Pandas في موسوعة حسوب، لكن يمكنك أن تجد الكثير من المعلومات والمصادر داخل مقالات أكاديمية حسوب من هنا: وفي نهاية الصفحة ستجد عدة روابط أخرى يمكها أن تفيدك أكثر:
- 3 اجابة
-
- 1
-
-
رغم الأداء المتفوق الذي تقدمه Bun، خاصة في سرعة تنفيذ العمليات حيث بعد بحث قصير وجدت أن بعض الاختبارات التي تم إجراؤها أظهرت أنه أسرع من Node.js بثلاثة أضعاف في طلبات HTTP إلا أن الإحصائيات الرسمية لعام 2024 و2025 تؤكد أن Node.js لا يزال المسيطر في السوق. فبحسب استطلاع Stack Overflow 2024، يستخدم أكثر من 40.8% من المطورين Node.js، وتظهر تقارير مثل W3Techs أن أكثر من 4.6% من المواقع تستخدمه، مع أكثر من 1.4 مليار عملية تنزيل تاريخيا. كما أنّ Node.js يحظى بدعم واسع في المؤسسات الكبرى ولديه نظام بيئي ناضج يضم ملايين الحزم على npm. في المقابل لا تزال Bun حديثة نسبيا حيث أطلقت نسختها المستقرة الأولى في سبتمبر 2023 وتفتقر إلى الاستقرار الكامل والتبني المؤسسي على نطاق واسع.
-
يوجد فرق واضح بينهما رغم أن المفهومين مرتبطان ببعضهما فنمذجة الكائنات هي مرحلة تحليل وتصميم تسبق كتابة الكود، وتركز على تمثيل النظام من خلال كائنات (Objects) تحاكي مكونات العالم الحقيقي. في هذه المرحلة نستخدم أدوات مثل الرسومات التخطيطية ك UML لتحديد الكائنات، خصائصها (السمات)، وسلوكها (الوظائف أو الدوال)، وكيفية تفاعلها معا والهدف منها هو الفهم العميق للنظام المطلوب بناءه وتنظيمه بطريقة منطقية قبل الدخول في عملية البرمجة. أما البرمجة كائنية التوجه، فهي أسلوب لكتابة الكود بلغة تدعم هذا النمط مثل Java و بايثون C++. في هذا الأسلوب نقوم بتحويل التصميم أو النموذج الذي أنشأناه في مرحلة النمذجة إلى كود حقيقي من خلال إنشاء "Classes" و"Objects"، واستخدام مفاهيم مثل الوراثة (Inheritance)، التغليف (Encapsulation)، والتعددية الشكلية (Polymorphism).
- 4 اجابة
-
- 1
-
-
لا داعلي للقلق ففي HTML بعض الوسوم مثل <link> لا تحتاج أن تكتب في آخرها /، لأنها وسوم ذاتية الإغلاق ففي HTML5 كتابة الوسم بدون / صحيحة تماما وليس فيها أي مشكلة فالشرطة المائلة / كانت ضرورية في نسخ قديمة مثل XHTML فقط.
- 3 اجابة
-
- 1
-
-
هندسة البرومبت هي فن وعلم صياغة التعليمات أو الأسئلة الموجهة لنماذج الذكاء الاصطناعي، وخاصة النماذج اللغوية الكبيرة لتحقيق أفضل النتائج الممكنة، و تعتمد على فهم كيفية تفاعل النموذج مع المدخلات، واستخدام تقنيات مثل التوضيح، التدرج في الأسئلة، أو تضمين أمثلة في البرومبت لتحسين دقة ومصداقية الإجابة، لتعلمها ابدأ بدراسة أساسيات الذكاء الاصطناعي واللغويات التطبيقية، ثم تدرب على صياغة أسئلة متنوعة وتحليل استجابات النموذج، و بالتأكيد الممارسة المستمرة والتجريب هما المفتاح لإتقان هذا المجال سريع التطور.
- 5 اجابة
-
- 1
-
-
بالنسبة لأدوات التصميم، فإن Canva يعتبر بسيط جدا لمشاريع الويب المحترفة، وبدلا منه يمكنك تجربة Figma أو Adobe XD لإنشاء نماذج أولية وتصاميم تفصيلية قبل التنفيذ، و أيضا لا تنسَ استخدام أطر عمل مثل Bootstrap أو Tailwind CSS لتسريع عملية التطوير، و المفتاح هو البدء بالأساسيات ثم التدرج نحو الأدوات الاحترافية مع تطور مهاراتك.
-
في React نستخدم map بدلا من الحلقات التقليدية مثل for وwhile لأن map ستعيد لنا مصفوفة جديدة تحتوي على عناصر JSX جاهزة للعرض مباشرة داخل دالة render أو داخل return للدوال المركبة وهو ما يتماشى مع التصميم الدالي (Functional) لرياكت. بعكس for وwhile التي تستخدم لأغراض تكرار عام وتحتاج إلى إنشاء مصفوفة خارجية ثم دفع العناصر إليها يدويا فإن map تبقي الكود أكثر نظافة وتسمح بتعيين key لكل عنصر بسهولة وتجنب التعديلات الجانبية. وهذه ميزة في React بحيث تسهل تتبّع العناصر وإعادة رسمها بكفاءة عند التحديث ونستخدمها بكثرة لأنها متوافقة تماما مع نمط JSX الذي يتطلب إرجاع عناصر قابلة للعرض مباشرة ضمن البنية الشجرية للمكوّن.
-
كلامك صحيح ولهذا Python يستخدم Event Loop من مكتبة asyncio لتنظيم المهام غير المتزامنة. فعندما يواجه كلمة await سيتوقف عن تنفيذ هذه المهمة مؤقتا وينتقل لتنفيذ مهام أخرى، ثم يعود إليها عندما تصبح جاهزة. وكل هذا يحدث في نفس الخيط الرئيسي، ولكن بطريقة تعاونية بحيث كل مهمة تعطي الفرصة للمهام الأخرى عند الانتظار. لاحظ الكود التالي: import asyncio async def task1(): await asyncio.sleep(2) async def task2(): await asyncio.sleep(1) asyncio.run(asyncio.gather(task1(), task2())) في البداية قمنا باستيراد المكتبة asyncio ثم عندما يبدأ تنفيذ task1 ويصل ل: await asyncio.sleep(2) يتركها فورا وينتقل ل task2 وعندما يصل ل: await asyncio.sleep(1) يتركها أيضا ويعود للأولى أو ينتظر وهكذا يدور بينهما لأن task2 تحتاج ثانية واحدة فقط بينما task1 تحتاج ثانيتين أي ستنتهي task2 أولا رغم أن task1 بدأت قبلها، وهذا يثبت أن Event Loop يشغلهما بالتوازي وليس واحدة تلو الأخرى.
-
للأسف لا يمكنك تحميل دروس الدورة في الوقت الحالي وتم منع ذلك تفاديا لإعادة نشر الدروس خارج منصة الأكاديمية وهذا لتحقيق العدل بين مشتركي الأكاديمية فلا يعقل أن يشترك البعض لكي يستفيدوا من الدروس بينما آخرون يأخذونها على طبق من ذهب. لذا بدلا من تحميل الفيديو يمكنك خفض جودته إلى 540 وهي جودة مناسبة لمتابعة الدروس بسلاسة.
-
يجب عليك إنشاء ملف حتى يظهر لديك زر run، أرجوا الضغط على File و من ثم إختر new file من هناك، أو يمكنك فتح ملف بايثون مباشرة إذا كان متوفر لديك و بعدها يمكنك الضغط على run.