كل الأنشطة
- الساعة الماضية
- 
	Ahmed Islam4 اشترك بالأكاديمية
- 
	هنا يوجد خطأ بسيط أنه في السهم العلوي يجب أن يتم القفر للأعلى وفي السهم السفلي أن ينزل إلى أسفل . يفضل أيضا إنشاء زر لتقليل السرعة . الأفضل هنا جعل زر المسافة للقفز وجعل زر السهم الأسفل يتوقف وحذف جزء السهم الأعلى. من المفترض هنا أن يتم دمج هذين الجزئين حيث سيكون شرط بداخل شرط وهو أولا عند الضعط على زر التلمحيات أن يتم وضع إذا وإلا معا . فإذا كان التلميحات أكبر من صفر يتم طباعة التلميح وإلا يتم إظهار الرسالة. يجب هنا إنهاء البرنامج وعدم جعله يعمل بعد ذلك.
- 
	Yahya Magdy2 اشترك بالأكاديمية
- 
	بالحكم اني كتبت عن لعبة الدبابات هذه لعبة اخرى وهي البحث عن الكنز اتمنى ان ترو الخوارزمية ١. بدء البرنامج ٢. انشاء( الخلفية، الشخصية، صندوق الكنز، نباتات سامة ، صناديق صحة ،وحش ،زر التلميح ) ٣.انشاء متغير موقع الكنز الذي قد تم اختياره بالشكل عشوائي على شكل (y,x) ٤.انشاء متغير السرعة=10 ٥. انشاء متغير الصحة =100 ٦. انشاء متغير التلميحات =2 . تظهر رسالة للاعب قبل بداية اللعبة تقول ( اهلا بك ايها الشجاع في رحلة البحث عن الكنز عليك ايجاد ذالك الكنز والحذر من كل من يمنعك وهناك صناديق الصحة لتكون حليفة لك حظا موفقا في رحلتك ) ٧.انشاء حلقة ٨.اذا تم الظغط على السهم العلوي توجه الى الامام بالسرعة ٩.ذا تم الظغط على السهم السفلي توجه الى الخلف بالسرعة ١٠.ذا تم الظغط على السهم الايمن توجه الى اليمين بالسرعة ١١.ذا تم الظغط على السهم الايسر توجه الى اليسار بالسرعة ١٢.ذا تم الظغط على زر نقطة زد السرعة بمقدار 10 ١٣. ذا تم الظغط على زر مسافة توقف ١٤. اذا تم الظغط على زر التلميحات يأتي اشعار الى اللاعب على صيغة ( بارد قليلا ، بارد جدا ، حار قليلا ، حار جدا) بناء على ( متغير )موقع الكنز وينقص عدد التلميحات -1 ١٥. اذا وصل عدد التلميحات الى صفر تأتي رسالة الى الاعب تقول (لقد انهيت تلميحاتك عيك الاعتماد على نفسك الان) ١٦. اذا اصبح الاعب عن بعد عشر خطوات من الحوش تظهر رسالة تقول ( اهرب انت في خطر ) ١٧. يتحرك الوحش على مسار يمين يسار فوق تحت ١٨. اذا لامس الاعب الوحش ينقص من الصحة 30 ويعكس الوحش ترتيب مساره ١٩.اذا لامس الاعب النبات السام ينقص من الصحة 20 ويختفي النبات الى مكان عشوائي ٢٠.اذا لامس الاعب صناديق الصحة يزيد الصحة 15 ويختفي الصندوق الى مكان عشوائي ٢١. اذا لامس الاعب صناديق الصحة وكانت الصحة =100 لاتؤثر عليه الصحة ويختفي الصندوق الى مكان عشوائي ٢٣.اذا كان الصحة =20 يأتي اشعار الى اللاعب ( احذر من فقدان دم اكثر انت على وشك الهلاك) ٢٤.اذا كان الصحة =0 تظهر شاشة للاعب فيها رسالة تقول لقد تم القضاء عليك حظا اوفر في المرات القادمة) ٢٥. اذا لامس الاعب لون الجدار (الحاجز) يتوقف عن الحركة ٢٦. اذا لامس الاعب الكنز يختفي الصندوق و تظهر شاشة فها رسالة تقول لقد انهيت المهمة ايها الشجاع اصبح الكنز من نصيبك) ٢٧. انه البرنامج
