لوحة المتصدرين
المحتوى الأكثر حصولًا على سمعة جيدة
المحتوى الأعلى تقييمًا في 07/09/24 في كل الموقع
-
قمت بتعديلات كبيرة في موقعي و عند استخدامه لاحظت تحسن في سرعته لكن عند استخدام pagespeed.web.dev لا يظهر اي فرق قبل و بعد التعديل برأيكم هل موقعي سريع ام انه بحاجة لتحسين و كيف احسنه https://ajwa4alearab.freewebhostmost.com4 نقاط
-
كيفكم يا اصدقاء... فيه عندي موقع عملت له كود حتى يكون متجاوب مع جميع الشاشات لكن غير كافي ...ممكن تعطونا كود يجعل الموقع شكله ثابت مع جميع الشاشات من غير استعمال المكاتب <meta name="viewport" content="width=device-width, initial-scale=1.0">2 نقاط
-
كيف نقدر نعمل منع تكرار ارسال البيانات عن طريق الفورم... مثال في حال تم ارسال المعلومات المطلوبة عن طريق الفورم... لايسمح إرسالها مره ثانيه2 نقاط
-
2 نقاط
-
قدمت طلب للاختبار منذ خمسة أيام تقريبا وطلب مني ان اقوم بتوثيق حسابي ،وعندنا أتممت خطوات التوثيق قيل لي ان الرد سيأتي في خلال ٤٨ساعه ، وذلك كان قبل ٦٠ ساعه تقريبا هل من الطبيعي ذلك التأخير ام اني أخطأت في الخطوات؟2 نقاط
-
1 نقطة
-
1 نقطة
-
1 نقطة
-
ستجدين أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم الأسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.1 نقطة
-
حسب خبرتي في مجال البرمجة.... عرفت ان لغة css php Html وظيفتها بناء الموقع وجعله متصل مع قاعدة بيانات بتصميم حسب الطلب..... اما موضوع كثرة البيانات المستلمة وسعة التخزين هذا يعتمد على نوع الخادم الاستضافة يعني مسؤولية السرعه والأمان وحفظ البيانات هذا يعود من وظيفة الاستضافة والخادم.... اما وظيفة استلام البيانات وإرسالها إلى قاعدة بيانات هذه من وظيفة اكواد php وتصميم الموقع من وظيفة لغة css ومن وظيفة لغة Html بناء هيكل الموقع.... هل هذا الموضوع صحيح استمر فيه لو يوجد أفكار غير صحيحه1 نقطة
-
هذا يعتمد على ما الذي تقصده . هل تقصد إذا قام بإرسال بيانات لا يحق له إرسالها مرة أخري ؟ أم يحق له إرسال بيانات أكثر من مرة ولكن لا تتكرر ؟ على العموم يوجد أكثر من حل من خلال ال Session أو من خلال قاعدة البيانات . استخدام الجلسات (Sessions): عندما يتم إرسال البيانات لأول مرة من خلال الفورم قم بتخزين متغير والذى يدل على أنه تم إرسال البيانات في جلسة المستخدم. عندما يحاول المستخدم إرسال البيانات مرة أخرى تحقق إذا كانت هذه المعلومة موجودة في الجلسة؛ إذا كانت موجودة، فلا تسمح بإعادة إرسال البيانات. // في صفحة إرسال الفورم session_start(); if (isset($_SESSION['form_submitted'])) { // لا تسمح بإرسال البيانات مرة أخرى // يمكنك عرض رسالة خطأ أو إعادة توجيه المستخدم إلى صفحة أخرى } else { // معالجة البيانات هنا // ... $_SESSION['form_submitted'] = true; } استخدام من قاعدة البيانات: قم بإنشاء جدول يحوي على ال id الخاص بالمستخدم و عند إرسال البيانات تأكد هل هذا ال id موجود في الجدول أم لا إذا كان موجود فلا تقم بإضافة البيانات وإذا لم يكن موجود قم بإضافة البيانات و أيضا أضف ال id لخاص بالمستخدم في قاعدة البيانات .1 نقطة
-
مبدئيا، لم يأخذ فتح الموقع أول مرة وقتا طويلا. ولكن يلحظ وجود بعض الأخطاء في كونسول المتصفح يبدوا أنها بشأن تثبيت jQuery. بالنسبة لتقييم الآداء في Google Lighthouse فهو يشير إلى نسبة جيدة نوعا ما (80 بالمئة على سطح المكتب / 70 بالمئة على الهاتف). فيما يلي بعض النصائح لتحسين آداء الموقع وتسريعه أكثر: قم بتقليل minify شيفرات جافاسكربت وcss واضغطها أكثر. يمكنك استعمال ادوات عبر الويب مثل: https://www.toptal.com/developers/javascript-minifier قم بتقليل الاعتماد على أي مكتبات غير ضرورية في الصفحة قم بتحجيم الصور إلى الأحجام المصيرة Rendered size بدل استعمال أحجام فعلية، مثال: ان كانت صورة تعرض بأبعاد 4000 بكسل على 1000 بكسل ويتم تصييرها في المتصفح بأبعاد 1000 بكسل على 250 بكسل فإن من الأفضل تحجيمها إلى 1000 بكسل على 250 لأن ذلك استهلاك غير ضروري للموارد. نصائح أكثر: قم بتفعيل الكاش واستخدم قاعدة بيانات ذاكرة in-memory database مثل Redis أو Memecached قم بتوزيع ملفات css وجافاسكربت من شبكات cdn قم باستعمال lazy loading لتحميل الصور1 نقطة
-
سرعة الموقع غير مهمة في حال كانت واجهة المستخدم بحاجة إلى التحسين، فعند التوجه للموقع لم تقابلني مشكلة في سرعة تحميله حيث استغرق 3 ثوانِ تقريبًا على إتصال VDSL، بينما 5 ثوانِ على إتصال Fast 3G، مع الأخذ في الإعتبار أنك تستخدم استضافة مجانية. كتحسين قم بوضع سكريبت leaflet و رابط تنسيقات font-awesome في نهاية عنصر body وليس في عنصر head. أيضًا ضغط الصور وتقليل حجمها واستخدام صيغة webp أو avif، بجانب عمل minify لملفات الأكواد لديك. لكن عليك العمل على واجهة الموقع من خلال ترتيبها واختيار ألوان هادئة ومريحة للعين.1 نقطة
-
السلام عليكم ورحمة الله تعالى وبركاته اخبرني صديق لي انني ضيعت وقتي في اختياري لمسار الfrontend وأنه لم يعد مطلوباً في السوق خصوصاً بعد التطور Ai وان الشركات ستستبدل الموطورين بالAi في الفترة القادمة... و سؤالي هو ما إن كان كلامه صحيح وايضا سمعت كثير من الناس في السوشيال ميديا يرددون ذلك وان هذا المجال سيختفي قريبا من ما افزعني وخفت ان اكون قد تسرعت في اختيار هذا المسار وعليا ان ارى مسار آخر...و لأنني اريد وظيفة مستمرة ولديها مستقبل ودخل ذابت وبالعمل الصعبة أيضا... شكراً جزيلاً لكم1 نقطة
-
السلام عليكم هل على الشخص أن يحترف التقنيات الأساسية في تطوير الويب (جافا سكريبت, php, css...إلخ) قبل أن يبدأ تعلم أطر العمل أم يحتاج فقط أن تكون له معرفة أساسية بها؟1 نقطة
-
لدي مشكلة الا وهي ان الدروس لا تشتغل حيث يتوقف الدرس فجاة ويظهر لي player error ارجو المساعدة1 نقطة
-
يجب التفرقة بين عدد الإسكريبتات التي توجد على السيرفر و عدد الإسكريبتات التي يتم تشغيلها في ذات الوقت عن إرسال الطلب للخادم . فمن الممكن أن الخادم يحوي على آلاف من الإسكريبتات والأكواد و لكن يعتمد على الطلب الحالي كم إسكريبت يعمل . فإن كانت الأربع إسكريبتات تعمل منفصلة أو حتي معا فهما ليسو بالشئ الكبير الذى سيؤثر على الخادم والسرعة ولكن العامل الرئيسى هو مدي البيانات التي يتم معالجتها . فإن كان يوجد سكريبت منهم مثلا يقوم بتحميل بيانات من قاعدة البيانات ووضعها في ملف excel وتحميله أو حتي عمل تعديلات على هذه البيانات والبيانات كبيرة تتخطى عدة آلاف من البيانات فحينها ستجد مشاكل تحدث وبطئ وهذا سيزيد في حالة كان يوجد أكثر من مستخدم يستخدم الموقع والإسكريبت في ذات الوقت . ولكن خلاف ذلك كل شئ جيد لا تقلق1 نقطة
-
1 نقطة
-
نعم بالظبط ما تقوله صحيح ولنوضح معا أكثر . دور كل لغة: HTML (HyperText Markup Language): تستخدم لبناء هيكل الصفحات وإنشاء العناصر وتحديد المحتوى، مثل النصوص والصور والروابط. CSS (Cascading Style Sheets): تستخدم لتنسيق وتصميم الموقع مثل تحديد الألوان والخطوط و أماكن العناصر وأشكالها وحجهما. PHP: هي لغة برمجة تستخدم في جانب الخادم (server-side) تتيح بك بناء موقع متفاعل و ديناميكي من خلال حفظ وإظهار البيانات من قواعد البيانات والمعالجة الديناميكية للمحتوى. أما بالنسبة لجزء معالجة وتخزين البيانات : فكثرة البيانات المستلمة وسعة التخزين تعتمد في الغالب على الخادم الذي يتم استضافة الموقع عليه بما في ذلك سرعة وأمان الخادم وسعته التخزينية وأيضا يعتمد على الإسكريبت الخاص ب php الذى قمت ببناءه فمن الممكن أنك قمت ببناء سكريبت بطئ حيث يستخدم موارد كثيرة ويحتوي على منطق معقد الذى يحتاج إلى وقت طويل لمعالجته لذلك حتي لو كان الخادم سريع ولديه موارد كثيرة ولكن الإسكريبت الخاص بك بطئ ويعالج بيانات كثيرة فستجد بطئ في الإستخدام. أما بالنسبة إلى الأمان وحفظ البيانات: الأمان وحفظ البيانات يعتمدان على تنفيذ صحيح للبرمجة فمن الممكن أن الإسكريبت الخاص بك يحتوي على ثغرات مثل أشهر الثغرات وهى SQL Injection و الثغرات الأخري فإذا الأمان لا يقتصر فقط على الخادم بل على الإسكريبت الخاص بك وطريقة كتابته. أم بالنسبة إلى المسؤولية عن الأداء والسرعة: فكما وضحت لك الأداء والسرعة في التحميل تعتمد على كيفية بناء الإسكريبت الخاص بك والموارد الخاصة بالخادم.1 نقطة
-
1 نقطة
-
1 نقطة
-
هل المقصود التقدم للإختبار في الأكاديمية بخصوص الدورة؟ أم أنك تودين تمارين على Excel؟1 نقطة
-
مرحبا عبدالرحمن، لا مشكلة في ذلك يرجى الإنتظار حتى يتم التأكد من هويتك وتوثيق حسابك. ربما أنهم مشغولون في طلبات سابقة قد قدمت لهم لمستخدمين أخرين لتوثيق الحسابات، فلا تقلق وسيتم توثيق حسابك. وإذا كان هناك مشكلة في التوثيق سيتم الرد عليك من خلالهم يخبرك بسبب عدم التوثيق. كل ما عليك هو التجهيز والمذاكرة للإختبار. بالتوفيق...1 نقطة
-
مرحبا عبدالرحمن . لا داعي للقلق ونعتذر لك عن أى تأخير فهو حاليا هنا ضغط على قسم الدعم ومن المحتمل حاليا أنه يتم مراجعة الأكواد والمشاريع الخاصة بك وبمجرد الإنتهاء سيتم الرد عليك إن شاء الله . وحاليا أنصحك بمراجعة الأساسيات سريعا و الدروس وذلك حتي تكون جاهزا للإختبار . بالتوفيق لك إن شاء الله1 نقطة
-
وعليكم السلام ورحمة الله وبركاته. لا بالفعل ليس هناك حاجه لأن يحترف الشخص التقنيات الأساسية في تطوير الويب بشكل كامل قبل أن يبدأ في تعلم أطر العمل. يمكن أن يبدأ الشخص بالتعلم عندما يكون لديه أساسيات بلغات البرمجة مثل JavaScript وPHP وCSS، ومن ثم يمكنه الانتقال إلى دراسة أطر العمل المختلفة. وأيضا سؤالك خاطئ قليلا حيث أن إطار العمل يكون مبنى بناء على اللغة التي يوفر الإطار لها فليس هناك إطار عمل واحد فيه جميع اللغات . فمثلا في css فإطار عمل مثل bootstrap و tailwind مبنيان على css ولجعل العناصر متفاعلة في الموقع فهما يستخدمان javascript و يستخدمان مكتبة jquery . لذلك من يريد إستعمال bootstrap و tailwind فيجب ان تكون لديه الأساسيات الخاص ب css حتي يستطيع إستخدامهم بشكل جيد وإذا ما واجهته اى مشكلة يستطيع حلها. وأيضا في javascript فإطار عمل jquery او حتي react او غيرهم فيجب ان تكون ملما بأساسيات javascript. وكذلك الامر بالنسبة ل php فيوجد أطر عمل مثل laravel ولإستخدام اطر عمل php يجب على الاقل ان تكون لديك اساسيات لغة php ولكن لتصبح متمكنا في إطا العمل فيجب عليك ان تكون ملما بكل شئ في php حتي تستطيع ان تعرف كيف تم إنشاء لارافيل وهكذا ستستطيع العمل بكفاءة عليه وإستخدامه بافضل شئ ممكن . لهذا إذا كنت تريد العمل على إطار للغة php فلا بئس إذا لم تكن ملما ب css وjavascript حيث أطر عمل php خاصة فقط بالواجهة الخلفية ويمكن إستعمال قوالب جاهزة دون الحاجه إلى معرفة css و وjavascript . ويمكنك قراءة الاجوبة التالية لمزيد من التفاصيل:1 نقطة
-
فالاول يجب فهم الService Container يمكن أن يكون Service Container معقد بعض الشيء، Service Container في Laravel هو أداة قوية لإدارة التبعية (Dependency Injection) وتحديد مكونات التطبيق. يُعتبر Service Container قلب Laravel حيث يساعد في ربط المكونات المختلفة معًا بشكل مرن وسهل. مفهوم التبعية (Dependency) عندما يعتمد كائن ما على كائن آخر لكي يعمل، يُقال أن لديه "تبعية". على سبيل المثال، لنفترض أن لدينا كائنًا من نوع RegisterController والذي يعتمد على كائن من نوع RegisterService. هنا، RegisterController يعتمد على RegisterService ليعمل بشكل صحيح. Service Container يعمل كصندوق أسود، يتم فيه تسجيل جميع الخدمات التي يحتاجها التطبيق، وعند الحاجة إلى أي خدمة، يتم استدعاؤها من خلال هذا الصندوق بطريقة بسيطة ومنظمة. كيفية استخدام Service Container: 1. تسجيل الخدمات (Binding): يمكن تسجيل الخدمات في Service Container باستخدام طرق مثل bind و singleton. يتم تسجيل أغلب الخدمات في ال Service Provider in register() function داخل ال service provider يمكننا الوصول إلى ال Service Container عن طريق هذه الخاصية $this->app الفرق بين bind و singleton: bind: يتم استخدام bind لتسجيل خدمة يتم إنشاؤها في كل مرة يتم فيها طلبها من الـ Service Container. بمعنى آخر، يتم إنشاء كائن جديد في كل مرة تستدعي فيها الخدمة. singleton: يتم استخدام singleton لتسجيل خدمة يتم إنشاؤها مرة واحدة فقط عند أول طلب، وتُعاد نفس النسخة في كل مرة يتم فيها طلبها بعد ذلك. هذا يضمن أن نفس الكائن يُستخدم في جميع أنحاء التطبيق. 2. استدعاء الخدمات (Resolving): يوجد طريقتين لإستدعاء الخدمات التي تم تسجيلها الاستدعاء التلقائي: لحسن الحظ، العديد من الكلاسات التي سيتم كتابتها عند بناء تطبيق Laravel تستقبل تلقائيًا تبعياتها عبر الـ Container، بما في ذلك: Controllers - Event Listeners - Middleware الاستدعاء اليدوي: يمكنك أيضا استدعاء الخدمات يدويا باستخدام طريقة make من الـ Service Container فوائد استخدام Service Container: إدارة التبعيات بفعالية: يساعد Service Container في إدارة التبعيات بين المكونات المختلفة في التطبيق بطريقة مركزية ومرنة. سهولة الاختبار: من خلال حقن التبعيات، يصبح من السهل اختبار المكونات بشكل منعزل باستخدام أدوات الاختبار (Mocking). تنظيم الكود: يساهم Service Container في تنظيم الكود بشكل أفضل من خلال تجميع التسجيلات في مكان واحد. فلنرجع لفهم الService Provider فهو أساس عملية التحميل في Laravel. فهو المسؤول عن ربط جميع الخدمات الرئيسية في التطبيق، بما في ذلك الخدمات التي يحتاجها التطبيق للعمل بشكل صحيح. تستخدم Service Providers لتهيئة تطبيق Laravel وإعداده. تقريبا كل خدمة في Laravel يتم تهيئتها عبر Service Providers، سواء كانت خدمة داخلية أو خدمة يتم استخدامها من حزم خارجية. كل Service Provider يسجل في الملف config/app.php داخل المصفوفة providers. لإنشاء Service Provider: يمكنك إنشاء Service Provider جديد باستخدام الأمر artisan التالي: php artisan make:provider AdminServiceProvider سينتج عن هذا إنشاء ملف جديد داخل مجلد app/Providers. بعد إنشاء Service Provider، يجب تسجيله داخل الملف config/app.php في المصفوفة providers. لإعداد Service Provider يتضمن كل Service Provider two function: register and boot. register: يتم استخدام هذه function لتسجيل الخدمات في الحاوية (Container). هنا يمكن ربط الكلاسات عن طريق dependency injection كما قمت بشرحه في البوست السابق. boot: يتم استدعاء هذه function بعد تنفيذ كل ال register() function لجميع ال service providers. يمكننا استخدامها لتنفيذ أي إجراءات تتطلب الخدمات المسجلة، مثل تسجيل routes or command. أهمية استخدام boot: في Service Provider يتم استدعاؤها بعد تسجيل جميع الخدمات، مما يعني أنه يصبح لدينا وصولا إلى جميع الخدمات الأخرى التي تم تسجيلها بواسطة داخل ال register function. هذا مفيد بشكل خاص عندما تحتاج إلى تسجيل View Composers أهمية Service Providers: تنظيم الكود: تساهم Service Providers في تنظيم الكود بشكل أفضل من خلال تجميع عمليات التهيئة في مكان واحد. تسهيل الاختبار: باستخدام Service Providers، يمكننا بسهولة إعداد بيئة الاختبار الخاصة بنا عن طريق تسجيل الخدمات والتهيئة اللازمة. مقدمو الخدمات (Service Providers) في Laravel1 نقطة
-
أهنئك على اجتهادك ومحاولاتك، وكلها صحيحة بفضل الله مع بعض الملاحظات البسيطة. الاستعلام الأول والثاني سليم تمامًا لا ملاحظات عليه الاستعلام الثالث بالفعل يعرض المنتجات على حسب أفضلية المبيعات، إلا إنه يعرض جميع المنتجات في حين نحن نريد عرض أول خمس منتجات فقط لذلك هناك إضافة بسيطة جدًا وهي limit 5 بآخر الاستعلام select product_name, quantity, price, (quantity*price) as total_price from master..Products, orders where Products.product_id = orders.product_id order by quantity desc limit 5 الاستعلام صحيح مائة بالمائة. أما بخصوص الاستعلام الرابع نحن نريد استخراج السنة والشهر من التاريخ، لأنه سيتم التجميع بناء عليهم وليس على التاريخ كله SELECT YEAR(order_date) AS SalesYear, MONTH(order_date) AS SalesMonth, SUM(Price) AS TotalSales FROM Sales GROUP BY YEAR(order_date), MONTH(order_date) ORDER BY YEAR(order_date), MONTH(order_date)1 نقطة
-
أطر العمل الشهيرة في PHP والتي من بينها لارافيل تعتمد على ما يُسمى بحاوية الخدمات (Service Container) وهي عبارة عن حاوية يتم ملؤها بكافة الإعتماديات والتبعيات التي يحتاجها إطار العمل للإقلاع وتتم هذه العملية أثناء التمهيد (Bootstrapping)، تعتمد لارافيل كثيراً على مزودي الخدمات (Service Providers) لتحميل الأصناف و الكائنات وغيرها من إعتماديات، وأثناء التنفيذ إذا ما احتاج صنف معين إلى شيء ما يتم جلبه من تلك الحاوية إن كان موجود وإذا لم يكن كذلك يتم إنشاؤه و الإحتفاظ به في الحاوية لجلبه عند الطلب مرة أخرى. في الرابط التالي: DefaultProviders ستجد كل مزودي الخدمات الإفتراضية التي يستعملها إطار العمل، كل مزود خدمة به تابع register يقوم بتسجيل الخدمة التي يقدمها في حاوية الخدمات، أثناء عملية التمهيد يتم المرور عليها كلها وتنفيذ التابع register لتسجيل تلك الإعتماديات. بعد تسجيل مزود الخدمة يتم أيضًا إستدعاء التابع boot يُمكنك الإطلاع على المقال التالي للمزيد من المعلومات: مُعظم الحزم الشهيرة بها مزود خدمة يتم تسجيله بعد تثبيت الحزمة و هنا مثال عن FortifyServiceProvider ، بإمكانك إنشاء مزودو خدمة خاصين بتطبيقك الذي تبنيه، كل ما عليك هو تسجيلهم في الملف providers.php الموجود في مجلد bootstrap أو إستخدام AppServiceProvider الموجود بشكل إفتراضي المفهوم نفسه لم يتغير سواء في لارافيل 11 أو الإصدارات التي قبله، ما تغير هو فقط مكان تسجيل مزودي الخدمات الخاصة بالحزم أو تلك التي تُنشؤها بنفسك، سابقاً كان في ملف app.php بمجلد config و الآن أصبح يتم من خلال الملف providers.php الموجود في مجلد bootstrap. بالنسبة للحزم التي تقوم بتثبيتها يُفترض أن عملية التسجيل ستتم بشكل تلقائي أما إذا أنشأت مزود خدمة بنفسك فستسجله بنفسك وذلك فقط بإضافته إلى المصفوفة في الملف. ستجد في المساهمة التالية مثال عن الإستخدام لإنشاء نظام صلاحيات و أدوار:1 نقطة
-
وعليكم السلام ورحمة الله وبركاته . ال Token based authentication هو نهج شائع لحماية تطبيقات الويب حيث يعتمد على استخدام توكن (Token) لتأكيد هوية المستخدم بدلاً من الاعتماد المستمر على تحقق بيانات الدخول مع كل طلب. تساعد هذه التقنية في تحسين أداء التطبيق وتخفيف الحمل على الخادم بالاستفادة من معلومات الهوية الموجودة في التوكن المصادق عليه. الآلية التقليدية لل Token based authentication تعمل بالطريقة التالية: تسجيل الدخول: المستخدم يقوم بإدخال بيانات الاعتماد (اسم المستخدم وكلمة المرور). التحقق من الاعتماد: يتم التحقق من صحة بيانات الدخول. إذا كانت صحيحة، يتم إنشاء وإرجاع توكن (Token). إرسال ال token: token يتم إرساله إلى العميل (المتصفح أو التطبيق). استخدام ال token: العميل يقوم بإرفاق الtokenفي كل طلب يقوم به إلى الخادم. الآن نأتي لسؤالك الأساسى وهو الإكتفاء فقط بالتحقق الأولي بعدها ندع المستخدم يرسل الطلبات بدون التحقق منها مادام أنه لم يقم بتسجيل الخروج . هذا سؤال جيد ولكن يوجد سؤال لك كيف سنعرف أن هذا المستخدم هو من يقوم بإرسال الطلبات في كل مرة ؟؟ كيف سترسل المعلومات ؟ ستقول مثلا أنه يتم وضعها في ال session إذا أى شخص يستطيع وضعها في ال session فمن الممكن أنني أعرف أن الحساب بك هو test@test.com إذا سأقوم بوضعها في ال session وأنتحل شخصيتك ولن يفرق الخادم بيننا . حيث أنه في ال token يتم تشفيره برقم سرى في الخادم وحين يتم إرجاع ال token فك تشفيره بكلمة السر هذه ولو تم تشفير ال token بكلمة سر خاطئة فلن يتم إستكمال الطلب وهذا يجعل مستحيل إنتحال شخصية ال token إلا عن طريقة سرقة ال token نفسه من الشخص ولكن غير ذلك فمن المستحيل إنتحال شخصية شخص عن طريق ال token.1 نقطة
-
عند تشغيل برنامج ما على الحاسوب تعمل جميع عناصره مع بعضها كفريق لتشغيل البرنامج وتنفيذ الأوامر، يوجد عنصر في ذلك الفريق له دور مهم في عمل الحاسوب وهو الذاكرةMemory. الجميع يعلم أنَّ حواسيبهم تحوي ذاكرة ولكن هل تعلم ما هي أنواع الذاكرات التي بداخله وكيف تعمل؟ ستتعلم في هذه المقالة مبدأ عمل الذاكرة وأنواعها. مفهوم الذاكرة ومبدأ عملها يشير مصطلح الذاكرة إلى إمكانيَّة حفظ وتخزين البيانات والملفات لمدّة من الزمن، ويحوي الحاسوب نوعين رئيسييْن من الذاكرة وهي ذاكرةٌ متطايرةٌ Volatile memory تخزِّن البيانات أثناء عمل الحاسوب فقط وتتلاشى بعد إيقافه مثل ذاكرة الوصول العشوائي RAM (Random Access Memory)، وذاكرةٌ ثابتةٌ (غير متطايرة) Non-volatile memory تحتفظ بالبيانات حتى بعد انقطاع التيار عنها مثل ذاكرة القراءة فقط ROM (Read-Only Memory). يُخزَّن نظام التشغيل والصور والفيديو والملفات وغيرها تخزينًا دائمًا على القرص الصلب HDD (Hard Drive Disks) الذي يدعى "ذاكرة ثانوية" فالمعالج لا يتعامل معه مباشرةً لبطئه الشديد. وعند تشغيل الحاسوب أو برنامجٍ ما يُنقل نظام التشغيل والبرامج من الذاكرة الثانوية إلى الذاكرة الرئيسية - وهي من نوع RAM - ليعالج إذ إنَّ هذه الذاكرة أسرع بكثير من القرص الصلب. تتحوَّل جميع البيانات والملفات إلى النظام الثنائي (أصفار وآحاد) لأنَّ عتاد الحاسوب -كما تعلم- يتعامل مع هذا النظام الرقمي فقط أي لا يفهم إلا القيمة 0 أو 1، لذا تتألف الذاكرة من خلايا متجاورة بشكل مصفوفةٍ (أسطر وأعمدة) لها عناوين تخزِّن كلَّ خلية منها القيمة1 بحفظها شحنة كهربائية والقيمة 0 بتفريغها من شحنتها الكهربائية (لا توجد شحنة فيها)، وتختلف طريقة عمل الخلايا وتخزين شحنتها باختلاف نوع الذاكرة. إذا أردت مثلًا تخزين الرقم 55 فيحوله حاسوبك إلى النظام الثنائي ويصبح 110111 الذي يحتاج إلى ست خلايا لتخزينه، هذا يعني أنَّ كلَّ خلية في الذاكرة تخزِّن بتًّا bit واحدًا. أنواع الذاكرة سنشرح أهمَّ نوعين في الذاكرة وهما ذاكرة القراة فقط ROM وذاكرة الوصول العشوائي RAM. ذاكرة القراءة فقط ROM هي ذاكرةٌ يمكن القراءة منها فقط دون الكتابة أو التعديل عليها، وتُخزِّن الشركة المصنعة محتواها أثناء تصنيعها، وتحتفظ بالبيانات عند انقطاع التيار الكهربائي. تُستخدم لأغراض محدَّدة كتخزين ملفٍّ أو برنامجٍ (مثل برنامج من نوع Firmware) وقراءته دون الحاجة إلى التعديل عليه ومن الأمثلة على هذه الذاكرة هي ذاكرة البيوس. يوجد ثلاثة أنواعٍ لهذه الذاكرة وهي: الذاكرة القابلة للبرمجة PROM الذاكرة القابلة للبرمجة PROM (Programmable ROM) أو الذاكرة القابلة للبرمجة مرةً واحدةً OTP NVM (One-Time Programmable Non-Volatile Memoty) هي ذاكرةٌ رقميةٌ يكون فيها كل بت مقفلًا بعنصر إلكتروني لا يمكن التعديل عليه. تُكتب البيانات على هذه الذاكرة بعد تصنيعها وتبقى فيها على الدوام دون إمكانية تعديلها أو إزالتها، ولكتابة محتواها توضع في جهاز يدعى "مبرمج PROM". يُستخدم هذا النوع في الأجهزة المحمولة، والمتحكمات المصغَّرة microcontrollers، وغيرها من الأجهزة الإلكترونية. الذاكرة القابلة لإعادة المسح والبرمجة EPROM يمكن مسح محتوى هذه الذاكرة EPROM (Erasable Programmable ROM) خلافًا للنوع السابق بتعريض الخلايا للأشعة فوق البنفسجية ثمَّ إعادة الكتابة عليها. تستهلك هذه العملية (المسح وإعادة البرمجة) من عمر الذاكرة وتصل عدد مرات المسح وإعادة البرمجة إلى 1000 مرة. يوجد أعلى الذاكرة فتحةٌ تسمح بمرور الأشعة فوق البنفسجة إلى الخلايا لمسح محتواها دفعةً واحدةً، لذا يجب نزع هذه الذاكرة من اللوحة ووضعها على جهاز البرمجة لبرمجتها مجدَّدًا وغالبا توضع على مقبسٍ لتسهيل نزعها وإعادة تركيبها. مصدر الصورة الذاكرة القابلة لإعادة المسح والبرمجة إلكترونيًا EEPROM تشبه بنية هذه الذاكرة EEPROM (Electrically Erasable Programmable ROM) النوع EPROM باستثناء أنَّ عملية المسح والبرمجة تُجرى إلكترونيًّا أي لا داعي لإزالتها من اللوحة أو الدارة. مصدر الصورة: Nevit Dilmen عبر WikiMedia Commons. عملية الكتابة إلى هذه الذاكرة Flashing بطيئة نسبةً إلى عملية القراءة منها، ومن أنواعها: الذاكرة EAROM (Electrically alterable ROM): سرعة الكتابة عليها بطيئةٌ جدًا وتحتاج إلى تيارٍ مرتفع (12 فولط)، وتُستخدم كثيرًا للقراءة في الحالات التي تندر فيها الكتابة عليها. وتُستعمل حاليًا مع الذاكرة CMOS عوضًا عن الذاكرة SRAM التي تحتاج إلى تيار لحفظ محتوياتها. الذاكرة Flash: تدعى اصطلاحيًّا الذاكرة الومضية وعُرفيًا الذاكرة "فلاش" وتتَّصف بأنَّ سرعة القراءة والكتابة عليها كبيرةٌ مقارنة مع أنواع الذاكرة EEPROM الأخرى، وعمرها طويلٌ إذ تصل عدد مرات الكتابة والمسح إلى المليون مرة (لا تخف من تلف ذاكرتك لكثرة تهيئتها)، وسعتها كبيرة تزيد عن 64 غيغابايت. بدأ استخدامها في مجالات كثيرة لتحل مكان الأنواع السابقة من الذاكرة ROM وأجهزة التخزين الميكانيكية أيضًا مثل القرص الصلب نظرًا لمزاياها الكثيرة. تبين الصورة ذاكرة فلاش على اليسار ومتحكم الذاكرة على اليمين. مصدر الصورة: Nrbelex عبر Wikimedia Commons. ذاكرة الوصول العشوائي RAM هي من نوع الذاكرة المتطايرة التي تفقد محتواها بانقطاع التيار الكهربائي عنها ولكن توجد أنواع ثابتة من هذه الذاكرة طُورت حديثًا لا تفقد محتواها بانقطاع التيار تسمى ذاكرة الوصول العشوائي الثابتة NVRAM (Non-Volatile RAM). سميت "ذاكرة الوصول العشوائي" نظرًا لإمكانية الوصول إلى أيِّ موقعٍ في هذه الذاكرة مباشرةً بزمنٍ ثابتٍ سواءً الوصول إلى أول أو آخر عنوان في الذاكرة خلافًا لذاكرة الوصول التسلسلي SAM (Serial Access Memory) التي يجب قراءة جميع الخلايا من البداية للوصول إلى آخر خلية. كما أن زمن القراءة والكتابة في هذه الذاكرة متساويان. توجد أنواع متعدِّدة لهذه الذاكرة منها ما هو قيد التطوير مثل T-RAM و Z-RAM ولكن سنشرح النوعين الأساسيين وهما SRAM والنوع DRAM. الذاكرة الساكنة SRAM (Static RAM) هي ذاكرة من النوع المتطاير وسميت ساكنة لتفريقها عن الذاكرة الديناميكية DRAM (Daynamic RAM) التي تحتاج إلى عملية تنشيط لاستمرار حفظ البيانات كما سنرى لاحقًا. تتألف الخلية الواحدة عادةً من ستة ترانزستورات ويمكن أن تتراوح بين 4 إلى 10 ترانزستورات من نوع MOSFET لحفظ بت واحد (0 أو 1)، وتحتفظ الخلايا بشحنتها بدوام وجود التيار ما لم يُمح محتواها أو يُعدَّل عليها. توضح الصورة خلية واحدة مؤلفة من 6 ترانزستورات. مزايا هذه الذاكرة: الاستهلاك القليل للطاقة. لا تحتاج إلى دارة تنشيط للخلايا. السرعة الكبيرة في القراءة والكتابة. ومساوئها تتلخص بما يلي: ثمنها المرتفع. التناسب الطردي بين السعة والحجم، فكلما زادت سعتها زاد حجمها. تُستعمل على نطاق واسع في الأجهزة المحمولة، والكاميرات الرقمية، والحاسوب للتخبئة Caching في المعالج وكذاكرة تخزين مؤقت في القرص الصلب وغيرها. تصنف هذه الذاكرة بحسب نوع الترانزستورات في الخلية أو كونها متطاير أم ثابتة، التي تسمى الذاكرة الساكنة غير المتطايرة nvSRAM، أو بحسب أدائها. الذاكرة الديناميكية DRAM (Daynamic RAM) هي ذاكرة متطايرة تتألف الخلية فيها من مكثف وترانزستور، وعندما تكون شحنة المكثف موجبة تأخذ الخلية القيمة 1 وعندما تكون سالبة تأخذ القيمة 0. لمَّا كان الترانزستور هو شبه ناقل فإنه يسرِّب جزءًا من شحنة المكثِّف التي تتلاشى في النهاية وحينئذٍ تفقد الخلية شحنتها وبالتالي تفقد الذاكرة بياناتها لذا يعاد تجديد شحنة المكثفات خلال فترات منتظمة وتدعى هذه العملية "إعادة تنشيط الذاكرة" ولهذا السبب سميت "ديناميكية". ولا يمكن أثناء عملية التنشيط القراءة أو الكتابة من الذاكرة الأمر الذي يبطئ من سرعتها. مزايا هذه الذاكرة هي: رخيصة الثمن. بساطة بنيتها (ترانزستور ومكثف لكلِّ خليَّة). سعتها الكبيرة وصغر حجمها. ومن مساوئها: الاستهلاك الكبير للطاقة. الحاجة إلى تنشيط خلاياها لدوام حفظ محتواها. بطيئة بالموازنة مع الذاكرة SRAM. تُستخدم ذاكرة رئيسية في الحاسوب (يشار إليها دائمًا "RAM") وذاكرة رسومية Graphics memory في بطاقة العرض. يوجد نوعان للذاكر ة DRAM وهما: الذاكرة الديناميكية غير المتزامنة ADRAM (Asynchronous DRAM) يكون تردُّد هذه الذاكرة مختلفًا عن تردُّد الناقل الأمامي FSB واستُخدمت قديمًا ذاكرة رئيسية في الحاسوب، ومن أنواعها FPM ADRAM (Fast Page Mode ADRAM) والنوع EDO ADRAM (Extended Data Out ADRAM). الذاكرة الديناميكية المتزامنة SDRAM (Synchronous DRAM) يكون تردُّد هذه الذاكرة متزامنًا مع تردُّد الناقل الأمامي FSB للوحة الأم إذ يتزايد بذلك معدَّل سرعة نقل البيانات، وتُستخدم ذاكرة رئيسية في الحواسيب. ولهذه الذاكرة أنواع متعددة وهي: SDR SDRAM (Single Data rate): هي أول جيل من ذاكرات SDRAM حيث حلَّت مكان الذاكرة BEDO-ADRAM الأحدث من نوع ADRAM. وهي قديمةٌ وبطيئةٌ جدًا (تنقل كلمة واحدة كلَّ نبضة) ومحالٌ أن تراها إلا في الصور، وقيمة الجهد الكهربائي لها هو 3.3 فولط. DDR SDR (Doual Data Rate): صدرت عام 2000 وتدعى أيضًا DDR1 وتتمايز بعرض نطاقٍ Bandwidth مضاعف لناقل البيانات وسرعة نقل كبيرة، وهي قديمة. DDR2 SDRAM: صدرت عام 2003 وتصل سرعتها إلى ضعف سرعة DDR مع استهلاك أقل للطاقة. DDR3 SDRAM: صدرت عام 2007 وهي أيضًا أسرع من DDR2 وأقلُّ استهلاكًا للطاقة، ويوضح الجدول التالي أنواعها. الاسم القياسي تردد الذاكرة (ميغاهيرتز) زمن الدورة (نانو ثانية) تردد ناقل الدخل والخرج (ميغاهيرتز) معدل البيانات (ميغاهيرتز) الجهد الكهربائي (فولط) اسم الوحدة معدل النقل (ميغابايت/ثانية) DDR3-800 100 10 400 800 1.5 PC3-6400 6400 DDR3-1066 133 7.5 533 1066 1.5 PC3-8500 8533 DDR3-1333 166 6 666 1333 1.5 PC3-10600 10666 DDR3-1600 200 5 800 1600 1.5 PC3-12800 12800 DDR3-1866 233 4.3 933 1866 1.5 PC3-14900 14933 DDR3-2133 266 3.75 1066 2133 1.5 PC3-17000 17066 معدل النقل = معدل البيانات x عرض ناقل الذاكرة (8 بايت أي 64 بت)، وتردُّد الذاكرة هو مقلوب زمن الدورة مع مراعاة الواحدات. DDR4 SDRAM: صدرت عام 2014 وهي سريعةٌ جدًا وتعمل بجهدٍ منخفض، ويوضح الجدول أنواعها. الاسم القياسي تردد الذاكرة (ميغاهيرتز) زمن الدورة (نانو ثانية) تردد ناقل الدخل والخرج (ميغاهيرتز) معدل البيانات (ميغاهيرتز) الجهد الكهربائي (فولط) اسم الوحدة معدل النقل (ميغابايت/ثانية) DDR4-1600 200 10 800 1600 1.2 PC4-12800 12800 DDR4-1866 233 7.5 933 1866 1.2 PC4-14900 14933 DDR4-2133 266 6 1066 2133 1.2 PC4-17000 17066 DDR4-2400 300 5 1200 2400 1.2 PC4-19200 19200 DDR5 SDRAM: أعلنت شركة JEDEC في شهر آذار من هذا العام أنَّ هذه الذاكرة قيد التطوير وستصدر العام القادم 2018. ملحوظة: بعض الشركات لا تسمي الذاكرة باسمها القياسي مثل DDR4-xxx بل تستخدم الاسم PC4-xxxx حيث يشير الرقم في الاسم الأول إلى معدَّل البيانات أما الثاني فيشير إلى معدَّل النقل. تنبيه: إذا أردت شراء ذاكرتين لحاسبك أو أردت شراء ذاكرةٍ جديدةٍ لإضافتها إلى ذاكرة حاسوبك فانتبه إلى توافق التردُّد بين الذاكرتين أي إذا كان لديك ذاكرة DD3-1600 فاشتر ذاكرة أخرى ذات النوع DD3-1600 فإن لم تكن الذاكرتان بالتردد نفسه فلن يعمل الحاسوب، وانتبه أيضًا إلى التوافق مع تردد الناقل الأمامي في اللوحة الأم. عامل الشكل تركَّب الذاكرة ضمن شقوق التوسعة على اللوحة الأم وتتألف من لوحة دارات مطبوعة PCB عليها عددٌ من الرقاقات التي تحوي الخلايا بداخلها (الترانزستورات والمكثفات)، وتحدِّد عوامل الشكل عدد الرقاقات ومكان توضُّعها وشكل تعليب الذاكرة وتُستخدم غالبًا مع الذاكرة DRAM، وأشهر عوامل الشكل المستخدمة هي: SIMM (Single In-line Memory Module) عرض ناقل البيانات في هذا التعليب إمَّا 8 بت (30-pin SIMM) وبذلك تكون السعة العظمى للذاكرة هي 16 ميغابايت أو 32 بت (72-pin SIMM) الذي تكون فيه السعة العظمة للذاكرة هي 128 ميغابايت. واستُخدم هذا العامل في ثمانينات القرن الماضي وحتى عقدٍ من الزمن إذ حلَّ مكانه العامل DIMM. DIMM (Dual In-line Memory Module) هو الأكثر شهرة في الحواسيب المكتبية ويتراوح عدد الرقاقات على الذاكرة بين 4 إلى 9 وتختلف وظيفة التماسات في الوجه الأول للذاكرة عن وظيفة التماسات في الوجه الآخر مما يضاعف عدد التماسات. توضح الصورة الفرق بين أنواع الذاكرة SDRAM ذات عامل الشكل DIMM. مصدر الصورة: Cmuelle8 عبر WikiMedia Commons. SO-DIMM (Small Outline DIMM) هو أصغر من العامل DIMM حيث يصل إلى نصف حجمه ويُستخدم في الأنظمة ذات المساحات المحدودة مثل الحواسيب المحمولة أو الطابعات المكتبية أو الأجهزة الشبكية ...إلخ. توضح الصورة الفرق بين أنواع الذاكرة SDRAM. مصدر الصورة عبر WikiMedia Commons. MicroDIMM عامل الشكل هذا أصغر حجمًا من SO-DIMM ويُستخدم في الأجهزة الإلكترونية ذات المساحة الصغيرة كالحواسيب المحمولة الصغيرة. يبين الجدول التالي عدد التماسات لعوامل الشكل DIMM و SODIMM و MicroDIM مع أنواع الذاكرة SDRAM. اسم الذاكرة DIMM SODIMM MicroDIMM DDR1 184 200 172 DDR2 240 200 214 DDR3 240 204 214 DDR4 288 256 - ملحوظة: في امتحان compTIA A+ 220-901 توجد أسئلةٌ عن أنواع الذواكر بالتفصيل حتى عن الأرقام في الجداول السابقة (تردد الذاكرة ومعدَّل نقل البيانات وعدد التماسات ...إلخ). الخلاصة تعلمنا في هذا الدرس مبدأ عمل الذاكرة الرقمية وأنواعها وأصبحت الآن قادرًا على التمييز بين مختلف أنواع الذواكر ومزاياها، وإن كان لديك حاسوب ٌمكتبي فلا تتردَّد بنزع الذاكرة وفحص نوعها وعامل شكلها. المصادر Static rando-access memory، ويكيبيديا. Computer memory :Chris Woodford، Explain that stuff. Read-only memory، ويكيبيديا. Programmable read-only memory، ويكيبيديا. EPROM، ويكيبيديا. EEPROM، ويكيبيديا. Dynamic random-access memory، ويكيبيديا. Synchronous dynamic random-access memory، ويكيبيديا. DDR SDRAM، ويكيبيديا. DDR2 SDRAM، ويكيبيديا. DDR3 SDRAM، ويكيبيديا. DDR4 SDRAM، ويكيبيديا. DIMM، ويكيبيديا. SO-DIMM، ويكيبيديا.1 نقطة