بايثون العرب
10.4K subscribers
875 photos
183 videos
772 links
Download Telegram
الترجمة ممتازة نعتمدها🫱🏽‍🫲🏼
🚀 تحسين استهلاك الذاكرة في بايثون 🐍

هل تعاني من استهلاك مرتفع للذاكرة في برامج بايثون الخاصة بك؟ إليك حيلة بسيطة لتحسين ذلك باستخدام مولدات (generators)!

def count_up_to(max):
i = 1
while i <= max:
yield i
i += 1

# استخدام المولد
counter = count_up_to(1000000)

# طباعة أول 5 أرقام فقط
for number in counter:
if number > 5:
break
print(number)


بدلاً من تخزين قائمة كاملة في الذاكرة، تقوم المولدات بتوليد القيم عند الطلب (on-the-fly). هذا يقلل بشكل كبير من استهلاك الذاكرة، خاصة مع مجموعات البيانات الكبيرة.

['#بايثون', '#برمجة', '#تطوير', '#تحسين_الأداء', '#الذاكرة', '#Generators', '#PythonTips']
ظهر مشروع عبارة عن مكتبة كاملة من موظفي الذكاء الاصطناعي اسمها Agency Agents.

المكتبة تحتوي على 51 وكيل متخصص:
مطورون
مصممون
مسوّقون
مدراء منتجات
مدراء مشاريع

كل وكيل له:
دور محدد
أسلوب تواصل خاص
حتى Workflow للعمل
مقاييس للنتائج

الفكرة ببساطة:
هذه شخصيات جاهزة للذكاء الاصطناعي يمكنك ربطها بأدوات مثل Claude Code وتشغيلها كأنها فريق متخصص.

المشروع انتشر بسرعة المستودع جمع أكثر من 20 ألف نجمة خلال أسبوع.

يعني باختصار
خلّ الوكلاء يشتغلون بدلنا 🤑github.com/msitarzewski/agen…
شفتم الفوضى والوقاحه Cloudflare، اللي قضت سنوات تحمي المواقع من البوتات أطلقت بوت خاص فيها 😂

أعلنوا عن endpoint اسمه /crawl ضمن خدمة Browser Rendering.
بضغطة API واحدة تقدر تزحف موقع كامل وتستخرج المحتوى.

الغرض حسب كلامهم:
بناء RAG pipelines
تدريب نماذج AI
المراقبة والأبحاث

انتم عارفين المشكلة انه Cloudflare أكبر لاعب في العالم لحماية المواقع من البوتات اللي تجمع بيانات لتدريب الذكاء الاصطناعي.

لكن هذه المرة يقولون
ما تخافوا بوتنا مؤدب 😇
بيحترم robots.txt وقواعد الموقع.

الظاهر أن الفرق بين بوت سيئ وبوت جيد يعتمد فقط على من الذي يشغله 😏
من زمان ما شاركت ملخصات تقنية جميلة خلينا نشوف هذي

السر الحقيقي للإجابات الذكية ماهو بس في الـ prompts، بل في الهيكلية التي وضعتها Anthropic تحت الغطاء.

نظام Claude Code مبني تقريبًا كأنه طبقات أربع:

1️⃣ CLAUDE.md
ذاكرة المشروع.
فيها:
قواعد المشروع
قرارات المعمارية (Architecture)
تعليمات دائمة للنموذج

2️⃣ Skills
تدفقات قابلة لإعادة الاستخدام.
الـAI يقدر يستدعيها بنفسه لتنفيذ مهام متكررة.

3️⃣ Hooks
حواجز أو قواعد تنفيذية إلزامية.
على عكس الذاكرة، هذه ليست اقتراحات بل تعليمات يجب تنفيذها.

4️⃣ Agents
وكيل فرعي (Sub-agents) لكل واحد context window خاص به،
تُستخدم لتقسيم المهام المعقدة بدون تدمير السياق الرئيسي.

الفكرة باختصار:
بدل ما تعتمد فقط على prompt طويل
تبني نظام عمل كامل للنموذج.

وهنا يبدأ الفرق الحقيقي في الإنتاجية 🔥
يمكن للـAI تحسين عملهم تحديدًا.

هذه حسب قوله الفرصة الكبيرة الآن.
This media is not supported in your browser
VIEW IN TELEGRAM
فرصة للأطفال من عمر 21 واقل

تخيلوا MIT نشرت رقم صادم.

95٪ من مشاريع الذكاء الاصطناعي في الشركات تفشل والسبب بسيط
الاغلب ما يعرف كيف يطبّقها فعليًا داخل العمل.

رجل الأعمال Mark Cuban يقول إن هذه أكبر فرصة عمل منذ ظهور الكمبيوتر الشخصي.

كيف؟
في الثمانينات كوّن ثروته الأولى بشيء بسيط جدًا
كان يدخل إلى الشركات ويعلّم الموظفين اللي ما استخدموا كمبيوتر من قبل كيف يستخدمونه.

برأيه، نفس الشيء يحدث الآن مع الذكاء الاصطناعي لكن الفجوة هذه المرة أكبر.

