-
المساهمات
13209 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
365
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
أولاً عليك باستخدام الأدوات السابق ذكرها في التعليقات السابقة، لتفقد من أين تأتي المواقع المنافسة بالروابط الخلفية الجيدة وركز جدًا على أن تكون جيدة وقوية، فرابط واحد قوي أفضل من 10 روابط ضعيفة. وحاول الحصول على مثل تلك الروابط إن استطعت، كون قائمة وانظر إلى ما تستطيع الحصول عليه منها، وهناك طرق أخرى ومنها: إنشاء محتوى عالي الجودة يرغب الناس في الإشارة إليه وذلك هو العامل الأهم في الحصول على روابط خلفية. ومن الأسهل البحث عن مواقع جيدة لكتابة مقالات ضيف وتلك طريقة رائعة للحصول على روابط خلفية من مواقع ذات سلطة عالية، ثم أضف رابط عائد إلى موقعك. أيضًا هناك العديد من الدلائل التي تقوم بسرد المواقع في فئات مختلفة، والظهور في دليل يمكن أن يساعدك على الحصول على روابط خلفية من مواقع أخرى مدرجة في الدليل، لكن انتبه لا تقم بإدراج موقعك في دليل لديه spam score مرتفع. لكن عليك بالإنتباه جيدًا إلى الموقع التي توفر روابط dofollow والمواقع التي توفر روابط no follow. وهناك عدة نقاشات تم طرح تفاصيل بها أنصحك بالإطلاع عليها: كل ماتريد معرفته عن الباك لينك backlink الباك لينك (انواع الباك لينك،شروط الباك لينك القوي،مواقع باك لينك قوي)
- 3 اجابة
-
- 1
-
بخصوص Next.js 13 مع TypeScript ، تستطيع إنشاء مسارات API باستخدام ملفات الـ API في المجلد pages/api في مشروعك، ويتم تحويل هذه الملفات تلقائيًا إلى مسارات API بواسطة Next.js. واستخدام TypeScript يعني أنه بإمكانك أيضًا تعريف نوع البيانات الذي يتم استلامه وإرجاعه من المسارات، وإليك الخطوات الأساسية: 1- أنشئ ملفًا جديدًا في المجلد pages/api بامتداد .ts أو .tsx، مثل: pages/api/example.ts 2- في ذلك الملف، قم بتصدير وظيفة default استدعائها بواسطة Next.js، وتلك الوظيفة ستتلقى طلب HTTP وترجع الاستجابة، وتستطيع تعريف نوع بيانات الطلب والاستجابة باستخدام TypeScript كالتالي: import { NextApiRequest, NextApiResponse } from 'next'; export default function handler(req: NextApiRequest, res: NextApiResponse) { // قم بتنفيذ المنطق الخاص بك هنا res.status(200).json({ message: 'Hello from the API' }); } وبمجرد حفظ الملف، سيتم تحويله تلقائيًا إلى مسار API في Next.js، مثل /api/example. والآن توجه إلى المسار API الجديد عبر المتصفح أو عبر طلبه من التطبيق نفسه. ومن الأسهل استخدام مكتبات إضافية مثل axios للتعامل مع طلبات API الخارجية، وأيضًا تعيين رموز استجابة مخصصة وتعريف النماذج والاستعلامات في TypeScript. وستجد المزيد من الشرح في المستند الرسمي: https://nextjs.org/docs/pages/building-your-application/routing/api-routes
- 2 اجابة
-
- 1
-
عليك باستخدام WooCommerce، وعند الضغط على خيار إضافة WooCommerce ستجدي خيار باسم Settings أو الإعدادات، اختاري منها Payments وستجدي خيارات الدفع التي يمكن تفعليها للمتجر. وتستطيعي إغلاق جميع خيارات الدفع الأخرى وتفعيل Cash on delivery ثم ضبط الإعدادات من خلال الضغط على Setup كما بالصورة: وسيصلك إيميل بالطلب ووسيلة الدفع وهي الدفع عند الاستلام، وإذا أردتي المزيد من التخصيص لوسيلك الدفع تلك، عليك بتثبيت إضافة WooCommerce Smart COD. وستجدين قسم كامل في أكاديمية حسوب يشرح منصة WooCommerce
-
في البداية أنصحك بحل المسائل على موقع CodeWars فهو يتيح حل تحديات برمجية تتراوح من المستوى الأساسي إلى المتقدم وسهل استخدامه في البداية. وبعد تقدم مستواك وقرب التقديم على مقابلة عمل، عليك بالإنتقال لحل المسائل على موقع LeetCode، وستجد قوائم خاصة بالمسائل بمختلف المستويات، وستجد شروحات له على اليوتيوب أيضًا. وهناك مواقع أخرى مثل HackerRank وCodeforces.
- 4 اجابة
-
- 2
-
تستطيع الاعتماد على تقنية الـ "Session Token" كالتالي: عند تسجيل الدخول الناجح، قم بإنشاء "Session Token" فريد للمستخدم. واحتفظ بقائمة بجميع الـ "Session Token" المفعلة حاليًا للمستخدم، وتعتبر هذه القائمة قيد التحديث بناءًا على تسجيل الدخول وتسجيل الخروج. ثم تحقق من عدد الأجهزة المتصلة: عندما يحاول المستخدم تسجيل الدخول من جهاز جديد، قم بفحص عدد الـ "Session Token" المفعلة للمستخدم. إذا كان عدد الـ "Session Token" أقل من أو يساوي 2، فاسمح بتسجيل الدخول الجديد وقم بإضافة "Session Token" جديدة للقائمة. إذا كان عدد الـ "Session Token" أكثر من 2، فقم بعرض صفحة تعرض الأجهزة المتصلة وتسمح للمستخدم بتسجيل الخروج من إحدى الأجهزة للسماح بتسجيل الدخول الجديد. عند تسجيل الخروج من جهاز، قم بإزالة "Session Token" المرتبطة به من القائمة. بعد ذلك اضبط وقت الإنتهاء للـ "Session Token": عند إنشاء "Session Token" جديدة، قم بتعيين وقت انتهاء لها بحيث تكون صالحة لفترة زمنية محددة. عندما يصل وقت انتهاء الـ "Session Token"، قم بإزالتها من القائمة.
-
بخصوص المواقع العربية، لا يوجد سوى مستقل وخمسات وموقع بعيد، أما بقيةالمواقع العربية إن وجدت فهى غير إحترافية بكل صراحة وليست مصدر ثقة للعمل عليها وبذل وقت وجهد بها. وإذا كنتي واجهتي صعوبة في قبول عرضك على تلك المواقع، فعليك بالتوقف قليلاً والبحث في سبب المشكلة، هل طريقة كتابة عرضي غير إحترافية؟ هل معرض الأعمال الخاص بي غير جيد وغير متخصص ويوحي بأني شخص مبتدأ؟ هل طريقة عرض نفسي في ملفي الشخصي غير جيدة؟ ولكي تتمكني من معرفة الإجابة على تلك الأسئلة، عليك بمعرفة الطريقة الصحيحة لفعل ذلك، وستجدي في مدونة مستقل مقالات رائعة بخصوص ذلك. دليلك الشامل إلى العمل الحر عبر الإنترنت نصائح للمستقلين
- 2 اجابة
-
- 1
-
أولاً يجب أن يكون موقعك يلبي سياسات ناشري جوجل نيوز، وتحدد هذه السياسات المتطلبات التي يجب توفرها في المواقع التي ترغب في ضمها إلى جوجل نيوز، عليك بالاطلاع على السياسات. ثم تأكد من تقديم خلاصات RSS صالحة لموقعك، حيث يستخدم جوجل نيوز خلاصات RSS لجمع المحتوى من المواقع، وإذا كانت خلاصات RSS لموقعك غير صالحة، فلن يتم ضم محتواك إلى جوجل نيوز. وحاول نشر محتوى عالي الجودة وأصلي، فجوجل حاليًا تعمل على تسليط الضوء على الصحافة عالية الجودة، لذا تأكد من أن محتواك مكتوب بشكل جيد ومعلوماتي. وأيضًا لا تقم بنسخ أي أخبار من مواقع أخرى، بل كتابتها بنفسك ولا تقل عن 300 كلمة للخبر، وأيضًا اهتم بالعنواين الواضحة والتي تحتوي على الكلمة المفتاحية للخبر، وأيضًا يجب توفير خبرين على الأقل بشكل يومي.
-
أولاً حاول تشغيل أمر flutter doctor لفحص المشروع وتفقد النتيجة، فإذا كان هناك مشكلة عليك حلها. وأيضًا قم بتشغيل أمر flutter pub upgrade لتحديث الحزم (dependencies) في مشروع Flutter. حيث يستخدم ملف "pubspec.yaml" لتعريف وإدارة تعليمات الاعتماد للحزم والمكتبات المستخدمة في المشروع، وتحديد إصدارات الحزم والمكتبات في قسم "dependencies" بداخل الملف. وعند تشغيل الأمر "flutter pub upgrade"، يتم فحص تعليمات الاعتماد المحددة في ملف "pubspec.yaml" وتحديثها إلى أحدث الإصدارات المتاحة من تلك الحزم والمكتبات، وفحص المستودعات وتنزيل أحدث الإصدارات التي تتوافق مع تعليمات الاعتماد الحالية في المشروع. وقد يفيدك الإطلاع على النقاش التالي:
-
عليك بالبحث في المكان الصحيح، وتستطيع التواصل مع من لديهم نفس الإهتمامات والتشارك سويًا في رحلة تعلم البرمجة عن طريق وسيلتين وهما: 1- مجتمع حسوب I/O: ومن خلال تستطيع طرح نقاش في مجتمع البرمجة أو الويب أو المجال الذي تريد التخصص به، والنقاش مع المهتمين بذلك. وإليك مثال للتوضيح وشخص كان يبحث عن شريك لتعلم البرمجة أيضًا: ابحث عن شريك لتعلم البرمجة 2- منصة LinkedIn: ومن خلالها تستطيع إنشاء حساب بتفاصيل كاملة عنك ومن ثم إرسال مثل طلب صداقة لمن في نفس مستواك ولديه نفس الهدف وابحث عن مجتمعات موجودة بالفعل قام بإنشائها أشخاص آخرين واسأل عن إمكانية الإشتراك معهم، وستحقق استفادة كبيرة بتواجدك على تلك المنصة الخاصة بالتوظيف والنقاش حول مجالات العمل المختلفة. وقد يفيدك أيضًا السؤال على جروب نشط مختص بالبرمجة على فيسبوك.
-
الشهادة معتمدة بالطبع وهناك نسخة إلكترونية ونسخة مطبوعة ستصل إليك عبر شركة الشحن إلى عنوانك، وستجدين شرح وافر لذلك هنا: وبخصوص الشروط، فهى: إتمام أربعة مسارات تعليمية على الأقل التطبيق العملي مع المدرب، والاحتفاظ بالمشاريع العملية الناتجة لإرسالها للمراجعة رفع المشاريع على حسابك على GitHub أولًا بأول لمشاركتها معنا والتطبيقات العملية تعني المشاريع والتحديات، والأهم هي المشاريع، حيث سيتم سؤالك عنها وعن مدى فهمك للكود. وقد تم توضيح طبيعة الإختبار في النقاش التالي: وتستطيع التقدم للإمتحان أكثر من مرة لحين إجتيازه، لكن الأفضل هو الاستعداد جيدًا للنجاح من المرة الأولى. وبخصوص رفع المشاريع فالأفضل تعلم Git لكي لا تعاني في استخدام GitHub بدون داعي، وذلك من خلال التالي: بعد ذلك ستحتاجين إلى الرؤية الشرح الخاص برفع المشاريع:
-
هناك بعض النقاط التي بحاجة إلى توضيح، المشاريع المطلوبة منك هي التطبيقات العملية، بمعنى ليس الأكواد الخاصة بالدروس العادية، بل التطبيقات العملية بمعنى مشروع. ستجد بجانب الدرس كلمة تدريب عملي، فعليك بالتطبيق وكتابة الخورازمية في ملف ووضع تلك الخورازميات في مجلد والإحتفاظ به لحين تسليمه. وأيضًا ستقوم بتنفيذ تلك الخوارزميات على منصة سكراتش، وستقوم بتسليم ملف المشروع، فقم بحفظه في نفس المجلد، بمعنى أنشيء مجلد باسم دورة علوم الحاسوب ثم بداخله مجلد لكل خورازمية وضع به بداخل كل مجلد الملف الخاص بالخورازمية ثم ملف البرنامج الخاص بمنصة سكراتش. وبعد ذلك في المسارات الأخرى ستجد دروس باسم تطبيق عملي أو التمرين النهائي خاصة بالتدريب العملي على كتابة الأكواد البرمجية في جافاسكريبت وبايثون، حيث يتم شرح المطلوب في البداية أو الشرح بشكل نظري ثم يقوم المدرب بالتنفيذ. المطلوب منك هو الاستماع للشرح النظري والمطلوب، ثم محاولة التنفيذ بمفردك وبعد المحاولة بشكل كافي والبحث عن كيفية تنفيذ أمر على جوجل أو يوتيوب، قم بمشاهدة حل المدرب. ثم أنشيء مجلد خاص بالأكواد فقط، داخل مجلد دورة علوم الحاسوب واحتفظ بالكود في ملف خاص باسم المسار مثلاً أساسيات البرمجة - التمرين النهائي أي اسم المسار الخاص به ليتم مراجعته، ثم ارفع تلك الملفات العملية الخاصة بالأكواد على GitHub. وأنصحك بشدة أن تتعلم Git لتسهيل الأمر عليك وتجنب المعاناة الغير ضرورية في استخدام Git من الفيديو التالي: وهنا ستجد شرح عن طريقة رفع الواجبات على Git: وستجد هنا نقاش عن المشاريع العملية المفروض تسليمها: وبخصوص تفاصيل عن التقدم للإمتحان وطبيعة الإختبار، فستجد في النقاش التالي تفاصيل وافية:
- 3 اجابة
-
- 1
-
الأمر يتوقف على إذا ما كان لديك الحقوق اللازمة لبيع تلك الكتب، فالكتب تعتبر أعمالًا فنية تخضع لحماية حقوق النشر، وبالتالي لا يمكنك بيع كتب بدون الحصول على إذن من صاحب حقوق النشر أو منتج الكتاب، وهناك كتب مجانية متاحة للنشر والتوزيع بدون الرجوع لمؤلف الكتاب. وإذا كنت أنتِ صاحبة الكتاب وتمتلكين حقوق النشر الخاصة به، فتستطيعي إضافة الكتاب إلى متجرك الخاص وبيعه بحرية، ولكن، إذا قررت توفير نسخ رقمية من الكتاب، فقد ترغبين في استخدام نظام حماية الحقوق الرقمية (DRM) لحماية الكتاب من الانتشار غير المصرح به ومن الاستخدام غير القانوني. من ناحية أخرى، إذا كنت ترغبين في بيع كتب رقمية تعود حقوق نشرها لأشخاص آخرين، فيجب عليك الحصول على إذن من صاحب حقوق النشر أو الحصول على ترخيص قانوني لبيع الكتاب. وينبغي عليك التعاقد مع المؤلفين أو الناشرين أو الشركات الناشرة للحصول على الحقوق المناسبة قبل بيع الكتب الرقمية، وقد تتضمن تلك العملية التفاوض على اتفاقية ترخيص معينة تنظم الاستخدام والبيع والتوزيع والمشاركة في الأرباح. أي يجب أن الإلتزام بحقوق النشر والحصول على الإذن المناسب قبل بيع أي كتاب رقمي.
-
أهلاً بك أستاذ هاني، تستطيع التسجيل لأبنائك بالطبع من خلال حسابك في دورة علوم الحاسوب كبداية، حيث سيتعلم بها أساسيات الحاسوب وعلومه والتفكير المنطقي وما هي الخوارزميات وكيف تفيد في البرمجة، وتطبيقات عملية على أساسيات التفكير المنطقي باستخدام بيئة سكراتش Scratch التفاعلية، وغيرها من الأساسيات التي تم توضيحها في الصفحة الخاص بتفاصيل الدورة والمميزات الخاصة بها. وبخصوص الكوبونات فآخر عرض كان متاح هو عرض شهر رمضان ولكنه إنتهى، وتفاصيله كانت شراء دورتين بسعر دورة واحدة، أما حاليًا فتستطيع السؤال عن الكوبونات والعروض المتاحة من خلال مركز المساعدة. وستقوم بكتابة الإيميل الخاص بحسابك في الأكاديمية، ثم سيصلك كود على ذلك الإيميل قم بإدخاله وسيتم فتح المحادثة مع مركز المساعدة، وقد تم شرح ذلك في النقاش التالي: وأيضًا بخصوص تفاصيل حول تعليم الأطفال البرمجة، أنصحك بقراءة النقاش التالي:
-
1- www (World Wide Web) تعني www "الويب العالمي"، وهي الجزء من الإنترنت الذي يحتوي على المواقع والصفحات الإلكترونية، فعند كتابة عنوان موقع ويب في متصفح الويب الخاص بك، يتم تضمين "www" في الرابط، مثلاً عنوان موقع ويب لـ Google هو "www.google.com". لكن تلك البادئة أصبحت غير ضرورية في العديد من الحالات اليوم. بمعنى أصبح بإمكان المستخدمين الوصول إلى المواقع بدون استخدام "www"، فيمكنك الوصول إلى موقع example.com بشكل مباشر بدون استخدام "www"، فقط عن طريق كتابة example.com في شريط عنوان المستعرض. 2- TCP/IP TCP/IP تعني "بروتوكول التحكم في نقل البيانات / بروتوكول الإنترنت"، وهو مجموعة من القواعد التي تحكم كيفية تواصل الحواسيب مع بعضها البعض على الإنترنت. ويعتبر TCP/IP بروتوكولًا ذو طبقتين ، حيث يتولى بروتوكول التحكم في نقل البيانات (TCP) ضمان نقل البيانات بشكل موثوق بين الحواسيب ، ويتولى بروتوكول الإنترنت (IP) توجيه حزم البيانات بين الحواسيب على الإنترنت. 3- Hosting تعني الاستضافة وهي خدمة توفير مساحة تخزين وموارد الحوسبة للمواقع وتطبيقات الويب، وعندما تستضيف موقع ويب ، فأنت تستأجر مساحة على خادم متصل بالإنترنت، ويتيح ذلك إمكانية الوصول إلى موقع الويب الخاص بك للأشخاص في جميع أنحاء العالم. 4- Domain name بالعربية يعني اسم المجال وهو اسم قابل للقراءة من قبل الإنسان يُستخدم لتحديد موقع ويب أو تطبيق ويب على الإنترنت، حيث يتم ترجمة أسماء المواقع إلى عناوين IP بواسطة خوادم أسماء المجال (DNS). وكمثال، يترجم اسم المجال "www.google.com" إلى عنوان IP "172.217.16.238". 5- HTTP HTTP تعني "بروتوكول نقل النص الفائق"، وهو البروتوكول الذي يُستخدم لنقل صفحات الويب بين خوادم الويب ومتصفحات الويب، ويعتبر HTTP بروتوكولًا غير مرتبط بالحالة ، مما يعني أن كل طلب لصفحة ويب هو مستقل عن أي طلبات سابقة. وإليك بعض الأمثلة على استخدام تلك المصطلحات: يستخدم موقع الويب www.google.com بروتوكول الإنترنت TCP/IP للتواصل مع جهاز الكمبيوتر الخاص بك. يتم استضافة موقع الويب www.google.com على خادم متصل بالإنترنت. يترجم اسم المجال www.google.com إلى عنوان IP 172.217.16.238. يستخدم متصفح الويب بروتوكول HTTP لطلب صفحة الويب من خادم الويب.
-
ولما كل ذلك التعقيد، فالتطبيق الخاص بك لا يحتاج إلى استخدام جافاسكريبت وبايثون و PHP، كل ما تحتاجه هو استخدام إطار عمل مثل Flask أو Django، وبالطبع تستطيع استخدام كود JavaScript في إطار Flask أو Django، فكلا الإطارين يسمحان لك باستخدام JavaScript. ففي Flask، ستستخدم دالة render_template() لعرض قالب يحتوي على رمز JavaScript، وتأخذ دالة render_template() اسم القالب وقاموسًا من المتغيرات التي ترغب في تمريرها إلى القالب، ثم سيقوم محرك القوالب بعرض القالب وتضمين رمز JavaScript، كالتالي: from flask import Flask, render_template app = Flask(__name__) @app.route("/") def index(): return render_template("index.html", javascript="my_js_code.js") if __name__ == "__main__": app.run(debug=True) حيث أن index.html هو القالب الذي يحتوي على كود جافاسكريبت، ويتم ربط الكود به من خلال: <script src="my_js_code.js"></script> وبالطبع ملف my_js_code.js به كود جافاسكريبت الخاص بك. أما في Django، ستستخدم الدالة render() لعرض قالب يحتوي على كود JavaScript، وتأخذ الدالة اسم القالب وقاموسًا للمتغيرات التي تريد تمريرها إلى القالب، وكائن سياق اختياري، وسنستخدم كائن السياق لتمرير كود JavaScript إلى القالب، كالتالي: from django.shortcuts import render def index(request): context = { "javascript": "my_js_code.js" } return render(request, "index.html", context)
- 2 اجابة
-
- 1
-
المشكلة لديك تكمن في استخدام المفتاح الفريد (unique key) في قسم العرض (map) الخاص بـ userData، ويتطلب React توفير مفتاح فريد لكل عنصر يتم تمريره في قسم العرض لتحسين أداء العملية والتعامل مع عناصر القائمة بشكل صحيح. مما يعني أنه يجب استخدام خاصية معرف فريدة من قاعدة البيانات لكل مستخدم (user) كمفتاح فريد لكل عنصر في القائمة، باستخدامها كمفتاح (key) في العنصر (element) الذي تقوم بعرضه في القائمة، وتستطيع الإعتماد على استخدام user._id كمفتاح فريد، كالتالي: <div className='ProfileInfo'> {userData.length > 0 && userData.map((user) => ( <div className='profileInfo-container' key={user._id}> <div className='profileInfo-top'> </div> <div className='profileInfo-center'> <img className='profile-avatar' fontSize="large" src={auth.user.avatar} alt=""/> {user._id && auth && user._id === auth.user._id ? <button className='addfbtn' onClick={() => setEdit(true)}>EDIT</button> : <GlobalFriendBtn classBtn="addfbtn" user={user}/> } </div> {/* إضافة المزيد من العناصر لعرضها */} </div> ))} </div> من خلال إضافة key={user._id} في العنصر الذي يتم عرضه في القائمة، يتم ضمان توفر مفتاح فريد لكل عنصر، وبالتالي يجب أن لا يتم عرض نسخ مكررة من الملف الشخصي للمستخدم. وتأكد أيضًا من أن user._id في العبارة {user._id && auth && user._id === auth.user._id} ليس null أو undefined، حيث يستخدم لمقارنة المستخدم الحالي بمستخدم في القائمة وعرض زر التعديل فقط إذا كانا متطابقين. وستجد شرح للقوائم والمفاتيح في React في موسوعة حسوب أيضًا في المستند الرسمي لـ React
-
عليك أولاً بحفظ التغييرات، ثانيًا تأكد من أنك قمت بربط ملف index.js في ملف index.html بشكل صحيح وذلك عن طريق عنصر script كالتالي: <script defer src="index.js"></script> ويتم وضع ذلك الجزء داخل عنصر header أو في نهاية عنصر body لكن لا حاجة إلى ذلك حيث أنني قمت بوضع defer من أجل تحميل السكريبت بعد إنتهاء تحميل أكواد HTML وستجد شرح لذلك هنا: الآن داخل ملف السكريبت حاول تجنب كتابة اسم المتغير باسم name لكونه تابع لخاصية في الكائن Window وهي window.name ولكن تلك الخاصية أصبحت deprecated أي لم تصبح مدعومة بعد الآن وسيتم إزالتها بعد فترة، وستجد خط كما لو أنه شطب على اسم المتغير كما ترى في الكود لديك. ولطباعة اسم المتغير بعد تغييره سنقوم بكتابة السكريبت كالتالي: 'use strict'; let personName; personName = 'mohamed'; console.log(personName); وسيتم طباعة الاسم في الكونسول. ولاحظ أنني قمت بكتابة 'use strict' أو الوضع الصارم في البداية وأنصحك باستخدامها عند كتابة سكريبت عادي وليس module حيث يتم تفعيله بشكل إفتراضي في الـ modules وفائدتها كالتالي: في الوضع الصارم، يجب عليك تعريف المتغيرات قبل استخدامها، فإذا قمت بتعيين قيمة لمتغير غير معرف، سيتم إلقاء استثناء. ولا يمكنك استخدام مفاتيح الكلمات المحجوزة كمعرفات، مما يحميك من تعديل قيمة المفاتيح الداخلية للغة. يجبرك على اتباع بعض الممارسات الأفضل في البرمجة، مما يساعد في تجنب بعض الأخطاء الأمنية الشائعة. يتم منع الوصول إلى خصائص الكائنات غير المعرفة، مما يساعد في تجنب الأخطاء الناتجة عن التعامل مع كائنات لا تحتوي على الخصائص المطلوبة. في بعض الحالات، الوضع الصارم يساعد في تحسين أداء الكود، حيث يمكن للمترجم أن يقوم بتنفيذ بعض الأمور بشكل أسرع وأكثر فعالية. أيضًا ستتم معالجة بعض الأخطاء التي تكون صامتة في الوضع العادي Silent Errors، مثلاً ستحصل على أخطاء عند استخدام المتغيرات غير المعرفة بدلاً من إنشاء متغيرات عالمية ضمن نطاق Global. وهناك أمور أخرى لكن لا تشغل بالك بها حاليًا.
-
هناك بعض النقاط التي يجب توضيحها فيما يتعلق بالفروقات: 1- هيكلية المعالجة GPU: تم تصميم وحدة معالجة الرسومات للتعامل بشكل رئيسي مع الرسومات والعمليات المتوازية، وتتميز بأنها تحتوي على عدد كبير من وحدات المعالجة الرسومية التي تعمل معًا لتنفيذ العمليات بسرعة. TPU: تم تصميم وحدة معالجة التنقيح خصيصًا للتعلم العميق والذكاء الاصطناعي، وتتميز بأنها تحتوي على مجموعة كبيرة من العتاد المخصص لعمليات التنقيح بشكل فعال. 2- الأداء GPU: تعتبر وحدات معالجة الرسومات قوية في تنفيذ العمليات المتوازية بشكل فعال. يمكنها تسريع الحوسبة والتعلم العميق، وتقديم أداء جيد في مجموعة واسعة من التطبيقات. TPU: تم تصميم وحدات معالجة التنقيح خصيصًا لأداء العمليات المرتبطة بتعلم الآلة، وتعتبر أكثر كفاءة في تنفيذ العمليات الرياضية المتعلقة بالتعلم العميق، مما يعني أنها يمكن أن توفر أداءًا أفضل في بعض التطبيقات. 3- القدرة على التوسع GPU: تستخدم على نطاق واسع في مجالات مختلفة، مثل الألعاب، والعلوم، والتصميم، والتعدين، وغيرها، ويمكن استخدام مجموعة متنوعة من الألعاب المتعددة الأبعاد والتطبيقات الأخرى بفضل قدرتها على التعامل مع مهام متعددة. TPU: صُممت وحدات معالجة التنقيح بشكل خاص لتحسين أداء التعلم الآلي، ولكن هي غالبًا ما تكون محدودة في استخداماتها وتستخدم بشكل رئيسي في تطبيقات التعلم العميق والذكاء الاصطناعي. 4- أمثلة على استخدامات GPU في التعلم الآلي يستخدم تدريب النماذج العميقة للتعرف على الصور، مثل تصنيف الكائنات أو تجزئة الصور إلى أجزاء مختلفة. تدريب نماذج التنبؤ اللغوي، مثل الترجمة الآلية أو إنشاء نماذج لتوليد النصوص الطبيعية. تدريب نماذج التعرف على الصوت وتحويل الإشارات الصوتية إلى نصوص. 5- أمثلة على استخدامات TPU في التعلم الآلي تسريع عمليات التدريب في نماذج التعلم العميق، مما يؤدي إلى زيادة سرعة التدريب وتحسين الأداء العام للنموذج. تحليل البيانات الكبيرة وتدريب نماذج التنبؤ بالسلوك وتحليل البيانات الاستراتيجية في المجالات مثل التسويق والتمويل. تستفيد TPU من قدرتها على التعامل مع العمليات الرياضية المرتبطة بالتعلم العميق، مما يجعلها مثالية لتدريب النماذج الضخمة التي تحتاج إلى قوة حسابية كبيرة.
- 5 اجابة
-
- 1
-
عليك أولاً بالتركيز على إنهاء مسار الواجهة الأمامية، ولا تشتت نفسك فلا تصل لشيء حاول التعلم قدر ما تستطيع عن الواجهة الأمامية والتطبيق على أكثر من مشروع، وركز بشدة على الأساسيات ولا تتهاون بها أبدًا فستعاني إن قمت بذلك، ولا مشكلة في تخصيص أكبر وقت لها. وبعد الإنتهاء تستطيع البدء في تعلم مهارة الـ Problem Solving، وحل المسائل البرمجية باللغة المريحة بالنسبة لك، وطالما أنك تريد تعلم جافاسكريبت وبايثون فتستطيع حل نفس المسألة مرة ببايثون ومرة أخرى بجافاسكريبت، واعتمد على مواقع مثل Codewars أو Leetcode أو Hacker rank استخدم الموقع المريح بالنسبة لك، وستجد على يوتيوب الكثير من الشرح للمسائل الخاصة بـ Codewars والمواقع الأخرى. وإذا أردت رأي ابدء بموقع Codewars وعند الوصول لمرحلة التحضير لمقابلات العمل انتقل إلى موقع Leetcode فورًا. حاول إعطاء كل مسألة في البداية نصف ساعة من التفكير ثم ابحث عن الحل وتعلم منه، وحاول تقسيم المطلوب إلى أجزاء واعمل عليها ولا تنظر للمطلوب بشكل كلي فيتجمد عقلك وتصاب بالإحباط.
-
ستحتاج في البداية إلى من يرشدك ويوجهك وأن ترى كتابة الكود بعينيك والأخطاء وتصحيحاتها على الشاشة، وبعد أن تتمكن تنفيذ المشاريع بمفردك، وبالطبع ستصل لتلك المرحلة بعد الإنتهاء من مسار تعليمي كامل وبعد فترة لا تقل على 6 أشهر. لكن لا تكتفي بالدورة فقط بل ابحث وتعلم وطبق بمفردك على مشاريع أخرى. وتستطيع بعدها قراءة الكتب وهو أمر أنصحك به بشدة، لكن كما ذكرت ليس في البداية، وليس أي كتاب أيضًا فالكتب التي أرشحها لك بخصوص مجال الويب ولغة بايثون هي: JavaScript: The Good Parts by Douglas Crockford Eloquent JavaScript by Marijn Haverbeke Python Crash Course by Eric Matthes Fluent Python by Luciano Ramalho SQL for Dummies by Alan R. Simon The Pragmatic Programmer by Andrew Hunt and David Thomas Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin Grokking Algorithms Head first OOAD Good code, bad code Head First design patterns وتستطيع الإختيار من بين الكتب السابقة ما شئت لكن إذا أردت الأهم فهم: Grokking Algorithms Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin Head first OOAD Good code, bad code Head First design patterns وللأسف أغلب الكتب المفيدة باللغة الإنجليزية، وفي أكاديمية حسوب يتم محاولة توفير كتب قيمة باللغة العربية وستجد جميع الكتب في القسم الخاص بالكتب في أكاديمية حسوب. وتستطيع البحث بين قائمة أفضل الكتب مثلاً للبرمجة أو لمجال الويب أو للغة بايثون وهكذا، لكن يجب الإختيار من بينها بعناية وعن تجربة وتقييم مبرمجين آخرين، وتستطيع السؤال أيضًا، وعندما تريد قراءة كتاب يجب أن يكون الكاتب ذو خبرة تستحق الأخذ بها.
- 4 اجابة
-
- 2
-
أهمية البيانات في التعلم الآلي تعتمد خوارزميات التعلم الآلي على البيانات للتعرف على الأنماط والعلاقات، ومن ثم استخدام تلك الأنماط للتنبؤ، وجودة وكمية البيانات هما عاملان مهمان في أداء نموذج التعلم الآلي. فالبيانات ذات الجودة هي البيانات الدقيقة والكاملة والمتعلقة بالمهمة المطروحة، وإذا لم تكن البيانات عالية الجودة، فلن يتمكن نموذج التعلم الآلي من التعلم بفعالية وستكون توقعاته أقل دقة. أي إذا كنت تحاول تدريب نموذج تعلم آلي للتنبؤ بما إذا كان العميل سيترك الشركة، فإن البيانات يجب أن تتضمن معلومات عن مشتريات العميل السابقة وتوجهاته الديموغرافية وتفاعلاته مع الشركة، وإذا كانت البيانات ناقصة أو غير دقيقة، فلن يتمكن النموذج من إجراء توقعات دقيقة. كمية البيانات أيضًا مهمة، فكلما كان لدى نموذج التعلم الآلي المزيد من البيانات للتعلم منها، كان بإمكانه أن يقدم توقعات أفضل. ولكن، هناك نقطة حيث إضافة المزيد من البيانات لا تحسن أداء النموذج بشكل كبير. مثلاً عند تدريب نموذج تعلم آلي للتعرف على صور القطط، فيجب أن يتوفر مجموعة بيانات كبيرة من صور القطط، ومع ذلك، إذا كان لديك مجموعة بيانات تحتوي على ملايين الصور، فإن إضافة المزيد من الصور لن تحسن أداء النموذج بشكل كبير. تكلفة تدريب نماذج التعلم الآلي تعتمد تكلفة تدريب نماذج التعلم الآلي على عدة عوامل، بما في ذلك حجم وتعقيد مجموعة البيانات، ونوع نموذج التعلم الآلي، والموارد الحاسوبية المستخدمة. أي تكلفة تدريب نماذج التعلم الآلي مرتفعة، ولكن الكلفة قد انخفضت في السنوات الأخيرة مع توفر موارد الحوسبة بأسعار معقولة. وإليك بعض العوامل التي يمكن أن تؤثر في تكلفة تدريب نماذج التعلم الآلي: كلما كانت مجموعة البيانات أكبر، زادت الوقت والموارد الحاسوبية التي يحتاجها التدريب، فعند تدريب نموذج تعلم آلي للتعرف على صور القطط، فسيكون لديك حاجة لمجموعة بيانات كبيرة تحتوي على صور القطط، وكلما زاد عدد الصور، زاد وقت التدريب. والنماذج المعقدة تتطلب مزيدًا من البيانات والموارد الحاسوبية للتدريب، فالنموذج قادر على التعرف على صور القطط والكلاب أكثر تعقيدًا من نموذج يمكنه فقط التعرف على صور القطط، أي كلما زاد تعقيد النموذج، زاد وقت التدريب. بعض الخوارزميات مكلفة حسابيًا أكثر من الأخرى، مثل خوارزميات التعلم العميق أكثر تكلفة حسابيًا من أشجار القرار decision trees، نوع الخوارزمية المستخدمة سيؤثر على تكلفة تدريب النموذج. وتعتمد تكلفة تدريب نموذج التعلم الآلي على نوع الموارد الحاسوبية المستخدمة، فيمكن أن تكون الحوسبة السحابية طريقة فعالة من حيث التكلفة لتدريب نماذج التعلم الآلي، ولكن الحوسبة في الموقع يمكن أن تكون أكثر تكلفة. وأيضًا التكلفة تعتمد على نوع المعالجات المستخدمة وعددها والذاكرة ووحدات المعالجة المركزية المطلوبة، وقد تحتاج إلى موارد حاسوبية قوية ومكلفة لتدريب نماذج التعلم الآلي، وهذا قد يؤثر على التكلفة الإجمالية. وإذا كنت بحاجة إلى تخزين كميات كبيرة من البيانات، فستضاف تلك التكلفة إلى تكلفة تدريب النموذج، والبعض يعتمد على خدمات التخزين السحابي أو شراء مساحة تخزين إضافية لاستيعاب حجم البيانات الضخم. وفي حال كانت عملية تدريب النموذج تتطلب نقل كميات كبيرة من البيانات عبر الشبكة أو الاتصال بخوادم بعيدة، فقد تتكبد تكلفة إضافية للشبكة والاتصال، مثل تكاليف النقل وتكاليف البنية التحتية للشبكة. وهناك عوامل أخرى يمكن أن تؤثر على تكلفة تدريب نماذج التعلم الآلي، مثل تكاليف ترخيص البرامج وتكاليف صيانة وإدارة البنية التحتية.
- 8 اجابة
-
- 1
-
الكود غير صحيح، ولا تعتمد على الذكاء الاصطناعي في مثل تلك الأمور، أولاً ستعاني في شرح الأمر له، وثانيًا من الأفضل لك مراجعة الأساسيات والتفكير في كيفية حل المشكلة عن طريق تقسيم التحدي إلى أجزاء صغيرة ثم تقسيم تلك الأجزاء إلى أجزاء أصغر واعمل على تنفيذها، وبعد الإنتهاء من جزء انتقل للجزء الذي يليه. وفي حال واجهتك مشكلة في كيفية تنفيذ التحريك Animation فعليك بتعلم كيفية فعل ذلك وستجد شروحات كثيرة لذلك على اليوتيوب مثلاً. وإليك الكود الصحيح، حاول التعلم منه ثم تطبيق التحدي بأحرف أخرى مثل حرفين من اسمك مثلاً Am. الكود بدون استخدام Flex Box أو Grid: HTML <div class="one"></div> <div class="two"></div> <div class="three"></div> <div class="four"></div> <div class="five"></div> <div class="six"></div> <div class="seven"></div> <div class="eight"></div> CSS: * { box-sizing: border-box; } .one { background-color: #333; width: 300px; height: 50px; position: absolute; } .two { background-color: #333; width: 300px; height: 50px; position: absolute; top: 200px; } .three { background-color: #333; width: 300px; height: 50px; position: absolute; top: 400px; } .four { background-color: #333; width: 50px; height: 442px; } .five { background-color: #333; width: 50px; height: 442px; transform: translate(340px, -442px) } .six { background-color: #333; width: 300px; height: 50px; transform: translate(340px, -492px); } .seven { background-color: orange; width: 40px; height: 35px; transform: translate(590px, -535px); animation-name: move1; animation-duration: 5s; animation-iteration-count: 1; animation-timing-function: linear; } @keyframes move1 { 0% { transform: translate(590px, -535px) } 25% { transform: translate(345px, -535px) } 50% { transform: translate(345px, -925px) } 100% { transform: translate(345px, -925px); opacity: 0 } } .eight { background-color: orange; width: 40px; height: 35px; transform: translate(250px, -962px); animation-name: move2; animation-duration: 5s; animation-delay: 5s; animation-iteration-count: 1; } @keyframes move2 { 0% { transform: translate(250px, -962px) } 10% { transform: translate(5px, -962px) } 20% { transform: translate(5px, -770px) } 30% { transform: translate(250px, -770px) } 40% { transform: translate(5px, -770px) } 50% { transform: translate(5px, -569px) } 60% { transform: translate(250px, -569px) } 70% { transform: translate(5px, -569px) } 90% { transform: translate(5px, -962px) } 100% { transform: translate(250px, -962px) } } الكود باستخدام Grid: HTML <div class="parent"> <div class='one'></div> <div class='two'></div> <div class='three'></div> <div class='four'></div> <div class='five'></div> <div class='six'></div> </div> CSS .parent { width: 800px; height: 450px; background-color: #eee; padding: 25px; margin: 10px auto; position: relative; display: grid; grid-template-columns: repeat(10, 1fr); grid-template-rows: repeat(3, 1fr); } .parent div { background-color: #383838; } .parent .one { grid-row: 1 / span 3; } .parent .two { grid-column: 2 / span 3; height: 70px; align-self: flex-start; } .parent .three { grid-column: 2 / span 3; height: 70px; align-self: center; } .parent .four { grid-column: 2 / span 3; height: 70px; align-self: flex-end; } .parent .five { grid-column: 6 / span 1; grid-row: 1 / span 3; } .parent .six { grid-column: 7 / span 3; height: 70px; align-self: flex-end; } .parent::after { content: ''; height: 45px; width: 45px; position: absolute; background-color: #ffb104; right: 120px; bottom: 37px; animation: my-first-move 3s linear both; } .parent::before { content: ''; height: 45px; width: 45px; position: absolute; background-color: #ffb104; left: 285px; top: 37px; animation: my-second-move 3s linear 3s; } @keyframes my-first-move { 0% { right: 120px; } 30% { right: 361px; bottom: 37px; } 70% { opacity: 1; right: 361px; bottom: 417px; } 100% { opacity: 0; right: 361px; bottom: 417px; } } @keyframes my-second-move { 0% { left: 285px; top: 37px; } 10% { left: 44px; top: 37px; } 20% { left: 44px; top: 225px; } 30% { left: 285px; top: 226px; } 40% { left: 44px; top: 225px; } 50% { left: 44px;top: 417px; } 60% { left: 285px; top: 417px; } 70% { left: 44px; top: 417px; } 85% { left: 44px; top: 37px; } 100% { left: 285px; top: 37px; } }
- 1 جواب
-
- 1
-
من الأفضل التركيز على مجال الويب، وتعلم اللغات الأساسية HTML, CSS, JS والتركيز عليهم بشدة وبشدة وبشدة والتطبيق على أكثر من مشروع باستخدام تلك اللغات، ثم التطبيق على js بمفردها من خلال أكثر من مشروع وستجد على اليوتيوب أو جوجل الكثير من المشروع بمستويات مختلفة في المحتوى العربي والأجنبي. ثم انتقل بعد ذلك لتعلم إطار عمل للواجهة الأمامية مثل Angular أو Vue.js أو مكتبة مثل React والأمر يعتمد على المطلوب في سوق العمل لديك بكثرة بالنسبة لمستوى Junior أو Entry Level، وبخصوص مواقع العمل الحر فالأفضل التركيز على تعلم PHP ولارافيل وورد بريس ومعهم إطار Vue.js أو React. وبالطبع عليك إنشاء أكثر من مشروع حقيقي وليس مجرد نماذج من خلال إطارات العمل التي ذكرتها لك وذلك لإنشاء معرض أعمال جيد مناسب للتقدم إلى وظيفة أو تكوين معرض أعمال من أجل العمر الحر، ولا تنسى تعلم GitHub ورفع مشاريعك عليه. بعد ذلك ستحتاج إلى إنشاء مشاريع أكثر تعقيدًا بأفكار مختلفة لكي تكتسب الخبرة اللازمة وزيادة معرفتك ومهاراتك. وبعد تنفيذ ما سبق، تستطيع تعلم تطوير تطبيقات الهاتف من خلال Flutter أو React Native كما تريد، وبالطبع هو أمر جيد لكن يجب التركيز على المجال الذي تريد التخصص به أولاً.