-
المساهمات
19750 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
472
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
-
ربما حجم الصورة كبير، فالصو الملتقطة بالكاميرا أو المختارة من المعرض، دقتها عالية جداً مثلاً 4000x3000 بكسل، وعند تحميلها في الذاكرة كـ Bitmap، تستهلك مساحة كبيرة. أو تمرر الصورة كـ Bitmap كامل بين صفحة 2 وصفحة 3 عبر Intent Extras، فتواجه خطأ TransactionTooLargeException. لذا قبل إرسال الصورة إلى Gemini API، يجب تصغير حجمها وضغطها، فنماذج Gemini لا تحتاج إلى صور بدقة 4K للتعرف عليها، يكفي دقة 720p أو 1080p. وإليك مثال: import android.graphics.Bitmap import android.graphics.BitmapFactory import java.io.ByteArrayOutputStream fun resizeAndCompressImage(bitmap: Bitmap, maxDimension: Int = 1024, quality: Int = 80): Bitmap { val originalWidth = bitmap.width val originalHeight = bitmap.height var resizedWidth = originalWidth var resizedHeight = originalHeight // Resize the image (تصغير الأبعاد) if (originalHeight > maxDimension || originalWidth > maxDimension) { if (originalWidth > originalHeight) { resizedWidth = maxDimension resizedHeight = (resizedWidth * originalHeight / originalWidth.toFloat()).toInt() } else { resizedHeight = maxDimension resizedWidth = (resizedHeight * originalWidth / originalHeight.toFloat()).toInt() } } val resizedBitmap = Bitmap.createScaledBitmap(bitmap, resizedWidth, resizedHeight, false) // Compress the image (ضغط الجودة) val outputStream = ByteArrayOutputStream() resizedBitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream) val compressedBytes = outputStream.toByteArray() return BitmapFactory.decodeByteArray(compressedBytes, 0, compressedBytes.size) } val originalBitmap: Bitmap = // الصورة الأصلية val optimizedBitmap = resizeAndCompressImage(originalBitmap) كذلك يجب أن تتم كل عمليات معالجة الصورة والاتصال بالـ API في thread خلفي لتجنب تجميد واجهة المستخدم، وأفضل طريقة للقيام بذلك في أندرويد هي بواسطة Coroutines import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.google.ai.client.generativeai.GenerativeModel import com.google.ai.client.generativeai.type.content import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import android.graphics.Bitmap class ChatViewModel : ViewModel() { private val generativeModel: GenerativeModel = // تهيئة النموذج هنا fun analyzeImage(prompt: String, image: Bitmap) { viewModelScope.launch { try { val optimizedImage = withContext(Dispatchers.Default) { resizeAndCompressImage(image, maxDimension = 768, quality = 75) } val inputContent = content { image(optimizedImage) text(prompt) } val response = generativeModel.generateContent(inputContent) withContext(Dispatchers.Main) { _chatResponse.value = response.text } } catch (e: Exception) { withContext(Dispatchers.Main) { } } } } } ولا تقم بتمرير الـ Bitmap مباشرة، بل تمرير مسار URI للصورة كـ String من صفحة 1 إلى 2 ثم إلى 3، وفي صفحة 3، قم بقراءة الـ Bitmap من الـ URI ثم قم بمعالجته وإرساله. وبعد التصنيف في صفحة 1، قم بحفظ النسخة المصغرة في ذاكرة التخزين المؤقت للتطبيق ومرر مسار الملف الجديد إلى الصفحات التالية. النموذج المحلي سيعمل على جهاز المستخدم للتصنيف الأولي، لكن مهمة الشات مع Gemini تستطيع نقلها إلى الخادم باستخدام Cloud Functions for Firebase والتي هي أساس Firebase AI Extensions و Genkit. أي في التطبيق سيقوم المستخدم بتصنيف الصورة باستخدام النموذج المحلي، وعند الانتقال لصفحة الشات، ثم يعمل التطبيق على رفع الصورة المُصغّرة إلى Cloud Storage for Firebase. وعند كتابة المستخدم لسؤال، سيقوم التطبيق بإرساله ورابط الصورة في Cloud Storage إلى Cloud Function. وفي الخادم Firebase Cloud Function سيتم تفعيل الـ Function عند استدعائها من التطبيق، سواء مكتوبة بـ Node.js وTypeScript أو Python لتستقبل السؤال ورابط الصورة. ثم تقوم باستدعاء Gemini API من الخادم وذلك أفضل من حيث الأمان، ثم تستقبل الرد من Gemini، ثم إرسال الرد مرة أخرى إلى التطبيق، إما مباشرة كرد على الاستدعاء أو عن طريق كتابته في Firestore أو Realtime Database حيث يستمع التطبيق للتحديثات.
- 2 اجابة
-
- 1
-
-
ليس بنفس الطريقة التي تبرمجه بها بلغة C++ في Arduino ثم عمل محاكاة كاملة للكود في بروتيوس، ولكن، يوجد حل بديل عملي يسمح لك باستخدام بايثون للتحكم في الدائرة التي تتم محاكاتها في بروتيوس. المشكلة أنّ بايثون هي لغة يتم تفسيرها Interpreted للغة الآلة، بالتالي تحتاج إلى بيئة تشغيل وهو مُفسر بايثون لترجمة الأوامر إلى لغة الآلة لحظة بلحظة، أي المفسر نفسه يحتاج إلى موارد كبيرة من RAM وذاكرة تخزين. ومتحكم ATmega328p الموجود في أردوينو أونو هو متحكم 8-بت بموارد محدودة جدًا وهي ذاكرة فلاش 32 كيلوبايت لتخزين الكود، وذاكرة SRAM كيلوبايت فقط لتخزين المتغيرات أثناء التشغيل، وبالطبع تلك الموارد لا تكفي إطلاقاً لتشغيل مفسر بايثون. وربما سمعت عن مشاريع مثل MicroPython، وهي نسخة مصغرة من بايثون مصممة للعمل على المتحكمات الدقيقة، ولكن حتى تلك النسخ تتطلب متحكمات أقوى بكثير 32-بت مثل ESP32, ESP8266, Raspberry Pi Pico, أو سلسلة STM32 التي تمتلك ذاكرة RAM وفلاش أكبر بعشرات أو مئات المرات من ATmega328p. لذا دمج بايثون مع الأردوينو أو أي متحكم آخر، ومحاكاتها بشكل ممتاز في بروتيوس، عليك تقسيم المهام، بحيث المتحكم ATmega328p تتم برمجته بلغة C++ فيArduino ليقوم بالمهام البسيطة والمباشرة، ليصبح تابع يستقبل الأوامر عبر المنفذ التسلسلي Serial Port وينفذها، وليكن مثلاً أشعل الليد، اقرأ قيمة الحساس، أرسل لي قيمة الجهد وهكذا. ثم الكمبيوتر وهو المُستضيف Host، ستقوم بإنشاء سكربت بايثون به يحتوي على المنطق المعقد، واجهات المستخدم، معالجة البيانات، أو اتخاذ القرارات، وسيقوم بإرسال الأوامر إلى المتحكم عبر المنفذ التسلسلي.
-
قم أولاً بحذف الإعدادات والملفات المؤقتة: php artisan optimize:clear ثم أعد التثبيت: php artisan jetstream:install livewire --teams ثم نشر ملفات Jetstream من جديد php artisan vendor:publish --tag=jetstream-views --force و: php artisan migrate ثم تنفيذ: php artisan optimize:clear
-
ستقوم بالبحث عن المفهوم الذي تجد صعوبة في استيعابه، ستجد شروحات مختلفة حوله، سواء بالعربية أو الإنجليزية، والأفضل البحث بالإنجليزية بالطبع. ولا تحاول فهم الدرس بأكمله دفعة واحدة، قسّمه إلى أصغر أجزاء ممكنة واسأل نفسك ما هي الفكرة الأساسية هنا أو ما هو المصطلح الذي لم أفهمه؟ وفي الغالب سبب صعوبة فهم مفهوم متقدم هو ضعف في فهم الأساسيات التي بُني عليها، لذا عد إليها وراجعها أو تعلمها، وحاول الربط بين النظري والعملي. أيضًا تجنب اللجوء لأدواء الذكاء الاصطناعي مباشرًة وخاصًة في بداية مرحلة التعلم، فأنت بحاجة إلى تفقد المصادر الخاصة بالمعلومات وأثناء ذلك تكتشف أمور جديدة، وقد تجد أحد قنوات اليوتيوب المفيدة التي لم تكن تعلم بوجودها، أو مرجع مفيد بها معلومات قيمة وهكذا. بعد ذلك تستطيع الاستعانة بأي أدوات تريدها، وبشكل واقعي الأمر صعب ومغري، لكن حاول مقاومة ذلك. لا تنسى أيضًا المستند الرسمي، فهو المصدر الأساسي للمعلومات، لكن بعض المستندات معقدة وغير مفهومة، هنا قم بالبحث عن المعلومة في مكانٍ آخر مثل شرح على اليوتيوب أو مقال، ثم استعن بأدوات الذكاء الاصطناعي والذي بالطبع يُخطيء أحيانًا لذا لا تثق به 100% فهو مجرد نموذج تعلم آلة تدرب على البيانات الموجودة على الإنترنت ويعرض لك معلومة بناءًا على احتمالية أنها صحيحة فهو مبني على مفاهيم الإحتمالات في الرياضيات.
-
تجنب رفع المشاريع مع مجلد node_modules. المشكلة ليست في Next.js نفسه بل بسبب انتقال الكود من السيرفر إلى المتصفح، أي في مرحلة الـ Hydration. ففي React كل شيء يحدث في المتصفح، بمعنى يحصل على ملف جافاكسريبت، ثم React تقوم ببناء الصفحة بأكملها، لذا منذ اللحظة الأولى، تعرف React حجم الشاشة ويمكنها تطبيق الأنماط المتجاوبة فورًا. أما في Next.js فالأمر يتم من جهة الخادم أولاً، حيث يبني نسخة HTML أولية من الصفحة ويرسلها إلى المتصفح، المشكلة الخادم لا يعرف أي شيء عن المتصفح بعد، أي لا يعرف حجم الشاشة، أو عرض النافذة، لذا، يقوم ببناء الصفحة بناءًا على افتراض معين وهي نسخة سطح المكتب. بعد ذلك يستقبل المتصفح ملف الـ HTML ويعرضه فورًا وذلك سبب كون Next.js سريع في العرض الأولي، ثم يبدأ المتصفح في تحميل ملفات جافاسكريبت. ثم يلي ذلك مرحلة الـ Hydration والتي تقوم بها React بالاستحواذ على الـ HTML الذي أرسله الخادم وحقن جافاسكريبت به ليصبح تفاعلي، أي تستوعب React أنها تعمل الآن في المتصفح، وتحصل على حجم الشاشة الحقيقي، وتحديث الواجهة لتتطابق مع ذلك الحجم. وبسبب ما سبق تظهر مشكلة في بعض المكتبات مكتبات الـ Sliders, Carousels, أو الرسوم البيانية والتي تعتمد بشكل كبير على كائن window عند تهيئتها، ولو حاولت استيرادها وتشغيلها على الخادم، ستسبب مشاكل لأن كائن window غير موجود هناك. ولديك مكتبات aos للتحريكات عند التمرير، و swiper للسلايدر تقوم بحقن الأنماط الخاصة بها في الصفحة عند تشغيلها على المتصفح، لكن الخادم يرسل صفحة HTML بدون تلك الأنماط، وعند تحميل وتشغيل ملفات جافاسكريبت في المتصفح، تبدأ تلك المكتبات بالعمل وتضيف الأنماط اللازمة، بالتالي الصفحة تبدو متجاوبة فجأة. يجب أن تستورد ملفات CSS الخاصة بها مباشرة في ملف التنسيق الرئيسي للمشروع layout.tsx، لتضمين الأنماط في ملف CSS الرئيسي الذي يتم تحميله مع الصفحة من البداية، ويصبح التطبيق متجاوب فورًا عند عرض الصفحة. import 'aos/dist/aos.css'; import 'swiper/css'; import 'swiper/css/pagination'; import 'swiper/css/navigation';
-
مفهوم هندسة البرمجيات أشمل لكونه تطبيق لمبادئ الهندسة لإدارة دورة حياة البرمجيات كاملة، من تحليل المتطلبات، التخطيط، التصميم، التطوير، الاختبار، الإطلاق، التشغيل والصيانة، والجودة والإدارة. أي يهتم بالعمليات والمنهجيات والتي تسمى تقنيًا Agile وDevOps، كذل إدارة المخاطر، القياسات، الأدوات وسير العمل. بينما تصميم البرمجيات هو بمثابة مرحلة داخل هندسة البرمجيات، ويختص بكيف سيُبنى النظام داخليًا، ويشمل ذلك التصميم المعماري عالي المستوى حيث يتم النظر للمشروع بنظرة عامة لإختيار المعمارية المناسبة، ثم التصميم التفصيلي بالغوص في تفاصيل واجهات المكونات، نماذج البيانات، الخوارزميات، أنماط التصميم مثل MVC وObserver، مع مراعاة القيود غير الوظيفية كالأداء والأمان والقابلية للتوسع.
- 3 اجابة
-
- 1
-
-
لا مشكلة تستطيع استخدامها، وفي ظهرت مشكلة في التنسيقات، فقم بإضافة كلاس بوتستراب img-fluid إلى عنصر الصورة <img> والذي يُطبق تنسيق max-width: 100% على الصورة، لكلي لا تتجاوز عرض العنصر الأب الذي يحتويها. وكذلك height: auto للحفاظ على نسبة أبعاد الصورة الأصلية. لكن لو أردن إنشاء بطاقات Cards بارتفاع ثابت أي يوجد عدة بطاقات وتريد أن يكون لها نفس الارتفاع، فقم تحديد height للعنصر الأب الذي يحتوي الصورة، ثم استخدام خصائص CSS للتحكم في كيفية ظهور الصورة داخل هذا الحيز مثل object-fit: cover
-
الأفضل تجنب القوالب الجاهزة التي يكتبها أغلب الأشخاص على تلك المنصة، فأنا شخصيًا أنزعج من ذلك، الأفضل باختصار توضيح ما تعلمته خلال تنفيذك للمشروع، وكمثال ابدأ بتحدٍا واجهته أو فكرة رئيسية تعلمتها بمعنى شيء يثير الفضول لو أردت، ثم اذكر ما هو المشروع باختصار شديد، وتحدث عن المهارات أو المفاهيم التي استوعبتها حقاً أثناء العمل، وتذكر الإختصار مع الدقة مهم. ثم شكر طبيعي غير متكلف، بذكر الأكاديمية كجزء من رحلة التعلم. وقم بنشر رابط لحي لتفقد المشروع واطلب ممن لديهم وقت مراجعته وإخبارك بأية ملاحظات أو نصائح.
- 1 جواب
-
- 1
-
-
تعلم الأساسيات للواجهة الخلفية في الوقت الحالي، أقصد أساسيات Node.js فهي لازمة من أجل استيعاب ما تقوم في إطار Next.js فحاليًا أنت تستخدمه بدون استيعاب، ولا تتجاهل تعلم أساسيات SQL وقواعد البيانات. بعد ذلك انتقل لتعلم كيفية تطوير مشروع كامل أي Full-stack بواسطة Next.js وبعد تنفيذ أكثر من مشروع، قم بالتعمق أكثر في الواجهة الخلفية وتعلم المفاهيم الـ advanced أي المتقدمة وتنفيذ مشاريع متقدمة كذلك بواسطة Node.js وExpress.js. وبعدها تستطيع الاستمرار في تطوير مشاريع كاملة من خلال Next.js وفي حال واجهت صعوبة في أمر ما فقم بالبحث عنه وتعلمه، سواء في الواجهة الأمامية أو الخلفية.
-
لو أردت الواقع العملي، فالمشاريع المتاحة على يوتيوب ليس لها فائدة سوى أن تتعلم منها، لكن لبناء معرض أعمالك أنت بحاجة إلى تنفيذ مشاريع مختلفة نابعة من تفكيرك أنت، ابحث عن أي مشكلة حولك وقم بحلها من خلال مشروع واعمل على تطويره من الصفر، وبذلك تتميز وستثبت فعلاً أنت قادر على توظيف ما تعلمته على أرض الواقع. بينما ما يقوم به الغالب من نسخ مشاريع من اليوتيوب بنفس الفكرة والشكل، هو أمر غير فعال، ستجد أنّ الغالب معرض أعمالهم متشابهة بسبب ذلك. مشروع واحد كبير ذو جودة مرتفعة أفضل من 5 مشاريع بسيطة أو متكررة، وبالطبع لا مشكلة من وضع الأعمال المتكررة في معرض أعمالك أي مثل المشاريع التي قمت بها بالدورة، لكن انتقي منها الجيد والمشاريع ذات الحجم المتوسط وليست البسيطة.
- 4 اجابة
-
- 1
-
-
لنتحدث بشكل واقعي، أنت لن تصل، يجب وجود هدف واضح وصريح من أجله تتعلم البرمجة، ابحث عنه وضعه أمام عينيك وقم بكتابة عواقب عدم الإلتزام بذلك على ورقة واجعلها بجانبك. بدون هدف لن تتحمل مرارة الرحلة، فتعلم البرمجة ليس بالأمر السهل ويحتاج إلى صبر واستمرار خاصًة في البداية. وذكرت أنّك مشترك في الكثير من الدورات وذلك مفيد وغير مفيد في نفس الوقت، ففي حال الدورات ليست متعلقة ببضعها البعض، إذن أنت تشتت نفسك، يجب تحديد خارطة طريق والتزم بها، لكن لا تقم بتعلم ما تحبه وشغوف به، بل المطلوب في سوق العمل. ابحث على مواقع التوظيف في بلدك عن المهارات المطلوبة في التخصص الذي تريده وليكن back-end مثلاً، ستجد تفصيل هنا:
-
ستحتاجين إلى تعلم تقنية RAG والتي تعتمد على توفير قاعدة بيانات يعود إليها النموذج للبحث عن معلومات تخص السؤال، وذلك ما سنتعلمه في الدورة من خلال lang chain ستجدي ذلك في مسار تطبيقات عملية على النماذج النصية الكبيرة LLMs في قسم تخصيص وصقل نماذج اللغة الكبيرة. بالنسبة لتطوير برنامج للويندوز، فستحتاجين إلى لغة أخرى غير بايثون، واللغة المتخصصة هي C# بجانب إطار .NET الخاص بها، لكن الأفضل تعلم لغة جافاسكريبت ثم تعلم إطار Electrone.js وذلك لأنّ جافاسكريبت لغة خاصة بالويب وستفيدك في حال أردتي تنفيذ مشاريع ويب ونشر تطبيقاتك، وهي أسهل بالطبع من C# و .Net وهناك حل آخر لو أردتي الإعتماد على بايثون فقط، فتخلي عن فكرة برنامج للويندوز، واعملي على تطوير مشروع ويب من خلال Django أو Flask.
-
ليس بيدك سوى محاولة استعادته عن طريق الطرق الرسمية، من خلال الضغط على رابط نسيت كلمة المرور ثم محاولة استعادته بتوفير رقم الهاتف والبريد المرتبطتين بالحساب، وسيتم إرسال كود أو رسالة بريد من أجل استعادة حسابك، وقد يتم سؤالك عن أمور تخص بيانات حسابك. في حال تم تغيير تلك البيانات، ستحتاج إلى التقدم ببلاغ عن سرقة حسابك، وكل منصة لديها آلية لذلك، فمثلاً فيسبوك ستحتاج إلى الإبلاغ من هنا: https://web.facebook.com/help/738660629556925 بالنسبة للمنصات الأخرى، ابحث عن على جوجل عن "my facebook account hacked" واستبدل facebook باسم المنصة وستظهر لك الطريقة المناسبة.
-
ما تحتاجه في الرياضيات هو دراسة التالي: الجبر الخطي ودراسة المصفوفات، العمليات الأساسية، الضرب النقطي. ثم التفاضل ودراسة المشتقات، قاعدة السلسلة، التدرج. ثم الإحصاء ودراسة المتوسط، الانحراف المعياري، التوزيعات الأساسية بعد ذلك كلما واجهتك مفاهيم رياضية، توقف وادرسها، مثلاً في درس الدرس "تعلم الآلة Machine Learning - التصنيف باستخدام أشجار القرار - تعلم قواعد التصنيف باستخدام أشجار القرار" ستحتاج إلى دراسة أساسيات الاحتمالات البسيطة واللوغاريتمات ومفهوم المجموع Summation Notation. ستجد هنا تفصيل: وبخصوص الكتاب وعامًة، تعلم الآلة بمثابة جعل الكمبيوتر يتعلم من البيانات لاتخاذ قرارات أو عمل تنبؤات، دون أن تتم برمجته بشكل صريح لكل حالة. ففي البرمجة التقليدية، أنت تكتب قواعد واضحة مثل if/else، وتوفر للكمبيوتر بيانات ليطبق عليها هذه القواعد ويخرج لك بإجابة، وليكن برنامج لمعرفة هل الرقم زوجي أم فردي، حيث القاعدة هي لو باقي قسمة الرقم على 2 يساوي صفر، فهو زوجي. بينما في تعلم الآلة توفر للكمبيوتر بيانات والإجابات الصحيحة المرتبطة بها، وهو بنفسه يستنتج القواعد التي تربط بينها، وتلك القواعد التي يتعلمها تسمى النموذج Model. ويظهر ذلك في برنامج للتعرف على رسائل الـ Spam، ببدلاً من كتابة آلاف القواعد مثل لو الرسالة تحتوي على كلمة مجاناً وعرض خاص وخلافه، أنت فقط توفر آلاف الرسائل مع تصنيفها، أي تلك سبام، وهذه ليست سبام، وهو يتعلم الأنماط بنفسه. أي الانتقال من كتابة القواعد إلى التعلم من الأمثلة. والمكونات الأساسية لأي مشروع تعلم آلة هي: البيانات، وبدون بيانات جيدة، لا يمكن للآلة أن تتعلم شيئ مفيد، فمدخلات سيئة توفر مخرجات سيئة. الخوارزمية وهي طريقة التعلم أو الدماغ الذي سيستخدم البيانات لاستنتاج الأنماط، ويتوفر العديد من الخوارزميات المختلفة، كل منها مناسب لنوع معين من المشاكل. النموذج هو الناتج النهائي لعملية التدريب، وأشبه بكتلة برمجية تحتوي على المعرفة أو القواعد التي استخلصتها الخوارزمية من البيانات، وهو ما ستستخدمه لعمل تنبؤات على بيانات جديدة لم يرها من قبل. وأهم ما يجب معرفته هي الأنواع الرئيسية لتعلم الآلة: التعلم الخاضع للإشراف Supervised Learning التعلم غير الخاضع للإشراف Unsupervised Learning التعلم المعزز Reinforcement Learning تستطيع البحث عنها والتعمق بها.
-
لغة PHP خاصة بالواجهة الخلفية بالفعل، أي هي لغة خاصة بالسيرفر، لكن عن طريق إطار لارافل تستطيع تطوير مشاريع Full-Stack بمعنى الواجهة الأمامية والخلفية معًا، وذلك عن طريق مُحرك القوالب Blade المتوفر في لارافل، وبه تكتب HTML, CSS, JS. لذا الدورة موجهة لتصبح مطور Full-stack فالمشاريع التي بها نعمل على تطوير الواجهة الأمامية والخلفية معًا أي مشروع كامل وليس الواجهة الخلفية فقط. ولا مشكلة لو أردت التركيز على الواجهة الخلفية وتجاهل الجزء الأمامي في الدورة، بمعنى تنفيذ الجزء الخاص بالخادم من إنشاء مسارات ومعالجة الطلبات عن طريق المتحكمات وإدارة قاعدة البيانات وتأمين الخادم. ستجد تفصيل هنا عن الـ Full-stack
-
آلية الإختبار هي كالتالي: بعد إنهاء 4 مسارات من الدورة على الأقل، أو الدورة بالكامل عليكِ رفع المشاريع التي قمتي بها بالدورة على حسابك في github، ثم التحدث لمركز المساعدة وإخبارهم أنك تريدين التقدم للإختبار وتوفير روابط المشاريع على github. ثم الإنتظار لبعض الوقت لحين مراجعة المشاريع وسيتم الرد عليكِ، وتحديد موعد لإجراء مقابلة، وبها يتم: إجراء محادثة صوتيّة لمدة 30 دقيقة يطرح المدرّب عليك أسئلة متعلّقة بالدورة والأمور التي نفّذتيها خلالها. يحدد لكِ المدرّب مشروعًا مرتبطًا بما قمت به أثناء الدورة لتنفيذه خلال فترة محددة تتراوح بين أسبوع إلى أسبوعين. إجراء محادثة صوتيّة أخرى لمدّة 30 دقيقة يناقش بها مشروعك وما نفذتيه وتُطرح أسئلة خلالها. إن سارت على جميع الخطوات السابقة بشكل صحيح، تحصلين على الشهادة أو يرشدك المدرّب لأماكن القصور ويطلب منك تداركها ثم التواصل معنا من جديد. بخصوص المراجعة، حاولي مراجعة الملاحظات والملخصات التي قمتي بها، أي لا تُعيدي تُعد مشاهدة الفيديوهات بالكامل إلا عند الحاجة، أي استخدمي الفيديوهات كمرجع وليس كمراجعة أساسية، أي في حال واجهتي صعوبة في فهم نقطة معينة من ملاحظاتك، عودي إلى الفيديو المحدد لتلك النقطة وشاهده بسرعة x1.5 أو x2 ثم تنفيذ مشروع على كل مسار عملي بالدورة، بحيث توظفين به ما تعلمتيه به أو حتى إعادة تنفيذ لما قمتي به والأمر سيكون سريع تلك المرة، وفي حال كان بطيء إذن المراجعة كانت ضرورية وستستفيدين على أي حال. وفي حال أردتي تمارين برمجية ستجدي ذلك على منصة codewars
-
ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل. بخصوص المشكلة لديك، فبسبب أنك تستخدم إضافة code runner في vscode والتي تقوم بشكل إفتراضي بتشغيل الكود بداخل تبويب OUTPUT وليس Terminal. لو أردت استخدم code runner قم بإضافة التالي في ملف الإعدادات لتشغيله في التيرمنال كما تم التوضيح: "code-runner.runInTerminal": true ولتصل لمف الإعدادات قم بالضغط على زر F1 ثم ابحث عن settings josn واختر أول خيار وأضف السطر السابق قبل قوس الإغلاق { ثم أضف فاصلة في نهاية السطر الذي يليه كالتالي: ثم اضغط على CTRL + S للحفظ
-
أنت لست مُلزم بتعلم لغة واحدة أو إطار واحد، لا تتعلق بالتقنيات، تعلم أن تكون مهندس برمجيات بالتركيز على الأساسيات والتعق بها قدر الإمكان، ثم تعلم تقنية واحدة وتخصص بها واكتسب خبرة، ولتكن .NET ثم بعد سنة بإمكانك توسعة مهاراتك وتعلم لغة وتقنية جديدة، مثل PHP ولارافل. ومن خلال ما سبق ستصبح مطور Full-stack متعدد التقنيات واللغات، وتصبح قادر على تنفيذ نسبة أكبر من المشاريع المعروضة. ولا خلاف على كون PHP ولارافل عليهم طلب بمواقع العمل الحر، لكن أنصحك بالتوجه ناحية .NET لكون PHP مُتشبعة حاليًا وأيضًا المشاريع الخاصة بها صغيرة ورديئة في أغلب الأحيان، لكن لا بأس بها من أجل العمل الحر في حال الطلب أكثر عليها على منصة عمل حر معينة، لذا تفقد المشاريع المعروضة على مستقل وخمسات وقرر بناءًا على ذلك أي لغة وإطار ستتعلمهم أولاً.
-
ملف autoload.php غير موجود داخل مجلد vendor وهو ملف هام لأي مشروع لارافل أو PHP يعتمد على Composer، لأنه يقوم بتحميل جميع المكتبات والتبعيات الخاصة بالمشروع. أولاً تأكد من أنك تقوم بتنفيذ أمر php artisan serve داخل المجلد الذي به ملف composer.json، حاليًا أنت بمسار مجلد CMS لكن ربما بداخله مجلد آخر خاص بالمشروع، لذا تفقد الأمر، وقم بالإنتقال للمسار الصحيح من خلال أمر cd لو استمرت المشكلة قم بحذف ملف composer.lock وأعد تثبيت الحزم: omposer install ثم تشغيل المشروع
-
بشكل افتراضي، يتم البحث عن ملف باسم index.html كملف أساسي لتشغيل مشاريع الويب، بينما لديك باسم index-ar.html قم بتعديل اسمه إلى index.html ثم ادفع التغييرات إلى المستودع.
- 1 جواب
-
- 1
-
-
يوجد مشكلة في تلك الميزة حاليًا في يوتيوب عند الترجمة من الإنجليزية للغة أخرى، في العادة ستقوم بالتالي: قم بالضغط على زر cc وسيظهر لك الترجمة بالإنجليزية بشكل إفتراضي، ولتحويلها للعربية، اضغط على أيقونة الترس الخاصة بالإعدادات، ثم اختر subtitles أو الترجمة، ثم اختر auto-translate أي الترجمة التلقائية ثم اختر arabic أو العربية. لكن حاليًا لا تعمل وجاري حل المشكلة، تم ذكر ذلك هنا: https://support.google.com/youtube/thread/367205716/i-haven-t-had-automatic-subtitles-for-a-few-days-now?hl=en ستحتاج إلى الإنتظار لبعض الوقت لحين إصلاح المشكلة، اعتمد على الفيديوهات العربية في الوقت الحالي.
- 1 جواب
-
- 1
-
-
ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
- 1 جواب
-
- 1
-
-
الأمر ليس له علاقة بنسبة كبيرة، لكن التفكير المنطقي مهارة تنتقل من مجال لآخر بطبيعة الحال وتلك المهارة متوفرة في مجال الهندسة. كذلك سيكون لك الأفضلية في مجال أمن الأنظمة الصناعية ICS وSCADA بسبب استيعابك للدوائر التحكم، الـPLC، وأنظمة الطاقة، لتأمين المصانع ومحطات الطاقة والشبكات الذكية Smart Grid. بجانب أمن الأجهزة، بسبب معرفتك بالإلكترونيات الرقمية والتناظرية تساعدك في مجالات مثل تحليل الهاردوير، الهندسة العكسية، واختبار الاختراق للأجهزة، ستجد ذلك تحت مُسمى Hardware Pen-Testing. أيضًا إنترنت الأشياء IoT والسيارات المتصلة، فالخبرة في الميكروكنترولر والاتصالات اللاسلكية مفيدة لتأمين الأجهزة الذكية والمركبات الكهربائية. ما تحتاج إلى التركيز عليه هو الدراسة الذاتية: أساسيات لغة بايثون CompTIA Network+ الاستيعاب أساسيات الشبكات بشكل عميق، وهو أمر ضروري جداً. CompTIA Security+ هي نقطة الانطلاق في عالم الأمن السيبراني، وتغطي المفاهيم الأساسية والمصطلحات والأدوات. ثم تخصص في مجال معين: CEH (Certified Ethical Hacker) في حال مهتم بالاختراق الأخلاقي. OSCP (Offensive Security Certified Professional) وهي شهادة متقدمة وعملية جداً في مجال اختبار الاختراق. CISSP (Certified Information Systems Security Professional) لو أردت التوجه نحو الجانب الإداري والاستراتيجي وإدارة المخاطر لكن تتطلب خبرة عمل. شهادات SANS/GIAC تعتبر من أقوى الشهادات التقنية وتغطي تخصصات دقيقة جداً.
