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

Chihab Hedidi

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

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

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

كل منشورات العضو Chihab Hedidi

  1. هذه الميثود غير موجودة في مكتبة Pandas يمكن استعمال الميثود loc بحيث تقوم بالتأشير على السطر الأخير بعدها تضيف المعلومات فيه، و هذا كود لتفهم أكثر: df = pd.read_excel("example.xlsx") df.loc[len(df)] = row_information df.to_excel("example.xlsx", index=False) نستخدم loc لتحديد سطر في DataFrame باستخدام الفهرس (index). في هذا السياق، استخدمت len(df) للإشارة إلى السطر الأخير في DataFrame ومن ثم إضافة معلومات الصف الجديدة row_information إلى هذا السطر.
  2. لديك بعض المشكلات في الربط بين الكلاسات في الكود الخاص بك، يجب عليك تصحيح الطريقة التي تقوم بها بتمرير الـ method إلى الأزرار داخل Frame2، يجب تمرير instance من الكلاس App إلى Frame2 واستخدام هذا الـ instance لاستدعاء الـ LoadFile و LoadFile1. إليك الكود المصحح: import customtkinter from tkinter import filedialog from pathlib import Path import pandas as pd class App(customtkinter.CTk): def __init__(self): super().__init__() self.FilePath = None self.sh = None self.title("App-v1") self.grid_columnconfigure(0, weight=1) self.grid_rowconfigure(1, weight=1) customtkinter.set_appearance_mode("dark") customtkinter.set_default_color_theme("green") Frame_A = Frame1(self) Frame_A.grid(row=0, column=0, padx=(10, 10), pady=(10, 10), sticky="ew", columnspan=2) Frame_A.grid_columnconfigure(0, weight=1) Frame_A.configure(border_width=1, border_color="#0087f2") Frame_B = Frame2(self) Frame_B.grid(row=1, column=0, padx=(10, 10), pady=(10, 10), sticky="news") Frame_B.grid_columnconfigure(0, weight=1) Frame_B.configure(border_width=1, border_color="#0087f2") def LoadFile(self): self.FilePath = filedialog.askopenfilename(initialdir="C:\\Users\\Cakow\\PycharmProjects\\Main", title="Open file okay?", filetypes=(("text files", "*.xlsx"), ("all files", "*.*"))) return self.FilePath def LoadFile1(self): df = pd.ExcelFile(self.FilePath) self.sh = df.sheet_names print(self.sh) class Frame1(customtkinter.CTkFrame): def __init__(self, master): super().__init__(master) self.label1 = customtkinter.CTkLabel(self, text="Welcome", fg_color="transparent", font=customtkinter.CTkFont(family="Calibri", size=18, weight="bold"), justify="center") self.label1.grid(row=0, column=0, padx=(10, 10), pady=(10, 10), sticky="n") class Frame2(customtkinter.CTkFrame): def __init__(self, master): super().__init__(master) # تمرير الـ instance من الـ App لـ Frame2 self.button1 = customtkinter.CTkButton(self, text="Open File", font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"), command=master.LoadFile) # استخدام الـ instance لاستدعاء الـ method self.button1.grid(row=0, column=0, padx=(10, 10), pady=(10, 10), sticky="e") self.button2 = customtkinter.CTkButton(self, text="Open File", font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold"), command=master.LoadFile1) # استخدام الـ instance لاستدعاء الـ method self.button2.grid(row=0, column=1, padx=(10, 10), pady=(10, 10), sticky="e") app = App() app.mainloop() قمت بتعديل الأزرار داخل Frame2 لتمرير الـ instance الخاصة بـ App واستخدمتها لاستدعاء الـ method.
  3. للوصول إلى المتغيرات بين الكلاسات في لغة البرمجة، يمكنك استخدام مفهوم الوراثة حيث تسمح لك بإنشاء كلاس جديد يرث الخصائص والسلوكيات من كلاس آخر. سأحاول أن اشرح لك بمثال متفهم أكثر: لنفترض أنه لدينا Class A مع دالة ترجع قيمة: class A: def __init__(self): self.result = 0 def do_something(self): # قم بعملية هنا واحتفظ بالناتج في self.result self.result = 42 ثم لنقم بإنشاء Class B ونرث من Class A: class B(A): def __init__(self): # يمكنك استدعاء __init__ من الكلاس الأساسي باستخدام super() super().__init__() def do_another_thing(self): # يمكنك الآن الوصول إلى self.result من Class A print(f"The result from Class A is: {self.result}") و بهذا يمكنك استخدام Class B والوصول إلى المتغير result الذي تم حفظه في Class A بواسطة دالة do_something: # إنشاء كائن من Class B obj_b = B() # استدعاء الدالة do_something التي تأتي من Class A obj_b.do_something() # استخدام الدالة do_another_thing التي تأتي من Class B obj_b.do_another_thing() وهذا المفهوم عام ويمكن تطبيقه بطرق مختلفة حسب اللغة.
  4. مرحبا، يمكنك إستخدام ميزة فلتر مثل ما ذكر الأخ عبد الباسط ولكن لم توضح بعد الفكرة التي تريدها، يعني لا يمكنك إخفاء خانة واحدة لأنه سيحدث خلل في ترتيب الأعمدة و الصفوف، يمكنك فقط إما إخفاء سطر كامل و عمود كامل، و اذا كنت تقصد فكرة أخرى أرجو أن تشرحها مرة أخرى. بالتوفيق إن شاء الله.
  5. الكود الذي ارسلته يشتغل بدون اي مشاكل، اذا قمت بتعديل آخر أرسل الكود الجديد.
  6. نعم يمكنك ذلك بحدث الكود من داخل Fram1 و تكتبه داخل App بهذه الطريقة: import customtkinter class Frame1(customtkinter.CTkFrame): def __init__(self, master): super().__init__(master) self.button1 = customtkinter.CTkButton(self, text="إختيار ملف", font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold")) self.button1.grid(row=0, column=1, padx=3, pady=(3, 0), sticky="w") class Frame2(customtkinter.CTkFrame): def __init__(self, master): super().__init__(master) self.checkbox_1 = customtkinter.CTkCheckBox(self, text="checkbox 1") self.checkbox_1.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="w") class Frame3(customtkinter.CTkFrame): def __init__(self, master): super().__init__(master) self.button2 = customtkinter.CTkButton(self, text="خروج", state="disabled", font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold")) self.button2.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="w") class App(customtkinter.CTk): def __init__(self): super().__init__() self.title("my app") self.geometry("400x180") self.grid_columnconfigure(0, weight=1) self.grid_rowconfigure(0, weight=1) self.Frame_A = Frame1(self) self.Frame_A.configure(border_color="red", border_width=3 ,fg_color="blue") self.Frame_A.grid(row=0, column=0, padx=1, pady=(1, 0), sticky="nswe") self.Frame_B = Frame2(self) self.Frame_B.grid(row=0, column=1, padx=1, pady=(1, 0), sticky="nswe") self.Frame_C = Frame3(self) self.Frame_C.grid(row=1, column=0, padx=1, pady=(1, 10), sticky="nswe") app = App() app.mainloop() اما بخصوص التعريب يمكنك استخدام الميثود pack كهذا المثال: self.button1.pack(side="right")
  7. في المثال الذي ارسلته قمت بالتمرير من داخل class App مثل الكود الذي كان موجود: self.Frame_A = Frame1(self, "red", 3, "blue") و هذا الكود كامل اذا اردت تجربه: import customtkinter class Frame1(customtkinter.CTkFrame): def __init__(self, master, border_color, border_width, fg_color): super().__init__(master) self.configure(border_width=border_width,border_color=border_color,fg_color=fg_color) self.button1 = customtkinter.CTkButton(self, text="إختيار ملف", font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold")) self.button1.grid(row=0, column=1, padx=3, pady=(3, 0), sticky="w") class Frame2(customtkinter.CTkFrame): def __init__(self, master): super().__init__(master) self.checkbox_1 = customtkinter.CTkCheckBox(self, text="checkbox 1") self.checkbox_1.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="w") class Frame3(customtkinter.CTkFrame): def __init__(self, master): super().__init__(master) self.button2 = customtkinter.CTkButton(self, text="خروج", state="disabled", font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold")) self.button2.grid(row=0, column=0, padx=3, pady=(3, 0), sticky="w") class App(customtkinter.CTk): def __init__(self): super().__init__() self.title("my app") self.geometry("400x180") self.grid_columnconfigure(0, weight=1) self.grid_rowconfigure(0, weight=1) self.Frame_A = Frame1(self, "red", 3, "blue") self.Frame_A.grid(row=0, column=0, padx=1, pady=(1, 0), sticky="nswe") self.Frame_B = Frame2(self) self.Frame_B.grid(row=0, column=1, padx=1, pady=(1, 0), sticky="nswe") self.Frame_C = Frame3(self) self.Frame_C.grid(row=1, column=0, padx=1, pady=(1, 10), sticky="nswe") app = App() app.mainloop()
  8. يمكنك ذلك باستخدام الميثود configure و ذلك بإستخادم المدخلات الخاصة بك و هذا كود ال Frame1 معدل و يمكنك تعديل باقي الكود بنفس الطريقة: class Frame1(customtkinter.CTkFrame): def __init__(self, master, border_color, border_width, fg_color): super().__init__(master) self.configure(border_width=border_width,border_color=border_color,fg_color=fg_color) self.button1 = customtkinter.CTkButton(self, text="إختيار ملف", font=customtkinter.CTkFont(family="Calibri", size=12, weight="bold")) self.button1.grid(row=0, column=1, padx=3, pady=(3, 0), sticky="w") و هذه صورة للنتيجة:
  9. يوجد العديد من الأسباب التي يمكن ان تكون السبب، أهمها ان تتأكد من الtoken الخاص بالبوت و انه مربوط مع الكود، إذهب الى botfather على تلغرام، و بعدها اختر البوت الخاص بك و سيتم ارسال ال api token اليك مرة أخرى قم بنسخة و وضعه في الكود الخاص بك. تأكد من خلال الكود الخاص بالبوت انه ليس مقيد لمستخدمين محددين فقط. حاول دائما ان تبدأ برمجة البوت بأوامر سهلة مع تجربتها لتتأكد انه شغال و هذا كود بسيط لبوت تلغرام: from telegram.ext import Updater, CommandHandler # استبدال "YOUR_TOKEN" بتوكن البوت الخاص بك TOKEN = "YOUR_TOKEN" def start(update, context): update.message.reply_text('مرحبًا بك في البوت!') def main(): # إعداد البوت باستخدام التوكن updater = Updater(TOKEN, use_context=True) # الحصول على مدير التحديثات dp = updater.dispatcher # إضافة معالج الأمر "/start" dp.add_handler(CommandHandler("start", start)) # بدء البوت updater.start_polling() # البقاء على البوت نشطًا حتى يتم الضغط على Ctrl-C updater.idle() if __name__ == '__main__': main() بعد التأكد انه شغال قم بإضافة الأوامر التي تريدها مع التعديل اللازم على الكود.
  10. يمكنك استخدام مكتبة node-notifier للتفاعل مع نظام الإشعارات في Node.js، و ايضا تستخدم react-toast-notifications أو مكتبة مماثلة في React لإظهار إشعارات في الواجهة الأمامية. اولا قم بتثبيت المكتبتين بالأمر التالي: npm install react-toast-notifications node-notifier و بعدها تكون البرمجة في الواجهة الخلفية بالطريقة التالية: const notifier = require('node-notifier'); // قم بتعيين وقت التنبيه الخاص بك const eventDate = new Date('2023-12-31T12:00:00'); // حساب الفارق بين الوقت الحالي ووقت الحدث const timeDiff = eventDate - new Date(); // قم بتعيين وقت للتنبيه قبل الحدث (مثلا: قبل ساعة) const alertTime = 60 * 60 * 1000; // ساعة واحدة // إذا كان الفارق بين الوقت الحالي ووقت الحدث أقل من وقت التنبيه، أرسل إشعار if (timeDiff > 0 && timeDiff <= alertTime) { notifier.notify({ title: 'تنبيه مهم', message: 'لديك موعد قريبًا!', // يمكنك إضافة المزيد من الخيارات هنا }); } و في الواجهة الأمامية استخدم react-toast-notifications من أجل اظهار الإشعارات: import { useToasts } from 'react-toast-notifications'; function MyComponent() { const { addToast } = useToasts(); // قم بإظهار إشعار عند تحميل المكون أو أثناء عملية الحفظ useEffect(() => { addToast('تم حفظ الموعد بنجاح!', { appearance: 'success' }); }, []); return ( <div> {/* محتوى المكون */} </div> ); } من المهم أن تتأكد من أن خادم Node.js يقوم بالتحقق من الأحداث بشكل دوري ويرسل إشعارات عندما يكون الوقت مناسب. كما يجب عليك التحقق من تكامل هذه الأكواد مع تطبيقك الكامل وتعديلها حسب احتياجاتك الخاصة.
  11. مكتبة pandas تعطيك تحكم سلس في ملفات اكسل، يمكنك القيام بذلك من خلال الكود التالي: import pandas as pd # قراءة ملف Excel df = pd.read_excel('اسم_الملف.xlsx', header=None) # اختيار عمود واحد selected_column_1 = df.iloc[:, 0] # اختيار العمود الأول # اختيار عمودين selected_columns_2 = df.iloc[:, [1, 3]] # اختيار العمود الثاني والرابع # إنشاء DataFrame باستخدام العمود المحدد df_selected_1 = pd.DataFrame(selected_column_1, columns=['اسم_العمود_الأول']) df_selected_2 = pd.DataFrame(selected_columns_2, columns=['اسم_العمود_الثاني', 'اسم_العمود_الرابع']) # طباعة النتائج print(df_selected_1) print(df_selected_2)
  12. إذا كنت تريد استخدام الصفوف بشكل فردي (الصف 5، الصف 7، الصف 9)، يمكنك استخدام المؤشرات indexing لتحديد الصفوف التي تريدها. import pandas as pd # قراءة ملف Excel df = pd.read_excel('اسم_الملف.xlsx', header=None) # استخدام المؤشرات لاختيار الصفوف selected_rows = df.iloc[4::2] # إعادة تعيين مؤشرات الصفوف selected_rows.reset_index(drop=True, inplace=True) # طباعة النتيجة print(selected_rows) في المثال الذي أرفقته يقوم بقراءة الملف Excel، ثم يستخدم المؤشرات iloc لاختيار الصفوف بدءا من الصف 5 ومن ثم يختار كل صف ثاني (5، 7، 9، ..). يتم إعادة تعيين مؤشرات الصفوف لتبدأ من الصفر مرة أخرى باستخدام reset_index، في الأخير تحصل على DataFrame تحتوي على البيانات التي تريدها.
  13. يمكنك القيام بذلك ستحتاج أولا لإستدعاء الملف للحصول على أسماء أوراق العمل، بعدها تعرضها للمستخدم من أجل اختيار الورقة المناسبة، و في الأخير نجري التغييرات و نسجلها في الملف الجديد: import os from openpyxl import load_workbook import pandas as pd def display_sheet_names(file_path): # استدعاء الملف DB = load_workbook(file_path) # الحصول على أسماء أوراق العمل sheet_names = DB.sheetnames print("أسماء أوراق العمل:") for i, sheet_name in enumerate(sheet_names, start=1): print(f"{i}. {sheet_name}") # اختيار ورقة العمل sheet_choice = int(input("الرجاء اختيار رقم الورقة: ")) selected_sheet_name = sheet_names[sheet_choice - 1] return DB[selected_sheet_name] def main(): # إدخال اسم الملف file_name = input("الرجاء إدخال اسم الملف: ") file_path = os.path.join(os.getcwd(), file_name) # عرض أسماء أوراق العمل واختيار ورقة العمل DS = display_sheet_names(file_path) # تحويل بيانات ورقة العمل إلى DataFrame data = DS.values columns = [cell.value for cell in next(data)] df = pd.DataFrame(data, columns=columns) # يمكنك هنا إجراء العمليات التي تحتاجها على DataFrame # إنشاء ملف Excel جديد وحفظ DataFrame فيه new_file_name = input("الرجاء إدخال اسم ملف الحفظ: ") new_file_path = os.path.join(os.getcwd(), new_file_name) df.to_excel(new_file_path, index=False) print(f"تم حفظ البيانات في ملف {new_file_name}") if __name__ == "__main__": main()
  14. يمكنك القيام بذلك سواء بمكتبة openpyxl او pandas: بالطريقة التالية: from openpyxl import Workbook, load_workbook # استدعاء الملف وورقة العمل DB = load_workbook("اسم الملف.xlsx") DS = DB["اسم ورقة العمل"] # قم بتنفيذ العمليات التي تحتاج إليها على ورقة العمل # إنشاء ملف Excel جديد new_workbook = Workbook() new_sheet = new_workbook.active # نسخ البيانات من ورقة العمل الأصلية إلى ورقة العمل الجديدة for row in DS.iter_rows(values_only=True): new_sheet.append(row) # حفظ ملف Excel الجديد new_workbook.save("اسم ملف الحفظ.xlsx") اذا كنت تريد استخدام مكتبة pandas قم بالأمر التالي: import pandas as pd from openpyxl import load_workbook # استدعاء الملف وورقة العمل DB = load_workbook("اسم الملف.xlsx") DS = DB["اسم ورقة العمل"] # تحويل بيانات ورقة العمل إلى DataFrame data = DS.values columns = [cell.value for cell in next(data)] df = pd.DataFrame(data, columns=columns) # قم بتنفيذ العمليات التي تحتاج إليها على DataFrame # إنشاء ملف Excel جديد وحفظ DataFrame فيه df.to_excel("اسم ملف الحفظ.xlsx", index=False)
  15. يمكنك القيام بذلك باستخدام مكتبة Tesseract OCR، لكن في بعض الأحيام قد تكون هناك حاجة إلى معالجة الصورة قبل استخدام Tesseract لتحسين النتائج. يجب عليك اولا تثبيت مكتبة Tesseract OCR و Pillow لمعالجة الصور باستخدام الأمر التالي: pip install pytesseract Pillow و هذا كود بسيط، يمكنك التعديل عليه على حسب احتياجاتك : from PIL import Image import pytesseract # تحديد مسار ملف Tesseract OCR إذا لزم الأمر # pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe' def extract_text_from_image(image_path): # فتح الصورة image = Image.open(image_path) # استخراج النص من الصورة باستخدام Tesseract OCR text = pytesseract.image_to_string(image) return text # تحديد مسار الصورة image_path = 'path/to/your/image.png' # استخراج النص وطباعته result_text = extract_text_from_image(image_path) print(result_text) لا تنسى تغير image_path إلى مسار الصورة التي تريد استخراج النص منها.
  16. اطلعت على الموقع و وجدت انه تحميل هذا الكتاب غير متوفر في الموقع، يعني لا تستطيع تحميله حتى لو استخدمت الكود الخاص بك، يجب اول شيء وضع الرابط المباشر لتحميل الكتاب و ليس رابط صفحة الكتاب، كما انه يوجد خطأ في الكود في سطر: if responste.status_code == 20: الرمز الصحيح الذي يدل على أن الصفحة تم تحميلها بنجاح هو 200 يعني تكون بالشكل التالي: if responste.status_code == 200:
  17. سأفترض أنك تستخدم axios لإرسال الطلبات HTTP، و أيضا لديك حالة في Redux لتخزين الـ token. // في ملف authSlice.js import { createSlice, createAsyncThunk } from '@reduxjs/toolkit'; import axios from 'axios'; // استخدمنا createAsyncThunk لتحويل الطلبات الى حالات متقدمة (pending, fulfilled, rejected) export const fetchToken = createAsyncThunk('auth/fetchToken', async (_, thunkAPI) => { try { // هنا يمكنك استخدام thunkAPI.getState() للوصول إلى حالة Redux const state = thunkAPI.getState(); // استخدم state.auth.token كطريقة للوصول إلى الـ token const response = await axios.post('url/to/token/endpoint', { username: state.auth.username, password: state.auth.password }); // قم بإرجاع البيانات التي تم استلامها من الطلب كقيمة معادة الوعد return response.data.token; } catch (error) { // في حالة وجود أي خطأ، قم بإرجاع الخطأ return thunkAPI.rejectWithValue(error.response.data); } }); // الجزء الخاص بتحديث الحالة بناءً على حالة الطلب const authSlice = createSlice({ name: 'auth', initialState: { token: null, }, reducers: { // يمكنك إضافة reducers إضافية هنا }, extraReducers: (builder) => { // اتبع createAsyncThunk لتحديث الحالة بناءً على حالة الطلب builder.addCase(fetchToken.fulfilled, (state, action) => { state.token = action.payload; }); builder.addCase(fetchToken.rejected, (state, action) => { // يمكنك تحديد كيف تتعامل مع حالة الرفض هنا، مثلاً قم بتحديث حالة الخطأ }); }, }); // تصدير action و reducer export const { /* أي reducers إضافية تريد تصديرها */ } = authSlice.actions; export default authSlice.reducer; في الكود الذي ارفقته استخدمت createAsyncThunk لإنشاء fetchToken واستخدمنا getState الخاصة ب thunkAPI للوصول إلى حالة Redux و ايضا استخدمنا state.auth.token كقيمة للـ token.
  18. اختيار القيمة يعتمد على السياق الخاص بتطبيقك ومتطلباته null يستخدم عادة عندما يكون الحالة غير معرفة أو غير محددة، مثلا إذا كنت تتوقع تحميل بيانات من الخادم أو إذا كانت القيمة تحتاج إلى حالة ابتدائية لا تشير إلى شيء معين، فإن null هو الخيار الأفضل. const [userData, setUserData] = useState(null); useEffect(() => { // يتم تحميل البيانات من الخادم fetchData() .then((data) => setUserData(data)) .catch((error) => console.error("حدث خطأ في تحميل البيانات", error)); }, []); "" أو السلسلة الفارغة يمكن استخدامها إذا كانت الحالة تمثل سلسلة نصية والقيمة الابتدائية هي سلسلة فارغة، هذا يمكن أن يكون مناسبا عند بدء العمل بقيمة نصية تكون فارغة ويتم تحديثها فيما بعد. const [inputText, setInputText] = useState(""); const handleInputChange = (event) => { // يتم تحديث قيمة النص عند تغيير المدخلات setInputText(event.target.value); }; return ( <input type="text" value={inputText} onChange={handleInputChange} placeholder="أدخل نص هنا" /> );
  19. نقوم بإستخدام الـ state لتخزين حالة محددة لمكون (component)، وتتغير هذه الحالة مع مرور الوقت بسبب التفاعلات مع المستخدم أو بسبب التغييرات في البيانات. يمكنك تعريف حالة state في مكون React عن طريق استخدام الدالة useState التي تأخذ قيمة افتراضية وترجع مصفوفة تحتوي على قيمة الحالة ودالة لتحديث الحالة، مثل const [loading, setLoading] = useState(false); في هذا المثال، تم إنشاء حالة loading بقيمة افتراضية false، وتم تعيين الدالة setLoading لتحديث حالة loading عند الحاجة. عندما تقوم بتحديث الحالة باستخدام الدالة المرفقة (مثل setLoading(true) أو setLoading(false))، يعيد React رسم المكون بناء على القيمة الجديدة للحالة. هذا يسمح لك بإعادة رسم المكون بشكل ديناميكي استنادا إلى التغييرات في الحالة. بخصوص السؤال حول userAnswer('hi')، يظهر أن هذا قد يكون استخداما لدالة لتحديث حالة userAnswer،مثلا، إذا كنت قد قمت بتعريف setUserAnswer باستخدام useState، يمكنك استخدامها لتحديث قيمة userAnswer: const [userAnswer, setUserAnswer] = useState(""); // عندما يحدث حدث ما مثل إدخال المستخدم لإجابة setUserAnswer('hi'); بمجرد أن تتغير قيمة userAnswer، سيتم إعادة رسم المكون بناء على هذا التغيير.
  20. بخصوص أداة ال image labling يمكنك استخدام الأداة الخاص بموقع Roboflow، تضيف الصور هناك و بعدها تقوم بتحديد العنصر في الصور بشكل بسيط و سهل. بعد الانتهاء يمكنك استخدام الموقع مباشرة لتجربة النتائج او الحصول على كود تقوم بإستخدامه عن طريق google collab و ذلك لأنك ستستخدم gpu الخاص بقوقل و ستكون النتائج سريعة. و اخر مرحلة تقوم بتحميل ملف النتيجة و استخدامه في كودك على بيثون.
  21. يمكنك تعلم الذكاء الاصطناعي كمبرمج من خلال مصادر متعددة على الإنترنت، سواء كانت دورات أو كتب. أول مرحلة هي انو يجب عليك تعلم أساسيات علوم الحاسوب ولغة البرمجة بايثون، لأنها اللغة الأكثر شيوعا في هذا المجال، حاول تعلم الرياضيات المطبقة، خاصة الجبر الخطي والتفاضل والتكامل، والتي تساعدك على فهم الخوارزميات والنماذج المستخدمة في الذكاء الاصطناعي. مجالات الذكاء الإصطناعي كثيرة يمكنك مثل البدأ بمجال تعلم الآلة ، وهو الفرع الرئيسي من الذكاء الاصطناعي الذي يمكن الآلات من التعلم من البيانات والتنبؤ بالنتائج، و يوجد ايضا مجال التعلم العميق او Deep Learning، وهو الفرع الأكثر تقدما من تعلم الآلة الذي يستخدم الشبكات العصبية الاصطناعية Artificial Neural Networks لحل المشكلات المعقدة. كبداية اختر كورس سهل تتعلم منه الأساسيات في هذا المجال، يوجد العديد من الكورسات على الإنترنت، بعدها حاول التعمق في احد المجالات التي ذكرتها لك لتدخل في هذا المجال بشكل افضل. يمكنك إلقاء نظرة على قسم الذكاء الإصطناعي في حسوب، و يمكنك الإطلاع على هذه المقالة بحيث تحتوي على معلومات قيمة بخصوص هذا المجال:
  22. بالطبع يمكنك ذلك، يجب أن تكون على دراية بأن لغات مثل Python تعتبر شائعة جدا في مجال تعلم الآلة، وذلك بسبب وجود العديد من المكتبات والأدوات المتاحة التي تدعم هذا المجال مثل TensorFlow وPyTorch. بالنسبة للغات التي ذكرتها تحتاجها لتطوير واجهة المستخدم لتطبيقك، و من الجيد أيضا أن تكون على دراية بالعمل مع APIs إذا كنت ترغب في ربط تطبيق تعلم الآلة بالخدمات الخارجية أو تحميل البيانات. إذا كنت ترغب في تطبيق تعلم الآلة بشكل كامل داخل المتصفح، فإن TensorFlow.js هي إحدى الخيارات التي قد تهمك، بحيث تمكنك من تدريب نماذج تعلم الآلة وتشغيلها مباشرة في المتصفح باستخدام JavaScript. يعني بصفة عامة الاعتماد على لغات مثل Python في مشروع تعلم الآلة أكثر شيوعا، لكن استخدام تقنيات الويب يمكن أن يكون له فائدته في توفير تجربة مستخدم أفضل وتكامل مع الواجهة الرسومية.
  23. المشكل الذي ظهرلك بخصوص استعمال ال powershell بحيث يكون استعمالها في بعض الأحيان محدود بسبب الأمان، و بصفة عامة و في استخدامات ال vs code لا يوجد فرق بينها و بين ال cmd يمكنك تغيير ال terminal الإفتراضي الى cmd يالطريقة التالية: تضغط على Terminal ثم New Terminal في الأسفل على اليمين تجد علامة + مع سهم للأسفل اضغط على السهم بعدها select default profile و من ثم اختر ال cmd. بعد تنفيذ كل هذه المراحل قم بإنشاء terminal جديد و اشتغل عليه. يوجد حل اخر و هو انو نتخطى حماية ال powershell بالطريقة التالية: قم بالضغط على ctrl+shift+p و في خانة البحث اكتب settings.json، بعد دخولك للملف ابحث عن و غيرها للقيمة التالية: "terminal.integrated.profiles.windows": { "PowerShell": { "source": "PowerShell", "icon": "terminal-powershell", "args": ["-ExecutionPolicy", "Bypass"] } }, "terminal.integrated.defaultProfile.windows": "PowerShell", و اخيرا قم بحفظ التغييرات و إعادة تشغيل ال vs code من جديد.
  24. اذا كانت لديك خبرة في البايثون قليلا يمكنك القيام بذلك، ستحتاجين لتعلم اساسيات الأتمتة. اول شيء تطلعي على بنية الموقع او structure الخاصة بكل عنصر هناك، بعدها يمكنك التحكم فيه عن طريق البيبثون، المكتبات التي ستستخدمينها بصفة عامة هي Selenuim. فكرة البرمجة تقوم بإحضار ال path الخاص بكل عنصر و بعدها تتحكم فيه بالبرمجة، بعد الإنتهاء من كل المراحل سيصبح السكريت الخاص بك جاهز. بخصوص مكتبة ال selenuim تحدثت عنها في هذا المقال: أتمتة المهام باستخدام مكتبة Selenium ولغة البايثون اما بخصوص تخطي الكابتشا يوجد مكتبة مدفوعة بإسم 2captcha يمكنك الإطلاع عليها و دمجها في الكود الخاص بك.
  25. يمكنك فعل ذلك سواء باستخدام Access أو Excel، ولكن يعتمد الاختيار على احتياجات ومتطلبات المشروع الخاص بك، بحيث يجب أن تأخذ العديد من العوامل بعين الإعتبار إذا كان لديك كمية كبيرة من البيانات وتحتاج إلى علاقات معقدة بينها، فإن Access يمكن أن يكون خيارا أفضل لإدارة قاعدة البيانات، كما أن Access يمكن أن يوفر مستويات أمان أعلى بالنسبة لقاعدة البيانات، مما يجعله أفضل في بعض الحالات حينما يكون الوصول إلى البيانات حساسا، او إذا كان لديك حاجة إلى التكامل مع تطبيقات أخرى، فإنه قد يكون أسهل في هذا الصدد. في حالة إذا كنت بحاجة إلى إمكانيات تحليل بيانات متقدمة وإنشاء تقارير معقدة، يمكن أن يكون Excel أكثر فعالية في هذا الصدد، كما انه سهل في تصميم واجهة سهلة الاستخدام وتحتاج إلى أن تكون العمليات بسيطة.
×
×
  • أضف...