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

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

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

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

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

إجابات الأسئلة

  1. إجابة عبدالله عبدالرحمن11 سؤال في كيفية استخدام angular.js و Express Handlebars معاً كانت الإجابة المقبولة   
    يمكنك استخدام هذا الحل ،حيث AngularJS يسمح بتغيير رموز البداية / النهاية لاستيفاء النص كما يلي:
    appModule.config(function($interpolateProvider) { $interpolateProvider.startSymbol('{[{'); $interpolateProvider.endSymbol('}]}'); }); ثم يمكنك استخدامه في القالب الخاص بك:
    <div>{[{message}]}</div> كما يمكنك مراجعة توثيق angular الخاص ب$ interpolateProvider
    كما يمكنك استخدام ng-bind كالآتي
    <p ng-bind="user.profile.description"></p> والذي يكون مشابه للآتي
    <p>{{user.profile.description}}</p> كما يمكنك مراجعة توثيق Angular الخاص ب ng-bind
  2. إجابة عبدالله عبدالرحمن11 سؤال في استعراض الملفات ضمن المتصفح في إطار العمل express.js كانت الإجابة المقبولة   
    اعتبارًا من الإصدار Express 4.x ، لم تعد البرامج الوسيطة middleware الخاصة بالمسار directory مُجمعة مع express.
    ستحتاج الى تنزيل وحدة npm المُسماة ب serve-index .
    ثم ، على سبيل المثال ، لعرض قوائم الملفات/المسار في مسار  جذر التطبيق المسمى videos سيبدو كما يلي:
    var express = require('express') var serveIndex = require('serve-index') var app = express() app.use(express.static(__dirname + "/")) app.use('/videos', serveIndex(__dirname + '/videos')); app.listen(3000) حيث سيتم عرض محتويات المجلد أو المسار videos الذي يكون في جذر التطبيق.
    اما إذا أردت أن يعمل مثلما يعمل apache بحيث عندما لا يجد index.html يقوم بعرض الملفات التي تكون في الجذر فيمكنك استخدام الآتي
    var express = require('express') var serveIndex = require('serve-index') var app = express() app.use('/', express.static(__dirname), serveIndex(__dirname, {'icons': true})) app.listen(3000)  
  3. إجابة عبدالله عبدالرحمن11 سؤال في كيفية التراجع عن آخر عملية تهجير للبيانات في جانغو Django؟ كانت الإجابة المقبولة   
    يمكنك التراجع عبر التهجير الى التهجير السابق
    على سبيل المثال ، إذا كان آخر تهجيرين لك هما:
    0010_previous_migration 0011_migration_to_revert ثم ستقوم بتنفيذ:
    ./manage.py migrate my_app 0010_previous_migration لا تحتاج فعليًا إلى استخدام اسم التهجير الكامل ، فالرقم كافٍ ، أي
    ./manage.py migrate my_app 0010 ثم بعد ذلك يمكنك حذف التهجير 0011_migration_to_revert.
    إذا كنت تستخدم Django 1.8 ومافوق ، فيمكنك إظهار أسماء جميع عمليات التهجير باستخدام
    ./manage.py showmigrations my_app لعكس جميع عمليات التهجير لأحد التطبيقات ، يمكنك تنفيذ:
    ./manage.py migrate my_app zero لكن يجب الإشارة إلى أنه لا يمكن عكس جميع الهجرات . يحدث هذا إذا لم يكن لدى Django قاعدة للقيام بعملية العكس.
     بالنسبة لأغلب التغييرات التي أجريت عمليات التهجير بشكل تلقائي بإستخدام
    /manage.py makemigrations سيكون الإلغاء أو التراجع ممكنًا.
    مع ذلك فإن النصوص البرمجية المخصصة ستحتاج إلى كتابة الأمام والعكس.
    وايضاً لا تحذف ملف التهجير إلا بعد الرجوع. لأنه بدون ملف التهجير ، لم تكن قاعدة البيانات تعرف الأشياء التي يجب إزالتها.
    python manage.py showmigrations python manage.py migrate {app name from show migrations} {00##_migration file.py} إذا كنت تريد التراجع عن جميع عمليات التهجير ، فاستخدم zero كاسم التهجير:
    python manage.py migrate app_name_here zero احذف ملف التهجير. بمجرد أن يكون التهجير المطلوب في نماذجك ...
    python manage.py makemigrations python manage.py migrate  
  4. إجابة عبدالله عبدالرحمن11 سؤال في معرفة الإصدار المستخدم من جانغو Django كانت الإجابة المقبولة   
    Django 1.5 يدعم Python 2.6.5 والإصدارات الأحدث.
    إذا كنت تعمل بنظام Linux وتريد التحقق من إصدار Python الذي تستخدمه ، فقم بتشغيله python -V من سطر الأوامر.
    إذا كنت تريد التحقق من إصدار Django ، فافتح وحدة تحكم Python واكتب
    >>> import django >>> django.VERSION (2, 0, 0, 'final', 0) أو يمكنك ببساطة استخدم أمر قابل للتنفيذ من خلال سطر الأوامر كالآتي
    $ python -c "import django; print(django.get_version())" 2.0 اما إذا قمت بتثبيت التطبيق فيمكنك العثور على الإصدرا بهذا الأمر
    $ django-admin --version 2.0 أو يمكنك الذهاب الى مسار مشروع Django وتنفيذ الآتي
    ./manage.py --version  
  5. إجابة عبدالله عبدالرحمن11 سؤال في كيفية رفع الملفات إلى الخادم بإستخدم جانغو Django؟ كانت الإجابة المقبولة   
    يمكنك القيام بهذه الخطوات لرفع الملف الى السيرفر بإستخدام Django
    1. الإعدادات: myproject / settings.py
    لتحميل الملفات وتقديمها ، تحتاج إلى تحديد المكان الذي يخزن فيه Django الملفات المرفوعة ومن أي عنوان URL يخدمها Django.
    MEDIA_ROOT و MEDIA_URL موجودان في settings.py افتراضيًا لكنهما فارغان. راجع الأسطر الأولى في Django Managing Files للحصول على التفاصيل. تذكر أيضًا تعيين قاعدة البيانات وإضافة تطبيق myapp إلى INSTALLED_APPS
    ... import os BASE_DIR = os.path.dirname(os.path.dirname(__file__)) ... DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'database.sqlite3'), 'USER': '', 'PASSWORD': '', 'HOST': '', 'PORT': '', } } ... MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/' ... INSTALLED_APPS = ( ... 'myapp', ) 2. النموذج: myproject / myapp / Models.py
    بعد ذلك ، تحتاج إلى نموذج به FileField. يخزن هذا الحقل المحدد الملفات على سبيل المثال إلى media / documents / 2011/12/24 / بناءً على التاريخ الحالي و MEDIA_ROOT. انظر مرجع FileField .
    # -*- coding: utf-8 -*- from django.db import models class Document(models.Model): docfile = models.FileField(upload_to='documents/%Y/%m/%d') 3. النموذج: myproject / myapp / forms.py
    للتعامل مع التحميل بشكل جيد ، تحتاج إلى نموذج Form. هذا النموذج يحتوي على حقل واحد فقط ولكن هذا يكفي. راجع مرجع Form FileField للحصول على التفاصيل.
    # -*- coding: utf-8 -*- from django import forms class DocumentForm(forms.Form): docfile = forms.FileField( label='Select a file', help_text='max. 42 megabytes' ) 4. عرض: myproject / myapp / views.py
    عرض View حيث يحدث المهم. انتبه كيف request.FILES يتم التعامل معها.
    حيث كان من الصعب حقًا تحديد حقيقة أنه request.FILES['docfile'] يمكن حفظها في models.FileField.
    حيث يتعامل دالة save() مع تخزين الملف في نظام الملفات تلقائيًا.
    # -*- coding: utf-8 -*- from django.shortcuts import render_to_response from django.template import RequestContext from django.http import HttpResponseRedirect from django.core.urlresolvers import reverse from myproject.myapp.models import Document from myproject.myapp.forms import DocumentForm def list(request): # التعامل مع رفع الملف if request.method == 'POST': form = DocumentForm(request.POST, request.FILES) if form.is_valid(): newdoc = Document(docfile = request.FILES['docfile']) newdoc.save() # التحويل الى قائمة المستندات بعد POST return HttpResponseRedirect(reverse('myapp.views.list')) else: form = DocumentForm() # نموذج فارغ غير محدد # تحميل المستندات من أجل صفحة القائمة documents = Document.objects.all() # تصيير صفحة القائمة مع المستندات والنموذج return render_to_response( 'myapp/list.html', {'documents': documents, 'form': form}, context_instance=RequestContext(request) ) 5. عناوين URL للمشروع: myproject / urls.py
    Django لا يخدم MEDIA_ROOT بشكل افتراضي. سيكون ذلك خطيرًا في بيئة الإنتاج. لكن في مرحلة التطوير ، يمكننا أن نختصر. 
    انتبه إلى السطر الأخير. هذا الخط يمكّن Django من خدمة الملفات من MEDIA_URL. هذا يعمل فقط في مرحلة التطوير.
    راجع مرجع django.conf.urls.static.static للحصول على التفاصيل. راجع أيضًا هذا النقاش حول خدمة ملفات الوسائط .
    # -*- coding: utf-8 -*- from django.conf.urls import patterns, include, url from django.conf import settings from django.conf.urls.static import static urlpatterns = patterns('', (r'^', include('myapp.urls')), ) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 6. عناوين URL التطبيق: myproject / myapp / urls.py
    لتسهيل الوصول إلى العرض View ، يجب عليك تحديد عناوين url الخاصة به. لا يوجد الكثير هنا.
    # -*- coding: utf-8 -*- from django.conf.urls import patterns, url urlpatterns = patterns('myapp.views', url(r'^list/$', 'list', name='list'), ) 7. النموذج أو Template القالب : myproject / myapp / Templates / myapp / list.html
    الجزء الأخير: نموذج القائمة واستمارة التحميل أدناه. يجب أن يحتوي النموذج على سمة enctype مضبوطة على "multiart / form-data" وأن الطريقة مضبوطة على "post" لجعل التحميل إلى Django ممكنًا. راجع وثائق تحميل الملفات للحصول على التفاصيل.
    يحتوي FileField على العديد من السمات التي يمكن استخدامها في القوالب. على سبيل المثال ، {{document.docfile.url}} و {{document.docfile.name}} كما في القالب. 
    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Minimal Django File Upload Example</title> </head> <body> <!-- قائمة المستندات المرفوعة --> {% if documents %} <ul> {% for document in documents %} <li><a href="{{ document.docfile.url }}">{{ document.docfile.name }}</a></li> {% endfor %} </ul> {% else %} <p>No documents.</p> {% endif %} <!-- نموذج الرفع وايضاً لاحظ خاصية enctype --> <form action="{% url 'list' %}" method="post" enctype="multipart/form-data"> {% csrf_token %} <p>{{ form.non_field_errors }}</p> <p>{{ form.docfile.label_tag }} {{ form.docfile.help_text }}</p> <p> {{ form.docfile.errors }} {{ form.docfile }} </p> <p><input type="submit" value="Upload" /></p> </form> </body> </html> 8. تهيئة
    فقط قم بتشغيل syncdb و runserver.
    > cd myproject > python manage.py syncdb > python manage.py runserver أخيرًا ، كل شيء جاهز. في بيئة تطوير Django الافتراضية ، يمكن رؤية قائمة المستندات التي تم تحميلها على localhost:8000/list/.
  6. إجابة عبدالله عبدالرحمن11 سؤال في تحويل نوع العناصر في الأعمدة في pandas الي قيم عددية كانت الإجابة المقبولة   
    أفضل طريقة لتحويل عمود واحد أو أكثر من DataFrame إلى قيم رقمية هي استخدام دالة pandas.to_numeric().
    ستحاول هذه الدالة تغيير الكائنات غير الرقمية (مثل السلاسل) إلى أعداد صحيحة أو أرقام فاصلة عائمة float حسب الاقتضاء.
    الإدخال إلى to_numeric() يكون سلسلة أو عمود واحد من DataFrame.
    >>> s = pd.Series(["8", 6, "7.5", 3, "0.9"]) # سلاسل نصية وقيم عددية >>> s 0 8 1 6 2 7.5 3 3 4 0.9 dtype: object >>> pd.to_numeric(s) # تحويل كل شيء الى قيم عشرية float 0 8.0 1 6.0 2 7.5 3 3.0 4 0.9 dtype: float64 كما ترى ، يتم إرجاع سلسلة جديدة. تذكر تخصيص هذا الإخراج لمتغير أو اسم عمود لمتابعة استخدامه:
    # تحويل سلاسل my_series = pd.to_numeric(my_series) # تحويل العمود a لل DataFrame df["a"] = pd.to_numeric(df["a"]) يمكنك أيضًا استخدامه لتحويل عدة أعمدة من DataFrame عبر apply()الطريقة:
    # تحويل كل أعمدة DataFrame df = df.apply(pd.to_numeric) # تحويل العمودين a و b df[["a", "b"]] = df[["a", "b"]].apply(pd.to_numeric) طالما أنه يمكن تحويل جميع قيمك ، فمن المحتمل أن يكون هذا كل ما تحتاجه.
    وايضاً لديك خيارات آخرى مثل
    astype()- تحويل (تقريبًا) أي نوع إلى (تقريبًا) أي نوع آخر (حتى لو لم يكن من المعقول القيام بذلك بالضرورة). يسمح لك أيضًا بالتحويل إلى أنواع فئوية (مفيدة جدًا). infer_objects() - طريقة مساعدة لتحويل أعمدة الكائن التي تحتوي على كائنات Python إلى نوع pandas إن أمكن. convert_dtypes()- تحويل أعمدة DataFrame إلى نوع dtype  الذي يدعم pd.NA أي كائن pandas للإشارة إلى قيمة مفقودة.
  7. إجابة عبدالله عبدالرحمن11 سؤال في كيف ابدأ تعلم البرمجة كانت الإجابة المقبولة   
    يمكنك الاطلاع على هذا المقال
     
  8. إجابة عبدالله عبدالرحمن11 سؤال في إضافة كتب جديدة لأكاديمية حسوب كانت الإجابة المقبولة   
    إن المقالات والكتب يتم وضعها من قبل متخصصين ويتم إضافتها بعد تدقيق وعناية وإذا أردت المساهمة فيمكنك التواصل مع مركز الدعم إذا وجد مجال لذلك ، مركز الدعم
  9. إجابة عبدالله عبدالرحمن11 سؤال في كيف استخدم proxy مع إطار العمل express في node.js كانت الإجابة المقبولة   
    يجب عليك استخدام http.request لإنشاء طلب مشابه لواجهة برمجة التطبيقات API البعيد وإرجاع استجابتها.
    شيء من هذا:
    const http = require('http'); app.post('/api/BLABLA', (oreq, ores) => { const options = { // المضيف المراد التحويل إليه host: 'www.google.com', // المنفذ المراد التحويل إليه port: 80, // المسار المراد التحويل إليه path: '/api/BLABLA', // دالة الطلب method: 'POST', // الرؤوس للإرسال headers: oreq.headers, }; const creq = http .request(options, pres => { // تعيين التشفير pres.setEncoding('utf8'); // وضع حالة الطلب بناءً على استجابة الوكيل ores.writeHead(pres.statusCode); // انتظار البيانات pres.on('data', chunk => { ores.write(chunk); }); pres.on('close', () => { // أُغلق، لنقم بإنهاء طلب العميل ايضاً ores.end(); }); pres.on('end', () => { // انتهى ، لنقم بإنهاء طلب العميل ايضاً ores.end(); }); }) .on('error', e => { // طباعة الخطأ console.log(e.message); try { // محاولة تعيين رسالة الخطأ وحالة الطلب ores.writeHead(500); ores.write(e.message); } catch (e) { } ores.end(); }); creq.end(); });  
  10. إجابة عبدالله عبدالرحمن11 سؤال في تحويل مصفوفة numpy تحتوي على أرقام عشرية إلى مصفوفة من نوع integer؟ كانت الإجابة المقبولة   
    يمكنك استخدام دالة 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])  
  11. إجابة عبدالله عبدالرحمن11 سؤال في إستخدام شروط متعددة في Numpy كانت الإجابة المقبولة   
    أفضل طريقة في حالتك الخاصة هي فقط تغيير المعيارين إلى معيار واحد:
    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)))]  
  12. إجابة عبدالله عبدالرحمن11 سؤال في هل لو قمت بتعلم data structures سأكون جيد فى التعامل مع المصفوفات و الاوبجكتس ام يجب ان اتعلم شئ اخر ؟ جافا سكريبت كانت الإجابة المقبولة   
    وعليكم السلام
    هياكل البيانات data structure هو موضوع كبير ويحتوي على الكثير من هياكل البيانات حيث أن arrays و objects يعتبران أبسط وأول مواضيع هياكل البيانات
    أما هياكل البيانات الأخرى والأكثر تعقيداً فغالباً لن تحتاجها في استخدام redux
    كلما عليك فعله هو ممارسة استخدام arrays و objects والتدرب عليهما أكثر فقط
    يمكنك الإطلاع على مزيد من المعلومات حول arrays و objects من موسوعة حسوب من هنا و هنا
    وتوثيقات أخرى من هنا و هنا
  13. إجابة عبدالله عبدالرحمن11 سؤال في كيفية ارسال طلب من نوع post lu مع كود json في بايثون؟ كانت الإجابة المقبولة   
    بدءًا من الإصدار 2.4.2 من مكتبة request ، يمكنك استخدام المُدخل json=  (الذي يأخذ قاموسًا) بدلاً من data=(الذي يأخذ سلسلة) في استدعاء الطلب:
    import requests # طلب POST r = requests.post('http://httpbin.org/post', json={"key": "value"}) # حالة الطلب r.status_code # بيانات JSON r.json() وايضاً يمكنك استخدام دالة json.dumps ولكن تذكر بإضافة الرأس الذي يحتوي نوع البيانات content-type
    url = "http://localhost:8080" # بيانات JSON data = {'key': 'value'} # رأس نوع البيانات headers = {'Content-type': 'application/json', 'Accept': 'text/plain'} # طلب POST r = requests.post(url, data=json.dumps(data), headers=headers)  
  14. إجابة عبدالله عبدالرحمن11 سؤال في تمرير مدخلات إلى decorator في بايثون كانت الإجابة المقبولة   
    لفهم decorators مع المُدخلات انظر للمثال الآتي
    @decorator def foo(*args, **kwargs): pass يترجم إلى التالي
    foo = decorator(foo) لذلك إذا كان للdecorator مُدخلات
    @decorator_with_args(arg) def foo(*args, **kwargs): pass يترجم إلى الآتي
    foo = decorator_with_args(arg)(foo) decorator_with_args هي دالة تقبل مُدخلات مخصصة وتقوم بإرجاع decorator الفعلي (الذي سيتم تطبيقه على دالة decorator).
    حيلة بسيطة لتسهيل استخدام decorator
    from functools import partial # إنشاء # decorator # مزيف def _pseudo_decor(fun, argument): def ret_fun(*args, **kwargs): # اعمل أي شيء هنا ، على سبيل المثال print ("decorator arg is %s" % str(argument)) return fun(*args, **kwargs) return ret_fun real_decorator = partial(_pseudo_decor, argument=arg) # decorator # الحقيقي @real_decorator def foo(*args, **kwargs): pass  
  15. إجابة عبدالله عبدالرحمن11 سؤال في تمرير متغيرات ضمن الوسيط middleware في node.js كانت الإجابة المقبولة   
    نعم تستطيع بناء وسيط middleware لعمل ذلك ، ويمكنك بناء الدالة على هذا الشكل
    function Role(role) { return function(req, res, next) { if (role !== req.user.role) res.redirect(...); else next(); } } ويمكنك إستخدام هذا الكود للتأكد من أنك لا تقوم بعمل نسخ متعددة من نفس الدالة:
    function Role(role) { return Role[role] || (Role[role] = function(req, res, next) { if (role !== req.user.role) res.redirect(...); else next(); }) }  
  16. إجابة عبدالله عبدالرحمن11 سؤال في تفسير ألية عمل الدالة لترتيب الارقام تصاعديا - جافاسكريبت كانت الإجابة المقبولة   
    تقوم دالة sort() بفرز عناصر المصفوفة في مكانها وإرجاع المصفوفة التي تم فرزها. 
    ترتيب الفرز الافتراضي تصاعدي ، مبني على تحويل العناصر إلى سلاسل ، ثم مقارنة تسلسل قيم وحدات رمز UTF-16.
    حيث أي عنصر في المصفوفة يتم تحويله الى نص ، على سبيل المثال إذا كان العنصر رقم فيتم تحويله الى سلسلة نصية string ومن ثم يتم مقارنة السلاسل النصية وفقاً لقيمها في نظام UTF-16 . هذه هي الحالة الإفتراضية لدالة sort أي إذا لم تقم بتمرير دالة مقارنة إليها ، على سبيل المثال
    let arr = [4,30,100,1] arr.sort() // [1, 100, 30, 4] /* * تم ترتيب العناصر على أنها سلاسل نصية ووفقاً لقيمها في نظام * UTF-16 */ أما إذا قمت بتمرير دالة مقارنة إليها فيتم ترتيب العناصر بناءً على دالة المقارنة ولايتم الترتيب الافتراضي بتحويل العناصر الى سلاسل نصية string ، كما في الكود الخاص بك
    let numbers =[2, 14, 1, 2, 5]; /* دالة المقارنة تقوم بمقارنة عنصرين متجاورين حيث المتغير * x * هو المتغير الأول والمتغير * y * هو المتغير التالي المجاور للمتغير * x * ويتم إرجاع المتغير الأكبر */ number.sort((x,y) => y - x);  
  17. إجابة عبدالله عبدالرحمن11 سؤال في إستدعاء ملف بايثون من المجلد الأب كانت الإجابة المقبولة   
    هناك عدة طرق لإستدعاء ملف من المجلد الأب ، فيمكنك إضافة المسار الأب الى المسارات التي بايثون سيقوم بالبحث فيها بإستخدام دالة path كالآتي
    import sys sys.path.append("..") import helpers كما يمكنك إضافة المسار الأب أو أي مسار تريد إستيراد الوحدات modules منه كالآتي
    # إستدعاء دالة sys import sys # إضافة المسار الى الرقم 1 لأن 0 هو المسار الحالي sys.path.insert(1, '/path/to/application/app/folder') # إستيراد الوحدة من المسار المختلف import file  
  18. إجابة عبدالله عبدالرحمن11 سؤال في الفرق بين cout و printf في c++  كانت الإجابة المقبولة   
    ليس هناك فرق بين نوع عمل الدالتين فهما الاثنتين يقومان بالطباعة على موجه الأوامر CMD. وايضاً هناك اختلاف في الإستخدام فعلى سبيل المثال طريقة إدراج متغير تختلف في الدالتين ففي دالة cout تكون كالآتي
    #include <iostream> using namespace std; int main () { // تعريف متغير int i = 4; // إدراج المتغير لطباعته cout << "The number is " << i; return 0; } اما في دالة printf
    #include <stdio.h> int main() { // تعريف المتغير int num = 4; // إدراج المتغير لطباعته printf("Hello world %d", num); return 0; } والإختلاف المهم هو أن دالة cout يتم إستخدامها في ++C ويتم إستيرادها من مكتبة iostream
    اما دالة printf فيتم إستخدامها في C ويتم إستيرادها من مكتبة stdio.h
    ويُفضل إستخدام iostream بدلاً من cstdio لأن iostream
    أكثر أمانًا من ناحية النوع : مع <iostream> نوع الكائن الذي يتم إدخاله / إخراجه معروف بشكل ثابت بواسطة المترجم. في المقابل ، <cstdio>يستخدم الحقول "٪" لاكتشاف الأنواع ديناميكيًا. أقل عرضة للخطأ: مع <iostream>، لا توجد رموز "٪" زائدة يجب أن تكون متسقة مع الكائنات الفعلية التي يتم إدخالها / إخراجها قابل للتوسيع:تسمح آلية <iostream>  بأنواع جديدة معرّفة من قبل المستخدم لتكون قابلة للإدخال / إخراج دون كسر الكود الحالي. تخيل الفوضى إذا قام الجميع في نفس الوقت بإضافة حقول "٪" جديدة غير متوافقة إلى printf() و scanf()؟! قابل للوراثة:آلية  <iostream>   مبنية من فئات حقيقية مثل std::ostream و std::istream. على عكس <cstdio> . 
  19. إجابة عبدالله عبدالرحمن11 سؤال في كيف أقوم بنقل الملفات من مكان لآخر ضمن node.js؟ كانت الإجابة المقبولة   
    يمكنك تثبيت الحزمة mv لكي تقوم بنقل الملفات بكل سهولة
    npm i mv ويمكنك إستخدامها كالآتي
    // إستدعاء الحزمة var mv = require('mv'); /* قم بإستبدال * source/file * بالمسار الكامل للملف الذي تريد نقله * واستبدل * dest/file * بالمسار الكامل للوجهة الذي تريد نقل الملف إليها مع اسم الملف */ mv('source/file', 'dest/file', function(err) { // كتابة كود عند وقوع مشكلة هنا }); اما إذا أردت نقل الملفات بدون تثبيت حزم فيمكنك إستخدام هذا الكود
    var fs = require('fs'); // تحديد الملف المراد نقله var source = fs.createReadStream('source_file'); // تحديد الوجهة المراد النقل إليها var dest = fs.createWriteStream('destination_file'); // نسخ الى المسار الجديد source.pipe(dest); // فك الربط بعد الإنتهاء source.on('end',function() { fs.unlinkSync('source_file'); });  
  20. إجابة عبدالله عبدالرحمن11 سؤال في كيفية عمل مصفوفة numpy من خلال كل الإحتمالات الممكنة من دمج مصفوفتين؟ كانت الإجابة المقبولة   
    في الإصدار الأحدث من numpy 1.8.x ،لديك دالة  numpy.meshgrid والتي توفر تنفيذًا أسرع بكثير:
    دالة numpy.meshgrid() كانت تستخدم لتكون ثنائية الأبعاد فقط ، والآن أصبحت قادرة على ND. في هذا المثال ، ثلاثي الأبعاد:
    In [115]: %timeit np.array(np.meshgrid([1, 2, 3], [4, 5], [6, 7])).T.reshape(-1,3) 10000 loops, best of 3: 74.1 µs per loop In [116]: np.array(np.meshgrid([1, 2, 3], [4, 5], [6, 7])).T.reshape(-1,3) Out[116]: array([[1, 4, 6], [1, 5, 6], [2, 4, 6], [2, 5, 6], [3, 4, 6], [3, 5, 6], [1, 4, 7], [1, 5, 7], [2, 4, 7], [2, 5, 7], [3, 4, 7], [3, 5, 7]])  
  21. إجابة عبدالله عبدالرحمن11 سؤال في مالفرق بين tsx و ts ؟؟ اذا ماكانا الاثنين يشيران الى typescript فما الفرق ؟؟ ام لا يوجد فرق ؟ كانت الإجابة المقبولة   
    وعليكم السلام
    الأول ts وهذا يعني أنك تستخدم type script في مشروعك فقط
    اما tsx فهذا يعني أنك تستخدم type script و JSX الخاص ب React في مشروعك
    لا يوجد واحد أفضل من الآخر لان كلاً منهما عمل مختلف فقط وهو JSX في ملفات tsx فقط
    لأن المكتبات التي لا تحتوي على مكونات component لن تحتاج الى JSX في ملفاتها لهذا ستكون ts فقط
    نعم ستفيدك بشكلٍ كبير في أي مشاريع JavaScript وخاصةً المشاريع الكبيرة.
    لأنه في JavaScript لا يمكنك تحديد نوع المتغيرات اما في typescript فيمكنك ذلك وهذا هو الهدف الرئيسي من typescript لكي تتجنب الوقوع في المشاكل البرمجية bug وهذا سيوفر عليك الكثير من الوقت الذي كنت ستقضيه في إصلاح هذه المشاكل debugging
  22. إجابة عبدالله عبدالرحمن11 سؤال في تغيير مسار تحميل الحزم في node.js كانت الإجابة المقبولة   
    يمكنك إستخدام prefix عند تنفيذ أمر التثبيت من NPM كما في المثال
    npm install react --prefix ./vendor/node_modules حيث سيتم تثبيت react في هذا المسار
    ./vendor/node_modules وايضاً يمكنك إضافة متغير البيئة NODE_PATH لإضافة المسار الجديد كما في المثال
    export NODE_PATH='yourdir'/node_modules  
  23. إجابة عبدالله عبدالرحمن11 سؤال في كيف تعمل المعاملات and و or مع القيم غير المنطقية في بايثون؟ كانت الإجابة المقبولة   
    سنقوم بشرح سلوك اثنين من العوامل المنطقية and و or. وفقاً للتوثيق الرسمي لبايثون
    العامل المنطقي and سيقوم بإرجاع القيمة الخاطئة الأولى إذا وُجدت ، وإلا سيقوم بإرجاع القيمة الآخيرة في التعبير expression
    العامل المنطقي or سيقوم بإرجاع القيمة الصائبة الأولى إذا وُجدت ، وإلا سيقوم بإرجاع القيمة الآخيرة في التعبير expression
    العامل الوحيد الذي يقوم بإرجاع قيمة منطقية بغض النظر عن قيم معاملاته هو العامل المنطقي not
  24. إجابة عبدالله عبدالرحمن11 سؤال في هل من المؤكد أن True == 1 و False == 0 في كل الأحوال في بايثون؟ كانت الإجابة المقبولة   
    في بايثون الإصدار 2 هذا ليس مضمونا كما أنه من الممكن ل True و  False أن يعاد تعيينهما ومع ذلك ، حتى في حالة حدوث ذلك ، لا يزال يتم إرجاع الصحيح المنطقي والخطأ منطقي بشكل صحيح لإجراء مقارنات.
    في بايثون 3 ،  True و False هما كلمتان محجوزتان، وسيكونا دائما يساوين 1 و  0.
    الكائن False من نوع bool هو صنف فرعي من int:
    object | int | bool هذا هو السبب الوحيد الذي يجعل ['hello', 'world'][False] في مثالك يعمل.
    لذلك يتم اعتبار القيم المنطقية  كأعداد صحيحة int في بايثون 2 و 3.
  25. إجابة عبدالله عبدالرحمن11 سؤال في التطبيق يطلب منى clean up ل useEffect كيف افعلها ؟؟ كانت الإجابة المقبولة   
    دالة التنظيف clean هي دالة تقوم بوضعها في إرجاع دالة useEffect لكي تقوم بإزالة بيانات سابقة أو أحداث سابقة كما في هذا المثال
    useEffect(() => { API.subscribe() return function cleanup() { API.unsubscribe() } },[]) وهذا مثال آخر يوضح ذلك
    const Loading = () => { const [loadingStatus, setLoadingStatus] = useState("."); useEffect(() => {// إنشاء فترة وحفظ رقمها const intervalId = setInterval(() => { setLoadingStatus(ls => ls + "."); }, 1000); return () => clearInterval(intervalId);// إزالة الفترة التي أنشئناها من خلال دالة التنظيف }, []); return <p>{`Loading ${loadingStatus}`}</p>; };  
×
×
  • أضف...