سامح أشرف
الأعضاء-
المساهمات
2934 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
56
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو سامح أشرف
-
يمكنك إستخدام التابع primary لعمل composite primary key $table->bigInteger('user_id')->unsigned(); $table->bigInteger('permission_id')->unsigned(); $table->primary(['user_id','permission_id']);
-
يمكنك أن تقوم بعمل متغيرات من نوع static من خلال تعريف هذه المتغيرات في داخل الصنف نفسه وليس داخل أي دوال أخرى كالتالي: >>> class Example: ... x = 9 ... >>> Example.x 9 >>> لاحظ أن هناك إختلاف بين بايثون ولغات أخرى مثل C++ في هذا الأمر وهو أن المتغير x يمكن تغير قيمته فيما بعد من داخل الـ instance نفسه ويظل بإمكانك إستعمال المتغير الثابث أيضًا كالتالي: >>> ex = Example() >>> ex.x = 8 >>> print(ex.x, Example.x) 8 9 >>> كما بإمكانك أن تقوم بعمل دوال ثابتة static methods من خلال إضافة @staticmethod قبل تعريف الدالة كالتالي: >>> class Example: ... @staticmethod ... def f(a,b): ... print(a, b) ... >>> ex = Example() >>> ex.f(1, 2) 1 2 >>> Example.f(1, 2) 1 2 >>> لاحظ أن الدوال الثابتة في بايثون لا تحتاج إى إضافة self كمدخل للدالة كباقي الدوال العادية.
- 2 اجابة
-
- 1
-
بداية من بايثون الإصدار 3.10 (2021) يمكنك إستعمال جملة مشابهة لـ switch وهي match .. case كالتالي: x = 'a' match x: case 'a': print("X is A") case 'b': print("X is B") وكبديل لهذا يمكنك إستعمال القواميس في الإصدارات السابقة كالتالي: x = { 'a': "X is A", 'b': "X is B", } print(x['a'])
- 3 اجابة
-
- 2
-
يمكنك أن تستعمل الكائن OrderedDict الموجود في مكتبة collections حيث يقوم بترتيب كل عناصر القاموس بالشكل التالي: >>> import collections >>> x = {2:True, 1:False, 4:None, 3:"Hi"} >>> sortedX = collections.OrderedDict(sorted(d.items())) >>> sortedX OrderedDict([(1, False), (2, True), (3, 'Hi'), (4, None)]) >>> sortedX[1] False >>>
- 3 اجابة
-
- 1
-
يمكن عمل موقع بلغة JavaScript فقط (backend + frontend) لكن ستحتاج إلى إستخدام إطارات عمل مثل React.js لواجهة الموقع و express.js للـ backend بالإضافة إلى إستعمال SQL للتعامل مع قواعد البيانات (لاحظ أن SQL ليست لغة برمجة وإنما لغة تستعمل لكتابة جمل تتعامل مع قواعد البيانات لعمل عمليات الإضافة والتعديل والحذف .. إلخ). وهذا المسار من التقنيات يعرف بـ MERN (MongoDB Express.js React.js Node.js)
- 1 جواب
-
- 4
-
دورة تطوير الواجهات تقوم بتعليمك كل ما تحتاجه لعمل واجهة موقع Frontend website بداية من تصميم الموقع على أحد برامج التصميم ومرورًا بكتابة كود الموقع وتثبيت المكتبات المطلوبة وحتى إضافة مميزات تفاعلية على الموقع من خلال JavaScript ، وبعد الإنتهاء من واجهة الموقع، ستحتاج إلى عمل backend للموقع (لعمل أمور مثل نظام تسجيل الدخول أو حفظ بيانات في قاعدة بيانات .. إلخ). توجد العديد من المسارات التي يمكن إتباعها لعمل Backend للمواقع: PHP + Laravel Node.js + Express.js Ruby + Ruby on rails python + Django
- 2 اجابة
-
- 2
-
يمكنك حل هذه المشكلة بأكثر من طريقة كالتالي: يمكنك إستعمال العلمة / بدلًا من العلامة \ وسيعمل كل شيء على ما يرام في Windows و Linux و MacOS، كالتالي: >>> x = 'C:/Users/name/Desktop' أو بإمكانك أن تستعمل علامة \\ (double backslash) كالتالي: >>> x = 'C:\\Users\\name\\Desktop' كذلك يمكنك أن تستخدم سلسلة حروف خام raw string literals من خلال إضافة حرف r قبل النص مباشرة كالتالي: >>> x = r'C:\Users\name\Desktop' ملاحظة: لا يمكن أن تنتهي raw string literals بعلامة \ حيث سيسبب هذا الأمر الخطأ التالي: SyntaxError: EOL while scanning string literal
- 2 اجابة
-
- 1
-
يمكنك أن تستعمل الدالة unlink كالتالي: unlink($full_file_path); لاحظ أن يجب أن تستعمل مسار الملف الكامل absolute path وليس مسار نسبي relative path
-
أنت تستعمل قوس إغلاق { بدلًا من قوس البداية } حيث يجب أن يتم كتابة الكود بين قوسين بهذا الشكل { }
-
يمكنك أن تقوم بكتابة الأكواد في iPad بدون مشكلة من خلال بعض التطبيقات مثل iSH shell أو مواقع مثل CodeSandbox لكن بالطبع سيكون الأمر أصعب وأكثر تعقيدًا وأبطئ من إستخدام حاسوب شخصي، وأيضًا بعض الخيارات ستكون مدفوعة (إن وجدت حتى)، والمصادر التي ستتعلم منها لن تشرح تهيئة بيئة العمل على iPad بينما أنظمة أخرى مثل (Windows و Linux و MacOS) مدعومة بالكامل في أي دورة أو مصدر للتعلم. إن لم يكن أمامك سوى إستخدام iPad فيمكنك أن تقوم بإستئجار RDP وهو حاسوب إفتراضي يعمل على خادم Server وأنت تستخدمه من خلال الـ iPad الخاص بك عن طريق تطبيقات مثل Splashtop Personal، ويكون مكلف في أغلب الأحيان لذلك أنصحك بالبحث عن أي جهاز كمبيوتر بأي إمكانيات متاحة فكلها ستصلح لأغلب أنواع البرمجة.
- 4 اجابة
-
- 1
-
إن كنت تريد أن تقوم بعمل قائمة تحتوي على دمج للكلمات نفسها لتكون النتية كالتالي: ["Hello Dear", "Hello Sir", "Take Dear", "Take Sir"] فيمكنك أن تقوم بذلك من خلال عمل حلقة تكرار على القائمة الأولى وفي داخلها حلقة تكرار أخرى على الحلقة الثانية كالتالي: newList = [] for i in list1: for j in list2: newList.append(i + j) print(newList) # Output: ["Hello Dear", "Hello Sir", "Take Dear", "Take Sir"] أما إن كنت تريد دمج القائمتين فقط لتكوين قائمة واحدة تحتوي على الأربع عناصر فيمكنك أن تقوم بذلك من خلال إشارة + كما ذكر في الإجابات السابقة.
- 3 اجابة
-
- 1
-
توجد الكثير من البرامج التي تستخدم الـ multi threading، في الغالب يتم إستعماله للأجزاء التي تحتاج وقت طويل لإتمامها مثل معالجة وتعديل الصور في برامج مثل الـ Photoshop ولكي لا تتجمد واجهة التطبيق أثناء القيام بمثل هذه المهام يتم إستعمال الـ multi threading، ومن أمثلة التطبيقات التي تستعمل الـ multi threading أيضًا: برامج تحرير النصوص Text Editors مثل برامج Microsoft Office كل أنواع الألعاب تستعمل هذا الأمر بكثرة خصوصًا الألعاب من نوع FPS shooters خوادم الويب مثل Apache و Nginx متصفحات الويب مثل Google Chrome و Microsoft Edge برامج معالجة الصور والفيديوهات مثل Adobe After Effect و Adobe Photoshop برامج الرسم ثلاثي الأبعاد مثل Blender و Cinema 4D برامج الهندسة المعمارية مثل Autodesk AutoCAD
- 2 اجابة
-
- 2
-
يمكنك أن تقوم بعمل قائمة فارغة من خلال دالة list كالتالي: x = list() # أو هكذا x = [] ويمكنك أن تقوم بإضافة عناصر جديدة فيها من خلال دالة append كالتالي: x.append("Hello, World!") x.append("Hsoub") print(x) # Output: ["Hello, World!", "Hsoub"] ويمكنك الإطلاع على معلومات أكثر حول القوائم في بايثون من خلال موسوعة حسوب من هنا
- 3 اجابة
-
- 1
-
يمكنك أن تستعمل خدمة Firebase المقدمة من جوجل حيث تسمح لك بعمل كل عمليات CRUD مجانًا ولن تحتاج لتعلم كيفية عمل Backend بلغة برمجة معينة مثل PHP أو Python أو غيرها. من مميزات منصة Firebase توفر Firebase قاعدة بيانات مجانية. تزامن فوري بين برنامجك وقاعدة البيانات. أقل جهد ممكن من المبرمج للحصول على تزامن. توثيق سهل لـ Firebase API نظام تسجيل دخول بطرق كثيرة (فيسبوك، تويتر، ايميل ورقم سري، الخ) API يعمل على أنظمة تشغيل ومنصات مختلفة (Android(Java), iOS(C#), Web(Javascript إحصائيات لتفاعل المستخدمين خلال ساعات اليوم. وإن أردت التدرب فقط على عمل تطبيق CRUD وتحتاج إلى API جاهز للتجربة فيمكنك أن تستعمل موقع jsonplaceholder حيث يقدم لك API جاهز يحتوي على العديد من المسارات Routes الجاهزة للإستخدام مجانًا.
- 1 جواب
-
- 2
-
يمكنك أن تقوم بعمل ملف فارغ باسم OpenGitBash.reg (تأكد من صيغة الملف جيدًا)، ثم إضغط عليه ببزر الفأرة الأيمن وأختر edit وضع فيه هذا الكود: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\*\shell\Open Git Bash] @="Open Git Bash" "Icon"="C:\\Program Files\\Git\\git-bash.exe" [HKEY_CLASSES_ROOT\*\shell\Open Git Bash\command] @="\"C:\\Program Files\\Git\\git-bash.exe\" \"--cd=%1\"" [HKEY_CLASSES_ROOT\Directory\shell\bash] @="Open Git Bash" "Icon"="C:\\Program Files\\Git\\git-bash.exe" [HKEY_CLASSES_ROOT\Directory\shell\bash\command] @="\"C:\\Program Files\\Git\\git-bash.exe\" \"--cd=%1\"" [HKEY_CLASSES_ROOT\Directory\Background\shell\bash] @="Open Git Bash" "Icon"="C:\\Program Files\\Git\\git-bash.exe" [HKEY_CLASSES_ROOT\Directory\Background\shell\bash\command] @="\"C:\\Program Files\\Git\\git-bash.exe\" \"--cd=%v.\"" أحفظ الملف، ثم قم بالضغط عليه بزر الفأرة مرة أخرى واختر Run As Administrator ، وستجد أنه تم إضافة الخيار في القائمة المختصرة. ملاحظة عليك أن تتأكد من المسار الذي قمت بتثبيت Git فيه، يكون بشكل إفتراضي في المسار التالي: C:\Program Files\Git\git-bash.exe إن كان المسار الذي قمت بتثبيت Git فيه مختلف عن هذا المسار فيجب أن تقوم بتعديل الكود السابق بالمسار الصحيح.
- 4 اجابة
-
- 1
-
يمكنك أن تقوم بإزالة Git وتعيد تثبيت git مرة أخرى وتتأكد من تحديد خيار Windows Explorer integration (لإضافة Git إلى القائمة المختصرة) كما في الصورة التالية:
- 4 اجابة
-
- 2
-
لغة PHP هي لغة برمجة عادية يمكن إستخدامها لعمل سكريبتات تعمل في سطر الأوامر CLI أو حتى عمل برامج بواجهة رسومية GUI مثل باقي اللغات، لكن لغة PHP لم تصمم لمثل هذه الأمور في البداية وإنما تم تصميمها لعمل مواقع ديناميكية، وقد تجد صعوبة في فهم بعض الأجزاء والدوال إن لم تكن على معرفة بأساسيات HTML و CSS على الأقل، امور مثل URL Query أو أنواع الطلبات Requests التي قد يتم إرسالها من نموذج موجود في صفحة HTML (عنصر form)، لذلك من الأفضل دائمًا أن تتعلم على الأقل أساسيات HTML و CSS. لاحظ أني لم أذكر لغة JavaScript لأن تعلمها هنا أمر إختياري ولكن سوف يزيد من قدرتك على عمل مواقع تفاعلية بشكل أفضل.
- 2 اجابة
-
- 2
-
بالطبع يبدو الأمر صعبًا في البداية بسبب المنافسة بين المستقلين خصوصًا إن لم يكن لديك أي أعمال سابقة لتعرضها في معرض أعمالك، وسيكون حسابك بلا أي تقييمات سابقة بالطبع، بينما المستقلين الآخرين لديهم العديد من الأعمال والتقييمات المرتفعة، إذا لماذا سيقوم العميل بإختيارك أنت بدلًا من المستقلين الآخرين؟ وللإجابة على هذا السؤال يجب أن تقدم للعميل شيء يوضح له خبرتك في المجال، عليك أن تقوم بعمل بعض المشاريع الخاصة بنفسك تظهر فيها أقصى ما تستطيع الوصول إليه من إبداع ومجهود، ولا يجب أن تقوم بعمل العشرات من الأعمال يكفي 5 أعمال بسيطة وليست معقدة للغاية، يمكنك تصفح المشاريع المطلوبة على مستقل أو خمسات وقم تنفيذها بنفسك (بدون التقديم على العمل)، ثم قم بإضافة المشروع إلى معرض أعمالك، وبالتالي تكون قمت بعمل معرض أعمال والتدرب على مشاريع حقيقية. بعد ذلك دع معرض أعمالك يتحدث عنك، عندما تقوم بالتقديم على عمل جديد لا ترفع من تكلفة المشروع، وقم بكتابة عرض عمل منسق وإحترافي، أعرض على العميل أن تقوم بعمل بعض الأمور الأضافية التي قد تفيده، فقط أمور بسيطة مثل تصميم صفحة بسيطة إضافية، أو إختيار ألوان متناسقة أكثر .. إلخ، وتذكر أن الهدف في البداية هو الحصول على تقييم عالي وليس أن تتحصل على مبلغ مالي أكبر، ومع الوقت سيمكنك أن تقوم بتكبير معرض أعمال يحتوي على أعمال إحترافية وسيكون لديك تقييمات عالية، وسيمكنك المنافسة على المشاريع. عليك أيضًا أن تتابع مدونة خمسات ومستقل حيث يتم نشر تدوينات ستساعدك كثيرًا في العمل الحر، وإختيار العملاء وكيفية التعامل معهم بشكل سليم.
- 7 اجابة
-
- 4
-
لإستقبال البيانات من المستخدمين نستعمل دالة input ونقوم بتخزين ما أدخله المستخدم في متغير بأي اسم كالتالي: price = input('Enter the price') بعد ذلك يجب أن تقوم بتحويل النص المدخل من قِبل المستخدم إلى رقم integer وذلك من خلال دالة int كالتالي: price = int(price) وفي النهاية تقوم بطباعة القيمة المدخلة مضروبة في سعر الدولار بهذه العملة، فعلى سبيل المثال يقوم المستخدم بإدخال السعر بالجنية المصري والذي يساوي (0.064 دولار) print(price * 0.064, "$") بهذا الشكل إن قام المستخدم بإدخال رقم 150 مثلًا فسيتم طباعة 9.57$
-
العلم -M تعني Move وتستعمل لإعادة تسميه الفرع branch ويمكن إستعماله بهذه الطريقة: git branch -M [<oldbranch>] <newbranch> // أو هكذا git branch -m [<oldbranch>] <newbranch> إن لم تقم بكتابة oldBranch فسيتم تغير الفرع الحالي إلى الاسم الجديد (newbranch) في الماضي كان يسمى الفرع الرئيسي بـ ,master ولكن تم تغير هذا الأمر ليصبح بعد ذلك main ولتحديث المشاريع القديمة التي كانت تستعمل اسم master يتم إستعمال الأمر التالي: git branch -M main إن كنت تستعمل ويندوز وتريد أن تقوم بتغير اسم الفرع من main إلى Main (عمل أول حرف Capital) فيجب أن تستعمل -M وليس -m وإلا سيظهر لك خطأ branch already exists
- 1 جواب
-
- 1
-
يمكنك إخفاء العنصر من خلال خاصية visibility كالتالي: h1 { visibility: hidden; } سيظل مكان النص موجود ولكن فارغ، وإن أردتِ حذف النص ومكانه أيضًا نستخدم خاصية display كالتالي: h1 { display: none; }
- 21 اجابة
-
- 2
-
تحدث المشكلة بسبب إختلاف عرض كل جزئية (about us - help us ... إلخ) لذلك يمكنك أن تقوم بعمل min-width بنسبة 50% لكي تحصل كل القائم على نفس العرض، وبالتالي تظهر بشكل مناسب أسفل بعضها البعض. .item { min-width: 50% } يمكنك أن تقوم بتطبيق الكود السابق في الشاشات الصغيرة فقط لكي لا تأثر على الشاشات الكبيرة التي تعمل بشكل جيد بالفعل.
-
يمكنك أن تقومي بإضافة أي كائن إلى قائمة list من خلال التابع append كالتالي: arr = [1, 2, 3] arr.append(4) print(arr) # Output: [1, 2, 3, 4] ليس شرطًا أن يكون الكائن الذي نريد إضافته إلى القائمة من نفس نوع العناصر الموجودة في القائمة (يمكن أن يكون أي نوع بدون مشكلة)
-
إن كنتِ تقصدين وراثة صنف لكل الدوال الموجودة في صنف آخر، فيمكنك أن تقومي بوراثة كل الدوال من Parent Class إلى Child Class في بايثون كالتالي: class Person: def __init__(self, fname, lname): self.firstname = fname self.lastname = lname def fullname(self): return self.firstname + ' ' + self.lastname # نقوم بكتابةاسم الصنف الأب بين القوسين class Student(Person): pass student1 = Student('Sameh', 'Ashraf') # الصنف Student يحتوي على كل دوال Person print(student1.fullname()) # Outpub: "Sameh Ashraf"
- 3 اجابة
-
- 1