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

Sam Ahw

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

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

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

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

    16

كل منشورات العضو Sam Ahw

  1. من الصورة مازالت صيغ الملفات ظاهرة ضمن الأيقونات، هل حاولت فتح الملفات؟ إن استطعت فتح الملفات دون مشاكل يمكنك فقط حذف اللاحقة .exe منها وخاصة المجلّدات حيث يتم اعتبار الجزء .exe ضمن الاسم وليس كصيغة للملف
  2. elements هو جزء من الخرج وليس متغيّر عام، أنا وضعته فقط لسهولة توضيح المثال ولكن يجب عليك الوصول لقيمته الفعلية من خلال الرد response الذي يأتي من API، ومن الصورة المرفقة والشيفرة أصبحت قيمته موجودة لديك ضمن المتغيّر results: var results = response.rows[i].elements;
  3. يمكنك البحث عن أصغر قيمة ضمن مصفوفة elements للوصول إلى المسافة الأقصر باستخدام الدالة reduce كالتالي: elements.reduce(function(prev, curr) { return prev.distance.text < curr.distance.text ? prev : curr; }); أو بشكل مختصر: (prev, curr) => prev.distance.text < curr.distance.text ? prev : curr ولكن قبل ذلك بما أن القيمة هي سلسلة نصية وفيها الواحدة km يجب عليك إجراء التحويل اللازم باستخدام الدالة map مثلاً: const elements = elements.map(x => x.distance.text = x.distance.text.split(" ")[0]); ونظراً للواحدة km، في حال كان الخرج من الممكن أن يحوي واحدات قياس أخرى أصغر منها مثل m، فيمكنك استخدام طرق أخرى لفحص الواحدة والقيام بالتحويل اللازم حسب الشروط (باستخدام if أو switch أو غيرها) أو يمكنك الاعتماد على المدّة الزمنية duration بدلاً من المسافة لتسهيل العمل في حال كان مشروعك يتطلب فقط الطريق الأقرب بدلاً من الأقصر طولاً. هذه فكرة الحل العامة، قد يختلف التطبيق حسب لغات وأطر العمل التي يتم استخدامها في مشروعك كونه لا يوجد تفاصيل إضافية عن المشروع.
  4. عملية البحث بهذه الطريقة ستكون غير فعّالة إطلاقاً، فسيتطلب ذلك دمج كامل الجداول مع بعضها وفي حال كانت الجداول تحوي كميات كبيرة من البيانات سيستغرق وقتاً كبيراً للبحث ضمن كامل البيانات الموجودة في هذه الجداول. ويوجد عدّة طرق لتسهيل هذه العملية من خلال إنشاء فهرس Index خاص بخانة البحث حيث سيسرّع ذلك عملية البحث أو تحديد أعمدة مخصصة تحوي النصوص التي يمكن للمستخدم البحث عنها ضمن عدّة جداول وبعد ذلك ربط هذه الجداول مع بعضها باستخدام العمليات Join، مثال مبسّط: select * from table1 where match(col1, col2, col3) against ('search word') union all select * from table2 where match(col1, col2) against ('another word') union all select * from table3 where match(col1, col2, col3, col4) against ('some words') أو يمكنك إعادة بناء هيكلية الجداول لديك وربطها مع بعضها من خلال المفتاح الفريد Primary Key وتخصيص حقل محدد لتكرار القيم المراد البحث عنها ضمن هذه الجداول.
  5. يمكنك تعلّم إطار العمل React في أي وقت في حال كنت تتقن المهارات الأساسية الخاصة بتطوير الويب مثل HTML, CSS, والجافاسكريبت، وهنا يجب عليك التأكد من فهمك لأساسيات الجافاسكريبت لأن مكتبة React مبنية عليها وفي حال عدم تمكنك من لغة الجافاسكريبت بشكل جيد ستواجه صعوبة في فهم وتطبيق الأمثلة ضمن مكتبة React
  6. في أسئلتك يوجد قسمين: واجهة المستخدم front-end وواجهة الخادم أو الواجهة الخلفية back-end. في حال كنت تريد التعمّق في React دون تعقيدات الواجهة الخلفية والتعامل معها كما ذكرت، فلن تحتاج تعلّم تقنيات API أو التوثيق أو أي شيء يخص قواعد البيانات وخوادم الويب كون المجالين منفصلين عن بعضهما بشكل كامل. وهنا يمكنك الاكتفاء فقط بالتعامل مع أي بيانات متاحة عبر API على الانترنت حتى لو كانت بيانات تجريبية فالغرض من تطوير واجهات المستخدم هو فقط الحصول على هذه البيانات وإظهارها ضمن التنسيقات وتخطيط الوجهات المناسب أما تقنيات التعامل معها ضمن خادم الويب فهي غير ضرورية. لذلك يمكنك استخدام Firebase في حال أردت إجراء بعض التجارب السريعة على قواعد البيانات أو على طرق التعامل مع API من خلال React. من طرف المستخدم، يجب الاطلاع على تقنيات التعامل مع API للحصول على الأداء الأمثل، ومنها التعامل مع أنماط البيانات المختلفة واستراتيجيات التخزين المؤقت مثل Cache لحفظ البيانات الثابتة وعدم إرسال طلبات مكررة لخادم الويب، وتوثيق المستخدمين وآلية حفظ الجلسات أو JWT بطريقة آمنة والعديد من الأمور الأخرى التي قد تحتاجها حسب المشروع الذي تعمل عليه، لذلك أقترح عليك بالبدء ببناء بعض المشاريع واكتشاف هذه الآليات أثناء التطبيق. في حال كان لديك خبرة جيدة في React، يمكنك البدء أولاً بالاطلاع على توثيق GraphQL فهو شامل ويحوي كامل التفاصيل عن الاستخدام في طرف واجهة المستخدم وخادم الويب أيضاً، ولكن هنا أيضاً يجب عليك تعلّم بناء خادم الويب لأنك ستحتاجه في حال أردت تعلّم graphQl وربطه مع قواعد البيانات. ثم يمكنك تنفيذ بعض المشاريع البسيطة لتطبيق المفاهيم التي تتعلمها. حاول فصل المجالين عن بعضهما ولا تشتت نفسك بتعلّم كافة تقنيات تطوير الويب بوقت واحد، وأي مجال أو تقنية ترغب بتعلمها ستجد مصادر غير محدودة على الانترنت لتعلّمها. بعض المصادر المفيدة:
  7. ملف startup.cs تابع لحزمة التوثيق OWIN وإن لم يكن موجود ضمن مشروعك يوجد قالب يمكن إضافته من خلال مدير الحزم من قسم web يمكنك اختيار OWIN Startup Class والذي بدوره ينتج صف مشابه للتالي: using System; using System.Threading.Tasks; using Microsoft.Owin; using Owin; [assembly: OwinStartup(typeof(WebApiOsp.App_Start.Startup))] namespace WebApiOsp.App_Start { public class Startup { public void Configuration(IAppBuilder app) { // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=316888 } } } ثم يمكنك إضافة الملف startup.cs الخاص بك، وفي حال ظهور مشكلة ولم يستطع قراءة الملف يجب عليك حذف السطر التالي من إعدادات Web.config : <add key="owin:AutomaticAppStartup" value="false" />
  8. إذا كان سؤالك متعلّق بدروس دورات أكاديمية حسوب، يجب عليك طرح السؤال في التعليقات أسفل الدرس المقصود وسنعمل على مساعدتك وشرح الأفكار الغير مفهومة. أما إن كان السؤال عام وغير متعلّق بمحتوى الدورات يمكنك طرحه هنا ضمن الأسئلة العامة بلغة عربية واضحة مع إرفاق كامل التفاصيل حول المشكلة أو السؤال وتوضيح المشكلة بشكل كامل. يمكنك الاطلاع على إرشادات كتابة الأسئلة من هنا: كيف تحصل على إجابة لسؤالك؟
  9. لايوجد فرق في نوع البطارية سواء كانت داخلية أم خارجية، أي بطارية لها عمر ودورات شحن محددة والاستهلاك الكبير والمتواصل سيؤثر على أدائها على المدى الطويل. بالنسبة للاستهلاك حاول متابعة جميع الخدمات والبرامج التي تعمل بالخلفية لتحديدها قدر الإمكان ومنعها من استخدام الانترنت أثناء رفع الفيديو.
  10. بالنسبة لشاشة الجوال نفسها، فذلك يعود لنوع جهازك ومدى تحملّه للاستخدام المتواصل ولكن بشكل عام لن يؤثر الأمر كثيراً على المدى القصير، فجميع الهواتف الحديثة تم تصميمها بطريقة تتحمل الاستخدام المتواصل لساعات عديدة إنما التأثير الأكبر سيكون على بطارية الجهاز وعمرها الافتراضي. أما بالنسبة لاستهلاك الانترنت، فيوجد العديد من الطرق لحظر الانترنت وإتاحته فقط على برامج معيّنة وبذلك لن تحتاج لرفع الفيديوهات من الهاتف الجوال بل ستتمكن من استخدام حاسوبك لأداء هذه المهمة، ويمكن على سبيل المثال تحقيق هذا في نظام ويندوز دون استخدام برامج من خلال تعطيل خاصية التحديث التلقائي لنظام التشغيل ورفع حالة الحظر في جدار الحماية Firewall وحظر جميع الاتصالات الخارجية وبعد ذلك يمكنك إجراء استثناء فقط لمتصفح الويب وبالتالي لن يحدث استهلاك من أي برامج أخرى كونها غير قادرة على الاتصال بالانترنت وإرسال البيانات عبر الشبكة. يمكنك حظر الاتصال من خلال التوجه إلى جدار الحماية أو "Windows Firewall with Advanced Security" ومن القائمة Action نختار Properties ثم يمكنك اختيار حظر أو block للخاصية Outbound Connections. وبعدها يمكنك البحث عن متصفح الويب الذي تستخدمه ضمن قائمة البرامج الموجودة ضمن النافذة والسماح له باستخدام الاتصالات الخارجية والتعامل على شبكة الانترنت.
  11. تظهر هذه المشكلة بشكل كبير في حال لم يكن لديك سعة تخزين كافية على حاسوبك، حاول التأكد من سعة التخزين المتاحة لديك. كما يمكنك إيجاد المزيد من التفاصيل حول المشكلة من خلال سجل الأخطاء الموجود ضمن المسار التالي على القرص C : \AppData\Local\Google\AndroidStudio2020.3\log\idea.log في حال كان الخطأ "Emulator: cannot add library vulkan-1.dll: failed" يوجد حل مؤقت من خلال إعادة تسمية الملف vulkan-1-999-0-0-0.dll إلى الاسم: vulkan-1.dll الموجود ضمن المسار C:\Windows\System32 في حال لم تنفع الطرق السابقة حاول إزالة Android Emulator وإعادة تثبيته من جديد ضمن برنامج Android Studio من النافذة التالية: (Tools -> SDK Manager -> SDK Tools)
  12. التطبيق العملي مع المدرّب في كافة الدروس سيساعدك على اختبار فهمك للمعلومات التي يتم شرحها ويزيد من خبرتك. أما التطبيق العملي النهائي الموجود في المسارات فهو مشروع متكامل لتطبيق كافة الأفكار التي تم شرحها ضمن الدروس. يجب عليك متابعة الخطوات مع المدرّب ومحاولة تطبيقها قدر الإمكان للوصول إلى نتائج أفضل وفهم الأفكار بشكل أفضل وحتى إن طلبت منك لاختبار الشهادة تكون التطبيقات موجودة لديك.
  13. التعلم الآلي أو تعلم الآلة (Machine Learning) هو مجموعة فرعية من الذكاء الاصطناعي الذي يستخدم تقنيات (مثل التعلم العميق) التي تمكن الأجهزة مـن استخدام الخبرة للتحسين في أداء المهام، وبالتالي إن كنت مهتماً في مجالات الذكاء الاصطناعي فحتماً ستجد ترابط كبير كون معظم تقنيات الذكاء الاصطناعي تصب في تعلّم الآلة وتعتبره حجر الأساس، فعلاقة تعليم الآلة بالذكاء الإصطناعي هي أنه يستخدم كأساس للذكاء الإصطناعي في العديد من التطبيقات. كما يعتمد تعليم الآلة على البيانات وتحليلها لإيجاد النماذج والأساليب الجديدة للتحليل والتنبؤ والتي بدورها من العمليات التي تندرج ضمن مجال الذكاء الاصطناعي. تعليم الآلة مفيد في سوق العمل، حيث يستخدم بشكل واسع في الأعمال والصناعات المختلفة، مثل التجارة والتسويق والتكنولوجيا والصحة وغيرها من التطبيقات التي تزداد يوماً بعد يوم. يمكنك قراءة المزيد من التفاصيل حول تطبيقات الذكاء الاصطناعي وتعلّم الآلة والاطلاع على بعض الخوارزميات والأمثلة:
  14. نعم من الطبيعي جداً نسيان بعض الأفكار والشروحات خاصةً فيما يتعلّق ببرمجة الواجهة الخلفية وخوادم الويب لأن معظم الأفكار والاستراتيجيات تكون غير مرئية بشكل فعلي كما هو الحال بالنسبة للتصميم مثلاً. لذلك يجب عليك تكرار مشاهدة وقراءة هذه الشروحات التي تتابعها لترسيخ الأفكار التي تتعلمها ومع الوقت والتطبيق ستزداد خبرتك في هذا المجال وستصبح هذه الأفكار أكثر تواجداً في ذاكرتك. وكلما تعلّمت أفكار جديدة حاول البحث عن أمثلة عملية لها وإن أمكن حاول تطبيقها بنفسك حتى تتحول هذه الأفكار النظرية إلى تطبيق عملي وتزيد من خبرتك. يمكنك قراءة المزيد عن إجابات واقتراحات لمشكلة مشابهة لمشكلتك:
  15. يتم تنمية هذه المهارات بشكل عام من خلال القراءة والبحث والتطبيق، فكلما واجهت مشاكل أكثر واستطعت إيجاد حلول أمثلية لها ستزداد خبرتك مع الوقت في حل المشاكل والتفكير المنطقي. أما بالنسبة لاشتراكك في الدورات فهو لن يشتتك بل على العكس حتى مع اختلاف لغات البرمجة ستتيح لك الدورات التطبيق العملي على مشاريع عملية وفقاً لأفضل المعايير التي يشرحها المدربون خلال الدروس وبالتالي يمكنك اعتمادها كحلول منطقية أمثلية واتباع الإرشادات التي يتم شرحها لكي تبدأ بتنمية مهاراتك في مشاريعك الخاصة. إن لغة البرمجة بحد ذاتها لن تؤثر على مهارات حل المشكلات والتفكير المنطقي، فلغة البرمجة هي وسيلة لتطبيق الخوارزميات وتحقيق الأهداف المرجوة مهما اختلفت الشيفرات البرمجية والتقنيات وأطر العمل المستخدمة. معرفة أو الاطلاع على أكثر من لغة برمجة سيساعدك أيضاً في التفكير المنطقي وعليها ستتمكن فيما بعد من اختيار لغات البرمجة والتقنيات لتحقيق الأداء الأمثل واختيار المسار المناسب لكل مشروع تعمل عليه في المستقبل. أما تنمية مهاراتك بشكل عام فيوجد العديد من الطرق بالإضافة للتطبيق العملي الذي ذكرته سابقاً يمكنك البحث على الانترنت وقراءة المقالات والكتب والمصادر الموجودة عن الخوارزميات ومحاولة تطبيق أكثر من حل بأي لغة برمجة تتقنها ومقارنة النتائج لاختيار الحل الأمثل لها وهذا بدوره سيساعدك كثيراً على تنمية مهارة التفكير المنطقي وحل المشكلات بالطريقة الأمثل. كما يمكنك الاطلاع على التعليقات الموجودة على سؤال مشابه:
  16. لم تشارك أي معلومات عن بيئة الاستضافة ونظام التشغيل الذي تستخدمه. ولكن إن كنت تقصد عن التعديلات التي تجريها ضمن بيئة التطوير، يمكنك مشاركة تعديلات شيفراتك البرمجية مع الحاوية container باستخدام bind mounts بدلاً من إعادة إنشاء الصورة من جديد عند أي تعديل، فمثلاً يمكنك استحضار المجلّد المصدر (الذي يحوي بداخله مشروعك) وليكن بالاسم “./source_dir” عند تشغيل الحاوية باستخدام Docker CLI كالتالي: $ docker run -it --mount "type=bind,source=$(pwd)/source_dir,target=/app/target_dir" ubuntu bash حيث سيتم استبدال $(pwd) بالمجلّد الحالي الذي يتم تنفيذ الأمر عنده. كما يمكنك إنشاء ملف الإعدادات docker-compose.yml ضمن مشروعك، مثال: version: '3' services: example: image: ubuntu volumes: - ./source_dir:/app/target_dir command: touch /app/target_dir/hello ويمكنك القراءة والبحث أكثر عن طرق كتابة ملفات docker-compose.yml وتعريف الصور والحاويات. كما يوجد العديد من الطرق لتسهيل عملية رفع المشاريع بعد إجراء التعديلات في بيئة الاستضافة على الانترنت والتي تختلف حسب المشروع وحسب الطرق التي تتبعها في نشر مشروعك.
  17. يتم الرد خلال 24 ساعة، كما يمكنك إرسال رسالة للبريد الالكتروني التالي: academy@hsoub.com تأكد من أن تتفقد بريدك الالكتروني وقسم Junk للانتباه لأي رسائل جديدة من حسوب.
  18. يمكنك التواصل مع الدعم الفني بأي وقت (من هنا) والضغط على زر تحدّث معنا لطرح أي سؤال أو مشاكل تواجهها وسيعملون على مساعدتك بأفضل شكل ممكن. بالتوفيق،
  19. يظهر لديك الخط لأن باني الصف NotificationCompact الذي يقبل متغيّر واحد تم الاستغناء عنه بدءً من نسخ API level 26.1.0. واستبداله في النسخ الحديثة بباني آخر يستقبل متغيرين (بإضافة Notification_Channel_ID وهو من نمط سلسلة نصية String) ليصبح بالشكل التالي: NotificationCompat.Builder(Context context, String channelId) مثال: String NOTIFICATION_CHANNEL_ID = "my_channel_id_01"; NotificationCompat.Builder(adding.this, NOTIFICATION_CHANNEL_ID) ولحل هذه المشكلة في حال أردت الإبقاء على النسخة القديمة يمكنك إما تعديل نسخة API المستخدمة في مشروعك أو تجربة الشيفرة التالية (ولكنها حلول مؤقتة فقط وليست أمثلية): Notification.Builder notification=new Notification.Builder(this) .setContentTitle("New notification") .setContentText("You've received new messages.") يمكنك الاطلاع على المزيد من التفاصيل والأمثلة من التوثيق الرسمي بالبحث عن NotificationCompat.Builder على الانترنت
  20. يجب عليك إرفاق جزء من الشيفرة البرمجية التي تظهر فيها المشكلة لنستطيع مساعدتك بشكل أفضل، ولكن بشكل عام في حال كنت تقوم بإظهار النموذج form داخل دالة render، في كل مرة سيتم كتابة محرف ما داخل حقول الإدخال سيتم إعادة بناء المكون ولذلك يفقد التركيز داخل حقل الإدخال، لذلك حاول وضع محتوى الدالة render بشكل مباشر: <main> <div> <MyForm /> </div> </main> تصبح كالتالي <main> <div> <form onSubmit={onSubmit}> <InputText name="title" label="Username" placeholder="Enter a username" onChange={onChange} value={valueTitle} /> <InputSubmit name="Save" /> </form> </div> </main> أو حاول استدعاء المكونات بالشكل {compName()} بدلاً من <compName /> كالتالي: const ex = (pr) => { return ( <input type='text' onChange={onChange} value={value} /> ); }; const main = () => ( <ex pr={true} /> ); من الأسباب الأخرى لهذه المشكلة أيضاً في حال كنت تستخدم الخاصية key في حقول الإدخال، يجب عليك التحقق منها ومن آلية عملها فسيتم إعادة إنشاء العناصر لكل قيمة مختلفة من الخاصية key وبالتالي أيضاً سيفقد التركيز ضمن حقول الإدخال.
  21. شركة Oracle لم تشتري لغة البرمجة جافا بشكل مباشر بمقابل مادي، تم إطلاق لغة البرمجة جافا للمرة الأولى عام 1955 حيث تم إطلاق الإصدار الأول (JDK Alpha and Beta) من قبل مبرمج يدعى "James Gosling" ضمن شركة Sun Microsystems وكان الهدف الأساسي منها السماح للأجهزة الإلكترونية الاستهلاكية بالتواصل مع بعضها البعض. وفيما بعد استحوذت شركة Oracle على شركة Sun Microsystems عام 2010 مقابل العمل على تطوير التقنيات والترميز وجميع الخصائص ضمن جافا وبالتالي أصبح لها كامل الحقوق. وبعد ذلك باشرت شركة أوراكل بنشر تحديثات دورية بدءً من الإصدار (Java SE). يمكنك قراءة كامل التفاصيل حول أصل جافا ومراحل تطورها عبر الزمن وأسماء المطورين حسب المراحل الزمنية إذا أجريت بحث بسيط على الانترنت.
  22. تعلّم البرمجة مختلف عن المجالات الأخرى، يجب عليك أخذ الوقت الكافي لتستطيع فهم الأفكار الجديدة وتطبيقها بشكل عملي أكثر من مرة حتى تنمي مهاراتك في البرمجة والتحليل وحل الأخطاء لتتمكن من بناء المشاريع البرمجية بنفسك بعد الانتهاء من الدورة. لذلك حاول ألا تتعجّل في الانتهاء من الدروس بغرض التقديم على الشهادة، بل حاول أن يكون هدفك الأول هو تعلّم البرمجة وتنمية مهاراتك، ولا بأس في حال أخذت المزيد من الوقت بذلك فكلما أعدت مشاهدة الدروس وحاولت تطبيقها بنفسك بطرق مختلفة وبحثت على الانترنت عن الحلول والإضافات الأخرى ستزيد من خبرتك ومهاراتك وسيكون لديك فرصة أكبر في النجاح في امتحان الشهادة ومشاريعك المستقبلية وعملك. أما بالنسبة للصعوبة التي تواجهها في بعض المسارات، حاول إعادة مشاهدة الدرس وتطبيق الخطوات مع المدرّب وفي حال وجدت أي نقطة غير مفهومة يمكنك كتابة تعليقك أسفل الدرس وسيعمل المدرّبون على مساعدتك وحل جميع المشاكل التي تواجهها. بالتوفيق،
  23. كما تخبرك رسالة الخطأ يوجد مشكلة في ملفات برنامج Android Studio أو يتعذّر الوصول لها لإتمام عملية البناء المطلوبة. وتظهر هذه الرسالة لعدّة أسباب ومنها مضاد الفيروسات الموجود على جهازك، أو أن ملفات المشروع موجودة ضمن قرص مختلف عن القرص C وبالتالي لايتم الوصول لملفات تحضير البيئة التابعة لبرنامج Android Studio، أو الملفات محمية الوصول من قبل المستخدم الحالي. تأكد من وجود الملفات ضمن المسار الظاهر في رسالة الخطأ: C:\Program Files\android\Android Studio\jre\bin\java وأن برنامج Android Studio قادر على الوصول وقراءة وتعديل هذه الملفات من خلال إعادة تشغيل البرنامج كمسؤول (run as administrator) في حال كان نظام تشغيلك ويندوز. في حال استمرت المشكلة حاول إعادة تشغيل حاسوبك أو إعادة تحميل برنامج Android Studio للتأكد من عدم وجود أخطاء أثناء التثبيت.
  24. حاول التأكد من أنه يمكنك استخدام المنفذ 2525 على خادم الويب لديك، أو يمكنك محاولة تغيير المنفذ إلى 465. ثم يمكنك تجربة الإعدادات التالية: MAIL_DRIVER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=465 MAIL_USERNAME=xxx MAIL_PASSWORD=yyy وإزالة السطر MAIL_ENCRYPTION والأهم، عندما تجري التعديلات على هذه الإعدادات تأكد من قيامك بتنفيذ الأوامر التالية: php artisan cache:clear php artisan config:clear وإعادة تشغيل الخادم لضمان تحديث الإعدادات
  25. يتم فتح النافذة المنبثقة للبحث والاستبدال من خلال الأوامر التالية: نافذة البحث: Application.Dialogs(xlDialogFormulaFind).Show نافذة الاستبدال: Application.Dialogs(xlDialogFormulaReplace).Show
×
×
  • أضف...