اذهب إلى المحتوى

Wael Aljamal

الأعضاء
  • المساهمات

    6975
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    218

كل منشورات العضو Wael Aljamal

  1. أبسط حل هو الدالة mail في أي صنف بسيط تقوم بإنشائه وشكلها العام: mail($to, $subject, $message, $headers); مستقبل موضوع الايميل الرسالة ترويسات// المرسل و إصدار اللغة تحوي المقالة المرفقة شرح مفصل أكثر لكيفية استخدام المكتبة PHPMailer في PHP وطرق أخرى أفضل من الدالة mail كيفية استخدام PHP Mailer: <?php $mail = new PHPMailer(); $mail->From = "from@example.com"; // المرسل $mail->FromName = "Full Name"; // اسم المرسل الكامل $mail->addReplyTo("reply@example.com", "Reply Address"); // البريد الذي تود إستقبال الردود عليه $mail->addAddress("recepient1@example.com", "Recepient Name"); // عنوان بريد المستقبل الأول و اسمه $mail->addAddress("recepient2@example.com"); // المستقبل الثاني $mail->addCC("cc@example.com"); // مستقبلين نسخة إضافية (CC)، $mail->addBCC("bcc@example.com"); // مستقبلين نسخة إضافية محجوبين (BCC) $mail->Subject = "Subject Text"; // الموضوع $mail->isHTML(true); // تفعيل وضع HTML // جسم الإيميل $mail->Body = "<html><body><p><b>This paragraph is bold. </b></p><p><i>This text is italic.</i></p></body></html>"; $mail->AltBody = "This paragraph is not bold.\n\nThis text is not italic."; // إرسال الإيميل if($mail->send()) { // (1) header('Location: http://example.com/path/to/thank-you.php', true, 303);// إعادة التوجيه ورسالة سكر لإرسال البريد exit; } // حدوث خطأ else { echo "Error: " . $mail->ErrorInfo; } إن كنت تستعمل composer في مشروعك يمكنك تضمين PHP Mailerكالتالي: التثبيت: composer.json "phpmailer/phpmailer": "~6.0" ثم composer install أو: composer require phpmailer/phpmailer ولكي تستخدمها، كما في المثال السابق، رابط توثيق المكتبة من على GitHub: github.com/Synchro/PHPMailer والمقالة المرفقة تحوي شوحات إضافية:
  2. يمكن استخدام حل أسرع وهو الدالة asfreq حيث أنها لاتتطلب إعادة إنشاء index على عكس reindex: dates = pd.Index([pd.Timestamp('2022-07-01'), pd.Timestamp('2022-07-04'), pd.Timestamp('2022-07-06')]) s = pd.Series([1, 2, 3], dates) print(s.asfreq('D')) 2022-07-01 1.0 2022-07-02 NaN 2022-07-03 NaN 2022-07-04 2.0 2022-07-05 NaN 2022-07-06 3.0 Freq: D, dtype: float64 كما أن reindex تفشل في حال وجود قيم مكررة duplicate values. كما يمكن استخدام timestamps بتطبيق الدالة DatetimeIndex: df = pd.DataFrame({ 'timestamps': pd.to_datetime( ['2016-11-15 1:00','2016-11-16 2:00','2016-11-16 3:00','2016-11-18 4:00']), 'values':['a','b','c','d']}) df.index = pd.DatetimeIndex(df['timestamps']).floor('D') df yields timestamps values 2016-11-15 "2016-11-15 01:00:00" a 2016-11-16 "2016-11-16 02:00:00" b 2016-11-16 "2016-11-16 03:00:00" c 2016-11-18 "2016-11-18 04:00:00" d وحل آخر باستخدام resample التي تحل مشكلة duplicate values: df.resample('D').mean()
  3. char هو عبارة نمط بيانات أولي primitive data type يستعمل لتخزين المحارف (أي محرف في لوحة المفاتيح أو غيرهم) كما يمكن تعريف مصفوفة من المحارف أيضا عن طريقه.. مثال لتعريف محرف وحيد و مصفوفوة محارف: char ch = 'a'; // محرف وحيد char[] charArray ={ 'a', 'b', 'c', 'd', 'e' }; // مصفوفة محارف يمكننا تعريف مصفوفة من المحارف بحيث يكون كل عنصر منها يسمح بتخزين محرف وحيد.. char[] CharArray = new char[5]; CharArray[0] = 'w'; CharArray[1] = 'a'; CharArray[2] = 'e'; CharArray[3] = 'l'; لاحظ كيفية استخدام دليل العنصر للوصول للمكان المناسب لتخزين الحروف. لطباعة الحرف a من المصفوفة السابقة نصل له عن طريق الدليل 1: System.out.println(CharArray[1]); // 'a' وللمرور على المصفوفة و طباعة قيمها بإحدى الطريقتين: for (char c : CharArray) { System.out.println(c); } for (int i=0; i< CharArray.length; i++) { System.out.println(CharArray[i]); } للتحويل بين قيمة رقمية و محرفية يمكن استخدام القصر casting التي هي وضع نمط البيانات بين قويسين (char) int a=1; char c=(char)(a+'0'); // '1' int a=65; char c=(char)a; // 'A' ويمكن استخدام دوال الصنف Charecter لعمل التحويل: int REDIX=10; // النظام العشري int a=1; char c=Character.forDigit(a,REDIX); System.out.println(c); // '1' كما يمكن استخدام الدالة toChars Character.toChars(48) // '0' Character.toChars(49) // '1' Character.toChars(65) // 'A' Character.toChars(66) // 'B' Character.toChars(127) // 'a' Character.toChars(128) // 'b' قيمة كل محرف ثابتو حسب نظام جدول ASCII يمكنك الاطلاع عليه، وبعمل عمليات الجمع و الطرح يمكن التحويل بين الأرقام و المحارف
  4. المشكلة بسبب لغة الحاسوب وطريقة تنسيق التاريخ و الوقت فيه، أرجو التوجه للزاوية اليسرى في الأسفل وظبط تنسيق التاريخ للغة الانكليزية مع ضبط المنطقة الزمنية.. ثم أعد تشغيل أندرويد استديو ضبط لغة الحاسوب للانكليزية يمكن أن يحل المشكلة، تأكد من إعادة التشغيل.
  5. هل تحاول قراءة صيغة التاريخ المكتوبة بأحرف عربية؟ حاول إرفاق نص الخطأ منسوخاً من فضلك
  6. إن الاحتراف بأي مجال ضمن البرمجية يتطلب تعلم مستمر واطلاع على المستجدات. دورة PHP كافية لإدخالك سوق العمل، أما للتميز والاحتراف كما ذكرت أنصحك بالتدرب على الخوارزميات و حل مسائل problem solving حيث يمكنك استخدام أي لغة برمجة c - ++c - التي تريدها
  7. الخطأ بسبب تمرير بيانات غير متوافقة مع التنسيق الذي تقبله الدالة المرر لها.. أرجو التحديد بدقة السطر الذي أعطا الخطأ، ما هي الدالة المستدعاة و ما هو النص الأصلي المرر لها. كما يبدو تحاول تمرير سلسلة نصية بتنسيق الوقت date ولكن القيمة خطأ
  8. بالرغم من أن مجال problem solving بعيد بعض الشيئ عن مجال الويب، إلا أن تعلمك لكتابة الأكواد وحل مسائل برمجية سيفيدك بالطبع، ولكن استخدامهم قليل في مجال الويب. المسار الأول في دورة علوم الويب تعلم سكراتش، وهي لغة برمجة تفاعلية ومفيدة كبداية للمبتدئين في البرمجة، أما بافي الدروس في مسار الأساسيات تهتهم بأساسيات هندسة البرمجيات والمخططات الدفقية و هي أساس الخوارزميات. مع أن دورة PHP تكفي لتعلم PHP مع إطار Laravel ولكن مواضيعها مختلفة عن دورة علةم الحاسب.
  9. دورة علوم الحاسب هي دورة عامة في مجال البرمجية، تعطيك فكرة جيدة عن مجالات متنوعة وهي تهتم بمبدائ البرمجة و الخوارزميات و أساسيات التفكير المنطقي، وأساسيات HTML - CSS وسطر أوامر لينوكس وقةاعد البيانات.. أي تجعلك مهيأ للدخول في أي مجال و التخصص لاحقاً، مثل مطور واجهات أمامية أو خلفية أو برمجة تطبيقات الهاتف.. بالنسبة لدورة PHP ستتعلم النظم الخلفية وكيفية بناء المشاريع وكيفية تواصل الواجهات الأمامية مع المخدم (الواجهات الخلفية) وأنواع طلبات HTTP methods، وأساسيات PHP والدوال فيها والأصناف وكل مايلزمك للتعامل معها.. ثم ستتعلم إطار عمل Laravel مع تطبيقات و مشاريع عليه والكثير غيرهم.. كملخص، يوجد العديد من الفروقات بينهم، إن لم يكن لديك أي خلفية برمجية يفضل الدخول من باب دورة علوم الحاسب ثم الانتقال لدورة PHP.. أيضا الاشتراك في دورة PHP يفتح لك مسار الأساسيات في دورة علوم الحاسب وهي مفيدة لك إن لم تشترك بدورة علوم الحاسب. لمعلومات أكثر تصفح كل من الدورتين، مقالات مفيدة:
  10. إن كنت تستخدم إطار العمل Express فأصبحت الدوال و التوابع الخاصة بعملبات التحويل مضمنة مسبقاً ويمكنك استخدام: app.use(express.json()); أو: app.use(express.urlencoded()); //دعم تشفير URL
  11. بالإضافة لحل شرف الدين، إن كنت تريد استعراض محتوى الملف و تعديله، يمكن فتحه باستخدام محرر nano sudo nano /boot/efi كما يمكن كتابة كل من التلي ثم تنفيذ ماتريد: sudo su sudo -s بعدهم: cd directory..
  12. إن كانت الشفافية لديك متعلقة بلون الخلفية، لا تضع خاصية opacity لأنه يتم وراثتها في css للأولاد وتطبق عليهم لذلك، استبدل الشيفرة التالية: background-color: rgb(0,0,255); opacity: 0.5; ^^^^ ^^^^^^^^^ بإضافة معامل الشفافية للون الخلفية لديك أي المعامل alpha في rgba: background-color: rgba(0,0,255,0.5); ^^^^ ^^^^ هذا يعطي نفس التأثير.. ربما تحتاج لعمل rgba مرتين مع إلغاء الشفافية اللونية للعنصر الابن: .parent { background-color: rgba(0,0,0,0.5); } .child { background-color: rgba(128,128,128,0); }
  13. أفضل طريقة كالتالي: تشغيل PowerShell مع صلاحيات الأدمن Administrator ثم تنفيذ الأوامر التالية: Set-ExecutionPolicy Unrestricted -Scope CurrentUser -Force npm install -g npm-windows-upgrade npm-windows-upgrade وإن أردت تحديد إصدار معين يمكن تنفيذ التالي: npm-windows-upgrade -p -v latest لمعلومات أكثر من الرابط: npm-windows-upgrade كما يمكنك تحميل حزمة تبيت node الجديدة التي لها لاحقة msi من الموقع الرسمي وتنصيبها، فهي تعمل على استبدال النسخ القديمة. كما يمكنك التوجه لمسار تثبيت node ومن ثم تنفيذ التثبيت بشكل عادي: cd C:\Program Files (x86)\nodejs npm install npm وإن كنت تستخدم الأداة Chocolatey يمكن تحديث كل من node + npm بسهولة كالتالي: choco update nodejs choco update npm
  14. موضوع تحديث أنظمة الهاتف ليس بالأمر السهل مثل الحاسوب، لأن أجزاء الهاتف متغيرة جداً ونوعاً ما ترتبط بالشركة المصنعة التي تقدم السوقات Drivers للمكونات الصلبة Hardware فيه والتي تكون متوافقة فيما بينها. أي الحصول على نظام 64 مقدم للهاتف من نفس الشركة المصنعة احتمال غيرموجود. إن قمت بجلب نظام تشغيل أندرويد 64 بت وقمت بتثبيته على الأغلب سيعمل ولكن تحتاج لمتابعة شروحات دقيقة لتتأكد من أنه متوافق مع قطع الهاتف. موضوع التوافق الذي أتحدث عنه لايقتصر علاى المعالج، بل شبكات الاتصالات والكاميرة، إن أردت التجريب حاول تثبيت أنظمة تشغيل custom ROMs
  15. إن المعالج لديك هو بنظام 64-bit ولكن نظام التشغيل المثبت على الجهاز هو 32-bit. بشكل عام المعالج يقبل نظام تشغيل 64 بت، وسيعمل إن كان نظام التشغيل الذي سوف تثبته متوافقاً مع بقية مكونات الجهاز.
  16. يمكن الاعتماد على الدالة onError لتضع صورة من عندك (تدل على عدم وجود صورة مثلا/خطأ تحميل) this.state = ({ image:{uri: this.props.imageUrl} }) const setimage = () => { this.setState=({image: require('../images/logo.png') }) } <Image source={this.state.image} style={styles.imageThumbnail} onError={()=>setimage()} /> عند حدوث مشكلة في تحميل الصورة، سيتم تعويضها بصورة من عك مثلا اللوغو..
  17. عليك بناء المشروع، ستلاحظ وجود قائمة build في شريط العنوان، تسمح لك بعمل نسخة APK أو ABB لرفعها على المتجر، على كل حال يلزم توقيع التطبيق app signing لعمل مفتاح خاص به. أولا لتوقيع التطبيق سيتم عمل مفتاح فيه بيانات يمكنك تعبئتها: لتوقيع التطبيق app-signing ثم يمكنك التوجه لتوثيق أندرويد استديو من الرابط: بناء التطبيق ثم حسب الجدول توجه إلى Build Bundle(s) / APK(s) > Build Bundle(s) تحوي خطوات بناء النسخة للرفع.
  18. حاول التواصل مع مركز مساعدة حسوب سيخبرونك في حال توفر أي كوبونات خصم على الدورات.
  19. هل قمت ببناء التطبيق قبل رفعه على المتجر؟ لايمكن رفع المشروع بصيغة غير apk أو aab.
  20. حاول تحديد اسم الجدول ب ` backticks, لاحظ ان متغير الشرط if الأخير مختلف عن الذي يحفظ نتيجة الاستعلام.. هل تقصد result0
  21. أرجو الانتباه لوضع فراغات بين أسم الجدول والقوس.. INSERT INTO cloths_fabric(item, ^^^^ INSERT INTO cloths_fabric (item,
  22. افصل الجزئين من أكواد جافاسكربت لملفات منفصلة، ثم أعد تضمينهم في الصفحة، الشيفرة قصيرة لامشكلة من تكرارها،.. وربما في المستقبل، تضيف تعديلات لمنطق الإشعارات أو الرسائل ولا تحتاجه في الجزء الآخر فالفصل بينهما الآن أفضل. لكي تجعل الشيفرة ديناميكية، ضعها في دالة ما، ثم مرر كوسيط لها المتغيرات المختلفة، مثل رابط الموقع، وعناصر HTML التي يتغير محتواها.. function myFunNotificatio(URL_Link, HTML_ELEMENT) { { $j.ajax({ url:URL_Link, // تعديل method:"POST", data:{view:view}, dataType:"json", success:function(data) { $j(HTML_ELEMENT).html(data.notification); // ثاني تعديل if(data.unseen_notification > 0) { $j('.count').html(data.unseen_notification); } } }); } } لاحظ أن الرابط و العنصر الذي يتعدل محتواه متغيران فقط، قمت بعمل مثال بسيط، طور الجدالة لديك، واسدعيها عدد من المرات حسب تغيير الوسطاء لديك.. myFunNotificatio(Link_1, Element_1) myFunNotificatio(Link_2, Element_2) ...
  23. هل تأكدت من تثبيت المكتبة؟ ربما هي غير متوفرة في حاسوبك، ثبتها بالأمر: pip install bcrypt رابط المكتبة: bcrypt
  24. سؤالك مطروح مسبقاً وقام عدة مدربين بتقديم إجابات وتنوعة له، يمكنك مراجعة السؤالين: والسؤال: ثم يمكنك مراجهة هذه المقالة: وإن احتجت لأي توضيحات، اقتبس إجابتي وأضف سؤال واضح ومحدد من فضلك.
  25. يمكن عكس قائمة عن طريق slice كالتالي: myList = myList[::-1] print(myList) إن لم ترد حفظ الناتج، يمكن استخدام الدالة reversed التي تعيد iterator يمكن المرور عليها بحلقة: for i in reversed(myList): print(i) وإذا كنت تريد حفظه للدالة reversed يمكن تحويل الناتج لقائمة: list(reversed(myList)) كما يمكن استخدام numpy والدالة flip: import numpy as np array = [0, 10, 20, 40] list(np.flip(array)) [40, 20, 10, 0] كما يمكن استخدام تابع الترتيب وعمل ترتيب تنازلي.. بتمرير المعامل reverse=True myList.sort(reverse=True)
×
×
  • أضف...