- 1 جواب
- 
	- 1
- 
					
						
					
							  
 
 
- 
	امير بني حسن اشترك بالأكاديمية
- 
	محمود محمد87 اشترك بالأكاديمية
- 
	Moamen Osama اشترك بالأكاديمية
- اليوم
- 
	Magdy Gamal اشترك بالأكاديمية
- 
	محمد الحريبي3 اشترك بالأكاديمية
- 
	اروى الغامدي اشترك بالأكاديمية
- 
	Aya Nayef اشترك بالأكاديمية
- 
	Hager Ahmed Elsandoby اشترك بالأكاديمية
- 
	انا من سوريا وخطي من شركة سيرياتيل , قمت بارسال كود التحقق الى الرقم +447312263267 ولكن فشلت عملية الارسال , اتصلت مع مركز الخدمة وراجعت الاعدادات وكلها صحيحة مع العلم ان الرسائل الدولية مفعلة عندي وقمت بارسال رسالة دولية الى رقم عماني للتاكد ووصل تقرير التسليم فورا. ارجو المساعدة
- 
	وعليكم السلام ورحمة الله وبركاته. نعم بالفعل توجد هناك عدة نماذج وخوارزميات OCR دقيقة وجيدة لإكتشاف لوحات السيارات التي تتضمن حروفا سواء عربية أو غربية ولكن بالطبع من الممكن أن تواجه بعض النماذج صعوبات في الأداء حسب جودة الصور واختلاف الخطوط واتجاه اللوحة وغيرها . أولا يمكنك إسنخدام نموذج تعلم عميق للتعرف على الحروف العربية (إذا أردت إكتشاف اللوحات العربيى) على لوحات السيارات وذلك ليأخذ في الاعتبار خصائص لوحات السيارات مثل الأبعاد الخطوط والألوان مما يرفع دقة التعرف بشكل ملحوظ. ويمكنك أيضا إستخدام نماذج مثل YOLOv4 و YOLOv5 وYOLOv7 لخطوة الكشف عن اللوحة لتحديد موقع اللوحات قبل تطبيق OCR على الحروف . وبعد ذلك يمكنك إستخدام مكتبة EasyOCR وTesseract OCR. والأفضل أن تقوم بتدريب النموذج بنفسك من خلال إستخدام مجموعات بيانات خاصة باللوحات التي تريد العمل عليها فمثلا للوحات المصرية توجد مجموعة بيانات "EALPR" يمكنك إستخدامها لتدريب النموذج على هذا الموضوع.
- 1 جواب
- 
	- 1
- 
					
						
					
							  
 
 
- 
	نعم إذا كنت ستعمل فقط كمصمم واجهات مستخدم فالأفضل دراسة ال UI/UX أما إذا كنت تريد العمل كمبرمج وجاهات أمامية وليس مصمم فليس ضروريا دراسة ال UI/UX . ويمكنك تعلمها بعد إنهاء الدورة مباشرة إذا أردت وإليك الإجابات التالية لمعرفة كيفية تعلمها :
- 
	Anees Alhakimi بدأ بمتابعة Ui ux design
- 
	هل تعلم ui Ux design مهم ومتى افضل وقت لتعلمه معا الدوره وجهات المستخدم وماهي الاشياء التي يجب تعلمها
- 1 جواب
- 
	- 1
- 
					
						
					
							  
 
 
- 
	أغلب الشركات والمشاريع الحرة ما زالت تعتمد على Node.js لأنه الأقدم والأكثر استقرارًا وانتشارًا. أما Bun.js فهو حديث وسريع جدًا، لكنه ما زال في مرحلة التطور، وعدد الشركات التي تستخدمه قليل مقارنةً بـ Node.js. أنصحك أن تبقى على اطلاع بـ Node.js معرفتك به ستفيدك كثيرًا في العمل الحر أو عند التقديم لوظائف.
