شرف الدين حفني

شرف الدين, مُهتم بهندسة البرمجيات بوجه عام وبمختلف التقنيات, عملت بعدة تقنيات مختلفة مثل MERN stack, laravel, python, react native, flutter

36 نقاط السمعة
59.7 ألف مشاهدات المحتوى
عضو منذ
يوجد العديد من الخيارات: إستخدام منصة إستضافة تُوفر إستضافة لnode js وتقوم بعمل build وتشغيل تلقائي للمشروع مثل منصة apps على digitalocean أو مثل heroku إستخدام vps وتثبيت node js و pm2 و nginx ويوجد عدد لا نهائي من الخيارات فيمكنك عمل ذلك على أي موقع يقدم إستضافة vps مثل الdroplet على digitalocean او linode البحث على إستضافة cpanel تُقدم حلول للnode js مثل a2hosting
يمكنك تحديثها من خلال أوامر npm عبر الأمر التالي npm install -g n مع إستبدال n بالإصدار الذي تُريده
من المحتمل ان يكون سبب التلف هو الencoding للنصوص فقط يختلف نظام عرض النصوص من سيستم لأخر, أقترح عليك أن تقوم بعمل سؤال مختلف عن تلك المشكلة تحديدًا مع وصفها جيدًا حتى يتمكن أحد من مساعدتك بها
العفو, أجل حتى مع الملفات المضغوطة يمكن تحويلها الى base64 فكما اخبرتك تشفير base64 لا يهتم حقًا بنوع الملف هو يقوم بتحويل البيانات الى سلسلة نصية, بالنسبة الى تلف البيانات, فليس هنالك في تشفير base64 ما قد يتسبب في تلف البيانات هو فقط طريقة لتحويل البيانات من شكلها الbinary الى سلسلة نصية ليس هنالك ما قد يتسبب في التلف
يمكن تحويل ملفات الفيديو ايضًا الى نظام Base64 وليست الصور فقط, فكرة تشفير الbase64 باختصار ان يقوم بتحويل البيانات الثنائية binary data الى Ascii Charachters (الى سلسلة نصية) ويمكن تنفيذ تلك العملية سواء كان الملف صورة او ملف فيديو
بالنسبة لمصطلح code smells هو يُعبر عن بعض المشاكل التي عندما تجدها في الشفرة يُعد ذلك إشارة عن سوء التصميم , بعض علامات الcode smells data clumbs : عندما يكون لدينا مجموعة من المتغيرات يتم تمريرها عادةً سويًا , على سبيل المثال public int doSomeThingWithPoint(int x, int y, int z) تلك الدالة تقوم بإستقبال الإخداثيات الثلاثة الخاصة بنقطة ما ومن ثم تقوم بعملية ما على تلك النقطة, هذا يُعد إشارة لتصميم سيئ, يمكننا تعديل التصميم ونضع المتغيرات الثلاثة في صنف
spring framework هي عبارة عن فريموورك يحتوي بداخله على العديد من الفريمووركس المُصغرة او الcomponents مثل spring mvc لبناء المواقع على طريقة model - view - controller أو spring-data للتعامل مع قواعد البيانات بشكلٍ مُبسط وإحترافي, ولكن spring لتشغيلها تحتاج إلى عمل العديد من الإعدادات configuration وتحتاج إلى عمل ملف xml تقوم فيه بتحديد الcomponents التي تستخدمها وظبط الconfiguration على الجانب الأخر spring boot هي تُعتبر إمتداد لspring ولكن يتم عمل configuration لها بشكلٍ تلقائي حيث تساعد على البدأ بعمل
يمكنك إستخدام مكتبة helmet js والتي تقدم midllewares للحماية من العديد من الثغرات الأمنية من ضمنها xss ويمكنك بدأ إستخدام مكتبة helmet js عبر تثبيتها من خلال الأمر التالي npm install helmet ومن ثم يمكننا إستخدامها كالتالي: أولًا نقوم بعمل import const helmet = require("helmet"); 2.من ثم نقوم بوضعها كmidlleware في خادم express const app = express(); app.use(helmet()); في الطريقة السابقة قمنا بتوفير حماية helm بوجهٍ عام لعدد من الثغرات الأمنية مثل xss, csrf ,...etc , إن أردت توفير حماية
هل يمكنك تحديد الجزئيات التي يقابلك مشكلة في فهمها بالظبط؟
ليس تضييعا للوقت فهي تعطيك فكرة عن مجالات مختلفة لتزيد من ادراكك ومعرفتك, يمكنك أخذها ومن ثم أخذ دورة للويب حتى لا تتشتت, يوجد العديد من المنصات التي تقدم دورات احترافية للويب مثل اكاديمية حسوب https://academy.hsoub.com/store/c1-%D8%AF%D9%88%D8%B1%D8%A7%D8%AA-%D8%AA%D8%B9%D9%84%D9%8A%D9%85%D9%8A%D8%A9/
كورس cs50 هو يُعتبر مقدمة جيدة لأغلب مسارات البرمجة حيث تُعطيك نبذة قوية عن كل مسار أو كما يُقال(تفاحة من كل سلة) لذا ليس من أهداف الدورة أن تكون بعدها مُتقن للhtml &css وإنما هدفها أن تأخذ عنهم نبذة قوية بالإضافة إلى باقي المسارات, لذا بعد إنهاؤك للدورة يمكنك بعدها تحديد أي مسار تُريد أن تأخذه, إن كان مسار الويب لذا يكون من الضروري تعلم html & css بتعمق لأن بعض المواضيع لن يُغطيها كورس cs50
مرحبًا أرجو وضع الشفرة البرمجية نسخ ولصق وليس على هيئة صورة, أو على الأقل محاولة وضع صورة واضحة حيث أن تلك الصورة صغيرة وصعبة القراءة
الكتاب هو مقدمة للخوارزميات فلن تحتاج إلى معرفة مسبقة كي تبدأ فيه ولكن لدي نصيحة لك وهي أن تبدأ قبله بكتاب أسهل حيث أن كتاب introduction to algorithm من الكتب الكلاسيكية نوعًا ما التي تمتاز بدسامتها ولكن في نفس الوقت قد تكون ثقيلة بعض الشئ, فأنصحك أن تبدأ بكتاب grokking algorithm , هذا الكتاب من المداخل الممتازة لدراسة الخوارزميات وهياكل البيانات , الكتاب بوجهٍ عام لن يجعلك تحترف أي شئ ولكنه سيجعلك تعرف شئ عن كل شئ, حيث سيبدأ الكتاب
يتم إستخدام الinterface لإستخدام أصناف عامة ترث تلك الواجهة دون الحاجة لتعريف نوع معين من الصنف, هذا المثال قد يوضح لك نفترض أننا نقوم بإنشاء نظام للجامعة ولدينا مجموعة من الطلاب منقسمين كالتالي: طالب مغترب, طالب من أهل المدينة, طالب من ذوي الظروف الخاصة ونريد دالة تقوم بحساب المصاريف الجامعية لكل طالب, وبالطبع كل طالب سيقوم بدفع مصاريف مختلفة حيث يتم توفير خصم 20% للطلاب المغتربين وخصم 50% للطالاب ذوي الظروف الخاصة ولا يوجد خصم للطلاب من أهل المدينة ولدينا
ajax هي إختصار ل ( Asynchronous JavaScript And XML) وهي مفهوم أو تقنية يتمركز حول إرسال طلبات من العميل إلى الخادم بهدف جلب البيانات أو تنفيذ بيانات دون الحاجة إلى إعادة تحديث الصفحة , ومن أشهر تقنيات الajax هي مكتبة fetch والتي تقوم بتسهيل عملية إرسال وإستقبال الطلبات إلى الخادم ومن مميزات مكتبة fetch إنها مدعومة بشكل إفتراضي من قِبل أغلب المتصفحات فلا تحتاج إلى تنزيل مكتبات خارجية يتم إستخدامها بالشكل التالي fetch('http://example.com/') .then(response => response.json()) .then(data => console.log(data)); حيث
لغة dart يتم إستخدامها بغرض تطوير الواجهات الأمامية للموقع (front-end development) , مما يعني أنها تغنيك عن الجافاسكريبت لكن هذا لا يعني أنها تغنيك عن باقي اللغات مثل لغات الباك إند ولغة الsql للتعامل مع قواعد البيانات, والhtml&css لتنسيق وهيكلة الصفحات كما ذكرنا في النقطة السابقة فإن لغة dart يتم إستخدامها في تطوير الواجهات الأمامية مما يعني أنها تعمل على متصفح العميل وليس على الخادم مما يقودنا إلى أنها لا تستطيع التعامل مع قواعد البيانات فتحتاج إذًا أن تتعامل مع
برجاء إرفاق ملف الroute حتى أستطع معاينته
يمكنك كتابتها بالصيفة التالية <? if ($condition): ?> قم بتنفيذ أمرٍ ما <? elseif ($other_condition): ?> قم بتنفيذ أمرٍ ما <? else: ?> قم بتنفيذ الأمر الإفتراضي <? endif; ?>
لغة php تمتلك عددًا لا بأس به من خصائص ال templating language والتي تمكنك من التعامل مع الview مباشرةً فيمكنك مثلًا طباعة متغير من خلال التالي <?=اسم المتغير?> كما يمكنك الإستفادة من خصائص الtemplating الأخرى مثل الحلقات التكرارية بداخل الhtml <ul> <?php foreach ($items as $item) : ?> <li> some code </li> <?php endforeach; ?> </ul> كما يمكنك أيضًا تنفيذ الحلقة الشرطية <?php if ($condition) : ?> //some code <?php endif;
يمكنك إنشاء ملف .htaccess ومن ثم إعطاؤه تعليمات بشأن تغيير الurl كما بالشكل التالي نبدأ أولاً بكتابة الأمر الذي يسمح بإعادة صياغة الرابط RewriteEngine On ومن ثم نقوم بإعطاؤه الروابط التي نريد تغييرها كما نعطيه أيضاً الرابط الذي سيستبدل بها RewriteRule sharaf sdxze.php هنا لدينا صفحة تُسمى sdxze.php ولكن ﻻ نريد إظهارها للمستخدم بهذا الشكل , فبالتعليمة السابقة يمكن الوصول لتلك الصفحة عبر كتابة رابط الخادم ومن ثم كتابة sharaf بدلاً من sdxze.php ويمكنك حذف صيغة الphp من جميع الملفات
المتطلبات الضرورية قبل البدأ في إستخدامها أن تكون على دراية بماهية الويب سوكيت, والتي هي عبارة عن إتصال بين العميل والخادم مفتوح حيث لا يحتاج العميل إرسال طلب إلى الخادم في كل مرة حتى يرد عليه الخادم, بل يكفي فتح قناة إتصال بينهما وثم يستطيع كل منهما إرسال رسائل إلى الأخر , ويمكنك تحميل مكتبة الRatchet بإستخدام الcomposer php ~/composer.phar require cboden/ratchet ومن ثم يمكنك عمل implementation للصنف MessageComponentInterface وتلك الدوال التي تقوم بعمل implementation لها سيتم تنفيذها خلال دورة
من الممكن حماية تطبيقك من الهندسة العكسية عبر وضع الأجزاء الهامة من الكود على سيرفر ومن ثم يقوم التطبيق بنداء تلك الأكواد عبر الhttp requests كمثال يمكنك وضع تلك الأجزاء من الشفرة البرمجية على RESTFull Api وإستدعاؤها عبر مناداة الendpoints التي تحتاجها بإستخدام بروتوكول http كما يمكنك إستخدام ProGuard module والذي سيساعدك أيضاً على منع عملية الهندسة العكسية, ولكن قاعدة الإبهام أن ﻻ تضع أجزاء حساسة من الشفرة على جهاز العميل سواء كان هاتف اندرويد أو متصفح , الأجزاء الهامة
دعنا نتناقش نقطة نقطة هنا أولاً: هل تقوم بإستخدام redux أم التمرير بالprops? في الحقيقة بما أن البيانات كبيرة فيُفضل تخزينها حتى ﻻ نحتاج إلى جلبها كل مرة ويمكن تخزينها إما في الlocalStorage أو في الredux وهذا خيار أفضل ثانياً ألية جلب البيانات: نقوم بجلب البيانات في الدالة useEffect كما أوضح صﻻح بالتعليق السابق, ولكن أريد أن أضيف أنه بما أن البيانات كبيرة ومتغيرة فيمكننا إذا إستخدام ال useSWR وهذا عبارة عن خطاف يأتي من خلال تثبيت مكتبة الswr وهي
هل تقصد بأن نفس المقالات توجد بلغتين ؟ من الممكن أن تقوم بإعطاء كل مقالة الid الخاص بنفس المقالة ولكن باللغة المقابلة على سبيل المثال إن كان لدينا مقالة لديها id 1 بالعربي وid 2 بالإنجليزي فمن الممكن أن تقوم بوضع حقل يُسمى f_article_id وتكون قيمته في المقالة العربية 2 وفي المقالة الإنجليزي تكون قيمة الحقل ب 1 وتقوم بوضع خاصية on delete cascade بحيث تضمن عند مسح أحد المقالات أن تقوم الأخرى أيضا بالحذف, وبهذا تضمن نوعاً من ثبات
يمكنك تنفيذ ذلك بإستخدام الجافاسكريبت بالشكل التالي نقوم بإنشاء class في ملف الcss يحمل خاصية الanimation وتقوم بتحديد الanimation المرغوب بداخله نقوم بإضافة حدث onclick على عنصر الabout في دالة الحدث نقوم بعمل دالة setTimeOut تبدأ بعد إنتهاء وقت الanimation وفي دالة الsetTimeOut نقوم بتحويل المُستخدم إلى رابط صفحة الabout طريقة إستخدام الanimation ستجدها موضحة في موثوقة حسوب عبر الرابط التالي https://wiki.hsoub.com/CSS#.D8.A7.D9.84.D8.AD.D8.B1.D9.83.D8.A7.D8.AA طريقة إستخدام الحدث onclick تكون عبر التالي, اولاً وضع اسم الدالة في الخاصية في الوسم <a onclick="animate"></a> ومن