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

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

  1. Khaled Osama3

    Khaled Osama3

    الأعضاء


    • نقاط

      4

    • المساهمات

      1580


  2. Mustafa Suleiman

    Mustafa Suleiman

    الأعضاء


    • نقاط

      3

    • المساهمات

      13209


  3. اسامة الضناوي

    اسامة الضناوي

    الأعضاء


    • نقاط

      2

    • المساهمات

      8


  4. عمر قره محمد

    عمر قره محمد

    الأعضاء


    • نقاط

      2

    • المساهمات

      4096


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

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

  1. السوق يطلب react anguler vueمكتبات هذه ولا احد يطلب هذه الطريقة لماذا لا تعدلو في المحتوى
    2 نقاط
  2. السلام عليكم اي هي المفاهيم الهندسية والرياضية عشان اكون مهندس برمجيات
    1 نقطة
  3. قمت بأخذ نظره على موقع مستقل ورأيت أن اغلب المبرمجين حاصلين على شهادات جامعيه أو لديهم الخبره الطويله مثل 4 سنين فما فوق فكيف لي أن انافس هاؤلاء بخبرتي البسيطه و شهادتي من حاسوب غير أني أمل بان احصل على عمل دائم
    1 نقطة
  4. كيف استطيع تفرقة كل منشور على حدا؟ حيث انه يحسب كل منشور في row مختلف
    1 نقطة
  5. أرجو التعليق أسفل فيديو الدورة الخاص بالسؤال لمساعدتك بشكل أفضل، وطرح الأسئلة العامة هنا في قسم أسئلة البرمجة. بالنسبة للمشكلة لديك أنت تحاول عرض مسار غير موجود بالمسارات لديك في المشروع، فالمسارات الموجودة لديك هي admin وmyapp، لذا عليك زيارة الرابط التالي: http://127.0.0.1:8000/myapp
    1 نقطة
  6. السلام عليكم ورحمة الله وبركاته اواجة مشكلة فى تسطيب اسكربت من Github وللعلم انا جديد في node My terminal PS C:\Users\LoorD\Axabot\_init> npm install up to date, audited 107 packages in 6s 7 packages are looking for funding run `npm fund` for details 9 vulnerabilities (1 moderate, 5 high, 3 critical) To address issues that do not require attention, run: npm audit fix To address all issues (including breaking changes), run: npm audit fix --force Run `npm audit` for details. PS C:\Users\LoorD\Axabot\_init> npm start > botinit@1.0.0 start > node _install.js [1] New Server Install ( To setup newly bought servers ) [2] Bot Only (Fresh install of Axabot [FILES ONLY]) [0] CANCEL Please choose install type? [1, 2, 0]: 1 * Ip Address : 163.172.96.160 * Username : qweasd * Password : *********** Connected via SSH.. Error uploading config files PS C:\Users\LoorD\Axabot\_init>
    1 نقطة
  7. كم مسار يجب ان اكمل لاستطيع ان ادخل اختبار اختبار الشهادة
    1 نقطة
  8. للتأهل لدخول الإختبار، يجب إنهاء 4 مسارات على الأقل وتسليم التطبيقات العملية الخاصة بهم، وسيتم سؤالك في تلك المسارات فقط. في حال تم الإنتهاء منه وترين أنك مستعدة للإختبار أرجو منك التحدث لمركز المساعدة وإخبارهم أنك تريدين خوض الإختبار الخاص بدورة (ذكر الدورة التي تريدين الإختبار بها).
    1 نقطة
  9. السلام عليكم ... ابحث عن كتاب PL SQL الكتاب وليس الرفرنس من اوراكل
    1 نقطة
  10. بالنسبة لعلوم الرياضيات : يجب أن تكون ملم بعلم ال algebra و ال calculus (لاحظ أنى قولت ملم). ويجب أن تكون على اطلاع بعلم الاحصاء والاحتمالات. وبالنسبة للبرمجة فيجب عليك دراسة. Algorithms و Data structure و database و OOP بجانب إتقانك لمهارة ال problem solving.
    1 نقطة
  11. دعك من كل هذا ولا تشتت نفسك فى مقارنات لن تفيدك ابدا، كل ما يجب عليك حاليا أن تعمل على بناء نفسك جيدا و تتعلم جيدا. وبالنسبة للشغل فكل الناس الذين تراهم ، كلهم بدأوا من الصفر ومع السعى والاستمرارية وصلوا لما هم عليه الآن. وكثير من الشركات تقوم بتعيين ناس بدون شهادات جامعية عادى جدا. ركز فقط على مذاكرتك الآن ولا تنسى أن الرزاق هو الله .
    1 نقطة
  12. اخرج الـ row من الحلقة map واجعل الابناء من النوع column بحيث يكون لديك row واحد وبداخله العديد من الاعمدة column مثل : <div class="container"> <div class="row"> { ["1" , "2"].map(item => { return ( <div class="col-sm"> One of three columns </div> ) }) } </div> </div>
    1 نقطة
  13. أريد حل المشكلات في هذا المجلد. لماذا عند الكتابة python manage.py makemigrations members تظهر PS C:\Users\lion\Desktop\DJANGO\my_tennis_club> python manage.py makemigrations members No changes detected in app 'members' و لا تظهر Migrations for 'members': members\migrations\0001_initial.py - Create model Member (https://www.w3schools.com/django/django_templates.php) أريد أن يظهر هذا Hello World Welcome to my first Django project على الموقع ولكن يظهر فقد Hello World DJANGO - Copy.zip
    1 نقطة
  14. بالنسبة للمشكلة الأولى لا يمكنك عمل model بدون انا تقوم بعمل class اولا لهذا ال model يتم لولا عمل model فى members بالاسم الذى تريد ومن ثم تقوم برن ال command: Python ./manage.py makemigrations member وبالنسبة انك تريد طباعة كلام زيادة فى ال صفحة فكل ما عليك هو اضافى هذا الكلام فى ال view لديك ، سوف تقوم بتعديل سطر رقم ستة بالكتابة اللى تريدها وسوف يقوم بطباعتها.
    1 نقطة
  15. ماسبب هذه المشكلة؟ لقد ادخلت رقمي بشكل صحيح!
    1 نقطة
  16. اريد ان استفسر عن طريقة تسليم الموقع الالكتروني/ صفحات الهبوط الذي قمت بإنشائها للعميل على مواقع العمل الحر مثل خمسات واب وورك وغيره هل اقوم فقط بضغط مجلد المشروع الذي يحتوي على جميع الملفات وارسله للعميل؟ ام انه يجب تسليمه بطريقة اخرى؟
    1 نقطة
  17. هذا يعتمد على الاتفاق بينك وبين العميل، فإذا كان الاتفاق على ان تقوم بتسليم ملفات المشروع للعميل فهذا ضروري وإن كان الاتفاق على ان ترفع ملفات الـ build على استضافة للعميل دون ان تقدم له الملفات المصدرية فهنا لست بحاجة لتسليم الملفات للعميل. باختصار:: الامر يعتمد على الاتفاق بينك وبين العميل.
    1 نقطة
  18. في الحلقه الخامسه من اساسيات لغه بايثون الدقيقه ٨ و ٤٧ ثانيه هل من المفترض ان يكون الكود Points[0].count(2) بدلا من points.count(points[0])
    1 نقطة
  19. فى Points[0].count(2) يتم حساب عدد مرات الظهور للقيمة 2 في القائمة الأولى points [0] . اما فى points.count(points[0]) فيتم حساب عدد العناصر الموجودة فى أول قائمة وليس عدد مرات ظهور عدد معين. لنفترض انك لديك القادمة هكذا : {1,2,2,3,2} عند استخدام اول سطر سوف يعيطك 3 (عدد ظهور العدد اثنين). وعند استخدام السطر الثانى سوف يعيطك 5 وهو عدد عناصر القائمة.
    1 نقطة
  20. import customtkinter as ctk import tkinter as tk import pandas as pd import os import pyperclip from tkinter import ttk , filedialog from customtkinter import CTkInputDialog from CTkMessagebox import CTkMessagebox class App(ctk.CTk,tk.Tk): def __init__(self): super().__init__() ctk.set_appearance_mode("light") # Modes: system (default), light, dark ctk.set_default_color_theme("green") # Themes: blue (default), dark-blue, green self.title("CTk example") self.columnconfigure(0, weight = 1) self.rowconfigure(0, weight = 1) # CSS //////////////////////////////////////// self.Font_NAME = str("Noto Kufi Arabic Medium") self.Button_font_size = int(12) self.Label_font_size = int(12) self.Entry_font_size = int(12) self.Text_Color = "#000000" self.Border_Frame_color = "#ff6c0b" self.FG_Frame_color = "#FFFFFF" self.Hover_Color="#FFD045" # images ********************************************************************************************** self.search_var = tk.StringVar() #---------------------------------------------------------------------------------------------- # Frame_Basis ********************************************************************************************** self.Frame_Basis = ctk.CTkFrame(self, fg_color="#F4F4F4") self.Frame_Basis.grid(row=0, column=0, pady=(5, 5),padx=(5, 5), sticky="ewsn") self.Frame_Basis.columnconfigure(0, weight = 1) self.Frame_Basis.rowconfigure(0, weight = 0) self.Frame_Basis.rowconfigure(1, weight = 0) self.Frame_Basis.rowconfigure(2, weight = 1) #---------------------------------------------------------------------------------------------- # Insert frames within a self.Frame_Basis ***************************************************************************** self.Frame_A = ctk.CTkFrame(self.Frame_Basis , border_width = 1,border_color= self.Border_Frame_color,fg_color = self.FG_Frame_color) self.Frame_A.grid(row=0, column=0, pady=(5, 5),padx=(5, 5), sticky="ewsn") self.Frame_A.columnconfigure(0, weight = 0) self.Frame_A.columnconfigure(1, weight = 1) #self.Frame_A.rowconfigure(0, weight = 1) # Insert tools within a Frame_A ************ self.label_Title = ctk.CTkLabel(self.Frame_A, text="test",text_color=self.Text_Color, fg_color="transparent", font=ctk.CTkFont(family=self.Font_NAME, size=18),justify="right") self.label_Title.grid(row = 0, column = 1, padx=(5, 5), pady=(5, 5), sticky="ew") self.label_Logo = ctk.CTkLabel(self.Frame_A, text="test" ,fg_color="transparent", font=ctk.CTkFont(family=self.Font_NAME, size=self.Label_font_size),anchor="e") self.label_Logo.grid(row = 0, column = 0, padx=(5, 5), pady=(5, 5), sticky="ew") # Insert tools within a Frame_B ************ self.Frame_B = ctk.CTkFrame(self.Frame_Basis , border_width = 1,border_color= self.Border_Frame_color,fg_color = self.FG_Frame_color) self.Frame_B.grid(row=1, column=0, pady=(5, 5),padx=(5, 5), sticky="ewsn") self.Frame_B.columnconfigure(0, weight = 1) self.Frame_B.columnconfigure(1, weight = 0) self.Frame_B.columnconfigure(2, weight = 0) self.Frame_B.rowconfigure(0, weight = 0) self.Button2 = ctk.CTkButton(self.Frame_B, text="تحميل Treeview",text_color=self.Text_Color ,compound="left",fg_color= "transparent",border_width = 1,border_color= self.Border_Frame_color,font=(self.Font_NAME,self.Button_font_size),hover_color=self.Hover_Color,command=self.lod_Treeview) self.Button2.grid(row=0, column=0, pady=(5, 5),padx=(5, 2), sticky="e") self.optionmenu1 = ctk.CTkOptionMenu(self.Frame_B,values=["إختر ورقة العمل"],text_color=self.Text_Color, fg_color="#ffae54",button_color="#ff6c0b", font=ctk.CTkFont(family="Calibri", size=12, weight="bold"),corner_radius=20) self.optionmenu1.grid(row=0, column=1, padx=(10, 10), pady=(10, 10), sticky="e") self.optionmenu1.configure(command=self.optionmenu_callback) self.Button1 = ctk.CTkButton(self.Frame_B, text="فتح ملف",text_color=self.Text_Color ,compound="left",fg_color= "transparent",border_width = 1,border_color= self.Border_Frame_color,font=(self.Font_NAME,self.Button_font_size),hover_color=self.Hover_Color,command=self.File_dialog) self.Button1.grid(row=0, column=2, pady=(5, 5),padx=(5, 10), sticky="e") self.label_search_Nm = ctk.CTkLabel(self.Frame_B, text="البحث",text_color=self.Text_Color, fg_color="transparent", font=ctk.CTkFont(family=self.Font_NAME, size=self.Label_font_size),anchor="w") self.label_search_Nm.grid(row = 1, column = 2, padx=(5, 5), pady=(5, 5), sticky="ew") self.entry1 = tk.Entry(self.Frame_B, font=ctk.CTkFont(family=self.Font_NAME, size=self.Entry_font_size),justify="right") self.entry1.grid(row=1, column=1, padx=(2, 10), pady=(5, 5), sticky="e") self.popup_menuA = tk.Menu(self, tearoff=0) self.popup_menuA.add_command(label="Cut", command=lambda: self.entry1.event_generate("<<Cut>>")) self.popup_menuA.add_command(label="Copy", command=lambda : self.entry1.event_generate("<<Copy>>")) self.popup_menuA.add_command(label="Paste", command=lambda: self.entry1.event_generate("<<Paste>>")) self.entry1.bind("<Button-3>", self.show_popup_menu) # Insert tools within a Frame_C ************ self.Frame_C = ctk.CTkFrame(self.Frame_Basis , border_width = 1,border_color= self.Border_Frame_color,fg_color = self.FG_Frame_color) self.Frame_C.grid(row=2, column=0, pady=(5, 5),padx=(5, 5), sticky="ewsn") self.Frame_C.columnconfigure(0, weight = 1) #Treeview self.tree = ttk.Treeview(self.Frame_C) self.tree.grid(row=0, column=0, padx=(5, 5), pady=(5, 5),sticky='nsew') self.tree.bind('<Button-3>', self.popup_menu) # القائمة self.popup1 = tk.Menu(self.tree, tearoff=0) self.popup1.add_command( command=self.it_copy, label="Copy") self.popup1.add_command( command=self.it_paste, label="paste") # النسخ def it_copy(self): item = self.tree.selection()[0] self.clipboard_clear() # self.clipboard_append(self.tree.item(item, option='text')) pyperclip.copy(self.tree.item(item, option='text')) # اللصق def it_paste(self): # self.text = self.clipboard_get() self.text = pyperclip.paste() # self.tree.insert("", "end", text=self.text) self.tree.insert("", "end", text=self.text, values=self.text) def File_dialog(self): self.file_name = filedialog.askopenfilename(initialdir="C:\\Users\\Cakow\\PycharmProjects\\Main", title="Open file okay?", filetypes=(("text files", "*.xlsx"),("all files", "*.*"))) self.df = pd.ExcelFile(self.file_name) self.optionmenu1.configure(values = self.df.sheet_names) if self.file_name: self.file_name = os.path.basename(self.file_name) def optionmenu_callback(self,value): self.vq = value return self.vq def lod_Treeview(self): if hasattr(self, 'file_name') and self.file_name: self.df = pd.read_excel(self.file_name,sheet_name=self.vq,header=None) self.A = self.df.iloc[1::1, [0]] self.A1 = pd.DataFrame(self.A ) self.tree["column"]=list(self.A1.columns) self.tree["show"] = "headings" for column in self.tree["column"]: self.tree.heading(column , text=column) df_rows = self.A1.to_numpy().tolist() for row in df_rows: self.tree.insert("" , "end" , text = row ,values = row) else: CTkMessagebox(title="خطأ",message="أرجو فتح ملف أولا",icon="cancel",option_1="OK", font=ctk.CTkFont(family="Noto Kufi Arabic Medium", size=14),justify="center") # إظهر القائمة def show_popup_menu(self,event): self.popup_menuA.post(event.x_root, event.y_root) def popup_menu(self,event): self.tree.identify_row(event.y) self.popup1.post(event.x_root, event.y_root) app = App() app.mainloop() الشيفرة كاملة، تم تجربتها وتقوم بعملية النسخ واللصق على الشجرة بشكل صحيح، والعنصر يظهر للمستخدم.
    1 نقطة
  21. السؤال متعلق بدورة علوم الحاسب أرجو التعليق أسفل فيديو الدورة في المرة القادمة لمساعدتك بشكل أفضل. وإن كنت قد فهمت سؤالك بشكل صحيح، فالفرق الرئيسي بين تطبيق الويب (web app) وموقع الويب (web site) هو أن تطبيق الويب يوفر تفاعل أكثر مع المستخدم، بينما موقع الويب هو مجموعة من الصفحات التي يمكن عرضها من خلال مستعرض الويب. وكأمثلة، موقع فيسبوك هو تطبيق ويب وليس موقع ويب، بينما المواقع الإخبارية أو Wikipedia مثلاً هي مواقع ويب، بمعنى أن تطبيقات الويب المحتوى بها متغير بناءًا على تفاعل المستخدم معها، وهي مواقع ديناميكية، أي محتواها يتغير بدون تدخل من مديري الموقع، فمثلاً أنتِ في أكاديمية حسوب تقومين بإنشاء حساب وتغيير صورتك ونشر سؤال والتعليق ورفع ملفات وصور وخلافه. لكن الفرق بين أكاديمية حسوب وموقع فيسبوك هو أن فيسبوك عبارة SPA أي تطبيق من صفحة واحدة، بمعنى أنه يتم إنشاء محتوى الصفحة بالكامل في وقت واحد باستخدام لغة برمجة جافا سكريبت، وبالتالي المستخدم لا يحتاج إلى تحميل صفحة جديدة كلما قام بإجراء تغيير، مثل التفاعل مع منشور أو مشاركة صورة. وذلك النوع من تطبيقات الويب الديناميكية له مزايا فريدة مثل تحديث المحتوى بدون الحاجة إلى إعادة تحديث الصفحة وأيضًا القدرة على التنقل السريع ومزايا أخرى.
    1 نقطة
  22. تنمو مجالات علوم الحاسب وهندسة البرمجيات أسرع من بقية مجالات العمل الأخرى، وتوفر للراغبين بدخوله مجموعة واسعة من الفرص والوظائف، فمعظم الصناعات اليوم تحتاج إلى مهندسي البرمجيات لتسيير أعمالها الرقمية. لذا سنشرح في مقال اليوم مجال هندسة البرمجيات الذي يعد أحد أهم التخصصات المطلوبة اليوم، ونوضح فرص العمل التي يمكن لمهندس البرمجيات التخصص بها، ونوفر مجموعة من النصائح الضرورية لتعلم هندسة البرمجيات بأقصر الطرق دون الحاجة لوجود أي خبرة تقنية مسبقة أو سلوك المسار الجامعي الطويل، ونختم المقال بأهم الميزات والتحديات المرتبطة بهذا التخصص لتكتشف بنفسك هل هذا المسار الوظيفي مناسب لك أم لا؟ ما هي هندسة البرمجيات؟ هندسة البرمجيات Software Engineering هي تخصص يهتم بتطبيق المبادئ الهندسية في تصميم البرمجيات وتطويرها وتنفيذها، وكما تلاحظ تتكون هندسة البرمجيات من كلمتين هما البرمجيات والهندسة ولتبسيط الأمور يمكنك القول أن هندسة البرمجيات هي العلم الذي يمكنك من تطبيق مفاهيم الهندسة على البرمجة. فإذا كانت البرمجة هي التي تمكنك من تطوير البرامج وكتابة شيفرات قابلة للتنفيذ، فالهندسة هي التي توفر لك تقنيات وآليات تساعدك في تنظيم عملك البرمجي بأفضل طريقة ممكنة وتضمن لك الجودة في كل مرحلة من مراحل إنتاج البرمجيات بدءًا من تحليل متطلبات البرنامج مرورًا بكتابة أكواده البرمجية وانتهاءً بصيانته وتحسينه. ومن خلال الجمع بين البرمجة وبين مبادئ الهندسة ستتمكن من إنشاء برامج وأنظمة ضخمة واحترافية قادرة على حل جميع أنواع المشكلات التي تواجه المستخدمين والشركات وتلبية متطلباتهم مهما كانت كبيرة ومعقدة. ما أهمية تخصص هندسة البرمجيات؟ برزت الحاجة إلى هندسة البرمجيات نتيجة لزيادة الطلب على البرامج والتغييرات الكبيرة في متطلبات المستخدمين والبيئات البرمجية فكان لا بد من إيجاد حل يسهّل عملية بناء هذه البرامج الضخمة واعتماد مبادئ هندسية تجعل عملية تطوير البرمجيات أسرع وأقل تكلفة وأسهل في التطوير وإجراء التحسينات. ولتوضيح الأمر بشكل أبسط لنفترض أنك تريد بناء منزل صغير وبسيط وطلبت من مقاول القيام بذلك، قد يبني لك المقاول المنزل المطلوب بنفسه بناء على خبرته العملية السابقة دون اتباع أي طرق علمية، لكن بالطبع لن يكون المنزل الذي ستحصل عليه بنفس جودة المنزل في حال بناه مهندس محترف، وقد يرتكب المقاول بعض الأخطاء البسيطة التي قد لا تنتبه لها بسبب صغر مساحة البيت وقلة حجم المتطلبات. الآن ماذا لو طلبت من نفس المقاول تشييد مبنى من 10 طوابق! بالطبع لن يتمكن من تلبية طلبك وقد يجازف ويوافق على طلبك وهنا ستكون الكارثة وسيفشل المشروع بعد فترة وجيزة، وقد ينهار المبنى قبل اكتماله بسبب جهل المقاول بالقواعد الأساسية التي تطبق لإنجاز البناء والنظريات المتعلقة بمقاومة المواد المطلوبة للبناء وسيتأخر إنجاز العمل ككل بسبب سوء التقديرات المناسبة للوقت والمواد المطلوبة. فكي تنجح في تشييد مبنى ضخم تحتاج إلى فهم وتطبيق مختلف تقنيات الهندسة المدنية والمعمارية خلال عملية البناء وإلى التخطيط المسبق والجيد لكافة الخطوات وتقدير الكميات وكلف المواد والأوقات اللازمة لإنجاز العمل، بعدها يمكنك أن تبدأ عملية البناء وأنت على دراية أكبر بسير العمل. الوضع نفسه ينطبق على مشاريع تطوير البرمجيات ففي حال كنت بحاجة لتطوير برنامج بسيط يحل مشكلة بسيطة يمكن أن ينجزه لك أي مبرمج وينجح في كتابة كود برمجي يحقق لك المطلوب مباشرة، لكنه بالتأكيد سيفشل في تطوير برمجيات ضخمة بمتطلبات معقدة تحتاج لكتابة آلاف الأسطر البرمجية إذا لم يكن على دراية بمبادئ هندسة البرمجيات ولم يقم بتسخير علم الهندسة وتوظيفها بشكل صحيح في بناء هذه البرمجيات. ويمكن هنا أن تلاحظ ما الفرق بين مطور التطبيقات ومهندس البرمجيات، فالمبرمج يمكن أن ينفذ المشروع ويكتب الكود البرمجي الخاص به وهو ما يعرف بتحقيق المشروع أو تنفيذه "Implementation" أما مهندس البرمجيات فيقوم بأكثر من ذلك بكثير فهو يخطط ويحلل متطلبات المشروع ويقدم أنسب الحلول لتحقيق المشروع بناءً على معرفته وخبرته الهندسية قبل البدء الشروع بكتابة الكود ويكون لديه تصور واضح عن العمل الذي يتم إنجازه بكافة مراحله. ما الفرق بين هندسة البرمجيات وعلوم الحاسوب؟ إذا كنت تتساءل عن الفرق بين هندسة البرمجيات وعلوم الحاسوب وهل هما الشيء نفسه؟ فيمكننا القول باختصار أن هندسة البرمجيات هي أحد المجالات الفرعية لعلوم الحاسوب وهي تركز على الحلول العملية وتمكننا من إنتاج برمجيات تحقق أعلى جودة بأقل وقت وتكلفة. لا تركز هندسة البرمجيات على تعليمك البرمجة وتطوير البرامج والتطبيقات المختلفة فحسب، بل تمكنك من تطوير هذه التطبيقات بأفضل طريقة وتعلمك منهجيات مختلفة لتطوير البرمجيات والمراحل التي يمر بها البرنامج خلال دورة حياته والتي تشمل التخطيط والتصميم وكتابة الكود البرمجي وصولاً لنشر البرنامج وصيانته إضافة لمهارات أخرى عديدة مثل التواصل الفعال وإدارة المشاريع. أما علوم الحاسوب فهي مجال أكثر تجريدًا وشمولية من هندسة البرمجيات ويركز بشكل أكبر على المفاهيم النظرية ومعمارية الحاسوب وطريقة عمله ويهتم بالخوارزميات ومعالجة البيانات وقواعد البيانات والذكاء الاصطناعي وأمن الشبكات …إلخ. كيف أتعلم هندسة البرمجيات؟ إذا وصلت لهذه الفقرة فلا بدّ أنك مهتم بتعلم هندسة البرمجيات وتتساءل عن المهارات الأساسية التي عليك تعلمها للتخصص في هذا المجال ودخول سوق العمل، وهنا دعني أخبرك أن أمامك طريقين أولهما هو الدراسة الأكاديمية المتخصصة في إحدى الجامعات وفي هذه الحالة قد تطول مدة دراستك لسنوات وقد تضطر لدراسة العديد من المواد النظرية التي لن تفيدك على الإطلاق في حياتك العملية، أو قد تضطر إلى دخول فرع علوم الحاسوب ثم التخصص في مجال هندسة البرمجيات في الدراسات العليا أي أنت مرتبط بحسب ما توفره المؤسسة التعليمية التي تنوي الالتحاق بها. وثانيهما هو التعلم الذاتي من المصادر الموثوقة والمنهجية المتوفرة عبر الإنترنت وهو طريق مختصر يركز على الجانب العملي ويمكنك من دخول سوق العمل بسرعة أكبر، ولحسن الحظ لم تعد معظم شركات التقنية تتطلب امتلاك شهادة متخصصة للعمل في مجال هندسة البرمجيات، وتركز بشكل أكبر على امتلاك الخبرة الكافية فيه. فيمكنك من خلال التعليم الذاتي والتدريب العملي اكتساب الخبرة الكافية كي تكون مؤهلًا للعمل في هذا المنصب، وإن كان الجمع بين المهارات والحصول على شهادة اختصاصية في مجال هندسة البرمجيات أو تطوير البرمجيات أو علوم الحاسوب أو الرياضيات أو أي مجال مشابه يوفر لك بلا شك فرصًا أفضل. وفي هذا الصدد أود مشاركة نتائج جديرة بالانتباه من أحدث استطلاع رأي نشره موقع Stack Overflow الشهير نهاية عام 2022 والذي يجمع كبار المبرمجين المحترفين حول العالم حيث أظهر أن الغالبية العظمى من المطورين المشاركين لم يتعلموا البرمجة من الكليات والجامعات وإنما تعلموها بشكل ذاتي من مصادر التعلم المختلفة والدورات التدريبية عبر الإنترنت، ولا عجب في ذلك فمصادر التعلم عبر الانترنت ليست متنوعة فحسب بل تتميز بأنها تُحدَّث باستمرار لتواكب عالم البرمجيات المتغير والمتجدد. وإذا كنت تبحث عن المزيد من الطرق والخيارات لتعلم البرمجة بسرعة وكفاءة، يمكنك الاطلاع على مقال كيف تتعلم البرمجة: نصائح وأدوات لرحلتك في عالم البرمجة. وكي تتعلم هندسة البرمجيات تحتاج بالطبع لأن تعرف أساسيات البرمجة وتحترف استخدام إحدى لغات البرمجة الشهيرة مثل جافا أو بايثون أو C++‎ كما تحتاج لأن تكون على دراية بأسس التفكير المنطقي والخوارزميات والأنماط البرمجية المختلفة مثل البرمجة كائنية التوجه OOP التي تسهل عليك عملية تصميم البرامج وتمكنك من تنظيمه ضمن كائنات تشبه كائنات العالم الحقيقي وأنماط التصميم التي تمكنك من اتباع حلول محددة لحل مشاكل برمجية معينة بشيفرة مكتوبة بشكل نموذجي وموثوق. كما تحتاج لتعلم مفهوم قواعد البيانات وأنواعها المختلفة ونظم إدراة قواعد البيانات وكيفية تخزين ومعالجة البيانات فيها وإجراء العمليات المختلفة عليها لإنشاء وحفظ بيانات التطبيقات والبرامج والتعامل معها بكفاءة. وبالطبع ستحتاج لتعلم أساسيات الهندسة وأهمها أساسيات الرياضيات حيث قد تتطرق إلى بعض المفاهيم الهندسية والرياضية، وغالبًا إن أتيت من خلفية دراسية علمية وانتهيت من مراحل الدراسة الثانوية فهذا يكفي للبداية والانطلاق، وأيضًا تحتاج إلى فهم دورة حياة البرنامج والمنهجيات المختلفة لتطوير البرمجيات وإدارة المشاريع البرمجية وتوثيق البرمجيات وضمان جودتها وطرق اختبارها. عند هذه النقطة يمكنك دخول سوق العمل والبحث عن فرص باسم مهندس برمجيات ويمكنك حينها أن تتخصص في مجال برمجي محدد كتطوير الويب أو أمن المعلومات أو تطوير الألعاب أو غيرها من المجالات المتنوعة، وتتعلم التقنيات والأدوات التي تؤهلك للعمل في أحد التخصصات تلك واحترافه. إذا كنت مهتمًا بمعرفة المزيد عن أسس هندسة البرمجيات وترغب في مصدر يمكنك من اكتساب كافة المهارات الضرورية التي تمكنك من بدء حياتك المهنية في هذا المجال ولكنك متردد لكونك لا تملك أي معرفة مسبقة حول مبادئ عمل الحاسوب أو مفاهيم البرمجة الأساسية فقد وفرت لك أكاديمية حسوب دورة علوم الحاسوب التي تأخذ بيدك خطوة بخطوة للبدء وتدمج لك المفاهيم النظرية والعملية في دورة مكثفة غنية بالمعلومات. تمتد دورة علوم الحاسب لأكثر من 60 ساعة تدريبية يمكنك أن تتعلم من خلالها الكثير عن الحاسوب ومكوناته وطريقة عمله وعن أنظمة التشغيل وقواعد البيانات ومبادئ البرمجة وكتابة الكود وتطوير الويب وأسس هندسة البرمجيات وغيرها الكثير من المعلومات المتجددة التي تكسبك الخبرة التي تحتاجها وتمنحك في النهاية شهادة معتمدة وتوفر لك فرصة عمل مناسبة لبدء مسارك المهني. مجالات عمل اختصاص هندسة البرمجيات قد تتساءل بعد أن تعلمت كل المهارات الضرورية للعمل كمهندس برمجيات أو مطور برمجيات هل يمكنني الحصول على فرصة عمل مناسبة لتخصصي وما هي مجالات العمل التي يمكنني العمل بها؟ والجواب نعم ستجد فرصة عمل تناسبك بلا شك فالطلب على مهندسي البرمجيات في سوق العمل كبير ومتنامٍ، فلا تكاد توجد مؤسسة أو صناعة أو قطاع من قطاعات العمل في عصرنا الحالي إلا وتحتاج للحلول البرمجية والتقنية لتحسين أداء عملها وتهتم بتوظيف مهندسي البرمجيات للاستفادة من خبراتهم ومهاراتهم في تطبيق هذه الحلول. لكن عند البحث عن مجال للعمل في مجال هندسة البرمجيات سيكون عليك التركيز على العمل أو التخصص في مجال محدد، فعندما تطلب الشركات والمؤسسات مهندسي برمجيات تحدد غالبًا مهندسين بتخصص معين، وفيما يلي قائمة بأهم تخصصات العمل التي يمكن لمهندسي البرمجيات العمل بها وما التقنيات اللازمة لها: مطور ويب مطور الويب هو الشخص المسؤول عن تصميم وإنشاء مواقع وتطبيقات الويب المختلفة، ويمكن أن يتخصص في تطوير الواجهة الأمامية للموقع التي تعمل من طرف العميل أو تطوير الواجهة الخلفية التي تعمل من طرف الخادم أو يقوم بكلا الأمرين معًا ويطلق عليه في هذه الحالة اسم مطور ويب كامل "Full-Stack". يمتلك مطورو الويب معرفة قوية باستخدام تقنيات الويب ولغات البرمجة مثل HTML و CSS وجافا سكربت وأجاكس …إلخ. ويقومون بكتابة تعليمات برمجية لإنشاء مواقع الويب ودمج قواعد البيانات مع الموقع الويب وتطوير ميزات جديدة للموقع الويب وصيانته. يمكنك الرجوع إلى مقال تعلم تطوير الويب لمزيد من التفصيل حول هذا التخصص. مطور تطبيقات الهاتف المحمول يعد تطوير تطبيقات الهاتف المحمول من مجالات هندسة البرمجيات الأكثر طلبًا في سوق العمل ومطور التطبيقات هو المسؤول عن إنشاء واختبار وبرمجة تطبيقات الهواتف المحمولة والأجهزة اللوحية المختلفة وهو يطور تطبيقات لأهداف عامة أو تطبيقات مخصصة لتلبية احتياجات محددة للعملاء. كي تعمل كمطور تطبيقات هاتف يجب أن تمتلك معرفة قوية بلغات برمجة مثل جافا سكربت وكوتلن وسويفت و Objective-C وأن تمتلك معرفة جيدة بأنظمة تشغيل الهواتف المحمولة مثل iOS و Android. إن أردت المزيد من المعلومات، فارجع إلى مقال برمجة تطبيقات الجوال. أخصائي دعم تقني يمكن لمهندس البرمجيات العمل كذلك كاختصاصي دعم تقني، وهذا المجال يحتاج إلى فهم شامل للبرمجيات والأجهزة وأنظمة الشبكات كي يوفر الدعم الفني التقني اللازم للشركات وموظفيها، ويحل مشكلات الأجهزة والبرمجيات والشبكات الحاسوبية ويقوم بتثبيت البرامج اللازمة وتحديثها وإصلاح أي خلل بها …إلخ. محلل أنظمة أو محلل نظم معلومات يحتاج محلل الأنظمة لامتلاك معرفة متعمقة بالأنظمة والبرامج وتحديد أفضل الطرق للاستفادة من موارد المؤسسة التي يعمل بها لأداء العمل بفعالية. فمهندس الأنظمة مسؤول عن تحديد احتياجات البنية التحتية التقنية وتحليل التكلفة والعوائد اللازمة لإعداد أنظمة المعلومات في المؤسسات والشركات التي يعمل بها. محلل أمن معلومات محلل أمن المعلومات هو المسؤول عن الحفاظ على أمان الحواسيب والشبكات ويجب أن يكون خبيرًا بتقنيات التشفير وجدران الحماية وتقييم المخاطر ويقدم التوصيات لتحسين وحماية البيانات الحساسة للشركة التي يعمل بها ويحدد الثغرات ونقاط الضعف التي تخل بأمن هذه البيانات. مسؤول قواعد البيانات يهتم مسؤول قواعد البيانات بإنشاء وتصميم قواعد البيانات ويعنى بإدارة وصيانة قواعد بيانات الشركة والحفاظ على استقرارها وإجراء النسخ الاحتياطية لقاعدة البيانات وتعديلها عند الحاجة، ويجب أن يمتلك معرفة قوية بلغات قواعد البيانات التقليدية أو العلائقية مثل Oracle و Microsoft SQL Server و DB2 أو قواعد البيانات غير العلائقية المصممة للتعامل مع البيانات الضخمة. للمزيد حول مجال قواعد البيانات، ارجع إلى مقال دليلك الشامل إلى قواعد البيانات. مهندس ضمان الجودة يهتم مهندس ضمان الجودة بوضع الخطط التي تضمن جودة تطوير البرمجيات ويحدد المشكلات التي قد تظهر أثناء عملية التطوير ويمتلك فهمًا جيدًا بدورة حياة تطوير البرمجيات ويعمل مع المطورين الآخرين في الفريق لتحديد وسائل التحسين الممكنة. كما يمكن لمهندس البرمجيات العمل في العديد من المجالات المهمة الأخرى مثل: مهندس DevOps محلل معلومات الأعمال مسؤول عن اختبار جودة البرمجيات QA Tester مبرمج ألعاب مهندس ذكاء صنعي مشرف على مختبرات الحاسوب مدرس برمجة وحاسوب ويمكنك الاطلاع على المزيد من المعلومات حول أكثر مجالات العمل انتشارًا في مقال مجالات البرمجة. كيف أبدأ بالعمل في أحد مجالات هندسة البرمجيات؟ لتعمل في أحد تخصصات أو مجالات هندسة البرمجيات التي ذكرناها في فقرتنا السابقة من الضروري أن تركز على تعلم اللغات والتقنيات التي ترتبط بشكل وثيق بالمجال أو التخصص الذي تفضل العمل فيه. لا تهمل كذلك تعلم المهارات غير الفنية كإدارة الوقت والتحكم بالتوتر والتنظيم والتخطيط والتفكير خارج الصندوق والعمل الجماعي والعمل مع العملاء ومهارات التواصل الفعال مع العملاء والقدرة على تحديد احتياجاتهم فهي ضرورية لك كمهندس برمجيات لأنك ستحتاج للتعامل مع فئات مجتمعية مختلفة كالبائعين والعملاء والمدراء وأعضاء الفرق المختلفة، وأصحاب العمل يقدرون الأفراد الذين يمتلكون مهارات ناعمة ويفضلون توظيفهم. وبعد أن تطور مهاراتك سواء التقنية وغير التقنية، عليك أن تضعها موضع التطبيق العملي وتحرص على إنجاز مشاريع عملية وتطوير برامج لشركات حقيقية أو وهمية لبناء معرض أعمال مناسب، كما يمكنك الانضمام إلى مشاريع مفتوحة المصدر فهذا يوفر لك طريقة رائعة لوضع مهاراتك موضع التنفيذ وتعزيز محفظة أعمالك. فأعمالك في النهاية هي التي ستتحدث عنك وهي التي ستفتح لك الأبواب والفرص المناسبة في سوق العمل. إذا قمت بكل ما سبق ستجد أمامك بالتأكيد الكثير من فرص العمل المتنوعة، وإذا كنت مهندس برمجيات مبتدئ أنصحك أن تبحث فورًا عن أول فرصة عمل مناسبة في شركة ملائمة حتى لو كانت شركة محلية وصغيرة لأجل اكتساب الخبرة لأن الخبرة في هذا المجال أمر مهم للتقدم الوظيفي، بعدها يمكنك الانتقال لشركات أكبر وذات رواتب مجزية. أخيرًا إذا كنت ترغب في العمل والتخصص في مجال هندسة البرمجيات، لكنك متردد حول إيجابيات وسلبيات هذا المجال وتراودك تساؤلات وشكوك فيما إذا كانت هذه المهنة مناسبة لك فعلًا، دعنا نختم مقالنا بمناقشة أبرز المزايا والعيوب المحتملة للعمل كمهندس برمجيات لعل ذلك يساعدك على اتخاذ القرار الأنسب لمستقبلك المهني. إيجابيات وسلبيات تخصص هندسة البرمجيات سنناقش أخيرًا إيجابيات وسلبيات هذا المجال الواسع الكبير، فلكل شيء في النهاية مزايا ومحاسن ويجب على الداخل الجديد إلى أي مجال معرفتها. إيجابيات تخصص هندسة البرمجيات يوفر تخصص هندسة البرمجيات العديد من الفوائد والإيجابيات وأهمها: تعد هندسة البرمجيات من الوظائف الأعلى أجرًا. الطلب على هندسة البرمجيات مرتفع ومعدل نموها أعلى من المهن الأخرى. حرية العمل عن بعد من داخل المنزل إما بمفردك أو مع فريق عمل وضمن ساعات عمل مرنة. إمكانية بدء مشروعك الخاص بأقل التكاليف، كل ما تحتاجه للبدء هو جهاز حاسوب واتصال بالإنترنت. القدرة على تطوير برامج ضخمة ومعقدة عالية الجودة لم تكن لتتمكن من إنجازها بنجاح دون تطبيق مبادئ هندسة البرمجيات. تطوير مهاراتك الحياتية وقدرتك على فهم المنطق وتحسين كفاءتك في حل المشكلات والتعامل مع التوتر والضغوطات. مهارة عالية في التكيف بسرعة مع أي تطورات تقنية جديدة، فالتقنية تتطور باستمرار ومهندسو البرمجيات أشخاص منفتحون على تعلم أشياء جديدة كل يوم. سلبيات تخصص هندسة البرمجيات لاشك أن أي مجال لا يخلو من بعض الجوانب السلبية، وفيما يلي نذكر لك أبرز التحديات التي قد تواجهك عند العمل في مجال هندسة البرمجيات: إذا قررت العمل كمهندس برمجيات فستضطر إلى الجلوس وراء حاسوبك لفترات طويلة جدًّا وهذا قد يعرضك لمشكلات صحية ويمكنك التغلب عليها باتباع نظام صحي ولعب تمارين رياضية. مهنة مرهقة وتشكل الكثير من الضغوط وقد لا تجد فيها الكثير من أوقات الفراغ لا سيما عند العمل في ظل قيود زمنية ومواعيد نهائية للتسليم قد تضطرك للعمل لوقت متأخر وفي أيام العطل. مهنة تتطلب الصبر والتركيز والانتباه الشديد للتفاصيل سواء في مرحلة كتابة الكود أو التصحيح أو الاختبار، وقد تضطر إلى قضاء ساعات في التنقل عبر الشيفرات البرمجية لاكتشاف سبب مشكلة أو إصلاح مشكلة معينة. قد تميل إلى العزلة والوحدة خاصة إذا كنت تعمل من المنزل مما يؤثر على حياتك الاجتماعية وتواصلك مع الأصدقاء. مجال هندسة البرمجيات متجدد ومتسارع النمو وهذا يتطلب منك التعلم المستمر وتطوير نفسك وتعلم أي أدوات وتقنيات جديدة لتضمن النجاح والاستمرارية. يجب أن تبقى حريصا على مسألة الأمان وتحرص على حماية نفسك وعملائك من هجمات المتسللين الذين يحاولون سرقة البيانات أو تخريبها وتحرص على اتخاذ الاحتياطات الأمنية المناسبة كي لا تفقد ثقة عملائك. ورغم ما سبق من سلبيات تذكّر أنك تستطيع تجاوزها إذا كنت تمتلك الشغف في مجال التقنية والبرمجة وكنت منفتحًا على تعلم كل جديد. الخلاصة تعرفنا في مقال اليوم على تخصص هندسة البرمجيات الذي يساعدنا على تطوير منتجات برمجية متطورة فعالة وموثوقة تعمل بأعلى جودة وأقل تكلفة وزمن، ووضحنا أهم المجالات التي يمكن لمهندس البرمجيات العمل فيها وأبرزها تطوير مواقع الإنترنت وتطبيقات الجوال أو الحفاظ على الأمن الإلكتروني للمؤسسات وغيرها من المجالات العديدة، وتناولنا في الختام أبرز إيجابيات وسلبيات العمل كمهندس برمجيات. وفي الختام تذكّر أن تعلّم هندسة البرمجيات طريق طويل يتطلب وقتًا وجهدًا، لكنه في ذات الوقت متاح للتعلم الذاتي بشكل مختصر بفضل توفر موارد تعلم رائعة عبر الإنترنت من دروس ومقالات ومقاطع فيديو وبودكاست وغيرها من المصادر المتنوعة التي تتيح لك التركيز على الموضوعات التي تهمك. هل أنت مهتم بأحد مجالات هندسة البرمجيات وترغب في تعلمه أو بدأت به فعلًا؟ شاركنا رأيك في المجال المفضل لديك وكيف تعلمته وما هي أبرز التحديات التي واجهتك في هذا المجال وكيف تخطيتها؟ اقرأ أيضًا الطريقة الأمثل لدراسة تخصص هندسة البرمجيات دليلك الشامل إلى برمجة التطبيقات دليلك الشامل لتعلم البرمجة تعرف على مجال تحليل البيانات علم البيانات Data science: الدليل الشامل
    1 نقطة
  23. redux toolkit تُعد نسخة مُبسطة من الredux , على سبيل المثال في redux لتغيير الstate نقوم بكتابة التالي return{ ...state, counter:state.counter+1; } حيث نقوم بإرجاع كائن جديد يحتوي جميع خصائص الstate القديمة مع القيمة الجديدة, بينما في redux toolkit يمكننا فقط إرجاع الخصائص المُعدلة في state وتقوم redux toolkit بشكلٍ أوتوماتيكي بالتعامل مع الأمر return{ counter:state.counter+1; } على سبيل المثال أيضًا الredux-devtools يجب تفعيله في redux const store = createStore( reducer, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__() ); بينما في redux toolkit لا تحتاج أن تقوم بتعريف الredux-devtools حيث يتم إنشاؤها تلقائيًا const store = configureStore( reducer:rootReducer );
    1 نقطة
×
×
  • أضف...