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

لوحة المتصدرين

  1. محمد عاطف17

    محمد عاطف17

    الأعضاء


    • نقاط

      8

    • المساهمات

      4943


  2. Ali Ahmed55

    Ali Ahmed55

    الأعضاء


    • نقاط

      4

    • المساهمات

      1663


  3. زمزم بنت يوسف

    زمزم بنت يوسف

    الأعضاء


    • نقاط

      2

    • المساهمات

      25


  4. محمود سعداوي2

    محمود سعداوي2

    الأعضاء


    • نقاط

      2

    • المساهمات

      614


المحتوى الأكثر حصولًا على سمعة جيدة

المحتوى الأعلى تقييمًا في 02/15/25 في كل الموقع

  1. السلام عليكم طيب اي المكتبه دي collections في باثيون واي علاقتها بهياكل البيانات ؟
    2 نقاط
  2. السلام عليكم ورحمه الله وبركاته محتاج كود php لعمل نسخه احتياطيه من قاعده البيانات وكذلك كود لرفع هذه النسخه علي قاعده البيانات مع شرح الكود اذا تكرمتم ولكم خالص التحيه والتقدير
    1 نقطة
  3. السلام عليكم لدي مشكلة في التنقل عند إنشاء المسارات المحمية. بعد تسجيل الدخول وتخزين بيانات المستخدم في localStorage، لا يتم توجيهي إلى لوحة التحكم (dashboard). إليك الكود الخاص بي، بما في ذلك App.js، وroutes.js، وLoginForm.js. علماً بأنه قبل تطبيق المسارات المحمية، كان كل شيء يعمل بشكل طبيعي. App.js function App() { return ( <Router/> ); } routes.js const user = JSON.parse(localStorage.getItem("user")) const router = createBrowserRouter([ { path: "/", element: !user ? <LoginPage /> : <Navigate to="/dashboard" /> }, { path: "/dashboard", element: user ? <DashboardLayout /> : <Navigate to="/" />, children: [ { index: true, element: <Dashboard /> }, ... ] } ]); export default function Router() { return <RouterProvider router={router} />; } LoginForm.js const LoginForm = () => { const navigate = useNavigate(); const { formData, handleChange } = useForm({ unique_identifier: "", password: "", }, ["unique_identifier"]) const { mutate, isPending, isError, error } = useLoginMutation(); const submitHandler = async (e) => { e.preventDefault(); mutate( formData, { onSuccess: () => navigate("/dashboard") } ); }; return ( <> {isError && <Alert message={error} />} .... My Form .... </> ); }; أعتقد أن المشكل يتعلق بعدم إعادة تحديث الحالة (state) عند تسجيل الدخول، مما يمنع إعادة توجيه المستخدم إلى لوحة التحكم (dashboard). لكن أعتقد أنه ليس من الجيد إضافة تطبيقات لإدارة الحالة مثل zustand. أرجو المساعدة لأجد الحل الأنسب.
    1 نقطة
  4. السلام عليكم أحتاج إلى مساعدة هنا احاول اختبار فينكشن update ، لغيرت الايميل والصورة ولكن لم يتم تحديث البيانات في قاعدة البيانات ما هو سبب؟ أرفق لكم صورة من postman و صورة لكود ... ما هو الخطأ؟
    1 نقطة
  5. لا داعي للشكر . وإياكم اللهم آمين . هذه مشكلة في postman بسبب أنه إذا أردنا إرسال بيانات من خلال طلب PUT أو PATCH يجب أن يتم إرسالها من خلال x-www-form-urlencoded : ولكن x-www-form-urlencoded لا تدعم إرسال ملفات ولهذا يمكننا إرسال الطلب ك POST ولكن نضيف ال _method بنوع الطلب الذي نريده سواء PUT أو PATCH و سيتم إرسال البيانات دون أى مشاكل وسيستطيع لارافل التعرف على نوع الطلب من خلال ال _method. وهذه المشكلة شائعة في Postman
    1 نقطة
  6. صار الآن الحمدلله ، شكرا لك جزاك الله خيرا عظيما لو سمحت ممكن تشرح لي لماذا فعلنا هكذا؟
    1 نقطة
  7. من الممكن أن المشكلة في postman لنحاول إرسال الطلب من نوع POST اي يجب عليكي تغير PUT إلى POST وإضافة : _method بقيمة PUT في البيانات هكذا :
    1 نقطة
  8. إذا لنقم بطريقة إرسال الأحداث مع useState لأن ال localstorage تغيرها لا يؤدي إلى تحديث حالها المكونات. يرجى إستبدال ملف routes.js بالتالي : const router = (user) => createBrowserRouter([ { path: "/", element: !user ? <LoginPage /> : <Navigate to="/dashboard" /> }, { path: "/dashboard", element: user ? <DashboardLayout /> : <Navigate to="/" />, children: [ { index: true, element: <Dashboard /> }, ] } ]); export default function Router() { const [user, setUser] = useState(JSON.parse(localStorage.getItem("user"))); useEffect(() => { const handleStorageChange = () => { setUser(JSON.parse(localStorage.getItem("user"))); }; window.addEventListener('storage', handleStorageChange); return () => { window.removeEventListener('storage', handleStorageChange); }; }, []); return <RouterProvider router={router(user)} />; } والآن في ملف LoginForm.js نقوم بإرسال الحدث بعد حفظ البيانات في ال localstorage هكذا : const submitHandler = async (e) => { e.preventDefault(); mutate(formData, { onSuccess: (data) => { localStorage.setItem("user", JSON.stringify(data.user)); window.dispatchEvent(new Event("storage")); navigate("/dashboard"); } }); };
    1 نقطة
  9. لم يتغير شيء كما أني قمت بأضافة البيانات إلى الذاكرة المحلية للمتصفح بالطريقة التالية export const useLoginMutation = () => { return useMutation({ mutationFn: async (data) => await loginApi(data), onSuccess: (data) => { localStorage.setItem("user", JSON.stringify(data)) console.log("User stored in localStorage:", data); }, }); };
    1 نقطة
  10. حاولت كثيرا في ايجاد حل لاضافة المنتج الى سلة الشراء ورفع صورة ولم استطيع فعل ذلك import axios from "../config/axios"; import { GET_PRODUCT_URL,ADD_TO_CART } from "../config/urls"; import { useEffect, useState } from "react"; import "../styles/getProduct.css"; import Navbar from "./navbar/navbar"; import { useParams } from "react-router-dom"; function GetProduct() { const [product, setProduct] = useState(""); const [image, setImage] = useState(""); const [title, setTitle] = useState(""); const [description, setDescription] = useState(""); const [price, setPrice] = useState(""); const id = window.location.pathname.split("/")[2]; console.log(id); const cartid = useParams() useEffect(() => { getProduct(); }, []); const headers = { userId:localStorage.getItem("id"), productId:id, quantity:1 } const addToMyCart = async () => { try { const tokenValue = localStorage.getItem("token"); let token = JSON.parse(tokenValue); await axios .post(ADD_TO_CART ,{headers:headers}, { headers: { Authorization: token, }, } ) .then((res) => { console.log(res); }); } catch (e) { console.log(e); } }; const getProduct = async () => { try { const tokenValue = localStorage.getItem("token"); let token = JSON.parse(tokenValue); await axios .get(GET_PRODUCT_URL + "/" + id, { headers: { Authorization: token, }, }) .then((res) => { console.log(res); setProduct(res.data); setImage(res.data.image); setTitle(res.data.title); setDescription(res.data.description); setPrice(res.data.price); }); } catch (e) { console.log(e); } }; return ( <> <Navbar /> <div class="container "> <div class="grid text-center"> <div class="row align-items-start"> <div class="col"> <div class="card-header">Featured</div> <img src={image} class="card-img-top" alt="..." height="200px" /> </div> <div class="col" style={{ textAlign: "left" }}> <div class="card-body mt-4"> <h5 class="card-title">{title}</h5> <p class="card-text" style={{ width: "50%" }}> {description} </p> </div> </div> <div class="col edit-col-3"> <div className="edit-div"> <p>{price}$</p> <p>FREE delivery</p> <small class="text-body-secondary d-flex float-end"> <button class="btn" onClick={() => { addToMyCart() }} > <i class="fa-solid fa-cart-shopping" style={{ color: "deeppink" }} ></i> addToCart </button> </small> </div> </div> </div> </div> </div> </> ); } export default GetProduct; وفي الواجهة الخلفية كل شيء يعمل على مايرام test.zip
    1 نقطة
  11. الخطأ الأساسي لديك أنك تقوم بمحاولة إرفاق عنوان الصورة التي تحاول رفعها من الواجهة الأمامية وهذا خاطئ . حيث لا يجب إرسال عنوان بل يجب إرسال الملف نفسه من الواجهة الأمامية لتستطيع حفظ الملف من خلال الواجهة الخلفية. في ملف frontend\src\components\createProduct.js سطر 20 يجب إرسال ال image وليس req.file.path حيث لا يوجد ما يسمى req في الواجهة الأمامية وأيضا المتغير لم تقم بتمريره لهذا يحدث خطأ أنك تحاول إستخدام متغير req فارغ . لهذا يجب عليك إستبدال السطر بالتالي : formData.append('image', image); بعد ذلك في سطر 43 يرجى وضع الملف مباشرة وليس العنوان url هكذا : setImage(e.target.files[0]); بعد ذلك في سطر 52 يرجى إستبداله بالتالي لتظهر الصورة في النموذج form حينما تقوم برفعها : <img src={image ? URL.createObjectURL(image):""} style={{ margin: "0 auto", width: "25%" }} /> الآن تم حل مشكلة الواجهة الأمامية . توجد مشكلة في الواجهة الخلفية في ملف backend\routes\index.js حيث في سطر 26 انت تحاول إستقبال الملف بإسم file ولكنك في الواجهة الأمامية قمت بإرساله من خلال إسم image وليس file لذلك يمكنك إما تغيره هنا أو في الواجهة الأمامية . ويمكنك تغيره هنا هكذا : router.post("/create-products",upload.single("image"),isLoggedIn,productController.createProduct); اما بخصوص الإضافة إلى cart فأنت في الواجهة الأمامية تقوم بإرسال البيانات في ال headers وهذا خاطئ حيث يجب إرسالها في ال body وأنت تستقبلها من ال body في الواجهة الخلفية.وأيضا يجب أن تقوم بعمل parse للبيانات التي تقوم بإحضارها من ال localStorage . لهذا في ملف frontend\src\components\getProduct.js سطر رقم26 يرجى إستبداله بالتالي : userId: JSON.parse(localStorage.getItem("id")), وسطر 39 يجب إستبداله بالتالي : .post(ADD_TO_CART ,headers, ولقد قمت بإرفاق الملفات لك بعد التعديل . index.js createProduct.js getProduct.js
    1 نقطة
  12. وعليكم السلام ورحمة الله وبركاته. أعتقد من خلال بعض التعليقات على منصات عديدة أنه في مقابلات العمل في شركات FAANG يُطلب منك كتابة الكود في محرر نصوص بسيط مدمج ضمن النظام الداخلي للشركة، والذي عادةً أيضاً لا يسمح بتشغيل الكود مباشرةً. والهدف من ذلك هو تقييم قدرتك على التفكير النقدي والمنطقي وكيفية تعاملك مع المشكلات التقنية في بيئة لا تعتمد على الأدوات الحديثة لتصحيح الأخطاء.
    1 نقطة
  13. وعليكم السلام ورحمة الله وبركاته. إن collections هي وحدة (module) مدمجة في بايثون. توفر لك هياكل بيانات متقدمة ومحسنة مقارنة بالأنواع الأساسية مثل القوائم (list) و القواميس (dict) و المجموعات (set). وهذه الوحدة مرتبطة بشكل كبير بهياكل البيانات لأنها توفر لك نظام حاويات تخزن بها البيانات و التي ستسهل عليك التعامل مع البيانات بطرق أكثر كفاءة وفعالية. ومن هياكل البيانات التي توفرها لك : namedtuple : نستخدمها لإنشاء tuple بأسماء حقول مما يجعل الوصول إلى العناصر أكثر وضوحا بدلا من استخدام الفهرس والتعامل مع الارقام. deque : هي قائمة ذات طرفين تسمح بإضافة وحذف العناصر من البداية والنهاية بكفاءة وبسرعة دون الحاجة لإستخدام حلقات التكرار أو تغيرها يدويا. Counter : نستخدمها لحساب تكرار العناصر في قائمة أو أي كائن قابل للتكرار حيث تقوم بإنشاء قاموس مكون من المفاتيح وهي القيم الفريدة في البيانات و قيمة تلك القواميس هي عدد تكرار تلك البيانات. وإليك التوثيق الرسمي لها لمزيد من التفاصيل والدوال التي تقدمها لك : https://docs.python.org/3/library/collections.html
    1 نقطة
  14. وعليكم السلام ورحمة الله وبركاته. الحزمة collections توفر أنواع بيانات متقدمة تُساعد على تحسين الأداء مقارنةً بالهياكل الأساسية مثل القوائم والقواميس. من أهم ما توفره المكتبة: Counter تُستخدم لعدّ العناصر داخل حاوية (مثل قائمة) وإرجاع عدد كل عنصر. defaultdict نوع من القواميس يُعيّن قيمة افتراضية للمفاتيح غير الموجودة تلقائيًا. OrderedDict قاموس يحتفظ بترتيب الإدخال الذي تم إضافة العناصر به. namedtuple تُتيح إمكانية الوصول للعناصر عن طريق أسماء وليس فقط بواسطة الفهارس. هذه الهياكل تُعد تطويراً على هياكل البيانات التقليدية وتُستخدم لتحسين تنظيم الكود. https://docs.python.org/3/library/collections.html
    1 نقطة
  15. وعليكم السلام ورحمة الله وبركاته. المشكلة الأولي أنك لا تقوم بحفظ بيانات المستخدم في localStorage عند تسجيل الدخول . ولذلك عند إعادة التوجيه إلى dashboard لا يتم العثور على user في localStorage ويتم إعادة التوجيه مرة أخرى إلى login . لهذا يجب عليك إستبدال الكود السابق بهذا الكود والذي نقوم فيه بتخزين بيانات المستخدم : const submitHandler = async (e) => { e.preventDefault(); mutate(formData, { onSuccess: (data) => { localStorage.setItem("user", JSON.stringify(data)); navigate("/dashboard"); } }); }; وتأكد من أن المتغير data هو بيانات المستخدم لديك . وإذا كانت البيانات بداخل كائن أخر بداخل data مثل data.user تأكد من حفظ data.user حينها. يجب أن يحل ذلك المشكلة إذا ظلت المشكلة أخبرني وذلك لنقوم بتجربة حل إنشاء حدث لإعادة تحديث الحالة.
    1 نقطة
  16. تم بناء فورم html,css,js بشكل طبيعي لكن عند الضغط على "إرسال" تظهر رسالة"TypeError: Failed to fetch" بهذا الشكل:
    1 نقطة
  17. هذا بسبب أنك تحاول إرسال البيانات إلى الخادم ولكنه لم يتم الوصول إلى الخادم وهذا بسبب إما أنه يوجد مشكلة لديك في الإنترنت أو أن الخادم لا يعمل . أوحدثت مشكلة أثناء تنفيذ طلبك . يرجى فتح نافذة network في أدوات المطور من خلال الضغط على CTRL + SHIFT + I وإختيار نافذة network : بعد ذلك قم بالضغط على زر send message مرة أخرى وستجد الطلب يظهر هنا ويمكنك رؤية سبب الخطأ. يرجى إرفاق صورة للطلب لديك في نافذة network مع إرفاق الكود لمساعدتك.
    1 نقطة
  18. السلام عليكم اثناء تدريب شبكه عصبيه لمهام التصنيف اركز فقط علي accuracy - val_accuracy او اتجاهل تمام الval_loss - loss ؟
    1 نقطة
  19. مرحبًا علي، رغم أنه يجب أن يكون هناك توافق بين الاثنين، إلا أن ال loss قد يعطيك فكرة عن بعض المشاكل التي قد لا توضحها ال accuracy. أحد أهم هذه المشاكل هو التوقع بدون مقدار ثقة عالية من النموذج، مثلًا في حال كنا نقوم بمهمة تصنيف ثنائي لنفترض حالة متطرفة بأن النموذج توقع كل الأصناف التي هي 1 عن طريق وضع احتمال 0.51 و كل الأصناف التي هي 0 عن طريق وضع احتمال 0.49. في هذه الحالة ستكون الدقة 100% و لكن الخطأ مرتفع جدًا بسبب أن النموذج غير واثق من نتائجه و أي تغيير طفيف في الدخل قد يؤدي إلى تغير الخرج بين الصنفين. لذلك دائمًا أبقي نظرك على كليهما. تحياتي.
    1 نقطة
  20. هنا نحن في أكاديمية حسوب لا نقوم بالإجابة على أسئلة الإختبارات أو التقيمات ولكن يمكننا أن ندلك على طريقة الحل. أولا بالنسبة إلى توسيط العناصر في الشاشة فيمكنك إستخدام flexbox لتستطيع بناء عناصر متجاوبة وتوسيطها في أى حجم للشاشة ويمكنك قراءة الدرس التالي حول كيفية إستخدام flexbox : أما بخصوص المؤشر فتوجد خاصية في css تسمي caret-color يمكنك قراءة كيفية إستخدامه من خلال موسوعة حسوب على الرابط التالي : الخاصية caret-color ولتستطيع إنشاء border يحوى لونين يمكنك إستخدام الدالة linear-gradient()‎ في css مع الخاصية border-image لتحقيق ذلك ويمكنك قراءة كيفية إستخدام تلك الخاصيتين من خلال موسوعة حسوب على الرابط التالي : الدالة linear-gradient()‎ الخاصية border-image يمكنك محاولة حل التقيم بنفسك وإخبارنا بالكود الذي توصلت إليه .
    1 نقطة
  21. أولاً عند إجراء أية تعديلات في موقعك، فلا تتوقع أن تظهر فورًا في جوجل، فالأمر بحاجة إلى وقت. ثانيًا توجه إلى google search console واختر موقعك ثم انتقل إلى Sitemaps في القائمة الجانبية، وأدخل مسار ملف sitemap وانقر على Submit. ثم استخدم أداة فحص URL وأدخل بها رابط جديد، هل هناك استجابة سليمة؟ بعد ذلك قم بطلب أرشفة بعض الروابط من خلال نفس الأداة، وفي حال الروابط الجديدة لا يتم أرشفتها خلال 3 أيام مثلاً، وظهرت لك أخطاء في صفحة الأرشفةgoogle search console، إذن يوجد مشكلة تقنية بالموقع. إن كانت الأخطاء غير واضحة، حاول تعديل قواعد إعادة الكتابة في .htaccess: RewriteEngine On RewriteRule ^Blog/article_Weather/(.*)-(\d+)$ /Blog/article_Weather.php?id=$2 [L,QSA,NC] RewriteCond %{THE_REQUEST} /Blog/article_Weather\.php\?id=([0-9]+) [NC] RewriteRule ^ /Blog/article_Weather/%1? [R=301,L,NE] Blog/ إلى المسار ليتوافق مع هيكل الموقع، واستخدام NE (No Escape) للحفاظ على الترميز الصحيح للأحرف الخاصة. السطر الأول هو لإعادة كتابة الرابط الجميل إلى الملف PHP، والثاني لإعادة التوجيه الدائم من الرابط القديم إلى الجديد ثم تفقد الروابط العربية والتأكد من أنها مُرمَّزة بشكل صحيح من خلال استخدام rawurlencode() عند إنشاء الـ slugs. function createSlug($text) { $text = preg_replace('/[^\p{Arabic}\p{L}\p{N}\s]/u', '', $text); $text = str_replace(' ', '-', $text); $text = trim($text, '-'); return rawurlencode(mb_strtolower($text)); } أيضًا التحقق من ملف robots.txt، لنتأكد من أنه لا يمنع الزحف إلى صفحات المقالات: User-agent: * Allow: / Disallow: /admin/
    1 نقطة
  22. لا مشكلة لو قمت بتنفيذ تصميم من نفسك، المطلوب هو تنفيذ المشروع المطلوب بتصميم مقبول، ومن المفترض أنك خلال الدورة تعلمت كيف يكون شكل الموقع والتصميم الخاص به وأشكال الأقسام. ولمساعدتك أنصحك بالإطلاع على المقالات التالية: ثم نأتي لخطوة استلهام التصميم، والتي تتطلب تغذية بصرية لإختيار أشكال الأقسام في موقعك من عدة تصاميم مختلفة أي تجميع التصميم من خلال عدة تصاميمـ، وقد تصادف تصميم مناسب للفكرة التي تريد تنفيذها ولا مشكلة في ذلك لكن حاول التعديل عليه قليلاً أو ذكر أنك لم تقم بتصميم الجزء الخاص بالـ UI/UX بل كتبت الكود فقط لحفظ الحقوق، وستجد مواقع كثيرة لاستلهام التصميم هنا: وبخصوص الألوان أنصحك بالإعتماد على الموقع التالي في البداية فهو يوفر لك قوالب للألوان لتختار من بينها: https://www.happyhues.co/ والموقع التالي أيضًا: https://coolors.co/palettes/trending ومع الوقت ستتحسن لديك مهارة التصميم من خلال التغذية البصرية والتطبيق، ولكن أنصحك بتعلم أساسيات تصميم واجهة المستخدم فيما بعد فهو أمر ضروري لمطور الواجهات الأمامية، وذلك من خلال القنوات التالية: Ahmad Sekmani Anas Rafaat | أنس رأفت وستجد معلومات مفيدة هنا أيضًا: وإذا كان لديك أي استفسار بخصوص مشروع التخرج وتريد التواصل مع المدرب المسؤول عن مشروعك، فتستطيع التحدث مع مركز المساعدة في أكاديمية حسوب.
    1 نقطة
×
×
  • أضف...