سامح أشرف
-
المساهمات
2934 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
56
إجابات الأسئلة
-
إجابة سامح أشرف سؤال في أخذ رقم من المستخدم ثم طباعه مجموع كل الاعداد من 1 و حتى الرقم المُدخل python كانت الإجابة المقبولة
مرحبًا @Mossad Ashraf
عليك أولًا أن تأخذ الرقم من المستخدم من خلال الدالة input ثم تحويل هذا الرقم من نص '34' على سبيل المثال إلى رقم عن طريق الدالة int والتي ستحول النص المدخل إلى رقم بعد ذلك عمل حلقة for تبدأ من واحد وتنتهي إلى الرقم المدخل من قِبل المستخدم بهذا الشكل # تم تخزين الرقم المدخل في المتغير x for i in range(1, x): print(i) عليك أن تتأكد أيضًا من أن المستخدم قد أدخل رقم صحيح وليس أي حروف أو رموز أخرى من خلال جملة try except كالتالي:
try: x = int(x) except ValueError: print('برجاء إدخال رقم صحيح')
-
إجابة سامح أشرف سؤال في links iframe كانت الإجابة المقبولة
مرحباً علي
وسم iframe يستخدم لعرض صفحة داخل صفحة أخرى ولا يمكن لأي منهما أن تأثر على الأخرى لأسباب أمنية، حيث يمكن لبعض المخترقين أن يستغلوا مثل هذا الوسم لسرقة المعلومات البنكية أو كلمات المرور.
لذا لا يمكن أن تفتح روابط من داخل الفريم لتظهر في صفحة الموقع الأساسية. بدلاً من ذلك عليك أن تضع السيدبار داخل الصفحة الأساسية بدلاً من وسم iframe.
إن أردت أن تحول المستخدم إلى الرابط الذي يضغط عليه (ويتم إعادة تحميل الصفحة بالكامل وليس وسم iframe فقط) فيمكنك أن تضع وسم base مع الخاصية target في الـ head الخلص بصفحة داخل الفريم كالتالي:
<base target="_parent">
-
إجابة سامح أشرف سؤال في برنامج يطبع الأعداد التي تقبل القسمة على 6 ++C كانت الإجابة المقبولة
مرحبًا Haya
يمكنكي طباعة الأرقام التي تقبل القسمة على 6 (أو أي رقم آخر) بإحدى الطرق التالية:
المرور على كل الأرقام، والتحقق من ناتج عملية باقي القسمة num%6 والذي يجب أن يكون صفرًا في هذه الحالة. الطريقة الأسرع هي تغيير جملة الزيادة في حلقة for لتضيف لمتغير الحلقة num قيمة +6، كالتالي: for(num=6; num>=100; num=num+6) // أو هكذا for(num=6; num>=100; num+=6) بإحدى هذه الطرق ستكون سيتم طباعة الأرقام القابلة للقسمة على 6 فقط
لاحظي أن الطريقة الثانية أفضل وأسرع من الطريقة الأولى لأننا لن نضطر للمرور على كل الأرقام، فعلى سبيل المثال: لطباعة كل الأرقام التي تقبل القسمة على 49 في الأرقام من 1 إلى 10000، بإستخدام الطريقة الأولى سنضطر إلى التأكد من كل رقم من 1 إلى 10000 بينما الطريقة الثانية ستقفز من رقم إلى الذي يليه مباشرة.
-
إجابة سامح أشرف سؤال في لماذا تستخدم Adobe Photoshop في تنفيذ هذه المهمة ؟ كانت الإجابة المقبولة
مرحبًا عبد الواحد
هذه فقط مسألة تعود على البرامج، في الماضي لم يكن هناك برامج مثل Adobe إكس دي أو Figma وبالتالي لم يكن هناك بديل غير الفوتوشوب لكي يعطي المصمم الفدرة على التحكم في كل تفاصيل الموقع أو التطبيق، فأصبح ضروري أن يتقن المصمم التعامل مع الفوتوشوب حينها.
بعد ذلك حاول بعض المصممين أن يقللوا من حجم الموقع من خلال جعل أغلب الصور والأيقونات بإمتداد SVG لذلك حاولوا إستخدام Adobe Illustrator لتصميم المواقع والتطبيقات
ثم في 2010 ظهر برنامج Sketch ليكون أفضل برنامج مختص في تصميم واجهة المستخدم حينها، لكن العيب الأكبر له هو أنه متاح على أجهزة أبل فقط، وبالرغم من إمكانيات البرنامج التي تساعد المصمم على الحصول على أفضل نتيجة إلا أن عدد مستخدمينه لم يكن بالكثير وهذا بسبب أن كثير من المصممين كانوا يعملون على ويندوز بالفعل.
بعد ذلك في 2015 أعلنت شركة Adobe عن برنامجها الخاص بتصميم الواجهات Adobe إكس دي ليصبح من أشهر البرامج والذي يعد الأشهر حتى الآن، أضاف البرنامج مميزات وإضافات عظيمة مثل تحويل التصميم إلى كود مباشرة أو تجربة الـ Animation وغيرها من المميزات.
ظهر بعده بسنة موقع Figma والذي يحتوي على مميزات كثير مثل عمل رابط للتصميم ذاتي التحديث أي يمكن لأي شخص لديه الرابط أن يشاهد ما يقوم به المصمم من تعديلات في الوقت الحقيقي، ومن مميزاته أن Figma يعمل على المتصفح وبالتالي يدعم كل أنواع الأجهزة تقريبًا بغض النظر عن نوع نظام التشغيل Windows, Mac, Linux, Android, iOS
في النهاية البرنامج المستخدم في تصميم الموقع أو التطبيق متوقف على طلب العميل وخبرة المصمم.
-
إجابة سامح أشرف سؤال في ما هو أسرع قالب ووردبريس للسيو والأرباح أيضًا ؟ كانت الإجابة المقبولة
جوجل تعتبر أن المحتوى هو العامل الرئيسي في تحسين سيو الموقع، ومواقع الأخبار تنشر مقالات وأخبار العديد من المرات كل يوم وفي الغالب يعمل على الموقع فريق كامل من محررين وصحفين ومشرفين إلخ، لذلك يكون لديهم محتوى جديد ومنظم وموثوق يوميًا، ما يساعد في تحسين سيو الموقع بشكل كبير.
بالنسبة إلى القالب المستخدم في موقع المزيد هو قالب GeneratePress لديه قالب مجاني وآخر مدفوع سعره $59 سنويًا.
يمكنك معرفة القالب المستخدم من مواقع مثل wpthemedetector
إن أردت قوالب إحترافية يمكنك نصفح أكبر موقع لقوالب ووردبريس وهو Theme Forest أو قم بتعيين مبرمج من مستقل لصناعة قالب جديد (السعر هنا متوقف على المبرمج نفسه)
-
إجابة سامح أشرف سؤال في مكتبات بايثون لا تعمل في جهازي كانت الإجابة المقبولة
تحتاج أن تضيف pip إلى متغير النظام PATH system variable من خلال هذا الأمر:
setx PATH "%PATH%;C:\Python39\Scripts" لكن عليك تغير المسار المثبيت فيه لغة بايثون لديك، ويمكنك أن تعرف مسار بايثون من خلال:
import os, sys print(os.path.dirname(sys.executable)) // C:\\Python39 لا تنسى أن تضيف "\Scripts" في نهاية المسار كما وضحت في أول أمر.
-
إجابة سامح أشرف سؤال في تقييم سعر ميزة معينة كانت الإجابة المقبولة
يمكنك إضافة ميزة التبرع من خلال Patreon مجانًا وبنفسك، فقط عليك إضافة رابط صفحتك على patreon. ولاحظ أن Patreon يأخذ جزء من التبرع كعموله وهي 2.9% + 0.30$ للمبالغ الأكثر من 3$ كما هو موضع في الصورة
مصدر الصورة
بالنسبة للدفع من خلال فيزا أو ماستركارد أو بايبال فستحتاج إلى إستخدام بوابة دفع مثل amazon payment services أو tap أو paytabs وغيرها الكثير ولكل منها مميزاته وعمولته الخاصة.
بالطبع ستحتاج إلى مبرمج ليقوم بربط موقعك أو تطبيقك ببوابة الدفع، وغالبًا سيكلفك المبرمج حوالي 100 - 250 دولار لكن هذا متوقف على المبرمج نفسه. تستطيع تكليف مبرمج محترف للقيام بذلك من خلال منصة مستقل أو البحث عن خدمة مماثلة في خمسات.
-
إجابة سامح أشرف سؤال في تقديم الامتحان كانت الإجابة المقبولة
إن أتممت كل المحتوى الخاص بالدورة، تستطيع التقديم على الامتحان النهائي، وفي حالة إجتيازك للإمحتان إن شاء الله ستحصل على شهادة موثقة ومعتمدة من أكاديمية حسوب بالإضافة إلى وصول مدى الحياة لمحتويات الدورة، وتحديثات مستمرة على الدورة تحصل عليها مجاناً بالمستقبل، ونصائح مخصّصة لك وإرشاد بعد الدورة، وضمان استرداد استثمارك خلال 6 أشهر.
إن كان لديك أي سؤال بخصوص الدورات، طريقة الدفع ... إلخ يمكنك أن تتواصل مع الدعم الفني من خلال فتح تذكرة من هنا
-
إجابة سامح أشرف سؤال في مشكلة في اول برنامج فلاتر كانت الإجابة المقبولة
يدعم Flutter استخدام الحزم المشتركة التي ساهم بها مطورون آخرون. يتيح ذلك إنشاء تطبيق بسرعة دون الحاجة إلى تطوير كل شيء من البداية. لكن تحتاج لتثبيت هذه الحزم أولا، ولفعل ذلك:
- أضف اسم الحزمة وإصدارها إلى ملف pubspec.yaml الخاص بحزمتك:
dependencies: http: ^0.12.2 - ثبت الحزمة من خلال:
1- تنفيذ هذا الأمر في سطر الأوامر
flutter pub get إن لم يعمل معك جرب هذا الأمر:
flutter packages get أو إضغط على زر Get Packages في الجزء الأيمن عند فتح ملف pubspec.yaml في VS Code.
2- أعد تشغيل VS Code وأعد تشغيل التطبيق أيضُا.
ملاحظة: يمكنك البحث عن حزم جديدة من الموقع الرسمي لحزم فلاتر ودارت.
-
إجابة سامح أشرف سؤال في الاستضافات كانت الإجابة المقبولة
إن كنت تقصد بـ "الإستضافة" الخادم وقواعد البيانات، فهذا متوقف على حجم مشروعك والبنية الخاصة به، فقد تدفع ما بين 10 دولارات فقط شهريًا إلى آلاف الدولارات.
بالنسبة لتكلفة رفع التطبيق على متاجر الهواتف:
- جوجل بلاي يحتاج لحساب مطور تكلفته 25$ تدفع مرة واحدة فقط.
- أبل ستور يحتاج لحساب مطور تكلفته 99$ سنويًا.
إن لم تكن تريد دفع هذه التكلفة لشراء حساب مطور، يمكنك البدء برفع تطبيقك على أحد المتاجر المجانية مثل Amazon Appstore أو Mobango
وإن كان تطبيقك مفتوح المصدر، يمكنك أن ترفع على F-Droid
-
إجابة سامح أشرف سؤال في شرح data في javascript كانت الإجابة المقبولة
دالة Fetch عبارة عن Web API تسمح لك بإرسال طلبات HTTP Requests وتقوم بجلب لك نتيجة هذا الطلب، فعلى سبيل المثال:
تريد أن تجلب 10 أسماء أشخاص عشوائية من API معين، لذلك تستخدم هذا الرابط (قم بزيارته في المتصفح لترى النتيجة)، ما تراه في المتصفح هو ما سوف تجلبه لك دالة Fetch ويسمى إجابة الطلب Response.
فإن قمت بكتابة السطر التالي في الـ console:
console.log(fetch('https://namey.muffinlabs.com/name.json?count=10&with_surname=true&frequency=common'));
ستحصل على هذه النتيجة (الصورة الأولى fetch_then_result.png)
هذه النتيجة من نوع Promise وسنرجع لهذا النوع لاحقًا، أما الآن تحتاج لطريقة للحصول على الأسماء من داخل هذه النتيجة، وهنا يأتي دور دالة then، هذه الدالة تسمح لك بالدخول إلى النتيجة من نوع Promise وتستخدمها كما تريد، فإذا قمت بكتابة السطر التالي في الـ console:
console.log(fetch('https://namey.muffinlabs.com/name.json?count=10&with_surname=true&frequency=common').then(function(response) {return response.json()})); ستحصل على هذه النتيجة (الصورة الثانية fetch_result.png) وستجد 10 أسماء عشوائية موجودة في PromiseResult
دالة then تأخذ متغير عبارة عن دالة في حد ذاته، بعد ذلك يتم تمرير إجابة الطلب من نوع Promise إلى هذه الدالة الأخيرة لتقوم بتحويله إلى كود JSON بدلًا من نص عادي String حتى يسهل التعامل معه في باقي الكود، بمجرد أن يتم تحويل الإجابة response إلى كود JSON ترجعه الدالة then الأولى بإستخدام جملة return ويخزن في PromiseResult
لاحظ أنه يمكنك أن تسمي اسم المتغير الممرر إلى الدالة داخل then بأي اسم، مثلًا:
.then(function(something) {return something.json()})); // أو هكذا .then(function(data) {return data.json()}));
لاحظ أيضُا أنه يمكنك أن تستدعي دالة then أكثر من مرة على التوالي:
fetch('https://namey.muffinlabs.com/name.json?count=10&with_surname=true&frequency=common').then(function(response) {return response.json()}).then(function (something){console.log(something)}); وفي كل مرة تأخذ دالة then ما أعادته دالة then التي قبلها، (أنظر الصور الثالثة fetch_then_then_result.png)
قد تتسأل لمذا كل هذا التعقيد، لماذا لا يتم تخزين نتيجة الطلب في متغير مباشرة هكذا:
var x = fetch('https://namey.muffinlabs.com/name.json?count=10&with_surname=true&frequency=common') لتستخدمها بكل سهولة بعد ذلك
للإجابة على ذلك عليك أن ما سيحدث للموقع في حالة تأخر الخادم server في إرسال النتيجة response، بكل بساطة سيتوقف كل شيء حتى يتم تخزين إجابة الطلب في المتغير x ، بالطبع لا نريد حدوث ذلك، لذلك وجب إستخدام عملية غير متزامنة (asynchronous operation) أي يتم تنفيذ دالة fetch وفي نفس الوقت يظل الموقع يعمل كما كان بالضبط.
يمكنك الإطلاع على توثيق موسوعة حسوب JavaScript - Promise لشرح أكثر تعمقًا
ملاحظة: في دالة then الثانية في سؤالك، تم دالة سهمية Arrow Function وهي نفس الدالة العادية لكن بطريقة كتابة مختلفة فقط. أنظر الدوال السهمية في JavaScript
-
إجابة سامح أشرف سؤال في ما الخطأ فى هذا ال CV .. و كيف يمكننى ان احدثه واجعله افضل ؟ كانت الإجابة المقبولة
مشاء الله مهارات عظيمة.
هناك فقط بعض الملاحظات البسيطة للغاية، بتطبيقها ستكون سيرتك الذاتية جاهزة بالكامل:
- لاحظت أنك مطور تطبيقات أندرويد، لذلك غير المسمى الوظيفي إلى Android Developer لتكون أكثر دقة.
- في معلومات الإتصال ضع الدولة بجانب اسم المحافظة Cairo, Egypt (ستكون أفضل في حالة العمل مع شركات دولية أو أجنبية).
- قم بتنسيق رقم الهاتف من خلال وضع مسافات ليكون بهذا الشكل +20 123 456 7890
- ألقيت نظرة على حسابك في GitHub ووجدت أعمال رائعة ما شاء الله. فقط أكتب بعض المحتوى في ملفات ReadMe تشرح فيها الغرض من التطبيق والمميزات الخاصة به.
- في الفقرة التعريفي Summary أصلح خطاء إيملائي بسيط، لتكون الفقرة هكذا:
- إستخدم خدمة Grammarly المجانية لإصلح بعض الأخطاء الإيملائية البسيطة في جزء المشاريع الخاص بك.
- أكتب مقدمي الدورات التي حصلت عليها مثلًا " Mobile application development course using web technologies From Hsoub Academy"
في النهاية، إستخدم موقع لبناء السيرة الذاتية مثل resume.io أو zety.com هذه الموقع ستقدم لك قوالب إحترافية تفيض بالحياة.
بالتوفيق
-
إجابة سامح أشرف سؤال في كيف اقوم ببيع سكربتات قمت بشرائها؟ كانت الإجابة المقبولة
إن كنت تمتلك رخصة ببيع هذه السكربتات فيمكنك إستخدام عدة منصات لبيعهم، ومن هذه المنصات:
Flippa : بعدد مشتريين يتخطى 1.5 مليون مشتري، موقع flippa يعد من أشهر مواقع بيع التطبيقات والمواقع والسكربتات.
إن كانت السكريبتات إحترافية وذات جودة عالية، فيمكنك بيعهم على متجر envato market، وهو عبارة عن عدة متاجر متخصصة منها themeforest المتخصص في قوالب وإضافات وسكريبتات ووردبريس.
كما يمكنك إستخدام منصات عربية لبيع الخدمات مثل خمسات حيث تحدد سعر السكريبت ويقوم المشتري بطلب السكريبت منك.
بالإضافة إلى منصة مستقل التي قد تكون بداية طريقك لتنفيذ مشاريع حقيقة من خلال عرضك لخدمة تركيب هذه السكربتات لمن يطلبها.
-
إجابة سامح أشرف سؤال في React Native أود حل مشكلة تنقل العناصر عند تغيير لغة الجهاز .. مالحل؟ كانت الإجابة المقبولة
في أغسطس 2016 تم إضافة ميزة تحديد الإتجاه (يمين أو يسار) direction، وبهذا أصبحت كل تطبيقات react native تدعم اللغات التي تكتب من اليمين إلى اليسار مثل اللغة العربية والعبرية.
كما أصبح من الممكن أن تجبر تطبيقك على أستخدم إتجاه معين (مثلاً LTR) حسب حاجتك من خلال إستخدام دالة forceRTL من مكتبة I18nManager بالشكل التالي:
I18nManager.forceRTL(false); I18nManager.allowRTL(false ملاحظة: قد تحتاج أن تعيد تشغيل التطبيق مرة أخرى لترى نتيجة هذه الدالة.
إن لم تعمل هذه الطريقة معك لسبب أو لآخر، فقم بإضافة الكود التالي في ملف MainApplication.java:
import com.facebook.react.modules.i18nmanager.I18nUtil; public class MainApplication extends Application implements ReactApplication { @Override public void onCreate() { super.onCreate(); // FORCE LTR I18nUtil sharedI18nUtilInstance = I18nUtil.getInstance(); sharedI18nUtilInstance.allowRTL(getApplicationContext(), false); .... } } بذلك سوف تجبر التطبيق على إستخدام إتجاه LTR.
لتتعمق أكثر أقرأ هذه المقالة من موقع reactnative.dev والتي تشرح كل ما يخص هذه الميزة، كما أنصحك بالتركيز على جزء الأخير الذي يشرح حدود هذه الميزة وكيف سيتم تطويرها في المستقبل، حتى يظهر تطبيقك بالشكل المناسب في كل الحالات.