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

Mustafa Suleiman

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

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

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

  • عدد الأيام التي تصدر بها

    365

كل منشورات العضو Mustafa Suleiman

  1. تختلف كمية ذاكرة الوصول العشوائي (RAM) التي يحتاجها التعدين من العملة الرقمية إلى أخرى أي حسب صعوبة تعدين العملية والمتبقي منها، فمثلاً يحتاج تعدين البيتكوين إلى ذاكرة وصول عشوائي بسعة 4 غيغابايت على الأقل، بينما يحتاج تعدين الإيثيريوم إلى ذاكرة وصول عشوائي بسعة 8 غيغابايت على الأقل وأنا أتحدث عن الحد الأدنى. ويستهلك تعدين العملات الرقمية كمية كبيرة من الطاقة، وذلك بسبب العمليات الحسابية المعقدة التي تتطلبها عملية التعدين، وتختلف كمية الطاقة التي يستهلكها التعدين من العملة الرقمية إلى أخرى، وذلك حسب خوارزمية التعدين المستخدمة، حيث يستهلك تعدين البيتكوين كمية كبيرة من الطاقة لكونه يعتمد على البطاقة الرسومية GPU بشكل كبير، بينما يستهلك تعدين الإيثيريوم كمية أقل من الطاقة. وبإمكانك حساب استهلاك الطاقة في تعدين العملات الرقمية باستخدام الصيغة التالية: استهلاك الطاقة = قوة الهاش (hash rate) * الجهد الكهربائي (voltage) * التيار الكهربائي (current) حيث: قوة الهاش: هي عدد العمليات الحسابية التي يمكن أن يقوم بها الجهاز في الثانية الواحدة. الجهد الكهربائي: هو مقدار الجهد الكهربائي الذي يتطلبه الجهاز لتشغيله. التيار الكهربائي: هو مقدار التيار الكهربائي الذي يمر عبر الجهاز. ولحساب قوة الهاش استخدم أداة مثل Minerstat أو WhatToMine. بينما لحساب الجهد الكهربائي استخدم أداة مثل FurMark أو OCCT. وكذلك لحساب التيار الكهربائي استخدم أداة مثل HWMonitor أو AIDA64. وانتبه إلى أن استهلاك الطاقة في تعدين العملات الرقمية قد يصبح مرتفعًا جدًا، مما يؤدي إلى ارتفاع فاتورة الكهرباء، لذلك، من المهم اختيار جهاز التعدين الذي يتمتع بكفاءة عالية في استهلاك الطاقة. وأيضًا عليك بحساب الربح بعد خصم تلك المصاريف والفواتير، حيث أن كل بطاقة شاشة تستطيع تعدين عدد معين من العملات الرقمية ولها استهلاك طاقة معين ولها تكلفة إجمالية وهي سعر البطاقة، فعليك بحساب متى ستحصل على تكلفة الكرت ثم تبدأ في الحصول على الربح وأيضًا حساب تكلفة الكهرباء.
  2. لتغيير الألوان في منفذ الأوامر المتضمن في vscode عليك بالتواجه إلى الإعدادات من خلال الضغط على CTRL + , أو من خلال file ثم Preferences ثم Settings. والآن ابحث عن workbench color في شريط البحث في الإعدادات، وستجد أنه ظهر لك خيار باسم Edit in settings.json اضغط عليه كالتالي: ثم ستجد خاصية باسم workbench.colorCustomizations فقم بإضافة الكود التالي بها: "workbench.colorCustomizations": { "terminal.background":"#131212", "terminal.foreground":"#dddad6", "terminal.ansiBlack":"#1D2021", "terminal.ansiBrightBlack":"#665C54", "terminal.ansiBrightBlue":"#0D6678", "terminal.ansiBrightCyan":"#8BA59B", "terminal.ansiBrightGreen":"#237e02", "terminal.ansiBrightMagenta":"#8F4673", "terminal.ansiBrightRed":"#FB543F", "terminal.ansiBrightWhite":"#FDF4C1", "terminal.ansiBrightYellow":"#FAC03B", "terminal.ansiBlue":"#00a1f9", "terminal.ansiCyan":"#8BA59B", "terminal.ansiGreen":"#95C085", "terminal.ansiMagenta":"#8F4673", "terminal.ansiRed":"#FB543F", "terminal.ansiWhite":"#A89984", "terminal.ansiYellow":"#FAC03B" }, وذلك سيقوم بتخصيص الألوان في منفذ الأوامر، وأهم خاصيتين هما background للون الخلفية وforeground من أجل لون النص. ولا تنسى حفظ التغييرات بالضغط على CTRL + S
  3. أرجو توضيح ما تريده من خلال صورة أو فيديو لفهم سبب المشكلة ، وما فهمته أنك تريد تثبيت عنوان الجدول بناءًا على الكود الذي وضحته، ونستخدم خاصية position بقيمة sticky من أجل ذلك كالتالي: th { position: sticky; top: 0; background: #146356; color: white; }
  4. لغة جافاسكريبت هي لغة خاصة بالواجهة الأمامية في المقام الأول وليست خاصة بالواجهة الخلفية على وجه الخصوص، لكونها لغة تعمل في المتصفح، لكن من خلال بيئة عمل node.js تستطيع استخدامها في الواجهة الخلفية. وبالطبع ستواجه صعوبة في البداية وخصوصًا أول شهر أو شهرين حسوب مستواك في البرمجة، وعليك بالتركيز على تعلم وإتقان لغة برمجة واحدة في البداية، والتركيز على الأساسيات بشدة ثم التطبيق عليها بأكثر من مشروع وزد مستوى الصعوبة تدريجيًا. وبخصوص المسألة البرمجية فحلها بأبسط شكل هو كالتالي: function getEvenNumbers(numbers) { return numbers.filter(number => number % 2 === 0); } حيث تستقبل الدالة مصفوفة من الأرقام كمدخل وتقوم بإرجاع مصفوفة جديدة تحتوي فقط على الأعداد الزوجية، وتستخدم الدالة filter لتصفية المصفوفة الأصلية بناءًا على شرط التحقق من أن العدد يمكن قسمته على 2 بدون باقي، مما يعني أن العدد زوجي أي كالتالي: function getEvenNumbers(numbers) { return numbers.filter(number => number % 2 === 0); } const numbers = [1, 2, 3, 4, 5, 6]; const evenNumbers = getEvenNumbers(numbers); console.log(evenNumbers); // ستقوم بطباعة [2, 4, 6] في وحدة التحكم مقالات ودروس جافاسكريبت في أكاديمية حسوب
  5. عليك بالتسجيل في مستقل وخمسات وتقديم إثبات للهوية من أجل تفعيل حسابك، ثم إنشاء معرض أعمال إحترافي ومتخصص، بمعنى أنه يجب وجود تناسق أو ثيم في طريقة العرض لكون مجالك فني بالأساس، وأيضًا متخصص أي لا يحتوي على نماذج لأعمال غير المجال الذي تريد العمل به، فذلك يؤدي إلى نتيجة عكسية ويظهر أنك غير محترف وليس على دراية بما تقوم به. حيث أن العملاء في مجال العمل الحر يبحثون عن الشخص المتمكن والمتميز في مجاله بسبب وجود أزمة ثقة في أن المستقل قادر على تنفيذ العمل أم لا، وأيضًا البعض يبحثون السعر الأقل ومن ينفذ لهم كل شيء تقريبًا وبسعر قليل فعليك بإختيار عملائك لتتجنب المشاكل، وفي البداية قد تقدم تضحيات من أجل الحصول على أول مشروع وتقييم. وعليك بمعرفة طريقة كتابة وتقديم عرض جيد ومناسب للقيمة التي ستوفرها للعميل أي لا تبالغ في السعر ولا في العرض الذي ستقدمه، وأنصحك بقراءة التالي: https://blog.mostaql.com/tag/mostaql-freelancers-guide/
  6. عليك بتعلم الأنماط الهامة أولاً، ففي مشاريع PHP ولارافيل (Laravel)، هناك العديد من أنماط التصميم (Design Patterns) وهي بالترتيب: Model-View-Controller (MVC) هو نمط تصميم شائع ومفيد في تطوير تطبيقات الويب، ويهدف إلى فصل الأجزاء المختلفة من التطبيق وتنظيمها بشكل منهجي، ولارافيل إطار عمل يعتمد على نمط MVC، حيث يوفر هيكلًا MVC مسبقًا يمكنك استخدامه لتنظيم تطبيقك. Dependency Injection (DI) يهدف إلى تقليل الاعتمادية الزائدة على الكائنات وتعزيز إعادة استخدامها واختبارها بسهولة، وفي لارافيل، تستطيع استخدام حاويات الحقن (Containers) لتنفيذ Dependency Injection وإدارة تبعيات الكائنات. Repository نمط Repository يوفر واجهة للتعامل مع البيانات، ويتم استخدامه لفصل طبقة البيانات عن طبقة الأعمال (Business Layer)، وبإمكانك استخدام ذلك النمط في لارافيل للتفاعل مع قواعد البيانات وتنفيذ العمليات المتعلقة بالبيانات. Singleton نمط Singleton يهدف إلى ضمان أن يتم إنشاء كائن واحد فقط من فئة معينة وتوفير نقطة وصول عامة إليه، وتستطيع الإعتماد عليه في لارافيل لإنشاء مكونات مشتركة في التطبيق التي تحتاج إلى مشاركة بيانات وحالة بين عدة أجزاء من التطبيق. شرح أنماط التصميم في موسوعة حسوب وإذا أردت قراءة كتابة فأنصحك بقراءة Head First design patterns.
  7. لا داعي للقلق من فك الغطاء الخلفي للاب توب، فهو مخصص لذلك، وفي أجهزة اللاب توب الحديثة الأمر سهل لكن في الموديلات القديمة أصعب قليلاً، وفي بعض الأحيان قد تجد منفذ مخصص للرامات أي عليك فك الجزء الصغير المخصص لها وليس كامل الضهر من أجل إضافة قطعة رامات جديدة. ولمعرفة ذلك أنصحك بالبحث عن Disassembly ثم اكتب بجانبها اسم الموديل الخاص بجهازك وستجد على اليوتيوب فيديو يوضح طريقة فتح الجهاز لصيانته. وبخصوص الشركات التي أنصحك بشراء الرامات منها فهى Crucial ثم Kingston ثم Corsair وأيضًا G.SKILL ولدينا Samsung، والأمر يعتمد على الميزانية الخاص بك قم بتحديد الميزانية ثم ابحث عن المتاح من ضمن السابق ذكرهم.
  8. بالطبع لا، لكن عليك بتعلم أساسيات التصميم الجيد لواجهات المستخدم مثل إختيار الألوان والمسافات والخطوط وتحديد التصميم بناءًا على مستخدمي الموقع وهوية الشركة المالكة للموقع والتناسق بين عناصر التصميم visual hierarchy. ثم تعلم أيضًا أداة تصميم مناسبة مثل Figma وهي الأفضل الآن بلا منازع وستسهل عليك الكثير من الأمور لكن في البداية ستحتاج وقت لتعلمها. أما بخصوص التصميم نفسه فتستطيع مشاهدة عدة تصماميم من موقع توفر تصماميم جاهزة للمواقع ثم محاولة التقليد ونسخ ما نال إعاجبك ثم تكوين تصميم مختلف، وقد تم ذكر تلك المواقع هنا: ومع الوقت ستتحسن بلا شك وستصبح قادر على تنفيذ تصاميم جيدة لكونك استوعبت القواعد وما يجب فعله وما لا يجب فعله، وأنصحك بالتعلم في البداية من القنوات التالية على اليوتيوب: Ahmad Sekmani Anas Rafaat | أنس رأفت
  9. تستطيع حل المشكلة والسماح بتشغيل السكريبتات في PowerShell عن طريق الأمر التالي: Set-ExecutionPolicy RemoteSigned -Scope CurrentUser ثم قم بإعادة تشغيل طرفية PowerShell وأعد تنفيذ الأوامر التي كنت تقوم بها مرة أخرى. وفي حال أنك تريد التعامل مع منفذ أوامر أسهل من PowerShell وتجنب التعقيدات الخاصة بتلك الطرفيات والأوامر المختلفة بها، فأنصحك باستخدام CMD وهي طرفية Command prompt. وتستطيع تشغيلها عن طريق البحث عن CMD في شريط البحث بالأسفل في الويندوز. وبإمكانك تشغيل الطرفية في مسار المشروع مباشرًة من خلال كتابة cmd في شريط العنوان ثم اضغط على Enter كالتالي:
  10. تحتاج إلى تنفيذ طريقة onPostExecute في Compressvedio لتنفيذ الإجراءات المطلوبة بعد الانتهاء من ضغط الفيديوK ,إضافة رمز الإرسال إلى السيرفر في تلك الطريقة. تحتاج أيضًا إلى تمرير المسار الذي تم ضغطه للدالة Compressvedio().execute() في onActivityResult()، وأنت تمرر file.getPath() ولكن ذلك غير صحيح، فيجب عليك تمرير مسار الملف الذي تم ضغطه من خلال vediopath في doInBackground(). أي في onActivityResult(): قم بتعيين vediopath إلى القيمة المسترجعة من Compressvedio().execute() بدلاً من file.getPath(). قبل التعديل: new Compressvedio().execute("false", videoUri.toString(), file.getPath()); بعد التعديل: new Compressvedio().execute("false", videoUri.toString(), vediopath); وفي Compressvedio، قم بتنفيذ الإجراءات اللازمة بعد الانتهاء من ضغط الفيديو داخل onPostExecute(). @Override protected void onPostExecute(String s) { super.onPostExecute(s); dialogo.dismiss(); // Get the compressed video file. File filea = new File(s); // Get the file size in kilobytes. float size2 = filea.length() / 1024f; // Log the file size. Log.d("sizs", String.format("Size : %.2f kB", size2)); // Set the display name of the compressed video file. displayName = String.valueOf(Calendar.getInstance().getTimeInMillis() + ".mp4"); // Perform further actions here, such as uploading the compressed video to the server. } وتأكد من إضافة الكود اللازم لرفع الملف المضغوط إلى السيرفر في المكان المناسب داخل onPostExecute().
  11. الدورة الأقرب لمجال الذكاء الاصطناعي في أكاديمية حسوب هي دورة بايثون، حيث أنك ستحتاج إلى تعلم بايثون بلا شك إذا أردت التخصص في مجال الذكاء الاصطناعي وأيضًا يوجد بالدورة مسار خاص بـ أساسيات تعلم الآلة Machine Learning وأيضًا مسار خاص بـ تحليل البيانات. وربما لديك تساؤل حول أهمية تعلم الرياضيات في مجال الذكاء الاصطناعي، ووببساطة ما أنت بحاجة إليه في البداية هو التالي: الرياضيات المهمة لتعلم الآلة هي الجبر الخطي والاحتمالات والتفاضل والتكامل (Calculus). في الجبر الخطي، يجب فهم المفاهيم الأساسية مثل الأشعة والفضاء الشعاعي والاستقلال والارتباط الخطي والأشعة الأساسية والقيم الذاتية. في الاحتمالات، يجب معرفة القوانين الأساسية والتوزيعات الشهيرة. في التفاضل والتكامل، يكفي فهم مفاهيم المشتقات، والتكامل غير مهم في البداية. يجب فهم الأساسيات في هذه المجالات معًا، وعدم التركيز على مجال واحد فقط. الرياضيات مهمة لفهم شبكات العصبونات، حيث يمكن تصور الشبكة كتابع يحول الإدخال في فضاء شعاعي بواسطة العمليات الخطية والغير خطية. تدريب الشبكات يعتمد على خوارزمية gradient descent التي تتطلب فهمًا أساسيًا للتفاضل والتكامل. لا يجب التعمق العميق في الرياضيات قبل بدء تعلم الآلة، ويجب التركيز على الأساسيات فقط. يمكن توسيع فهم الرياضيات عند الحاجة، ولا يجب محاولة تعلم كل شيء في الرياضيات بسبب واسعها. الرياضيات المتقطعة ليست ضرورية في شبكات العصبونات، حيث يجب أن تكون الشبكات تابعة مستمرة وتعامل مع التوابع المستمرة والمشتقات. وبعد ذلك ستحتاج إلى دورة متخصصة في الذكاء الاصطناعي وأغلبها باللغة الإنجليزية، على منصات مثل Udemy وCoursera. وأنصحك بالبحث عن machine learning course على اليوتيوب وستجد بعض الدورات المفيدة ومنها دورة باللغة العربية.
  12. أولاً عليك باستيعاب أن الخطاف (Hooks) هي ميزة جديدة في React التي تم إدخالها في إصدار React 16.8، وتسمح الـ Hooks بكتابة وإعادة استخدام الحالة والعمليات الجانبية (side effects) في الـ function components بطريقة أكثر بساطة وسهولة مقارنةً بالـ class components. وفيما يلي بعض الفوائد التي يوفرها الخطاف مقارنةً بالـ class components: يتطلب الخطاف أقل كود وصيانة مقارنةً بالـ class components، وتستطيع الإعتماد على الخطافات مباشرة داخل الـ function components دون الحاجة إلى إنشاء فئة منفصلة. يوفر استخدام الحالة المحلية (local state) بشكل مباشر في الـ function components باستخدام useState، مما يجعل إنشاء وتحديث الحالة أكثر بساطة. بإمكانك استخدام الخطاف useEffect للقيام بالعمليات الجانبية مثل الاشتراك في حدث أو إصدار طلب إلى الخادم أو التعامل مع القائمة أو الوقت. يجعل الخطاف من السهل إضافة وإزالة العمليات الجانبية وتتبعها بشكل أفضل. كتابة الخطافات وإعادة استخدامها في مكوناتك المختلفة، مما يسهل إدارة وصيانة الكود. في بعض الحالات، يوفر الخطاف أداءًا أفضل مقارنةً بالـ class components، حيث يتم تحسين أداء الخطافات بشكل مستمر في تحديثات React. وإليك شرح للخطافات التي ذكرتها: useState يسمح لك خطاف useState بإدارة الحالة في مكون وظيفي. يعيد متغير حالة ودالة تحديث. أي في حال لديك مكون يعرض عددًا، يمكنك استخدام خطاف useState لإنشاء متغير حالة يسمى count، بعد ذلك استخدم الدالة setCount لتحديث قيمة المتغير. const [count, setCount] = useState(0); useEffect يسمح لك خطاف useEffect بتنفيذ تأثيرات جانبية في مكون وظيفي، مثل استدعاءات API، أو الاشتراكات، أو المؤقتات. مثلاً لدينا مكون يعرض قائمة بالعناصر، هنا نعتمد على خطاف useEffect لاستدعاء استدعاء API لتحميل العناصر. useEffect(() => { // Make an API call to load the items }, []); ولاحظ أن المصفوفة تعني أنه لا يوجد إعتماديات، بالتالي يتم تشغيل الخطاف مرة واحدة في بداية الـ Rendering للمكون. useRef يتيح لك خطاف useRef الوصول إلى قيمة قابلة للتغيير من داخل مكون وظيفي، والقيمة قابلة للتغيير هي أي شيء مثل عنصر DOM أو وظيفة. أي في حال لدينا مكون يحتاج إلى الوصول إلى عنصر DOM، نستخدم خطاف useRef لإنشاء إشارة إلى العنصر. const myRef = useRef(); useCallback يسمح لك خطاف useCallback بإنشاء وظيفة مؤقتة، وهي مفيدة لتحسين الأداء عندما يكون لديك دالة تعتمد على المتغيرات التي تتغير كثيرًا. مثال: لدينا مكون يحتوي على دالة تعتمد على متغير count، هنا نستخدم خطاف useCallback لإنشاء وظيفة مؤقتة لن تتغير عندما تتغير قيمة count. const myCallback = useCallback(() => { // This function will not be re-evaluated when `count` changes }, [count]); useMemo خطاف آخر وهو useMemo لإنشاء قيمة مؤقتة، لتحسين الأداء أيضًا عندما يكون لديك قيمة تعتمد على المتغيرات التي تتغير كثيرًا. const myValue = useMemo(() => { // This value will not be re-evaluated when `count` changes }, [count]); وكلا الخطافات، useCallback و useMemo، تستطيع استخدامهما لتحسين الأداء عن طريق تجنب إعادة تقييم الدالة، ولكن هناك بعض الاختلافات الرئيسية بين هاتين الخطافين: useCallback تستخدم لمنع إعادة تقييم الدالة عندما تتغير المدخلات، أي إذا كان لديك دالة تعتمد على متغير، اعتمد على useCallback لإنشاء نسخة من الدالة لن تتغير عندما تتغير قيمة المتغير. أما useMemo تستخدم لمنع إعادة تقييم القيمة عندما تتغير المدخلات، ففي حال كان لديك وظيفة تعتمد على متغير، تستطيع استخدام useMemo لإنشاء نسخة من القيمة لن تتغير عندما تتغير قيمة المتغير. useContext يسمح لك خطاف useContext بالوصول إلى سياق من مكون وظيفي، بمعنى أي شيء مثل سياق البيانات أو سياق الحالة. مثلاً عندما تحتاج إلى الوصول إلى سياق البيانات، استخدم خطاف useContext للوصول إلى السياق. const myData = useContext(MyDataContext); useReducer يسمح لك خطاف useReducer بإدارة حالة معقدة في مكون وظيفي، حيث يستخدم خطاف useReducer دالة مخفضة لتحديث الحالة. أي عندما تحتاج إلى إدارة حالة تحتوي على قائمة من العناصر، اعتمد على خطاف useReducer لإنشاء متغير حالة يحتوي على قائمة من العناصر. const [state, dispatch] = useReducer(reducer, initialState); لمحة خاطفة عن الخطافات في React مرجع إلى الواجهة البرمجية للخطافات في React الأسئلة الشائعة حول الخطافات في React
  13. forEach، map، filter، و reduce ببساطة هي وظائف تُستخدم لتكرار عناصر المصفوفة، والفرق الرئيسي بينها هو ما تفعله بالعناصر أثناء التكرار. forEach يتكرر عبر جميع عناصر المصفوفة ويؤدي الوظيفة المحددة إلى كل منها. map يتكرر عبر جميع عناصر المصفوفة ويعيد مصفوفة جديدة تحتوي على ناتج تطبيق الوظيفة المحددة على كل عنصر. filter يتكرر عبر جميع عناصر المصفوفة ويعيد مصفوفة جديدة تحتوي فقط على العناصر التي تفي بشرط معين. reduce يتكرر عبر جميع عناصر المصفوفة ويجمعها معًا لإنشاء قيمة واحدة. وإليك مثال على استخدام كل وظيفة: const numbers = [1, 2, 3, 4, 5]; // forEach numbers.forEach(number => console.log(number)); // map const doubledNumbers = numbers.map(number => number * 2); console.log(doubledNumbers); // [2, 4, 6, 8, 10] // filter const evenNumbers = numbers.filter(number => number % 2 === 0); console.log(evenNumbers); // [2, 4, 6] // reduce const sumOfNumbers = numbers.reduce((a, b) => a + b, 0); console.log(sumOfNumbers); // 15 for loop و while loop هي أيضًا وظائف تُستخدم لتكرار العناصر، ولكن الفرق الرئيسي بينها هو أن for loop يحدد عدد المرات التي يجب تكرار فيها الـ loop، بينما while loop يستمر في التكرار حتى يتم استيفاء شرط معين. // for loop for (let i = 0; i < 5; i++) { console.log(i); } // while loop let i = 0; while (i < 5) { console.log(i); i++; } لاحظ أن في for نقوم بالتكرار حتى وصول قيمة i رقم أقل من 5 ونستطيع تعديل تلك القيمة، بمعنى أن عدد مرات التكرار معروفة لدينا. بينما في while لاحظ أن الحلقة تستمر في التكرار في حال الشرط ما زال صحيحًا أي تُستخدم حلقة while عندما لا تعرف عدد المرات التي يجب تكرار فيها التعليمات. أي أن forEach، map، filter، و reduce هي وظائف أكثر تعقيدًا من for loop و while loop، ونستخدمها لكتابة كود أكثر كفاءة وقابلية للقراءة.
  14. بالطبع، فإذا أردت أن تصبح مطور واجهة خلفية Back-End فسيتعين عليك إنشاء الواجهات البرمجية API، وإعداد الخادم لاستقبال طلبات CRUD. ولا مشكلة إذا واجهت صعوبة في البداية، فتلك هي طبيعة مجال البرمجة وسيسهل عليك الأمر لاحقًا مع التكرار وإعادة كتابة الكود، وتستطيع البحث ثم السؤال عن أي شيء تريد فهمه أو توضيح له. أما إذا كنت تريد التخصص بالواجهة الأمامية، فتستطيع الإكتفاء بالمفهوم العام والتعرف على طبيعة عمل الخادم والـ API من أجل يكون لديك دراية على ما يجري بالخلفية، حيث أنك ترسل وتستقبل بيانات من الـ API في الواجهة الأمامية. وأنصحك بالإطلاع على التالي:
  15. الموقع سرعته جيدة ولا مشكلة في تصفحه، وأرى أنك تستخدم Blogger وهنا لا تتوفر الإضافات المخصصة لتهيئة الموقع مثل ووردبريس، ولكن هناك بعض الأمور التي يمكنك القيام بها وهي: استخدم قالبًا سريعً فبعض القوالب أسرع من غيرها، لذا من المهم اختيار قالب سريع إذا كنت تريد تحسين سرعة موقعك. قم بضغط الصور حيث الصور هي أحد أكبر العوامل التي تؤثر على سرعة موقعك، ويمكنك ضغط الصور لتقليل حجمها دون التأثير على جودتها من خلال صيغة webP. تجنب استخدام الكثير من JavaScript وCSS. JavaScript وCSS فقد تبطئ موقعك إذا تم استخدامها بكثرة، حاول تقليل استخدامهما قدر الإمكان. تخزين الصور في ذاكرة التخزين المؤقت (الكاش) فتخزين الصور في ذاكرة التخزين المؤقت يساعد في تحسين سرعة موقعك عن طريق تقليل عدد المرات التي يحتاج فيها المتصفح إلى تحميل الصور, كالتالي: اختر القالب لديك ثم اضغط على Edit HTML، ثم ابحث عن عنصر <head> وبداخله أضف الكود التالي: <include expiration='7d' path='/assets/**.css'/> <include expiration='7d' path='/assets/**.js'/> <include expiration='3d' path='/assets/**.gif'/> <include expiration='3d' path='/assets/**.jpeg'/> <include expiration='3d' path='/assets/**.jpg'/> <include expiration='3d' path='/assets/**.png'/> استخدم شبكة توصيل المحتوى (CDN). مثل كلاود فلير وهي مجموعة من الخوادم موزعة في جميع أنحاء العالم، ويساعد ذلك في تحسين سرعة موقعك عن طريق تحميل الصور من الخادم الأقرب إلى الزائر.
  16. الأعداد العقدية تعني أعداد يمكن تمثيلها على شكل a + bi، حيث a و b هما عددان حقيقيان و i هو جذر الوحدة، والأعداد العقدية لها العديد من التطبيقات في الرياضيات والعلوم، ربما الأمر مبهم بعض الشيء لذلك إليك بعض الأمثلة على كيفية استخدام الأعداد العقدية في الرياضيات والعلوم: الهندسة: نستخدمها لتمثيل النقاط في المستوى المعقد، كتمثيل النقطة (1، 2) على المستوى المعقد على شكل 1 + 2i. التحليل: لتمثيل الدوال والتكاملات، مثل تمثيل دالة الأس x^2 + 1 على شكل (x + i)^2 + 1. الهندسة التحليلية: لتمثيل الخطوط والمنحنيات، حيث يمكن تمثيل الخط y = x على شكل x + iy = 1. الجبر الخطي: لتمثيل المصفوفات والتحويلات الخطية، من أجل تمثيل المصفوفة [1 2; 3 4] على شكل 1 + 2i 3 + 4i. نظرية الأعداد: لدراسة الأعداد الصحيحة والنسبية، كإثبات أن عدد الأعداد الصحيحة الموجبة التي هي أيضًا أعداد أولية زوجية هو عدد محدود باستخدام الأعداد العقدية. الفيزياء: لتمثيل الموجات والمجالات الكهرومغناطيسية، فيمكننا تمثيل موجة الضوء على شكل سينوسيود مع تردد وسعة معينين. الهندسة الكهربائية: لتصميم الدوائر الكهربائية، فيمكن استخدام الأعداد العقدية لحساب التيار في دائرة كهربائية. الاتصالات: لتصميم أنظمة الاتصالات، من أجل تشفير الإشارات في الاتصالات السلكية واللاسلكية. الكيمياء: يمكن استخدام الأعداد العقدية لدراسة التفاعلات الكيميائية لحساب طاقة التفاعل الكيميائي. العلوم المالية: لدراسة الأسواق المالية وحساب مخاطر الاستثمار.
  17. هل تعملين على مشروع Flutter؟ على أي حال هناك مشكلة في إنشاء مخزن مفاتيح Keystore وتستطيعي إضافة المفتاح من خلال الأمر التالي: keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000 وفي حال كنتي تعملين على مشروع Flutter فعليك بتنفيذ الأمر التالي: flutter upgrade أيضًا تأكدي من تحديث أدوات Android SDK: افتحي Android Studio. انقري على قائمة "Tools ". اختاري "Android" ثم"SDK Manager.". في علامة التبويب "SDK Platforms"، تأكدي من تثبيت أحدث إصدار من Android SDK. في علامة التبويب " SDK Tools"، تأكدي من تثبيت أحدث إصدارات أدوات Android SDK. انقري فوق الزر "Apply". والآن عليك بتنفيذ الأمر التالي: flutter clean ثم تشغيل المشروع. وإذا استمرت المشكلة، حاولي تنفيذ أمر flutter doctor من أجل تفقد الأخطاء في المشروع.
  18. بالطبع تستطيع ذلك، لكن عليك بتفهم أن تلك الأيقونات هي من مكتبة Font Awesome وتستطيع تحريكها كيفما تريد من خلال الصنف الزائف :hover في CSS، أي عند وقوف مؤشر الفأرة على الأيقونة تستطيع تنفيذ تنسيق مثل تكبير الأيقونة قليلاً نحو المستخدم وهكذا. وستجد الأيقونات في الغالب تم تطبيقها على عنصر زائف ‎::before في مواقع سلة. ومن الأفضل أن تبحث عن CSS Icons Animation على يوتيوب وستجد الكثير من الشروحات.
  19. السؤال غير واضح، في حال كنت تقصد أنك تعمل على تطوير موقع ويحدث ذلك، فهل قمت بإضافة كود يتم تنفيذه عند عمل Scroll؟ وفي حال كانت المشكلة تحدث في مواقع مختلفة، فتفقد الإضافات في المتصفح لديك ربما أحدها يسبب تلك المشكلة، قم بتعطيل كل إضافة على حدى وتفقد هل اختفت المشكلة أم لا.
  20. بالطبع وحتى في حال كان لديك أكثر من 10 حالات ولا يوجد عدد محدد، وإليك مثال: const x = 10; if (x > 0) { console.log("x هو عدد موجب"); } else if (x < 0) { console.log("x هو عدد سالب"); } else { console.log("x هو الصفر"); } والفرق بين الجملة الشرطية if والـ Switch case هو أن الـ Switch نستخدمه في حال كان لدينا متغير واحد ونريد تنفيذ كود معين بناءًا على ذلك المتغير. أما الجملة الشرطية، فتستطيع استخدام عدة متغيرات ولا مشكلةفي ذلك، أي تستطيع استخدام أي نوع من الشروط والتعامل مع العديد من الحالات المعقدة بشكل أكبر، بالمقابل، switch case أكثر محدودية بسبب استخدامه لقيمة ثابتة فقط (متغير واحد) لحالات "case". أيضًا نستطيع استخدام شروط معقدة مع المعاملات المنطقية المختلفة مثل AND و OR للتحقق من صحة الشروط المتعددة، أما في "switch case"، يتم التحقق من تطابق القيمة المحددة للمتغير مع القيم المحددة في حالات "case". وهناك أمر هام وهو أن"switch case" أكثر كفاءة في الأداء عندما يكون لديك عدد كبير من الحالات الممكنة، لكونه يتيح للمترجم تحسين عمليات الفحص الداخلية وأسرع من سلسلة متسلسلة من الشروط في "if"، ولكن بالطبع في حال كان لدينا متغير واحد.
  21. حاول الضغط على Ctrl + Space لإجبار المحرر على عرض خيارات لاستكمال الكود. ولكن قبل ذلك تأكد من تفعيل خيار Code completion عن طريق التوجه إلى الإعدادات ثم ثم اختر Editor ثم General ثم Code Completion ومنها اختر Show suggestions as you type.
  22. الفرق هو أن auth()->user() يرجع الكائن User الحالي بينما Auth::user() يرجع الكائن User الحالي أو null إذا لم يكن هناك مستخدم محدد. وتستطيع استخدام auth()->user() في المواقف التي تحتاج فيها إلى التأكد من وجود مستخدم محدد، مثلاً في حال كنت تريد عرض معلومات المستخدم الحالي ، فاستخدم: auth()->user()->name بينما نستخدم Auth::user() في المواقف التي لا تحتاج فيها إلى التأكد من وجود مستخدم محدد. كمثل معرفة ما إذا كان هناك مستخدم محدد متصل. وإليك مثال: // استخدام auth()->user() $user = auth()->user(); // طباعة اسم المستخدم الحالي echo $user->name; // استخدام Auth::user() if (Auth::check()) { // هناك مستخدم متصل } else { // لا يوجد مستخدم متصل }
  23. هناك أمر هام يجب فهمه، وهو أنه سيتم سؤالك عن مدى فهمك للمشاريع التي قمت بتنفيذها والكود الذي قمت بكتابته، أي ليس المطلوب فقط هو تسليم المشروع بل سيتم إختبار استيعابك وفهمك، لذلك تستطيع نسخ الجزء المفقود من المشروع لديك من مستودع المشروع على GitHub ثم استكماله من النقطة التي توقفت عندها. ولكن ذلك لا يعني أبدًا أن تفعل ذلك مع كل المشاريع، بل يجب ثم يجب كتابة الكود بنفسك وتنفيذ المشروع بمفردك في حال كنت تكتب مع المدرب، أي يجب إعادة تنفيذه بمفردك وستتعلم الكثير من ذلك. ولتعويض الأمر تستطيع إضافة ميزة جديدة مثلاً أو تغيير شيء معين لتتأكد من أنك قد فهمت كيفية تنفيذ المشروع فعلاً وليس مجرد كتابة الكود. وبخصوص الإختبار فسيتم إجراء مكالمة صوتية لمدة 30 دقيقة لإختبارك ثم تحديد مشروع التخرج لتعمل عليه لمدة تتراوم ما بين أسبوع إلى أسبوعين حسب حجم المشروع، ثم إجراء محادثة صوتية مرة أخرى لمناقشة ما قمت بتنفيذه، أي أن العلمية كلها تعتمد على مدى فهمك وليس الكود نفسه.
  24. هناك عدة طرق لجعل القوالب الجاهزة بصيغة يمكن للناس التعديل عليها بعد شرائها، من بينها: تصدير القوالب بصيغة PSD. PSD هي اختصار لـ Photoshop Document، وهي صيغة ملف مفتوحة المصدر يمكن فتحها وتعديلها باستخدام برنامج فوتوشوبK ,عند تصدير قالب بصيغة PSD، ستتمكنين من حفظ جميع طبقات القالب وعناصره، مما سيسمح للمشترين بإجراء التغييرات التي يريدونها بسهولة. تصدير القوالب بصيغة PDF وهي اختصار لـ Portable Document Format، أي صيغة ملف قياسية يمكن فتحها وعرضها على أي جهاز كمبيوتر أو جهاز لوحي أو هاتف ذكي، وفي حال تصدير قالب بصيغة PDF، ستتمكنين من الحفاظ على جودة القالب وتنسيقه، مما سيضمن أن المشترين سيحصلون على منتج نهائي عالي الجودة. استخدام خدمة تحويل ملفات التي تسمح لك بتحويل الملفات من صيغة إلى أخرى، وباستطاعتك استخدام إحدى هذه الخدمات لتحويل قوالب Canva الخاصة بك إلى PSD أو PDF أو أي صيغة أخرى تدعم التعديل. وبمجرد تصدير القوالب الخاصة بك، يمكنك تحميلها على Envato Elements و هي خدمة اشتراك تتيح لك الوصول إلى مجموعة كبيرة من القوالب والعناصر والرسومات الأخرى، مما يسمح للمشترين الاشتراك في Envato Elements مقابل رسوم شهرية أو سنوية، والحصول على إمكانية الوصول غير المحدودة إلى جميع المحتوى الموجود على المنصة. وفيما يلي بعض النصائح لبيع القوالب الجاهزة على Envato Elements: اكتبي وصفًا تفصيليًا لكامل القوالب، وتأكدي من تضمين جميع المعلومات التي قد يرغب المشترون في معرفتها حول القوالب، مثل حجمها وتنسيقها وميزاتها. أضيفي صورًا عالية الجودة لكامل القوالب وستساعد الصور عالية الجودة المشترين على تصور كيفية استخدام القوالب. حددي أسعارًا تنافسية لكامل القوالب، بأسعار تنافسية مع أسعار القوالب الأخرى المتوفرة على Envato Elements. قدمي ضمانًا لكامل القوالب وذلك سيساعد المشترين على الشعور بالأمان عند شراء قوالبك.
  25. ستقوم برفع مشاريعك على حسابك في GitHub أي عليك إنشاء مستودع لكل مشروع ثم رفع الكود إلى ذلك المستودع.
×
×
  • أضف...