-
المساهمات
4345 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
11
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
أجوبة بواسطة عبدالباسط ابراهيم
-
-
أفترض أن عمود DOB الخاص بك بالفعل من النوع datetime64 حيث أن بالفعل قمت بتحويله ولكن تحتاج لتعديل ال format فقط من خلال style.format كالمثال التالي
df DOB 0 2019-07-03 1 2019-08-03 2 2019-09-03 3 2019-10-03
لاحظ ال format قبل التعديل
df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
ستصبح mm/dd/yyyy
df.style.format({"DOB": lambda t: t.strftime("%d-%m-%Y")})
ستصبح dd-mm-yyyy
- 1
-
يمكنك استخدام ال operator.or من خلال المكتبة operator لاحظ المثال التالي
filter_kwargs = { 'field_a': 123, 'field_b__in': (3, 4, 5, ), } list_of_Q = [Q(**{key: val}) for key, val in filter_kwargs.items()] Item.objects.filter(reduce(operator.or_, list_of_Q))
في Python3 ، لم تعد الدالة reducer موجودة built in في بايثون بعد الآن ، يمكنك استخدامها من خلال
from functools import reduce
- 1
-
نعم الnode تعتبر single-threaded مع أن هناك بعض الإضافات التي تضيف ال multi threading لل nodejs
ولكن تقوم بمعاملة ال concurrent requests أو الطلبات المتزامنة بواسطة ال Singlethreaded event loop حيث تعتبر ال nodejs غير متزامنة وذلك يتيح لها معاملة الطلبات بدون عمل block لغيرها لاحظ الشرح التالي لتفهم الفكرة
request ──> ينتج thread └──> إنتظار قاعدة البيانات └──> الرد request ──> ينتج thread └──> إنتظار قاعدة البيانات └──> الرد request ──> ينتج thread └──> إنتظار قاعدة البيانات └──> الرد
لاحظ الشكل السابق كيف يعالج الطلبات بواسطة ال multi threading
request ──> معالجة الأمر في قاعدة البيانات request ──> معالجة الأمر في قاعدة البيانات request ──> معالجة الأمر في قاعدة البيانات database request complete ──> الرد database request complete ──> الرد database request complete ──> الرد
لاحظ الفرق بين طريقة المعالجة
لذلك يتم تنفيذ ال multi threading بشكل مختلف ولكن قاعدة البيانات التي تفرق في السرعة
قم بقراءة الإجابات على السؤال التالي للفهم أكثر
-
هل تقصد كورس اطار العمل دجانغو لتطوير تطبيقات الويب في أكاديمية حسوب بالتحديد ؟
إذا كان كذلك فلا يوجد حالياً كورس تطوير تطبيقات الويب بواسطة اطار العمل دجانغو ولكن يوجد كورسين
تطوير تطبيقات الويب بواسطة
- php
- ruby
أما إذا كنت تقصد كورس تطوير تطبيقات الويب بواسطة اطار العمل دجانغو عموماً ليس في الأكاديمية بالتحديد فبالطبع يوجد الكثير من الكورسات سواء المجانية أو المدفوعة
ماعليك سوى البحث عن عن هذه الكورسات وإذا كنت تجيد اللغة الإنجليزية ستجد هذا اكورس متوفر بكثرة ثم بعد ذلك قم بإختيار الكورس المفضل بالنسبة لك
-
توجد العديد من المكتبات سواء المختصة بال react أو بال javascript عموماً ولكن المكتبات الأفضل بالنسبة ل react يمكنك الحث عنها وستجد العديد من المكتبات مثل
- React Native Reanimated
-
Fluid transitions for React Navigation تعتبر هذه المكتبة خاصة بال Navigation
وتوجد العديد من المكتبات الأخرى يمكنك الإطلاع عليها وإختيار الأفضل بالنسبة لك
-
بالإضافة لما شرحه بلال فإنه يمكنك إرسال ال mail بواسطة الدالة mail ولكن في بعض الأحيان لا تكون هذه الدالة كافية أو لا تلائم إحتياجاتك مثل الأمان والتشفير أو المرفقات لذلك تحتاج لاستخدام مكتبة لتنفيذ المطلوب مثل PHPMailer
لتثبيت المكتبة بواسطة composer
composer require phpmailer/phpmailer
لاحظ المثال التالي
<?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; use PHPMailer\PHPMailer\Exception; require 'vendor/autoload.php'; $mail = new PHPMailer(true); try { //إعدادات الخادم $mail->SMTPDebug = SMTP::DEBUG_SERVER; $mail->isSMTP(); //استخدام SMTP $mail->Host = 'smtp.example.com'; $mail->SMTPAuth = true; $mail->Username = 'user@example.com'; // username $mail->Password = 'secret'; // password $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; $mail->Port = 465; //Recipients $mail->setFrom('from@example.com', 'Mailer'); $mail->addAddress('joe@example.net', 'Joe User'); //Add a recipient $mail->addAddress('ellen@example.com'); //Name is optional $mail->addReplyTo('info@example.com', 'Information'); $mail->addCC('cc@example.com'); $mail->addBCC('bcc@example.com'); $mail->addAttachment('/var/tmp/file.tar.gz'); //المرفقات $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); //Optional name //المحتوى $mail->isHTML(true); //محتوى html $mail->Subject = 'Here is the subject'; $mail->Body = 'This is the HTML message body <b>in bold!</b>'; $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; $mail->send(); echo 'Message has been sent'; } catch (Exception $e) { echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}"; }
يمكنك القراءة حول المكتبة أكثر من الرابط بالأعلى
-
بالإضافة لما تم شرحه في التعليق السابق يمكنك استخدام مكتبة مثل APScheduler حيث تسهل عليك عمل مثل هذه المهام لاحظ المثال التالي
from apscheduler.schedulers.background import BackgroundScheduler scheduler = BackgroundScheduler() job = None def tick(): print('One tick!')\ def start_job(): global job job = scheduler.add_job(tick, 'interval', seconds=3600) try: scheduler.start() except: pass
- 1
-
يعتبر الموضوع بسيط حيث يمكنك التحكم في ال scroll من خلال الخاصية scrollTop بواسطة javascript لاحظ الكود التالي من خلال jquery
var div = $('#div1'); div.scrollTop(div.prop("scrollHeight"));
و إذا كنت تريد التحرك ب animation يمكنك استخدام الكود التالي
$("#div1").animate({ scrollTop: $('#div1').prop("scrollHeight")}, 1000);
الكود السابق يقوم بتحريك الصفحة لأسفل ال div المحدد يمكنك استخدام هذا الكود ضمن موقعك كما تريد
- 2
-
بتاريخ On 8/22/2021 at 01:19 قال Abdulali Elbr:
1- وأنا حابب أدخل الإثنين بس كل وحدة طويلة ومنفصلة ، من أين أبدأ ، ما الأسهل علي ؟ رجاءً أفيدوني .
يعتبر المجالان كبيران وكلاهما تحتاج لتعلمهما الكثير من الوقت ويمتد للعديد من السنوات للوصول لمستوى إحترافي فيفضل إختيار مجال واحد منهما للعمل والتعمق فيه والإختيار يجب أن يتم بعد القراءة عن المجالين بدقة لإختيار المجال المناسب لك
بتاريخ On 8/22/2021 at 01:19 قال Abdulali Elbr:2- وهل أخذ هذا المجالين مع بعض فيه ربح أكثر ؟ أو التركيز على مجال واحد فيه ربح أكثر ؟
بالنسبة للعمل والربح فلا يعني تعلمك الكثير من المهارات أنك تستطيع العمل بسهولة عن الذي تعلم وتعمق في مجال واحد فتعلمك المجالين معاً غير صحيح ولن تقدر على ذلك
بتاريخ On 8/22/2021 at 01:19 قال Abdulali Elbr:3- وهل لو دخلت لدورة وأنهيتها سيسهل علي إنهاء الدورة الأخرى بوقت أقل ؟
بالطبع تعلمك لمجال في البرمجة يسهلك عليك الإنتقال لمجال آخر ولكن لن تستطيع التعمق في كلا المجالين كما لو تعلمت مجال واحد حيث أن كلاهما يحتاج لجهد كبير
بتاريخ On 8/22/2021 at 01:19 قال Abdulali Elbr:4- سؤال مهم جداً : هل الشخص إلي مايحب التصميم يجب ألا يدخل في برمجة وتطوير التطبيقات؟ وأيضاً هل نستطيع نبرمج التطبيق وشراء قالب تصميم ؟ ولا لازم أصمم من نفسي؟
بالنسبة لأنك لا تحب التصميم يمكنك التخصص في جزء ال backend فليس مطلوب منك الإهتمام بالواجهة كما أن جزء ال frontend غير مسئول عن التصميم إنما يقوم بتحويل التصميم (الذي يقوم المصمم بتجهيزه لك) إلى كود frontend
-
بالإضافة للطرق المقترحة في التعليق السابق يمكنك أيضاً من خلال pip ( إذا كان لديك pip ) بواسطة الأمر التالي
pip freeze
سيظهر لك قائمة لإصدارات الحزم المستخدمة ولكن إذا أردت Django فقط يمكنك استخدام الأمر
pip freeze | grep Django
- 1
-
هناك العديد من الطرق للقيام بذلك ، ولكن الأكثر وضوحا هو ببساطة استخدام Python debugger
فقط أضف السطر التالي إلى دالة view
import pdb; pdb.set_trace() #or breakpoint() #from Python3.7
وأيضاً إذا كنت تستخدم IDE مثل PyCharm سيوفر لك سهولة في تتبع الأخطاء في الكود
- 1
-
يبدو أن لا يتم تثبيت webpack لوجود ملفات قديمة أو ماشابه لذلك قومي بتثبيته ولكن هذه المرة مع إضافة المعامل --force كالتالي
npm i --save-dev webpack --force
-
التجريد هو من مفاهيم ال OOP الأساسية وهو ببساطة عملية إخفاء بعض التفاصيل وإظهار المعلومات الأساسية فقط للمستخدم
ويمكننا تنفيذ مفهوم التجريد من خلال
- abstract classes
- .interfaces
لاحظ المثال التالي
abstract class Animal { public abstract void animalSound(); public void sleep() { System.out.println("Zzz"); } }
ال abstract class لا يمكننا إنشاء كائنات منه إنما الوراثة منه فقط
وال abstract method لاتحتوي على body
أما بالنسبة interfaces فهي تقوم أيضاً بالتجريد ولكن ببعض الإختلافات عن ال abstract class
كما أن بالإضافة للتنفيذ التجريد بواسطة interface يمكنك أيضاً تنفيذ الوراثة المتعددة من خلالها
-
يمكنك استخدام ال OpenCV الأحدث كالتالي
import cv2 im = cv2.imread("abc.tiff",mode='RGB') print type(im)
والنتيجة تكون كالتالي
<type 'numpy.ndarray'>
كما يمكنك أيضاً استخدام المكتبة PIL (Python Imaging Library) لاحظ المثال التالي حيث تم تعريف دالتين لحفظ وتحميل الصورة كمصفوفة
from PIL import Image import numpy as np def load_image( infilename ) : img = Image.open( infilename ) img.load() data = np.asarray( img, dtype="int32" ) return data def save_image( npdata, outfilename ) : img = Image.fromarray( np.asarray( np.clip(npdata,0,255), dtype="uint8"), "L" ) img.save( outfilename )
-
يمكنك استخدام الدالة zip لتنفيذ المطلوب
for col in zip(*array): some_function(col)
ويمكنك أيضاً استخدام ال indexing
لاحظ المثال التالي
for col in range(arr.shape[1]): some_function(arr[:,col]) [1 2 3 4] [99 14 12 43] [2 5 7 1]
-
يمكنك أيضاً استخدم pickle لتنفيذ المطلوب كالتالي
import pickle my_data = {'a': [1, 2.0, 3, 4+6j], 'b': ('string', u'Unicode string'), 'c': None} output = open('data.pkl', 'wb') pickle.dump(my_data, output) output.close()
ويمكنك قراءة البيانات من الملف كالتالي
import pprint, pickle pkl_file = open('data.pkl', 'rb') data1 = pickle.load(pkl_file) pprint.pprint(data1) pkl_file.close()
وقم بقراءة الإجابات على هذا السؤال ستفيدك كثيراً في تنفيذ المطلوب
-
بتاريخ 2 ساعات قال Najah Alsaker:
اجل استخدمها
devServer: {
contentBase: path.join(__dirname, "/dist"),
port: 1239,
writeToDisk: true,
},وتم انشاء الملفات وبها ماكان موجود بشكل مقلص ولكن اي شيء جديد لا يتم تحديثه
هل التغييرات التي تجريها يتم تحديثها على المتصفح؟
-
يمكنك استخدام astype مع المعامل copy بالقيمة false
a = a.astype(numpy.float32, copy=False)
لكن لاحظ أن استخدام المعامل copy بالقيمة false أنه دائماً يقوم بعمل view وليس copy حيث أن هذه الدالة تقوم بتفادي النسخ إذا كانت تقدر على ذلك فهناك حالات لا تستطيع تنفيذ ذلك
- 1
-
إذا كنت تستخدمين الإضافة webpack-dev-server قومي بالتأكد من وجود الخاصية التالية
devServer: { writeToDisk: true }
ذلك في حالة أنه يتم عمل compile بنجاح
-
يمكنك استخدام np.isnan كما في التعليق السابق مع استخدام sum أو min ولكن أيضاً يمكنك استخدام
-
Dot
numpy.isnan(numpy.dot(a, a))
-
كما يمكنك استخدام any
numpy.any(numpy.isnan(a))
يعتبر استخدام dot الأسرع من بين الدوال السابقة
- 1
-
Dot
-
نعم هناك العديد من الدوال التي تمكنك من تنفيذ المطلوب مثل
استخدام concatenate
a = np.array([[1, 2], [3, 4]]) b = np.array([[5, 6]]) np.concatenate((a, b), axis=0) array([[1, 2], [3, 4], [5, 6]]) np.concatenate((a, b.T), axis=1) array([[1, 2, 5], [3, 4, 6]]) np.concatenate((a, b), axis=None) array([1, 2, 3, 4, 5, 6])
لاحظ استخدام المعامل axis
كما يمكنك استخدام stack
a = np.array([1, 2, 3]) b = np.array([4, 5, 6]) np.stack((a, b)) array([[1, 2, 3], [4, 5, 6]])
ويمكنك أيضاً استخدام الدالة array كالتالي
numpy.array( LIST )
- 1
-
جرب القيام باستخدام ال head واستخدام ال cdn كالتالي
import "../styles/globals.css"; import Head from "next/head"; function MyApp({ Component, pageProps }) { return ( <> <Head> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous" /> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/js/bootstrap.bundle.min.js" integrity="sha384-ygbV9kiqUc6oa4msXn9868pTtWMgiQaeYH7/t7LECLbyPA2x65Kgf80OJFdroafW" crossorigin="anonymous" ></script> </Head> <Component {...pageProps} /> </> ); } export default MyApp;
جرب هذه الطريقة وأخبرني بالنتيجة
-
تقوم الدالة argsort بإرجاع المؤشرات المستخدمة لاحقاً في فرز المصفوفة وتكون تصاعدياً إفتراضياً عن طريق إرجاع index العنصر حسب ترتيبه عند ترتيبه تصاعدياً وفي المثال السابق الذي طرحته لماذا تتوقع ذلك الناتج لذلك قم بالإطلاع النتاج وستعرف طريقة عملها
print (arr.argsort()) # Output: [2 3 1 0]
الناتج السابق يعني أن ال index 2 يجب أن يكون في أول المصفوفة ويعني أيضاً أنه أصغر رقم
- 2 هو ال index الخاص بالعنصر 0.0
- 3 هو ال index الخاص بالعنصر 0.1
- 1 هو ال index الخاص بالعنصر 1.41
- 0 هو ال index الخاص بالعنصر 1.48
- 1
-
يمكنك استخدام العديد من الدوال السابقة كما في التعليقات ولكن إذا كنت تريد تحويلها إلى نوع float فهناك دالة لذلك np.asfarray حيث ترجع المصفوفة المطلوبة إلى نوع float
import numpy as np stringArray = np.array(["1.000", "1.235", "0.000125", "2", "55", "-12.35", "0", "-0.00025"]) floatArray = np.asfarray(stringArray, dtype = float) print(stringArray) print(floatArray)
الناتج يكون كالتالي
['1.000' '1.235' '0.000125' '2' '55' '-12.35' '0' '-0.00025'] [ 1.000e+00 1.235e+00 1.250e-04 2.000e+00 5.500e+01 -1.235e+01 0.000e+00 -2.500e-04]
كيفية الكتابة على ملف إكسيل دون تعديل القيم الموجودة فيه باستخدام Pandas
في بايثون
نشر · تم التعديل في بواسطة عبدالباسط ابراهيم
خطأ إملائي
كما شرح أحمد أنه تحتاج لإستخدام المكتبة openpyxl في حفظ البيانات من pandas
لذلك مع openpyxl إصدار 2.4.0 و إصدار 0.19.2 pandas ، يمكنك استخدام حل ابسط كالتالي
وجرب أيضاً استخدام المعامل keep_date_col بالقيمة True