-
المساهمات
1588 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
1
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Khaled Osama3
-
في جافاسكريبت، Hoisting يعني أن تعريفات الدوال (functions) والإعلانات عن المتغيرات (variables declared with var) يتم رفعها إلى أعلى نطاقها (scope) قبل تنفيذ الكود. هذا لا يعني أن الكود يتم نقله فعليًا إلى الأعلى، بل يعني أن البيئة التنفيذية لجافاسكريبت تتعامل مع هذه الإعلانات كأنها موجودة في الأعلى. تخيل أنك في فصل دراسي، ولديك قائمة بأسماء الطلاب الذين يجب أن يقدموا عرضًا اليوم. عندما يبدأ اليوم الدراسي، يكتب المعلم أسماء الطلاب الذين سيقدمون على السبورة حتى قبل أن يبدأوا في العرض. هذا يعني أن الجميع في الفصل يعرف من سيقدم حتى قبل أن يحين دورهم. في عالم البرمجة، هذه العملية تشبه "Hoisting". في JavaScript، "Hoisting" هو سلوك يتم بموجبه "رفع" تعريفات الدوال (functions) والمتغيرات (variables) إلى أعلى النطاق الذي تم تعريفها فيه، وذلك قبل تنفيذ أي كود. هذا يعني أنه يمكنك استدعاء دالة أو استخدام متغير قبل أن يتم تعريفه في الكود. console.log(x); // undefined var x = 5; console.log(x); // 5 في المثال أعلاه، عندما نحاول طباعة قيمة x قبل تعريفه، لا نحصل على خطأ، بل نحصل على قيمة undefined. هذا لأن المتغير x تم "رفعه" إلى الأعلى، لكن دون تعيين قيمة له بعد. فقط عندما نصل إلى السطر الذي يعرّف x ويعطيه قيمة، يمكن استخدام هذه القيمة. مهم أن نعرف أن "Hoisting" يعمل بشكل مختلف قليلًا بين الدوال والمتغيرات. للدوال، يتم رفع تعريف الدالة بأكمله، مما يعني أنه يمكن استدعاء الدالة حتى قبل تعريفها في الكود sayHello(); function sayHello() { console.log("مرحباً!"); } هنا، حتى وإن تم استدعاء sayHello() قبل تعريفها، البرنامج يعمل دون مشكلة ويطبع "مرحباً!". لكن بالنسبة للمتغيرات المعرفة باستخدام let أو const، فإن "Hoisting" لا يعمل بنفس الطريقة؛ يتم رفع المتغير لكن لا يمكن استخدامه قبل تعريفه console.log(y); // ReferenceError: y is not defined let y = 5; في هذا المثال، محاولة استخدام y قبل تعريفه تؤدي إلى خطأ. النقطة الرئيسية هي أن "Hoisting" يجعل بعض الأجزاء من الكود متاحة للاستخدام قبل أن يتم تنفيذ سطورها فعليًا، ولكن يجب استخدامها بحكمة لتجنب الارتباك أو الأخطاء غير المتوقعة في البرنامج.
-
نعم، يمكنك الاعتماد على Flexbox (الفليكس) دون الحاجة إلى Grid (الشبكة) في الكثير من حالات التصميم في CSS. Flexbox (الفليكس) هو طريقة لترتيب العناصر في صف واحد أو عمود واحد. يتيح لك التحكم بسهولة في توزيع المساحة بين العناصر وتوجيهها (أفقيًا أو عموديًا). ولكن يفضل استخدامه عندما يكون لديك تخطيط يتطلب ترتيب العناصر في خط مستقيم (سواء كان ذلك خطًا أفقيًا أو عموديًا)، مثل شريط التنقل، أو عندما تحتاج إلى محاذاة العناصر بطريقة معينة داخل الحاوية. Grid (الشبكة) هو طريقة لترتيب العناصر في شبكة متعددة الأعمدة والصفوف. يوفر تحكمًا دقيقًا في تخطيط العناصر على الصفحة بالنسبة للأعمدة والصفوف. ولكن يفضل استخدامه عندما تحتاج إلى ترتيب العناصر في تخطيط يشبه الشبكة، مثل معرض الصور أو لوحة المعلومات، حيث تحتاج إلى التحكم في توزيع العناصر عبر صفوف وأعمدة متعددة. ولكن يمكن الاعتماد على الفليكس دون الشبكة. Flexbox قادر على التعامل مع الكثير من التصميمات والتخطيطات التي تحتاجها في معظم المواقع. ومع ذلك، قد تجد في بعض الحالات الخاصة أن استخدام Grid يمكن أن يجعل الأمور أسهل، خصوصًا عند التعامل مع تخطيطات معقدة تتطلب التحكم في العديد من العناصر في شبكة متعددة الأبعاد. باختصار يمكنك استخدم الفليكس عندما تحتاج إلى تخطيط بسيط ومرن للعناصر في صف أو عمود. واستخدم الشبكة لتخطيطات أكثر تعقيدًا تتطلب التحكم في توزيع العناصر في صفوف وأعمدة متعددة. اختار الأداة المناسبة للمشكلة التي تواجهها. ولكن إذا وجدت راحتك في استخدام Flexbox ويمكنها تلبية احتياجات تصميمك، فمن الممكن جدًا الاعتماد عليها في معظم الأحيان.
-
اذا كنت تريد استخدام دالة IFبطريقة تتيح لك التحقق من عدة احتمالات يمكنك استخدام دالة IF المدمجة مع دالة CHOOSE. مثال : =IF(A1="أ", 300, IF(A1="ب", 600, IF(A1="ج", 200, "قيمة غير صحيحة")))
- 3 اجابة
-
- 1
-
للبحث بين تاريخين يمكنك استخدام where وهذا مثال عليه: DateTime startDate = // تعيين التاريخ البداية هنا; DateTime endDate = // تعيين التاريخ النهاية هنا; dataGridView1.DataSource = db.TBL_ACCOUNTONG_EMP .Where(x => x.ACCOUNTING_EMP_NAME.Contains(txtname.Text) && x.YourDateColumn >= startDate && x.YourDateColumn <= endDate) .ToList(); وللبحث باستخدام تاريخ : DateTime searchDate = // تعيين التاريخ المطلوب هنا; dataGridView1.DataSource = db.TBL_ACCOUNTONG_EMP .Where(x => x.ACCOUNTING_EMP_NAME.Contains(txtname.Text) && x.YourDateColumn == searchDate) .ToList();
- 2 اجابة
-
- 1
-
المشكلة التي تواجهها قد تكون متعلقة بسلوك إرسال النموذج، مما قد يؤدي إلى إعادة تحميل الصفحة ومسح محتوى عنصر <h4> الذي يحمل معرّف "the-message". كل ما عليك هو وقف السلوك التلقائى للنموذج عن طريق تعديل ملف الmain.js كالتالى: const writing = document.getElementById("message-input") function getMessage(event) { event.preventDefault(); document.getElementById("the-message").innerHTML = writing.value writing.value = ""; } وتعديل فى ملف index.html كالتالى : <button class="submit" onclick="getMessage(event)"> Submit </button> <h4 id="the-message" style="text-align: center;"></h4>
- 3 اجابة
-
- 2
-
قد تبدو المشكلة لديك فى الفاصل(delimiter) بين العناصر فى ال JSON. تأكد من أنك قبل ارسال البيانات أنه ليس هناك أى delimiter زيادة فى آخر ال JSON مثل: "username":"Ahmed", "age":25,//هنا يوجد فاصلة وانك واضع بين كل عنصر لديك فى ال JSON فاصل (delimiter). "username":"Ahmed" //هنا ناقصة فاصلة "age":25
-
قم بارسال الكود كامل
-
1. قم بإنشاء virtualenv جديد باستخدام الأمر: python3 -m venv myenv 2. تفعيل الـ virtualenv: في Windows .\myenv\Scripts\activate في macOS/Linux: source myenv/bin/activate 3. تثبيت مكتبة Requests داخلها: pip install requests يمكنك التحقق من تثبيت مكتبة requests بشكل صحيح عن طريق تشغيل الأمر: pip list يجب أن ترى requests ضمن القائمة المعروضة. 6. أنشئ ملف py واستدع مكتبة Requests: import requests وهكذا سيتم تركيب Requests على venv فقط دون المؤثر على بيئة Python الأساسية.
- 1 جواب
-
- 1
-
قم بتجربة الحل الذى ارسلته.
-
الملف الذى ارسلته ناقص لا يمكن فتحه ، ارسل الكود فقط الموجود داخله. قد تبدو المشكلة انك لا ترسل المسار الخاص بالملف الذى تريد ان تقرأ منه او تكتب عليه وهذا مثال يوضح الحل ببساطة. #include <iostream> #include <fstream> using namespace std; int main() { fstream myFile; string data; myFile.open("D:\\files\\test.TXT",ios::out| ios::app); cout<<myFile.is_open(); myFile>>data; cout<<data; return 0; }
-
ارسل الكود البرمجي كامل.
-
جرب هذه الصيغة cd mongo ويرجى السؤال أسفل الفيديو لكى استطيع مساعدتك أكثر.
-
تراكيب البيانات هي طريقة تنظيم وتخزين البيانات في الحواسيب ويكون ذلك التخزين فى ذاكرة الوصول العشوائي (memory)تشمل هذه التراكيب أنواع مختلفة مثلما ذكرت فى سؤالك مثل list و ال sets وغيرها. أما SQL فهى لغة برمجة خاصة بإدارة و استعلام قواعد البيانات العلاقية وتخزينها يكون دائما على ال hard disk. كل موضوع منهم ليس له علاقة بالآخر، فهما شيئين مختلفين عن بعضهما.
- 4 اجابة
-
- 2
-
اذا بدأت فى كورس تعلم الآلة سوف تدرس كل تلك المكتبات التى ذكرتها، فليس هناك داعى لتعلمها الآن.
- 3 اجابة
-
- 1
-
يمكنك استخدام الداله filter() التي تستخدم لتصفية عناصر المصفوفة واسترجاع عناصر معينة تحقق شرط ما. تأخذ filter() دالة ك callback. هذه الدالة تتلقى كل عنصر من المصفوفة ويجب ان تعيد true أو false. إذا رجعت true يتم إضافة العنصر إلى مصفوفة جديدة. إذا رجعت false لا يتم إضافته. النتيجة هي مصفوفة جديدة تحتوي على العناصر التي تحقق الشرط. مثال: const numbers = [1,2,3,4]; const filtered = numbers.filter(num => { return num > 2; }); // filtered is [3,4] في هذا المثال تم تصفية الأعداد الأكبر من 2 باستخدام filter(). ويمكنك ان تفعل مثل هذا المثال لتصفيه كل الاسماء التي تبدأ بحرف ال "A" let friends = ["Ahmed", "Sayed", "Eman", "Mahmoud", "Ameer", "Osama", "Sameh"]; let letter = "a"; let filteredFriends = friends.filter(name => { return !name.startsWith(letter); }); تم استبعاد الأسماء التي تبدأ بحرف 'A' بواسطة !name.startsWith(letter). يمكنك التعمق اكثر من هنا
-
انت بحاجة إلى معرفة ال session وكيفية عملها وبعدها يمكنك التفكير فى تطبيق عملى تستطيع تنفيذ ما تعلمته فيه. ال session موضوع طويل شوية بس مستخدم بكثرة وهو سهل التعلم ولكن ال jwt مستخدم أكثر. ويجب عليك التركيز حاليا فى تعلم شئ واحد حتى لا تصاب بالتشتت ومن ثم الانتقال الى الموضوع الآخر.
- 3 اجابة
-
- 1
-
هناك طريقتين لعمل authorization أما عن طريق الtoken أو عن طريق ال session وعند استخدام ال session يمكنك الاستغناء عن ال headers وسوف تستخدم حاجة اسمها cookies ولن تحتاج لإرسالها سواء فى ال body أو ال headers لأنها ستكون محفوظة عند المستخدم فى الجهاز. وأما عن استخدام postman فى حالة الاستغناء عن ال jwt token واستخدام ال session فيمكنك استخدامه أيضا فى تحقيق الاتصال.
- 3 اجابة
-
- 1
-
ليس هناك فرق جوهرة بينهم ، لكن مهندس البرمجيات بيكون متعمق اكتب فى علوم الكمبيوتر ويكون لديه معرفة أكثر فى فروع مختلفة من مطور البرمجيات (دعنا نقل انه ملم أكثر ). ومطور البرمجيات والمبرمج ليس هناك فرق بينهم. وأما بالنسبة للأفضل، فليس هناك تفضيل بينهم، فقط ادرس جيدا وتعلم أكثر وستكون ذو مكانة عالية فى مجال البرمجيات ولن يفرق المسمى عندها.
- 3 اجابة
-
- 1
-
تعلم المفاهيم الهندسية والرياضية مهم جدا لأى مجال ، تعلمها سوف يساعدك على تطوير مستواك وسيساعدك على التعمق اكتر فى اى مجال دون وجود صعوبات لأن المفاهيم الرياضية والهندسية هى اساس البرمجة.
- 5 اجابة
-
- 1
-
الخطأ 404 يعني أن الصفحة غير موجودة في تطبيقك. عنوان URL الذي تم استخدامه (http://127.0.0.1:8000/) هو الصفحة الرئيسية، ولكنك لم تقم بتحديد أي محتوى لهذه الصفحة في ملف urls.py. يجب أن يحدد URLs بشكل صحيح لكل صفحة. يمكنك إضافة urlpattern للصفحة الرئيسية في ملف urls.py الرئيسي. يجب إضافة path('', views.home_view), وانشاء ملف views.py from django.http import HttpResponse def home_view(request): return HttpResponse("Welcome Home Page") بهذا سيتم عرض "Welcome Home Page" عند زيارة http://127.0.0.1:8000
-
فيما يخص افضل برنامج لتطوير الواجهات الأمامية (UI/UX Design)، فإن كل من Figma و Adobe XD هما من أفضل الخيارات المتاحة. اليك مميزات كل منهما Figma: متاح مجانًا وبسعر مرن للاستخدام التجاري. يتيح العمل التعاوني ومشاركة الملفات بشكل سلس. يدعم عدة منصات مثل ويندوز وماك وios وأندرويد. ملفاته خفيفة الوزن وسهلة المشاركة. أدوات تصميم قوية للرسومات والتصاميم والتصميم المرئي. مكتبة واسعة من مكونات التصميم الجاهزة. Adobe XD: متاح مجانًا للاستخدام الشخصي. يعتبر الأفضل لتصميم واجهات الهواتف الذكية والتصميم التوصيفي. دعم أفضل للعمل مع برنامج Photoshop. مدعوم بقوة من شركة أدوبي العملاقة. أدواته لتصميم الواجهات الأمامية والتفاعلية أكثر تقدما. ترابط أفضل مع بقية تطبيقات أدوبي. دعم جيد لتصميم مختلف الأحجام والشاشات. لذا فإن اختيار البرنامج يعتمد بشكل رئيسي على نوع المشاريع وطبيعة العمل واحتياجات فريق العمل. بشكل عام، إذا كنت تركز على التصميمات للهواتف والواجهات التوصيفية، فإن Adobe XD هو الأفضل. أما إذا كان التركيز على التعاون والعمل الجماعي، فإن Figma من أفضل الخيارات. ولكن نظرا لخبرتك المتوسطة في مجال تطوير الواجهات الأمامية، فإنه من الأفضل أن تبدأ باستخدام Figma لأنه مجاني الاستخدام، فلن تتكبد أي تكاليف. سهل التعلم والبدء به بسرعة. يحتوي على العديد من الدروس والتوثيقات والفيديوهات التعليمية على الانترنت. منصة سحابية تتيح لك العمل على أي جهاز. ملائم للعمل الفردي أو التعاوني مع فريق صغير. ستتعلم الأساسيات والمهارات اللازمة للتصميم بشكل جيد. بمجرد اكتساب خبرة أكثر، يمكنك تجربة Adobe XD أيضاً لرؤية الفرق. لكن في البداية، سيكون Figma الخيار الأمثل. ركز على تعلم الأساسيات، ثم اجتهد في تطبيق ما تعلمته على مشاريع حقيقية.
- 2 اجابة
-
- 1
-
قد يكون هناك خطأ في طريقة استدعاء دالة notify من داخل الواجهة الأمامية. يجب التأكد من أنها تستدعى بشكل صحيح بعد تحميل الصفحة من الممكن التأكد عن طريق عمل تعقب للكود (trace) حتي تجد اين تقع المشكله بالظبط لتعديل هذا الكود ليصبح console.log(e.response.status === 400)// لتري النتيجه اذا كانت true or false if (e.response.status === 400){ console.log('get in') // يمكنك طباعه اي شئ للتأكد من الكود دخل من الشرط بنجاح notify () } واذا استمرت المشكله يمكنك ارسال الكود لتفقد المشكله
-
بالنسبة لعلوم الرياضيات : يجب أن تكون ملم بعلم ال algebra و ال calculus (لاحظ أنى قولت ملم). ويجب أن تكون على اطلاع بعلم الاحصاء والاحتمالات. وبالنسبة للبرمجة فيجب عليك دراسة. Algorithms و Data structure و database و OOP بجانب إتقانك لمهارة ال problem solving.
- 5 اجابة
-
- 1
-
دعك من كل هذا ولا تشتت نفسك فى مقارنات لن تفيدك ابدا، كل ما يجب عليك حاليا أن تعمل على بناء نفسك جيدا و تتعلم جيدا. وبالنسبة للشغل فكل الناس الذين تراهم ، كلهم بدأوا من الصفر ومع السعى والاستمرارية وصلوا لما هم عليه الآن. وكثير من الشركات تقوم بتعيين ناس بدون شهادات جامعية عادى جدا. ركز فقط على مذاكرتك الآن ولا تنسى أن الرزاق هو الله .
- 3 اجابة
-
- 1