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

Mustafa Suleiman

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

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

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

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

    365

كل منشورات العضو Mustafa Suleiman

  1. بسبب أنك تقوم بتعليق الـ Fiber باستخدام Fiber::suspend(curl_exec($curl)). المشكلة هنا أن curl_exec غير متوافقة مع الـ Fibers، أي عند استدعاء curl_exec، فيتم محاولة تنفيذ الطلب بالكامل بشكل متزامن، مما يؤدي إلى حظر الـ Fiber وعدم استئنافها. بالتالي، لا يتم الوصول إلى $fiber->resume() أبدًا، ولا يتم طباعة الاستجابة. الصحيح هو التالي: <?php $fiber = new Fiber(function () { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://jsonplaceholder.typicode.com/todos/1'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true); print_r($data); }); $fiber->start(); لاحظ تنفيذ curl_exec بالكامل داخل الـ Fiber، ثم فك تشفير JSON وطباعة البيانات قبل انتهاء الـ Fiber.
  2. عذرًا على ذلك، ربما مشكلة في الإنترنت لديك بسبب بطء التحميل، من المفترض أن يتم نقلك للتعليق مباشرًة عند إنتهاء تحميل الصفحة. حاول تحديث الموقع وحذف الملفات المؤقتة بالضغط على CTRL + F5، إن استمرت المشكلة قم بالتجربة من خلال إنترنت ذو سرعة جيدة، أو من خلال الهاتف مثلاً.
  3. ما هو المجموع الخاص بك؟ عامًة المعاهد الخاصة بعلوم الحاسوب ستجدها خاصة وليست حكومية لذا المصاريف السنوية مرتفعة نسبيًا حسب المعهد، لكن أنا لا أنصحك بذلك إلا في حال تريد دخول جامعة خاصة لها اسم ومستوى جيد. دخولك جامعة متخصصة في مجال البرمجة يزيد من فرصك وإلتزامك بالطبع ، لكن الجامعة هي ميزة إضافية ولا يتوقف عليها الأمر في مجال البرمجة، فستجد الكثيرين لم يحصلوا على شهادة جامعية في البرمجة ويعملون في ذلك المجال بشركات كبيرة.
  4. الأمر يتم من خلال مزيج من Authentication و Authorization. أي الـ Authentication تتأكد من هوية المستخدم الذي يحاول الوصول إلى النظام (هل هو مدير النظام أو طالب)، والـ Authorization تحدد هل المستخدم المخول له الوصول إلى مورد أو إجراء معين (مثل عرض لوحة التحكم، تعديل البيانات، إلخ). ويوجد مكتبات لتسهيل الأمر وتنفيذ المنطق الذي تريده، ستجد تفصيل هنا:
  5. ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
  6. تقصد البحث عن مقالة مثلاً في الموقع أو نص معين؟ ذلك بحاجة إلى تواجد قاعدة بيانات للموقع يتم من خلالها البحث عن القيمة المرادة، ثم إرجاع النتائج المتشابهة لما تم بالبحث أو متعلقة به، بالتالي عليك إنشاء واجهة خلفية back-end للتعامل مع قاعدة البيانات.
  7. تفقد نسبة العرض إلى الارتفاع في إعدادات مشروع Godot هل تتطابق مع نسبة العرض إلى الارتفاع لهاتفك، وذلك من الإعدادات في Project -> Project Settings -> Display -> Window -> Aspect. ربما تحتاج إلى ضبط دقة العرض في إعدادات المشروع لتتناسب مع دقة شاشة هاتفك. أيضًا قم بضبط وضع التكبير/التصغير في إعدادات المشروع على 2D Project -> Project Settings -> Display -> Window -> Stretch -> Mode -> 2D وهل حجم الكاميرا مناسب لعرض الخريطة والشخصية بشكل صحيح؟ تستطيع ضبط حجم الكاميرا من خلال تعديل خاصية Zoom في نود الكاميرا. وتأكد من أن الكاميرا موضوعة في مكان مناسب لعرض الخريطة والشخصية، أيضًا مقياس الخريطة مناسب لعرضها بشكل صحيح على شاشة الهاتف مع ضبط مقياس الخريطة من خلال تعديل خاصية Scale في نود الخريطة. بالإضافة إلى مقياس الشخصية هل هو مناسب لعرضها بشكل صحيح على شاشة الهاتف، بإمكانك ضبط مقياس الشخصية من خلال تعديل خاصية Scale في نود الشخصية.
  8. المشكلة بسبب الطريقة التي يتعامل بها نظام أندرويد مع ملفات الموارد في الإصدار 21 (SDK 21) والإصدارات الأحدث. ففي الإصدار 21، قدم نظام أندرويد نظامًا جديدًا للموارد يُسمى Vector Drawables يسمح بتخزين وتحميل الموارد بكفاءة أكبر، وأدخل التغيير أيضًا بعض مشكلات التوافق مع واجهات برمجة التطبيقات القديمة، بما في ذلك فئة SoundPool. فرسالة الخطأ File res/raw/click.wav from drawable resource ID #0x7f080000 تعني أن النظام يحاول تحميل ملف click.wav كمورد قابل للرسم drawable resource بدلاً من مورد خام raw resource، وذلك لأن معرّف مورد R.raw.click يتم تفسيره على أنه معرّف مورد قابل للرسم، وهو ليس ما نريده. عليك استخدام ميثود getResources().openRawResourceFd() بدلاً من soundPool.load(this, R.raw.click, 1)، ويعود الميثود بكائن FileDescriptor يمكن استخدامه لتحميل ملف المورد الخام. soundClick = soundPool.load(getResources().openRawResourceFd(R.raw.click), 1); واستخدام فئة AssetFileDescriptor لتحميل ملف المورد الخام، حيث توفر تحميل الملفات من دليل الأصول assets directory: AssetFileDescriptor afd = getResources().openRawResourceFd(R.raw.click); soundClick = soundPool.load(afd.getFileDescriptor(), 0, afd.getLength(), 1); ووضع ملف click.wav في assets directory بدلاً من دليل res/raw، للسماح بتحميل الملف باستخدام فئة AssetManager. AssetManager assetManager = getAssets(); soundClick = soundPool.load(assetManager.openFd("click.wav"), 0);
  9. أولاً عليك تحديد المسار بمعنى الـ API الذي سيقوم بمعالجة البيانات التي سيتم إرسالها، وذلك نحدده من خلال سمة action في عنصر form: <form action="هنا" method="POST"> بالتالي في ملف web.php عليك إنشاء مسار ثم إنشاء متحكم Controller لمعالجة الطلب. ولإرسال البيانات إلى الـ API، نقوم بذلك من خلال زر button من نوع submit ونضعه ضمن عنصر form لكي يعمل مع ذلك النموذج. <button class="formbold-btn" type="submit">Apply Now</button>
  10. الشهادة في أي مجال دليل على أنك أنهيت مادة علمية في مجال معين، لكن هل هي دليل على جودة مهاراتك؟ بالطبع لا وذلك بالنسبة للشهادات التي يتم الحصول عليها بعد الإنتهاء من مشاهدة كورس معين. أما في أكاديمية حسوب فتحصل على الشهادة بعد إجتياز إختبار شفهي وعملي، لذا هي ليست شهادة حضور بل تعني أنك تمتلك المهارات اللازمة بالفعل. عليك إنشاء حساب على LinkedIn ووضع الشهادة بحسابك وذكر ما تعلمته والمهارات التي اكتسبتها. أي في مقابلات العمل فالشهادات المهمة هي من مايكروسوفت مثلاً أو أمازون فهي شهادات اعتماد بإختبارات صعبة معتمدة. وعامًة المهم هو مهاراتك ومعرض أعمال بجودة عالية يثبت ذلك.
  11. الأمر ليس له قاعدة، لكن لو أردت النصيحة كلما خصصت وقت للمذاكرة من يومك كان أفضل، إلا في حال كان سنك صغير فهنا ليس عليك المذاكرة 10 ساعات مثلاً يوميًا. أما لو كنت في الجامعة أو تبحث عن عمل، فستحتاج إلى الدراسة ما بين 5 إلى 10 ساعات يوميًا، وأغلب المسارات البرمجية بحاجة إلى 6 أشهر من الدراسة اليومية أو الشبه يومية على الأقل، وبعد تلك المدة ستقوم بتحسين مستواك خلال الـ 6 أشهر أخرى وما بعدها. إذا أردت نصيحتي، فلا تستمتع لمن يخبرك بالدراسة 30 دقيقة ثم استراحة 10 أو 5 دقائق وهي تقنية Pomodoro، فهو يضرك بدون قصد. فالعقل يستغرق حوالي 23 دقيقة للدخول في مرحلة التركيز، والتوقف بعد 25 دقيقة يحرمك من التركيز العميق وحالات التدفق flow states. وسأوضح لك كيفية خداع عقلك لتعلم شيء جديد بسرعة وبفعالية أكبر: حدد فترة زمنية مركزة، أي ابدأ بأن تخبر نفسك أنك ستخصص الـ 45 دقيقة القادمة فقط لتعلّم الموضوع أو المهارة الجديدة، وذلك لا يضعك تحت ضغط ويخبر عقلك أن الأمر مجرد 45 دقيقة، ويساعدك في دخول وضعية تعلّم ذات تركيز عالٍ. خلال تلك الفترة المُركّزة لمدة 45 دقيقة، يُفرَز اثنان من المواد الكيميائية المهمة في عقلك: الأدرينالين وهو الهرمون الذي يزيد من اليقظة ويجعلك أكثر انتباهًا واستعدادًا لاستيعاب المعلومات الجديدة. الأسيتيل كولين، ويلعب دورًا حاسمًا في عملية التعلم وتشكيل الذاكرة، وعند إفرازه، يقوم بتعزيز تعديل الاتصالات العصبية المرتبطة بالمهمة المحددة، مما يعني تسليط الضوء على المناطق التي يرغب الدماغ في تغييرها لاستيعاب المعلومات الجديدة. وبمجرد انتهاء الفترة المُركّزة للتعلم، فقد حان الوقت لوقف كل شيء وإعطاء عقلك فترة راحة، وذلك الوضع مهم لسببين رئيسيين: تثبيت المعلومات المكتسبة: فأثناء الراحة، يعمل عقلك على تنظيم وتثبيت المعلومات التي اكتسبتها حديثًا في مسارات عصبية دائمة، وتلك العملية تُعزز من ترسيخ التعلم. زيادة الدافعية: حيث معرفة أنك ستسترخي وتأخذ استراحة بعد الجلسة المركزة يعتبر مكافأة، مما يزيد من دافعيتك للانخراط في المهمة التعليمية من البداية. والآن نتأتي لزيادة فترة التركيز مع مرور الوقت، وذلك مع التمرس في تلك التقنية، يمكنك تدريجياً زيادة فترة التعلم المركز إلي حتى 2 ساعة (أو أي فترة مناسبة)، فالجلسات الأطول تؤدي إلى تعلم أعمق ودخول حالات من التدفق الإبداعي flow states وعندها لن تشعر بنفسك بل ينصب تركيزك بالكامل على ما تفعله. وعندما كنت أتعلم البرمجة، كنت أقضي 10 ساعات يوميًا وربما أكثر، بين مشاهدة الدروس والتوقف للاستيعاب ثم المراجعة والتطبيق بمفردي لتثبيت ما تعلمته وأحيانًا البحث عن الأمور التي لا أفهمها سواء بمشاهدة شرح على اليوتيوب أو قراءة مقال على جوجل. أو رؤية مثال، أو البحث عن تمرين للتطبيق ومحاولة التغيير في الكود لفهم طبيعة عمله وكيف يعمل ولماذا استخدمنا ذلك ولم نستخدم ذلك وهكذا.
  12. ستجدين أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
  13. ما المقصود بالتدقيق اللغوي هل تقصد أخطاء إملائية؟ وما هي الإضافة التي تحاول تثبيتها؟ عامًة لو تقصد تدقيق الـ Syntax فستحتاج إلى Linter وتتوفر إضافة Pylance
  14. المنفذ الوحيد للتواصل معهم هو من خلال مركز المساعدة، لا تقلق بخصوص الرد، أرجو الإنتظار لبعض الوقت، شكرًا لتفهمك.
  15. جميعهم للتفاعل مع نظام التشغيل، لكن لكل منها وظائفها المحددة. فمكتبة os وتعني Operating System توفر واجهة للتفاعل مع نظام التشغيل بشكل عام، مثل إدارة الملفات والمجلدات (إنشاء، حذف، إعادة تسمية، ...)، الحصول على معلومات عن المسارات (paths)، تنفيذ أوامر نظام التشغيل وإدارة متغيرات البيئة. import os # طباعة دليل العمل الحالي print(os.getcwd()) # إنشاء مجلد جديد os.mkdir("مجلد_جديد") بينما sys والتي هي إختصار لـ System-specific parameters and functions توفر وصولاً إلى المتغيرات والوظائف الخاصة بـ Python interpreter نفسه. ونستخدمها في الحصول على معلومات حول إصدار بايثون، إدارة مسار البحث عن الوحدات النمطية (modules)، التعامل مع مُدخلات و مُخرجات البرنامج وإنهاء البرنامج بشكل إجباري بواسطة sys.exit(). import sys # طباعة إصدار بايثون print(sys.version) # طباعة قائمة بمسارات البحث عن الوحدات النمطية print(sys.path) أما platform توفر معلومات حول النظام الأساسي الذي يعمل عليه البرنامج، مثل نظام التشغيل، وإصداره، ومعمارية المعالج. أي لتحديد نظام التشغيل الحالي، الحصول على معلومات حول المعالج وكتابة كود يعمل على أنظمة تشغيل مختلفة من خلال تطبيق منطق بناءًا على تلك المعلومات. import platform # طباعة اسم نظام التشغيل print(platform.system()) # طباعة إصدار نظام التشغيل print(platform.release())
  16. ما نوع كرت الشاشة الذي لديك وما هو نظام التشغيل وما سبب ظهور المشكلة هل تحاول تشغيل لعبة معينة؟
  17. لم تقم بإنشاء عمود من أجل الإختيارات (نعم أو لا) والنوع المناسب له هو Boolean أي قيمة منطقية True أو False، وليكن باسم has_agreed. أيضًا لم تقم بإنشاء عمود للمرفقات وتعيين نوعه كـ String لتخزين مسار الملف. وبقية الأعمدة نوعها مناسب، وهيكل الجدول سيكون كالتالي: Column Name Data Type Description id int Auto-incrementing primary key firstname varchar(255) First name lastname varchar(255) Last name email varchar(255) Email address phone varchar(20) Phone number category varchar(255) Category (dropdown list) has_agreed boolean Has agreed to terms (yes/no options) attachment varchar(255) File attachment created_at timestamp updated_at timestamp وذلك هو الكود: use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateArticalesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('articales', function (Blueprint $table) { $table->id(); $table->string('firstname', 255); $table->string('lastname', 255); $table->string('email', 255); $table->string('phone', 20); $table->string('category', 255); $table->boolean('has_agreed')->default(false); $table->string('attachment', 255)->nullable(); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('articales'); } }
  18. الفكرة كلها تكمن في this حيث أنّ arrow function لا تمتلك this خاصة بها وبالتبعية لا تمتلك خاصية Prototype، فلو قمت باستخدام this بداخلها ستشير إلى النطاق العام window في المتصفح أو Global في Node.js أو نطاق scope الدالة التي تم تعريفها به. وللعلم لا تمتلك constructor أيضًا، بالتالي لا تستخدم كدوال بانية مثل الدوال العادية. السبب يعود إلى الطريقة التي تم بها تطوير الدوال السهمية في جافاسكريبت، فهي مصممة لتكون سهلة الاستخدام وبسيطة ومختصرة، بالتالي ليس بها كل تلك الخصائص الموجودة في الدوال العادية، أي ليس ذلك الاستخدام use case الخاص بها، فهي جيدة عندما تتعامل مع الـ closures أو callbacks، لكن تجنب استخدامها عندما تتعامل مع الميثودز في class/object أو الـ constructors. ستجد تفصيل هنا: الدوال السهمية في JavaScript Arrow function expressions
  19. يتوفر API في المتصفح يسمح لك بذلك وهو Geolocation API حيث يتيح لمواقع الويب الوصول إلى موقع المستخدم الجغرافي، بشرط موافقة المستخدم على ذلك، ستجد أنه يظهر رسالة تخبر المستخدم بمشاركة الموقع ويحق له السماح أو الرفض. وبالطبع ذلك من خلال جافاسكريبت. ستجد تفصيل هنا:
  20. تفهمت ما تقصد، الأمر ليس له علاقة بالكود أو الملفات لديك، فذلك يحدث بسبب إضافة في المتصفح مثبتة قم بتعطيل إضافة تلو الأخرى ثم أعد تشغيل الصفحة وتفقد هل اختفى الخطأ أم لا لمعرفة الإضافة التي تسبب ذلك. لكن الأمر غير مؤثر على المشروع فلا تشغل بالك.
  21. هل قمت بحفظ الكود بالضغط على CTRL + S في الملف الثاني suv ثم الضغط على زر RUN
  22. ستحتاج إلى مواقع مثل SlidesCarnival لتحميل قوالب PowerPoint أو Google Slides جاهزة، ثم استخدامها على برنامج PowerPoint أو منصة Google Slides. أو تستطيع استخدام موقع Visme فبه قوالب جاهزة وتستطيع تصديرها إلى PowerPoint. أو استخدام Canva لإنشاء القوالب ثم استخدم mentimeter لإضافة تفاعلية بها.
  23. حاول استخدام إيميل مختلف على منصة odevio لإنشاء حساب جديد ولكن افعل ذلك من خلال وضع التخفي incognito في المتصفح، وإن لم يتم توفير حساب مجاني قم بتغيير الـ IP الخاص بك بواسطة VPN. لديك أيضًا منصة codemagic توفر لك 500 دقيقة شهريًا. وهناك حل آخر وهو شراء Mac mini لكونه أقل سعرًا من macbook.
  24. أتفهم رغبتك في العمل والحصول على دخل من البرمجة وهو أمر جيد حقًا في سنك، لكن الواقع يفرض نفسه، ستجد أنّ مواقع العمل الحر تفرض أن يكون سنك 18 عام على الأقل لتعمل عليها، وأيضًا الشركات تتطلب ذلك لأنه السن القانوني. في الوقت الحالي من الأفضل تطوير مهاراتك والاستمرار في التعلم لحين الوصول للسن المناسب، وستحصل على أضعاف على ما ستحصل عليه حاليًا، فلا داعي للاستعجال وأبقي نشاطك في التعلم كما هو.
  25. دخولك جامعة متخصصة في مجال البرمجة يزيد من فرصك بالطبع، لكن الجامعة هي ميزة إضافية ولا يتوقف عليها الأمر في مجال البرمجة، فستجد الكثيرين لم يحصلوا على شهادة جامعية في البرمجة ويعملون في ذلك المجال بشركات كبيرة. وطالما أنك مهتم بذلك المجال وتريد العمل به، فمن باب أولى دخول جامعة خاصة به مثل حاسبات ومعلومات أو أيًا يكن المسمى، ولا مشكلة لو قمت بدخول كلية أخرى فكما ذكرت الأمر لا يتعلق بالجامعة حيث أتفهم أحيانًا رغبة الأهل. بخصوص العمل الحر، ففي الوقت الحالي لن تتمكن من ذلك حيث أنّ مواقع العمل الحر تشترط أن يكون سنك 18 عام على الأقل، فلا تستعجل على ذلك لو استمريت في تطوير مستواك فبحلول 18 عام ستصبح قادر على اكتساب مبالغ كبيرة أضعاف ما كنت ستعمل به حاليًا. وبخصوص الـ Roadmap فأشيد بما قمت به حقًا، فأنت في سن صغير وقد وضعت خارطة طريق صحيحة وأيضًا على علم بتقنية مثل Three.js ونعم تستطيع تعلمها وستضيف لك الكثير كمطور واجهة أمامية وأنت حاليًا تستطيع تعلم ما تريد استمتع بذلك حقًا، فمستقبلاً لن تجد الوقت الذي بين يديك حاليًا.
×
×
  • أضف...