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

عبدالله عبدالرحمن11

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

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

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

كل منشورات العضو عبدالله عبدالرحمن11

  1. ألق نظرة على np.bincount في التوثيق. import numpy as np x = np.array([1,1,1,2,2,2,5,25,1,1]) y = np.bincount(x) ii = np.nonzero(y)[0] ومن ثم zip(ii,y[ii]) # [(1, 5), (2, 3), (5, 1), (25, 1)] أو np.vstack((ii,y[ii])).T # array([[ 1, 5], [ 2, 3], [ 5, 1], [25, 1]]) أو أو كما تريد دمج عدد التكرار مع القيم الفريدة .
  2. numpy.array هي مجرد دالة ملائمة لإنشاء ndarray ، إنها ليست صنف class بحد ذاتها. يمكنك أيضًا إنشاء مصفوفة array باستخدام numpy.ndarray ، لكنها ليست الطريقة الموصى بها. من توثيق numpy.ndarray: معظم عناصر التنفيذ موجودة في كود C ، هنا في multiarray ، ولكن يمكنك البدء في النظر إلى واجهات ndarray هنا.
  3. يبدو أنك ربما لم بتعريف سكريبت start في ملف package.json أو أن مشروعك لا يحتوي على ملف server.js كما في التوثيق يمكنك إما تغيير اسم البرنامج النصي للتطبيق الخاص بك الى server.js أو إضافة ما يلي إلى ملف package.json "scripts": { "start": "node your-script.js" } أو يمكنك تشغيل node your-script.js مباشرةً
  4. يجب عليك إنشاء تعريف مخصص ، واستخدام ميزة في Typescript تسمى دمج الإعلان Declaration Merging . هذا شائع الاستخدام ، على سبيل المثال في method-override. قم بإنشاء ملف custom.d.ts وتأكد من إدراجه في ملفات tsconfig.json إن وجدت. يمكن أن تبدو المحتويات على النحو التالي: declare namespace Express { export interface Request { tenant?: string } } سيسمح لك ذلك ، في أي مكان في الكود الخاص بك ، باستخدام شيء مثل هذا: router.use((req, res, next) => { req.tenant = 'tenant-X' next() }) router.get('/whichTenant', (req, res) => { res.status(200).send('This is your tenant: '+req.tenant) })
  5. هذا المسار يعتبر أهم مسار في الدورة وليس الهدف منه تعلم سكراتش نفسه بل من أجل تعلم مفاهيم البرمجة الأساسية من خلال الرسومات التي في سكراتش لكي تسهل تعلم مفاهيم البرمجة الأساسية بشكل سهلٍ وممتع في نفس الوقت ، لهذا يجب عليك مشاهدة دروس سكراتش وأيضاً سيدخل في الامتحان ولكن ركز بشكل كبير على التعلم والفهم. شكراً لك
  6. إذا كنت تستخدم nginx للتعامل مع SSL ، فخادم node سيستخدم http فقط. upstream nodejs { server 127.0.0.1:4545 max_fails=0; } server { listen 443; ssl on; ssl_certificate newlocalhost.crt; ssl_certificate_key newlocalhost.key; server_name nodejs.newlocalhost.com; add_header Strict-Transport-Security max-age=500; location / { proxy_pass http://nodejs; proxy_redirect off; proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; proxy_set_header X-Forwarded-Proto https; } } اما بإستخدام node فيجب عليك إنشاء خادم https: // استيراد const express = require('express'); var fs = require('fs'); const http = require('http'); const https = require('https'); const app = require('./path/to/your/express/app'); /* إنشاء خادم * https */ const httpsServer = https.createServer({ key: fs.readFileSync('server.key'), cert: fs.readFileSync('server.cert') }, app); httpsServer.listen(443, () => console.log(`HTTPS server listening: https://localhost`)); ومن ثم إعادة توجيه جميع طلبات خادم http الى خادم https /* إعادة توجيه خادم * http * الى https */ const httpApp = express(); httpApp.all('*', (req, res) => res.redirect(300, 'https://localhost')); const httpServer = http.createServer(httpApp); httpServer.listen(80, () => console.log(`HTTP server listening: http://localhost`));
  7. يمكنك استخدام دالة astype كالآتي: >>> x = np.array([[1.0, 2.3], [1.3, 2.9]]) >>> x array([[ 1. , 2.3], [ 1.3, 2.9]]) >>> x.astype(int) # وهنا تقوم بتحديد النوع الذي تريده array([[1, 2], [1, 2]]) إذا لم تكن متأكدًا من أن مدخلاتك ستكون عبارة عن مصفوفة Numpy ، فيمكنك استخدام asarray مع dtype=int بدلاً من astype: >>> np.asarray([1,2,3,4], dtype=int) array([1, 2, 3, 4])
  8. وحدة python-shell من extrabacon هي وسيلة بسيطة لتشغيل أكواد بايثون من Node.js مع تواصل عملية داخلية أساسية ولكن فعالة ومعالجة الأخطاء بشكل أفضل. التثبيت: بإستخدام npm: npm install python-shell أو ب yarn yarn add python-shell تشغيل كود بايثون بسيط const PythonShell = require('python-shell').PythonShell; PythonShell.run('my_script.py', null, function (err) { if (err) throw err; console.log('finished'); }); تشغيل نص Python بالمُدخلات والخيارات: const PythonShell = require('python-shell').PythonShell; var options = { mode: 'text', pythonPath: 'path/to/python', pythonOptions: ['-u'], scriptPath: 'path/to/my/scripts', args: ['value1', 'value2', 'value3'] }; PythonShell.run('my_script.py', options, function (err, results) { if (err) throw err; /* المتغير * results * هو عبارة عن مصفوفة تحتوي الرسائل التي تم تجميعها من التنفيذ */ console.log('results: %j', results); }); للحصول على مزيد من المعلومات وكود المصدر ، تحقق من التوثيق الرسمي
  9. كتابة المصفوفات كملفات CSV ذات الرؤوس تتطلب مزيدًا من العمل. هذا المثال يقرأ من ملف CSV ( example.csv) ويكتب محتوياته إلى ملف CSV آخر ( out.csv). import numpy as np # كتابة ملف # example.csv # مع رؤوس في السطر الأول with open('example.csv', 'w') as fp: fp.write('''\ col1,col2,col3 1,100.1,string1 2,222.2,second string ''') # قراءة الملف كمصفوفة # Numpy ar = np.recfromcsv('example.csv', encoding='ascii') print(repr(ar)) # rec.array([(1, 100.1, 'string1'), (2, 222.2, 'second string')], # dtype=[('col1', '<i8'), ('col2', '<f8'), ('col3', '<U13')]) # كتابته كملف # CSV # مع الرؤوس في السطر الأول with open('out.csv', 'w') as fp: fp.write(','.join(ar.dtype.names) + '\n') np.savetxt(fp, ar, '%s', ',') لاحظ أن المثال أعلاه لا يمكنه معالجة القيم التي تكون سلاسل نصية وبها فاصلات. لتضمين القيم غير الرقمية دائمًا بين علامات الاقتباس ، استخدم الوحدة csv المضمنة: import csv with open('out2.csv', 'w', newline='') as fp: writer = csv.writer(fp, quoting=csv.QUOTE_NONNUMERIC) writer.writerow(ar.dtype.names) writer.writerows(ar.tolist())
  10. الإجابات السابقة صحيحة ولكن إذا كنت تريد حلاً بديلاً فيمكنك تحويلها الى قائمة كالآتي >>> numpy.arange(100).reshape(25,4).tolist() [ 0, 1, 2, ..., 9997, 9998, 9999] وإليك طريقة للقيام بذلك ، وهي مفيدة إذا كنت لا تريد تغيير إعداداتك الافتراضية: def fullprint(*args, **kwargs): from pprint import pprint import numpy opt = numpy.get_printoptions() numpy.set_printoptions(threshold=numpy.inf) pprint(*args, **kwargs) numpy.set_printoptions(**opt)
  11. يمكنك تجربة هذا الكود لحل مشكلتك // استبدل appPath بالمسار المطلوب app.set('appPath', 'public'); app.use(express.static(__dirname +'/public')); app.route('/*') .get(function(req, res) {// استبدل appPath بالمسار المطلوب res.sendfile(app.get('appPath') + '/index.html'); }); حيث يحتوي المسار العام public على ملف index.html ويشير إلى جميع الملفات في المجلد الكود express.static يخدم الملفات الثابتة بشكل صحيح (ملفات .js و css كما هو مشار إليه بواسطة index.html). بناءً على التعليمات البرمجية الخاصة بك ، ستحتاج على الأرجح إلى استخدام هذا السطر بدلاً من ذلك: app.use(express.static(__dirname)); حيث أن جميع ملفات JS الخاصة بك ، index.html وملف خادم JS الخاص بك في نفس المسار. .
  12. أفضل طريقة في حالتك الخاصة هي فقط تغيير المعيارين إلى معيار واحد: dists[abs(dists - r - dr/2.) <= dr/2.] والإجابة على سؤالك: انت لست بحاجة فعلاً الى where إذا كنت تحاول فقط تصفية عناصر dists التي لا تتناسب مع معاييرك: dists[(dists >= r) & (dists <= r+dr)] لأن & سيعطيك عنصرًا أساسيًا and (الأقواس ضرورية). أو ، إذا كنت تريد الاستخدام where لسبب ما ، فيمكنك القيام بما يلي: dists[(np.where((dists >= r) & (dists <= r + dr)))]
  13. يجب أن تكون قادرًا على تقسيم المصفوفة إلى "كتل" باستخدام reshape و swapaxes: def blockshaped(arr, nrows, ncols): h, w = arr.shape assert h % nrows == 0, "{} rows is not evenly divisble by {}".format(h, nrows) assert w % ncols == 0, "{} cols is not evenly divisble by {}".format(w, ncols) # إرجاع المصفوفة المقسمة return (arr.reshape(h//nrows, nrows, -1, ncols) .swapaxes(1,2) .reshape(-1, nrows, ncols)) حيث يقوم بتحويل c c = np.arange(24).reshape((4,6)) print(c) # [[ 0 1 2 3 4 5] # [ 6 7 8 9 10 11] # [12 13 14 15 16 17] # [18 19 20 21 22 23]] إلى print(blockshaped(c, 2, 3)) # [[[ 0 1 2] # [ 6 7 8]] # [[ 3 4 5] # [ 9 10 11]] # [[12 13 14] # [18 19 20]] # [[15 16 17] # [21 22 23]]]
  14. يمكنك ببساطة استخدام الكود الآتي df['bar'] = df.bar.map(str) + " is " + df.foo. أوصي باستخدام مكتبة pandas بدلاً من numpy هنا ، لأن استخدام مصفوفات numpy للنصوص عادةً ما يكون أكثر صعوبة مما يستحق. ، وما تريده واضح جدًا في pandas: >>> from pandas import DataFrame >>> df = DataFrame({'foo':['a','b','c'], 'bar':[1, 2, 3]}) >>> df foo bar 0 a 1 1 b 2 2 c 3 >>> df["foo"] + " is " + df["bar"] 0 1 is a 1 2 is b 2 3 is c
  15. الخطأ أن المصفوفة ليست JSON لهذا يجب عليك تحويل المصفوفة أولاً جرب استخدام دالة ".tolist ()" في المصفوفة أولاً ، على النحو التالي: import numpy as np import codecs, json a = np.arange(10).reshape(2,5) b = a.tolist() file_path = "/path.json" ## متغير المسار json.dump(b, codecs.open(file_path, 'w', encoding='utf-8'), separators=(',', ':'), sort_keys=True, indent=4) ### هذا يقوم بحفظ المصفوفة على شكل json من أجل إرجاع المصفوفة الى ماكانت عليه ، استخدم: obj_text = codecs.open(file_path, 'r', encoding='utf-8').read() b_new = json.loads(obj_text) a_new = np.array(b_new)
  16. المشكلة متعلقة بوضع overcommit handling الخاص بنظام التشغيل ووضع overcommit handling الافتراضي هو 0 ، ويمكنك تفحص ذلك بتنفيذ $ cat /proc/sys/vm/overcommit_memory ويمكنك تغيير وضع overcommit handling بتنفيذ الأمر الآتي $ echo 1 > /proc/sys/vm/overcommit_memory هذا سيقوم بتفعيل وضع overcommit دائماً والنظام سيتيح لك عمل allocate مهما كان الحجم
  17. وعليكم السلام هياكل البيانات data structure هو موضوع كبير ويحتوي على الكثير من هياكل البيانات حيث أن arrays و objects يعتبران أبسط وأول مواضيع هياكل البيانات أما هياكل البيانات الأخرى والأكثر تعقيداً فغالباً لن تحتاجها في استخدام redux كلما عليك فعله هو ممارسة استخدام arrays و objects والتدرب عليهما أكثر فقط يمكنك الإطلاع على مزيد من المعلومات حول arrays و objects من موسوعة حسوب من هنا و هنا وتوثيقات أخرى من هنا و هنا
  18. كما وضح محمد عواد فيمكنك إستخدام الصفة dir في عناصر html حيث dir اختصار لكلمة direction بمعنى اتجاه وبهذه الصفة تقوم بتحديد اتجاه العنصر الذي قمت بوضعها فيه. يمكنك وضع rtl وهي اختصار right to left أي يمين الى اليسار لتحديد اتجاه العنصر بهذا الاتجاه أو يمكنك وضع ltr وهي اختصار left to right أي يسار الى اليمين لتحديد العنصر بهذا الاتجاه الخيارين السابقين يقوما بتحديد الاتجاه للعنصر مهما كان نوع محتوه وبأي لغة. أما إذا كان لديك صفحة تحتوي لغات متعددة فليس من الجيد وضع صفة اتجاه العنصر لكل كتابة موجودة في الصفحة بحسب نوع اللغة ، فيمكنك ببساطة وضع الخيار الثالث وهو auto بمعنى تلقائي لكي يقوم المتصفح بوضع إتجاه العناصر بشكلٍ تلقائي بحسب لغة العنصر ، ويمكنك على سبيل المثال وضعها في العنصر الرئيسي html كالآتي <html dir="auto"> ... </html>
  19. كما وضح @سامح أشرففلا يوجد حالياً دورة مخصصة لFlutter أو Dart ولكن لدى الأكاديمية دورتين متخصصتين لتطوير تطبيقات الجوال الأولى دورة تطوير تطبيقات الجوال باستخدام تقنيات الويب والثانية دورة تطوير التطبيقات باستخدام لغة JavaScript وفي هذه الدورة يوجد قسم لتعلم React Native والذي يعتبر المنافس الأكبر ل Flutter والأقدم منه كذلك، لذلك React Native لديه الكثير من الدعم والمكتبات الجاهزة ومجتمع كبير نظراً لأنه موجود منذ فترة طويلة ويعتبر أكثر استقراراً من flutter وايضاً انت لاتحتاج لتعلم لغة جديدة إذا كنت مطور مواقع من قبل. وفي نفس الدورة ستقوم ببناء تطبيق شبيه بWhatsapp بإستخدام React Native لنظامي الأندرويد وiOS
  20. لكي تستطيع إرسال ملفات ثنائية binary الى خادم email صُمم للعمل مع بيانات نصية ، فيجب عليك تكويد encode الملفات قبل الإرسال. عادةً يتم عمل ذلك بإستخدام base64 حيث يقوم بتشفير البيانات الثنائية الى حروف ASCII قابلة للطباعة هذا الكود في الأسفل يوضح كيفية إرسال بريد إلكتروني مع ملف pdf كمرفق import email, smtplib, ssl from email import encoders from email.mime.base import MIMEBase from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText subject = "An email with attachment from Python" body = "This is an email with attachment sent from Python" sender_email = "my@gmail.com" receiver_email = "your@gmail.com" password = input("Type your password and press enter:") # إنشاء رسالة متعددة الأجزاء وتعيين الرأس message = MIMEMultipart() message["From"] = sender_email message["To"] = receiver_email message["Subject"] = subject message["Bcc"] = receiver_email # إضافة جسم الى الرسالة الالكترونية message.attach(MIMEText(body, "plain")) filename = "document.pdf" # في نفس مسار ملف الكود # فتح الملف في الوضع الثنائي with open(filename, "rb") as attachment: # إضافة نوع الملف كمجرى ثماني part = MIMEBase("application", "octet-stream") part.set_payload(attachment.read()) # تشفير الملف الى حروف ASCII encoders.encode_base64(part) # إضافة الرأس الى جزء المُرفق part.add_header( "Content-Disposition", f"attachment; filename= {filename}", ) # إضافة المُرفق الى الرسالة وتحويل الرسالة الى سلسلة نصية message.attach(part) text = message.as_string() # تسجيل الدخول الى الخادم وإرسال الرسالة الإلكترونيى context = ssl.create_default_context() with smtplib.SMTP_SSL("smtp.gmail.com", 465, context=context) as server: server.login(sender_email, password) server.sendmail(sender_email, receiver_email, text)
  21. التفحص ب __iter__ يعمل على الأنواع المتسلسلة ولكنه سيفشل على سبيل المثال في السلاسل النصية في بايثون 2 ولكن لديك عدة حلول أخرى from __future__ import print_function # تجربة إذا كان الكائن قابل للتكرار try: some_object_iterator = iter(some_object) # طباعة نص إذا ظهر خطأ أن الكائن غير قابل للتكرار except TypeError as te: print(some_object, 'is not iterable') وايضا يمكنك تجربة تنفيذ حلقة كالآتي # تجربة حلقة في الكائن try: _ = (e for e in my_object) # طباعة نص عند ظهور خطأ أن الكائن غير قابل للتكرار except TypeError: print my_object, 'is not iterable'
  22. كما تم شرحه فيمكنك استخدام الوحدة os والحصول على متغيرات البيئة من environ ولكن هنا لديك الوصول الى متغيرات البيئة الخاصة بالنظام اما إذا اردت إنشاء متغيرات بيئة محلية تكون خاصة بمشروع بعينه فيمكنك استخدام حزمة python-decouple وتثبيتها $ pip install python-decouple وبعد تثبيت الحزمة قم بإنشاء ملف وقم بتسميته ب env. وضعه في المجلد الرئيسي أو جذر المشروع ومن ثم قم بإضافة متغيرات البيئة فيه على سبيل المثال USER=alex KEY=hfy92kadHgkk29fahjsu3j922v9sjwaucahf ملاحظة : تذكر إذا كنت تستخدم git فقم بوضع الملف في gitignore. والآن للوصول لمتغيرات البيئة المحلية في بايثون كالآتي from decouple import config # الحصول المتغير المحلي USER API_USERNAME = config('USER') # الحصول على المتغير المحلي KEY API_KEY = config('KEY')
  23. وعليكم السلام دورة تطوير واجهات المستخدم حوالي 49 ساعة فيديو ويمكنك الذهاب لصفحة الدورة للاطلاع على المزيد من التفاصيل من هنا
  24. بما أنك تستخدم express فيمكنك إنشاء خادم https وتمرير app اليه كما في المثال var express = require('express'); var https = require('https'); var http = require('http'); var fs = require('fs'); // قراة ملف المفتاح وملف الشهادة var options = { key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'), cert: fs.readFileSync('test/fixtures/keys/agent2-cert.cert') }; var app = express(); /* إنشاء خادم * http * وتمرير * app * إليه */ http.createServer(app).listen(80); /* إنشاء خادم * https * ويستمع الى منفذ آخر * وتمرير * app * إليه */ https.createServer(options, app).listen(443);
  25. من التوثيق الرسمي ل express http.createServer(app).listen(80); https.createServer(options, app).listen(443); app.listen = function() { var server = http.createServer(this); return server.listen.apply(server, arguments); };
×
×
  • أضف...