عزام عبد الحافظ
الأعضاء-
المساهمات
667 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
3
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو عزام عبد الحافظ
-
مرحبًا @محمد كمال صيام, لا يوجد هنالك دالة من البايثون لعكس النص لكن يمكن فعل ذلك بأكثر من طريقة و أسهل طريقة لعكس النص هي بإستخدام المعامل [1-::] و تسمى slice statement أي [1-::] وتعني البدء في نهاية النص والانتهاء عند الموضع 0 (index 0) ، والتحرك بالخطوة -1 ، سالب واحد ، مما يعني خطوة واحدة إلى الوراء , المثال : def reverse_order(user_str): user_str = user_str[::-1] print(user_str) reverse_order("Hello") النتيجة : olleH طريقة ثانية هي بإستخدام حلقة for loop , نقوم في كل تكرار عند الحلقة بحفظ حرف من النص في نص جديد في المقدمة حتى يتم عكس النص كاملا : def reverse_order(user_str): new_str = "" for i in user_str: new_str = i + str print(new_str)
- 2 اجابة
-
- 1
-
مرحبًا اخي عبدالواحد , نعم هذا ما يدعى Html Email , التنصيق و اللوان كلها بإستخدام Html و Css.
- 3 اجابة
-
- 1
-
مرحبًا @عبد الواحد الحدادي, هناك نوعان رئيسيان من البريد الإلكتروني يمكنك إرساله : البريد الإلكتروني ذات النص العادي (plain text emails) : و هو الذي لا يملك أي تصميم فقط نص عادي (HTML Emails) : هو البريد التي تم تنسيقها وتصميمها باستخدام HTML و CSS المضمنة في عناصر Html. عندما تستخدم خدمات لبناء بريد ذات تصميم (Html Emails) و تقوم بسحب و وضع عناصر البريد هذه الخدمات تقوم بتخويل هذه التصاميم الى شيفرة Html و Css كلتي تقوم انت بإستخدمها لبناء واجهة المستخدم . عندما تعمل على برمجة جانب الخادم (backend) للويب بإستخدام لغة ruby,php, python او أي لغة آخرى , يمكنك ان تقوم ببناء Html Emails و إرسالها . هذا مثال في لغة python يقوم بارسال html email : from mailer import Mailer #Mailer بإستخدام حزمة email ارسال from mailer import Message message = Message(From="me@example.com", To="you@example.com") message.Subject = "An HTML Email" #html هنا بتضمين #html داخل عناصر css و #style بإستخدام خاصية message.Html = """<p style="color: red">Hi!<br> How are you?<br> </p>""" sender = Mailer('smtp.example.com') sender.send(message)
- 3 اجابة
-
- 1
-
وعليكم السلام ورحمة الله , مرحبًا @الشيخ المختار الشنقيطس, اذا كنت تريد برمجة الويب يجب عليك تعلم هذه التقنيات التي ذكرتها بذلك تكون قد تعلمت : برمجة (واجهة المستخدم) Frontend للويب : (html, css, js, bootstrap) و برمجة (جانب الخادم) Backend للويب : (php, laravel, mysql) هنالك لغات اخرى يمكنها التعامل مع Backend و اطارات غير laravel ولكن php مع laravel هو خيار موفق . في الواقع لا يجب تعلم كل هذا لبرمجة API , يمكنك برمجة API بإستخدام لغة Java, لبناء API بإستخدام Java لديك اطار Spring , تستخدم Spring على نطاق واسع لإنشاء تطبيقات الويب و تطوير API . اما اذا كنت تريد بناء تطبيق جوال و موقع ويب ويتم التوافق بنيهم بإستخدام API حينها تعلم هذه التقنيات و سيتطلب ذلك الوقت و المجهود الكثير جداً , في رأيي اذا تعمل على مشروع حقيقي اجعل برمجة الويب لمبرمج آخر وانت قم بتركيز في برمجة التطبيقات مع Java و التطور فيها .
-
مرحبًا @نور سليم2, الطريقة للوصول الى حل : الرقم موجب إذا كان أكبر من الصفر. نتحقق من ذلك يإستخدام الشروط الشرطية (if statement). إذا لم يكن الرقم اكبر من صفر فسيكون صفرًا أو سالب. في حالة الأرقام الفردية والزوجية ، يكون الرقم زوجيًا إذا كان قابلاً للقسمة تمامًا على 2. عندما يتم قسمة الرقم على 2 ، نستخدم العامل ٪ و سيمى هذا المعامل modulo لحساب الباقي. إذا لم يكن الباقي صفراً ، يكون الرقم فردي. يمكنك عمل المطلوب بهذه الشيفرة: # solution تعريف دلة def solution(number): # شرط التحقق من الرقم زوجي ام فردي # في حال كانت نتيجة قسمة الرقم مع 2 و المتقبي هو رقم 0 ذلك يعني ان الرقم زوجي if number % 2 == 0: print("رقم زوجي") else: print("رقم فردي") # شرط التحقق من الرقم موحب ام سالب if number > 0 : # في حال ان الرقم اكبر من 0 ذلك يعني انه موجب print("رقم ايجابي") else: # سالب اذا اقل من 0 print("رقم سالب")
- 2 اجابة
-
- 1
-
مرحبًا @Sami Remili, Data Serialization تعني تسلسل البيانات هو مفهوم تحويل البيانات إلى تنسيق يسمح بمشاركتها أو تخزينها بطريقة يمكن من خلالها استرداد هيكلها الأصلي. في بعض الحالات ، يكون الهدف من هذا الغرض هو تقليل حجم البيانات مما يقلل من مساحة القرص . و deserialization تعني إعادة البيانات الى وضعها الأصلي . في لغة البرمحة بايثون هنالك مكتبة تُدعى pickle يمكنك من خلالها عمل Data Serialization و deserialization . مثال: import pickle # استيراد الحزمة students = { 'Ahmad': 89, 'Ali': 72, 'Mohammad': 87 } #بيانات الطلاب serial_students = pickle.dumps(students) #students على Data Serialization نقوم بعمل dumps بإستعمال الدلة #serial_students يمكنك الآن العمل بنتيجة المشفرة التي توجد داخل print(serial_students) #اذا قمت بطباعة النتيجة ستجد نتيجة مثل هذه #b'\x80\x04\x95$\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x05Ahmad\x94KY\x8c\x03Ali\x94KH\x8c\x08Mohammad\x94KWu.' #للبيانات deserialize حتى نقوم بعمل loads نستعمل الدلة received_students = pickle.loads(serial_students) print(received_students) #{'Ahmad': 89, 'Ali': 72, 'Mohammad': 87} # النتيجة
- 2 اجابة
-
- 1
-
وعليكم السلام @شريف عبدالصادق, يمكنك التواصل مع فريق الدعم الفني و فتح تذكرة عن ذلك من هذا الرابط .
-
الاصدار Visual Studio 2019 و هو برنامج مايكروسوفت فيجوال استوديو بيئة تطوير متكاملة (IDE) , لكن visual studio code هو بنرامج محرر نصوص خفيف مثل sublime text , قم بتحميل visual studio code وليس visual studio لأنهم مختلفين.
-
وعليكم السلام ورحمة الله وبركاته , مرحبًا @مروان عماد يوسف. في الواقع محرر النصوص sublime لا يدعم اللغات التي هي RTL من اليمين الى اليسار , أي انه لا يدعم اللغة العربية , الأفضل أن تستعمل محرر النصوص Notepad++ , Brackets ولكن يبقى الأفضل في دعم اللغة العربية هو محرر النصوص visual studio code من شركة microsoft . هناك إضافة (plugin) قد تساعد قليلاً , تقوم هذه الإضافة بعرض نسخة معدلة من النص على رسالة عند تحديد النص بلغة العربية و المرور عليه : ليست بطريقة المثالية للعمل على مشروع لكنه الخيار المُتاح في sublime , لتحميل هذه الإضافة , من داخل sublime في القائمة العلوية تذهب الى preferences و من ثم الضغط على Package Control تظهر لديك هذه النافذة , قم بإحتيار Install Package لتحميل إضافة : بعد ذلك تكتُب RTL to Dialog و تضغط للتحميل .
- 4 اجابة
-
- 1
-
مرحبًا @Mahmoud Hadhoud, ليست هنالك طريقة سلسة لفعل ذلك بل يجب عليك تحويل الكود اضافات الوردبريس حتى تعمل على موقع آخر . الأمر ليس سهل لأن اضافات وردبريس تم تصميمها بأساليب وفئات ووظائف محددة تعمل مع وردبريس نفسه وليس العمل مع موقع تقليدي , ما يمكنك فعله هو دراسة الكود ومعرفة ما يفعله ، ثم إعادة إنشاء منطق الكود ليناسب احتياجات مشروعاتك. تقوم بدخول الى ملفات الإضافة غالباً تبحث عن ملفات javascript و php فيها . لكن هنالك طريقة لمنع النسخ من صفحة الموقع وذلك ليس بأمر الصعب , في عنصر body في ملف html يمكنك تعين خاصية oncopy و oncut إلى false , الكود : <body oncopy="return false" oncut="return false" > هكذا تمنع النسخ من موقعك .
-
وعليكم السلام @Abdoun Izz al Din, يمكنك القيام بذلك بتخزين التواريخ التي تريد العمل بها داخل مصفوفة (Array) , ونقوم بطباعة التاريخ الثاني بإستعمال المؤشر (Index) , قيمة المؤشر نطلبها من المستخدم : using System; public class Program { public static void Main() { // مصفوفة فيها التواريخ التي نريد العمل بها string[] dates = {"12/1/2020","12/2/2020","12/3/2020","12/4/2020"}; // Console.ReadLine() قيمة المؤشر من المستخدم بإستعمال int index = Convert.ToInt32(Console.ReadLine()); // نقوم بطباعة النتيجة بكتابة إسم المصوفة و قيمة المؤشر بداخله Console.WriteLine(dates[index]); } } طريقة إنشاء مصفوفة في C# , اولا نُحدد نوع البيانات التي تحتفظ بها المصفوفة في حالتنا نريد string أي نص مع العلامة [ ] , بعد ذلك إسم المصفوفة , قوسين مجعد تُمثل جسد المصفوفة و نفصل العناصر بفاصلة . string[] dates = {"12/1/2020","12/2/2020","12/3/2020","12/4/2020"}; و للوصول على عناصر المصفوفة : Console.WriteLine(dates[index]); يبدأ ترقيم المصفوفة من 0 وليس 1 , يعني إذا أدخل المستخدم قيمة 1 , هذه الشيفرة ستُعيد لنا التاريخ "12/2/2020" من المصفوفة .
-
مرحبًا @عبد الواحد الحدادي, الحمد لله و أتمنى أنك بخير . لبناء صفحة هبوط احترافية على منصة الووردبريس يجب أن تمتلك خبرة جيدة في تصميم واجهة مستخدم و ان تستعمل الأدوات المناسبة , وردبريس منصة كبيرة جداً و هنالك الكثير من ادوات بناء المواقع (Page Builder) إليك الأفضل : SeedProd : هو أفضل منشئ لصفحات الهبوط في وردبريس . يأتي مزودًا بأداة إنشاء صفحات السحب والإفلات سهلة الاستخدام ، مع مجموعة قوالب جميلة ، وأقسام مصممة مسبقًا مثل الرؤوس وغيرها . الثمن يبدأ من $39.50 Beaver Builder : يمتلك Beaver Builder ذان المزايا ولكن لديه تقيمات إجابية عن سهولة الإستخدام . الثمن يبدأ من 99$ . Elementor : هي أداة أخرى سهلة الاستخدام منشئ صفحات الهبوط في وردبريس. إنه سريع للغاية ويأتي مع العديد من النماذج الجاهزة. يحتوي على واجهة سريعة للغاية مع محرر مباشر. يمكن ترتيب منطقة صفحتك في أقسام وأعمدة. يمكنك إضافة وحدات إلى أعمدتك مثل الأزرار والصور والعناوين والمنزلقات وغير ذلك. الثمن يبدأ من $49 و هنالك نسخة مجانية . مع كل هذه الأدوات يمكنك دائماً التعديل عليهم بكتابة شيفرة CSS .
- 2 اجابة
-
- 1
-
مرحبًا @AM0, الشيفرة لديك تعمل جيداً و لعمل ميزة إعادة اللعبة : أولاً داخل الدلة winner() نقوم بتوقيف السطر : Application.Exit(); حتى لا يتوقف البرنامج عند إنتهاء اللعبة . بعد ذلك نقوم بعمل زر جديد و عند الضعط عليه نُعيد اللعبة من جديد بهذه الشيفرة: count = 0; button1.Text = ""; button1.Enabled = true; button2.Text = ""; button2.Enabled = true; button3.Text = ""; button3.Enabled = true; button4.Text = ""; button4.Enabled = true; button5.Text = ""; button5.Enabled = true; button6.Text = ""; button6.Enabled = true; button7.Text = ""; button7.Enabled = true; button8.Text = ""; button8.Enabled = true; button9.Text = ""; button9.Enabled = true; المنطق هو اننا نقوم بإعادة قيمة المتغير count الى الصفر و نص كل الأزرار إلى الوضع الإفتراضي مع عمل ذلك يصبح وكأننا قمنا بإعادة تشغيل البرنامج و يُمكننا اللعب من جديد .
- 4 اجابة
-
- 1
-
مرحبًا @AM0, من فضل ارفق المشروع حتى نستطيع من مساعدتك , تريد عمل شيفرة تُمكنك من اللعب من جديد ؟
-
مرحبًا @salahkr, اساسيات البرمجة مشتركة فيما بينها , مثال : المتغيرات (variables) حلقة التكرار (for loop, while loop) الجملة الشرطية (if statements) الدوال (functions) الصنف (Class and Objects) يمكنك بدء التعمل مع javascript و تعلم اساسيات اللغة هي لغة جميلة و سهلة , بعد ذلك اذا تريد تعلم لغة اخرى ستجد سهولة كبيرة لأن المفاهيم هي نفسها لكن الإختلاف في طريقة كتابة اللغة (syntax) .
- 6 اجابة
-
- 1
-
مرحبًا @Abdulhadi A Abou Samra, يمكنك عمل ذلك بهذه الشيفرة : #include <iostream> #include <stdexcept> using namespace std; int main() { int num1, num2; int oper; // عملية التكرار , تتوقف في حال ادخل المستخدم رقم 0 while(true){ cout << "Type a number of your operation.\nAdd : (1)\nSubtract : (2)\nMutliply : (3)\nDivide : (4)\nRest Of Division : (5)\nExit : (0)\noperation = "; cin >> oper; // نتأكد اذا قيمة العملية بين رقم 0 و 5 if(!(oper >= 0 && oper <= 5)){ // نقوم برفع خطأ اذا قيمة العملية ليست بين 0 و 5 throw std::invalid_argument( "operation number shall be from 0 to 5" ); }else { // تتوقف عملية التكرار if(oper == 0){ break; } cout <<"Enter the first number : "; cin >> num1; cout <<"Enter the second number : "; cin >> num2; cout << "Result is : "; if(oper == 1){ cout << num1+num2; } else if(oper == 2){ cout << num1-num2; } else if(oper == 3){ cout << num1*num2; } else if(oper == 4){ cout << num1/num2; } else if(oper == 5){ cout << num1%num2; } cout << "\n\n"; } } return 0; }
- 2 اجابة
-
- 1
-
مرحبًا @Anwar Mohammed, يمكنك عمل ذلك بهذه الشيفرة : public class Program { // هنا دالة public static void CountSpaces(string txt) { // متغير لحسب فرغات النص int count = 0; // عملية التكرار تقوم بمرور على جميع أحرف النص للبحث عن الفرغات for( int i = 0; i < txt.Length; i++) { // count اذا كان الحرف مساحة فارغة نقوم بزيادة عدد المتغير if(txt[i] == ' ') { count++; } } Console.WriteLine("Your text has " + Convert.ToString(count) + " spaces"); } public static void Main(string[] args) { Console.WriteLine("Please enter your text : "); //txt نقوم بتخزين نص المستخدم في متفير string txt = Console.ReadLine(); // الدالة CountSpaces(txt); } }
-
مرحبًا @Anwar Mohammed, يمكنك عمل ذلك بهذه الشيفرة : static void RepeatString(string str, int n){ string result = ""; // n عملية تكرار تعتمد على قيمة المتغير for(int i = 0; i < n; i++){ //result في الناتج الاخير str في كل تكرار نضيف قيمة result += str; } Console.WriteLine(result); }
-
وعليكم السلام @Anwar Mohammed, يمكنك فعل ذلك بهذه الشيفرة : using System; public class Program { static void convertNumber() { Console.WriteLine("Type in a number : "); //Console.ReadLine نقوم بطلب ادخال قيمة من المستخدم بهذه الدالة //Convert.ToInt32() نقوم بتحويل القيمة الى قيمة رقمية بإستخدام الدالة int myInt = Convert.ToInt32(Console.ReadLine()); if(myInt > 0) { // في حال ان الرقم إيجابي نقوم بضربه مع سالب واحد حنى يتحول الى سالب myInt = myInt * -1; }else{ // حتى يتحويل الى رقم إيجابي System.Math.Abs() في حال ان الرقم سالب نقوم بإستخدام الدلة myInt = System.Math.Abs(myInt); } Console.WriteLine("Your number is converted : "); Console.WriteLine(myInt); } public static void Main() { convertNumber(); } }
-
مرحبًا @Shatha_0, هنالك عدة اسباب لهذه المشكلة فهي غير واضحة , خطوة بخطوة فلنقم بتجربة تثبيت pandas : اولاً نقوم تثبيت هذه الإضافات بترتيب من قنصل الاوامر Command Prompt : pip install cython) cython) pip install numpy) numpy) pip install pandas) pandas) تتطلب مكتبة pandas تثبيت cython و numpy قبلها . بعد ذلك نذهب الى pycharm داخل : Settings > Open Project settings > Project Interpreter > and add module من هنالك نقوم بثبيت cython ثم numpy ثم pandas , الخطوات من هنا .
-
وعليكم السلام ورحمة الله وبركاته @Barmaja Barmaja, النسيان هو شيء طبيعي في البرمجة بل في الواقع لا يكاد يوجد مبرمج يقوم برمجة مشروع الا و يستخدم موارد في الانترنت للتذكير او لعدم معرفة شيء . عندما تدرس شيء و تتمكن من فهمه فهذا هو المطلوب , اما ان تنسى طريقة كتابته فلا بأس في ذلك , مع بناء مشاريع اكثر سيُساعد ذلك في تذكر الكود البرمجي لكن الاهم دائما هو الفهم .
- 7 اجابة
-
- 1
-
مرحبًا @salahkr, يمكنك الاعتماد على إطار العمل Bootstrap لكن من الصعب اكمال مشروع كامل من غير كتابة شيفرة css . يكون إطار Bootstrap نقطة بداية في عمل التنسيقات و بعد ذلك تقوم بتعديلاتك الخاصة على تنسيقات Boostrap , لذلك عندما نربط ملف التنسيقات في ملف html , نجعل ملف التنسيقات css الخاص بنا بعد ربط Bootstrap حتى يكون للتنسيقات الخاصة بنا الأفضلية .
- 7 اجابة
-
- 1
-
وعليكم السلام , مرحبًا @Abderahman Benchalel. يتكون الهرم بإستخدام اثنان من عملية التكرار For Loop. و For الثانية هي موجودة داخل الآولى , ما الفكرة هنا ؟ اولاً البرنامج لديك لديه متغير hgt و هو يقوم بتحديد ارتفاع الهرم. في حلقة التكرار الآولى نقوم بتكرار على حسب قيمة المتغير hgt, اذا قيمة hgt كانت 8 حلقة التكرار الآولى ستعمل 7 مرّات . هذا يعني ان حلقة التكرار الثانية التي هي داخل الآولى ستعمل 7 مرّات ايضاً , و الحلقة الثانية هي تقوم بمقارنة مع متغير coun في شرط العمل , و coun هو متغير الحلقة الآولى . هذا يعني ان عندما يكون متغير حلقة التكرار الآولى (coun) لديه القيمة 2 , ستعمل حلقة التكرار الثانية مع التكرار 3 مرّات و هي تقوم بطباعة جسم الهرم هاشتاق , بعد ان تكتمل حلقة التكرار الثناية العمل , بعدها يوجد طباعة علامة "n\" و هنا نطبع سطر جديد قبل الرجوع مرّة آخرى لعمل حلقة تكرار الثانية بعد الإضافة على متغير coun في حلقة التكرار الآولى , حينها ستكون قيمة coun هي 3 , و حلقة التكرار الثانية ستقوم بتكرار 4 مرّات يعني طباعة 4 هاشتاق . حلقة تكرار الثناية تُسمة nested loop لأنها موجدة داخل الحلقة الآولى , يمكنك معرفة المزيد عن ذلك من هنا .
- 8 اجابة
-
- 1