-
المساهمات
5649 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
11
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو عبدالباسط ابراهيم
-
هل يمكنك توضيح طريقة التحميل وما المشكلة بالضبط التي تعوق عملية التثبيت بعد كتابة ال password ؟ هناك عدة أسباب لعدم تحميل Python 3 في Kali Linux. فيما يلي بعض النصائح التي قد تساعدك في حل المشكلة: تأكد من أن إصدار Python 3 مثبت بالفعل. يمكنك التحقق من ذلك عن طريق فتح موجه الأوامر وكتابة الأمر التالي: python3 --version إذا لم يتم عرض إصدار Python 3، فيمكنك تثبيته عن طريق فتح موجه الأوامر وكتابة الأمر التالي: sudo apt-get install python3 تأكد من أن متغير البيئة PATH يحتوي على موقع Python 3. يمكنك التحقق من ذلك عن طريق فتح ملف .bashrc في محرر النصوص وإضافة السطر التالي إلى أسفل الملف: export PATH=$PATH/usr/bin ثم، أغلق محرر النصوص وأعيد تشغيل جهاز الكمبيوتر الخاص بك. حاول إعادة تشغيل جهاز الكمبيوتر الخاص بك. في بعض الأحيان يمكن أن يساعد إعادة تشغيل جهاز الكمبيوتر الخاص بك في حل مشاكل تحميل Python 3.
-
الرمز الذي قدمته يبدو أنه يحاول ضغط ملف فيديو قبل تحميله إلى الخادم. ومع ذلك، هناك مشكلة في التعليمات البرمجية في فئة Compressvedio. لا تُرجع طريقة doInBackground() مسار ملف الفيديو المضغوط. هذا يعني أن طريقة onPostExecute() لن تتمكن من الحصول على ملف الفيديو المضغوط وتسجيل حجمه. لإصلاح هذه المشكلة، تحتاج إلى تعديل طريقة doInBackground() لإرجاع مسار ملف الفيديو المضغوط. يمكنك القيام بذلك عن طريق إضافة التعليمات البرمجية التالية إلى الطريقة: String vediopath = SiliCompressor.with(uploadved.this).compressVideo(uritoup, strings[2]); return vediopath; بمجرد إجراء هذه التغييرات، يجب أن يكون الرمز قادرًا على ضغط ملف الفيديو وتسجيل حجمه. إليك الكود الكامل لفئة Compressvedio: public class Compressvedio extends AsyncTask<String, String, String> { Dialog dialogo; @Override protected void onPreExecute() { super.onPreExecute(); dialogo = ProgressDialog.show(uploadved.this, "برجاء الانتظار", "جارى تجهيز الفيديو"); } @Override protected String doInBackground(String... strings) { String vediopath = null; // Get the video URI. Uri uritoup = Uri.parse(strings[1]); // Compress the video. try { vediopath = SiliCompressor.with(uploadved.this).compressVideo(uritoup, strings[2]); } catch (URISyntaxException e) { throw new RuntimeException(e); } return vediopath; } @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"); } }
-
إليك بعض النصائح لبدء العمل الحر في مجال المونتاج والتصميم: اجمع أعمالك في محفظة. هذا هو أهم شيء يجب فعله عند البدء في العمل الحر. سيساعدك وجود محفظة قوية في جذب العملاء وعرض مهاراتك. انشر أعمالك على مواقع التواصل الاجتماعي. هذا هو وسيلة رائعة للتواصل مع العملاء المحتملين وعرض أعمالك. قم بإنشاء موقع إلكتروني أو صفحة على الويب. هذا سيساعدك على إنشاء علامة تجارية لنفسك وعرض أعمالك بشكل احترافي. حدد أسعارك بشكل عادل. من المهم أن تحدد أسعارك بشكل عادل حتى تتمكن من جذب العملاء وتحقيق الربح. كن متواصلًا مع العملاء. من المهم أن تتواصل مع العملاء بشكل مستمر حتى تتمكن من فهم متطلباتهم وتسليم المشاريع في الوقت المحدد. كن مستعدًا للتعلم والتطور. مجال المونتاج والتصميم يتغير باستمرار، لذلك من المهم أن تكون مستعدًا للتعلم والتطور حتى تتمكن من مواكبة أحدث التقنيات. فيما يلي بعض النصائح الخاصة بالعمل في مستقل أو حسوب: اقرأ شروط الاستخدام والسياسة الخاصة بالمنصة جيدًا قبل البدء في العمل. قم بإنشاء ملف تعريف احترافي يتضمن معلوماتك ومهاراتك وخبراتك. انشر أعمالك على المنصة واجعلها مميزة وجذابة. قم بتقديم عروض أسعار تنافسية للعملاء. تواصل مع العملاء بشكل مستمر واحرص على تسليم المشاريع في الوقت المحدد.
-
رسالة الخطأ "لا يمكن تحميله لأن تشغيل البرامج النصية معطل على هذا النظام" تعني أن سياسة التنفيذ على نظامك مضبوطة على "مقيد". هذا يعني أن PowerShell لن يقوم بتشغيل البرامج النصية إلا إذا تم توقيعها رقميًا بواسطة ناشر موثوق به. هناك عدة طرق لإصلاح هذا الخطأ: قم بتشغيل PowerShell في وضع المسؤول. سيتجاوز هذا سياسة التنفيذ للجلسة الحالية. قم بتغيير سياسة التنفيذ. يمكنك القيام بذلك عن طريق تشغيل الأمر التالي في PowerShell: set-ExecutionPolicy RemoteSigned سيسمح هذا لـ PowerShell بتشغيل البرامج النصية التي تم توقيعها بواسطة ناشر موثوق به. قم بتغيير سياسة التنفيذ من خلال نهج المجموعة. هذه هي الحل الأكثر دائمًا، لكنها تتطلب أن يكون لديك امتيازات مسؤول. للقيام بذلك، افتح محرر نهج المجموعة المحلي وانتقل إلى المسار التالي: تكوين الكمبيوتر > القوالب الإدارية > مكونات Windows > Windows PowerShell > سياسة التنفيذ انقر نقرًا مزدوجًا على سياسة "السماح بالبرامج النصية غير الموقعة" وقم بتعيينها على "تمكين". قم بتغيير سياسة التنفيذ من خلال السجل. هذا هو الحل الأكثر صعوبة، لكنه يمنحك أكبر قدر من التحكم في سياسة التنفيذ. للقيام بذلك، افتح محرر السجل وانتقل إلى المفتاح التالي: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\ExecutionPolicy القيمة الافتراضية للمفتاح هي "مقيد". لتغيير سياسة التنفيذ، انقر نقرًا مزدوجًا على القيمة واضبطها على أحد القيم التالية: تجاوز: سيسمح هذا لـ PowerShell بتشغيل جميع البرامج النصية، بغض النظر عما إذا كانت موقعة أم لا. RemoteSigned: سيسمح هذا لـ PowerShell بتشغيل البرامج النصية التي تم توقيعها بواسطة ناشر موثوق به. غير مقيد: سيسمح هذا لـ PowerShell بتشغيل جميع البرامج النصية، حتى تلك التي لا يتم توقيعها. بمجرد تغيير سياسة التنفيذ، ستحتاج إلى إعادة تشغيل PowerShell حتى تصبح التغييرات سارية المفعول.
-
يمكن إنشاء زر يحتوي على قائمة من خلال استخدام مكونات Bootstrap. يمكن استخدام الفئة "dropdown-toggle" لتنشيط القائمة عند النقر على الزر، ويمكن استخدام الفئة "dropdown-menu" لتحديد عناصر القائمة. فيما يلي مثال على كيفية إنشاء زر يحتوي على قائمة باستخدام Bootstrap: <div class="dropdown"> <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <!-- يمكنك استخدام الثلاث نقاط الأفقية هنا --> <span class="sr-only">Toggle Dropdown</span> </button> <div class="dropdown-menu" aria-labelledby="dropdownMenuButton"> <a class="dropdown-item" href="#">زر 1</a> <a class="dropdown-item" href="#">زر 2</a> </div> </div> يمكن استخدام الأيقونات بدلاً من النقاط الأفقية باستخدام العنصر `<i>`، ويمكن تخصيص الأيقونات باستخدام فئات Bootstrap مثل "fas" و "fa-caret-down" و "fa-ellipsis-h"؛ على سبيل المثال: <div class="dropdown"> <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <i class="fas fa-ellipsis-h"></i> <span class="sr-only">Toggle Dropdown</span> </button> <div class="dropdown-menu" aria-labelledby="dropdownMenuButton"> <a class="dropdown-item" href="#">زر 1</a> <a class="dropdown-item" href="#">زر 2</a> </div> </div> يرجى ملاحظة أنه يجب تضمين مكتبة Bootstrap و FontAwesome في مشروعك لاستخدام هذه الأيقونات والفئات.
- 4 اجابة
-
- 1
-
-
يعتمد حجم الذاكرة العشوائية (RAM) المطلوبة للتعدين واستهلاك الهاش على نوع العملة الرقمية التي ترغب في التعدين لها، وعلى نوع البرنامج والخوارزمية المستخدمة للتعدين. على سبيل المثال، يتطلب تعدين بيتكوين (Bitcoin) استخدام معدات خاصة تسمى ASIC التي تحتاج إلى الكثير من الطاقة الكهربائية ولا تستخدم الكثير من الذاكرة العشوائية (RAM). أما تعدين عملات رقمية أخرى مثل Ethereum فهو يتطلب استخدام العديد من الوحدات المركزية (CPUs) أو وحدات المعالجة الرسومية (GPUs) ، والتي تحتاج إلى كميات كبيرة من الذاكرة العشوائية (RAM). بشكل عام، يمكنك حساب استهلاك الهاش للتعدين عن طريق اختبار الأداء الخاص بجهاز التعدين الخاص بك باستخدام برامج مثل NiceHash أو Minerstat أو Claymore. يمكنك أيضًا استخدام الحاسبة الخاصة بالتعدين لتقدير العائد المتوقع لجهاز التعدين الخاص بك واستهلاك الطاقة الكهربائية. ومن المهم أن تتأكد من أن تحسب تكلفة الطاقة الكهربائية لديك عند حساب الأرباح المتوقعة من التعدين. عموما، يمكن القول بأن كلما زادت سرعة الهاش وزاد حجم الذاكرة العشوائية (RAM) المستخدمة في جهاز التعدين، كلما زاد استهلاك الطاقة الكهربائية والتكلفة الإجمالية للتعدين.
-
الذكاء الاصطناعي وتعلم الآلة هما مجالان واسعان ومتطوران بشكل سريع، ويمكن لأي شخص أن يحترفهما من خلال العديد من المصادر الخارجية للتعلم. هناك العديد من الموارد والأدوات المتاحة عبر الإنترنت التي يمكن استخدامها لتحسين مهارات الذكاء الاصطناعي وتعلم الآلة أولاً من خلال الأكاديمية: يوجد الدورات التي تم ذكرها في التعليقات السابقة ولكن يجب معرفة أنه لا توجد دورات مختصة فقط بالذكاء الاصطناعي وتعلم الآلة وإنما يمكنك الإستفادة من هذه الدورات لتعلم الذكاء الاصطناعي وتعلم الآلة ثانياً دورات أخرى يوجد الكثير من المصادر سواء المجانية أو المدفوعة مثل Coursera: يوفر Coursera مجموعة واسعة من الدورات المجانية (بعد التقدم للدعم المالي)حول الذكاء الاصطناعي وتعلم الآلة، بما في ذلك دورات من جامعات مثل Stanford وPrinceton وUniversity of Toronto. edX: يوفر edX دورات مجانية على الإنترنت من مؤسسات مثل MIT وHarvard وBerkeley وغيرها حول تعلم الآلة والذكاء الاصطناعي. Udacity: يوفر Udacity دورات متخصصة بالذكاء الاصطناعي وتعلم الآلة، بما في ذلك دورات مدفوعة ومجانية. وبدلاً من التكرار يمكنك قراءة الإجابات التالية حيث تم ذكر أفضل الدورات لتعلم الذكاء الاصطناعي وتعلم الآلة
-
كل من useCallback وuseMemo هما هوكس Hook في React، ويستخدمان لتحسين أداء التطبيقات عن طريق تجنب إعادة الحسابات غير الضرورية. useCallback: useCallback يستخدم لتجنب إعادة إنشاء الدوال عند إعادة تقديم المكونات وتمرير الدوال كخاصية إلى المكونات الفرعية. يتم استخدامه لتحسين أداء التطبيق عن طريق تخزين الدوال المعرفة مسبقًا وإعادتها عند الطلب. يتلقى useCallback وسيطًا لكلمة دالة وقائمة من الاعتمادات التي يعتمد عليها الخطاب. عندما يتم تغيير أي من الاعتمادات التي يتم تمريرها إلى useCallback، فسيتم إعادة إنشاء الدالة. وإلا، يتم إرجاع الدالة المخزنة في الذاكرة. مثال: في المثال التالي، يتم استخدام useCallback لتجنب إعادة إنشاء الدالة عندما يتم إعادة إنشاء مكون الابن الذي يتلقى الدالة كخاصية. import React, { useCallback, useState } from 'react'; function ParentComponent() { const [count, setCount] = useState(0); const increment = useCallback(() => { setCount(count + 1); }, [count]); return ( <div> <p>Count: {count}</p> <ChildComponent increment={increment} /> </div> ); } function ChildComponent({ increment }) { return ( <div> <button onClick={increment}>Increment count</button> </div> ); } useMemo: useMemo يستخدم لتجنب إعادة حساب القيم المعقدة بشكل متكرر. يتلقى useMemo وسيطين: القيمة التي يتعين حسابها والقيمة التي يعتمد عليها. يتم إرجاع القيمة المخزنة في الذاكرة إذا لم تتغير القيمة المعتمدة. وإلا، يتم إعادة حساب القيمة. مثال: في المثال التالي، يتم استخدام useMemo لتجنب إعادة حساب القيمة المعقدة بشكل متكرر. import React, { useMemo, useState } from 'react'; function ComplexCalculation({ x, y }) { // Complex calculation that we want to avoid recomputing unnecessarily const result = useMemo(() => { // Some really expensive operation console.log('Calculating...'); return x * y; }, [x, y]); return <p>Result: {result}</p>; } function App() { const [x, setX] = useState(1); const [y, setY] = useState(1); return ( <div> <input type="number" value={x} onChange={(e) => setX(+e.target.value)} /> <input type="number" value={y} onChange={(e) => setY(+e.target.value)} /> <ComplexCalculation x={x} y={y} /> </div> ); } هناك مثال بسيط يوضح استخدام useEffect بدلاً من useCallback في حالة تمرير الدوال كخاصية إلى المكونات الفرعية وتتوقع أن تتغير معلمة الاعتماد عليها بشكل متكرر: import React, { useState, useEffect } from 'react'; function ChildComponent({ handleClick }) { // Child component that renders a button and calls the handleClick function when clicked return ( <div> <button onClick={handleClick}>Click me</button> </div> ); } function ParentComponent() { const [count, setCount] = useState(0); useEffect(() => { // Callback function that is created once and does not depend on any props or state const increment = () => { setCount(count + 1); }; // Pass the increment function as a prop to the child component // The child component will only be re-rendered when the count state changes return <ChildComponent handleClick={increment} />; }, [count]); return ( <div> <p>Count: {count}</p> </div> ); } في هذا المثال، يتم استخدام useEffect لتمرير الدالة كخاصية إلى المكون الابن ChildComponent. يتم إنشاء الدالة في useEffect وتمريرها كخاصية إلى ChildComponent. يتم إعادة تقديم ChildComponent فقط عندما يتغير العداد count، وليس عند كل تحديث لـ ParentComponent. هذا يتيح لنا تجنب إعادة إنشاء الدالة handleClick بشكل متكرر ويحسن من أداء التطبيق.
-
Hooks هي طريقة جديدة في React تسمح لنا بإضافة حالة (state) ودوال الدورة الحياة (lifecycle methods) وغيرها من الميزات داخل Function Components دون الحاجة إلى استخدام Class Components. على سبيل المثال، إذا كان لديك Function Component وتريد إضافة حالة داخله، يمكنك استخدام Hook useState. وإذا كنت تريد استخدام دورة حياة المكونات، فيمكنك استخدام Hook useEffect. وهناك العديد من الـ Hooks المختلفة المتاحة في React، وتساعدنا في إنشاء تطبيقات تفاعلية أسرع وأسهل. ومن الـ Hooks الأكثر استخدامًا في React: useState: يتيح لنا إنشاء حالة داخل Function Component وتغييرها عند الحاجة دون الحاجة إلى استخدام الـ Class Components. useEffect: يسمح لنا باستخدام الدورة الحياة للمكونات مثل componentDidMount و componentDidUpdate و componentWillUnmount داخل Function Components. useContext: يسمح لنا باستخدام Context داخل Function Components بشكل أسهل وأكثر فعالية. ولشرح كل من ال hooks منفرداً سيأخذ العديد من المقالات لذلك بدلاً من التكرار يمكنك الذهاب للتوثيق الرسمي للإطلاع على المزيد من المعلومات بشكل أكثر تفصيلاً موسوعة حسوب موقع react
-
forEach(), map(), filter() و reduce() هي وظائف مدمجة في JavaScript تستخدم للتعامل مع المصفوفات والقوائم. وهنا بعض الفروق بينهم: forEach(): تستخدم forEach() لتكرار كل عنصر في المصفوفة وتنفيذ وظيفة معينة عليه. على سبيل المثال، إذا كان لدينا مصفوفة تحتوي على أرقام، يمكن استخدام forEach() لطباعة كل عنصر في المصفوفة: const numbers = [1, 2, 3, 4, 5]; numbers.forEach(function(number) { console.log(number); }); map(): تستخدم map() لإنشاء مصفوفة جديدة باستخدام قيم المصفوفة الأصلية والتي تم تحديدها عن طريق تطبيق دالة على كل عنصر. على سبيل المثال، إذا كان لدينا مصفوفة تحتوي على أرقام، يمكن استخدام map() لإنشاء مصفوفة جديدة تحتوي على نسخة مضاعفة من كل عنصر: const numbers = [1, 2, 3, 4, 5]; const doubledNumbers = numbers.map(function(number) { return number * 2; }); console.log(doubledNumbers); // Output: [2, 4, 6, 8, 10] filter(): تستخدم filter() لإنشاء مصفوفة جديدة تحتوي على العناصر التي تم تحديدها باستخدام دالة معينة. على سبيل المثال، إذا كان لدينا مصفوفة تحتوي على أرقام، يمكن استخدام filter() لإنشاء مصفوفة جديدة تحتوي على الأرقام الزوجية فقط: const numbers = [1, 2, 3, 4, 5]; const evenNumbers = numbers.filter(function(number) { return number % 2 === 0; }); console.log(evenNumbers); // Output: [2, 4] reduce(): تستخدم reduce() لتجميع القيم في مصفوفة وإرجاع قيمة واحدة. على سبيل المثال، إذا كان لدينا مصفوفة تحتوي على أرقام، يمكن استخدام reduce() لجمع الأرقام في المصفوفة: const numbers = [1, 2, 3, 4, 5]; const sum = numbers.reduce(function(total, number) { return total + number; }, 0); console.log(sum); // Output: 15 أما بالنسبة للفرق بين هذه الدوال وبين الـ for loop والـ while loop، فالفرق يكمن في الطريقة التي يتم بها التعامل مع البيانات. فالـ for loop والـ while loop يستخدمان لتنفيذ عملية معينة على عناصر المصفوفة بشكل متسلسل، بينما الدوال السابقة تستخدم لتطبيق وظيفة على عناصر المصفوفة بشكل متوازي. ويمكن استخدام أي منهم حسب الحاجة وطبيعة المهمة التي تحتاج إلى تنفيذها في مشروعك. سأقدم لك مثالًا على الفرق بين استخدام الـ for loop و map() في جافاسكريبت: لنفترض أن لدينا مصفوفة تحتوي على أرقام، ونحتاج إلى إنشاء مصفوفة جديدة تحتوي على نفس الأرقام ولكن مضاعفة القيم. يمكننا القيام بذلك باستخدام for loop على النحو التالي: let numbers = [1, 2, 3, 4, 5]; let doubledNumbers = []; for (let i = 0; i < numbers.length; i++) { doubledNumbers.push(numbers[i] * 2); } console.log(doubledNumbers); // [2, 4, 6, 8, 10] ويمكن القيام بنفس العملية باستخدام دالة map() على النحو التالي: let numbers = [1, 2, 3, 4, 5]; let doubledNumbers = numbers.map(function(number) { return number * 2; }); console.log(doubledNumbers); // [2, 4, 6, 8, 10] كما ترى، تقوم الدالة map() بإنشاء مصفوفة جديدة تحتوي على النتائج التي تم إنشاؤها، في حين يتم استخدام for loop لتعديل المصفوفة الحالية. وبشكل عام، يمكن استخدام for loop و while loop و map() و filter() و reduce() في حالات مختلفة ويعتمد الاختيار على طبيعة المهمة التي تحتاج إلى القيام بها.
-
إذا كنت تريد العمل كمطور ويب أو تطبيقات الجوال، فمن المهم فهم كيفية كتابة وفهم طرق الاتصال بـ API والتعامل مع JSON و HTTP methods مثل GET و POST. فهم الأساسيات يمكن أن يساعدك في تطوير تطبيقات أفضل وأكثر فعالية وأمانًا ، ولكن إذا كنت ترغب في إنشاء API الخاصة بك أو تخصيص API موجودة (أي أمك مطور backend)، فسيكون من الضروري تعلم الكتابة والفهم العميق للأكواد والوظائف المختلفة المرتبطة بالـ API. على الجانب الآخر ، إذا كنت تستخدم API موجودة وتريد فقط استخدامها ، فمن الممكن الاكتفاء بفهم الأساسيات واستخدام وثائق الـ API التي توفرها الشركة أو الموقع. ومع ذلك ، ستحتاج إلى فهم كيفية استخدام المنصات والأدوات التي تتيح لك الاتصال بالـ API. بالمجمل ، يوصى بفهم الأساسيات والعمل على تحسين مهارات البرمجة الخاصة بك بحيث تتمكن من التعامل مع الـ API بشكل فعال. على الرغم من أن الأمر يمكن أن يبدو صعبًا في البداية، إلا أن التعلم التدريجي والتدريب سيجعل هذه المفاهيم أكثر وضوحًا. يمكنك تطبيق ما تعلمته من خلال إنشاء تطبيقات بسيطة واستخدام مختلف الأدوات والمكتبات المتاحة عبر الإنترنت لتسهيل العملية.
-
لست متأكداً بالضبط بما تقصد. من المحتمل أن عناصر الصفحة تتحرك عند تحريك عجلة الفأرة. ولتجنب ذلك، يمكنك تحديد العناصر التي تريد أن تثبت مكانها عند تصغير الصفحة أو تكبيرها. عليك استخدام CSS لتثبيت عنوان الصفحة أثناء التمرير. يمكنك استخدام خاصية `position: fixed` لتثبيت العنوان في مكان معين على الصفحة، و `z-index` لتحديد الترتيب الظاهري للعنصر المثبت. هذا هو مثال بسيط لكيفية تثبيت العنوان: /* تثبيت العنوان في الأعلى بوضع position: fixed */ .header { position: fixed; top: 0; left: 0; right: 0; background-color: #fff; z-index: 999; } /* إضافة بعض التباعد للعنوان */ .header h1 { margin: 20px; } يمكنك تعديل قيم `top` و `left` و `right` لتحديد موقع العنوان المثبت، وتعديل الألوان والأسلوب حسب التصميم الخاص بك.
- 6 اجابة
-
- 1
-
-
هذه بعض الأمثلة التي توضح الفروق بين `auth()->user()` و `Auth::user()` في Laravel: نطاق الوصول: يمكن استخدام `auth()->user()` في أي مكان في التطبيق، بما في ذلك الملفات العادية والـ controllers والـ views، وما إلى ذلك. هذا يعني أنه لا يتطلب استيراد أي فصيلة (Class) قبل استخدامها، وهو متاح في جميع أنحاء التطبيق. بالمقابل، يمكن استخدام `Auth::user()` فقط في المناطق التي تم استيراد فصيلة الـ Facade Class "Auth". ويمكن استيراد هذه الفصيلة في الملفات العادية والـ controllers والـ views، وما إلى ذلك. على سبيل المثال، يمكن استخدام `Auth::user()` في الـ controller بعد استيراد فصيلة "Auth" بالطريقة التالية: use Illuminate\Support\Facades\Auth; class HomeController extends Controller { public function index() { $user = Auth::user(); // Do something with $user } } الأداء: تشير بعض الدراسات إلى أن استخدام `Auth::user()` يمكن أن يكون أسرع بشكل طفيف من استخدام `auth()->user()`، وذلك بسبب الفرق في طريقة الاستدعاء. ومع ذلك، يمكن أن تختلف هذه النتائج باختلاف حجم التطبيق وطريقة التنفيذ. الاستخدامات المتعددة: يمكن استخدام `auth()->user()` لإجراء مهام مختلفة في Laravel، مثل إنشاء روابط محمية وتحديث بيانات المستخدم، بينما يتم استخدام `Auth::user()` بشكل أساسي لاسترجاع معلومات المستخدم الحالي. وفيما يلي بعض الأمثلة على استخدام كل منهما: `auth()->user()`: // إضافة رابط محمي إلى الـ view: @if (auth()->user()) <a href="/dashboard">Dashboard</a> @endif // تحديث بيانات المستخدم في الـ controller: public function update(Request $request) { $user = auth()->user(); $user->name = $request->input('name'); $user->email = $request->input('email'); $user->save(); return redirect('/dashboard'); } `Auth::user()`: // استرجاع معلومات المستخدم الحالي في الـ controller: use Illuminate\Support\Facades\Auth; public function index() { $user = Auth::user(); return view('home', compact('user')); }
-
لجعل قوالبك قابلة للتعديل، يجب تقديمها في صيغة ملفات مفتوحة المصدر مثل PSD لبرنامج فوتوشوب أو AI لبرنامج إليستريتور. يمكنك تصدير القوالب التي تصممها من Canva بصيغة ملف PDF أو PNG، ولكن هذه الصيغ لا تسمح بالتعديل على النصوص والصور بعد الشراء. كما يمكنك استخدام خدمات الإنترنت المتاحة التي تقدم خدمات تحويل Canva إلى صيغة PSD أو AI، مثل "Lunacy" و "Figma" و "Photopea". يمكنك البحث عن المزيد من الخيارات عبر الإنترنت. عند إنشاء القوالب، يتعين عليك تحرير العناصر والنصوص والصور في الطبقات المختلفة بحيث يمكن للمستخدمين تعديلها بسهولة باستخدام برامج مثل فوتوشوب أو إليستريتور. يمكنك أيضًا إضافة ملفات الخطوط التي تستخدمها في التصميم، وذلك لتضمن توافرها لدى المستخدمين. عند بيع القوالب، يجب توضيح للمشترين أنه يحصلون على ملفات مفتوحة المصدر التي يمكن تعديلها، وذلك لتجنب أي سوء فهم. كما يجب أن تحرص على تحديد الرخصة المناسبة لاستخدام القوالب وتوضيح المدة التي يمكن فيها استخدامها.
- 3 اجابة
-
- 1
-
-
هناك بعض الفروقات الأخرى بالتفصيل بين self-hosted fonts وFonts API، وهي: تخزين الخطوط: عند استخدام self-hosted fonts، يتم تخزين الخطوط على خادم الويب الخاص بك ويتم تحميلها مباشرة منه، بينما يتم تخزين الخطوط المستخدمة في Fonts API على خوادم الخدمة المستخدمة، ويتم تحميلها عند زيارة الصفحة. التخصيص: يمكن تخصيص الخطوط بشكل أفضل عند استخدام self-hosted fonts، حيث يمكن تعديل خواص الخط مباشرة في ملفات CSS، بينما يمكن تخصيص الخطوط في Fonts API بشكل محدود باستخدام أدوات التخصيص المتاحة في الخدمة. الدعم: يدعم العديد من المتصفحات self-hosted fonts، بينما يدعم Fonts API معظم المتصفحات الحديثة. عند اختيار الطريقة المناسبة لاستخدام الخطوط على موقع الويب الخاص بك، يجب أخذ هذه الفروقات في الاعتبار والتحليل بناءً على احتياجاتك ومتطلبات موقع الويب الخاص بك.
-
هناك العديد من الأمثلة التي يمكن استخدامها لتوضيح الفرق بين continue و break ويمكننا استخدام لغة بايثون، وإليك بعض الأمثلة التوضيحية: مثال على continue: فرض أن لديك قائمة تحتوي على بعض الأرقام، وتريد طباعة جميع الأرقام في القائمة ما عدا الأرقام الزوجية. يمكن استخدام continue لتجاوز الأرقام الزوجية والانتقال إلى الرقم التالي في القائمة، كما يلي: numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] for num in numbers: if num % 2 == 0: continue print(num) في هذا المثال، يتم استخدام continue لتجاوز الأرقام الزوجية (2 و 4 و 6 و 8 و 10)، ويتم طباعة الأرقام الفردية (1 و 3 و 5 و 7 و 9). مثال على break: فرض أن لديك قائمة تحتوي على بعض الأرقام، وتريد البحث عن رقم معين في القائمة. يمكن استخدام break لإيقاف التكرار فور العثور على الرقم المطلوب، كما يلي: numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] search_num = 5 for num in numbers: if num == search_num: print("تم العثور على الرقم المطلوب") break في هذا المثال، يتم استخدام break لإيقاف التكرار فور العثور على الرقم المطلوب (5)، ويتم طباعة رسالة "تم العثور على الرقم المطلوب". بشكل عام، تستخدم continue و break في لغة بايثون لتحقيق هياكل التحكم في التكرار، ويمكن استخدامهما بشكل منفصل أو معاً لتحقيق النتائج المطلوبة.
-
تستخدم الأعداد المركبة بشكل واسع في الرياضيات، وخاصة في المجالات مثل الجبر والتحليل الرياضي والهندسة والفيزياء. وإليك بعض الطرق التي يتم استخدام الأعداد المركبة فيها: حل المعادلات: تستخدم الأعداد المركبة لحل المعادلات الجبرية التي لا تملك حلولاً حقيقية، مثل x ^ 2 + 1 = 0. الدوال التحليلية: تستخدم الأعداد المركبة لتعريف الدوال التحليلية ودراسة خواصها، والتي تعد دوال تمثل بأشكال متسلسلات القوى. وتعد الدوال التحليلية مهمة في العديد من مجالات الرياضيات والفيزياء. الهندسة: تستخدم الأعداد المركبة لتمثيل النقاط في الخط المركب، والذي يعد نظام إحداثي ثنائي الأبعاد حيث المحور الأفقي يمثل الجزء الحقيقي للعدد المركب والمحور الرأسي يمثل الجزء الخيالي. ويسمح هذا بدراسة الخصائص الهندسية للأشكال المختلفة في الخط المركب. الإشارات والأنظمة: تستخدم الأعداد المركبة في دراسة الإشارات والأنظمة، والتي تستخدم لنمذجة وتحليل مجموعة واسعة من الظواهر الفيزيائية، مثل الدوائر الكهربائية والاهتزازات الميكانيكية وأنظمة الاتصالات. الفيزياء الكمية: تستخدم الأعداد المركبة في دراسة الفيزياء الكمية، والتي هي فرع من الفيزياء يتعامل مع سلوك المادة والطاقة على المستوى الذري والنووي. وفي الفيزياء الكمية، تستخدم الأعداد المركبة لتمثيل الدوال الموجية، والتي تصف سلوك الجسيمات. تستخدم الأعداد المركبة في البرمجة في عدة مجالات، ومن أهمها: الرسوميات والألعاب: يتم استخدام الأعداد المركبة في برامج الرسوميات والألعاب لتمثيل النقاط والأشكال في الفضاء الثنائي والثلاثي الأبعاد. تحليل الإشارات: يتم استخدام الأعداد المركبة في تحليل الإشارات، مثل معالجة الإشارات الصوتية والإشارات الرقمية، حيث يتم استخدام الدوال المركبة لتمثيل الترددات والموجات. البرمجة العلمية: يستخدم الأعداد المركبة في البرمجة العلمية، حيث يتم استخدامها في تمثيل الأرقام العلمية وحساب العمليات المعقدة، مثل معادلات التفاضل والتكامل والمعادلات الفردية والتحويلات الفورية. تطبيقات الشبكات العصبية: تستخدم الأعداد المركبة في تطبيقات الشبكات العصبية، التي هي نماذج حوسبة تعتمد على الأساليب الحيوية للدماغ البشري، حيث يتم استخدام الدوال المركبة لتمثيل الوزن والتغطية في الشبكات العصبية. بشكل عام، تعد الأعداد المركبة أداة قوية في الرياضيات وتستخدم لحل المشاكل ونمذجة الظواهر في العديد من المجالات المختلفة.
- 4 اجابة
-
- 2
-
-
يمكن تحقيق هذه الوظيفة باستخدام JavaScript و CSS. يجب عليك إنشاء دالة تقوم بتدوير زر القائمة العلوية بمقدار 90 درجة عند الضغط عليه، ومن ثم استخدام CSS لتنفيذ الدوران. فيما يلي كيفية تحقيق هذه الوظيفة ملف index.css .rotate { transform: rotate(90deg); /* دوران الزر بزاوية 90 درجة */ } #toggler { transition: transform 0.3s ease-in-out; /* تحديد وقت الانتقال و التأثير المرئي */ } ملف index.js $("#toggler").click(function (event) { this.classList.toggle("rotate"); // إضافة هذا السطر فقط }); عند النقر مرة أخرى على الزر، يتم إزالة الصفة "rotate" وبالتالي يتم إعادة الزر إلى حالته الأولى.
-
يبدو أن هناك خطأ في تنسيق الكود. يجب أن يكون التعليمات الشرطية بمستوى الإزاحة المناسب كما تم الشرح في لتعليقات السابقة. يمكن حل هذه المشكلة عن طريق ترتيب التعليمات الشرطية بشكل صحيح، كما يلي: my_num= 6 user_num= int(input('inter your number: ')) if user_num > 0: if user_num== my_num: print('you win') elif user_num == my_num + 1 or user_num == my_num - 1: print('Hot') else: print('Cold') else: print('Invalid input') في هذا الكود، تم تنظيم التعليمات الشرطية بشكل صحيح. إذا قام المستخدم بإدخال عدد أكبر من صفر، يتم فحصه ومقارنته مع الرقم المحدد (6)، وإذا كانت الأرقام متطابقة يتم طباعة "you win"، وإذا كان الرقم الذي تم إدخاله يختلف عن الرقم المحدد بمقدار واحد، يتم طباعة "Hot"، وإذا كان الرقم بعيدًا عن الرقم المحدد بأكثر من واحد، يتم طباعة "Cold"، وإذا قام المستخدم بإدخال عدد أقل من صفر، فإنه يتم طباعة "Invalid input".
-
بالنسبة لإجابة السؤالين يمكن تلخيصها في مراجعة المشاريع التي قمت ببنائها وعتبر هذه الطريقة هي الأفضل والأسرع لتذكيرك بالمعلومات والمفاهيم التي قمت بدراستها ولكن يمكن تطويرها من خلال الخطوات التالية بالنسبة للأدوات والحزم يمكنك معرفتها من خلال المشاريع والتدريب عليها عن طريق إعادة بناء مشروع بنفس الحزم والمكتبات وإذا كان هناك بعض الإعدادات التي لا تتذكرها أو تريد الالإطلاع على المزيد من المعلومات يمكنك الذهاب للتوثيق الخاص بها مراجعة المشاريع التي قمت ببنائها يمكن أن تساعدك في تذكر المفاهيم التي تعلمتها سريعاً . يمكن أن تساعدك في تحديد المناطق التي يمكن تحسينها والعمل على تحسين مهاراتك في هذه المناطق (وقتها يفضل الإطلاع على الدروس التي تناقش هذه المفاهيم). لذلك ، يمكنك الاستفادة من كلا الخيارين. يمكنك إعادة مشاهدة الدروس التي تحتاج لمراجعتها (ستعرف ذلك عند مراجعة المشاريع ) إذا كنت بحاجة إلى تحسين فهمك للمفاهيم
-
كلا الخيارين يمكن أن يكونا جيدين لتعلم الـ Backend ولديهما فرص عمل كثيرة في السوق. لغة PHP هي واحدة من أشهر لغات البرمجة المستخدمة في تطوير الويب، وتطاري Laravel يعتبر واحداً من أشهر الإطارات العاملة على PHP. تعتبر PHP و Laravel مفيدة جداً في تطوير تطبيقات الويب والتجارة الإلكترونية، ولديها مجتمع كبير من المطورين والمستخدمين. بالإضافة إلى ذلك، معظم مزودي خدمة الاستضافة على الويب يدعمون PHP، مما يجعل من السهل نشر تطبيقاتك على الإنترنت. أما عن Node.js، فهي لغة برمجة تعتمد على JavaScript، وتستخدم لتطوير الويب وتطبيقات الويب في الوقت الحقيقي وتطبيقات الشبكات. Node.js توفر أداءً عاليًا في التعامل مع الأحداث والمهام غير المتزامنة، وتستخدم في الكثير من التطبيقات التي تعتمد على الوقت الحقيقي والتفاعل المستمر مع المستخدمين. بشكل عام، يعتمد الخيار الأفضل على نوع التطبيقات التي ترغب في تطويرها والميزات التي تحتاجها. إذا كنت ترغب في تطوير تطبيقات الويب الخاصة بالتجارة الإلكترونية أو الويب الثابتة، فقد تكون PHP و Laravel خيارًا جيدًا. وإذا كنت ترغب في تطوير تطبيقات الويب في الوقت الحقيقي أو تطبيقات الشبكات، فقد يكون Node.js خيارًا جيدًا. بشكل عام، كلا الخيارين يمكن أن يمنحك فرصًا جيدة في الحصول على وظيفة كمطورٍ Backend، ويوصى بتعلم أكثر من لغة برمجة وإطار عمل، مما يمكنك من فهم الاختلافات بينهما واختيار الأداة الأنسب لكل تطبيق. لذلك تلخيصاً إذا كان إختيار اللغة بناء على الفرص الموجودة بالسوق فيجب أن تطمئن أن الفرص الكثير لل php يقابلها عدد مطورين أكثر من مطورين node jd لذلك لا تقلق بالنسبة لفرص العمل
-
posts_count هو اسم عمود جديد سيتم إنشاؤه في نتائج الاستعلام لتخزين عدد المنشورات لكل مستخدم. COUNT(*) ستقوم بإرجاع عدد صفوف كل مستخدم، وهذا العدد سيمثل عدد المنشورات لهذا المستخدم. ولكن لا يوجد عمود باسم posts_count في جدول المنشورات الأصلي. هذا العمود سيتم إنشاؤه ضمن نتائج الاستعلام فقط لتخزين ناتج العد COUNT(*). بهذه الطريقة سنحصل على: - عمود user: وهو قيمة ID المستخدم من الجدول الأصلي - عمود posts_count: وهو العدد الإجمالي لمنشورات كل مستخدم، تم حسابه باستخدام COUNT(*) فالعمود posts_count مجرد اسم عمود مؤقت ضمن نتائج الاستعلام لا يوجد ضمن جدول البيانات الأصلي.
- 4 اجابة
-
- 1
-
-
إليك طريقة بسيطة للاستعلام عن أكثر المستخدمين نشراً للمنشورات في جدول المنشورات post الذي يحتوي على عمود user لتخزين قيمة ID المستخدم المرسل للمنشور: SELECT user, COUNT(*) AS posts_count FROM posts GROUP BY user ORDER BY posts_count DESC LIMIT 10; هذا الاستعلام سيقوم بالآتي: تجميع عدد المنشورات حسب قيمة عمود user حساب عدد المنشورات لكل مستخدم باستخدام COUNT(*) ترتيب النتائج تنازلياً حسب عدد المنشورات باستخدام ORDER BY posts_count DESC إرجاع أعلى 10 مستخدمين فقط باستخدام LIMIT 10 بهذه الطريقة سنحصل على قائمة بأكثر 10 مستخدمين نشاطاً في النشر مرتبة تنازلياً حسب عدد منشورات كل مستخدم.
- 4 اجابة
-
- 1
-
-
من المهم ملاحظة أن الراتب يختلف بشكل كبير بين الشركات والمناطق الجغرافية المختلفة. يمكن أن يتراوح راتب مبرمج واجهات أمامية مبتدئ تمامًا في القاهرة من 5,000 إلى 8,000 جنيه مصري شهريًا. ومع ذلك، قد يختلف الراتب اعتمادًا على حجم الشركة ومتطلبات الوظيفة. لا توجد فروق كبيرة في الرواتب بين شركات SaaS والشركات العادية. ولكن عادةً ما تكون الفرص للترقية والحصول على مكافآت مرتفعة أكثر في شركات SaaS نظراً لما تتميز به من نمو سريع. ربما يكون الراتب أقل مما كنت تتوقع ولكن حاول أن تبدأ بهذه الوظيفة وإن كان الراتب ليس كما تريد حيث أنك تعمل على تحسين مهاراتك في البرمجة وتنمية خبرتك في البرمجة. أهم شئ العمل على بناء سجل جيد: يجب عليك العمل على بناء سجل جيد وإظهار قدراتك وخبرتك في البرمجة.