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

كل الأنشطة

تحدث تلقائيًا

  1. الساعة الماضية
  2. كنصيحة لا تحكمي على أي دورة في أي مكان بعدد الساعات الخاصة بها، فالأهم هو محتوى، فالساعات الطويلة لا تعني محتوى جيد والعكس صحيح لا تعني الساعات القصيرة محتوى سيء، لذا الأهم هو ثراء المحتوى ودسامته مع عدم الإخلال بالأساسيات. وعدد ساعات دورة بايثون هي 67 ساعة، وعدد ساعات دورة تطوير واجهات المستخدم هي 72 ساعة، لذا الفرق 5 ساعات فقط. وأول مسارين هما الأساسيات في دورة بايثون يستحوذان على نسبة كبيرة حيث يحتوي مسار أساسيات لغة بايثو على 11 ساعة من المحتوى، ومسار تطبيقات عملية باستخدام بايثون على 15 ساعة. والمطلوب للتقدم للإمتحان هو إنهاء 4 مسارات على الأقل، ولا يشترط مسارات معينة، لكن من الأفضل إنهاء كامل مسارات الدورة لتحقيق استفادة.
  3. ستجدd أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس. بالنسبة لسؤالك، بالطبع يكفي وحتى ما بعد الأساسيات لا مشكلة به، وبإختصار إذا كنتي تفضل بيئة تطوير بسيطة ومخصصة لتطوير Python وترغبين في التوسع في استخدام الإضافات وتخصيص البيئة الخاصة بك فاستخدمي VSCode لكونه code editor. ، أما إن كنتي بحاجة إلى ميزات متقدمة مدمجة مثل محلل ومصحح Python قوي ودعم كبير لإطارات العمل الخاصة ببايثون، فبيئة التطوير PyCharm هي الخيار الأفضل بالنسبة لك وذلك لكونه IDE أي بيئة تطوير ومتكاملة مخصصة للغة برمجية معينة. بمعنى أن VSCode بحاجة إلى تخصيصه فيما بعد مثل تثبيت إضافة خاصة بإطار بجانغو وفلاسك من أجل إظهار الكود بشكل جيد ومثل تلك الأمور ستتكرر لذلك ذكرت أن عليك تخصيصه بما يتناسب مع استخدامك، أما PyCharm فيدعم ذلك بشكل إفتراضي. لكن في البداية من الأفضل استخدام vscode لكونه بسيط وسهل الاستخدام.
  4. اليوم
  5. بالإضافة إلى التعليق السابق، من المهم جداً التأكد من ترتيب الجداول، لأن في كثير من الأحيان، إذا كانت هناك مشكلة تتعلق بقاعدة البيانات ولا يبدو أن السبب مرتبط بالكود، فقد يكون السبب هو ترتيب الجداول. يتم ترتيب الجداول في لارافيل تنازليًا حسب الوقت الذي تم إنشاؤها به، بمعنى أنه إذا تم إنشاء جدول جديد، فسيكون ترتيب الجداول في آخر الجداول التي تم إنشاؤها. ستلاحظ في الصورة أن الجداول يتم ترتيبها من الأقدم إلى الأحدث. كيف يسبب هذه خطا عند استخدام مفهوم Foreign Key في Laravel، يجب أن يكون الجدول الذي تشير إليه Foreign Key موجودًا قبل الجدول الذي يحتوي على Foreign Key. وإذا كان Laravel يحاول إنشاء الجدول الذي يحتوي على Foreign Key قبل الجدول الذي يشير إليه، فقد يتسبب ذلك في الخطأ الذي واجهته
  6. االمشكله اللي بتواجهها دي غلطة شائعة بتحصل لما بتكون فيه مشكلة في تكوين قيود الـ Foreign Key في قواعد بيانات MySQL مع Laravel. النوع ده من الاخطاء بيظهر لما خصائص العمود اللي عايز تربطه بـ Foreign Key مش متطابقة مع خصائص العمود المرجعي في الجدول التاني. فيه أسباب محتملة كتير للغلطة دي اولهم ان نوع البيانات مش متطابق لازم نوع البيانات للعمود id_client في جدول evaluers يكون نفس نوع البيانات للعمود id في جدول clients. وبعد كدا لازم ان تتأكد من خصائص العمود لو العمود id في جدول clients بيستخدم خصائص زي UNSIGNED، لازم العمود id_client في جدول evaluers يكون معرف بنفس الطريقة. و لازم الترميز والترتيب للجداول المرتبطة يكون متطابق. علشان تحل الغلطة دي، ممكن تتأكد من النقط دي يجب ان تتأكد من تطابق نوع البيانات وخصائصه: Schema::create('clients', function (Blueprint $table) { $table->increments('id'); // لو كان بيستخدم increments مثلًا }); Schema::create('evaluers', function (Blueprint $table) { $table->unsignedInteger('id_client'); $table->foreign('id_client')->references('id')->on('clients'); }); لو الجدول بيستخدم ترميز معين، تأكد ان الجدول التاني بيستخدم نفس الترميز والترتيب. شغل عملية التهجير من جديد بعد ما تتأكد من صحة التعريفات: php artisan migrate:fresh دي هتحذف كل الجداول وتعيد إنشائها من جديد. تأكد من أنك لا تفقد بيانات مهمة قبل تنفيذ هذا الأمر. ما ينفعش خالص تتجاهل النوع ده من الغلطات، لأنه هيأثر على سلامة البيانات والعلاقات في قاعدة البيانات، واللي ممكن يسبب مشاكل في استرجاع البيانات أو تكامل البيانات في المستقبل. الأفضل دايمًا تصلح الغلطات دي على طول.
  7. عند العمل على تهجير جداول في laravel ظهر لي هذا الخطأ مع انه تم انشاء الجدول في قاعدة البيانات اي ان عملية تهجير تمت بنجاح الخطأ : SQLSTATE[HY000]: General error: 1005 Can't create table `cosultation`.`evaluers` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table `evaluers` add constraint `evaluers_id_client_foreign` foreign key (`id_client`) references `clients` (`id`)) at D:\PROJET\exemple\vendor\laravel\framework\src\Illuminate\Database\Connection.php:760 756▕ // If an exception occurs when attempting to run a query, we'll format the error 757▕ // message to include the bindings with SQL, which will make this exception a 758▕ // lot more helpful to the developer instead of just the database's errors. 759▕ catch (Exception $e) { ➜ 760▕ throw new QueryException( 761▕ $query, $this->prepareBindings($bindings), $e 762▕ ); 763▕ } 764▕ } 1 D:\PROJET\exemple\vendor\laravel\framework\src\Illuminate\Database\Connection.php:545 PDOException::("SQLSTATE[HY000]: General error: 1005 Can't create table `cosultation`.`evaluers` (errno: 150 "Foreign key constraint is incorrectly formed")") ماهو سبب ظهور هذا الخطا وهل تجاهله يؤثر على عملي مرة اخرى ، وشكرا
  8. يرجي التوضيح اكثر ما هي العمليه الحسابيه التي تريد تنفيذها اذا كنت تريد كود لانشاء جدول للعمليات الحسابيه وهذه قصدك فا ببساطه هذه مثال لكليفية انشاء هذه الجدول CREATE TABLE Operations ( OperationID INT PRIMARY KEY, Operand1 DECIMAL(10,2), Operand2 DECIMAL(10,2), Operator CHAR(1), Result DECIMAL(10,2) ); OperationID: يمثل معرف العملية الحسابية. Operand1: يمثل العدد الأول في العملية الحسابية. Operand2: يمثل العدد الثاني في العملية الحسابية. Operator: يمثل العملية الحسابية المستخدمة (+، -، *، /). Result: يمثل النتيجة النهائية للعملية الحسابية.
  9. طول أو قصر وقت الفيديوهات وعددها شيء غير مؤثر بشكل كبير في مقارنة الدورات. الأهم هو المحتوى الموجود فيها والأهم منه هو استيعاب الطالب لما يدرسه فيها. في الفيديوهات الأولى مثلا قد يكون عدد الفيديوهات كثيرا ووقتها قصير نسبيا، لأنها تتناول مفاهيم بسيطة يمكن دراستها في وقت قصير، كما أنّ عدد هذه المفاهيم يكون كبيرا (كل شيء يبدو هكذا في البداية) لذلك تكون عدد الفيديوهات كثيرة. لكن مع التقدّم في الدروس تصبح عدد الفيديوهات أقل ويزداد طولها (وتعقيدها)، وسوف تصبح الدروس مترابطة فيما بينها بشكل كبير، والطالب عندما يحاول تطبيق كل ما يدرسه فيها (وربّما يزيد إبداعا من عنده، فهذا أحسن) سوف يكلّفه هذا وقتا كثيرا ويقع في مشاكل وسيحتاج إلى طلب المساعدة من المشرفين وغير ذلك. لذلك لا يمكن حساب وقت الدورة بناء على عدد الفيديوهات أو مجموع وقتها، بل إن الأمر يختلف من طالب لآخر، فكلّ طالب له قدراته الخاصّة في الدراسة واهتماماته وأشغاله. يمكنك إيجاد إجابات مشابهة عن كيفية تقدير مدّة الدورة وآلية الامتحان في هذا السؤال:
  10. هل تعتبر دورة بايثون قصيرة مقارنة بدورة تطوير واجهات المستخدم من ناحية عدد الفيديوهات المطلوبه للبدء في الإمتحان في كل دورة
  11. كتابة الكود غير مرتبطة بالمحرر الذي تختارينه. يمكن أن تختاري أي محرر تريدين. في دورة تطوير التطبيقات باستخدام Python يستخدم المدرّب عادة برنامج PyCharm لأن هذا هو خياره الشخصي، لكن هذا ليس شرطا. إذا كنت متمكّنة أكثر في VS Code أو تشعرين بأنه يريحك أكثر أو متوافق مع جهازك بشكل أحسن فيمكنك استخدامه. وفي حالة لم تستطيعي متابعة المدرّب في جزئية محددة بسبب اختلاف البرامج، فيمكنك طرح سؤال في قسم التعليقات أسفل الدرس وسوف يقوم أعضاء الإشراف الذين يستخدمون VS Code بمساعدتك.
  12. هل يمكنني استخدام برنامج vscode لدراسه الدورة من البداية إلى النهاية
  13. الاحتفاظ بالمشاريع يعني الإبقاء على الملفات التي تمّ العمل عليها عند متابعة المدرّب. في الدروس المتقدّمة تكون المشاريع مجلّدات تحوي عدّة ملفّات كثيرة وكبيرة، وهذه يجب الاحتفاظ بها. سوف يتم رفع هذه المشاريع على GitHub في وقت لاحق قبل التقدّم للامتحان. في الدروس الابتدائية تكون المشاريع متكوّنة من ملف واحد، فمن الأحسن الاحتفاظ بها هي أيضا. في بعض الدروس الابتدائية لا توجد أصلا ملفّات لحفظها. في هذه الحالة يمكنك نسخ الأوامر التي تم إدخالها في ملف نصّي مثلا. لا أعتقد أن أخذ لقطات الشاشة أمر ضروري لكنها فكرة جيّدة ويمكنك إضافتها.
  14. البارحة
  15. ماذا يعني الاحتفاظ بالمشاريع العمليه لإرسالها للمراجعة يعني هل يجب أن أخذ لقطة للشاشة لكل كود مع المخرج الخاص به
  16. اطلب كود العملية الحسابية في الاسكيوال سيرفر
  17. الدروس تعمل بشكل طبيعي، لكنها شكوى متكررة بالفعل، أرجو تحديث الصفحة من خلال الضغط على CTRL + F5 لحذف الملفات المؤقتة، ثم التجربة إن استمرت المشكلة أرجو استخدام متصفح آخر بدون إضافات والتجربة لمعرفة أين المشكلة، وإخبارنا إن تم حل المشكلة. وبخصوص المُلخصات، فلا يوجد تلخيصات نصية للدروس للأسف، يمكنك الإعتماد على موسوعة حسوب كمرجع لك: https://wiki.hsoub.com/الصفحة_الرئيسية
  18. اولاً لماذا الدرس يتوقف عن التشغيل بشكل مفاجىء في كل المتصفحات وهل يوجد خلاصة للدروس او ملخص لكل درس وشكراً.
  19. مرحباً, أنت تقوم ببعض العمليات على profile slice , ولكن ما تواجهه أنه البيانات تزول عندما تقوم بتحديث الصفحة أو إعادة تحميلها بأي شكل , هذا بالطبع سيحدث كون redux toolkit بشكل إفتراضي لا تقوم بحفظ البيانات بشكل دائم في المتصفح ( local storage او اي شكل اخر ) , وإنما تقوم بحفظها بشكل مؤقت في المتصفح وعند إعادة تحميل الصفحة سوف تزول جميع العمليات التي قمت بها . لحل هذه المشكلة ( او ما تبحث عنه ) يمكنك فعلها بطريقتين: إما باستخدام localStorage , وتقوم بحفظ وتعديل البيانات في localStorage كلما قمت بتعديل redux toolkit slice , وفي كل مرة تقوم بتشغيل التطبيق تفحص إذا كان هناك بيانات مخزنة في localStorage فتقوم بإستردادها ل profile slice , يمكنك تعديل الكود لديك كالشكل التالي : أولاً قم بتحديث create profile action لتتضمن تخزين البيانات في local storage : export function createProfile(newProfile) { return async(dispatch, getState) => { try { dispatch(profileActions.setLoading()) const { data } = await axios.post(PROFILE_URL, newProfile, { headers: { 'x-auth-token': getState().auth.user.token } }) dispatch(profileActions.setProfile(data)) dispatch(profileActions.setIsProfileCreated()) localStorage.setItem('profileData', JSON.stringify(data)); setTimeout( () => dispatch(profileActions.clearIsProfileCreated()), 2000 ); } catch (error) { const err = error.response?.data.msg if (err) { dispatch(alertActions.createAlert(err)); dispatch(alertActions.clearAlert(err)); } const errors = error.response.data.errors errors?.forEach((err) => { dispatch(alertActions.createAlert(err.msg)); dispatch(alertActions.clearAlert(err.id)); }); dispatch(profileActions.clearLoading()) } } } ثانياً ، عند بدء التطبيق، يمكنك التحقق مما إذا كانت هناك بيانات مخزنة واستخدامها , يمكنك وضع الكود التالي في layout او component الصفحة الاساسية . useEffect(() => { const storedData = localStorage.getItem('profileData'); if (storedData) { dispatch(profileActions.setProfile(JSON.parse(storedData))); } }, []); الطريقة الثانية , تسمى هذه التقنية redux persist , هي مكتبة تساعد في حفظ حالة التطبيق في تطبيقات React Redux عبر عملية التخزين المحلي. تسمح هذه المكتبة بالاحتفاظ بحالة Redux الحالية حتى بعد إعادة تحميل الصفحة أو إعادة فتح التطبيق عن طريق استخدام localStorage أو AsyncStorage في React Native.
  20. لا مشكلة في ذلك و بالتوفيق لك..
  21. تمام عفوا ما انتبهت على الرغم بس خلص الفيديو فكرت علقت تحته. عفوا ... شكرا
  22. وعليكم السلام , أرجو طرح الأسئلة الخاصة بالدورات ضمن التعليقات تحت فيديو الدورة , وطرح الأسئلة العامة هنا , بالنسبة لسؤالك , عندما قمت بطباعة getModel بدلاً من setModel ، فقد قمت بطباعة قيمة النموذج المخزنة في الكائن $vehicle. هذا يعني أنك تحصل على قيمة النموذج المحددة للسيارة، وليس قيمة مختلفة تم تعيينها. ودوال set تستخدم لتعيين قيمة جديدة لخاصية في الكائن، بينما تستخدم دوال get لاسترجاع القيمة الموجودة. بالنسبة لماذا قام المدرب باستخدام الشرط if في دالة setYear , فهنا قمنا باستخدامها للتحقق مما إذا كان العام المراد تعيينه هو قيمة صحيحة (integer) أم لا , وفي حال إذا كان العام ليس صحيحًا، سيتم توليد (Exception) يشير إلى أن العام غير صالح. بالنسبة لسؤالك حول تعقيد التعامل مع التطبيقات, يعتمد تعقيد التعامل مع التطبيقات على العديد من العوامل، بما في ذلك حجم التطبيق وتعقيده . ففي التطبيقات الكبيرة والمعقدة، قد تتطلب عمليات الإدخال والإخراج والتحقق من البيانات والتعامل مع الأخطاء والاستثناءات الكثير من الشفافية والتحكم الدقيق. ويمكن أن تكون التطبيقات المعقدة أكثر تعقيدًا في تصميمها وتطويرها، ولكن يمكن التعامل مع هذا الأمر من خلال تنظيم الشيفرة واستخدام مفاهيم البرمجة المناسبة مثل الإنكابسوليشن والتحقق من الأخطاء والاستثناءات. لا تقلق , مع التقدم في التعلم سوف تجدي هذه الخطوات سهلة جداً بالتوفيق
  23. وعليكم السلام الرجاء التعليق اسفل الفيديو الخاص بشرح الدرس ستجدين هذا المستطيل في نهاية الصفحة تضيفين التعليق من خلاله
  24. السلام عليكم يعطيكن العافية لو سمحتوا ممكن حدا يشرحلي لماذا طبعت get model بدل set... والدالة if لماذا استخدمتها؟ وهل عند التعامل مع التطبيقات رح يكون نفس المبدأ معقد؟🤔
  25. مرحبا محمود أنت بالفعل تقوم بالإضافة إلى قاعدة البيانات وفى نفس الوقت تضيف فى المصفوفة ولكن عند تحديث الصفحة فى البداية لابد من جلب البيانات و إضافتها إلى المصفوفة ومن ثم إجراء العمليات على المصفوفة للقيام بهذه الإجراء اقترح عليك استخدام createAsyncThunk وهذه الدالة موجوده داخل الredux Toolkit لمعالجة العمليات الغير متزامنة في الأكشنز (actions) في Redux و تستطيع عن طريقها مشاركة البيانات التى تحصل عليها منAPI SERVER فى كل المكونات والوصول لها من أى مكون. وهذا مثال بسيط لاستخدامها import { createAsyncThunk } from '@reduxjs/toolkit'; import axios from 'axios'; // تعريف ال async thunk export const fetchData = createAsyncThunk( 'data/fetchData', // نوع الأكشن async (arg, thunkAPI) => { try { const response = await axios.get('https://api.example.com/data'); return response.data; } catch (error) { // التعامل مع الأخطاء، يمكنك إرسال أكشن آخر أو إلقاء الخطأ return thunkAPI.rejectWithValue(error.message); } } ); // استخدام ال async thunk في الـ slice import { createSlice } from '@reduxjs/toolkit'; const dataSlice = createSlice({ name: 'data', initialState: { loading: false, data: null, error: null, }, reducers: {}, extraReducers: { [fetchData.pending]: (state) => { state.loading = true; state.error = null; }, [fetchData.fulfilled]: (state, action) => { state.loading = false; state.data = action.payload; }, [fetchData.rejected]: (state, action) => { state.loading = false; state.error = action.payload; }, }, }); export default dataSlice.reducer; حيث في هذا المثال: createAsyncThunk تنشئ async thunk action creator بإسم fetchData. يأخذ هذا المنشئ نوع الأكشن ('data/fetchData') ودالة غير مزامنة تقوم بأداء عملية مزامنة (هنا، طلب بيانات من API). createSlice تنشئ slice لتخزين الحالة (state) والأكشنز والريدوسيرز (reducers). extraReducers تعرف كيفية التعامل مع نتائج ال async thunk مثل (التعليق)pending, (الإكتمال)fulfilled, و(الرفض ) rejected. بالتوفيق..
  26. السلام عليكم. بعد تسجيل الدخول، يتوجه المستخدم ملفه الشخصي للقيام بإضافة ما يتوجب من معطيات. في هذه الحالة تكون المصفوفة profile فارغة لأنه لاتوجد بداخلها بيانات تتعلق بالملف الشخصي للمستخدم. يقوم المستخدم إذن بإنشاء ملفه الشخصي بواسطة الكود التالي: const profileSlice = createSlice({ name: "profile", initialState: { profile: [], loading: false, isProfileCreated: false, }, reducers: { setProfile(state, action) { state.profile = action.payload }, setLoading(state) { state.loading = true }, clearLoading(state) { state.loading = false }, setIsProfileCreated(state) { state.isProfileCreated = true; state.loading = false }, clearIsProfileCreated(state) { state.isProfileCreated = false; }, }, }); *** export function createProfile(newProfile) { return async(dispatch, getState) => { try { dispatch(profileActions.setLoading()) const { data } = await axios.post(PROFILE_URL, newProfile, { headers: { 'x-auth-token': getState().auth.user.token } }) dispatch(profileActions.setProfile(data)) dispatch(profileActions.setIsProfileCreated()) setTimeout( () => dispatch(profileActions.clearIsProfileCreated()), 2000 ); } catch (error) { const err = error.response?.data.msg if (err) { dispatch(alertActions.createAlert(err)); dispatch(alertActions.clearAlert(err)); } const errors = error.response.data.errors errors?.forEach((err) => { dispatch(alertActions.createAlert(err.msg)); dispatch(alertActions.clearAlert(err.id)); }); dispatch(profileActions.clearLoading()) } } } **** const navigate = useNavigate(); const dispatch = useDispatch(); const { loading, isProfileCreated } = useSelector((state) => state.profile); const { alerts } = useSelector((state) => state.alert); const addNewProfile = (e) => { e.preventDefault(); dispatch( createProfile({ status, company, website, location, skills, githubusername, bio, twitter, facebook, instagram, linkedin, youtube, }) ); alerts.map((alert) => dispatch(alertActions.clearAlert(alert.id))); }; useEffect(() => { if (alerts.length > 0) { setShow(true); setTimeout(() => { setShow(false); }, 3000); } }, [alerts]); useEffect(() => { if (isProfileCreated) { navigate("/dashboard"); } }, [navigate, isProfileCreated]); هنا يتم إنشاء الملف الشخصي، ويتم تسجيل كافة المعطيات بقاعدة البيانات. المشكل الذي أواجهه. في الكود التالي const { profile } = useSelector((state) => state.profile); console.log(profile) عندما أقوم بتحديث الصفحة تصبح profile مصفوفة فارغة. أرجو المساعدة.
  27. السبب حسب ماهو موضح في الخطأ فيبدو أن ملف react.gradle مفقود من مسار node_modules\react-native وبما أن المشروع قديم نوعا ما فيمكنك إعادة تثبيت React Native من خلال إزالته من مشروعك من خلال هذا الأمر: npm uninstall react-native react-native-cli يمكنك تجربة الحلول التالية لحل هذه المشكلة: ثم إعادة تثبيته باستخدام الأمر: npm install react-native react-native-cli لكن تأكد من استخدام إصدار Gradle متوافق مع React Native. يمكنك التحقق من إصدار Gradle المطلوب من خلال هذا الرابط هنا: في وثائق React Native ومن أن إصدار Gradle المحدد في ملف build.gradle (app) يتطابق مع الإصدار المثبت على جهازك. هذا الأمر سيساعد أيضا من خلال تنظيف Cache npm فقد تكون المشكلة منه في بعض الحالات، باستخدام الأمر: npm cache clean --force ثم قم بإعادة تثبيت React Native مرة أخرى ولا تنسى من التثبت من أن ملفات Gradle موجودة في المسار الصحيح. عادة ما تكون موجودة في android/app/build.gradle و node_modules/react-native/react/build.gradle. إذا كانت الملفات مفقودة، يمكنك محاولة تنزيلها من مستودع React Native على غيتهاب من هنا: مستودع React Native على Github
  28. السلام عليكم هناك تطبيق سابق اعمل عليه انا حاليا، عند القيام ب npm install ثم npx react-native run-android اتلقى هذا الخطأ 1/ node_modules\react-native\react.gradle' as it does not exist 2/ A problem occurred configuring project ':app'. > compileSdkVersion is not specified. Please add it to build.gradle لم اجد الحل الانسب في النت على الرغم من قيامي بكل شيء. هل احدكم صادف هذا الخطأ او احدكم يمكنه المساعدة. شكرا.
  1. عرض المزيد
×
×
  • أضف...