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

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

  1. Wael Aljamal

    Wael Aljamal

    الأعضاء


    • نقاط

      8

    • المساهمات

      6975


  2. Suhaib Hassan

    Suhaib Hassan

    الأعضاء


    • نقاط

      7

    • المساهمات

      13


  3. Adam Ebrahim

    Adam Ebrahim

    الأعضاء


    • نقاط

      5

    • المساهمات

      165


  4. عبدالله عبدالرحمن11

    • نقاط

      3

    • المساهمات

      526


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

المحتوى الأعلى تقييمًا في 06/03/21 في كل الموقع

  1. 1 نقطة
  2. مرحباا يشباب ممكن بعد اذن الجميع سوال سريع... انا دلوقتي كنت بعمل تغذية بصرية لقيت غلاف لصفحة فيس بوك عجبتني الفكره خت الفكرة حتطها في كرت شخصي معا بعض التغيرات من عنديي في بعض الالوان والخطوط والصور وكده وعملت الكرت الشخصي وجهين معا بعض التغيرات الكثيره من عندي.... ملحوظة انا مختش الفكرة كلهاا انا خت حاجه بسيطاا كانت رسماا بي الشاب عملت زيها وحطيت فيها صوره هيا دي بس... دلوقتي بعض مخلاصت الكرت اقدر اقول انوو الكرت دي بتعيي وال انا كده سرقووو #بشكر اكاديمية حسوب جداا عشان من خلالها قدرت اتواصل معا ناس محترمة زيكووو
    1 نقطة
  3. انا اصمم صور مصغرة منذ سنة والى الان لم تأتني اي مبيعة مع العلم ان الصور المصغرة التي اصممها احترافية
    1 نقطة
  4. أحاول أن أقوم بعمل دالة تقوم بإرجاع قيم ثابتة fixed بناءً على مدخل معين للدالة. في لغات أخرى مثل C أو PHP كنت سأستعمل جملة switch أو case لكن في بايثون لا أعتقد أنه توجد جملة switch من الأساس. ما أفضل حل للقيام بمثل هذا الأمر حسب معايير PEP؟ أستعمل python 3.10 (أحدث إصدار)
    1 نقطة
  5. أحاول أن أقوم بتخزين مسار مجلد سطح المكتب في متغير path كالتالي: >>> x = 'C:\Users\name\Desktop' ولكن أحصل على الخطأ التالي: File "<stdin>", line 1 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape وعندما أحاول تخزين مسارات أخرى وطباعتها، يتم طباعتها في سطرين مختلفين كالتالي: >>> x = 'C:\Windows\System32\networklist' >>> print(x) C:\Windows\System32 etworklist >>>
    1 نقطة
  6. يعود السبب لوجود \ backslash وهو محرف تحكم. مثلا في الحالة الثانية لاحظ وجود n\ وهذا رمز تحكم لعمل سطر جديد. يمكن حل المشكلة بكتابة حرف r قبل السلسلة النصية التي تعبر عن المسار ليتم اعتبارها row string ولا يتم تفسير محتواها: >>> x = r'C:\Users\name\Desktop' ^^^
    1 نقطة
  7. الخطأ 500 هو خطأ عام فالأفضل أن تٌفعل وضع التطوير و التصحيح حتى تظهر الأخطاء الفعلية التي تُسبب المُشكلة من خلال APP_DEBUG=true في ملف env. تحتاج إلى إستيراد كلاس File الذي تستخدمه تأكد من ذلك: use Illuminate\Support\Facades\File; إن كان profiles عبارة عن مجلد فينقصك / في مسار الملف: if(File::exists(public_path('images/profiles/' . $fileName))){ File::delete(public_path('images/profiles/' . $fileName)); } قد تكون المُشكلة مُشكلة أذونات على الملفات تأكد من إعطائك الأذونات الصحيحة للملفات. إن كنت قد غيرت مكان مجلد public أو قمت بحذفه لسبب ما على الخادم تحتاج إلى تغيير الدالة public_path حتى تقوم بإرجاع المسار الصحيح كما يلي في الملف index.php: $app->bind('path.public', function() { return __DIR__; });
    1 نقطة
  8. الفكرة هي وجود Form أو بنية من HTML خاصة بالتعليق، وخلال PHP نقوم بعمل استعلام عن البيانات وجلبهم و حشرهم في هذه البنية. <?php $sql_statememt = "select * from comments"; $result = $conn -> excute($sql_statememt); while ( $row = fetch ($result) ) { echo '<p>' . $row['data'] . '</p> </br>'; } هذا مثال توضيحي لخطوات الحل، جلب البيانات المرور عليهم سطر سطر طباعة البيانات ضمن بنية HTML مناسبة (سوف يتكرر عرض هذا الجزء لكل سطر من البيانات)
    1 نقطة
  9. وجدت كود يحتوي على بعض الأصناف classes ومن ضمن هذه الخصائص وجدت أنها تسمى بهذه الطريقة __var = “value” شرطتين سفليتين ( _ _ )المشكلة أن هذه الخصائص لا يتم طباعتها عندما أحاول ذلك وأحصل على الخطأ التالي: AttributeError: 'X' object has no attribute '__var' ما هي هذه المتغيرات وهل توجد طريقة لطباعتها أو الحصول على قيمتها؟
    1 نقطة
  10. يقوم Double Pre Underscores بإخبار مترجم Python بإعادة كتابة اسم السمة للفئات الفرعية لتجنب تعارض التسمية. Name Mangling: - يقوم مترجم Python بتغيير اسم المتغير بطريقة تجعل من الصعب الصدام عندما يتم توريث الفئة. بما معناه أن البايثون يقوم بتغيير الأسم حتى لا يكون هناك اي تصادمات بين اسماء المتغيرات الموجود فحتى لو حاولت أستخدام اوبجت من الصنف ثم قمت بإستخدام أسم هذا المتغير حتى تقوم بتغييره أو طباعته فلن يكون موجود على الإطلاق لانه تم تغيير أسم المتغير بهذه الطريقة class Sample(): def __init__(self): self.a = 1 self._b = 2 self.__c = 3 obj1 = Sample() dir(obj1) فلن يقوم بطباعة الخاصية __c أما أن أردت طباعتها قستقوم بالتتالي print(obj1._Sample__c) تعمل هذه الحاصية حتى يتم التفريق بين المتغيرات و خصوصا بالتوريت فأذا اردت أستخدام نفس أسم المتغير في الأصناف التي يتم توريثها من صنف آخر فما عليك سوي وضع هاتين الشرطتين و هنا سأقوم بوضع مثال على التوريث كالتالي class Sample(): def __init__(self): self.a = 1 self._b = 2 self.__c = 3 #هنا صنف ثاني يرث من الصنف الأول class SecondClass(Sample): def __init__(self): super().__init__() self.a = "overridden" self._b = "overridden" self.__c = "overridden" obj2 = SecondClass() print(obj2.a) #سيقوم بطباعة override print(obj2._b) #سيقوم بطباعة override print(obj2.__c)# سيقوم بإعطاء أنه لا يوجد متغير بهذا الأسم # لكن هنا يمكنك أن تستخدم المنغير للصنف الأول و الثاني أيضا بهذا الطريقة print(obj2._SecondClass__c) #سيطبع overridden print(obj2._Sample__c) # سيطبع 3
    1 نقطة
  11. حاول التثبيت من خلال أداة wheel : python install wheel فهي تقوم بتحميل المكتبات المترجمة Compiled. أو عليك تنصيب : Microsoft Visual C++ Compiler for Python x.y.z حسب إصدار بايثون لديك
    1 نقطة
  12. هناك طرق كثيرة ويمكنك استخدام المكتبة Sikit-Learn لتنفيذها مباشرة: 1.Standardization: وهي العملية الأكثر شهرة , وفيها يتم طرح القيمة ناقص ال mean مقسومة علي الانحراف المعياري std. # StandardScaler استيراد الصف from sklearn.preprocessing import StandardScaler # القيام بعملية التقييس StandardSca = StandardScaler(copy=True) #StandardScaler تعريف غرض من الصف # copy=True لكي لايعدل على البيانات الأساسية أي سينشئ نسخة عن البيانات ويطبق عليها التقييس data = StandardSca.fit_transform(data) # StandardScaler استدعاء التابع الذي ينفذ عملية التقييس من الصف 2.MinMaxScaler: يتم فيه طرح القيمة من المتوسط وتقسم على المدى (الفرق بين أكبر وأصغر قيمة) وتكون القيم الجديدة بين 0 و 1. #MinMaxScaler استيراد الصف from sklearn.preprocessing import MinMaxScaler MinMaxSc = MinMaxScaler(copy=True, feature_range=(0, 1)) # يمكننا تغيير المجال data = MinMaxSc.fit_transform(data) 3.Binarizer: تقوم بتحويل القيم إلى 0 أو ، بناءان على قيمة العتبة threshold الممرة from sklearn.preprocessing import Binarizer Binarize = Binarizer(threshold = value) data = Binarize.fit_transform(data) 4.Normalizer: مخصصة لتناول كل صف علي حدة في المصفوفات ثنائية الأبعاد. from sklearn.preprocessing import Normalizer Normalize = Normalizer(copy=True, norm='l2') # max يمكنك تغيير النورم الى 11 أو data = Normalize.fit_transform(data) 5.FunctionTransformer: للقيام بالتقييس باستحدام دالة نعرفها بأنفسنا. from sklearn.preprocessing import FunctionTransformer ''' FunctionTransformer(func=None, inverse_func=None, validate= None, accept_sparse=False,pass_y='deprecated', check_inverse=True, kw_args=None,inv_kw_args=None) ''' scaler = FunctionTransformer(func = lambda x: x**2,validate = True) data = scaler.fit_transform(data)
    1 نقطة
  13. يمكننا الاعتماد على المكتبة Scikit-learn لعمل Scale للبيانات: # تضمين pandas import pandas as pd # تضمين حزمة StandardScaler from sklearn.preprocessing import StandardScaler # قراءة البيانات من ملف CSV data = read_csv('Geeksforgeeks.csv') data.head() # تهيئة Scaler scaler = StandardScaler() # scale data scaler.fit(data) StandardScaler هو المعيار الافتراضي يتعلق بالوسيط في البيانات mean
    1 نقطة
  14. السبب في المُشكلة أنك لا تقوم بإرجاع النتائج من الإستعلام فحالياً المُتغير res يحمل نُسخة من باني الإستعلامات فقط ( Query Builder ) و لا يحتوي على نتيجة ذلك الإستعلام لجلب النتائج إستخدم التابع get بالشكل التالي: $res = DB::table('book_author') ->join('books', 'books.id', '=', 'book_author.book_id') ->where('book_author.author_id', '=', $author_id) ->where('book_author.book_id', '=', $book_id) ->get(); حيث أن التابع get سيقوم بإرجاع collection ثم بإمكانك التحقق من وجود نتائج بالشكل التالي: if($res->isNotEmpty()){ return true; } else{ return false; }
    1 نقطة
  15. كيف نقوم بحذف أعمدة محددة من ال Dataframe؟
    1 نقطة
  16. يمكننا استخدام مكتبة pandas ولحذف عمود نستخدم الدالة drop كالتالي: # تضمين المكتبة import pandas as pd # إنشاء قاموس data = { 'A':['A11', 'A22', 'A33'], 'B':['B11', 'B22', 'B33'], 'C':['C11', 'C22', 'C33'], } # تحويل القاموس ل dataframe df = pd.DataFrame(data) # حذف العمود 'A' df.drop(['A'], axis = 1) لحذف عدة أعمدة، نمرر أسمائهم في قائمة: df.drop(['B', 'C'], axis = 1)
    1 نقطة
  17. بإمكانك إستخدام الدالة dict مع الدالة sorted للوصول إلى ما تريد: d = {2:True, 1:False, 4:None, 3:"Hi"} sortedD = dict(sorted(d.items())) print(sortedD) # {1: False, 2: True, 3: 'Hi', 4: None}
    1 نقطة
  18. بداية نقوم بانشاء قاموس ليكن اسمه D1 D1 = {2:3, 1:89, 4:5, 3:0} ثم نقوم بانشاء قاموس فارغ sort_dic = {} ثم نقوم بعمل حلقة تكرار على القاموس الأول وهو مرتب بناء على ال key, وبداخل الحلقة نقوم بعمل update للقاموس الفارغ بتعديل قيمه كالتالي for i in sorted(D1): sort_dic.update({i:D1[i]}) لو حاولنا طباعة القاموس بعد الترتيب سوف يكون الشكل كالتالي print(sort_dic) #{1: 89, 2: 3, 3: 0, 4: 5}
    1 نقطة
  19. أحاول أن أقوم بعمل دالة تقوم بإستقبال أمر (كـنص) وتقوم هذه الدالة بتنفيذ هذا الأمر في الـ terminal أو سطر الأوامر. بعد ذلك تقوم الدالة بإرجاع النتيجة (كـنص أيضًا) وفي حالة لم يكن هناك نتيجة (لا يوجد مخرج في سطر الأوامر) تعيد None هنا مثال pseudo code: def execute(cmd): pass print(execute(“ipconfig”)) # يتم تفيذ الأمر ipconfig في سطر الأوامر
    1 نقطة
  20. لديك العديد من الخيارات كإستعمال subprocess كما في المثال السابق أو إستدعاء وإستعمال الحزمة os وهنا طريقتين لإستخدامها في هذا الكود تقوم بتشغيل الكود والبقاء فيه import os os.system('cmd /k "ipconfig"') وفي هذا الكود تقوم بتشغيل الكود ومن ثم إنهائه بحيث لا تبقى واجهة الأوامر cmd مفتوحة import os os.system('cmd /k "ipconfig"')
    1 نقطة
  21. يمكنك أستخدام subprocess الذي يتيح لك فتح تيرمنل و تمرير الأوامر اليها هناك طريقة قديمة و لكن تعتبر هذه المكتبة أفضل للأستخدام و هنا مثال يوضح كيفية الأستخدام #هنا نقوم بإدرجاج المكتبة import subprocess #هنا نقوم بـأجراء الأمر و ناحذ القيمة الراجعه list_files = subprocess.run(["ls", "-l"]) #نطبع القيمة الراجعه من تنفيذ الأمر print("The exit code was: %d" % list_files.returncode)
    1 نقطة
  22. لنحاول شرح ذلك باستخدام مثال, نقوم بعمل دالة تحتوي على dictionary ليكن اسمه switcher, يكون key أرقام وال value هي الأشهر وتقوم باسترجاع قيمة ال key الممرر للدالة كباراميتر def switch_demo(argument): switcher = { 1: "January", 2: "February", 3: "March", 4: "April", 5: "May", 6: "June", 7: "July", 8: "August", 9: "September", 10: "October", 11: "November", 12: "December" } return switcher.get(argument, "Invalid month") الآن لو ممرنا لها الرقم 1 سوف نحصل على قيمته, واذا مررنا قيمة غير موجودة في dictionary سوف يتم ارجاع قيمة Invalid month switch_demo(1) سوف تكون النتيجة كالتالي January
    1 نقطة
  23. نعم لا يوجد هناك switch بلغة البايثون و الطريقة الاستبدالها هو خلق دالة تحتوي على dic أسم الحالة هو مفتاح الحالة و قيمتها هي ما يراد عملة أو ارجاعه كالتالي : #هنا نقوم بتعريف الدالة def numbers_to_strings(argument): # هنا نعرف القاموس او الاوبجكت الذي حتوي جميع الحالات switcher = { 0: "zero", 1: "one", 2: "two", } #هنا نقوم بإرجاع القيمة حسب قيمة ال Parameter # أن لم توجد هذه القيمة فسوف نقوم بأرجاع قيمة nothing return switcher.get(argument, "nothing") if __name__ == "__main__": argument=0 print (numbers_to_strings(argument))
    1 نقطة
  24. السلام عليكم ورحمه الله وبركاته اليوم مجال التصميم مفتوح ومتعدد المصادر جدا عن الماضي ولم يعد حكرا علي احد بعينه اصبحت الان الافكار منتشره في كل مكان وعلي سبيل المثال موقع بنترست يجمع لك كل انواع الصور من شتي انحاء العالم فاخذك لفكره والتعديل عليها واضافه بصمتك اليها لايعد سرقه حقوق ملكيه ولاكن تعد سرقه حقوق ملكيه ان قمت باخذ التصميم بنفس شكله وقمت بوضع اسمك عليه او استخدامه شخصيا دون علم صاحب التصميم مما يتنافي مع اخلاقيات المهنه.
    1 نقطة
  25. مرحبًا أحاول فهم كيفية استخدام الدالة super()، عندما قمت بعمل صنفين classes واحد بداخله دالة super والآخر بدونها لم أجد أي فرق على الإطلاق. ما هو إستخدام super وهل لها قيمة معينة؟ ما التغيرات التي تحدث للصنف عند إستعمالها؟
    1 نقطة
  26. استخدامك للدالة super بداخل الصنف الابن يمنحك الوصول إلى الميثود في الصنف الأب ونستخدمها أيضا في الوراثة المتعددة, لنحاول شرح ذلك بمثال class Animal(object): def __init__(self, Name): print(Name) class Dog(Animal): def __init__(self): print('الكلب له اربعة أرجل.') super().__init__('الكلب') d1 = Dog() كما تلاحظ قمت بانشاء صنفين, الصنف الاب Animal والصنف الابن Dog, لاحظ في constructor الابن قمت باستدعاء دالة ال constructor الخاصة بالصنف الأب وذلك باستخدام الدالة super() هكذا يمكننا الاستفادة من الدالة super()
    1 نقطة
  27. السلام عليكم .. قمت بمسح فولدر git. بالخطأ .. انشأت واحد جديد عن طريق الامر git init ولكن للأسف الملف الجديد لم يقم بحفظ التغييرات ( commits ) التى قمت بها سابقا واكنى انشئ ريبو جديدة .. كيف اقوم اقوم باستعادة هذا الفولدر مرة اخرى من رابط الريبو ؟؟
    1 نقطة
  28. أنصحك بإستمرار من حيث توقفت وستجد نفسك إسترجعت كل ما سبق في فترة قصير لا تضيع وقتك في أشياء تعلمها سابقا تعلم ما هوا جديد ستجد نفسك قد تعلمت ما سبق وما فاتك بدون أي تضيع للوقت
    1 نقطة
  29. السلام عليكم تحياتي لك إعتقد ان هذا الشرح قد يفيدك يمكنك إلقاء نظرة علية https://www.arabicprogrammer.com/article/3859582692/
    1 نقطة
  30. يمكنك فعل هذا ان ستطلع الوصل إلى البيانات الحكومية ولدي الصلاحيات لفعل هذا أما الطريقة الاخر وهي صعبة ان تقوم بسماح لأي شخص بإدخل بيناتة الشخصة من النحاية الاجابة من الممكن ان يكون تطبيق لنشر المهارات القدرات والبحث عن عمل سواء كان عمل يدوي او إلكتروني وهكذا تكون حصلت على كل البيانات التي تريد بطريق جيدة ومفيده وتحت إطار الفائدة للجميع اتمنى أكون ساعدة ولو بلقليل تحياتي لك
    1 نقطة
  31. شكرا لك وعلى تجاوبك انا اقصد بال php بحيث يكون ادراج العامود تلقي بشكل افقي
    1 نقطة
  32. int main() { int id; char gender; int x1,x2,x3; cin >> id; while( id > 0) { cout << "enter gender\n"; cin >> gender; cout << "enter 3 marks\n"; cin >> x1 >> x2 >> x3; cin >> id; } retunr 0; } أكملي التعديل إن كان هنالك أي نقص بالتوفيق
    1 نقطة
  33. إنه ليس من مصلحتك حل الوظيفة لكِ! سأضع مثال لشرط لا يقبل عدد سالب: int x = -1; if (x > 0 ) { cout << "ok"; } else { cout << "No"; }
    1 نقطة
  34. وعلينا ضبط الاتصال مع قاعدة البيانات، والتي عليها أن تكون موجودة فعليا لجهاز يمكن الاتصال به و ضبط متغيرات البيئة مثل: PORT=123123 DB=mydoctor DATABASE_URL=http://DATABASE_URL/url DB_USER=myusername DB_PASS=mypassword123465 يمكنك التأكد من كيفية إعداد Node مع Heroku من الروابط: heroku getting-started-with-nodejs Configuration and Config Vars
    1 نقطة
  35. تشير الأقواس المتعرجة {} إلى وجود Block أي نطاق محلي أو كتلة من التعليمات المترابطة. فعندما نعرف حلقة تقوم بعمل تكرار لتعليمات معينة، نقوم بوضع هذه التعليمات ضمن Block أي ضمن {} ,والغاية من ذلك هو تحديد التعليمات التي ستتكرر، أي لكي يفهم الكومبايلر أين تبدأ التعليمات التي تريدها أن تتكرر وأين تنتهي. for (int i = 0; i < 5; i++) { // هنا أنت تخبر الكومبايلر أن التعليمات التي تريد أن تكررها تبدأ من هنا System.out.println(i); // خمس مرات System.out.println(i) أي سيتم تنفيذ التعليمة } // وتنتهي هنا // for التعليمات التالية ليست ضمن القوسين المتعرجين لحلقة // أي طالما ليسوا ضمن القوسين فهما منفصلين عن الحلقة int x=5; System.out.println(x); أو عندما نعرف تابع فيجب أن نضع التعليمات التي يقوم بها هذا التابع ضمن Block أيضاُ، لكي يفهم الكومبايلر أين يبدأ التابع الخاص بك وأين ينتهي. public void bar(int num1, int num2) { // أي هنا تبدأ التعليمات التي ينفذها التابع // تعليمة 1 // تعليمة 2 // تعليمة 3 } // وهنا تنتهي أما بالنسبة للأقواس من الشكل () فهذه الأقواس نستخدمها لكي نضع ضمنها الوسطاء التي يحتاجها تابع للقيام بمهمة ما، أو مثلاً المعلومات التي تحتاجها الحلقة لتقوم بعملية التكرار. public sum bar(int num1, int num2) // () هنا وضعنا المعلومات التي يحتاجها التابع لكي يقوم بعمله ضمن { // تعليمة 1 // تعليمة 2 // تعليمة 3 } for (int i = 0; i < 5; i++) // وضعنا ضمن القوسين () المعلومات التي تحتاجها الحلقة { System.out.println(i); } الأقواس المربعة [] تستخدم لتعريف المصفوفات int [] numbers; // أي قمنا بتعريف مصفوفة
    1 نقطة
  36. الأقواس المتعرجة مهمة جداً فهي تعتبر مثل الحاوية الذي تحتوي وتٌحيط بشيءً معين فالأقواس المتعرجة هي التي تحدد أن هذا الكود الذي بداخلها هو خاص بالكود الذي قبل كتابة هذه الأقواس على سبيل المثال هذا الكود bool isTrue = true if (isTrue){ std::cout << "true" ; } أي كود داخل الأقواس المتعرجة يعتبر خاص ب if الشرطية وسيتم تشغيل الكود الذي داخل الأقواس بناءً على عليها، فإذا كان المتغير isTrue صحيحاً وفي حالتنا هو صحيح إذاً سيتم تشغيل الكود الذي داخل الأقواس أم إذا كان المتغير الذي داخل الكود خاطئاً فسيتم تجاهل الكود الذي داخل الأقواس المتعرجة مثال آخر for (int i=0; i < 4; i++){ std::cout << i << endl; } الكود الذي داخل هذه الأقواس { std::cout << i << endl; } هو خاص بما قبله for (int i=0; i < 4; i++)
    1 نقطة
  37. السلام عليكم اريد المساعدة كيف اجلب البيانات بشكل افقي انا عندي صورة منتج وتحته سعر وايضا معلومات عنه واريد اذا اضافة بيانات تصبح بجنب المنتج الاول بشكل افقي اريد استخدام البوتسراب وتقسيم الصف الى اربع اعمدة في نفس الصف . ولكم جزيل الشكر
    1 نقطة
  38. السلام عليكم أخي الكريم.. دور التغذية البصرية هو إيجاد أفكار جديدة لأعمالك و العمل على تطويرها و ترك بصمتك الخاصة. فلا مشكل ان كانت الفكرة مستوحات من تمصميم شخص آخر و قمت بتوظيفها في عملك أو الإستعانة ببعض الأشكال أو الصور المجانية من إنترنات المهم أن يكون أغلب التصميم من صنع يدك ولا نجده يتشابه بدرجة كبيرة جدا لتصميم آخر. استمر في ما تفعل و حاول دائما أن تطور من ذاتك و بتوفيق !
    1 نقطة
  39. هناك عدة طرق لعمل ذلك منها: إستدعاء الوحدة module الذي تسمى ب sys بإستخدام إحدى الوظيفتين ويتم تحديد المسار على حالتين إما يكون المسار كامل absolute أو يكون المسار نسبي أو ذو صلة relative فالمسار المطلق أو الكامل absolute نبداء بالجذر root أي بهذه الإشارة / مثل /projects/blog/helpers إذا كان المجلد projects في الجذر وهنا تكمن مشكلة بحيث يجب علينا أن نقوم بتحديد المسار كاملاً أما المسار النسبي relative فهو تحديد المسار نسبياً للمكان الذي نحن فيه ولا يجب أن نعرف المسار الكامل absolute ، فإذا أردنا الوصول الى مسار files.py من مسار all.py بإستخدام المسار النسبي فيمكننا كتابة المسار هكذا ../../blog/helpers أما كيفية إستدعائه في بايثون فهناك عدة طرق وسنستخدم المسار النسبي لأنه أفضل عندما لايكون لدينا المسار الكامل 1- sys.path.append كما في الكود import sys sys.path.append('../../blog/helpers') import files 2- sys.path.insert كما في الكود import sys sys.path.insert(1,'../../blog/helpers') import files
    1 نقطة
  40. هناك عدة طرق للقيام بذلك لكن أسهلها أن تقوم بوضع الملفين في نفس المسار (نفس المجلد) ثم ببساطة اكتب من داخل الملف all.py التعليمة * from files import على سبيل المثال هنا لدي ملفين الأول reg والثاني un وفي الملف reg يوجد تابع اسمه sigmoid فقمت باستدعاءه من داخل الملف un بهذه الطريقة. وأنصحك بالتعامل مع محرر الأكواد جوبيتر فهو يجعل كل هذه الأمور أسهل
    1 نقطة
  41. Block: يعرض عنصرًا كعنصر كتلة. يبدأ على سطر جديد ويأخذ مساحة أفقية قدر الإمكان. لا تظهر عناصر مستوى الكتلة في نفس السطر ، ولكنها تكسر السطر الحالي وتظهر في السطر التالي. Flex: يعرض Flex عنصرًا كهيكل مرن. . يتم عرض الحاوية المرنة نفسها في سطر جديد ، تمامًا مثل عنصر الكتلة. (يمكن أن تحتوي الحاوية المرنة على عناصر أخرى فيها) ، وبالتالي ، فإن الحاوية المرنة هي العنصر الأصلي والعناصر التي تشكل جزءًا منها هي العناصر الفرعية.
    1 نقطة
  42. هذه السهل طريقه ممكن تنشأ فيها destructor في لغة البايثون class Employee: # Initializing def __init__(self): print('Employee created') # Calling destructor def __del__(self): print("Destructor called") def Create_obj(): print('Making Object...') obj = Employee() print('function end...') return obj print('Calling Create_obj() function...') obj = Create_obj() print('Program End...') يمكنك مراجعه هذا الرابط لمزيد من المعلومات https://www.geeksforgeeks.org/destructors-in-python/
    1 نقطة
  43. إذا كنت تريد أخذ المحتوى من المواقع باستخدام api الخاصة بهم فهذا غير ممكن لا يوجد موقع يسمح لك بأخذ الاسئلة والاجوبة منه بالمجان السبب ان أغلب المواقع تكون باشتراك شهري وخاصة ولا يمكن استخدام ال api الخاصة بهم
    1 نقطة
  44. يجب عليك إيجاد طرق للتسويق للأعمال التي تقوم بتصميمها ويفضل أيضاً القراءة عن التسويق حيث أن مهما كانت أعمالك إحترافية لن تجد من يشتريها حتى تسوق لاعمالك فمثلاً بالنسبة للتصميمات يمكنك التسويق لها عن طريق رفعها على المواقع التي تجمع المصممين والعملاء وأعتقد أن موقع behance مناسب جداً يمكنك أيضاً التسويق لأعمالك على مواقع التواصل الإجتماعي لا تقلل من تأثير هذه الطرق على المبيعات حيث يمكنك تكوين علاقات وبناء سمعة جيدة من خلال هذه الطرق تجلب لك العديد من المشاري وبما أنك ذكرت أن الأعمال الخاصة بك إحترافية سيكون الأمر سهل لبناء سمعة جيدة وتذكر أن تطوير مهارات في التصميم أو المهنة التي تجيدها فقط سيجلب لك العديد من المشاريع إنما يجب عليك تطوير طرق التسويق لأعمالك وتختلف الطرق بالنسبة لك مهارة
    1 نقطة
  45. يوجد الكثير من المقالات التي تتحدث عن السّير الذاتية، وللتّميّز قليلًا عن تلك المقالات سأحاول أن أعطيك بعض النصائح العمليّة حول كيفية جعل السيرة الذاتية تبدو أكثر جاذبية، وكيف تضع نفسك في مرتبة النجم بدلًا من مرتبة "المبرمج الجيّد". قد تأخذ العملية عدة سنوات حتى تتمكن من زيادة زَخم سيرتك الذاتية، ولكن عندما تنتهي، ستصبح قادرًا على المطالبة بـ 100$ إضافيّة في السّاعة لقاء عملك دون أن تواجه أي تردّد من عملائك في دفع ذلك المبلغ. صفحة واحدة سيرة ذاتية واحدة فقط كان ينطبق عليها هذا الوصف من كلّ عشرة سير ذاتيّة كانت تصلني كلّ يوم، بينما كانت البقيّة تستهلك ثلاث صفحات أو أكثر، ما يجعلها تبدو أقلّ احترافيّة بكثير، فإن لم تستطع وصف نفسك في صفحة واحدة ستتولد الشكوك حول مهاراتك، وهذا أمرٌ يجب ألا يحصل لمهندسي البرمجيات software engineer خصوصًا، حيث يجعلك تبدو غير قادر على تحييد الأمور غير الهامّة والتركيز على ما يهم حقًّا، وإنّه لَمِنَ المملّ قراءة ثلاث صفحات حول نفس المُبرمج. لذا، حاول جاهدًا دون استثناءات الالتزام بهذه القاعدة، فسيرتك الذاتيّة كالملخّص التنفيذي لمنتج تحاول تسويقه، أو مُلصق دعائي، يجب أن تكون قصيرة ومباشرة، فإمّا أن يقوم أصحاب العمل بشراء المنتج أو رميه بعيدًا، فهم لا يرغبون بقراءة سيرة ذاتية; إنّهم يرغبون باتخاذ قرار حول شراء مهاراتك أو تجاهلها، وكلّما زاد عدد الصفحات قلّت معها فرصتك. لا تكذب مهما فعلت بسيرتك الذاتيّة فلا تكذب أبدًا حول أيّ كلمة فيها. تستطيع أن تخفي نصف الحقيقة أو أن تعيد صياغتها كيفما شئت، تستطيع أن تكتم معلومات عن نفسك، لكن لا تكذب أبدًا، فأنت لا تعلم من سيقرأها وفي أيّ مكتب سينتهي بها الحال. كن مستعدًّا لتوضيح كلّ كلمة ذكرتها فيها. لو قُلتَ مثلًا: أنا "خبير JavaScript"، فكن جاهزًا لشرح أهمّ الميّزات الجديدة في الإصدار 6 من ECMAScript. إن لم تستطع، فلا تستخدم كلمة "خبير". الفكرة تكمن في أن تكون جاهزًا لإثبات كلّ كلمة عند الحاجة. صورة جذابة لك في أعلى الصفحة إن رغبت بالعمل معهم فسيرغبون بمعرفة من قد يعملون معه، لذا فصورتك الشخصيّة هي عنصر أساسي من السيرة الذاتيّة، فحاول أن تجعلها تبدو احترافيّة حتى لو اضطررت للدفع مقابلها. ركّز جيّدًا على جودة صورتك فهي عنصر هامّ جدًا. لا حاجة للتّذكير بذلك، لكنه يجب عليك أن تظهر مبتسمًا في هذه الصّورة، ولتكن الصّورة عفويّة فلا داع للتكلّف وارتداء بذلة رسميّة، يكفيك مثلًا قميص مع خلفية مرحة. يجب أن تظهر سعيدًا ومرتاحًا، فليس بالضرورة أن تجاهد لجعلهم يقبلون توظيفك، عليك أن تجعلهم يشعرون بالرّغبة في توظيفك من تلقاء أنفسهم، هذه هي الرسالة التي ستحاول إرسالها لهم من خلال صورتك، تمامًا كما في مواقع التعارف الاجتماعية. لا حاجة لكل من "الهدف Objective" و "اللقب Title" "كبير مطوّر برمجيات"، "مبرمج جافا محنّك"، "اختصاصي تكنولوجيا معلومات موهوب" ... إلخ، إن هذه الألقاب مملّة ولا تسوقّك جيّدًا فهم يعلمون من أنت من خلال قراءتهم لسيرتك الذاتية. إلى جانب هذا، فإنّك تحدّ من نفسك ضمن إطار هذا اللقب، فقد يرغبون بإيجاد نائب مدير القسم الهندسي بينما تقول سيرتك "مهندس برمجيّات". إنّ عدم التطابق الواضح هذا سينقص من فرصك بالعمل لديهم. اسمك هو ما يجب أن يكون العنوان في السيرة الذاتيّة. باقة كبيرة من المهارات يبيّن هذا القسم لأصحاب الوظيفة أين يقع "ثِقَلك التقنيّ"، ويجب أن يحوي على لائحة قصيرة جدًّا من المهارات لا تتجاوز 12 بندًا. فمن غير الممكن أن تكون خبيرًا في MySQL ،PostgreSQL ،Oracle ،MS SQL في الوقت ذاته; وقد تظن لبرهة أن وجود الكثير من المهارات يُعطي الانطباع بأنّك خبير، بينما في الواقع يُفهم من ذلك بأنّك لا تُتقن أيّ شيء، وهو أمرٌ عليك تجنّبه. ولكن كيف تنتقِ المهارات التي ستذكرها؟ عليك بدون مبالغة إيجاد أفضل ما تَبرَع فيه من مهارات وتضعه في ذلك القسم، تأكّد من أنّ المهارات المذكورة على ذات المستوى في التصنيف، فعلى سبيل المثال Java و AngularJS لا يجب أن يوضعا بجانب بعضهما البعض، فـ Java على مستوى أعلى من AngularJS، وبالتالي قد تكتب "Java و SQL و HTTP" أو "AngularJS و Spring Framework و Web Sockets". نصيحتي هي ألّا تصف مهاراتك وصفًا شموليًّا قبل أن تصبح رمزًا معروفًا، فـ Java تبدو مناسبة كمهارة في السيرة الذاتية لـ Jon Skeet، لأنّه بدون شكّ يعرف كلّ شيء عن عالم Java، ومشهودٌ له بذلك. أما لو كان لديك خبرة 3 سنوات فكيف لك أن "تتقن Java"؟ ربما تعرف استخدام بضعة مئات من الصفوف فيها فحسب، لهذا السبب فإنّه من الأفضل أن تذكر الأجزاء التي تتقنها في Java تحديدًا. وكما ذكرت سابقًا، كن دقيقًا في وصف مهاراتك قدر ما أمكنك. ملفك الشخصي على StackOverflow.com بغضّ النظر عن كل ما يُقال عنه، فقد أصبح StackOverflow المنصّة الأساسية -بحكم الواقع- التي تطرح فيها الأسئلة والأجوبة التقنيّة، فتواجدك وتقييمك المرتفع هناك سيرسل رسالة واضحة لصاحب عملك -المحتمل- بأنّك نجم (أو نجم صاعد). لن تجد هناك الكثير ممن حصل على 100 ألف نقطة تقييم أو أكثر، فلم لا تصبح أحدهم. وحتّى لو لم تكن تملك حسابًا على StackOverflow بعد، أنشئ واحدًا الآن وأمضِ ساعة واحدة بالإجابة على الأسئلة الجديدة كلّ يوم لعدة أشهر، وستحصل على 1000 نقطة تقييم أو أكثر، إن اعتبرنا أنّك كنت مساهمًا لا متفرّجًا فقط. هذا كاف في البداية، ولا تنس أن تضع رابط صفحة حسابك في سيرتك الذاتية. قد لا تكون قادرًا على الإجابة مباشرة، حينها اقرأ إجابات الآخرين، قم بالتعليق عليها، حاول إثراءها، وصحّح ما أمكنك، لتكن عضوًا نشيطًا في المجتمع. ملفك الشخصي على GitHub من يستطيع إنكار أن GitHub قد أصبح المنصّة الأساسية للبرمجياّت مفتوحة المصدر. ولكونك مطوّر برمجيات من العصر الحديث، فيجب أن يكون لديك حساب عليه كي تملك أثرًا واضحًا في عالم البرمجيّات مفتوحة المصدر إن أردت التسويق لنفسك بسعر أعلى. ولكن لماذا قد تهتم بهذا الأمر؟ إن مساهمتك في عالم البرمجيّات مفتوحة المصدر، سيمكّن صاحب عملك المحتمل بأن يرى ما يظنّه السوق في برمجياتك وفيك أنت، ووجودك فيه هو ضمانة له، تزيل خوفه من أن يرتكب خطأً بتوظيفك، فلا بدّ أنّ أحدهم قد شاهد شيفراتك البرمجيّة، وربما حصلت على بعض الثناء على مشاريعك أو قام أحدهم بالتصويت لها. بالنتيجة، ستجعلهم يشعرون بارتياح لاختيارك. لن تحتاج لصرف الكثير من الوقت على المصادر المفتوحة لتكون من "النخبة"، يكفي أن تشارك في تلك البرمجيّات التي تستخدمها أنت، فإن كنت تستخدم Sinatra في عملك، ألق نظرة على شيفرتها المصدريّة وستجد الكثير من الأجزاء التي يمكن إجراء إضافات أو تحسينات عليها. اعرض مساعدتك أو قم ببساطة بإرسال طلبات الجذب pull requests الخاصة بك هنا وهناك. إلى جانب هذا، أضف منتجاتك ومشاريعك الخاصة وسوّق لها، وستذهل لمقدار المستخدمين والمتابعين الذين ستحصل عليهم خلال عدّة سنوات بهذا العمل. الشهادات يعتقد البعض بأنّ الشهادات غير مهمّة، وهذا قد يكون صحيحًا في بعض الحالات، ولكنّ سيرتك الذاتيّة يجب أن تحوي بعضًا منها، فهناك شهادات من اليسير الحصول عليها ببضعة أسابيع من الدراسة وبضع مئات الدولارات، حينها لن تبقى مجرّد مبرمج Java وإنّما مبرمجًا معتمدًا، وليس هناك الكثير منهم. نعم هناك ملايين مبرمجي Java حول العالم ولكنّ نسبة قليلة منهم فقط من يمتلكون شهادة مبرمج معتمد، وبغضّ النظر عمّا إن كنت تعتقد بأهميّة تلك الشهادات أم لا، احصل عليها. تجنّب المواقع التي تدور حول اعتمادياتها شبهات مثل BrainBench وغيره. صحيح بأنك تستطيع أن تحصل على شهادة معتمدة منها ولكن لا تذكرها في سيرتك الذاتيّة فهذا سيثبت فقط بأنّك فخور بإنجازك المشبوه، وهذه إشارة غير جيّدة. أسماء وأرقام حقيقية عليك أن تكون حذرًا مع هذه النّقطة. بداية، عليك أن تبحث في ماضيك عن أسماء مشهورة أو أرقام كبيرة. على سبيل المثال، منذ 10 سنوات كنت أساعد شركة ناشئة في كتابة برمجيّة كانت IBM أحد مستخدميها، وعلى الرغم من أنّ IBM توقّفت عن استخدام هذه البرمجيّة بعد بضعة أشهر ، إلّا أنّها استخدمتها فعلًا، وبالتالي يمكن أن أكتب في سيرتي بأنّي: "كتبت برمجيّة لـ IBM"، فهل أكون كاذبًا؟ لا. وإن سُئلت عمّا قمت به بالضبط لـ IBM، سأكون قادرًا على الشرح. في معظم الحالات لن أُسأَل، ولكنّ فرصتي بأن يتمّ وضع سيرتي الذاتيّة في أعلى الكومة ستصبح أكبر. تستطيع القيام بذات الأمر مع الأرقام، إليك قصة حقيقية أخرى. منذ بضعة سنوات، كنت أساعد شركة في إعداد Continuous Integration Pipeline، ولم يكن الأمر صعبًا، لكنّ الشركة كانت تحصل على 5 ملايين زيارة يوميًّا عبر موقعها. وعلى الرغم من أنّه لم يكن لي علاقة بالحصول على هذا الرقم، لكنّي عملت في الشركة لبضعة أشهر، وبالتالي يمكنني أن أقول في سيرتي: "قمت بإعداد Continuous Integration Pipeline لمتجر إلكتروني ذي 5 ملايين زيارة يوميّة"، وفي حال سؤالي عن التفاصيل سأتمكّن من إعطائها لهم، لأنّي لا أكذب. استخدم هذه التقنية بحذر دون أن تكذب، ولا تخشَ من ذلك، فسيرتك الذاتيّة تحتاج لأسماء وأرقام كبيرة. المدونة أنشئ مدوّنتك الخاصة وابدأ بالكتابة عن إنجازاتك اليوميّة، وعن الشيفرات البرمجيّة التي تكتبها وتقرأها، وعمّا تشاهده في المكتب، وعن أفكارك ومشاريعك، وعن الكتب التي تقرأها. إن أردت أن تتقاضى أجرًا كبيرًا فستحتاج أن تملك مدوّنة قطعًا. وليس بالضرورة أن تكون المدوّنة مشهورة، فلا تعر انتباهًا للأرقام، لكن يجب أن تكون معدّة ومصمّمة بشكل جيّد. لا تستخدم WordPress أو Blogger أو Tumblr. عوضًا عن ذلك وما أفعله شخصيًّا، أنصحك باستخدام خدمات توليد الصفحات الثابتة مثل Jekyll وقم باستضافتها على صفحات GitHub. وإلى جانب كون هذا إضافة قيّمة إلى سيرتك، فإن الكتابة المنتظمة ستساعدك في ترتيب أفكارك، مشاريعك وقراراتك. هذا ما أجنيه شخصيًّا على الأقل من مدوّنتي. التعليم سأكتفي في هذا المجال بأن أذكر مستوى شهادتي، "ماجستير" أو "بكالوريوس" يكفي، وليس هناك حاجة لأذكر متى تخرّجت أو من أي مؤسسة تعليمية، فأستطيع ذكر ذلك لاحقًا عند سؤالي، ولكنّ هناك استثناءان لهذه القاعدة. بداية، إن كنت تملك شهادة دكتوراه فاذكر هذا في سيرتك فهي مهمّة وقيّمة لعدم وجود الكثير من حملتها في وسط المبرمجين. ثانيًا، إن كنت خريج جامعة مشهورة مثل ستانفورد، معهد ماسوستش للتكنولوجيا، أو شبيه ذلك، فاذكرها أيضًا. المؤتمرات يجب عليك أن تُلقي بعض المحاضرات هنا وهناك بشكل متواصل، ولكن حتّى تغدو قادرًا على الوصول إلى المؤتمرات الكبيرة، قم بذلك في أيّ مكان آخر يقبلون بك فيه. فمثلًا تستطيع إنشاء حساب على موقع lanyrd (أو ما شابهه) وتحقق باستمرار أيّ المؤتمرات تبحث عن متحدّثين وقم بإرسال طلبك وستفاجئ بأن بعضهم سيقبلون بعض أفكارك. إن العناوين الأسهل للبدء بها هي الحديث عن خبرتك العملية مع بعض التقنيّات والأدوات الحديثة، كسبيل المثال "كيف يساعدنا Docker في تحسين الإنتاج" أو "خمسة مشاكل لدى تنصيب Apache Spark"، أو أن تصف ما قمت بإنجازه على مشروع عملت عليه مؤخّرًا، فلا يهمّنا حقًّا ما تتحدث عنه. ما يهمّنا هو أن تصبح معروفًا، فإن قبلك السوق، فصاحب العمل سيثق بك أكثر. هذا تمامًا ما تحتاجه لتتمكن من طلب أجرة أعلى. تاريخ مسيرتك المهنية كصاحب شركة، لا يهمني شخصيًّا تاريخك المهنيّ على الإطلاق. على العكس من ذلك، فلو لم تشغل من قبل وظيفة بدوام كامل، ربما أكون مهتمًا بالعمل معك أكثر، لكنّ هذا رأيي فقط، لأنّي أؤمن حقًّا بأنّ المكاتب الحديثة والوظائف بدوام كامل تحوّل المبرمجين إلى عبيد (لا مبرمجين فقط). أما باقي أصحاب الشّركات الأخرى فقد يفكّرون أو غالبًا يفكّرون بطريقة مختلفة، لهذا السبب عليك أن تذكر في أيّ الشركات أمضيت السنوات العشرة الماضية من حياتك، وأنصح بإبقاء هذه القائمة قصيرة، حتى لو عملت في 8 شركات في السنوات العشرة الأخيرة فلا تذكر هذا، 3 تكفي، هذا سيظهر لهم بأنّك عبد جيّد لديك ولاء لسيّدك السابق (لم تغيّر عملك كثيرًا). هذا ما يرغبون برؤيته، لأنهم يخطّطون لشرائك ليكونوا أسيادك الجدد. ACM, IEEE, JUG والعضويات الأخرى إن هذه العضويّات لا تعني شيئًا إطلاقًا إلّا أن تثبت بأنّك عضو في هذه المجتمعات. وكما في معظم ما ذكرناه سابقًا، سيثق بك صاحب العمل أكثر إن كان السوق يثق بك. إنّ هذه العضويّات لا تعني أبدًا أن أحدًا يعترف بك، نظرًا لأنك تحصل عليها بدفع رسوم سنويّة فقط. ولكن، طالما أنّك تدفع هذه الرسوم بخلاف كثيرين، فإنّ هذا يجعلك أكثر وثوقيّة من الآخرين. الهوايات أعتقد بأنّ المعلومات عن الهوايات مهمّة، ويجادل البعض في هذا، لكنّي أعتقد بأن لمسة شخصيّة بينك وبين صاحب العمل المحتمل لها دور هام، فلا تنس أنّ هناك شخصًا حقيقيًا على الطرف الآخر، يقرأ سيرتك الذاتيّة، وسترغب بأن تعجبه، حتّى يكون مرتاحًا عند اتخاذ قرار توظيفك. ساعده في اتخاذ القرار بسرعة. إن كنت تحبّ التزلّج، إطعام القرود في حديقة الحيوان، فاذكر ذلك. كن مبتكرًا، لا تكن مملًّا، تمامًا كمواقع التعارف الاجتماعي. التصميم كيف يجب أن تبدو سيرتك الذاتيّة ذات الصفحة الواحدة؟ يجب أن تُظهِر شخصيتك من خلال سيرتك الذاتية، تجنّب بالتالي استخدام القوالب الجاهزة التي يمكنك تحميلها مجّانًا. قم بإنشاء قالبك الخاص، وحتى لو لم تكن قادرًا على التصميم، فاطلب المساعدة من صديق يستطيع. تذكّر حقًّا بأنّ كل ما تحتاج القيام به هو اختيار نوع الخط، قياسه وبضعة ألوان خفيفة هنا أو هناك. إن سيرتك الذاتيّة هي المنتج الذي تريد تسويقه، فأنت من صَنَعَها، أنت من رعيتها واهتممت بها، فإن كانت مجرّد مستند Word بالقالب القياسيّ ستجعلهم يشعرون بأنّك لم تهتم بما يكفي بها، فإن لم تهتم بأمر صغير كهذا، فكيف ستهتم بإنشاء برمجياتهم؟ بالتالي، لا تهمل جماليّة سيرتك الذاتية، ولا تجعلها متكلّفة، يمكنك أن تجعلها بسيطة جدًا لكنها يجب أن تمثّلك، وأن تكون قد بذلت من أجلها الاهتمام الكافي. ترجمة -وبتصرّف- للمقال Pimp Up Your Resume لصاحبه Yegor Bugayenko. حقوق الصورة البارزة: Designed by Freepik.
    1 نقطة
×
×
  • أضف...