-
المساهمات
19870 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
475
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
لاحظ أنك لم تم برفع النسخة التي تم تحزيمها من المشروع هنا في المستودع: https://github.com/Ahmed-ALfadaly/travel.github.io بل قمت برفع الكود المصدري، يجب تحزيم المشروع من خلال npm run build، ثم رفع مجلد build أو dist أو public أيًا كان اسمه في مستودع منفصل أو في فرع branch منفصل في نفس المستودع بجانب الكود االمصدري الذي يوجد في فرع main. والأسهل رفع مشاريعك على netlify حيث تستطيع رفع مجلد المشروع الذي تم تحزيمه مباشرًة إلى الاستضافة وسيتم توفير رابط لك، أو تستطيع رفع المشروع من خلال إختيار مستودع github.
- 4 اجابة
-
- 1
-
-
المشكلة ناتجة من وجود قيمة padding غير صحيحة لقسم history حيث كتبت: padding: 50px auto; وقيمة auto غير صحيحة، حيث نستخدمها مع الـ margin لكي يتم وضع إزاحة في المساحة الفارغة بشكل تلقائي. بينما الـ padding يجب تحديد قيمة، كالتالي: padding: 50px
- 1 جواب
-
- 1
-
-
بالطبع، فمثلاً تستخدم محركات البحث مثل Google و Bing خوارزميات البحث لمطابقة استفسارات المستخدم مع صفحات الويب ذات الصلة، وتتضمن خوارزميات البحث خوارزميات البحث الخطي و Binary Search وخوارزميات أكثر تعقيدًا مثل PageRank. أيضًا تعتمد مواقع التجارة الإلكترونية مثل Amazon و eBay خوارزميات البحث لمساعدة العملاء في العثور على المنتجات التي يبحثون عنها، حيث تتضمن خوارزميات البحث الخطي و Binary Search وخوارزميات تصفية البيانات. وتستخدم تطبيقات الوسائط الاجتماعية مثل Facebook و Twitter خوارزميات البحث للعثور على الأشخاص والمحتوى ذي الصلة. أيضًا تطبيقات الخرائط مثل Google Maps و Apple Maps تعتمد على خوارزميات البحث للعثور على المواقع والشركات.
- 4 اجابة
-
- 1
-
-
دائمًا ما أنصح بذلك، والتطبيق مع الشرح مفيد في البداية، لكن الاستفادة الحقيقية تكمن عندما تكتب الكود بنفسك وتحاول تغيير أجزاء منه بناءًا على استيعابك للكود، حيث أنّ التطبيق مع الشرح فقط يمنعك من التفكير بنسبة معينة لأنك تعتمد على شرح يوضح الأمر لك خطوة بخطوة، لكن عند كتابة الكود بمفردك ينصب تركيزك على الكود والمنطق البرمجي ويتم استرجاع ما قمت بتعلمه سابقًا عند التفكير في تنفيذ أمر معين ويتم ربط الأمور ببعضها. لذا تستطيع تنفيذ مشروع بنفس الفكرة ونفس المميزات أو مع ميزات َإضافية وتصميم مختلف، والتصميم من الأفضل تقليده في البداية لحين تكوين فكرة عن التصميم وستجد مصادر هنا:
-
أنت بحاجة إلى الجمع ما بين HTML, CSS لتنفيذ ذلك، حيث نقوم بإنشاء عنصر <div> يحتوي على الصورة والنص وتعيين خاصية position: absolute للعنصر النصي بجانب خاصية opacity: 0 لإخفائه وتلك الخاصية مهمة لكي يتم إظهاره وعمل animation أثناء الظهور فهي الخاصية الوحيدة التي تسمح لنا بذلك عند عمل hover على النص. كالتالي: <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> .img-container { position: relative; text-align: center; color: white; width: 400px; height: 400px } .centered { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); backdrop-filter: blur(4px); color: black; font-size: 24px; opacity: 0; transition: opacity 0.2s ease-in-out; } .img-container:hover .centered{ opacity: 1 } </style> </head> <body> <div class="img-container"> <img src="https://placehold.co/400x400" alt="Snow" style="width:100%;"> <div class="centered">Centered</div> </div> </body> </html>
-
بالضبط: {"iphone": 10, "mac": 5}
- 13 اجابة
-
- 1
-
-
المعاملات الممرة هي: stock: قاموس يمثل البضائع الموجودة في المخزون (قاموس) merch: اسم البضائع التي يريد العميل شرائها (نص) n: عدد وحدات البضائع التي يريد العميل شرائها (رقم)
- 13 اجابة
-
- 1
-
-
يقتصر الكود لديك على التحقق من كون stock ليس None وأن n أكبر من أو يساوي 1، ولا يتحقق من وجود البضاعة المطلوبة (merch) في قاموس المخزون (stock) أو ما إذا كانت الكمية المتاحة كافية. والمشكلة البرمجية تتطلب الوصول إلى قاموس stock لمعرفة ما إذا كان مفتاح merch موجودًا ثم يجب مقارنة القيمة المرتبطة بذلك المفتاح (الكمية المتاحة) مع الكمية المطلوبة (n). لذا المشكلة لديك هي في عدم تمرير القاموس dictionary كمعامل أول وهو stock حيث أنك تقوم بتمرير نص وليس قاموس. بينما المعامل الثاني هو نص وهو اسم المنتج لا مشكلة في ذلك.
- 13 اجابة
-
- 1
-
-
عليك تعلم الأساسيات، أي البدء بالمعادلة المحاسبية، القيود المحاسبية، الحسابات، دفتر اليومية، الأستاذ العام، ميزانية العمليات، قائمة الدخل، الميزانية العمومية وقائمة التدفقات النقدية. بعد ذلك عليكِ تحديد ما هو التخصص المحاسبي الذي تريدي التخصص به، مثل محاسبة الضرائب، المراجعة المحاسبية، المحاسبة الإدارة أو محاسبة التكاليف وغيرهم. لذا كبداية اتجهي إلى اليوتيوب وابحثي عن "تعلم المحاسبة" وستجدي قناة جيدة باسم محاسبة أونلاين وبها قائمة مكونة من 136 درس لشرح الأساسيات.
-
الرابط الصحيح للمستودع لديك هو التالي: https://github.com/Ahmed-ALfadaly/Travel_Agency.github.io لذا عليك تعديل الرابط من خلال التالي: git remote set-url origin https://github.com/Ahmed-ALfadaly/Travel_Agency.github.io ثم تنفيذ الأوامر الأخرى.
- 2 اجابة
-
- 1
-
-
تقصد دورة علوم الحاسوب؟ لم يتم شرح النظام الثنائي بها، وأقرب درس إلى ذلك هو درس ترميز البيانات Data Encoding في مسار التعامل مع البيانات. ويتوفر في الأكاديمية دروس نصية حول النظام الثنائي: التحويل من النظام العشري إلى النظام الثنائي
- 2 اجابة
-
- 1
-
-
None و Null مفهومان متشابهان لكنهما يختلفان في بعض النقاط، حيث أنّ None هي قيمة خاصة تشير إلى عدم وجود قيمة في كود بايثون أي للمتغيرات مثلاً، بينما Null تشير إلى عدم وجود قيمة في قاعدة بيانات. اي أنّ None هي قيمة بحد ذاتها أي نوع بيانات (كائن) ولكنها فارغة ويتم التعرف عليها في بايثون، بينما Null لا يتم التعرف عليها في كود بايثون، لاحظ التالي: # None x = None print(x) # None # Null y = Null # خطأ print(y) # 'Null' is not defined وتستطيع تعيين None لأي متغير من أي نوع، بينما Null نستخدمه في بايثون لتمثيل قيمة فارغة في قاعدة بيانات. ولاحظ أنّ None هي قيمة أي نسند قيمة فارغة بالتالي المتغير مثلاً يتم تعريفه، بالتالي الأمر لا يعني أن المتغير غير معرف undefined، للتوضيح: # سيؤدي هذا إلى خطأ NameError print(my_name) # my_name غير معرف وبشكل بسيط مفهوم Null غير موجود في بايثون لكن موجود في لغات برمجة أخرى مثل جافاسكريبت و Java وغيرهم.
- 3 اجابة
-
- 1
-
-
لغة C صعبة بالطبع ولا أنصحك بها كبداية ولا حتى C++، لا مشكلة في تجربة التعلم من خلالهم، لكن في حال وجدت صعوبة بعدما حاولت بحيث تصيبك بالإحباط، فانتقل إلى لغة بايثون حيث يوجد C50 من خلال لغة بايثون ابحث عن CS50 PYTHON على اليوتيوب. والفكرة أنّ بايثون وجافاسكريبت مثلاً لغات سهلة وعالية المستوى (أي بها تجريد كثير للأمور التي تحدث في الخلفية أي تخفيها عنك) وبايثون أسهل، الأمر الذي يساعدك على تعلم المفاهيم البرمجية دونّ إضافة عبء صعوبة تعلم اللغة البرمجية نفسها. ودائمًا ستجد أن يتم النُصح بالبدء بلغة قوية مثل C++ لكن النصيحة بدون معرفة الشخص نفسه وخبراته أمر غير صحيح، فالبعض يناسبهم ذلك والبعض لا يناسبهم وقد يضرهم ذلك، وبعد تعلم اللغة البرمجية الأولى من خلال لغة سهلة واستيعاب المفاهيم البرمجية ستجد أنّ تعلم c++ أصبح أسهل.
- 7 اجابة
-
- 1
-
-
بالنسبة كود اللون الذهبي، فإليك الصيغ المختلفة له: HEX: #FFD700 RGB: 255, 215, 0 CMYK: 0, 16, 100, 0 كود لون دم غزال: HTML: #B76E79 RGB: 183, 110, 121 CMYK: 0, 32, 30, 29 وانبته إلى أنه قد تختلف درجات اللون قليلاً على الشاشات المختلفة. ويمكنك تفقد أكواد الألوان من خلال الأداة التالية: https://coolors.co
-
طالما أنك ذكرت العمل الحر، فيعني أنه يجب تعلم إطار للواجهة الأمامية مثل Vue.js وهو الأسهل لتوافقه مع لارافل، لكن الأكثر استخدامًا هو React.js. وفي حال تعلمك أي إطار منهم (React هي مكتبة) سيسهل عليك تعلم أي إطار آخر فالفكرة واحدة ونفس المنطق بإختلاف الـ Syntax فقط. لذا تفقد المشاريع وما هو الإطار المطلوب بكثرة ثم تعلمه. وبالطبع يوجد مشاريع لا يتم بها استخدام إطار للواجهة الأمامية، لكن تلك نقطة أفضلية لك في حال امتلكت تلك المهارة لتتميز، وتوفر خدمات أفضل لعملائك، أيضًا المشروع ستزداد جودته بشكل كبير في حال تم استخدام إطار للواجهة.
- 4 اجابة
-
- 1
-
-
مرحبًا بك في أي وقت، الأمور المالية تستطيع مناقشتها من خلال مركز المساعدة، أرجو التحدث إليهم وسيتم مساعدتك بذلك الشأن إن أمكن. وعامًة من وقت لآخر يوجد عروض مثل اشتري دورتين بسعر دورة واحدة. ويتم توفير عروض في المناسبات مثل رمضان وأحيانًا في فترة الإجازات الصيفية وأحيانًا في فترة التخفيضات السنوية الخاصة بالجمعة البيضاء، وفي بعض الأحيان يتم توفير كوبونات.
-
لنقم أولاً بالتأكد من أنك قمت بالخطوات الصحيحة للتحويل إلى APK، وفي البداية علينا تثبيت الحزم اللازمة: pip install buildozer pip install cython==0.29.19 ثم: sudo apt-get install -y \ python3-pip \ build-essential \ git \ python3 \ python3-dev \ ffmpeg \ libsdl2-dev \ libsdl2-image-dev \ libsdl2-mixer-dev \ libsdl2-ttf-dev \ libportmidi-dev \ libswscale-dev \ libavformat-dev \ libavcodec-dev \ zlib1g-dev ثم: sudo apt-get install -y \ libgstreamer1.0 \ gstreamer1.0-plugins-base \ gstreamer1.0-plugins-good ثم: sudo apt-get install build-essential libsqlite3-dev sqlite3 bzip2 libbz2-dev zlib1g-dev libssl-dev openssl libgdbm-dev libgdbm-compat-dev liblzma-dev libreadline-dev libncursesw5-dev libffi-dev uuid-dev libffi6 ثم: sudo apt-get install libffi-dev بعد ذلك: buildozer init buildozer -v android debug buildozer android clean
-
إذا أردت رأي، سواء بتلك الأداة أو غيرها، سيتم استبدال من وظيفتهم كتابة كود فقط بدون فهم عميق للأساسيات وللتقنيات التي يستخدمها وكيفية توظيفها في الحالات المناسبة، المستقبل القريب يتجه نحو ذلك، لذا لا يعني الأمر أن تتوقف عن تعلم البرمجة بل على العكس المجال مطلوب، لكن لم يعد يصلح أن تتعلم الأمور بشكل سطحي بل يجب أن تصبح Software Engineer وليس مجرد مبرمج يكتب الأكواد.
- 7 اجابة
-
- 1
-
-
فكر بالأمر على أنّ التعبير النمطي يبحث عن نمط معين بالسلسلة النصية، والنمط لديك موجود لذا يرجع True، لكن لماذا؟ لأن \D يشير إلى جميع الأحرف باستثناء الأرقام، لكنه يُستخدم مع المشغل +، مما يجعل الأمر مختلفًا. فتعبير \D+.* يبحث عن مجموعة واحدة أو أكثر من أي حرف باستثناء الأرقام، متبوعًا بأي عدد من الأحرف (.*). لذا، فهو يتطابق مع أي بريد إلكتروني يبدأ بأي حرف باستثناء رقم، ثم يتبعه أي عدد من الأحرف، ثم @، ثم أي حرف باستثناء رقم، ثم يتبعه أي عدد من الأحرف، ثم .، ثم أي حرفين على الأقل (لأن \w يطابق أي حرف أو رقم أو سطر سفلي). في email، يتطابق التعبير مع "43ffdfsdf" (الحرف الأول ليس رقمًا، ثم يتبعه أي عدد من الأحرف) و "gmail" (أي حرف باستثناء رقم، ثم يتبعه أي عدد من الأحرف) و "com" (حرفين على الأقل). بالتالي، فإن p.test(email) يُرجع true لأن التعبير \D+.* يطابق البريد الإلكتروني "43ffdfsdf@gmail.com". من الأفضل استخدام regex101.com لإختبار النمط، أدخل التعبير \D+.* وقم بتجربته مع مختلف عناوين البريد الإلكتروني. وفي حال تريد التأكد من أن البريد الإلكتروني لا يبدأ برقم، فنستخدم التعبير التالي: let p = /^[^0-9].*@\S+\.\w{2,}$/i; وهو يتطابق مع أي بريد إلكتروني، يتصف بالتالي: لا يبدأ برقم (^[^0-9]) يحتوي على @ لا يحتوي على مسافات بيضاء (/\S+/) ينتهي بـ . وحرفين على الأقل (\w{2,}) لذا النمط التالي سيرجع نتيجة Flase: let p = /^[^0-9].*@\S+\.\w{2,}$/i; let email = "43ffdfsdf@gmail.com"; console.log(p.test(email)); // false
- 4 اجابة
-
- 1
-
