عامة

  • تأثير النطاقات في Python

    عندما يتم إنشاء متغير في نطاق محدد داخل دالة مثل الدالة text() في مثالك، يتم تخزين قيمة هذا المتغير في الذاكرة في مكان يعرف باسم “الإطار النشط” أو “النطاق الخاص”. هذا الإطار النشط يكون متاحًا فقط للدالة التي تم إنشاؤها، ولا يمكن الوصول إليه من خلال نطاقات أخرى.

    في الحالة الأولى، عندما تقوم بتعريف x = 6 خارج الدالة، فإنه يتم تخزين هذا المتغير في نطاق البرنامج الرئيسي أو النطاق العام “global scope”، مما يجعله متاحًا لجميع الدوال والكود في البرنامج.

    لكن في الحالة الثانية، عندما تقوم بتحديد x = 6 بعد استدعاء الدالة text()، لا يمكن للدالة text() الوصول إلى قيمة x لأنه لم يتم تعريفها بعد داخل النطاق الذي يعرفه الدالة.

    حينما تقوم بتغيير قيمة متغير بعد استدعاء الدالة، يتم تخزين هذه القيمة في نفس النطاق الذي تم تعريفه فيه الأصلاً. وعندما تقوم بتغيير قيمة متغير بعد أن تم استدعاء الدالة، فإن الدالة لن تستطيع الوصول إلى هذه القيمة الجديدة لأنها لا تعرف بها.

    بشكل عام، عندما تقوم بتعريف متغير داخل دالة، يتم تخزين قيمته في ذاكرة الحاسوب في مكان محدد يعود إليه فقط نطاق الدالة. وعندما تقوم بتعريف متغير خارج الدالة، يتم تخزينه في نطاق عام يعرفه البرنامج بأكمله.

    لتفادي هذا السلوك وجعل المتغير متاحًا على مستوى البرنامج بأسره، يمكنك استخدام الكلمة الرئيسية global لتحديد أن المتغير ينتمي إلى النطاق العام. على سبيل المثال:

    python
    def text(): global x print(x) text() x = 6

    باستخدام global، يتم إعلام بايثون أن x هو متغير عام ويمكن الوصول إليه من أي مكان في البرنامج.

    المزيد من المعلومات

    بمجرد فهمك للفروقات بين النطاقات والمتغيرات المحلية والعامة في Python، ستكتشف أن هذه المفاهيم أساسية لفهم كيفية عمل البرامج والتعامل مع البيانات بشكل فعال.

    عندما تعمل مع Python أو أي لغة برمجة أخرى، فإن فهم الفروق بين النطاقات والمتغيرات المحلية والعامة يساعدك على تنظيم الشفرة بشكل أفضل وتجنب الأخطاء المحتملة. وفهمك لهذه المفاهيم يجعلك أكثر كفاءة في كتابة الشفرة وتطوير البرامج.

    إذا كنت ترغب في أن تكون قادرًا على الوصول إلى المتغيرات من دوالك بدون الحاجة لتمريرها كمعلمات، يمكنك استخدام كلمة المفتاح global كما أشرت سابقًا، لكن ينصح بالتحلي بالحذر في استخدامها، حيث يمكن أن يزيد استخدام global من تعقيد الشفرة ويجعلها أقل قابلية للصيانة.

    وأخيرًا، من المهم فهم أن تفاعلات البرنامج مع المتغيرات والبيانات ليست مقيدة بشكل ثابت بين النطاقات. يمكن استخدام مفاهيم أخرى مثل التعبيرات اللامتناهية، وتغيير قيم المتغيرات بين النطاقات، وغيرها، لكن هذه النقاط الأساسية في الفهم ستمكنك من بناء فهم أقوى لكيفية عمل البرامج بشكل عام.

    باستخدام هذه المعرفة، يمكنك تطوير تطبيقات Python أكثر تقدما وأكثر كفاءة، والتي يمكنها التعامل مع مجموعة متنوعة من البيانات والمتغيرات بشكل فعال ومنظم.

  • وظيفة عامة لتعديل حقول قوائم متعددة

    عندما تحتاج إلى كتابة وظيفة عامة لتعديل قائمتين (List<>) تحتويان على نفس الحقل، يجب أن تأخذ في الاعتبار بعض النقاط الأساسية لضمان قابلية إعادة الاستخدام والكفاءة. سنقوم بتصميم وظيفة تقوم بتعديل الحقل في العناصر الموجودة في القائمة الممررة لها. إليك وظيفة عامة قد تناسب احتياجاتك:

    csharp
    public List<T> CutField<T>(List list, Action fieldModifier) { foreach (var element in list) { fieldModifier(element); } return list; }

    هذه الوظيفة العامة CutField تأخذ قائمة من النوع T، حيث يتم تحديد النوع T عند استخدام الوظيفة. يتم تمرير الحقل الذي ترغب في تعديله كمدخل إضافي باستخدام Action، والذي يتيح لك تحديد الإجراء الذي سيتم تنفيذه على كل عنصر في القائمة.

    فيما يلي كيفية استخدام هذه الوظيفة:

    csharp
    // تحديد النوع الذي ستتعامل معه الوظيفة public class MyClass { public string Field { get; set; } } class Program { static void Main(string[] args) { // إنشاء قائمة العناصر الأولى List list1 = new List { new MyClass { Field = "Value1" }, new MyClass { Field = "Value2" } }; // إنشاء قائمة العناصر الثانية List list2 = new List { new MyClass { Field = "Value3" }, new MyClass { Field = "Value4" } }; // تحديد الإجراء الذي يقوم بتعديل الحقل Action fieldModifier = (element) => { element.Field = "Modified Value"; }; // استخدام الوظيفة العامة لتعديل الحقل في القائمة الأولى List modifiedList1 = CutField(list1, fieldModifier); // استخدام الوظيفة العامة لتعديل الحقل في القائمة الثانية List modifiedList2 = CutField(list2, fieldModifier); // الآن لديك قوائم جديدة تم تعديل الحقل فيها } }

    هذا المثال يوضح كيفية استخدام الوظيفة CutField مع قائمتين مختلفتين من نفس النوع، وكيفية تمرير الإجراء fieldModifier الذي يعدل الحقل المطلوب. يمكنك تعديل هذه الوظيفة وفقًا لمتطلباتك الخاصة، مثل إضافة مزيد من المعاملات أو التعامل مع حالات استثنائية.

    المزيد من المعلومات

    بالطبع، يمكننا توسيع النقاش حول هذه الوظيفة العامة لتعديل حقول العناصر في قوائم متعددة. هنا بعض المعلومات الإضافية التي قد تكون مفيدة:

    1. إضافة معاملات اختيارية:

    يمكنك تعديل الوظيفة لتضمين معاملات اختيارية، مثل شرط لتحديد العناصر التي تحتاج إلى تعديلها أو معاملات إضافية تحدد كيفية تعديل الحقل.

    2. تحسين الأداء:

    عند التعامل مع قوائم كبيرة، يمكنك النظر في تحسين الأداء بواسطة استخدام تقنيات مثل التعداد المتوازي (Parallel.ForEach) إذا كان من الممكن تطبيقه.

    3. التعامل مع الأخطاء والاستثناءات:

    يجب أن تتضمن الوظيفة مقتطفات للتعامل مع الأخطاء والاستثناءات. على سبيل المثال، يمكنك التحقق من صحة القائمة الممررة إلى الوظيفة، والتحقق من صحة الحقل المطلوب للتعديل.

    4. دعم أنواع البيانات المختلفة:

    يمكن تعديل الوظيفة لدعم أنواع البيانات المختلفة، مثل القوائم التي تحتوي على أنواع مختلفة من العناصر. في هذه الحالة، يمكنك استخدام الجنريكس وتحديد النوع المطلوب عند استدعاء الوظيفة.

    5. توثيق الوظيفة:

    يُعتبر توثيق الوظيفة أمرًا هامًا لضمان فهمها واستخدامها بشكل صحيح. يمكنك إضافة توثيق مفصل يشرح ماذا تفعل الوظيفة وكيفية استخدامها بشكل صحيح.

    6. الاختبارات:

    من المهم أيضًا إنشاء اختبارات وحدية للتأكد من أن الوظيفة تعمل بشكل صحيح في جميع الحالات المتوقعة، وذلك للتأكد من عدم حدوث أخطاء غير متوقعة في التطبيقات الفعلية.

    7. إدارة الذاكرة والأداء:

    عند التعامل مع كميات كبيرة من البيانات، يجب أخذ إدارة الذاكرة والأداء في الاعتبار. يمكنك النظر في استخدام البنية البيانية المناسبة وتجنب إنشاء الكائنات الزائدة في الذاكرة.

    باختصار، يمكن تحسين الوظيفة وتوسيع نطاق استخدامها بالنظر في هذه النقاط الإضافية وتطبيق التعديلات اللازمة وفقًا لمتطلبات تطبيقك المحددة.

  • استخدام API فيسبوك للبحث: تحسين التصفية والتواريخ

    فيما يخص استفسارك حول كيفية البحث في المنشورات العامة على فيسبوك والطريقة المثلى لتصفية تلك المنشورات باستخدام واجهة برمجة التطبيقات (API) المخصصة لها، يمكنني تقديم شرح مفصل لمساعدتك في فهم العملية.

    قبل كل شيء، يجدر بنا أن نفهم أن استخدام API للوصول إلى بيانات فيسبوك يتطلب الامتثال للإرشادات والشروط التي تفرضها فيسبوك على المطورين. يتعين عليك التحقق من سياسات استخدام API من قبل فيسبوك لضمان الامتثال الكامل.

    الخطوة الأولى في استخدام API للبحث في المنشورات العامة هي الحصول على مفتاح API الصحيح من موقع فيسبوك للمطورين. بمجرد أن يكون لديك مفتاح API، يمكنك استخدام طلبات HTTP للتفاعل مع البيانات.

    الشيفرة التي قدمتها تبدو جيدة للبداية، ولكن يجب أن نتأكد من أنك تستخدم النوع الصحيح للبحث في المنشورات بدلاً من الأشخاص. يمكنك تحديد نوع البحث باستخدام “type=post” بدلاً من “type=user”.

    فيما يلي مثال توضيحي على كيفية تعديل الشيفرة لتحقيق هذا:

    php
    $q = "Facebook"; $search = $fb->get('/search?q=' . $q . '&type=post&limit=10'); $search = $search->getGraphEdge()->asArray(); echo "
    ";
    print_r($search);
    echo "

    ";

    باستخدام “type=post”، يمكنك الآن البحث بشكل أفضل في المنشورات العامة. يجب أن يتم تصفية النتائج وفقًا لاحتياجاتك بشكل إضافي، مثلاً باستخدام تواريخ محددة أو كلمات مفتاحية أخرى.

    يُفضل دائمًا قراءة وثائق API الخاصة بفيسبوك وفهم القيود والسياسات المفروضة لضمان استخدام سليم وآمن للبيانات.

    المزيد من المعلومات

    بالطبع، يمكننا أن نوسع المحادثة لتضم المزيد من المعلومات حول الاستفسار الخاص بك حول استخدام واجهة برمجة التطبيقات (API) للبحث في المنشورات العامة على فيسبوك.

    قد تكون العمليات المتقدمة للتصفية أمرًا مهمًا عند التعامل مع بيانات كبيرة، ولحسن الحظ، يوفر فيسبوك API العديد من الخيارات لتحسين نتائج البحث. يمكنك، على سبيل المثال، تحديد تاريخ النشر باستخدام معلمة since و until للحصول على المنشورات التي تم نشرها بين تواريخ محددة.

    اليك مثال على كيفية تحديد نطاق تواريخ البحث:

    php
    $q = "Facebook"; $sinceDate = "2023-01-01"; $untilDate = "2023-12-31"; $search = $fb->get('/search?q=' . $q . '&type=post&limit=10&since=' . $sinceDate . '&until=' . $untilDate); $search = $search->getGraphEdge()->asArray(); echo "
    ";
    print_r($search);
    echo "

    ";

    في هذا المثال، يتم استخدام معلمات since و until لتحديد نطاق تواريخ البحث.

    يمكنك أيضًا تحسين البحث باستخدام معلمات إضافية مثل اللغة، أو الفئة (category) إذا كانت ذات صلة بمجال البحث الخاص بك.

    وفي الختام، يجدر بي أن أشير إلى أهمية الامتثال لسياسات فيسبوك المتعلقة بخصوصية البيانات واستخدام API. يفضل دائمًا قراءة الوثائق الرسمية والشروط والأحكام المقدمة من فيسبوك للمطورين.

  • مناقشة عامة في البرمجة أم الشبكات

    اذا كنت شخص جديد على عالم الـ IT  هذا المقال جدا راح يفيدك

    كلنا نعرف انه  90% من طلاب الجامعات الي تخصصهم بعالم ال IT بعد التخرج صعب عليهم إيجاد الوظيفة المناسبة وفي الاغلب لا يستطيعو العمل

    ( خريجين اختصاصات  البرمجه أغلبهم بعيد  كل البعد عن عالم البرمجة  ولا يعرف كتابة  الكود اصلا , وخريجين اختصاصات الاتصالات والشبكات لا يستطيعون  العمل  بشركات الانترنت ولا بشركات الاتصالات )

    يعني الطالب 4 سنوات  (وحتى منهم من  يكمل ماستر +2 سنه ) هوه بس يعلم  بوجود شي اسمه IT و شي اسمه شبكات واتصالات وبرمجه وهاردوير وسوفتوير ,

    وكل هذا بسبب المناهج المتبعة بالتدريس وطريقه التدريس والخطه الدراسية وحتى بسبب الاساتذه  .

    85%  من هاؤلاء  الطلاب راح يحاولو  يتعلمون شي يمكنهم من العمل  وهنا راح يوقع بدوامة   بين البرمجة ام  الشبكات  بغض النظر  عن الي درسه بالجامعة .

    هنا اول شي تتاكد من ميولك بغض النضر عن سوق العمل لانه  لن تبدع بشي انت لا تحبه  .

    بعدها نستفكر كيف ستدرس :

    اولا : بالشبكات

    معروف انه راح تبدا بالـ CCNA  هنا راح تتعلم ما هي  النيتورك وتتعلم اللايرز وكيف يكون شكل البكج بكل لير وتتعلم طريقه توزيع العنواين الشبكية IP  ( يعني اساسيات الشبكات) وتتعلم كيف  تعمل  إعدادت لراوترات السسكو وتتعلم للسوجنك وللراوتنك شوي  مثل هذه الامور , الان راح يصير مستواك جيد وتقدر  تشتغل نيتورك وحتى ممكن شركات صغيره ومتوسطه تقبل توضفك .

    بعدهها تبدا بما يعرف بال CCNP الان  راح تبدأ تطور مهاراتك بالشبكات وراح تشتغل بمستويات متقدمه بالراوتنك والسوجنك وتشتغل سكيورتي وشيء من الترل شوتنك يعني راح تدرس اشياء متقدمه اكثر من ال CCNA وتتعلم  مواضيع جدد بالاضافه راح تتعمق اكثر بالاعدادات لراوترات السسكو  , هنا فرصتك بالعمل تصير اكبر وحتى لو كنت انت اصلا وجدت  وظيفة  بعد ما خلصت دورة  CCNA لما تكملها لدورة  CCNP ترتاح اكثر بوظيفتك الحالية لان خبرتك زادت اكثر  ومشاكلك تلاقي لها حل بوقت اقل وبشكل اسرع .

    لكن هاؤلاء ال 80% من الي درسو تلك  الشهادتين لازم يتعلمو  اقل شي MTCNA الي هي  شهادة من شركه مايكروتك تتعلم بها كيف تتعامل مع رواترات وسوجات  المايكروتك لان الشركات الصغيره والمتوسطه تعتمد على المايكروتك اكثر من السسكو , بعدها  ممكن تدرس MTCRE وهنا = راح تتعمق بالمايكروتك وبالراتنك والفايرول والوايرلس ,لكن  قبل لا تبدأ  بمناهج المايكروتك المفروض اقل شي انت دارس الـ CCNA لان المايكروتك لا يبدا معك من مستوى نيتورك صفر لكن  يدرسك كيف  تتعامل مع رواترات مايكروتك وكيف تعمل إعدادات لهم  .

    لكن  يبقى هناك  شهادات بالنيتورك متقدمه اكثر مثل CCIE من شركه سسكو و MTCWE وهنا لو درست تلك الشهادتين أنت متقدم اكثر  وراح تصير فرصك في إيجاد وظيفة اكبر واكبر وممكن تنتقل لعالم التدريس بالمعاهد و الجامعات و مراكز التدريب .

    ثانيا : البرمجه

    هنا لديك  مجوعه تخصصات مطلوبة في العالم العربي بشكل عام مثل  :

    • 1 – تصميم ويب .

    • 2 – تطوير ويب .

    • 3 – تطوير اندرويد .

    • 4 – تطوير IOS .

    • 5 – تطوير تطبيقات دسكتوب .

    • 6 – قواعد البيانات  .

    عندما ما تختار التخصص الي تحتاج  تكتشف ان كل تخصص به  مجموعة لغات برمجه لازم تختار من بينهم   . و بعد ما تختار اللغه الي تريد  وتدرس اساسيات تلك  اللغه  يجب ان  تدرس بعد الاساسيات بشكل مباشر الخوارزميات الخاصة بتلك اللغه وكيفية  تطبيقهم  . هنا انت صرت مبرمج لكن  للان  لا تعرف  تبرمج باحتراف  لانه  انت فقط  عارف  لغة وخوارزميات ,

    هنا تبدا  تطبق كل شيء  درسته على شكل مشاريع حسب التخصص الي انت اخترته  وكل ما قمت بتنفيذ  مشاريع اكثر كل ما خبرتك تزيد اكثر وبشكل اسرع

    90% من شغلك راح تحتاج به  قواعد بيانات الا  تصميم الويب فمن ضمن دراستك للتخصص الي قمت بختياره  يجب عليك ان  تدرس قواعد البيانات, هنا حسب خبرتك راح اكيد ممكن تزيد فرصتك بالوظيفة  ,

    اكثر المبرمجين يدخلون لعالم البرجه كفريلانسر اي شغل حر بحيث  يشتغل مشاريع بسيطه او متوسطه لـ اشخاص او مؤسسات,

     وهنا تشتغل وانت بالبيت بحيث ياتي لك شخص يقول لك  سويلي المشروع الفلاني وتتفق على السعر والمده وتسلم المشروع تستلم السعر المتفق عليه  وهنا الي يعرف يسوق لحاله هو الشخص اللي نحكي عنه بالعامي الشاطر  وغير بحاجة لوظيفة اصلا لان راح يكون عنده  عدك شغله الخاص والتزامه  بنفسه فقط  . و بعد الفريلانس ممكن شخص تشتغله مشروع ويعجبه شغلك ويعرض عليك وضيفه كبيرة جدا  او انت تبني سمعتك وتلاحظ كم من الوظائف و الشغل و العروض اللي ممكن تحصلها امامك .

    كيف تبني سمعتك  ؟؟

    لتبني سمعتك بشكل سليم تحتاج  تنفيذ  مشاريع مشهوره او تبدأ  تدرس مواد البرمجة  للمبتدئين وتحتاج بروفايل بموقع  stackoverflow و بالـ Github وكون تشتغل بشكل كبير على تلك  البروفايلات وترفع مشاريع  وتجاوب اسئله وهكذا  .

    خلاصة

    الخلاصة من الموضوع  بسوق العمل الطلب على المبرمجين صار اكثر من الشبكات لان شركات الاتصالات والانترنت تمتلك عدد محدود وفيها  فائض من الخبرات ,لكن  البرمجه انت مو شرط تشتغل بشركه ممكن تشتغل لحالك او ضمن فريق اونلاين وتقدر  تشتغل لمنطقتك الاقليمية  او لبلدك او حتى لناس خارج البلد اللي انت مقيم فيها وانت بالبيت .

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر