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

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

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

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

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

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

    11

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

  1. يمكنك الإبقاء على نفس ال style الخاص بال angular والتغيير فقط في أسلوب الكتابة في الtemplate Handlebars عن طريق إنشاء raw helper كالتالي Handlebars.registerHelper('raw-helper', function(options) { return options.fn(); }); ثم يمكنك استخدامه عن طريق أربع أقواس {{{{ كما في المثال التالي {{{{raw-helper}}}} <div class="container" ng-controller="AppCtrl"> Total Members: {{members.length}} </div> {{{{/raw-helper}}}}
  2. يمكنك استخدام التابع pd.MultiIndex.from_product ك index في dataframe جديد ثم عمل reset لل index كما في المثال التالي a = [1, 2, 3] b = ["a", "b", "c"] index = pd.MultiIndex.from_product([a, b], names = ["a", "b"]) pd.DataFrame(index = index).reset_index() الناتج يكون كالتالي a b 0 1 a 1 1 b 2 1 c 3 2 a 4 2 b 5 2 c 6 3 a 7 3 b 8 3 c
  3. بداية من نسخة panda 0.24.0 ، يمكنك استخدام الدالة .to_flat_index والتي تقوم بتنفيذ المطلوب كما في المثال التالي dat = df.loc[:,['name','workshop_period','class_size']].groupby(['name','workshop_period']).describe() print(dat.columns) # MultiIndex(levels=[['class_size'], ['count', 'mean', 'std', 'min', '25%', '50%', '75%', 'max']], # codes=[[0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 2, 3, 4, 5, 6, 7]]) dat.columns = dat.columns.to_flat_index() print(dat.columns) # Index([('class_size', 'count'), ('class_size', 'mean'), # ('class_size', 'std'), ('class_size', 'min'), # ('class_size', '25%'), ('class_size', '50%'), # ('class_size', '75%'), ('class_size', 'max')], # dtype='object') وللفصل بين اسماء الأعمدة يمكنك استخدام الحل التالي dat.columns = ["_".join(a) for a in dat.columns.to_flat_index()]
  4. ربما تقصد الوراثة في اللغة لاحظ المثال التالي class Person { constructor(first, last, age, gender, interests) { this.name = { first, last }; this.age = age; this.gender = gender; this.interests = interests; } } وللوراثة من هذا الكلاس نقوم باستخدام المعامل extends كالتالي class Teacher extends Person { constructor(first, last, age, gender, interests, subject, grade) { super(first, last, age, gender, interests); // subject و grade Personخاصة بالكلاس this.subject = subject; this.grade = grade; } }
  5. كما وضح عبود فإنه يمكنك إنشاء دالة تقوم بإنشاء كائنات بواسطة المعامل new ولكن هناك طريقة أحدث وهي استخدام ال class وهي تعمل مع الإصدار ecmascript 6 لاحظ الكود التالي class Person { constructor(name) { this.name = name; } introduce() { console.log(`Hello, my name is ${this.name}`); } } const ahmed = new Person('Ahmed'); ahmed.introduce(); وتعتبر هذه الطريقة تغيير في كتابة الكود فقط أي في ال syntax ولكن طريقة العمل واحدة في اللغة ولقراءة الموضوع بشكل أكثر تعمقاً يمكنك قراءة هذه المقالة
  6. يوجد عدة طرق لتنفيذ المطلوب كما شرح أحمد في التعليق السابق ولكن في بعض الأحيان تحتاج لمكتبة لتسهيل الأمر وإضافة بعض المميزات ويمكنك استخدام المكتبة fuzzymatcher لتنفيذ المطلوب قم بتثبيتها كالتالي pip install fuzzymatcher لاحظ المثال التالي from fuzzymatcher import link_table, fuzzy_left_join left_on = ["fname", "mname", "lname", "dob"] right_on = ["name", "middlename", "surname", "date"] fuzzymatcher.link_table(df_left, df_right, left_on, right_on)
  7. كما شرح سامح في التعليق السابق أنه يمكنك أن تقوم بتنفيذ المطلوب من خلال delete سواء باستخدام get أو filter SomeModel.objects.get(pk=1).delete() # أو SomeModel.objects.filter(pk=1).delete() # SQL المكافئ ل # delete from table_name where id = 1; ولكن إذا أردت تحديد عدة قيم لحذفها يمكنك استخدام التابع __in كما في المثال التالي SomeModel.objects.fitler(pk__in=[1,2,3,4,5,...]).delete() # SQL المكافئ ل # delete from table_name where id in (1,2,4,5,...);
  8. أولاً عند دراسة مسار معين أو محاولة فهم درس من مسار ما بطريقة سريعة أو ( لآخذ فكرة شمولية ) فالطبيعي أن تكون هناك بعض المفاهيم الغير مفهومة وذلك طبيعي بسبب طريقة الدراسة أما بانسبة لمسار ال databases فهو ليس مرتبط بالمسارات السابقة بشكل مباشر إنما عند دراسة المسارات السابقة تساعدك بشكل كبير في فهم المسار أسرع وأفضل والحظ أن هذه المسارات تم ترتيبها بشكل دقيق فلا يجوز التنقل بين المسارات بشكل عشوائي يتم فتح المسار الأول من كل دورة مباشرة إذا واجهت أي مُشكلة في الوصول إلى الدروس يُمكنك مراسلة الدعم الفني من خلال هذا الرابط: و سيقوم الفريق بمساعدتك في أقرب وقت
  9. يمكنك أيضاً استخدام الدالة notnull ببساطة كالتالي import pandas as pd df = df[pd.notnull(df['value'])] أو يمكنك عكس الدالة isnull كالتالي df[~df.value.isnull()] أو isnan df[~np.isnan(df.value)]
  10. كما شرح أحمد أنه تحتاج لإستخدام المكتبة openpyxl في حفظ البيانات من pandas لذلك مع openpyxl إصدار 2.4.0 و إصدار 0.19.2 pandas ، يمكنك استخدام حل ابسط كالتالي import pandas from openpyxl import load_workbook with pandas.ExcelWriter('Masterfile.xlsx', engine='openpyxl') as writer: writer.book = load_workbook('Masterfile.xlsx') data_filtered.to_excel(writer, "Main", cols=['Diff1', 'Diff2']) وجرب أيضاً استخدام المعامل keep_date_col بالقيمة True writer = pd.ExcelWriter('prueba1.xlsx'engine='openpyxl',keep_date_col=True)
  11. أفترض أن عمود 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
  12. يمكنك استخدام ال 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
  13. نعم ال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 بشكل مختلف ولكن قاعدة البيانات التي تفرق في السرعة قم بقراءة الإجابات على السؤال التالي للفهم أكثر
  14. هل تقصد كورس اطار العمل دجانغو لتطوير تطبيقات الويب في أكاديمية حسوب بالتحديد ؟ إذا كان كذلك فلا يوجد حالياً كورس تطوير تطبيقات الويب بواسطة اطار العمل دجانغو ولكن يوجد كورسين تطوير تطبيقات الويب بواسطة php ruby أما إذا كنت تقصد كورس تطوير تطبيقات الويب بواسطة اطار العمل دجانغو عموماً ليس في الأكاديمية بالتحديد فبالطبع يوجد الكثير من الكورسات سواء المجانية أو المدفوعة ماعليك سوى البحث عن عن هذه الكورسات وإذا كنت تجيد اللغة الإنجليزية ستجد هذا اكورس متوفر بكثرة ثم بعد ذلك قم بإختيار الكورس المفضل بالنسبة لك
  15. توجد العديد من المكتبات سواء المختصة بال react أو بال javascript عموماً ولكن المكتبات الأفضل بالنسبة ل react يمكنك الحث عنها وستجد العديد من المكتبات مثل React Native Reanimated React Native Animatable Fluid transitions for React Navigation تعتبر هذه المكتبة خاصة بال Navigation React Spring وتوجد العديد من المكتبات الأخرى يمكنك الإطلاع عليها وإختيار الأفضل بالنسبة لك
  16. بالإضافة لما شرحه بلال فإنه يمكنك إرسال ال 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}"; } يمكنك القراءة حول المكتبة أكثر من الرابط بالأعلى
  17. بالإضافة لما تم شرحه في التعليق السابق يمكنك استخدام مكتبة مثل 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
  18. يعتبر الموضوع بسيط حيث يمكنك التحكم في ال scroll من خلال الخاصية scrollTop بواسطة javascript لاحظ الكود التالي من خلال jquery var div = $('#div1'); div.scrollTop(div.prop("scrollHeight")); و إذا كنت تريد التحرك ب animation يمكنك استخدام الكود التالي $("#div1").animate({ scrollTop: $('#div1').prop("scrollHeight")}, 1000); الكود السابق يقوم بتحريك الصفحة لأسفل ال div المحدد يمكنك استخدام هذا الكود ضمن موقعك كما تريد
  19. يعتبر المجالان كبيران وكلاهما تحتاج لتعلمهما الكثير من الوقت ويمتد للعديد من السنوات للوصول لمستوى إحترافي فيفضل إختيار مجال واحد منهما للعمل والتعمق فيه والإختيار يجب أن يتم بعد القراءة عن المجالين بدقة لإختيار المجال المناسب لك بالنسبة للعمل والربح فلا يعني تعلمك الكثير من المهارات أنك تستطيع العمل بسهولة عن الذي تعلم وتعمق في مجال واحد فتعلمك المجالين معاً غير صحيح ولن تقدر على ذلك بالطبع تعلمك لمجال في البرمجة يسهلك عليك الإنتقال لمجال آخر ولكن لن تستطيع التعمق في كلا المجالين كما لو تعلمت مجال واحد حيث أن كلاهما يحتاج لجهد كبير بالنسبة لأنك لا تحب التصميم يمكنك التخصص في جزء ال backend فليس مطلوب منك الإهتمام بالواجهة كما أن جزء ال frontend غير مسئول عن التصميم إنما يقوم بتحويل التصميم (الذي يقوم المصمم بتجهيزه لك) إلى كود frontend
  20. بالإضافة للطرق المقترحة في التعليق السابق يمكنك أيضاً من خلال pip ( إذا كان لديك pip ) بواسطة الأمر التالي pip freeze سيظهر لك قائمة لإصدارات الحزم المستخدمة ولكن إذا أردت Django فقط يمكنك استخدام الأمر pip freeze | grep Django
  21. هناك العديد من الطرق للقيام بذلك ، ولكن الأكثر وضوحا هو ببساطة استخدام Python debugger فقط أضف السطر التالي إلى دالة view import pdb; pdb.set_trace() #or breakpoint() #from Python3.7 وأيضاً إذا كنت تستخدم IDE مثل PyCharm سيوفر لك سهولة في تتبع الأخطاء في الكود
  22. يبدو أن لا يتم تثبيت webpack لوجود ملفات قديمة أو ماشابه لذلك قومي بتثبيته ولكن هذه المرة مع إضافة المعامل --force كالتالي npm i --save-dev webpack --force
  23. التجريد هو من مفاهيم ال 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 يمكنك أيضاً تنفيذ الوراثة المتعددة من خلالها
  24. يمكنك استخدام ال 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 )
  25. يمكنك استخدام الدالة 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]
×
×
  • أضف...