الأرقام توضح الصورة

في الولايات المتحدة يوجد 33 مليون شركة

30 مليون منها شركات لشخص واحد فقط

ملايين أخرى فيها أقل من 500 موظف

معظم هذه الشركات
لا تملك ميزانية AI
لا فريق مختص
ولا حتى استراتيجية

دراسة من Massachusetts Institute of Technology وجدت أن الشركات الكبيرة بالفعل تطلق مبادرات AI وتجارب (Pilots)
لكن أغلبها يفشل في تحقيق نتائج حقيقية لأن أحدًا لا يعرف كيف يربط AI بالـ workflows الفعلية للشركة.

نصيحة مارك كيوبن للأطفال اللي أعمارهم اقل من 21:

تعلموا تطبيق الذكاء الاصطناعي في الأعمال.

ثم اذهبوا إلى:
متجر صغير
مكتب محاماة
شركة نقل

واشرحوا لهم كيف
❤2
💡 تحسين أداء Python باستخدام List Comprehensions!

هل سئمت من كتابة حلقات for مملة لإنشاء قوائم؟ دعنا نكتشف طريقة Pythonic أكثر أناقة وكفاءة!

numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers]
print(squares)

# مقارنة مع الطريقة التقليدية:
# squares_traditional = []
# for x in numbers:
# squares_traditional.append(x**2)
# print(squares_traditional)


List comprehensions توفر طريقة موجزة لإنشاء القوائم. إنها تقرأ كأنها وصف رياضي للقائمة، مما يجعل الكود أسهل في الفهم وأسرع في التنفيذ مقارنة بحلقات for التقليدية.

['#Python', '#برمجة', '#ListComprehensions', '#تطوير', '#نصائح_برمجية', '#PythonTips']
💡 نصيحة بايثون سريعة: فهم الـ Lambda Functions 💡

هل تحتاج إلى دالة صغيرة وسريعة لمرة واحدة؟ الـ Lambda Functions هي الحل الأمثل في بايثون! دعنا نتعرف عليها.

add = lambda x, y: x + y
print(add(5, 3))

multiply = lambda x, y: x * y
print(multiply(4, 6))


دوال اللمدا (Lambda Functions) هي دوال مجهولة (بدون اسم) يمكن أن تأخذ أي عدد من الوسائط، ولكن يمكن أن تحتوي على تعبير واحد فقط. تُستخدم غالبًا في المواقف التي تحتاج فيها إلى دالة بسيطة لفترة قصيرة، مثل استخدامها مع `map()`, `filter()`, أو `sorted()`.

['#بايثون', '#برمجة', '#Lambda', '#PythonTips', '#تعلم_البرمجة']
وحدة من مختصات التوظيف في مجال الحاسوب جمعت 200 مصدر للبحث عن وظيفة في مكان واحد.

القائمة مقسمة تقريبًا هكذا:

78 منصة وأداة للبحث عن الوظائف
122 شركة تقدم وظائف Remote

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

مفيد خصوصًا لو كنت:

تبحث عن وظيفة جديدة
تريد العمل عن بعد
أو تستكشف فرص في شركات تقنية مختلفة

رابط الملفt.me/codei8/938
كنت مستغرب كيف قرفه مع معمول تمر ماتوقعت الطعم من أفضل النكهات اللي جربته
❤2
تصوّر للمستقبل من عام 1930
قبل 32 سنة بالضبط في 14 مارس 1994 صدر Linux 1.0.0. وكان وقتها حدثًا مهمًا في تاريخ البرمجيات مفتوحة المصدر.

تخيّل الوضع في الثمانينات وبداية التسعينات:
أسعار الحواسيب كانت مرتفعة جدًا بين 2300 و5000 دولار.
ونظام MINIX، وهو من أشهر الأنظمة آنذاك، كان يكلف حوالي 170 دولارًا (ما يعادل نحو 500 دولار اليوم)، وفوقها كان عليك انتظار شهر كامل حتى يصل مبرمج لتثبيته.

بمعنى آخر: تشتري كمبيوتر جديد لكنه شبه عديم الفائدة حتى تدفع أكثر وتنتظر.

إضافة إلى ذلك، كان معظم البرامج مغلق المصدر (Proprietary).
لا يمكن تعديلها أو إضافة ميزات أو مشاركة التعديلات مع الآخرين.

• هذا الوضع أزعج Richard Stallman، وفي 1983 أعلن عن مشروع لإنشاء نظام تشغيل حر بالكامل ومتوافق مع UNIX.
وهكذا بدأ مشروع GNU.

لكن لأن شيفرة UNIX الأصلية كانت مغلقة، كان عليهم إعادة كتابة كل شيء من الصفر وهو عمل استغرق سنوات.

بحلول 1990 كان مشروع GNU قد وفّر تقريبًا كل مكونات النظام:
واجهة رسومية، مترجم C، (Shell) لكن كان ينقصه أهم جزء: النواة (Kernel).

هنا دخل إلى المشهد Linus Torvalds، وهو طالب فنلندي أحب أنظمة UNIX بعد قراءة كتاب Andrew S. Tanenbau
m.

