-
المساهمات
267 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
1
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو El Sayed El Tohamy
-
السبب في الخطأ أن الوظيفة face_encodings تنتظر منك إعطاءها صورة ثلاثية القنوات أي ملونة ولكنك تعطيها صورة أحادية اللون لذلك جرب تغير السطر small_frame = cv2.resize(frame, (0, 0), fx=0.25, fy=0.25) # بهذا السطر small_frame = cv2.cvtColor(cv2.resize(frame, (0, 0), fx=0.25, fy=0.25), cv2.COLOR_GRAY2RGB)
- 23 اجابة
-
- 1
-
سبب وجود متغيرين هو أن الوظيفة تعود بقيمتين، لاحظ أن البايثون يستطيع تعريف أكثر من متغير في نفس السطر، عن طريق سرد عدد من المتغيرات مفصولة بفاصلة، ثم علامة = ثم سرد عدد من القيم يناظر المتغيرات مثل المثال التالي: # تعريف ثلاث متغيرات في ثلاث أسطر firstName = 'Ahmed' lastName = 'Mohammed' age = 25 # تعريف نفس الثلاث متغيرات ولكن بسطر واحد firstName, lastName, age = 'Ahmed', 'Mohammed', 25 # طريقة أخرى لتعريف ثلاث متغيرات في نفس السطر firstName, lastName, age = ['Ahmed', 'Mohammed', 25] كذلك يمكنك تعريف ثلاث متغيرات في سطر واحد عن طريق وظيفة تعود بقائمة def GetData(): return ['Ahmed', 'Mohammed', 25] firstName, lastName, age = GetData() ما الخطأ الذي يظهر عند تنفيذ هذا السطر face_encodings = face_recognition.face_encodings(rgb_small_frame, face_locations)
- 23 اجابة
-
- 1
-
من ناحية الكلاس والتوريث لا توجد مشاكل بالكود، ولكن هناك بعض الملاحظات الطفيفة لمعالجة بعض المشاكل، أولًا: في أزرار الأوامر يجب تغيير المعامل command ليكون بالشكل التالي: #self.button1 = customtkinter.CTkButton(self, text="Open File", font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"),command=App.LoadFile) self.button1 = customtkinter.CTkButton(self, text="Open File", font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"),command=lambda: App.LoadFile(self)) #self.button2 = customtkinter.CTkButton(self, text="Open File", font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"),command=App.LoadFile1) self.button2 = customtkinter.CTkButton(self, text="Open File", font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"),command=lambda: App.LoadFile1(self)) #self.button2.grid(row=0, column=0, padx=(10, 10), pady=(10, 10), sticky="e") # كذلك تغيير قيمة المعامل # row # لإظهار الزر بالصف الثاني self.button2.grid(row=1, column=0, padx=(10, 10), pady=(10, 10), sticky="e") تم تجربة الكود بعد التعديلات، ويعمل بشكل صحيح، وتم إعطاؤه ملف إكسيل فعرض في المخرجات: ['Sheet1']
-
بشكل عامٍ، عندما تريد تطبيق شيء معين على كل الصور فستحتاج بالتأكيد لإنشاء حلقة تكرارية، فيمكنك تطبيق ما تريده مباشرة في نفس الحلقة التي تستخدم لتحميل الملفات، أو يمكنك إنشاء حلقة جديدة بعد هذه الحلقة.
-
في البداية، أطمئنك أن هذا شيء طبيعي، فالعالِم كلما ازداد علمًا اكتشف أنه زاد جهلًا، ذلك لأنه عندما يتعلم معلومة يكتشف أنه يجهل مقابلها ألف معلومة، لذلك يقال: "يظل العالِم عالمًا إلى أن يقول قد علمت، فقد جهل" أما من الناحية التقنية، فبالتأكيد التقدم الجنوني الذي نعيشه يرهق أصحاب الخبرة، فما بالك بالمبتدئين. إذّا، كيف يتجنب الإنسان التشتت؟ أولًا: الحصول على العلم من مصادر موثوقة، تقدم خدمة متكاملة مدعومة بالتدريب العملي. ويوجد بأكاديمية حسوب دورات رائعة يمكن الاستفادة منها. ثانيًا: لابد لابد لابد - وكررتها للتأكيد - أن يكتسب الشخص مهارة التعلم الذاتي، لأن التطور جنوني كما نعلم، وبالتالي إن انتظرت من يعطيك المعلومة فستتأخر كثيرًا. ثالثًا: خذ معلومة عن كل تخصص، ولكن تخصص في شيء واحد. رابعًا: وهذه النقطة هامة جدًا للمبتدئين، لا تعمل بمفردك في البداية، ابحث عن فريق أو شركة ليكون لك قائد يدعمك ويرشدك، وكذلك لاكتساب مهارات العمل الجماعي والتواصل. كذلك إذا بدأت في شركة صغيرة أو متوسطة يجب عليك الطموح للانتقال لشركة أعلى، لأن الشركات الصغيرة أو المتوسطة في أغلب الأحيان يغلب عليها طابع الهيمنة الفردية لصاحب المؤسسة أو أقدم الأشخاص بها. خامسًا: اللغة الإنجليزية هامة، ليس مطلوبًا منك أن تكون أجنبيًا، ولكن على الأقل تستطيع قراءة الكتب، فهم الفيديوهات ذات اللغة الواضحة، تستطيع عرض أفكارك باللغة الإنجليزية. أخيرًا، ما سبق كله أخذ بالأسباب، ولا ننس الاستعانة بالله فهو الموفق.
- 2 اجابة
-
- 1
-
هذه هي الشيفرات كاملة # استيراد المكتبات اللازمة import customtkinter import tkinter as tk app = customtkinter.CTk() entry = customtkinter.CTkEntry(app) # ربط عمليتي النسخ واللصق باختصارات لوحة المفاتيح entry.bind("<Control-c>", lambda e: entry.event_generate("<<Copy>>")) entry.bind("<Control-v>", lambda e: entry.event_generate("<<Paste>>")) entry.pack() app.mainloop() ملحوظة: افتراضيًا تدعم أداة الإدخال Entry عملية القص، والنسخ، واللصق تلقائيًا باستخدام اختصارات لوحة المفاتيح دون الحاجة لكتابة هذه الشيفرات، لكن في حالة نظام التشغيل لا يدعمها يمكننا استخدام هذه الشيفرات. أما إذا كنت تريد إظهار قائمة منبثقة (تظهر بالنقر اليمين) وتظهر بها هذه الأوامر، يمكنك استخدام المثال التالي # Import the customtkinter and tkinter modules import customtkinter import tkinter as tk window = tk.Tk() entry = tk.Entry(window) entry.pack() # إنشاء القائمة المنبثقة (بالنقر الأيمن) وإضافة ثلاثة عناصر لها popup_menu = tk.Menu(window, tearoff=0) popup_menu.add_command(label="Cut", command=lambda: entry.event_generate("<<Cut>>")) popup_menu.add_command(label="Copy", command=lambda: entry.event_generate("<<Copy>>")) popup_menu.add_command(label="Paste", command=lambda: entry.event_generate("<<Paste>>")) # هذه الوظيفة لإظهار القائمة المنبثقة مكان النقر باليمين def show_popup_menu(event): popup_menu.post(event.x_root, event.y_root) # ربط القائمة المنبثقة بحدث النقر بالزر الأيمن entry.bind("<Button-3>", show_popup_menu) window.mainloop()
- 4 اجابة
-
- 1
-
تريد تمكين وظائف النسخ واللصق من وإلى أداة Entry، بمعني إمكانية نسخ المحتوى عندما يضغط المستخدم الاختصار المعروف ctrl-c وكذلك اللصق عن طريق الاختصار ctrl-v # ننشيئ الأداة entry = customtkinter.CTkEntry(app) # نربط وظائف النسخ واللصق باختصارات من لوحة المفاتيح entry.bind("<Control-c>", lambda e: entry.event_generate("<<Copy>>")) entry.bind("<Control-v>", lambda e: entry.event_generate("<<Paste>>"))
- 4 اجابة
-
- 1
-
للتوضيح حتى لا يلتبس الأمر، الرفع هنا معناه تحميل في الذاكرة وليس رفعه إلى خادم أو ما شابه، أما للتأكد من تمام رفع كل الملفات: طالما الأكواد لا تعطي خطأً، هذا دليل على تمام العملية، ويمكنك زيادة التأكد عن طريق وضع نقطة توقف break point عند سطر الرفع وقم بعد مرات التوقف والتي مفترض أن تساوي عدد مرات التنفيذ التي تساوي أيضًا عدد الملفات. أو استخدام أسلوب آخر مثل حفظ الصور في قائمة وبعد الحلقة التكرارية اسأل عن عدد العناصر، مثل هذا المثال import face_recognition image_files = ["image1.jpg", "image2.jpg", "image3.jpg"] images = [] for file in image_files: image = face_recognition.load_image_file(file) images.append(image) print(len(images))
- 7 اجابة
-
- 1
-
لكتابة الكود مرة واحدة، تقصد لو عندك مثلًا ألف صورة بدلًا من كتابة ألف سطر، تريد رفعها بأكواد بسيطة، استخدم الحلقة التكرارية الموجودة بالأكواد التي أرسلتها لك.
- 7 اجابة
-
- 1
-
لمعرفة ما إذا كانت القيمة موجودة أم لا، نقوم بعملية البحث بشكل عادي جدًا، وبعدها نسأل عن dataframe هل هو فارغ search1 = names[names['Name'] == 'Ali'] if search1.empty: # يتحقق الشرط في حالة عدم وجود القيمة print("no result")
- 6 اجابة
-
- 1
-
إليك بعض الإرشادات التي تساعدك في إنجاز المهمة بإذن الله، ولكن في البداية، عندي ملاحظة أن عنوان الموضوع لا يعبر عنه، بالتأكيد فلسطين في القلب، ولكن عندما نطرح موضوعًا يفضل أن يكون عنوانه معبرًا عن محتوى الموضوع حتى يشجع الأشخاص للدخول. أولًا: للقراءة من الملفات النصية بلغة البايثون يجب أولًا فتحه عن طريق الوظيفة المدمجة open ونعطيها مسار الملف، وبالتأكيد نعرف متغيرًا يستقبل ما يرجع منها حتى يمكننا التعامل معه ثانيًا: لدينا عدة اختيارات للقراءة من الملف: إما قراءته كاملًا على هيئة نص عن طريق read، أو قراءته على هيئة سطور منفصلة عن طريق readLines والناتج يكون على هيئة قائمة list كل عنصر منها يعبر عن سطر واحد بالملف، يمكننا عمل حلقة تكرارية واستخراج كل سطر على حده، بعد ذلك يمكننا استخدام splite لتقسيم السطر إلى عناصر. ثالثًا: للكتابة إلى الملف يمكننا استخدام وظائف الكتابة بدلًا من وظائف القراءة، ولكن في هذه الحالة يجب تحديد وضع الكتابة عند استدعاء الوظيفة open ولدينا الوظائف write, writelines التي تكتب إلى الملف هذه بعض الإرشادات التي تساعدك في إنجاز المهمة، وبالتأكيد الهدف هو إتقان اللغة والتمرين عليها، وليس الهدف هو تقديم حل سهل دون استفادة. بالتوفيق
-
هل تقصد رفع أي إدراج مجموعة من الصور إلى مكتبة face_recognition، التي هي في الغالب صور مجموعة من الأشخاص؟ إذا كان كذلك، فالأمر بسيط إن شاء الله ويتم ذلك باستخدام الوظيفة load_image_file وتعطيه مسار الملف، وفي أغلب الأحيان تقوم بعمل حلقة تكرارية على ملفات موجودة بمجلد معين إليك كود مبسط لعمل المطلوب: # استيراد المكتبات اللازمة import face_recognition import cv2 import os # تحديد مسار المجلد الذي يحتوي على الصور folder_path = "folder/images" # إنشاء قائمة فارغة لتخزين ترميزات الوجوه face_encodings = [] # كتابة حلقة # for # لتحميل كل صورة وترميزها for file in os.listdir(folder_path): # تحميل الصورة وتحويلها إلى تنسيق # RGB image = face_recognition.load_image_file(os.path.join(folder_path, file)) image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # استخراج ترميز الوجه من الصورة encoding = face_recognition.face_encodings(image_rgb, model="hog")[0] # إضافة ترميز الوجه واسم الصورة إلى القائمة face_encodings.append((encoding, file))
- 7 اجابة
-
- 1
-
البحث يتم بكل بساطة أن تحدد العمود المراد البحث فيه، ثم تحديد صفة (شرط) البحث على سبيل المثال إذا تريد البحث عن اسم معين: search1 = names[names['Name'] == 'Ali'] print(search1) # output ''' Name Arabic Math 2 Ali 70 95 ''' البحث عن الأسماء التي تبدأ بحرف معين: search2 = names[names['Name'].str.startswith('A')] print(search2) # output ''' Name Arabic Math 0 Ahmed 90 100 2 Ali 70 95 ''' البحث عن الأسماء التي طولها أكبر من 10 أحرف: search3 = names[names['Name'].str.len() > 5] print(search3) # output ''' Name Arabic Math 1 Mohammed 80 99 3 Fatema 95 90 '''
- 6 اجابة
-
- 1
-
وعليكم السلام ورحمة الله قم بتصفير الفهرس index لكل من X1, X2 قبل عملية الدمج df = pd.read_excel("BV.xlsx",header=None) A = df.iloc[8::2, [0,1,2,3,4,5,6]] X1= pd.DataFrame(A) B = df.iloc[9::2, [0,1,2,3,4,5,6]] X2= pd.DataFrame(B) # قم بإضافة هذين السطرين قبل الدمج X1.reset_index(drop=True,inplace=True) X2.reset_index(drop=True,inplace=True) X3=pd.concat([X1,X2],axis=1,ignore_index=True) X3.reset_index(drop=True,inplace=True) X3.to_excel("ALL2036.xlsx")
-
يمكنك استخراج أسماء الأعمدة من مكتبة DataFrame عن طريق استخدام خاصية columns، وهي تعود بكائن مرقم يحتوي على قائمة بأسماء الأعمدة على سبيل المثال الشيفرات التالية تستعرض الأعمدة names = pd.DataFrame({ 'Name': ['Ahmed', 'Mohammed', 'Ali', 'Fatema'], 'Arabic': [90, 80, 70, 95], 'Math': [100, 99, 95, 90] }) print(names.columns) # output: # Index(['Name', 'Arabic', 'Math'], dtype='object') ولاختيار أعمدة معينة من الداتافريم الأساسي إلى داتافريم جديد يمكنك ببساطة تحديد الأعمدة المطلوبة كما في المثال التالي names2 = names[['Name', 'Math']] print(names2) # output ''' Name Math 0 Ahmed 100 1 Mohammed 99 2 Ali 95 3 Fatema 90 '''
- 6 اجابة
-
- 1
-
على الرحب والسعة، في انتظار سماع النتائج منك، وإذا واجهتك أي مشكلة في استخدام أدوات اكتشاف الأخطاء لا تتردد في التواصل.
- 23 اجابة
-
- 1
-
حاول استخدام أدوات اكتشاف الأخطاء، مثل نقطة التوقف Break point أو طباعة عبارات معينة بعد كل أمر تشك في تسببه بالخطأ، وترى إذا لم يتم طباعة العبارة فهذا معناه أن المشكلة بهذا السطر.
- 23 اجابة
-
- 1
-
تقصد رسالة "Failed to read frame from camera" هل غيرت هذا السطر if cv2.waitKey(10) & 0xFF == ord('q'):
- 23 اجابة
-
- 1
-
بناء على الشيفرات المكتوبة، فإن المكون About لا يحتوي فعليًا إلا على <div> بداخلها كلمة About أما المكون Home فيحتوي على كلمة Home ورابطين وبعض المحتوي النصي لذلك، إذا أردت عرض ترويسة أو تذييلة ثابتة بكل المكونات، يجب وضعها في المكون الجذري root component إليك مثال: // Header.js import React from 'react'; function Header() { return ( <div className="header"> <h1>My Website</h1> <nav> <ul> <li><a href="/">Home</a></li> <li><a href="/about">About</a></li> </ul> </nav> </div> ); } export default Header; وهذا تذييل // Footer.js import React from 'react'; function Footer() { return ( <div className="footer"> <p>© 2024 All rights reserved.</p> </div> ); } export default Footer; الصفحة الرئيسية // Home.js import React from 'react'; function Home() { return ( <div className="home"> <h2>Welcome to my website</h2> <p>This is a simple website built with React.</p> </div> ); } export default Home; صفحة من نحن // About.js import React from 'react'; function About() { return ( <div className="about"> <h2>About me</h2> <p>I am a web developer who loves React.</p> </div> ); } export default About; وهذا المكون الجذري // App.js import React from 'react'; import Header from './Header'; import Footer from './Footer'; import Home from './Home'; import About from './About'; function App() { return ( <div className="app"> <Header /> <Home /> <About /> <Footer /> </div> ); } export default App; وبالتأكيد يمكنك استخدام مكتبات التوجيه routing كما تريد مثل المثال التالي // App.js import React from 'react'; import { BrowserRouter, Route, Switch } from 'react-router-dom'; import Header from './Header'; import Footer from './Footer'; import Home from './Home'; import About from './About'; function App() { return ( <BrowserRouter> <div className="app"> <Header /> <Switch> <Route exact path="/" component={Home} /> <Route path="/about" component={About} /> </Switch> <Footer /> </div> </BrowserRouter> ); } export default App;
-
استخدام القيم السالبة في القائمة list في البايثون تعني بداية الترقيم من النهاية، على سبيل المثال allNames = ['Ahmed', 'Mohamed', 'Ali'] allNames2 = allNames[::-1] # ['Ali', 'Mohamed', 'Ahmed'] لاحظ استخدام -1 كقيمة للخطوة معناها نسخ القائمة من النهاية كما هو موضح الاسم الأخير أصبح الأول بالقائمة الجديدة. عند التعامل مع مكتبات رؤية الحاسوب، فإنها تتعامل بنظام الألوان BGR أزرق/أخضر/أحمر، لذلك وجب عكس هذا الترتيب ليصبح RGB أحمر/أخضر/أزرق، وهذا هو السبب في استخدام (-1)، هذا الأسلوب قد يسبب انطلاق خطأ إذا كان المتغير الأصلي None، لذلك في أغلب الأحيان نستخدم الشيفرات بالطريقة التالية ret, frame = video_capture.read() if ret: small_frame = cv2.resize(frame, (128, 128)) rgb_small_frame = small_frame[:, :, ::-1] # the rest of your code else: print("Failed to read frame from camera") فإذا ظهرت الرسالة "Failed to read frame from camera" هذا معناه أنه لم يتمكن من التقاط الصورة من الكاميرا، فيجب معرفة الخطأ وتصحيحه، وليس استبدال القيمة السالبة (-1) بالقيمة (1) لأنه قد يسبب مشاكل في ألوان الصورة.
- 23 اجابة
-
- 1
-
بخصوص هل سيجد مبرمجو فلاسك فرصة عمل أم لا في البداية: فلاسك هو إطار عمل ويب مبني على لغة بايثون، وهو من أسهل أطر العمل في التعلم، ويمكنه تطوير مواقع ويب متوسطة، وبالتالي فهو مطلوب بالتأكيد، لأنه كما هناك أناس يطلبون مواقع ضخمة، هناك من يطلب مواقع متوسطة، ولكن هذا لا يعني أنها ستكون مواقع سيئة، إنما المقصد أن المتطلبات بها ليست معقدة. بعض المواقع الشهيرة التي طُورت باستخدام فلاسك: مثل Pinterest، وهو موقع لتبادل الصور والروابط Twilio، وهو منصة للاتصالات السحابية ويمكنك البحث عن وظائف فلاسك في المواقع المشهورة مثل HackerEarth أو Toptal أو Turing. ولكن هناك نقطة هامة، ليس كافيا أن تتعلم فلاسك وحده لتصبح مطور تطبيقات ناجحا. تحتاج أيضا إلى إتقان لغة بايثون ومفاهيم البرمجة الكائنية OOP للتمكن من تنظيم الأكواد ومعالجة الأخطاء وتحديث التطبيق، إضافة إلى إتقان قواعد البيانات فتقريبًا لا يخلو موقع من الحاجة لحفظ البيانات والتعامل معها، إضافة إلى التعامل مع الواجهات البرمجية للتطبيقات (APIs)، ويكون لديك خلفية جيدة عن أمن الويب والتصميم الجيد للبرمجيات.
- 3 اجابة
-
- 1
-
ربما تحتاج تغيير السطر التالي وزيادة القيمة 1 إلى قيمة أكبر 10 أو 20 لأنها تعبر عن الوقت المنتظر بالمللي ثانية = 1/1000 ثانية، وبالتالي لا يعطي الفرصة الكافية لمعالجة إطارات الصور والفيديو # if cv2.waitKey(1) & 0xFF == ord('q'): if cv2.waitKey(10) & 0xFF == ord('q'): أرجو التجربة
- 23 اجابة
-
- 1
-
وعليكم السلام ورحمة الله وبركاته، يبدو أن المطلوب إضافة عمود يحتوي على A إذا كانت المادة عربي، ويحتوي على E إذا كانت إنجلزي وهكذا، في هذه الحالة يمكن استخدام السطر التالي melted_df['رمز المادة'] = melted_df['المادة'].str.replace('عربي', 'A').replace('إنجليزي', 'E').replace('تاريخ', 'H') يضاف قبل السطر الأخير ومعناه إنشاء عمود رابع يسمى "رمز المادة"، وتكون قيمته تعتمد على قيمة العمود "المادة" بحيث يعطي لكل مادة رمزًا لها. يجب مراعاة أن اسم المادة لا يتغير في الأماكن المختلفة بمعني لا يكون في خانة اسمها "عربي" وخانة أخرى اسمها "لغة عربية" أو "العربية" أرجو التجربة.
-
يبدو أنك تحاول الاتصال بقواعد البيانات عن طريق جلب خصائص الاتصال من الملف .env ولكن يبدو أنك تحتاج لمكتبة dotenv لتتمكن من ذلك جرب إضافة الشيفرات التالية // Require the dotenv module const dotenv = require('dotenv'); // Load the environment variables from the .env file dotenv.config(); // Get the connection string from the environment variable const connectionString = process.env.DB_URL; // Connect to the database using the connection string mongoose.connect(connectionString, { useNewUrlParser: true, useUnifiedTopology: true }) .then(() => console.log('DB connected!')) .catch(err => console.error(err)); لاحظ أننا استخدمنا طريقة promise للتأكد من نجاح الاتصال عن طريق then. كذلك ربما تحتاج استدعاء أمر الإنصات بنفس الطريقة // Wait for the app to be ready app.ready().then(() => { // Start the server app.listen(PORT, () => console.log(`App listening on port ${PORT}!`)); }); وذلك حتى لا تطلب من التطبيق الإنصات إلا بعد جهوزيته عن طريق استخدام ready يرجى التجربة، وإبلاغي إذا واجهتك أي مشاكل.