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

عبدالباسط ابراهيم

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

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

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

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

    12

كل منشورات العضو عبدالباسط ابراهيم

  1. يعتمد هذا الكود على بعض المكتبات ويستخدم مكتبة jquery أيضاً ولكن الكود الأساسي عبارة عن تنفيذ بعض ال animations الخاصة بالكلاس 'la-animate' عند تحميل ال html فقط $(document).ready(function () { droopy(); $('.preloader-it > .la-anim-1').addClass('la-animate'); }); //الكود السابق هو المسئول عن ذلك عند إنتهاء تحميل الموقع من صور وملفات سيتم إختفاء ال preloader تدريجياً وهناك أيضاً عناصر Progress Bar يتغير عرضه بواسطة ال scroll عن طريق المكتبة wayPoint $(window).on("load", function () { $(".preloader-it").delay(500).fadeOut("slow"); //تدريجياً preloader هنا يتم إختفاء ال /*Progress Bar Animation*/ var progressAnim = $('.progress-anim'); //Progress Bar هنا الكود الخاص بال if (progressAnim.length > 0) { for (var i = 0; i < progressAnim.length; i++) { var $this = $(progressAnim[i]); $this.waypoint(function () { var progressBar = $(".progress-anim .progress-bar"); for (var i = 0; i < progressBar.length; i++) { $this = $(progressBar[i]); $this.css("width", $this.attr("aria-valuenow") + "%"); } }, { triggerOnce: true, offset: 'bottom-in-view' }); } } });
  2. من خلال os.environ يمكنك الحصول على متغيرات البيئة من خلال import os print(os.environ['VARIABLE_NAME']) ويمكنك التحقق من وجود المتغير من خلال الشرط التالي 'VARIABLE_NAME' in os.environ حيث سيتم إرجاع true أو false على حسب وجود المتغير
  3. يمكنك إرسال mail بالإضافة لل attachment عن طريق إنشاء MIME ثم إضافة البيانات مثل from , to , Date و subject بعد ذلك نضيف المرفقات ولكن بعد قرائتها ثم عمل encode لها ل base64 ثم نرسل ال mail import smtplib from pathlib import Path from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email.mime.text import MIMEText from email.utils import COMMASPACE, formatdate from email import encoders def send_mail(send_from, send_to, subject, message, files=[], server="localhost", port=587, username='', password='', use_tls=True): msg = MIMEMultipart() msg['From'] = send_from msg['To'] = COMMASPACE.join(send_to) msg['Date'] = formatdate(localtime=True) msg['Subject'] = subject msg.attach(MIMEText(message)) for path in files: part = MIMEBase('application', "octet-stream") with open(path, 'rb') as file: part.set_payload(file.read()) encoders.encode_base64(part) part.add_header('Content-Disposition', 'attachment; filename="{}"'.format(Path(path).name)) msg.attach(part) smtp = smtplib.SMTP(server, port) if use_tls: smtp.starttls() smtp.login(username, password) smtp.sendmail(send_from, send_to, msg.as_string()) smtp.quit()
  4. إلى أين وصلت في دورة مسار تطوير تطبيقات الويب باستخدام لغة PHP ؟ أعتقد أنك ما تزال في أساسيات ال php أو laravel وكما وضح محمد في التعليق السابق طريقة جيدة للتطبيق على ما تعلمت ولكن إذا كنت تبحث عن تطبيقات فإنك ستجد بعد أساسيات ال php و laravel ما يقرب من الخمس تطبيقات وهذه التطبيقات كبيرة حيث ستتطبق على كل ما تعلمته وإكتساب خبرات جديدة وتعلم الممارسات والطرق السليمة لحل مشكلة ما في تطبيق بعض وظائف الموقع لذلك قم بدراسة أساسيات ال php و laravel بالتطبيق عليهما من خلال بعض التمارين التي يشرحها المدرب ثم بعد ذلك قم ببناء التطبيقات الموجودة في الدورة
  5. اعتقد أنه ربما يوجد لديك إضافة مثل أي linter حيث يقوم بإكتشاف هذا المتغير على أنه المتغير name الخاص بالكائن window ربما يكون خطأ في الإضافة لذلك ستجد أنه عند محاولة طباعة المتغير في المتصفح سيظهر بدون مشاكل قم بإلغاء تفعيل الإضافات الخاصة بال linter الموجودة في vs code وجرب مرة أخرى و أيضاً جرب تغيير اسم المتغير لاسم آخر لترى النتيجة
  6. توفر لك ال models دالة جاهزة لهذه الوظيفة وهي model.count_params() كما يمكنك الحصول على ملخص لل parameters من خلال هذه الدالة model.summary()
  7. يعتبر الثلاث تقنيات cross platform أي متعددة المنصات وتختلف كل منصة على حسب اللغة المستخدمة لذلك بما أنك مطور ويب فربما تعلمت React لذلك أنصحك بتعلم React native بدلاً من تعلم لغة أخرى مثل Dart للعمل ب Flutter ومن ناحية إنتشار التقنية في منصات العمل الحر والدعم الموجود لكل منصة فستجد أن React native الأكثر إنتشاراً ولكن Flutter تكتسب دعماً وإنتشاراً بسرعة ويزداد الطلب عليها سريعاً وبالنسبة للتطبيقات التي يمكنك بنائها من خلال هذه التقنيات فهي تطبيقات كبيرة حيث تم بناء تطبيق ال facebook بواسطة react native لذلك قم بإختيار تقنية منهم وقم بإتقانها جيداً فليس هناك فرق كبير بينهما
  8. في الطريقة الثانية تقوم أنت بالقيام ب إنشاء server بنفسك ولكن في الطريقة الأولى يقوم express بالقيام بذلك بدلاً عنك حيث أن ربما تستخدم ال HTTP server في وظيفة أخرى مثل استخدام socket.io سيكون كالتالي var express = require('express'); var app = express(); var server = require('http').createServer(app); var io = require('socket.io').listen(server); ... server.listen(1234); مع أن أيضاً app.listen() تقوم بإرجاع الكائن HTTP server
  9. كما وضح محمد في التعليق السابق فإنه يمكنك تنفيذ ذلك من خلال os.system('cls') ولكن ذلك يعمل في windows فقط ولجعلها تعمل على العديد من المنصات قم بتنفيذ الدالة التالية حيث نضيف لها "clear" مع cls import os def cls(): os.system('cls' if os.name=='nt' else 'clear') #الأن سيعمل الكود على العديد من المنصات cls()
  10. يمكنك ببساطة إرسال JSON بواسطة المعامل json بداية من الإصدار Requests 2.4.2 حيث سيكون الكود كالتالي url = 'https://api.github.com/some/endpoint' payload = {'some': 'data'} r = requests.post(url, json=payload) ال payload هو البيانات على صيغة JSON ويمكنك أيضاً استخدام المعامل data ولكن مع استخدام الدالة json.dumps كالتالي import json #لا تنسى استدعاء json url = 'https://api.github.com/some/endpoint' payload = {'some': 'data'} r = requests.post(url, data=json.dumps(payload))
  11. أولاً يجب عليك قراءة بعض المعلومات حول الويب والمجالات المتاحة خلاله مثل frontend أو backend من خلال قراءة هذه المقالة ستفهم الموضوع بشكل واسع وبالنسبة للدورات فالأفضل والأصح أخذ دورة " تطوير واجهات المستخدم " للعمل ك frontend وإذا أردت الإحتراف في مجال ال frontend يمكنك أن تأخذ دورة " تطوير التطبيقات باستخدام لغة JavaScript " وعند تعلم ال backend يمكنك أخذ أياً من الدورتين تطوير تطبيقات الويب باستخدام لغة PHP تطوير التطبيقات باستخدام لغة JavaScript ولكن قبل إختيار أياً من الدورات يجب عليك قراءة المقالة السابقة ثم قراءة جميع المعلومات حول الثلاث دورات حتى تقرر بنفسك ماذا تختار أما إذا كنت قررت أخذ الثلاث دورات وعلى علم بالويب فالترتيب الأفضل تطوير واجهات المستخدم تطوير التطبيقات باستخدام لغة JavaScript تطوير تطبيقات الويب باستخدام لغة PHP
  12. حسب ما فهمت أنك تريد إنشاء decorator نمرر له arguments ويمكننا عمل ذلك من خلال إنشاء دالة تقبل ال arguments وننشأ دالة أخرى بداخلها تقبل دالة وترجع دالة أخرى أو (بمعنى آخر يعتبر ال decorator ) ثم بداخلها ننشاً الدالة wrapper لذلك سيصبح الكود مشابه للتالي def decorator_maker(argument): def decorator(function): # decorator هنا يعتبر هذا هو ال def wrapper(*args, **kwargs): some_stuff() function_with_argument(argument) result = function(*args, **kwargs) return result return wrapper return decorator #argument يقبل ال decorator الأن نرجع
  13. يمكنك أن تستخدم لغة البرمجة python في العديد من الوظائف حيث تعتبر لغة برمجة general-purpose ما عليك سوى تحديد المجال الذي تريد العمل فيه مثل من أكثر المجالات المطلوبة ل python هو تطوير تطبيقات الويب أو ال backend من خلال العديد من الإطارات مثل Django أو Flask والعديد من الإطارات الأخرى برامج ال CLI برمجة تطبيقات سطح المكتب من خلال العديد من المكتبات تعتبر أيضاً برمجة الألعاب بلغة python مطلوبة ويمكنك بناء ألعاب قوية من خلال المكتبات Arcade أو PyGame يمكنك استخدامها في ال Web Scraping أيضاً توجد العديد من المجالات الأخرى مثل تعليم الآلة والذكاء الإصطناعي ولكن مجال ال web يعتبر منتشر أكثر وسهل نسبياً
  14. بالطبع يمكنك استخدام '{:,}'.format(n) كما في التعليقات السابقة ولكن هناك صيغة أخرى لدالة format وهي كالتالي value = 1000000 print (format (value, ',d')) # كالتالي f ب d استبدل ال float إذا كان الرقم value = 1000000.30 print (format (value, ',2f')) #2f رقمين فقط بعد العلامة يمكنك القراءة أكثر عن الدالة format من موسوعة حسوب
  15. أولاً تعتبر ال php لغة server-side للتعامل مع قواعد البيانات أما javascript في لغة client-side تعمل في المتصفح للتعامل مع واجهات المستخدم لذلك أما إذا كنت تقصدين تطوير التطبيقات من جهة ال server-side فيجب المقارنة بين php و nodejs حيث أن ال nodejs هي البيئة التي تجعل من javascript تعمل في ال server-side وبالنسبة لسهولة التعلم فليس هناك فرق كبير بين ال php وال javascript فتعتبر اللغتين من اللغات سهلة التعلم وبالنسبة لسهولة تطوير التطبيقات فالأسهل php حيث يوجد دعم كبير وتوفر العديد من المكتبات لجميع المشاكل التي تواجهها كما أن ال php لغة server-side في الأساس وبالأخير يفضل أختيار اللغة التي تخدم أهدافك والتي تفضلها وبالنسبة لسهولة التعلم فليس هناك فرق كبير
  16. يمكنك استخدام ال $bsonSize ويعتبر aggregation operator بداية من Mongo 4.4 سيقوم الكود التالي بإرجاع الحجم لكل مستند db.collection.aggregate([ { $group: { _id: null, max: { $max: { $bsonSize: "$$ROOT" } } }} ]) ال max سيحمل الحجم لكل مستند يمكنك قراءة المزيد من المعلومات عن ال $bsonSize من هنا
  17. نعم هناك فرق في استخدام الكود كما في الطريقة السابقة حيث أن ال "classic" style classes كالتالي class ClassicSpam: pass ال "new" style classes كالتالي class MyClass(object): pass الطريقة الثانية تم إضافتها في الإصدار 2.2 وتتميز بدعمها ل يمكنك استخدام ال property لإدارة الخصائص ال slots لتحديد الخصائص المطلوبة الدالة __new__ لتحديد كيفية إنشاء الكائنات من الاصناف الدالة super() يمكنك القراءة عن هذه الإضافات بتعمق أما في الإصدار الثالث فإنه سواء استخدمت الطريقة السابقة أم لا فإنه يتم استخدام ال"new" style classes مما يعني أن الكود التالي class MyClass(object): pass مكافئ تماماً ل class MyClass(): pass
  18. يمكنك قراءة التعليمات والخطوات التي من المفترض أنك قد تخطيتها وقمت بتنفيذ المطلوب ثم بعد ذلك يمكنك التواصل مع الإدارة لإجراء الإمتحان ولكن أولاً قم بقراءة التعليمات في هذا الرابط
  19. كما وضح محمد في التعليق السابق فإنه يمكنك تخزين الملف على صيغة HDF سواء باستخدام ال h5py أو ال pytables من خلال h5py يمكنك حفظ البيانات في ملف كالتالي import numpy as np import h5py data_to_write = np.random.random(size=(100,20)) # إنشاء مصفوفة #إنشاء ملف with h5py.File('name-of-file.h5', 'w') as hf: hf.create_dataset("name-of-dataset", data=data_to_write) #قراءة ملف with h5py.File('name-of-file.h5', 'r') as hf: data = hf['name-of-dataset'][:] أو من خلال numpy يمكنك استخدام savez_compressed لحفظ البيانات الضخمة في ملف مضغوط وهو يكون على صيغة npz من خلال الدالة numpy.savez_compressed(file, *args, **kwds)
  20. يمكنك أيضاً استخدام hstack وسيكون كالتالي أولاً توليد قيم عشوائية import numpy as np a = np.array([ [1, 2,], [3, 4] ]) x = np.random.rand(a.shape[0], 1) ثانياً إضافة هذه القيم من خلال ال hstack b = np.hstack((a, x))
  21. يتوجد العديد من الطرق والمكتبات التي تستطيع تنفيذ ما تريده من خلالها ومن هذه الإضافات markdown-include حيث يمكنك إنشاء العديد من الملفات ثم إستدعائها في ملف واحد كالتالي تثبيت الإضافة npm install -g markdown-include إنشاء ملف markdown.json لإضافة الإعدادات مثل الملف النهائي والملفات المطلوبة ثم من خلال الأمر التالي يمكنك استدعاء الملفات #include "markdown-file.md" أخيراً يمكنك تنفيذ المطلوب من خلال ال command line من الأمر التالي node_modules/bin/cli.js path/to/markdown.json قم بمراجعة المستودع الخاص بالمكتبة للإطلاع على المزيد من المعلومات
  22. من الطبيعي أن يحدث ما تقوله حيث أنك قمت بتخزين قيمة wantNotification مبدئياً ب No لذلك عند الضغط على الزر أول مرة سيتم تخزين القيمة No في ال AsyncStorage ولكن عند الضغط المرة الثانية سيكون قد تم تغيير القيمة من خلال setWantNotification('YES'); لذلك في المرة الثانية سيتم تخهزين القيمة Yesفي ال AsyncStorage لذلك جرب القيام بالتعديل التالي وسترى أنه يقوم بتخزين القيمة Yes من أول مرة { text: 'OK', onPress: async () => { await storeNotificationAsync("yes"); //لاحظ هذا التعديل await console.log(wantNotification); }, }, ستفهم طريقة تنفيذ الكود بعد التعديل و يمكنك بعد ذلك التعديل على البرنامج كما تريد
  23. لا أعتقد انه يوجد كلاس جاهز لذلك يمكنك توسيط العنصر بالعديد من الطرق وتختلف حسب الكود الذي تستخدمه حيث يمكنك استخدام ال flexbox .flex-container { display: flex; align-items: center; justify-content: center; flex-direction: column; }
  24. ماذا تقصد؟ إذا كنت تقصد عمل ذلك من خلال css أو التصميم فقط فيمكنك تنفيذ ذلك من خلال ال border يمكنك تصميم الأسهم كالتالي <div id="triangle-up"></div> ثم إضافة التنسيقات #triangle-up { width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-bottom: 100px solid red; } والكود السابق يجعل السهم لأعلى ولعمل السهم لأسفل يمكنك استخدام #triangle-down { width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-top: 100px solid red; /* bottom بدلاً من top لاحظ */ } وبالنسبة للعداد أو الرقم الوجود بين الأسهم فيمكنك استخدام الجافاسكربت لتنفيذ ذلك كالتالي <h1 class="counter-display">(..)</h1> <button class="counter-minus">-</button> <button class="counter-plus">+</button> <script> let counterDisplayElem = document.querySelector('.counter-display'); let counterMinusElem = document.querySelector('.counter-minus'); let counterPlusElem = document.querySelector('.counter-plus'); let count = 0; updateDisplay(); counterPlusElem.addEventListener("click",()=>{ count++; updateDisplay(); }) ; counterMinusElem.addEventListener("click",()=>{ count--; updateDisplay(); }); function updateDisplay(){ counterDisplayElem.innerHTML = count; }; </script>
  25. من خلال منصات العمل الحر مثل مستقل فبالتأكيد يمكنك العمل بدون مشاكل ولا يشكل العمر عائق في العمل حيث في منصات العمل الحر تنفيذ لعمل على أكمل وجه هو الأولوية أما بالنسبة للشركات فمن الصعب أن تجد وظيفة في هذا العمر ولكن ربما توجد بعض الشركات التي تقبل العمل في هذا العمر وأنا أجد أن محاولة العمل في هذا العمر خطوة جيدة لتكتسب الخبرة مبكراً وما يجب عليك عمله هو التعلم بشكل جيد وكثرة التطبيق
×
×
  • أضف...