في 1991 بدأ لينوس كتابة نواة نظام متوافقة مع UNIX.
نشر شيفرته على الإنترنت، وبدأ المبرمجون حول العالم في اختبارها وتطويرها.
وبفضل هذا التعاون، صدر الإصدار 1.0.0 في 1994.

وبفضل مشروع GNU، استطاع لينوس استخدام أدوات جاهزة مثل:
bash
gcc
tar
gzip

هذه الأدوات جعلت Linux + GNU بيئة قوية جدًا للمطورين حتى في مراحله الأولى.

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

إصدار Linux 1.0.0 كان يحتوي على حوالي 176 ألف سطر كود، ويدعم معمارية x86، ويقدم تعدد المهام ودعم الشبكات.

ومنذ ذلك الوقت أصبح Linux أساسًا لعدد هائل من التوزيعات، ويستخدم اليوم في:

الخوادم
الهواتف (مثل Android)
الحواسيب العملاقة
الأنظمة المدمجة

باختصار: مشروع بدأه طالب في الجامعة…
وأصبح اليوم أحد أهم الأنظمة في العالم.
❤1
✨ تلميح بايثون: استخدام Walrus Operator (:=) بكفاءة ✨

هل سئمت من تكرار نفس المتغير مرتين في جملة `if` أو `while`؟ دعنا نكتشف كيف يمكن لـ Walrus Operator (:=) أن يبسط كودك ويجعله أكثر قابلية للقراءة!

import re

text = "Your email is example@domain.com"

if match := re.search(r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}", text):
email = match.group(0)
print(f"تم العثور على البريد الإلكتروني: {email}")
else:
print("لم يتم العثور على بريد إلكتروني.")


في هذا المثال، نستخدم Walrus Operator (:=) داخل جملة `if` لتعيين نتيجة `re.search` للمتغير `match` وفي نفس الوقت التحقق مما إذا كانت النتيجة غير `None`. إذا كانت هناك مطابقة، يتم تخزينها في `match` ويمكننا الوصول إليها مباشرة داخل كتلة `if`، مما يلغي الحاجة إلى استدعاء `re.search` مرة أخرى.

['#بايثون', '#برمجة', '#WalrusOperator', '#PythonTips', '#تطوير']
أفضل المصادر لتعلّم Backend وبرمجة النظم (System Programming):

▪️ OSDev Wiki
▪️ Beej’s Guides to Network Programming
▪️ مدونة Julia Evans
▪️ Low Level Programming University
▪️ Computer Science from the Bottom Up
▪️ كتاب Crafting Interpreters
▪️ The Linux Documentation Project
▪️ Writing an OS in Rust
▪️ Destroy All Software
▪️ دورات Casey Muratori
▪️ MIT OpenCourseWare
▪️ Compiler Explorer
▪️ كتاب Computer Systems: A Programmer’s Perspective
▪️ Hacker News
▪️ Lobsters
▪️ مجتمع r/systems
▪️ ByteByteGo
▪️ High Scalability
▪️ مدونة Martin Kleppmann
▪️ Architecture Notes
▪️ The Morning Paper
▪️ مدونة Brendan Gregg
▪️ مدونة Dan Luu
▪️ مدونة Phil Eaton
▪️ كتاب Database Internals
▪️ كتاب Designing Data-Intensive Applications
▪️ Systems We Love
▪️ تسجيلات مؤتمر Strange Loop
▪️ Papers We Love
▪️ CMU Database Group

هذي القائمة تعتبر كنزًا حقيقيًا لأي شخص يريد فهم الأنظمة بعمق
فيها شرح كيف تعمل قواعد البيانات، الشبكات، أنظمة التشغيل، المترجمات، والأنظمة الموزعة.
This media is not supported in your browser
VIEW IN TELEGRAM
يمكن تفيدكم
لقيت أداة مفتوحة المصدر اسمها OpenBrand.

فكرتها بسيطة ومفيده بنفس الوقت

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

الشعارات (Logos)
الألوان الرسمية للعلامة التجارية
الصور المستخدمة في الموقع

بيفيدك لو ناوي تعمل:

تحليل تصميم موقع بسرعة
جمع مراجع تصميم (references)
عمل prototype سريع لمشروع جانبي (pet project)

طريقة سريعة لاستخراج brand assets من أي موقع.

يمكن تحتاجوهاopenbrand.sh/
✨ تحسين أداء Python باستخدام List Comprehensions ✨

هل تريد كتابة كود Python أكثر إيجازًا وفعالية؟ تعرف على قوة List Comprehensions!

numbers = [1, 2, 3, 4, 5]
squares = [x**2 for x in numbers]
print(squares)

# مقارنة بالطريقة التقليدية:
# squares_old = []
# for x in numbers:
# squares_old.append(x**2)
# print(squares_old)


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

['#Python', '#برمجة', '#ListComprehensions', '#كود', '#تطوير']
اللَّهُمَّ هب لي حمدا، وهب لي مجدا، لا مجد الا بفعال، ولا فعال الا بمال، اللهم لا يصلحني القليل، ولا اصلح عليه