- 
	إن فرص وإنتشار وظائف Node.js أكبر كثيرا حاليا من Bun.js لذلك ستجد أن الفرص الخاصة ب Bun قليلة وبالفعل إذا تركت Node.js فقد تخسر حاليا وقتك الذي عملت فيه على تعلم Node ومن الممكن أن تجد صعوبة قليلا في العثور على وظائف ل Bun . لهذا الأفضل عدم ترك Node.js تماما يمكنك البحث عن وظائف بها بينما تقوم بتعلم Bun حتى لا تخسر كثيرا.
- 
	انا تعلمت Bun.js وتركت Node.js هل بهي حالة لح اخسر شغل في شركات او عمل حر
- 2 اجابة
- 
	- 2
- 
					
						
					
							  
 
 
- 
	السلام عليكم, هل توجد نماذج ocr أو خوارزميات دقيقة وفعّالة يمكنها قراءة لوحات السيارات باللغة العربية و اللاتينية؟ ماذا عن البيانات. جربت عددا لا بأس به من النماذج لكنها كثيرا ماتفشل. و شكرا.
- 1 جواب
- 
	- 1
- 
					
						
					
							  
 
 
- 
	وعليكم السلام ورحمة الله وبركاته. توجد العديد من المواقع الشهيرة لذلك مثل Leetcode و codewars و codeforces و HackerRank وغيرها من المواقع الأخرى ويمكنك التدرج في مستوى صعوبة الأسئلة كما تريد. وإليك المزيد من المواقع في الإجابة التالية :
- 
	عماد شيخ العشرة بدأ بمتابعة مسائل برمجية بلغة الباثون
- 
	وعليكم السلام, يوجد مواقع متخصصة لهذا المجال وذلك لكي تتعلم هذه المسائل والأمر يعتمد على مستواك الحالي فمثلا يوجد موقع leetcode يهتم بمسائل الخوارزميات وهياكل البيانات لكنه صعب للمبتدئين حيث يجب عليك أن تتعلم بعض اساسيات الخوارزميات وهياكل البيانات قبل حل المشاكل. يوجد مواقع اسهل مثل موقع https://www.hackerrank.com وهو يساعد على حل المشاكل ايضا لكن هذه المواقع قد تحتاج إلى لغة إنجليزي وذلك لكي تستطيع فهم السؤال بشكل جيد. حدد مستواك الحالي وعلى اساسه حل المسائل التي تناسب وذلك لانه يوجد الكثير من المستويات.
- 
	سلام عليكم. هل يمكن لأحد أن يعطيني فكرة لمسائل برمجية بلغة البايثون ثم يقيمها لي.
- 2 اجابة
- 
	- 2
- 
					
						
					
							  
 
 
- البارحة
- 
	حليت مشكلة المشكلة كانت غريبة هي بسبب GitHub حيث في مستودع قمت برفعه قبل رفع على ريندر وبذالك الاكواد في جيت هب كانت localhost
- 
	اختبر المشروع على حاسوبك إذن، وقم بتبديل رابط قاعدة البيانات برابط atlas وقم بمحاولة تسجيل حساب جديد، هل يتم الأمر بشكل سليم؟
- 
	تمام حليت مشكلة
- 
	الخادم يعمل، في حال لا يعمل، فستحصل على رسالة خطأ عند زيارة الرابط: https://pinterest-clone-3ans.onrender.com هل قمت بتعيين قيم لمتغيرات البيئة بشكل صحيح على الاستضافة؟ وبالأخص رابط قاعدة البيانات على Atlas
- 
	
- 6 اجابة
- 
	- 1
- 
					
						
					
							  
 
 
- 
	الخادم يعمل لا مشكلة فهو يعرض رسالة hell bun عند زيارة الرابط، قمت بمحاولة التسجيل فحدث خطأ، ما هي الأخطاء التي تظهر في الـ logs على الاستضافة؟
