Web Development Code
Photo
السلام عليكم ...
المرة اللي فاتت اتكلمنا مع بعض شوية عن مفهوم الrace condition وبتحصل امتى وادينا مثال عليها و أثبتنا مع بعض انه ازاي الmulti threading مش دايما بيبقى أطيب من الأستاذ بهاء سلطان ولا حاجه
ووقفنا المرة اللي فاتت عند مشكلة الحاجه أم محمود وشوفنا مع بعض مشكلة من مشاكل الmulti threading بسبب ان فيه 2threads مشتركين مع بعض resource واحده وكل واحد فيهم بيقرا نفس القيمة وبعدها يروح يعمل check على القيمة اللي قرأها دي وفي الحالتين القيمة الأولى بتحقق condition بتاعت كل thread فبيبدأ كل واحد فيهم يدخل في الكود الخاص فيه ويسببلي مشكلة كبيرة بعد كدا
- طيب ايه الحل دلوقتي ؟
الحل هوا الlock
-ايه الlock ده هنقفل على ام محمود؟
اه حاجه زي كدا بالظبط
في المثال البسيط بتاع المرة اللي فاتت ان الأول عمر راح سأل والدته وبعدها سابها ومشى بعد كدا لما اخوه جه سألها برضو جاوبته عادي جدا لأن مفيش اي حاجه تمنعها من كدا ف الجماعه بتوع الsoftware قالك طيب ما لو الحاجه ام محمود كانت رفضت تقول لخالد هيا معاها فلوس كام لأن عمر سألها ومحتاج يعمل عملية بالفلوس دي
ايه هيا العملية وقد ايه لسه مش عارفه بس طالما سألني يبقى هو محتاج يعمل حاجه بالفلوس دي فلما عمر جالها قالتله استنى دلوقتي اصبر عشان أخوك سألني من شوية ومشى فأكيد هو هيعمل حاجه وهيخصم من الفلوس دي اصبر لحد ما نشوف هو هيعمل ايه وهياخد كام وبعدها هقولك انا باقي معايا كام وبس كدا بكل بساطة أم محمود حلت مشكلة الrace condition بسهولة خالص بمفهوم الlock لأن المشكلة أساسا في الأول كانت بتحصل عندي لما 2threads يبقى ليهم access في نفس الوقت لshared resource فاللي أنا هعمله دلوقتي اني بمجرد ما thread يوصل للداتا دي هيعمل بلوك لأي thread تاني من انه يوصلها إلا لما يخلص من خلال الlock وبعدها يفك الlock اللي عمله عليها ده وييجي الthread اللي بعده يعمل عليها lock برضو بحيث انه يمنع اي thread تاني أنه يوصلها لحد ما يخلص شغله ويفك الlock ده فاللي هيحصل عندنا انه أول thread هيوصل للداتا هيعملها lock بمعنى انا مش ملزم كل مرة thread 1 اللي شغلناه الأول يوصل الأول مش شرط دي حاجه زي ما قولنا معتمدة على الos وعوامل تانية ملناش دعوه بيها دلوقتي بس اللي حصل دلوقتي اني حليت المشكلة الكبيرة وبدل ما أم محمود تلاقي نفسها مديونه بعد ما الاتنين threads (خالد وعمر) يستخدموا فلوسها هيا قدرت تنظم الموضوع بطريقة بسيطة جدا
وزي كل مرة عملنا كود بسيط يوضحلنا الconcept ده ازاي بيتحقق عندنا في الreal life وده نفس الكود بتاع المرة اللي فاتت بس الفرق اننا استخدمنا الlock المرادي وده عملنا ظلم شوية بين الأخين بسبب ان عمر وصل الأول وقدر يقلب الحاجه في الفلوس وعلى ما خالد وصل كانت الحاجه اتقلبت وما قدرتش توفرله الcondition بتاعه فمقدرش يتنفذ وحافظلي على الlogic بتاع الsystem من انه يبوظ أو ان أم محمود تعلن افلاسها
المرة اللي فاتت اتكلمنا مع بعض شوية عن مفهوم الrace condition وبتحصل امتى وادينا مثال عليها و أثبتنا مع بعض انه ازاي الmulti threading مش دايما بيبقى أطيب من الأستاذ بهاء سلطان ولا حاجه
ووقفنا المرة اللي فاتت عند مشكلة الحاجه أم محمود وشوفنا مع بعض مشكلة من مشاكل الmulti threading بسبب ان فيه 2threads مشتركين مع بعض resource واحده وكل واحد فيهم بيقرا نفس القيمة وبعدها يروح يعمل check على القيمة اللي قرأها دي وفي الحالتين القيمة الأولى بتحقق condition بتاعت كل thread فبيبدأ كل واحد فيهم يدخل في الكود الخاص فيه ويسببلي مشكلة كبيرة بعد كدا
- طيب ايه الحل دلوقتي ؟
الحل هوا الlock
-ايه الlock ده هنقفل على ام محمود؟
اه حاجه زي كدا بالظبط
في المثال البسيط بتاع المرة اللي فاتت ان الأول عمر راح سأل والدته وبعدها سابها ومشى بعد كدا لما اخوه جه سألها برضو جاوبته عادي جدا لأن مفيش اي حاجه تمنعها من كدا ف الجماعه بتوع الsoftware قالك طيب ما لو الحاجه ام محمود كانت رفضت تقول لخالد هيا معاها فلوس كام لأن عمر سألها ومحتاج يعمل عملية بالفلوس دي
ايه هيا العملية وقد ايه لسه مش عارفه بس طالما سألني يبقى هو محتاج يعمل حاجه بالفلوس دي فلما عمر جالها قالتله استنى دلوقتي اصبر عشان أخوك سألني من شوية ومشى فأكيد هو هيعمل حاجه وهيخصم من الفلوس دي اصبر لحد ما نشوف هو هيعمل ايه وهياخد كام وبعدها هقولك انا باقي معايا كام وبس كدا بكل بساطة أم محمود حلت مشكلة الrace condition بسهولة خالص بمفهوم الlock لأن المشكلة أساسا في الأول كانت بتحصل عندي لما 2threads يبقى ليهم access في نفس الوقت لshared resource فاللي أنا هعمله دلوقتي اني بمجرد ما thread يوصل للداتا دي هيعمل بلوك لأي thread تاني من انه يوصلها إلا لما يخلص من خلال الlock وبعدها يفك الlock اللي عمله عليها ده وييجي الthread اللي بعده يعمل عليها lock برضو بحيث انه يمنع اي thread تاني أنه يوصلها لحد ما يخلص شغله ويفك الlock ده فاللي هيحصل عندنا انه أول thread هيوصل للداتا هيعملها lock بمعنى انا مش ملزم كل مرة thread 1 اللي شغلناه الأول يوصل الأول مش شرط دي حاجه زي ما قولنا معتمدة على الos وعوامل تانية ملناش دعوه بيها دلوقتي بس اللي حصل دلوقتي اني حليت المشكلة الكبيرة وبدل ما أم محمود تلاقي نفسها مديونه بعد ما الاتنين threads (خالد وعمر) يستخدموا فلوسها هيا قدرت تنظم الموضوع بطريقة بسيطة جدا
وزي كل مرة عملنا كود بسيط يوضحلنا الconcept ده ازاي بيتحقق عندنا في الreal life وده نفس الكود بتاع المرة اللي فاتت بس الفرق اننا استخدمنا الlock المرادي وده عملنا ظلم شوية بين الأخين بسبب ان عمر وصل الأول وقدر يقلب الحاجه في الفلوس وعلى ما خالد وصل كانت الحاجه اتقلبت وما قدرتش توفرله الcondition بتاعه فمقدرش يتنفذ وحافظلي على الlogic بتاع الsystem من انه يبوظ أو ان أم محمود تعلن افلاسها
Web Development Code
السلام عليكم كام واحد هنا مهتم بلغه python ؟
نزل يمحترم من غير متسأل
Web Development Code
Photo
السلام عليكم ..
اتكلمنا قبل كدا عن الthreads واي هيا الthread و بدأنا بعد كدا نتكلم عن الmulti threading وشوفنا مزاياها بعد كدا بدأنا نتكلم عن بعض العيوب و المشاكل اللي بتواجهنا في استخدام الmulti threading ووقفنا المرة اللي فاتت عن حل لمشكلة الrace condition واللي كان عن طريق استخدام الlock والنهاردة بإذن الله هنتكلم عن مشكلة جديدة بسبب الlock
- ايه ده!! إذا كان احنا عملنا الlock علشان يحللنا مشكلة يقوم هوا اللي يعملنا مشكلة!!
صدقتني بقى لما قولتلك الmulti threading مش أطيب من أستاذ بهاء ولا حاجه وان مشاكله كتير
- …!
ما علينا المهم اننا هنتكلم النهاردة عن مشكلة جديدة من مشاكل الmulti threading وهيا الdead lock
-ايه هيا الdead lock وبتحصل ليه وامتى؟
تعريف الdead lock هو :
A deadlock is created when two applications lock data that is needed by the other, resulting in a situation in which neither application can continue executing.
يعني ايه الكلام ده بقى؟؟
بص فاكر مثال المرة اللي فاتت بتاع أم محمود اللي ملناش غيرها
- اه, بس زهقت منها
خلاص عشان خاطرك هنحاول نشوف مثال تاني المرة دي بما إننا فهمنا الأساسيات المرة اللي فاتت فهنقول مثال عملي شوية في system فهنفترض ان فيه system بتاع بنك الsystem ده بيستخدم الmulti threading في شغله بس اتعلم من غلطة الحاجة أم محمود وبقى يستخدم lock عشان ميحصلش عنده مشاكل فوصل عنده عميل في الفرع الأول اسمه خالد حابب يعمل عملية تحويل لحساب شخص تاني اسمه عمر
- ايه ده مش دول ولاد الحاجه ام محمود؟
اه ربنا كرمهم من تقليب امهم وفتحوا حسابات في البنك, بس مش ده المهم دلوقتي المهم ان اللي هيحصل دلوقتي في الsystem في عملية التحويل
أول حاجة زي ما اتكلمنا المرة اللي فاتت عشان بنستخدم الmulti threading ف الsystem أول حاجه هيعملها أنه يعمل lock على حساب خالد عشان يعمل شوية عمليات وchecks يتأكد ان خالد ده مسموحله يعمل العملية دي ولا لا
-طيب بعد كدا؟
بعد كدا هيبدأ يخصم من حساب خالد وبعدها يروح يشوف عمر ويشوف هل مسموحله يتحول ليه المبلغ ده ولا لا وبعدها يضيف اللي خصمه لحساب عمر
- بس حاسب قبل ما يعمل الcheck ويضيف لحساب عمر لازم يعمل على حساب عمر lock الأول
صح فعلا كدا انت مركز معايا قبل طبعا ما يضيف على حساب عمر القيمة دي هيعمل عليه lock والعملية تتم بسهولة خالص بدون أي مشاكل والlocks دي تتشال من على عمر وخالد بعد ما العملية تخلص
- طب ما الدنيا جميلة اهي ومفيش مشاكل اهو
اصبر عليا المشاكل جاية قدام
تاني يوم خالد وصل تاني للفرع الأول عشان يعمل عملية تحويل تاني لاخوه عمر بس الصدفة ان عمر هوا كمان وصل الفرع التاني من البنك علشان هيعمل عملية تحويل لاخوه خالد وبالصدفة البحته اللي مش بتحصل غير في الأفلام الهندي عمر وخالد وصلوا في نفس الثانية ودخلوا للموظف في نفس الثانية والموظفين الاتنين في الفرع الأول والفرع التاني نفذوا عملية التحويل في نفس الثانيه من على الsystem وطبعا عشان الsystem ده multi threading فكل عملية فيهم بتحصل على thread مختلف فاللي هيبدأ يحصل:
(خالد🔓🔓) (عمر🔓🔓)
الفرع الأول: الthread الأول هيبدأ يعمل lock على حساب خالد
(خالد🔒🔒T1) (عمر🔓🔓)
الفرع التاني: الthread التاني هيبدأ يعمل lock على حساب عمر
(خالد🔒🔒T1) (عمر🔒🔒T2)
الفرع الأول: خلص check على حساب خالد وخصم منه المبلغ
(خالد🔒🔒T1) (عمر🔒🔒T2)
الفرع التاني: خلص check على حساب عمر وخصم منه المبلغ
(خالد🔒🔒T1) (عمر🔒🔒T2)
الفرع الأول: بدأ يعمل lock على حساب عمر عشان يضيف ليه المبلغ بس لقاه اساسا مشغول مع thread تاني ومعموله lock فقعد منتظر لحد ما الlock يتفك عنه
(خالد🔒🔒T1) (عمر🔒🔒T2)
الفرع الأول: بدأ يعمل lock على حساب خالد عشان يضيف ليه المبلغ بس لقاه اساسا مشغول مع thread تاني ومعموله lock فانتظر لحد ما يخلص
-طيب وبعدين؟؟
بس كدا مفيش بعدين بوست النهارده كدا خلص
ايه ده مش هتستنى لحد ما الsystem يخلص عملية التحويل
لا
-ليه
عشان مش هيخلص عملية التحويل هيفضل بالمنظر ده طول ما الsystem شغال
thread 1
مستنى
thread 2
يفك الlock
عشان يكمل شغله و thread 2 مستنى thread 1 يفك الlock عشان يكمل شغله وفي الآخر لا ده هيخلص شغل ولا ده هيخلص
وبس كده نكون خلصنا ووضحنا مشكلة الdeadlock و يارب تكون المشكلة وضحت في المثال اللي قولناه ولو حابب تقرأ أكتر وتبدأ تشوف حلول لمشكلة الdead lock فأنا هسيبلك شوية مصادر تحت في التعليقات تقدر تكمل منها الكلام اللي بدأناه هنا بنوسع اكتر وتبدأ تشوف حلول للمشكلة دي وبكدا تكون نهاية كلامنا عن الmulti threading ومشاكله عشان نبدأ نتكلم المرة الجايه عن الsynchronous vs asynchronous بإذن الله
اتكلمنا قبل كدا عن الthreads واي هيا الthread و بدأنا بعد كدا نتكلم عن الmulti threading وشوفنا مزاياها بعد كدا بدأنا نتكلم عن بعض العيوب و المشاكل اللي بتواجهنا في استخدام الmulti threading ووقفنا المرة اللي فاتت عن حل لمشكلة الrace condition واللي كان عن طريق استخدام الlock والنهاردة بإذن الله هنتكلم عن مشكلة جديدة بسبب الlock
- ايه ده!! إذا كان احنا عملنا الlock علشان يحللنا مشكلة يقوم هوا اللي يعملنا مشكلة!!
صدقتني بقى لما قولتلك الmulti threading مش أطيب من أستاذ بهاء ولا حاجه وان مشاكله كتير
- …!
ما علينا المهم اننا هنتكلم النهاردة عن مشكلة جديدة من مشاكل الmulti threading وهيا الdead lock
-ايه هيا الdead lock وبتحصل ليه وامتى؟
تعريف الdead lock هو :
A deadlock is created when two applications lock data that is needed by the other, resulting in a situation in which neither application can continue executing.
يعني ايه الكلام ده بقى؟؟
بص فاكر مثال المرة اللي فاتت بتاع أم محمود اللي ملناش غيرها
- اه, بس زهقت منها
خلاص عشان خاطرك هنحاول نشوف مثال تاني المرة دي بما إننا فهمنا الأساسيات المرة اللي فاتت فهنقول مثال عملي شوية في system فهنفترض ان فيه system بتاع بنك الsystem ده بيستخدم الmulti threading في شغله بس اتعلم من غلطة الحاجة أم محمود وبقى يستخدم lock عشان ميحصلش عنده مشاكل فوصل عنده عميل في الفرع الأول اسمه خالد حابب يعمل عملية تحويل لحساب شخص تاني اسمه عمر
- ايه ده مش دول ولاد الحاجه ام محمود؟
اه ربنا كرمهم من تقليب امهم وفتحوا حسابات في البنك, بس مش ده المهم دلوقتي المهم ان اللي هيحصل دلوقتي في الsystem في عملية التحويل
أول حاجة زي ما اتكلمنا المرة اللي فاتت عشان بنستخدم الmulti threading ف الsystem أول حاجه هيعملها أنه يعمل lock على حساب خالد عشان يعمل شوية عمليات وchecks يتأكد ان خالد ده مسموحله يعمل العملية دي ولا لا
-طيب بعد كدا؟
بعد كدا هيبدأ يخصم من حساب خالد وبعدها يروح يشوف عمر ويشوف هل مسموحله يتحول ليه المبلغ ده ولا لا وبعدها يضيف اللي خصمه لحساب عمر
- بس حاسب قبل ما يعمل الcheck ويضيف لحساب عمر لازم يعمل على حساب عمر lock الأول
صح فعلا كدا انت مركز معايا قبل طبعا ما يضيف على حساب عمر القيمة دي هيعمل عليه lock والعملية تتم بسهولة خالص بدون أي مشاكل والlocks دي تتشال من على عمر وخالد بعد ما العملية تخلص
- طب ما الدنيا جميلة اهي ومفيش مشاكل اهو
اصبر عليا المشاكل جاية قدام
تاني يوم خالد وصل تاني للفرع الأول عشان يعمل عملية تحويل تاني لاخوه عمر بس الصدفة ان عمر هوا كمان وصل الفرع التاني من البنك علشان هيعمل عملية تحويل لاخوه خالد وبالصدفة البحته اللي مش بتحصل غير في الأفلام الهندي عمر وخالد وصلوا في نفس الثانية ودخلوا للموظف في نفس الثانية والموظفين الاتنين في الفرع الأول والفرع التاني نفذوا عملية التحويل في نفس الثانيه من على الsystem وطبعا عشان الsystem ده multi threading فكل عملية فيهم بتحصل على thread مختلف فاللي هيبدأ يحصل:
(خالد🔓🔓) (عمر🔓🔓)
الفرع الأول: الthread الأول هيبدأ يعمل lock على حساب خالد
(خالد🔒🔒T1) (عمر🔓🔓)
الفرع التاني: الthread التاني هيبدأ يعمل lock على حساب عمر
(خالد🔒🔒T1) (عمر🔒🔒T2)
الفرع الأول: خلص check على حساب خالد وخصم منه المبلغ
(خالد🔒🔒T1) (عمر🔒🔒T2)
الفرع التاني: خلص check على حساب عمر وخصم منه المبلغ
(خالد🔒🔒T1) (عمر🔒🔒T2)
الفرع الأول: بدأ يعمل lock على حساب عمر عشان يضيف ليه المبلغ بس لقاه اساسا مشغول مع thread تاني ومعموله lock فقعد منتظر لحد ما الlock يتفك عنه
(خالد🔒🔒T1) (عمر🔒🔒T2)
الفرع الأول: بدأ يعمل lock على حساب خالد عشان يضيف ليه المبلغ بس لقاه اساسا مشغول مع thread تاني ومعموله lock فانتظر لحد ما يخلص
-طيب وبعدين؟؟
بس كدا مفيش بعدين بوست النهارده كدا خلص
ايه ده مش هتستنى لحد ما الsystem يخلص عملية التحويل
لا
-ليه
عشان مش هيخلص عملية التحويل هيفضل بالمنظر ده طول ما الsystem شغال
thread 1
مستنى
thread 2
يفك الlock
عشان يكمل شغله و thread 2 مستنى thread 1 يفك الlock عشان يكمل شغله وفي الآخر لا ده هيخلص شغل ولا ده هيخلص
وبس كده نكون خلصنا ووضحنا مشكلة الdeadlock و يارب تكون المشكلة وضحت في المثال اللي قولناه ولو حابب تقرأ أكتر وتبدأ تشوف حلول لمشكلة الdead lock فأنا هسيبلك شوية مصادر تحت في التعليقات تقدر تكمل منها الكلام اللي بدأناه هنا بنوسع اكتر وتبدأ تشوف حلول للمشكلة دي وبكدا تكون نهاية كلامنا عن الmulti threading ومشاكله عشان نبدأ نتكلم المرة الجايه عن الsynchronous vs asynchronous بإذن الله
التعليقات فبايثون
# this code made by death
الطباعه
Python ver 3
print(" ")
Python 2.7
print " "
لطباعه كود بايثون 3 بداخل بايثون 2.7
from future import print_function
من خلال مكتبه future تقدر تستخدم بعض خصائص بايثون 3 بداخل بايثون 2.7
#python
# this code made by death
الطباعه
Python ver 3
print(" ")
Python 2.7
print " "
لطباعه كود بايثون 3 بداخل بايثون 2.7
from future import print_function
من خلال مكتبه future تقدر تستخدم بعض خصائص بايثون 3 بداخل بايثون 2.7
#python
عود نفسك وانت بتتعلم اي حاجة في البرمجة انك دايما تشغل عقلك وتسأل اسئلة وجودية (من بتاعت بعد الساعة ١٢ دي) وتفكر قبل ما تتعلم الحاجة
دا هيساعدك انك افهم اكتر الحاجة اللي بتعلمها بسهولة
على سبيل المثال
قواعد
clean code, solid, design patterns
وكل الحاجات الحلوة دي
لو بصيتلها هتلاقيها حاجات منطقية وبديهية وطبيعية جدا مش اختراع من المريخ
ف مثلا قبل ما تتعلم كلين كود اعرف يعني ايه كلين كود اصلا وايه الهدف منه واكتب اي كود ييجي في دماغك وبعدها اسأل وفكر بنفسك ازاي تخلي الكود بتاعك يحقق اهداف الكلين كود
الكلين كود يعني كود سهل اقراه وافهمه واعدل فيه
طيب نبدأ ب اسهل حاجة وهي المتغيرات
لو عندي كود
let x = "mostafa"
console.log(x)
هل الكود دا كلين ؟
هل سهل تفهمه وتعرف كل جزء فيه بيعبر عن ايه ؟
الكود مفيهوش غير متغير واحد
هل المتغير دا واضح من اول نظرة ؟ لما تشوف اسمه في اي حتة
الاجابة لا لاني لما اشوف
x
في اي حتة مش هعرف هو بتاع ايه ولا جواه ايه ولازم دايما ابقى فاكر انه بيعبر عن الاسم
طب ازاي احل المشكلة دي
بالمنطق كدا ان الاسم يكون معبر عن اللي جواه
فممكن بدل ما اسميه
x
اسميه
theNameOfLoggedUser
بس الاسم دا طويل اوي وهزهق وانا بقراه فنختصره شوية مثلا نخليه
username
او
name
و كدا نكون طلعنا بشوية قواعد لتسمية المتغيرات
اسم معبر عن محتواه وصغير وسهل النطق والحفظ
مثال تاني
قواعد سوليد
الهدف منها اني اكتب كود
oop
سهل الفهم والصيانة واعادة استخدامه
ف اعملك مشروع صغير وعيد النظر فيه وفكر فيه تاني
طيب لو عندي ميثود بتجيب بيانات من سيرفر وبتعالج البيانات دي وبتحفظها في الداتابيز
هل الميثود دي سهل اني افهمها من اول نظرة ولو فيها مشكلة احدد هي فين بالظبط ؟
الاجابة لا لانها بتعمل كذا حاجة ف الاحسن اقسمها ل ٣ ميثودز كل واحدة بتعمل حاجة واحدة بس
ف كدا نكون طلعنا ب اول مبدأ من مبادئ السوليد وهو مبدأ المسئولية الواحدة
single responsibility principle
فكر في الحل قبل ما تتعلمه
لما تعمل كدا هتلاقي انك وصلت بنفسك لنسبة حلوة من الحاجة اللي عايز تتعلمها ف لما تيجي تتعلمها هتلاقيها اسهل ومحفورة جواك حتى لو نسيتها
ودا كمان هينمي عقلك اكتر وهيساعدك جدا جدا وانت شغال
وانا شايف ان دي برضو مهمة الناس اللي بتشرح انه لما ييجي يشرح حاجة يبدأ من المشكلة ويشرح ازاي يفكر ويوصل للحل
دا هيساعدك انك افهم اكتر الحاجة اللي بتعلمها بسهولة
على سبيل المثال
قواعد
clean code, solid, design patterns
وكل الحاجات الحلوة دي
لو بصيتلها هتلاقيها حاجات منطقية وبديهية وطبيعية جدا مش اختراع من المريخ
ف مثلا قبل ما تتعلم كلين كود اعرف يعني ايه كلين كود اصلا وايه الهدف منه واكتب اي كود ييجي في دماغك وبعدها اسأل وفكر بنفسك ازاي تخلي الكود بتاعك يحقق اهداف الكلين كود
الكلين كود يعني كود سهل اقراه وافهمه واعدل فيه
طيب نبدأ ب اسهل حاجة وهي المتغيرات
لو عندي كود
let x = "mostafa"
console.log(x)
هل الكود دا كلين ؟
هل سهل تفهمه وتعرف كل جزء فيه بيعبر عن ايه ؟
الكود مفيهوش غير متغير واحد
هل المتغير دا واضح من اول نظرة ؟ لما تشوف اسمه في اي حتة
الاجابة لا لاني لما اشوف
x
في اي حتة مش هعرف هو بتاع ايه ولا جواه ايه ولازم دايما ابقى فاكر انه بيعبر عن الاسم
طب ازاي احل المشكلة دي
بالمنطق كدا ان الاسم يكون معبر عن اللي جواه
فممكن بدل ما اسميه
x
اسميه
theNameOfLoggedUser
بس الاسم دا طويل اوي وهزهق وانا بقراه فنختصره شوية مثلا نخليه
username
او
name
و كدا نكون طلعنا بشوية قواعد لتسمية المتغيرات
اسم معبر عن محتواه وصغير وسهل النطق والحفظ
مثال تاني
قواعد سوليد
الهدف منها اني اكتب كود
oop
سهل الفهم والصيانة واعادة استخدامه
ف اعملك مشروع صغير وعيد النظر فيه وفكر فيه تاني
طيب لو عندي ميثود بتجيب بيانات من سيرفر وبتعالج البيانات دي وبتحفظها في الداتابيز
هل الميثود دي سهل اني افهمها من اول نظرة ولو فيها مشكلة احدد هي فين بالظبط ؟
الاجابة لا لانها بتعمل كذا حاجة ف الاحسن اقسمها ل ٣ ميثودز كل واحدة بتعمل حاجة واحدة بس
ف كدا نكون طلعنا ب اول مبدأ من مبادئ السوليد وهو مبدأ المسئولية الواحدة
single responsibility principle
فكر في الحل قبل ما تتعلمه
لما تعمل كدا هتلاقي انك وصلت بنفسك لنسبة حلوة من الحاجة اللي عايز تتعلمها ف لما تيجي تتعلمها هتلاقيها اسهل ومحفورة جواك حتى لو نسيتها
ودا كمان هينمي عقلك اكتر وهيساعدك جدا جدا وانت شغال
وانا شايف ان دي برضو مهمة الناس اللي بتشرح انه لما ييجي يشرح حاجة يبدأ من المشكلة ويشرح ازاي يفكر ويوصل للحل
Web Development Code
انزلكم مسائل JavaScript
ياريت الكل يجاوب 🙏
السلام عليكم..
انهارده بوست خفيف كده لحل مسأله ف جافاسكربت وهو عباره عن ان تقوم بإنشاء داله تأخذ بارميتر استرينج اي اسم مثلا nour وتقوم بإرجاع قيمه بالبينري ال 01
function convert2Binary(string){
}
هكذا نستدعي الداله مثلا
convert2Binary("nour")
يكون الناتج هكذا:
1101110 1101111 1110101 1110010
سيب اجابتك في الجروب 👇
@codedevchat
#js
انهارده بوست خفيف كده لحل مسأله ف جافاسكربت وهو عباره عن ان تقوم بإنشاء داله تأخذ بارميتر استرينج اي اسم مثلا nour وتقوم بإرجاع قيمه بالبينري ال 01
function convert2Binary(string){
}
هكذا نستدعي الداله مثلا
convert2Binary("nour")
يكون الناتج هكذا:
1101110 1101111 1110101 1110010
سيب اجابتك في الجروب 👇
@codedevchat
#js
Web Development Code
السلام عليكم.. انهارده بوست خفيف كده لحل مسأله ف جافاسكربت وهو عباره عن ان تقوم بإنشاء داله تأخذ بارميتر استرينج اي اسم مثلا nour وتقوم بإرجاع قيمه بالبينري ال 01 function convert2Binary(string){ } هكذا نستدعي الداله مثلا convert2Binary("nour") يكون…
طبعا من قام بحها بطريقه ال for loop
ويوجد طريقه اخري باستخدام ES
ويوجد طريقه اخري باستخدام ES
Web Development Code
طبعا من قام بحها بطريقه ال for loop ويوجد طريقه اخري باستخدام ES
طريقه الحل بال ES
function strToBinary(str) {
return str.split('')
.map(char => char.charCodeAt(0).toString(2))
.join(' ')
}
strToBinary("nour")
Web Development Code
Photo
السلام عليكم..
هنتكلم النهاردة عن موضوع بنسمع عنه كتير وهو Asynchronous programming وايه افرق بينها وبين synchronous programming
وهنبدأ أول حاجه نعرف مع بعض ايه هيا ال synchronous programming
هيا ببساطة :
synchronous operations tasks are performed one at a time and only when one is completed, the following is unblocked
- هو ده اللي ببساطة؟!
طيب ببساطة اكتر معنى synchronous programming هوا تنفيذ الكود بنفس ترتيب الموجود بيه واذا قابلني اي حاجة بتستهلك وقت مثلا هقف انتظر (هعمل block لباقي الكود من انه يتنفذ) لحد ما تخلص عشان اقدر اوصل للسطر اللي بعد كدا
على سبيل المثال لو استخدمنا وسط الكود عندنا function زي setTimeout في js أو أي function تانيه بتنفذلي حاجة معينه بعد delay زي المثال اللي عندنا ده في حالة لو افترضنا ان JS بتشتغل synchronous (وده مش حقيقي) فاللي هيحصل هوا ان الكود هيوصل عند set time out فيعمل block لباقي الكود عشان ينفذ ما بداخل ال setTimeout وبعد ما يخلص ينزل السطر اللي بعده عشان ينفذ الfunction الللي بعدها وهكذا
عشان نلاقي الترتيب بتاع الخرج هو
say hello world!
time out
end
- تمام ايه بقى النوع التاني واللي هو الasynchronous ؟
تعريف الasynchronous هو
a non-blocking architecture, which means it doesn’t block further execution while one or more operations are in progress
- يعني ايه الكلام ده؟
يعني ببساطة خالص في asynchronous أنا أقدر أتحرك لfunction تانيه وأنفذها قبل ما القديمة تخلص يعني مش هعمل بلوك للكود عند function معينة مستنيها تخلص عشان اقدر اوصل للي بعدها
لا أنا اقدر عادي جدا أي حاجه هتعطلني أقدر بكل سهولة أسيبها وأروح أنفذ اللي بعدها عادي جدا يعني لو أخدنا نفس المثال اللي في الصورة تاني لما الكود يوصل عند setTimeout مش هيقعد مستنيها تخلص عشان ينفذ say hello world ولو حضرتك قرأت المنشور اللي فاتت اللي اتكلمنا فيها عن node js وازاي الكود بيتنفذ هتعرف التفاصيل ورا الموضوع ده أكتر وهتعرف ان الخرج الطبيعي هيكون بالمنظر ده
say hello world!
end
time out
وبس كدا ويارب يكون وضح الفرق بين الasynchronous و الsynchronous بشكل عام
هنتكلم النهاردة عن موضوع بنسمع عنه كتير وهو Asynchronous programming وايه افرق بينها وبين synchronous programming
وهنبدأ أول حاجه نعرف مع بعض ايه هيا ال synchronous programming
هيا ببساطة :
synchronous operations tasks are performed one at a time and only when one is completed, the following is unblocked
- هو ده اللي ببساطة؟!
طيب ببساطة اكتر معنى synchronous programming هوا تنفيذ الكود بنفس ترتيب الموجود بيه واذا قابلني اي حاجة بتستهلك وقت مثلا هقف انتظر (هعمل block لباقي الكود من انه يتنفذ) لحد ما تخلص عشان اقدر اوصل للسطر اللي بعد كدا
على سبيل المثال لو استخدمنا وسط الكود عندنا function زي setTimeout في js أو أي function تانيه بتنفذلي حاجة معينه بعد delay زي المثال اللي عندنا ده في حالة لو افترضنا ان JS بتشتغل synchronous (وده مش حقيقي) فاللي هيحصل هوا ان الكود هيوصل عند set time out فيعمل block لباقي الكود عشان ينفذ ما بداخل ال setTimeout وبعد ما يخلص ينزل السطر اللي بعده عشان ينفذ الfunction الللي بعدها وهكذا
عشان نلاقي الترتيب بتاع الخرج هو
say hello world!
time out
end
- تمام ايه بقى النوع التاني واللي هو الasynchronous ؟
تعريف الasynchronous هو
a non-blocking architecture, which means it doesn’t block further execution while one or more operations are in progress
- يعني ايه الكلام ده؟
يعني ببساطة خالص في asynchronous أنا أقدر أتحرك لfunction تانيه وأنفذها قبل ما القديمة تخلص يعني مش هعمل بلوك للكود عند function معينة مستنيها تخلص عشان اقدر اوصل للي بعدها
لا أنا اقدر عادي جدا أي حاجه هتعطلني أقدر بكل سهولة أسيبها وأروح أنفذ اللي بعدها عادي جدا يعني لو أخدنا نفس المثال اللي في الصورة تاني لما الكود يوصل عند setTimeout مش هيقعد مستنيها تخلص عشان ينفذ say hello world ولو حضرتك قرأت المنشور اللي فاتت اللي اتكلمنا فيها عن node js وازاي الكود بيتنفذ هتعرف التفاصيل ورا الموضوع ده أكتر وهتعرف ان الخرج الطبيعي هيكون بالمنظر ده
say hello world!
end
time out
وبس كدا ويارب يكون وضح الفرق بين الasynchronous و الsynchronous بشكل عام
السلام عليكم..
مسأله ب JavaScript
انشاء فانكشن مثل هذه
تأخد بارميتر رقم وتزود عليه واحد يعني يكون هكذا عند استدعاء الفانكشن
addition(0) ➞ 1
لم نبعتله 0 يرجعلنا 1
addition(9) ➞ 10
addition(-3) ➞ -2
لم نبعتله -3 يرجعلنا -2
مسأله ب JavaScript
انشاء فانكشن مثل هذه
function addition(num) {
}
تأخد بارميتر رقم وتزود عليه واحد يعني يكون هكذا عند استدعاء الفانكشن
addition(0) ➞ 1
لم نبعتله 0 يرجعلنا 1
addition(9) ➞ 10
addition(-3) ➞ -2
لم نبعتله -3 يرجعلنا -2
مساله اخري انشاء فانكشن لم نبعتله array يرجع لنا اول قيمه له
يكون الناتج هكذا
getFirstValue([1, 2, 3]) ➞ 1
getFirstValue([80, 5, 100]) ➞ 80
function getFirstValue(arr) {
}
يكون الناتج هكذا
getFirstValue([1, 2, 3]) ➞ 1
getFirstValue([80, 5, 100]) ➞ 80
مساله اخري
عندنا فانكشن اسمه countTrue بيعدلنا عدد ال true فال array كمثال
هذه الفانكشن بنبعت ليها بارميتر Array
countTrue([true, false, false, true, false]) ➞ 2
هنا رجع عدد ال True الي هو 2
countTrue([false, false, false, false]) ➞ 0
هنا رجع صفر لان مفيش True
countTrue([]) ➞ 0
وهنا رجع صفر لان الاراري فارغه
عندنا فانكشن اسمه countTrue بيعدلنا عدد ال true فال array كمثال
function countTrue(arr) {
}
هذه الفانكشن بنبعت ليها بارميتر Array
countTrue([true, false, false, true, false]) ➞ 2
هنا رجع عدد ال True الي هو 2
countTrue([false, false, false, false]) ➞ 0
هنا رجع صفر لان مفيش True
countTrue([]) ➞ 0
وهنا رجع صفر لان الاراري فارغه
Web Development Code
مساله اخري عندنا فانكشن اسمه countTrue بيعدلنا عدد ال true فال array كمثال function countTrue(arr) { } هذه الفانكشن بنبعت ليها بارميتر Array countTrue([true, false, false, true, false]) ➞ 2 هنا رجع عدد ال True الي هو 2 countTrue([false, false, false…
محدش جاوب ع حاجه معتش انزل يعني ؟؟؟