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

Sam Ahw

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

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

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

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

    16

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

  1. يوجد عدة حلول من ناحية الحماية لهذا الأمر، ومنها من طرف المستخدم كإضافة وقت عند كل عملية ضغط على زر الإرسال باستخدام setTimeOut في جافاسكريبت، أو الانتظار لعدد من الثواني بعد عملية إرسال البيانات. ولكن تبقى هذه الطرق عرضة للتلاعب فهي من طرف المستخدم وبالتالي يمكن لأي شخص تعطيل هذه الآلية. لذا يفضّل اتباع بعض معايير الحماية من طرف خادم الويب، مثل استخدام مايعرف ب Rate Limiter والذي يعمل على حجب الطلبات HTTP القادمة إلى خادم الويب من نفس المستخدم أو عنوان ال IP لمدّة معيّنة من الزمن حسب العدد الأعظمي الذي تحدده أنت، ولها أيضاً العديد من التطبيقات والمزايا التي قد تكون مفيدة في هذه الحالات. يختلف تطبيقها حسب لغة البرمجة وإطار العمل الذي تستخدمه ولكن يمكنك البحث عن المصطلح ضمن الانترنت تبعاً للغة البرمجة التي تتعامل معها وستجد العديد من الحلول والأمثلة لتطبيقها. ضمن لارافل يوجد قسم خاص ضمن التوثيق الرسمي يدعى Rate Limiting، أما في node.js يوجد العديد من المكتبات منها express-rate-limit لإطار العمل Express.js.
  2. بشكل عام ليس كل برنامج يعمل على جهاز الكمبيوتر يمكن تحويله لموقع ويب، فموقع ويب يعني أنه سيعمل ضمن متصفح الويب مثل Chrome أو Firefox أو غيرها من المتصفحات، وبالتالي يستطيع فقط تنفيذ المهام والخصائص التي تدعمها هذه المتصفحات كما أنه يوجد أيضاً حدود معيّنة لاستخدام الذاكرة والتخزين المحلي وغيره من الأمور التي يجب أخذها بعين الاعتبار. أما بالنسبة لتطبيقات جهاز الكمبيوتر، فهي حتماً ستكون أسرع وأكثر دقة وفعالية في تنفيذ مهامها خصوصاً بالنسبة للبرامج الضخمة المليئة بالخصائص مثل OBS والتي تحتاج أيضاً موارد كبيرة مثل المعالج والذاكرة العشوائية والتخزين،...إلخ. يمكن ربمّا إضافة بعض الخصائص من البرنامج والتي يمكنك معالجتها في خادم الويب مثل تقنيات قص ومعالجة الفيديو أو تسجيل الشاشة ضمن المتصفح إن أمكن، ولكن حتماً ستواجه بعض العوائق التي تتطلب الموارد التي ذكرتها. ربما مع تطور المتصفحات المستمر قد نصل قريباً لمرحلة تمكنك من إضافة المزيد من هذه الخصائص إلى أي تطبيق ويب.
  3. يمكنك استخدام المكتبة maatwebsite/excel في لارافل لإضافة وتصدير ملفات الاكسل والتعامل مع البيانات الموجودة فيها: لتحميل المكتبة: composer require maatwebsite/excel ثم نقوم بتسجيل الإضافة: <?php 'providers' => [ Maatwebsite\Excel\ExcelServiceProvider::class, ], 'aliases' => [ 'Excel' => Maatwebsite\Excel\Facades\Excel::class, ], ?> وتنفيذ الأمر التالي لنشر التعديلات السابقة: php artisan vendor:publish –provider=”Maatwebsite\Excel\ExcelServiceProvider” –tag=config ثم يمكنك إنشاء النموذج حسب نوعية البيانات لسهولة الوصول إليها والتعامل معها: php artisan make:import UsersImport --model=User وإضافة خصائص المكتبة للتعامل مع الملفات كالتالي: use Maatwebsite\Excel\Concerns\ToModel; use Maatwebsite\Excel\Concerns\WithHeadingRow; class UsersImport implements ToModel, WithHeadingRow { /** * @param array $row * * @return \Illuminate\Database\Eloquent\Model|null */ public function model(array $row) { return new User([ "first_name" => $row['first_name'], --> يمكن استبدال اسماء الأعمدة بأرقام في حال لم يكن المحتوى كجدول: $row[0] "last_name" => $row['last_name'], "email" => $row['email'], .... ]); } } وبعدها يمكنك التعامل مع بيانات النموذج مثل أي بيانات أخرى على مستوى التطبيق، إما يم تخزينها في قاعدة البيانات أو تتم معالجتها وإرسالها لطرف المستخدم من جديد. يمكنك قراءة المزيد من التفاصيل من توثيق استخدام المكتبة وإذا بحثت على الانترنت عن: maatwebsite/excel سيظهر لك الموقع الرسمي للمكتبة تحت الاسم laravel-excel.
  4. لغة البرمجة بايثون ليست مصممة بشكل افتراضي لدعم تطبيقات الهاتف الجوال، ولاستخدامها في تطوير تطبيقات الجوال يجب إضافة بعض المكتبات والأدوات المساعدة مثل kivy و pyQt وغيرها. إنما دورها الأكبر عند تطوير تطبيقات الهاتف الجوال يكون من جانب الخادم. أما الجافاسكريبت فهي حتماً خيار أفضل كونها شاملة وتتيح جميع الأدوات اللازمة لبناء الواجهات الرسومية في حال اخترت إطار العمل react native المبني بلغة جافاسكريبت. وأيضاً من طرف الخادم يمكن استخدامها من خلال node.js وبالتالي تتيح لك توحيد لغة البرمجة على الطرفين دون الحاجة لاستخدام لغات برمجة ونظم مختلفة. يمكنك التعرّف أكثر على أنواع التطبيقات من خلال المقالات التالية:
  5. رسالة الخطأ القادمة من خادم الويب تشير إلى عدم وصول أي رد من الخادم عند عملية تسجيل الدخول لأن الدالة المسؤولة عن جلب المستخدم من قاعدة البيانات لاتعيد قيم، لذلك يمكنك البدء أولاً من التأكد بالاتصال بالخادم وبقاعدة البيانات وتجربة جلب المستخدم بشكل يدوي والتأكد من أن القيم يتم تمريرها بشكل صحيح إلى طرف المستخدم. ثم يمكنك إجراء اختبار بسيط لإرسال القيم من طرف المستخدم وطباعتها في طرف الخادم عند مسار تسجيل الدخول وقبل جلب المستخدم من قاعدة البيانات أيضاً للتأكد من أن القيم تصل بشكلها الصحيح من المتصفح. أما بالنسبة لأخطاء المتصفح، فهي غالباً بسبب أنه يتم اعتبار الرد response الذي يأتي من عملية تسجيل الدخول null وبالتالي أي عمليات تتم بالاعتماد على هذه القيمة ستحدث خطأ لك في حال لم تقم بالتقاط الأخطاء بالشكل الصحيح. وأخيراً، أنصحك بالتقاط الأخطاء ضمن شيفرتك البرمجية قدر المستطاع باستخدام try , catch ووضع رسائل الخطأ المناسبة بدلاً من إظهارها للمستخدم كما هي.
  6. عند طرح السؤال حاول ذكر المزيد من التفاصيل عن مكان حدوث المشكلة في أي ملف أو صور عن رسائل الخطأ التي تظهر لك لأن ذلك سيساعدنا على حل مشكلتك بشكل أفضل. لم أجد حلقات تكرارية مستخدمة في مشروعك، ولكن أعتقد أن المشكلة خاصة بتكرار تضمين الملفات بشكل متداخل مع بعضها، لذلك حاول حذف التضمين التالي من ملف main.js الموجود ضمن المجلّد routes: const { db } = require("../models/Task"); فيجب عليك استخدام النماذج models بدلاً من db وقمت بتضمينها أيضاً ضمن الملف.
  7. يجب عليك التأكد من وجود مفاتيح Keystore ضمن المجلّد android في مشروعك بملف اسمه debug.keystore وإن لم يكن موجوداً يمكنك إضافة المفتاح من خلال تنفيذ الأمر التالي: keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000 ملاحظة: يجب تنفيذ الأمر ضمن النافذة terminal. ثم يمكنك إجراء عملية تنظيف للمشروع للتحديث وتجنب بعض المشاكل: flutter clean وبعد ذلك حاول إغلاق البرنامج android studio أو محرر الشيفرات البرمجية الذي تستخدمه ونقوم بحذف الملف الملف app-debug.apk الموجود ضمن المسار التالي: app\build\outputs\apk\app-debug.apk ثم يمكنك بناء المشروع مرة أخرى.
  8. لايوجد خطأ واضح من الصور، تأكد من المستندات الموجودة في قاعدة البيانات إن كانت تحوي القيمة complated على الأرجح إن لم تقم بشكل يدوي بإدخال القيم لن تكون موجودة ضمن المستندات. يمكنك إجبار النموذج على وضع قيمة complated بشكل افتراضي تساوي false لأي بيانات جديدة يتم إدخالها كالتالي: complated: { type: Boolean, default: false, required: true } وعندها سيتم إضافة حقل complated لأي مستند تقوم بإضافته. وحاول طباعة بعض القيم ضمن المسار delete للتأكد إن كان لديك أي أخطاء أخرى في مشروعك.
  9. تأكد من أن القيمة الموجودة ضمن نموذج Task لديك هي complated وليس completed وإلا يجب عليك تصحيح الخطأ الإملائي في شرط الحذف. من الممكن وجود أخطاء في مكان آخر ولكن لايمكننا مساعدتك إن لم تشارك بقية أجزاء الشيفرات البرمجية في مشروعك
  10. يتم إضافة كائن Object جديد إلى المصفوفة tasks من خلال استخدام معامل النشر أو (Spread Operator) وهو مفهوم بالجافاسكريبت يعمل على نشر عناصر مصفوفة ما، أي بمعنى آخر يتم إعادة وضع جميع عناصر المصفوفة tasks كما هي وباستخدام الفاصلة والقيمة الجديدة يتم إضافة هذه القيمة إلى القيم السابقة. مثال: let numbers = [1,2,3]; let newNumbers = [...numbers,4]; newNumbers = [1,2,3,4] ستكون قيمة المصفوفة الجديدة تساوي قيمة المصفوفة السابقة ويضاف لها الرقم الجديد وبنفس الطريقة يتم دمج عناصر من عدّة مصفوفات بمفصفوفة واحدة، مثال: var arr1 = [0, 1, 2]; var arr2 = [3, 4, 5]; arr1 = [...arr1, ...arr2]; الناتج: [0,1,2,3,4,5] يمكنك إيجاد بعض الأمثلة المفيدة ضمن موسوعة حسوب (من هنا) أما بالنسبة لآلية عمل useState فهو يعرف بالخطّاف وهو من أساسيات مكتبة React وآلية عمله بشكل مختصر هو تحديث بعض القيم تبعاً لمتغيرات، بحيث يتم إضافة قيمة مبدئية للمتغيّر الذي نرغب بتحديثه (وهنا في مثالنا وضعنا مصفوفة فارغة) ثم يتم تحديثها باستخدام setTasks. ويمكنك قراءة المزيد عنها من خلال التوثيق الرسمي والبحث على الانترنت ستجد العديد من الأمثلة الشاملة.
  11. دورة علوم الحاسوب توفر لك معلومات مكثفة حول مختلف مفاهيم لغات وتقنيات البرمجة، بانتهائك منها سيكون لديك خبرة جيّدة بدءً من الأساسيات والأفكار والمناهج النظرية مثل هندسة البرمجيات والبرمجة كائنية التوجه إلى التعامل مع أنظمة التشغيل ولغات البرمجة التي تم التطرق لها من خلال الأمثلة العملية في الدروس، وأيضاً سيكون لديك معرفة شاملة حول قواعد البيانات وطرق التعامل مع النوعين العلائقي وغير العلائقي. وفيها أيضاً مسار مخصص للدخول إلى عالم الويب والتعرّف على آلية عمل مطوري الويب في حال أحببت الانتقال إلى مجالات تطوير الويب لاحقاً. يمكنك اختبار نفسك من خلال محاولة تطبيق الأمثلة التي تم شرحها في الدروس بطريقتك الخاصة ومن خلال إضافة بعض الميزات على المشاريع التي عملت عليها أو محاولة ابتكار مشاريع جديدة تطبّق عليها المفاهيم وذلك سيتيح لك إمكانية مواجهة مشاكل وتحديات جديدة وترسيخ الأفكار التي تم شرحها لك خلال الدروس.
  12. يجب عليك تصحيح اسم الوسم من titel إلى title حتى يتم اعتباره كجزء من ترويسة الصفحة <title>Test Title</title>
  13. يجب عليك أولاً كتابة السؤال بلغة عربية واضحة وذكر لغة البرمجة التي تستعملها وكامل التفاصيل حتى نستطيع مساعدتك وإعطائك إجابات أوضح. أما بالنسبة للأخطاء الموجودة لديك بفرض أنك تستخدم جافاسكريبت: يجب عليك إزالة علامات التنصيص من الشرط if ووضع علامة المساواة بدلاً من الإسناد كالتالي: if(sellerrange == 4.5){ }else{ } فإشارة = واحدة تعني إسناد قيمة للمتغيّر، أما للتحقق من المساواة فيجب أن تستخدم ==
  14. يجب عليك وضع مسافة بين الأمر والعلامة كالتالي: node -v
  15. يمكن إدراج صور لقطات شاشة عن المواقع التي تم إنجازها مع شروحات بسيطة كنص بجانب هذه الصور تحوي التقنيات ولغات البرمجة المستخدمة والهدف من كل مشروع. أما إن أردت مشاركتها يمكنك رفع هذه المشاريع على استضافات مجانية ووضع الرابط بجانب هذه المشاريع. فبالنسبة لمطور واجهات أمامية لايوجد تعامل مع خوادم الويب ويمكنك وضع بيانات تجريبية ضمن واجهات المستخدم لإظهار المواقع بشكلها النهائي دون الحاجة لإعداد خادم ويب مخصص وقاعدة بيانات والتعامل مع الطرف الخلفي. أما في حال أردت محاكاة مشاريع لوحات التحكّم فقد تحتاج للاستضافة والتعامل مع قاعدة بيانات وخادم ويب لأن كمية البيانات ستكون أكبر والتعامل مع بيانات تجريبية سيكون أصعب.
  16. لايتم ربط أي بطاقة بشكل مباشر بالموقع بل يتم استخدام مايعرف ببوابات الدفع. وبوابة الدفع الالكتروني هي الوسيط بين الموقع الالكتروني ومعالج الدفع الذي يتلقى المدفوعات من الزبائن وهنا لايوجد محافظ إلا إن كنت تتعامل مع عملات رقمية. والعملية باختصار تتم كالتالي: يقوم المستخدم بإدخال بيانات الدفع ليستقبلها الوسيط أو بوابة الدفع ويعالج هذه البيانات لينقل المدفوعات إلى حساب التاجر. بعض البنوك توفر طرق مباشرة للربط على مواقع التجارة الالكترونية بحيث تعالج بنفسها عمليات الدفع دون الحاجة للتعامل مع وسيط خارجي أو بوابة دفع خارجية ولكن بجميع الأحوال لا علاقة لعملة البلد باستقبال المدفوعات على الموقع لذلك يمكنك أن ترى المواقع تتيح الدفع بعملة الزبون مهما كانت إنما استقبال هذه العملات يعود للحساب البنكي الذي تتعامل من خلاله وما العملات التي يدعمها. أما بالنسبة لربط واجهة برمجة التطبيقات API، فمعظم الحلول ستوفر لك Secret Key و API Key لإمكانية ربطها بأي موقع الكتروني أو إضافات على ووردبريس وهنا يجب عليك التواصل مع فريق الدعم الخاص بهم وقراءة دليل التوثيق لربطها بشكل صحيح على موقعك. بالنسبة لبيبال Paypal، فهي توفر طريقة مباشرة للربط بالمواقع الالكترونية واستقبال المدفوعات وأيضاً يوجد بوابات دفع لذلك. يمكنك الاطلاع على كامل التفاصيل من توثيق بيبال أو من موقع بوابة الدفع أو الوسيط الذي تتعامل معه. بعض الروابط المفيدة لتتوضح لك الأفكار أكثر:
  17. إن كررت نفس الخطوات وراء المدرّب ستحصل على النتيجة الصحيحة، حاول في كل مرة بعد الانتهاء من المشروع التعديل على نفس المشروع بإضافات بسيطة وحاول زيادتها تدريجياً من تغيير التنسيقات والصفحات وحتى بنية بعض التوابع والأدوات حاول إعادة بنائها وإضافة المزيد من الخاصيات لها وبذلك لن تبدأ المشروع من الصفر وسيكون لديك مرجع صحيح تعود له. والأخطاء التي تظهر لك يمكنك البحث عنها على الانترنت وستجد العديد من الإجابات والنصائح وطرق الاستخدام. النقطة الأهم هي أن تحاول الاعتماد على نفسك وتجنّب الحلول الجاهزة والأسئلة قدر المستطاع وإلا لن تستطيع تنمية مهارات حل المشاكل والتفكير المنطقي لديك وستبقى هذه المشكلات عقبات لديك بدون القدرة على حلها بنفسك. بالتوفيق،
  18. يمكنك تحديد عنصر الإدخال input من خلال عدّة طرق في الجافاسكريبت، على سبيل المثال يمكنك إعطاء id لحقل إدخال خطوط الطول والعرض بالشكل التالي: <input type="text" name="latitude" id="lat" value=""> ثم في دالة الحصول على النتيجة يمكن إضافتها للحقول كالتالي: function showPosition(position) { document.getElementById('lat').value= position.coords.latitude; } وبنفس الطريقة للقيم الأخرى. لنستطيع مساعدتك بشكل أفضل يجب مشاركة كامل الشيفرة البرمجية فجزء منها قد لايساعد على فهم الفكرة كاملة.
  19. كلمة شبكات تحوي العديد من المجالات الفرعية وهو مصطلح كبير وعام، ولكن بالنسبة لمطوري الواجهة الخلفية يكفي كبداية أن تتعلّم أساسيات اتصالات الانترنت من طلبات HTTP ومحتوياتها، التمييز بين أنواع الطلبات، التوثيق والتحقق، بالإضافة لقواعد البيانات وأي لغة برمجة أو إطار عمل تجده مريح لبناء خادم الويب. أما بقية التفاصيل الخاصة بإعداد الشبكات وبيئة النشر والتعامل مع جدار الحماية وغيرها فهي تندرج تحت مسميات أخرى ولا بأس بأن تطلع عليها ولكنها ليست من ضمن المهام الأساسية لمطور الواجهة الخلفية بصورة عامة. قد تختلف المتطلبات من مسمى لآخر ومن وظيفة لأخرى ضمن الشركات، ولكن بشكل عام حاول قدر المستطاع ألا تشتت نفسك بكافة الأمور مع بعضها البعض.
  20. في أي دورة أو فيديو تشاهده ستتعلم الأساسيات التي تحتاجها في تطوير الويب، والأفكار التي يتم شرحها شاملة لجميع جوانب تطوير الويب على جميع المستويات في حال كنت مبتدئ أم لديك خبرة مسبقة من خلال المشاريع العملية بالإضافة للأفكار النظرية. أما بالنسبة لمسارك المهني، فحتماً يجب عليك الاطلاع على المزيد من التفاصيل والبحث والتوسع في فهم الأفكار والتقنيات التي يتم التطرق إليها ضمن الدروس التي تشاهدها حتى تزيد من خبرتك في هذا المجال. كما أن البرمجة في تطور مستمر والتقنيات يتم تطويرها بسرعة كبيرة لذلك مجال تطوير الويب يتطلب من المطور أن يبقى على اطلاع في هذه الأمور. أما بالنسبة للأمور التي تجدها أكثر تعقيداً مثل الشبكات والبروتوكولات، فلا داعي لأن تشتت نفسك الآن في أكثر من مجال. يمكنك أن تضع هدف بسيط أمامك وهو إنهاء مسار محدد والبحث ضمن هذا المسار فقط ومن بعدها يمكنك الانتقال لأي أفكار أخرى تجد نفسك بحاجة للتوسع فيها. إنما الأساسيات التي يتم شرحها في الفيديوهات تكفي لإكمال المسار ومن ثم يمكنك التوسع بنفسك في البحث وتطوير خبرتك. وفي النهاية، ليس بالضرورة على المبرمج أو المطوّر أن يعرف كافة التقنيات والمجالات الموجودة بإتقان كامل، اختصاصك في مجال محدد سيسهّل عليك التقدّم.
  21. للبدء في مشروع ريادي يجب عليك التأكد من تطبيق عدة نقاط تساعدك على تحقيق النجاح وتلافي المشاكل في الفترات الأولى من عمر المشروع، ومنها: تحديد الفرصة المناسبة للبدء: من خلال البحث والتحليل الدقيق لتحديد التوقيت المناسب للبدء في المشروع وذلك عن طريق التعرف على الاحتياجات والتطلعات الحالية للأسواق ودراسة سلوك المنافسين. الخطة التشغيلية: بعد تحديد الفرصة، يجب عليك إعداد خطة عمل تحدد تفاصيل العمل والجدول الزمني للمشروع وتقسيم المهام إلى مراحل زمنية أو العمل على تحضير استراتيجيات العمل القصيرة والطويلة الأمد بشكل عام. التمويل: تحتاج إلى تحديد مصادر التمويل وإعداد خطة تمويلية تحدد المدفوعات والإيرادات المتوقعة وحصر الاحتياجات اللازمة لتغطية المشروع في الفترة الأولى لضمان الاستمرارية قدر الإمكان. التأكد من جهوزية الفريق أو الخدمات: يجب التأكد من جهوزية الأشخاص الذين يمتلكون المهارات والخبرات اللازمة للعمل على المشروع أو في حال كان مشروع خدمي يجب التأكد من جودة الخدمات والمنتجات التي سيتم تقديمها في الفترة الأولى عند الإطلاق. التحليل والتحديث: يجب عليك التحليل المستمر للأداء الحالي وإجراء التحديثات اللازمة لتحسين الأداء. من الممكن أن تختلف تلك الخطوات حسب نوع المشروع ومتطلباته، ولكن بشكل عام يمكن أخذها بعين الاعتبار في معظم المشاريع الريادية كنقط أساسية. وستجد العديد من المواضيع المهمة التي تساعدك في هذه الخطوات من خلال مقالات أكاديمية حسوب الموجودة على الرابط التالي: https://academy.hsoub.com/entrepreneurship/planning/
  22. عند حفظ المشاريع لتسليمها يجب أن تكون كاملة حتى يتم تشغيل المشروع وملاحظة النتائج التي طبقتها بالشكل الصحيح، لذلك أقترح عليك أن تأخذ وقتك في إكمال المشاريع وحفظها حتى إن أخذت بعض الوقت لذلك. وبالنسبة للأخطاء، يجب عليك تصحيحها للوصول إلى النتيجة النهائية حتى تبيّن أنك استطعت حل المشاكل التي واجهتك وبأنك تمتلك الخبرة اللازمة لتنفيذ المشروع دون أخطاء. يمكنك التواصل مع فريق الدعم بأي وقت في حال كان لديك أي أسئلة إضافية عن الدورات والشهادة (من هنا)
  23. إن كنت تقصد موقع مستقل، وفي حال الزر تسليم المشروع غير ظاهر لك يجب عليك الانتظار فتكون مدة التسليم أكبر من الوقت الحالي أو حاول التواصل مع العميل لاستلام المشروع من طرفه في حال كان الخيار متاحاً. حاول أن تسلم الملفات من خلال إرفاقها ضمن النقاش على الموقع لضمان حقوقك في حال حدوث أي مشكلة. يمكنك التواصل مع فريق الدعم في حال احتجت أي مساعدة أو واجهت أي مشكلة (من هنا)
  24. لا يوجد قسم منفصل لذلك بل يوجد دروس ضمن المسارات والمشاريع يتم من خلالها شرح جميع الخطوات اللازمة لتحضير مستودع المشروع على github والتعامل مع git خلال المشاريع العملية التي يتم شرحها ضمن مسارات الدورة، وذلك لضمان الحصول على أكبر استفادة من خلال التطبيق العملي على مشاريع حقيقية وترسيخ الأفكار أكثر عند تطبيقها على مشاريع متعددة. كما يمكنك الاطلاع على المصادر بأي وقت والبحث على الانترنت وضمن أكاديمية حسوب فيوجد العديد من المراجع المفيدة وأيضاً يمكنك طرح أي سؤال أو استفسار لديك في التعليقات أسفل الدروس وسيعمل المدربون على مساعدتك بأفضل شكل ممكن. القسم الخاص بمقالات Git على أكاديمية حسوب: https://academy.hsoub.com/programming/workflow/git/ بعض المصادر المفيدة:
  25. حاول حذف اللاحقة الموجودة من الاسم ونسخها ولصقها ضمن نفس القرص أو مكان التخزين المؤقت قبل نسخها إلى مكان آخر.
×
×
  • أضف...