- 
	انا انتهيت من مشروعي Fullstack بستخدام Bun.js Express react ورفعت مشروع على render واخدت رابط وحطيته ب fetch API وفي cors قبل رفع على ريندر انا حاطت رابط مشروع وMongoDB atlas IP عالمي ورفعت مشروع على نتليفاي بعد بنائه ولم يعمل خادم رابط خادم https://pinterest-clone-3ans.onrender.com رابط مشروع https://www-pinterest-clone.netlify.app/ import { useEffect, useState } from "react"; import toast from "react-hot-toast"; import "./profile.css"; import { FaDeleteLeft, FaPenClip } from "react-icons/fa6"; import { useNavigate } from "react-router-dom"; interface Image { _id: string; title: string; description: string; imageUrl: string; } const Profile = () => { const [images, setImages] = useState<Image[]>([]); const [loading, setLoading] = useState(false); const [modalOpen, setModalOpen] = useState(false); const [editingImage, setEditingImage] = useState<Image | null>(null); const [newTitle, setNewTitle] = useState(""); const [newDescription, setNewDescription] = useState(""); const [newFile, setNewFile] = useState<File | null>(null); const navigate = useNavigate(); const token = localStorage.getItem("token"); useEffect(() => { const token = localStorage.getItem("token"); if (!token) { toast.error("You must log in first"); navigate("/login"); return; } }); const fetchImages = async () => { if (!token) return; setLoading(true); try { const res = await fetch("https://pinterest-clone-3ans.onrender.com/api/image/imageme", { credentials: "include", method: "GET", headers: { Authorization: `Bearer ${token}` }, }); const data = await res.json(); setImages(data); } catch (err) { console.error(err); toast.error("Failed to load images"); } finally { setLoading(false); } }; useEffect(() => { fetchImages(); }, []); const handleDelete = async (id: string) => { if (!token) return; try { const res = await fetch(`https://pinterest-clone-3ans.onrender.com/api/image/${id}`, { credentials: "include", method: "DELETE", headers: { Authorization: `Bearer ${token}` }, }); const data = await res.json(); if (res.ok) { toast.success(data.success); setImages(images.filter((img) => img._id !== id)); } else toast.error(data.error); } catch (err) { console.error(err); toast.error("Failed to delete image"); } }; const openEditModal = (img: Image) => { setEditingImage(img); setNewTitle(img.title); setNewDescription(img.description); setModalOpen(true); }; const handleUpdate = async () => { if (!token || !editingImage) return; try { const res = await fetch( `https://pinterest-clone-3ans.onrender.com/api/image/${editingImage._id}`, { credentials: "include", method: "PUT", headers: { "Content-Type": "application/json", Authorization: `Bearer ${token}`, }, body: JSON.stringify({ title: newTitle, description: newDescription, }), } ); const data = await res.json(); if (res.ok) { toast.success(data.success); fetchImages(); setModalOpen(false); setNewTitle(""); setNewDescription(""); } else toast.error(data.error); } catch (err) { console.error(err); toast.error("Failed to update image"); } }; const handleUpload = async () => { if (!token || !newTitle || !newDescription || !newFile) { return toast.error("All fields are required for upload"); } if (newDescription.length > 60) { return toast.error("Maximum description: 60 characters"); } const formData = new FormData(); formData.append("title", newTitle); formData.append("description", newDescription); formData.append("image", newFile); try { const res = await fetch("https://pinterest-clone-3ans.onrender.com/api/image/upload", { credentials: "include", method: "POST", headers: { Authorization: `Bearer ${token}` }, body: formData, }); const data = await res.json(); if (res.ok) { toast.success(data.success); fetchImages(); setNewTitle(""); setNewDescription(""); setNewFile(null); } else toast.error(data.error); } catch (err) { console.error(err); toast.error("Failed to upload image"); } }; return ( <div className="profile-page"> <h2>Your Images</h2> <div className="upload-section"> <input type="text" placeholder="Title" value={newTitle} onChange={(e) => setNewTitle(e.target.value)} /> <input type="text" placeholder="Description" value={newDescription} onChange={(e) => setNewDescription(e.target.value)} /> <input type="file" onChange={(e) => setNewFile(e.target.files?.[0] || null)} /> <button onClick={handleUpload}>Upload Image</button> </div> {loading && <p className="no-images">Loading...</p>} {images.length === 0 && !loading && ( <p className="no-images">No images uploaded yet.</p> )} <div className="image-grid"> {images.map((img) => ( <div key={img._id} className="image-card"> <img src={img.imageUrl} alt={img.title} /> <h3>{img.title}</h3> <p>{img.description}</p> <div className="image-actions"> <button onClick={() => openEditModal(img)}> <FaPenClip /> Edit </button> <button onClick={() => handleDelete(img._id)}> <FaDeleteLeft /> Delete </button> </div> </div> ))} </div> {modalOpen && editingImage && ( <div className="modal"> <div className="modal-content"> <h3>Edit Image</h3> <input type="text" value={newTitle} onChange={(e) => setNewTitle(e.target.value)} /> <input type="text" value={newDescription} onChange={(e) => setNewDescription(e.target.value)} /> <div className="modal-actions"> <button onClick={handleUpdate}>Save</button> <button onClick={() => setModalOpen(false)}>Cancel</button> </div> </div> </div> )} </div> ); }; export default Profile; import express from 'express'; import dotenv from 'dotenv'; import cors from 'cors'; import { connectDB } from './utils/db'; import userRouter from './routes/user.routes'; import imageRouter from './routes/image.routes'; dotenv.config(); const app = express(); const port = process.env.PORT || 3000; connectDB(); app.use(cors({ origin: 'https://www-pinterest-clone.netlify.app', credentials: true, })); app.use(express.json()); app.get('/', (req, res) => { res.send('Hello Bun!'); }); app.use('/api/auth', userRouter); app.use('/api/image', imageRouter); app.listen(port, () => { console.log(`Server is running on port ${port}`); });
