لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 09/26/21 in أجوبة
-
السلام عليكم ورحمة الله وبركاته أخي الكريم أحس ببعض الصعوبة بوصول الهدف من دروس الاساسيات في جافا سكريبت بعض الفيديوهات تكون سريعه جداً ولا يكون الشرح فيها مبسط لفهم الهدف منها ولا يوجد أملثه كثيره لفهمها جيداً، وبعد البحث مع مبرمجين قالوا لي انه يجب عليك ان يكون عندك اطلاع بلغة html و css قبل الدخول في لغة جافا سكريبت. ١_هل هو صحيح انه يجب ان يكون عندي اطلاع بلغة html و css قبل تعلم لغة جافا سكريبت؟ ٢_ماذا يجب علي ان افعله من أجل فهم الاساسيات وكيف اقوم بترسيخ هذه الاساسيات عندي.؟ وشكراً سلفاً أخي الكريم3 نقاط
-
و عليكم السلام و رحمة الله بداية أدعوك إلى عدم القلق بشأن مواجهة صعوبة في الفهم أو الإحساس بعدم وصول الفكرة , فهذا الأمر شائع جدا في الأوساط البرمجية و ستحتاج أن تتعلم الصبر في التعلم قبل كل شيء . أما عن سؤالك بخصوص تعلم HTML و CSS لتعلم جافاسكربت فإن تعلمهما ليس إلزاميا لتعلم الجافاسكربت , و ذلك لكونها لغة مستقلة بمنطقها و سياقها الخاص و بطريقة تعاملها الخاصة , و لكن تعلم الـ HTML و الـ CSS قبلها أو معها سيأخذ بتعلمها إلى بعد اخر , بعيدا عن التجريد الذي تعتمده لغات البرمجة خصوصا و أنك تلتمس نتائج شيفرة الجافاسكربت على شاشة المتصفح . و هذا لا يعني بالضرورة تطبيق ما يعرف بنموذج كائن الوثيقة DOM أو نموذج كائن المتصفح BOM . بل المقصود هو تطبيقك لمفاهيم الجافاسكربت كالتكرارات و المتغيرات و الدوال و غيرها بطريقة تلخص نتائجها في عرض و تلاعب على الشاشة . أي أن الإجابة بإختصار على السؤال "هل يجب تعلم HTML و CSS قبل الجافاسكربت؟" هي "لا ليس بالضرورة , و لكنها تجعل عملية تعلمها أبسط , أسرع و أكثر فعالية و أبعد عن التجريد التي تأتي به اللغة " . ترسيخ الأساسيات و مفاهيم اللغة لا يأتي اعتباطا , فبعض المفاهيم لا يحتاج شرحها إلا بضع دقائق بالعفل ,.و لكن استيعابها و هضمها من طرفنا يتم على طول مسارنا و أثناء و بعد تطبيقاتنا العملية لها . لذلك فإن أفضل طريقة لإكتسابها هي بممارستها و تطبيقها و مجددا الصبر معها . فقد يحدث أن لا تستوعب بعض الأفكار أو أن تستوعبها جزئيا الان أو خلال تعلمك للأساسيات , ثم يدعوك موقف ما إلى استذكارها و إستيضاحها . كما أن مدربي الأكاديمية في خدمتك في أي لحظة , و على طول مسارك التعليمي في الدورة . و لذلك لا تتردد بشأن السؤال في القسم المخصص لتعليقات الطلبة أسفل كل فيديو حول أي مفهوم أو فكرة أو شيفرة يصعب فهمها لديك , و سيعمل المدربون على إيضاح الفكرة لك و تبسيطها . من شأن هذا أن يجعلك تطور من نفسك في أول خطوة من حل المشكلات و هي " وصفها " و من جهة أخرى سيبسط مناقشة الفكرة و الأخذ و الرد بشأنها فهمها و إيضاحها و إبعاد كل صعوبة عنها .3 نقاط
-
إن لغة البرمجة جافاسكربت هي لغة مستقلة بذاتها وفهمها واستعمالها غير مرتبط بأي لغات برمجة أخرى، حيث يمكن استخدام جافاسكربت للقيام بأي عمليات برمجية وسكربتات، يقتصر ارتباطها ل HTML - CSS في برمجة واجهات المستخدم في مواقع الويب ولا تحتاج لشيئ آخر لاستعمالها معهم. إن كنت تتابع دورة تصميم واجهات المستخدم، فهذه الدورة تبدأ بأساسيات HTML و CSS أما دورة تطوير المواقع بواسطة جافاسكربت، لاتحتاج ل HTML - CSS فكل الشيفرة يتم كتابتها ل javascript ومن ثم يتم تحويلها بدون تدخل المطور لتصبح HTML ليعرضها المتصفح. بعد اشتراكك بأي دورة في أكاديمية حسوب، سيتم فتح المسارات الأولى من باقي الدورات مجاناً ويمكنك الاطلاع عليهم ودراستهم ومنمهم أساسيات HTML - CSS في دورة تطوير واجهات المستخدم وبالطبع سوف تستفيد منها دورة تطوير واجهات المستخدم > أساسيات تطوير الويب حيث أن هنالك جزء JSX (في واجهات المستخدم) في بعض أطر العمل يتم كتابته بتنسيق مثل HTML لكنه غير مرتبط فعليا بها، .. أما React فهي مكتبة واجهات مستخدم ترتبط مباشرة مع HTML - CSS يمكنك طرح أي أسئلة تشائها في قسم التعليقات أسفل الدرس، وطلب توضيحات أو أمثلة وسيعمل المدربين على شرحهم.2 نقاط
-
هل يوجد طريقة ما لحساب ان كان العدد اولي دون المرور من العدد 2 حتى العدد س ؟2 نقاط
-
لدي استفسار حول معالج الاخطاء Attribute في PDO حيث ان له ثلاثة انماط على حسب علمي هي : PDO::ERRMODE_EXCEPTION PDO::ERRMODE_SILENT PDO::ERRMODE_WARNING سؤالي ماهو دور كل واحدة فيهم وايهم هو النمط الافتراضي للامر setAttribute();1 نقطة
-
لماذا زر الـ <button> لا يظهر بعد تمرير الصفحة إلى الأسفل 600px ؟ أعرف أنه علي وضع الشروط داخل هذا كود : window.onscroll = function () {} لكن لماذا تلك الشروط لن تعمل إن لم أضعها فيه ؟1 نقطة
-
1 نقطة
-
أكواد JQuery لا تعمل لدى حيث لا يظهر الصور ولا يوجد حركة رغم إدراج كلاس الاكتيف MyPage.zip1 نقطة
-
أرجو نشر الأسئلة التي ضمن الدورات في قسم التعليقات أسفل الدرس، فقط الأسئلة التي تكون خارج محتوى الدرس نطرحها في الأسئلة العامة.1 نقطة
-
أجل يجب أن تتعلم الأساسيات قبل الخوض في الجافاسكريبت, وتلك الأساسيات هي الHTML, CSS حتى تقوم بفهم الأساسيات يجب أن تقضي فيها وقتاً وترى بعض الأمثلة حتى تتأكد تماماً من فهمك لها وتقوم بالتطبيق على تلك الأساسيات بنفسك حتى تترسخ تلك المفاهيم في عقلك1 نقطة
-
يمكنك إنشاء cache_page الخاص بك كالتالي from django.core.cache import cache def simple_cache_page(cache_timeout): """ Decorator للعرض الذي يحاول الحصول على الصفحة من ذاكرة التخزين المؤقت و يملأ ذاكرة التخزين المؤقت إذا لم تكن الصفحة في ذاكرة التخزين المؤقت بعد. يتم تمييز ذاكرة التخزين المؤقت بواسطة اسم العرض والوسيطات. """ def _dec(func): def _new_func(*args, **kwargs): key = func.__name__ if kwargs: key += ':' + ':'.join([kwargs[key] for key in kwargs]) response = cache.get(key) if not response: response = func(*args, **kwargs) cache.set(key, response, cache_timeout) return response return _new_func return _dec لذاكرة التخزين المؤقت للصفحة منتهية الصلاحية ، يمكنك استخدام cache.set('map_view:' + self.slug, None, 0) حيث self.slug عبارة عن معامل من urls.py url(r'^map/(?P<slug>.+)$', simple_cache_page(60 * 60 * 24)(map_view), name='map'),1 نقطة
-
في النسخ الحديثة من جانغو "2.0 وما فوق" تنفيذ هكاذا أمر أصبح أسهل: from django.utils.cache import learn_cache_key from django.core.cache import cache from django.views.decorators.cache import cache_page keys = set() @cache_page( 60 * 15, "blog" ); def blog( request ): response = render(request, 'template') keys.add(learn_cache_key(request, response) return response def invalidate_cache() cache.delete_many(keys) حيث يمكنك تسجيل Invate_cache كـ callback عندما يقوم شخص ما بتحديث منشور في المدونة عبر إشارة pre_save.1 نقطة
-
يمكنك أن بإنشاء دالة invalidate_cache ويتم إستخدامها عندما يقوم شخص ما بتحديث منشور في المدونة، وتقوم هذه الدالة بإنشاء المفتاح المستخدم في ذاكرة التخزين المؤقت وإستخدام هذا المفتاح في حذف الذاكرة المؤقتة. from django.core.cache import cache from django.http import HttpRequest from django.utils.cache import get_cache_key def invalidate_cache(path=''): request = HttpRequest() request.META = {'SERVER_NAME':'localhost','SERVER_PORT':8000} request.LANGUAGE_CODE = 'en-us' request.path = path try: cache_key = get_cache_key(request) if cache_key : if cache.has_key(cache_key): cache.delete(cache_key) return (True, 'تم حذف الذاكرة بنجاح') else: return (False, 'المفتاح المستخدم غير موجود في ذاكرة التخزين المؤقت') else: raise ValueError('فشل في إنشاء مفتاح ذاكرة التخزين المؤقت') except (ValueError, Exception) as error: return (False, error) ويمكنك إستخدام هذه الدالة على النحو التالي في المكان الذي ترغب به: status, message = invalidate_cache(path='/path/to/blog/route/')1 نقطة
-
كما ذكر سامح يمكنك استخدام CurrentUserDefault. إذا كنت لا تريد عمل override لدالة save فيمكنك استخدام الكود كالتالي from rest_framework import serializers class PostSerializer(serializers.ModelSerializer): user = serializers.PrimaryKeyRelatedField(read_only=True, default=serializers.CurrentUserDefault()) class Meta: model = Post1 نقطة
-
لا يمكنك الوصول إلى مستخدم الطلب مباشرة. تحتاج إلى الوصول إلى كائن الطلب ، ثم إحضار سمة المستخدم. user = self.context['request'].user والطريقة الأكثر أمانًا (لا يظهر خطأ KeyError أو خطأ AttributeError) كالتالي: user = None request = self.context.get("request") if request and hasattr(request, "user"): user = request.user كما يوفر Django-Rest-Framework طريقة أسهل للوصول إلى المستخدم الحالي من خلال إستخدام التابع CurrentUserDefault كالتالي: from rest_framework.fields import CurrentUserDefault class PostSerializer(serializers.ModelSerializer): class Meta: model = Post def save(self): user = CurrentUserDefault() # الحصول على المستخدم الحالي1 نقطة
-
كما قال سامح لأن المفتاح الفعلي ليس "posts" ، بل هو مفتاح تم إنشاؤه ديناميكيا بواسطة Django باستخدام ما يلي: args = md5_constructor(u':'.join([urlquote(resolve_variable(var, context)) for var in self.vary_on])) cache_key = 'template.cache.%s.%s' % (self.fragment_name, args.hexdigest()) سيكون المفتاح بالتنسيق: template.cache.posts.[hexdigest]. لذا فإن الجزء الصعب هو معرفة الجزء hexdigest, يمكنك استخدام الكود التالي كحل آخر from django.core.cache import cache from django.utils.hashcompat import md5_constructor from django.utils.http import urlquote def invalidate_template_cache(fragment_name, *variables): args = md5_constructor(u':'.join([urlquote(var) for var in variables])) cache_key = 'template.cache.%s.%s' % (fragment_name, args.hexdigest()) cache.delete(cache_key) من خلال الكود السابق يمكننا معرفة المفتاح بشكل فعلي ويمكننا ابطال ذاكرة التخزين المؤقت التي حددتها, نظرا لأنك لا تقوم بتمرير أي متغيرات ، يمكنك استدعاء ذلك فقط بـ Invalidate_template_cache ("posts") بخلاف ذلك ، ستحتاج إلى تمرير قائمة بجميع المتغيرات كالتالي invalidate_template_cache("posts", *variables)1 نقطة
-
هذا لأن المفتاح الفعلي للبيانات المؤقتة ليس "posts"، بل هو مفتاح يتم إنشاؤه ديناميكيًا بواسطة جانغو Django باستخدام كلمة posts مع خوارزمية md5، لذلك يوفر جانغو Django التابع make_template_fragment_key لكي تقوم بحذف البيانات المؤقتة. يقبل التابع make_template_fragment_key مدخلين، الأول هو اسم fragment_name هو المفتاح المعطى كاسم لهذه البيانات، وفي هذه الحالة يكون posts، بينما المعامل الثاني هو vary_on وهو قائمة بكل المعطيات التي يتم تمريرها إلى الوسم tag، ولحذف البيانات المؤقتة تقوم بعمل التالي: from django.core.cache import cache from django.core.cache.utils import make_template_fragment_key # cache key for {% cache 5000 posts %} key = make_template_fragment_key('posts') cache.delete(key) وإن كان لديك معطيات للوسم، فيمكنك تمريرها على النحو التالي: # cache key for {% cache 5000 posts data %} key = make_template_fragment_key('posts', [data])1 نقطة
-
هناك طريقتان للقيام بذلك. الأول هو استخدام التحقق من صحة النموذج لعدم السماح لأي مستخدم بإدخال أي رقم يزيد عن 50, إذا لم يكن هناك مستخدم مشارك في العملية ، أو إذا كنت لا تستخدم نموذجا لإدخال البيانات ، فسيتعين عليك عمل override لدالة model's save لطرح استثناء أو تقييد البيانات التي تدخل الحقل.يمكنك أيضا تجربة الحل التالي SCORE_CHOICES = zip( range(1,n), range(1,n) ) score = models.IntegerField(choices=SCORE_CHOICES, blank=True)1 نقطة
-
إليك حل ممتاز في حال كنت تريد بعض المرونة الإضافية ولا تريد تغيير مجال النموذج الخاص بك. عن طريق validator مخصص: from django.core.exceptions import ValidationError class validate_range_or_null(object): compare = lambda self, a, b, c: a > c or a < b clean = lambda self, x: x message = ('Ensure this value is between %(limit_min)s and %(limit_max)s (it is %(show_value)s).') code = 'limit_value' def __init__(self, limit_min, limit_max): self.limit_min = limit_min self.limit_max = limit_max def __call__(self, value): cleaned = self.clean(value) params = {'limit_min': self.limit_min, 'limit_max': self.limit_max, 'show_value': cleaned} if value: # اجعله اختياريًا ، أو قم بإزالته لجعله مطلوبًا، أو اجعله مطلوبًا في النموذج if self.compare(cleaned, self.limit_min, self.limit_max): raise ValidationError(self.message, code=self.code, params=params) حيث أن المعلمتان هما max و min ، وتسمح بقيم nulls. كما يمكنك تخصيص validator إذا كنت ترغب في ذلك عن طريق التخلص من عبارة if أو تغيير الحقل ليصبح blank = False، null = False في النموذج. سيتطلب ذلك بالطبع عملية migration. ويمكن استخدامه على هذا النحو: class YourModel(models.Model): .... no_dependents = models.PositiveSmallIntegerField("How many dependants?", blank=True, null=True, default=0, validators=[validate_range_or_null(1,100)])1 نقطة
-
يوفر جانغو المعامل validators في الحقل IntegerField حيث يقبل هذا المعامل قائمة من المتحققات (دوال مبنية في جانغو Django يمكنها التحقق من قيمة الحقل قبل تخزينها)، وبالتالي يمكنك إضافة شروط على كل حقل مثل تحديد أقصى قيمة يمكن تخزينها وأدنى قيمة أيضًا، ويمكنك عمل ذلك على النحو التالي: from django.db.models import IntegerField, Model from django.core.validators import MaxValueValidator, MinValueValidator class UserModel(Model): age = IntegerField( default=18, validators=[ MaxValueValidator(100), MinValueValidator(18) ] ) بعد عمل التعديل السابق على الحقل، يجب أن يتم إستدعاء التابع full_clean من النموذج حتى يتمكن جانغو Django من التعرف على هذه التغيرات، مع العلم أن هذا الإستدعاء غير ضروري للنماذج من نوع ModelForm. يوجد أيضًا طريقة أخرى وهي عمل حقل مخصص وتقوم بعد ذلك بكتابة أكواد التحقق validating بنفسك، كما في المثال التالي: from django.db import models class IntegerRangedField(models.IntegerField): def __init__(self, verbose_name=None, name=None, min_value=None, max_value=None, **kwargs): self.min, self.max = min_value, max_value models.IntegerField.__init__(self, verbose_name, name, **kwargs) def formfield(self, **kwargs): defaults = {'min': self.min, 'max':self.max} defaults.update(kwargs) return super(IntegerRangeField, self).formfield(**defaults) لاحظ أن الحقل IntegerRangedField الذي قمنا بعمله يقوم بالوراثة من الحقل IntegerField، بعد ذلك يمكنك أن تستخدم هذا الحقل المخصص على النحو التالي: from django.db.models import Model class UserModel(Model): age = IntegerRangedField(min_value=18, max_value=100) بالطبع يجب أن تقوم بإستدعاء الصنف IntegerRangedField من المكان الذي أنشأته فيه.1 نقطة
-
شهادة A+ وهي إحدى شهادات CompTIA التي تقدم العديد من الشهادات العلمية لكل من يهتم بالعمل في المجال التقني وخصوصًا مهنة الدعم الفني IT Support، وللحصول عليها يجب أولاً أن تجتاز امتحانين CompTIA A+ 220-901 و CompTIA A+ 220-902 يركز الامتحان الأول على فهم المصطلحات والتعديل على عتاد الحسوب hardware، واستكشاف الأخطاء وإصلاحها، ويحتوي على الفصول الآتية: العتاد Hardware الشبكات Networking الأجهزة المحمولة Mobile Devices استكشاف الأخطاء وإصلاحها Troubleshooting يعتمد الامتحان الثاني على الامتحان الأول، ويركز على التعامل مع مختلف أنظمة التشغيل وتثبيتها وضبط إعداداتها، ويحتوي على الفصول الآتية: نظام التشغيل ويندوز أنظمة تشغيل وتقنيات أخرى الأمن والحماية Security استكشاف الأخطاء وإصلاحها Troubleshooting إجراءات عمليات السلامة Operational Procedures يجب أن تحضر نفسك جيدًا قبل أن تخوض الامتحان وتركز جيدًا على مراجعة الكتب الإلكترونية وحل النماذج الامتحانية (يمكنك أن تحصل عليها عند التسجيل للامتحان مقابل مبلغ إضافي)، وتبلغ التكلفة 205 دولار أمريكي لكل امتحان أي تبلغ تكلفة الشهادة 410 دولار أمريكي، ويتوفر الامتحان بأكثر من لغة (ليس من بينها العربية)، عدد الأسئلة هو 90 سؤالا ومدَّة الاختبار 90 دقيقة، ويجب أن تحصل على 675 من 900 ودرجة في الامتحان الأول و700 من 900 درجة في الامتحان الثاني. يمكنك أن تقرأ أكثر حول هذه الشهادة وتفاصيلها وكيفية الحجز من هذه المقالة: مدخل إلى شهادة +CompTIA A، كما ستساعدك سلسلة الدروس الموجودة في الأكاديمية لفهم الأساسيات1 نقطة