- 6 اجابة
- 
	- 1
- 
					
						
					
							  
 
 
- 
	نعتذر لكِ عن أي إنزعاج أثناء تواجدك بالأكاديمية، قمت بتفقد الأمر ومنصة الأكاديمية تعمل بشكل سليم وسريع. هل لديكِ إضافة مانع إعلانات في المتصفح لديكِ؟ أحيانًا تسبب مثل تلك الإضافات مشاكل لمشغل الفيديو بالأكاديمية لسبب ما، لذا استثني الأكاديمية من المواقع التي تعمل عليها الإضافة، بمعنى ضعي الموقع في قائمة white list. أيضًا هل الإنترنت لديكِ مستقر؟ فربما يوجد مشكلة به، للتأكد في حال المشكلة تظهر على الهاتف أيضًا إذن المشكلة من شبكة الإنترنت لديك، حاولي تعديل إعدادات الـ DNS للشبكة لديكِ إلى جوجل أو Cloudflare والأداة التالية جيدة حمليها واختاري من القائمة الـ dns ثم apply https://dnsjumper.net أو ربما المشكلة في المتصفح، حاولي تحديثه أو استخدمي متصفح آخر.
- 
	للأسف الموقع سيء جداً وبطيء ويحتاج كل شوي احذف الكوكيز والكاش عشان يفتح اضافه لذلك المشكله ظاهره أمامكم أرجو الحل في اسرع وقت ، يضيع وقتي وانا كل شوي اسوي refresh
- 1 جواب
- 
	- 2
- 
					
						
					
							  
 
 
- 
	هذا السؤال تمت الإجابة عليه من قبل، أرجو مراجعة الأجوبة من هنا:
- 
	بعد إتمام أربعة مسارات على الأقل من الدورةأو إنهائها بالكامل يجب أن تقوم برفع المشاريع التي أنجزتها خلال الدورة إلى حسابك على GitHub بعد ذلك أرجو منك التواصل مع مركز المساعدة وإبلاغهم برغبتك في التقدم إلى الاختبار موضحا روابط المشاريع التي رفعتها على GitHub. بعد إرسال الطلب انتظر حتى تتم مراجعة مشاريعك، وسيتم الرد عليك لتحديد موعد المقابلة، والتي تتضمن: محادثة صوتية تتعلق بالدورة والمشاريع التي نفذتها. إنجاز مشروع جديد مرتبط بما تعلمته خلال الدورة. بعد تسليم المشروع تعقد محادثة صوتية ثانية مدتها 30 دقيقة لمناقشة ما نفذته والإجابة عن أسئلة المدرّب.
- 
	الرجاء التواصل مع مركز المساعدة واخبارهم انك تريد ان تختبر يمكنك الوصول اليه عن طريق الرابط : https://support.academy.hsoub.com/conversations كما انه قد يتاخر الرد بضعة ايام حيث يوجد ضغط على مركز المساعدة.

 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
                     
                     
	 
                     
	