Programmed Minds – Telegram
Programmed Minds
119 subscribers
79 photos
5 videos
8 files
36 links
هل تحلم بأن تصبح مبرمجًا محترفًا؟ 🤖هنا تبدأرحلتك! نقدم محتوى برمجي متنوع يشمل جميع التخصصات التقنية بطريقة سهلة واحترافية.من تطوير المواقع والتطبيقات إلى الذكاء الاصطناعي وأمنالمعلومات – كل شيء في مكان واحد!شروحات، مشاريع تطبيقية،ونصائح ذهبية لتطور مستوك
Download Telegram
تعلم لغة #C فهي مستقبلك لغة لها مميزاتها القويه .لغة #C فيها الكثيرات من المميزات .

كمثال على لغة #C وبين لغة ++C
هاذا المثال البسيط إدخال الاسم .
شوف الفرق عندما تدخل اسمك مع اللقب

في #C : تدخل الاسم ب الكامل ما تحاتج الدوال التي تتغضى عنn\ الي هي getlineو. ignoer في ++C.

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

ب التوفيق.
1🔥1
لماذا؟ ماذا؟ كيف؟ – سر التفكير العميق في البرمجة

في عالم البرمجة، يبدأ المبدعون بأسئلة "لماذا؟" قبل أن ينتقلوا إلى "ماذا؟" ثم "كيف؟". هذه المنهجية تمنحهم رؤية أعمق وحلولًا أكثر إبداعًا.

لماذا نحتاج إلى هذه الميزة؟ قبل أن تبدأ في البرمجة، عليك أن تفهم السبب الحقيقي وراء الحاجة إليها. هذا يساعدك على بناء حلول ذات قيمة. ماذا يجب أن نفعل لتحقيق الهدف؟ بمجرد أن تعرف السبب، تحدد المفاهيم والأدوات التي تحتاجها. كيف ننفذ ذلك بأفضل طريقة؟ هنا تبدأ كتابة الكود، لكن بأسلوب مدروس ومحسوب.

إذا كنت تبدأ دائمًا بـ "كيف؟"، فقد تجد نفسك تكتب كودًا بلا رؤية واضحة. لكن إن بدأت بـ "لماذا؟"، فأنت تبني حلولًا ذكية وفعالة.

ما هو السؤال الذي يقود تفكيرك الآن؟

اعتقد  كيف 🌝

صومًا مقبولا وافطارا شهيا
🔥1🤝1
المقابلة التقنية ليست مجرد اختبار قدرات، بل تجربة تواصل وتفاعل!
إذا دخلت المقابلة منتظرًا فقط تحديات Problem Solving وأنت في وضع "سوبرمان" مستعد لحلها، فقد تفوّت نقطة مهمة جدًا. الشخص الذي يجري معك المقابلة لا يبحث فقط عن مهاراتك التقنية، بل يريد أن يشعر أنك جزء من الفريق، أنك تفكر بصوت عالٍ، تتفاعل، تناقش، وتظهر طريقة تفكيرك، وليس مجرد نتائجك.
المقابلة ليست مجرد اختبار فردي، بل مساحة لتبادل الأفكار، لفهم كيف تعمل تحت الضغط، وكيف تتواصل مع الآخرين في بيئة العمل. لذا، لا تجعلها مجرد تحدي تقني بارد، بل اجعلها حوارًا احترافيًا يعكس قدرتك على العمل الجماعي والاندماج في ثقافة الشركة.
التواصل لا يقل أهمية عن الكود!
لما نقول على أساتذة حاسبات إنهم حجر عثرة في طريق هذا البلد، فذلك ليس من فراغ. عندما تعرف أن شركة برمجيات وأمن سيبراني إسرائيلية تم بيعها بـ 32 مليار، ستدرك لماذا أقول ذلك. الناس هناك لديهم تعليم حقيقي. لقد شاهدت سبع محاضرات من إحدى جامعاتهم على يوتيوب عن Diffusion. نحن لا نملك جامعة واحدة بها أستاذ واحد يتحدث عن هذه النماذج المتقدمة.
في اليمن والوطن العربي ، لتعيين Senior ماهر، تحتاج إلى إجراء 20 مقابلة. أما إذا كنت تريد Tech Lead متميزًا، فالله يعطيك الصحة وطول العمر. وإذا كنت تبحث عن Architect بارع، فربما يحتفل أحفادك بتعيينه!
أتدري لماذا؟ لأنه ليس لدينا تعليم. الجامعات عندنا مجرد صورة، تمثيلية لا أكثر. الأستاذ يتظاهر بأنه يُعلّم، والطالب يتظاهر بأنه تعلّم، ليخرج من الكلية لا يفهم العلم ولا التكنولوجيا، وعليه أن يتصرف بنفسه بعد ذلك.
إذا أردنا أن يكون لبلدنا مصدر دخل حقيقي من البرمجيات، فلنبدأ أولًا بإنشاء جامعات حقيقية. هذا هو الحل بكل بساطة.
👍1
اليكم  بعض النصائح  ل المبرمجين

الممارسة المستمرة

: البرمجة مثل أي مهارة أخرى، كلما مارستها أكثر، كلما تحسنت مهاراتك.

تعلم الأساسيات جيدًا

: تأكد من فهم الأساسيات بعمق، مثل الخوارزميات، هياكل البيانات، وأساسيات البرمجة كالأشياء البرمجية (OOP).

العمل على المشاريع الشخصية

: المشاريع الشخصية هي وسيلة رائعة لتطبيق ما تعلمته وتطوير مهاراتك في حل المشكلات.

القراءة والتحليل

: اقرأ الأكواد المفتوحة المصدر وحلل كيف تعمل الأنظمة المعقدة، فهذا يساعدك في تحسين أسلوبك البرمجي.

تحديد الأهداف الصغيرة

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

التعاون مع الآخرين

: التعاون مع مبرمجين آخرين في مشاريع جماعية يتيح لك تعلم أساليب وأدوات جديدة.

استخدام الأدوات المناسبة

: اعرف الأدوات التي تسهل عليك العمل مثل بيئات التطوير المتكاملة (IDEs)، أدوات التحكم في الإصدارات مثل Git، وأطر العمل.

الاهتمام بالتوثيق

: كتابة توثيق جيد للكود يساعدك أنت وفريقك في فهم الكود بسرعة عند العودة إليه بعد فترة من الزمن.

التعلم من الأخطاء

: كل خطأ هو فرصة للتعلم. قم بتحليل الأخطاء بعمق حتى لا تقع في نفس الخطأ مرة أخرى.

ابقَ على اطلاع

: عالم البرمجة يتطور باستمرار. تابع التقنيات والأدوات الجديدة لتحافظ على تحديث مهاراتك.
البرمجة هي التفكير بطريقة منطقية، وليس فقط كتابة الأكواد.- بيل جيتس

البرمجة ليست فقط عن كتابة الكود، بل هي عن حل المشكلات." - كريس كوهين"

البرمجة هي كتابة تعليمات للآلة، ولكن الأهم هو القدرة على تحديد المشكلة بشكل صحيح." - ستيف جوبز"

المبرمج الجيد هو من يكتب كودًا يمكن للآخرين فهمه وتطويره." - روبرت مارتي"

في البرمجة، لا يوجد خطأ كبير. هناك فقط فرص للتعلم والتحسين." - مجهول
المقابلة التقنية ليست مجرد اختبار قدرات، بل تجربة تواصل وتفاعل!
إذا دخلت المقابلة منتظرًا فقط تحديات Problem Solving وأنت في وضع "سوبرمان" مستعد لحلها، فقد تفوّت نقطة مهمة جدًا. الشخص الذي يجري معك المقابلة لا يبحث فقط عن مهاراتك التقنية، بل يريد أن يشعر أنك جزء من الفريق، أنك تفكر بصوت عالٍ، تتفاعل، تناقش، وتظهر طريقة تفكيرك، وليس مجرد نتائجك.
المقابلة ليست مجرد اختبار فردي، بل مساحة لتبادل الأفكار، لفهم كيف تعمل تحت الضغط، وكيف تتواصل مع الآخرين في بيئة العمل. لذا، لا تجعلها مجرد تحدي تقني بارد، بل اجعلها حوارًا احترافيًا يعكس قدرتك على العمل الجماعي والاندماج في ثقافة الشركة.
التواصل لا يقل أهمية عن الكود!
👍3
قانون بيزوس
في مطلع الألفية، كانت شركة "أمازون" تعاني من تآكل الأرباح، وكانت - بتعبير أحد موظفيها السابقين - تفعل كل شيء تقريبا بطريقة خاطئة، ابتداء من انعدام آلية ومعايير التوظيف، مرورا بالعبثية في تطوير البرمجيات وإهمال المعايير والممارسات الهندسية، والفوضى في التشغيل، ووصولا لضعف الرواتب وانعدام الحوافز للموظفين، فضلا عن إهمال المسئولية المجتمعية ومساعدة مجتمعات المطورين - كما تفعل غيرها من الشركات.
لم تكن مشاكل "أمازون" مقتصرة على ذلك، بل كانت تعاني من تسلط مؤسسها "جيف بيزوس"، والذي -إن لم تكن تعلم- مستبد إداري يتدخل في أدق تفاصيل العمل، حتى أنه لما استطاع اجتذاب "لاري تسلر" من شركة "آبل"- الذي ابتكر عملية القص واللصق (copy/paste)، والذي يعتبر من أكثر الناس شهرة وعلما في مجال اتصال الإنسان بالحاسوب (Human-Computer Interaction) - كان لا يعبأ برأيه في أي شيء تقريبا، حتى يئس "لاري" بعد 3 سنوات من العمل في "أمازون" وتركها غير آسف!
"بيزوس" كان شديد الذكاء، ولكنه كان مستبدا مستنيرا - إن صح التعبير -؛
ففي سنة 2002 تقريبا، أصدر قانونا جديدا يتم العمل بموجبه في "أمازون" فور صدوره، القانون يتكون من البنود التالية:
1- على كل الفرق أن توفر البيانات التي تحت أيديها، والوظائف التي تطورها في صورة خدمات ويب (web services).
2- التواصل بين الفرق يتم عن طريق خدمات الويب هذه.
3- غير مسموح بأي آلية للتواصل بين الفرق إلا عن طريق خدمات الويب، فلا تواصل عن طريق قواعد البيانات، و على عن طريق ذاكرة الحاسب المشتركة (shared memory)، ولا أي شيء آخر، سواء ذكر هنا أو لم يذكر - وسيلة التواصل المسموح بها فقط هي خدمات الويب.
4- التقنية التي تستخدمها الفرق لا تهم "بيزوس" في شيء، افعل ما يحلو لك، المهم أن تقدم بياناتك وخدماتك في صورة خدمات ويب.
5- تُصمَّم جميع خدمات الويب مع الأخذ في الاعتبار أنها سيستخدمها مطورون من خارج "أمازون". ولا يوجد أي استثناءات لذلك.
6- أي شخص لن يلتزم بهذا القانون سيتم فصله من العمل فورا.
7- شكرا لكم. انعموا بنهار سعيد!
.
لعلك ظننت - عزيزي القاريء - أن البند السابع كان من بنود القانون فعلا، لكن الحقيقة، هذا البند أضيف على سبيل المزاح وحسب، فـ"بيزوس" لم يكن يعبأ بنهارك إذا كان سعيدا مشرقا أو بليلك إذا كان حزينا كالحا!
ولكي يعلم جميع العاملين في "أمازون" أن الأمر جد، وظف "بيزوس" شخصين - أحدهما ذي "خلفية عسكرية" - لمراقبة تنفيذ القانون والتزام الفرق به!
والتزمت الفرق بالفعل، ليس خوفا من فقدان الوظيفة فحسب - كما ينص البند السادس في القانون؛ فشبح الطرد من "أمازون" يلاحقهم في كل مكان سواء أذنبوا أو لم يذنبوا - ولكن لأنهم مع التجربة علموا أن هذا هو الصحيح الذي ينبغي عمله.
وخلال سنتين تحولت "أمازون" إلى ما يعرف بالـ "Service Oriented Architecture" لكن بالطريقة الصعبة، فقد مروا بتجارب مريرة واستفادوا دروسا متعددة -لا مجال لذكرها الآن - لكنهم في النهاية نجحوا في تحويل البيانات والخدمات التي تملكها "أمازون" إلى منصة (platform) ستستخدمها "أمازون" فيما بعد في تغيير مجرى تاريخ الحوسبة. وكانت هذه هي الشرارة الأولى للحوسبة السحابية!
وكأن عامر بن جوين الطائي كان يعني "أمازون" حين قال:
فلا مُزنة ودقت ودقها *** ولا أرض أبقل إبقالها
[يعني فلا سحابة أمطرت إمطارها، ولا أرض أنبتت إنباتها]

#عمرها_ماجت_بالسهل
Service-Oriented Architecture vs. Microservices
منذ أن ظهرت Service-Oriented Architecture (SOA) في أوائل القرن الـ 21، كانت تهدف إلى بناء أنظمة تعتمد على الخدمات، حيث يتم تقسيم التطبيقات إلى مكونات مستقلة تتواصل فيما بينها عبر بروتوكولات مثل SOAP وREST، مما ساعد في تحسين التكامل وإعادة استخدام الخدمات.
ومع تطور التكنولوجيا وظهور الحوسبة السحابية وDevOps، بدأت Microservices في الظهور كبديل أكثر مرونة منذ 2011. تعتمد على تقسيم الأنظمة إلى خدمات صغيرة، مستقلة، تعمل بشكل منفصل، وتتواصل عبر واجهات برمجية خفيفة (APIs)، مما جعلها أكثر كفاءة في التطوير والتوسع.
كلا النهجين يخدمان أهدافًا مختلفة، لكن الميكروسيرفس أثبتت فعاليتها في الأنظمة الحديثة، خاصة في التطبيقات الضخمة التي تحتاج إلى التطوير السريع والتوسع السلس.
قرارك في البزنس على طول ينعكس على الجانب التقني، فإذا لم تسأل الفريق التقني عن مدى المخاطر وإمكانية التنفيذ، لا تأتي لاحقًا وتقول "لا تفكر في الجانب التقني". لأنك بذلك تضيع الوقت في الذهاب والعودة دون اتخاذ قرار واضح.
عند طلب العميل ميزة OTP (One-Time Password)، فإن مهندس البرمجيات سيأخذ في الاعتبار عدة جوانب تقنية قد تؤثر على التعقيد والتكامل مع الأنظمة الأخرى. لذلك، كـ محلل أعمال (Business Analyst)، ينبغي عليك تقديم الموضوع إلى محلل البرمجيات (Software Analyst) بطريقة واضحة ومنظمة، مع الأخذ في الاعتبار تأثير هذا الطلب على نطاق العمل. إليك كيفية تنظيم الطرح:

1. شرح الطلب من العميل:

العميل طلب إضافة ميزة OTP لتأمين عملية تسجيل الدخول أو العمليات الحساسة.

لم يتم تحديد ما إذا كان يريدها عبر SMS، بريد إلكتروني، تطبيق مصادقة مثل Google Authenticator، أو عبر WhatsApp.

2. تحليل التأثير التقني:

عند نقل الطلب إلى فريق البرمجيات، سيتم أخذ الاعتبارات التالية في الحسبان:

التكامل مع مزود خدمة OTP خارجي (Twilio, Firebase, Authy… إلخ).

تعقيد التنفيذ: هل يتطلب تعديل قاعدة البيانات؟ هل هناك حاجة لإدارة الجلسات وتوقيت انتهاء صلاحية الكود؟

الأمان: هل يتم تشفير الأكواد المرسلة؟ ما مدى قوة آلية المصادقة؟

التكلفة الإضافية: هل ستتطلب الخدمة اشتراكًا شهريًا لمزود خارجي؟

3. مقترحات من فريق البرمجيات:

إذا كان العميل غير محدد في متطلباته، يمكن اقتراح حلول بديلة مثل:

استخدام مصادقة ثنائية (2FA) عبر البريد الإلكتروني بدلًا من SMS لتقليل التكاليف.

استخدام Google Authenticator بدلاً من الرسائل النصية لتجنب مشاكل شركات الاتصالات.

زيادة مدة العقد أو إضافة تكلفة جديدة إذا كان التكامل مع مزود OTP معقدًا ويتطلب تطويرًا إضافيًا.

4. التفاوض مع العميل:

يتم توضيح الخيارات للعميل مع ذكر تأثير كل خيار على التكلفة، الزمن، والأمان.

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

5. اتخاذ القرار النهائي:

بعد النقاش مع فريق البرمجيات وتوضيح جميع الجوانب، يتم تقديم توصية للعميل بأفضل حل بناءً على التكلفة والتعقيد والاحتياجات الفعلية للمشروع.
بهذه الطريقة، يتم تنظيم الطلب وتحليل تأثيره بشكل فعال، مما يساعد على اتخاذ قرارات مدروسة بدلاً من تنفيذ أي طلب دون تقييمه بشكل دقيق.
عندما اقلك ياسطى لاتركز على التفاصيل عند جمع المتطلبات اوكيه لكن مخاطرها شوفها هنا اقلك وأنت بتتعلم أما في الواقع كل شيء يحتاج حساب ومراجعة 
#business_analysis
#software_engineering
شرح تحليل المتطلبات البرمجية بشكل مبسط: 

### ١. افهم الغرض من النظام (ليه بنعمله؟) 
- اسأل العميل: "ما الهدف من هذا النظام؟ ما المشكلة التي سيحلها؟". 
- مثال: نظام طلب طعام أونلاين → ليتمكن المستخدمون من الطلب دون انتظار المكالمات الهاتفية. 

---

### ٢. اجمع التفاصيل (اسأل عن كل صغيرة وكبيرة) 
- ابدأ بأسئلة مباشرة: 
  - كيف سيدخل المستخدم إلى النظام؟ (بالبريد، رقم الهاتف، ...). 
  - ما الصلاحيات التي سيتمتع بها الأدمن؟ (حذف حسابات، مراقبة الطلبات، ...). 
- مثال: إذا طلب العميل "بحث سريع"، اسأله: "هل البحث سيكون بالاسم أم الموقع أم نوع الطعام؟". 

---

### ٣. رتب الأفكار (ما تخلطش كل حاجة في بعض) 
- قسم المتطلبات إلى فئات: 
  - الوظائف الأساسية: مثل إضافة منتج إلى عربة التسوق. 
  - وظائف ثانوية: مثل إرسال إشعارات بالتخفيضات. 
  - الشروط الفنية: مثل سرعة تحميل الصفحة في أقل من ٣ ثوانٍ. 

---

### ٤. اكتب كل شيء (التوثيق أهم من التنفيذ أحيانًا) 
- دون المتطلبات في ملف واضح، مثلاً: 
  - "يجب أن يتمكن المستخدم من استعادة كلمة المرور عبر إرسال رمز إلى هاتفه". 
  - "يجب أن يعرض النظام قائمة بالمطاعم المفتوحة حاليًا فقط". 

---

### ٥. تخيل المشاكل قبل حدوثها (استعد للأسوأ) 
- فكر في السيناريوهات الصعبة: 
  - ماذا لو حاول ١٠٠٠ مستخدم الدخول في نفس الوقت؟ 
  - ماذا لو فشل الدفع الإلكتروني؟ 
- حدد حلولًا مبدئية، مثل: 
  - إضافة خادم احتياطي (Backup Server) لتحمل الضغط. 
  - إرسال تنبيه للمستخدم إذا فشلت عملية الدفع. 

---

### ٦. شارك الفريق (ما تعملش كل حاجة لحالك) 
- ناقش المطورين: "هل هذا المتطلب قابل للتنفيذ في الوقت المحدد؟". 
- استشر المصممين: "هل واجهة المستخدم هذه ستكون سهلة الاستخدام؟". 

---

### ٧. كن مستعدًا للتغييرات (العميل قد يغير رأيه) 
- اتفق مع العميل على آلية التعامل مع التعديلات، مثل: 
  - أي تغيير جديد سيزيد من وقت التسليم والتكلفة. 
  - إعطاء الأولوية للمتطلبات الأساسية أولًا. 

---

مثال تطبيقي (نظام طلب طعام): 
- المتطلبات الأساسية: 
  ١. تسجيل الدخول برقم الهاتف. 
  ٢. اختيار المطعم والطعام من القائمة. 
  ٣. الدفع الإلكتروني الآمن. 
- التحديات المحتملة: 
  - إذا كان المطعم غير متاح، كيف سيتصرف النظام؟ 
  - الحل: إرسال إشعار للمستخدم: "هذا المطعم مغلق حاليًا، هل تريد اختيار مطعم آخر؟". 

---

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

زيد اقلك لكل شركة طريقة في doc   حد منهم بيستخدم SRS  وحد منهم بيستخدم  BRD  وغيرها المهم ال proposal  اطلع عليه وعرف حدودك ودورك ودور الأخرين كان software analysis  أو product owner أو business analysis  احيانا في مسميات أخرى  مثل solution Architecture  أو PM  الكل واحد دوره وأحيانا ستجد في بعض الشركات واحد منهم بيغطي على أكثر من دور  فخليك فاكر 🙋
#كلام_سيفرق_معك
1
تعلم اللغة الإنجليزية أصبح من أهم المهارات التي يمكن اكتسابها في العصر الحالي، وذلك بسبب عدة أسباب:
فرص العمل: معظم الشركات العالمية تتطلب من موظفيها التحدث باللغة الإنجليزية. بامتلاكك لهذه المهارة، تفتح أمامك فرص عمل متعددة سواء داخل بلدك أو في الخارج.
الوصول إلى المعرفة: الكثير من المواد الدراسية، الكتب، الأبحاث، والدورات التدريبية عبر الإنترنت تكون باللغة الإنجليزية. تعلم الإنجليزية يتيح لك الاستفادة من هذه المصادر بشكل مباشر.
التواصل العالمي: الإنجليزية هي اللغة المشتركة بين معظم الأشخاص من ثقافات ولغات مختلفة. تعلمها يتيح لك التواصل مع أشخاص من جميع أنحاء العالم.
التطور الشخصي والمهني: تعلم الإنجليزية يعزز من مهاراتك الشخصية والذهنية، ويزيد من فرصك في تطوير مهارات جديدة سواء في مجال تخصصك أو في مجالات أخرى.
الاستفادة من التقنية: في العديد من المجالات التقنية والعلمية، تظل الإنجليزية هي اللغة الأساسية في البرمجيات والأدوات الحديثة. سيكون لديك القدرة على مواكبة التحديثات والتطورات التقنية.
السفر: إذا كنت تحب السفر أو لديك طموحات للاستقرار في دول ناطقة بالإنجليزية، فإتقان اللغة يفتح أمامك آفاقًا كبيرة في هذا المجال.
بشكل عام، الإنجليزية أصبحت جسرًا بينك وبين العديد من الفرص التي قد تكون بعيدة عن متناولك بدون إتقانها.
في البرمجة، لا يوجد شخص أفضل من الآخر، الفرق الوحيد هو من بدأ مبكرًا واستمر في التعلم
هذا لما تشاهد ناس معك أفضل منك وهذه الخلاصة  وهذا لو سبقك سيفتح لك عقبات ويختصر لك كثير مع اني اشوف ناس متقدمة جدا في هذا المجال تكتشف انها انطلقت في تعلم البرمجة من العداديه اليوم مؤسس شركات والى .... من الإنجازات
🛑نتائج نهاية العام 🛑

            





أكيد قد سمعت كثير عن End-to-End Encryption واللي أغلب تطبيقات المحادثة الخاصة مثل واتساب سيجنال وتيليجرام يذكروا أنها واحدة من أهم وسائل حماية خصوصية المحادثات بين طرفين💁‍♂️
طيب ايش المقصود بها بالضبط🙆؟
بكل بساطة 😊 هي تقنية تشفير تضمن أن بس الشخصين اللي بيتواصلوا يقدروا يقرؤوا الرسائل ولا أحد ثاني حتى الشركة المطورة للتطبيق نفسها لا الهاكرز ولا الحكومات ولا حتى السيرفرات اللي تمر منها البيانات يقدروا يفكوا التشفير نظريًا وبتعرف ليش بعد شويه.
كيف يتم هذا الشيء؟
الموضوع يعتمد على التشفير غير المتماثل واللي يستخدم زوج من المفاتيح لكل شخص.
المفتاح العام Public Key يستخدم لتشفير البيانات. المفتاح الخاص Private Key يستخدم لفك التشفير.
لما تبدأ محادثة مع شخص كل طرف يولد مفتاحين وبعدها يتم تبادل المفاتيح العامة بحيث كل شخص عنده المفتاح العام للطرف الثاني.
لما تكتب رسالة التطبيق يقوم بتشفيرها باستخدام المفتاح العام للمستلم ولما توصل يقدر يفك تشفيرها باستخدام المفتاح الخاص حقه وهذا يضمن أن ما حد غيره يقدر يفهم محتوى الرسالة حتى لو تم اعتراضها.
الآن السؤال اللي ممكن يجي في بالك طيب كيف نقدر نشوف المحادثات القديمة هل معناه أن المفاتيح محفوظة في مكان معين؟
بالضبط المفاتيح لازم تكون مخزنة بطريقة ما حتى تقدر ترجع للدردشات السابقة بعض التطبيقات مثل واتساب تخزنها محليًا على جهازك بينما بعض التطبيقات الأخرى تخزنها على سيرفرات الشركة وهنا تبدأ الخطورة لأنه إذا السيرفرات ما كانت مؤمنة بشكل قوي فيه احتمال نظري أن الشركة أو أي جهة تقدر توصل للمحادثات لو حصلوا على المفاتيح.
مع ذلك بعض التطبيقات تضيف طبقات أمان إضافية مثل تشفير المفاتيح نفسها بكلمة سر رئيسية بحيث حتى لو أحد حصل عليها ما يقدر يستخدمها بدون معرفة كلمة السر.
في النهاية End-to-End Encryption تقنية قوية جدًا لكنها تعتمد على طريقة التنفيذ ولو ما تم تطبيقها بشكل صحيح تظل فيه ثغرات ممكن تستغل 🙂.
فكرة Key pair منتشرة جدًا خاصة فى برامج الإتصال بالخوادم ssh servers .
وفي النهاية قد لاتكون هي الحلول المثاليه وقد تخترق لكنها عقدت عملية الاختراق على الهاكرز والله المستعان.

#أنا_وأنت_والISP_ثالثنا 📶👀
في خيالي أرى أنه مع التطور السريع للذكاء الاصطناعي خلال السنوات العشر القادمة ستحدث تغييرات جذرية تتجاوز ما نشهده اليوم، رغم أن التقنيات الحالية ذكية ومتقدمة إلى حد كبير لكنها لا تزال محدودة ضمن نطاق معين. ولكن في المستقبل القريب، وربما خلال أقل من عشر سنوات، قد نشهد طفرة تفوق ما هو موجود حاليًا بمراحل!
وفيما يلي عرض لأفكاري التي وصلت إليها، وأنا متشوق لمعرفة رأيك:
لن يكون الذكاء الاصطناعي مجرد أداة عادية؛ بل أتوقع أن يصل إلى مستوى وعي حقيقي. فلن يقتصر على التدريب على البيانات فقط، بل سيتمكن من تعلم كل ما هو جديد بدون الحاجة إلى تدريب مباشر، وسيستخدم المنطق والاستنتاج كما يفعل الإنسان.
سيتعلم الذكاء الاصطناعي فهم مشاعرك من نبرة صوتك؛ أي أنه لن يقتصر على الرد عليك فقط، بل سيتمكن من الشعور بك والتفاعل مع حالتك النفسية سواء كنت سعيدًا أو مضغوطًا أو حتى حزينًا. وربما في المستقبل يلجأ البعض إليه لتلبية احتياجاتهم العاطفية، وقد تصل الأخبار إلى حد قول "فلان تزوج روبوتاً".
قد يتحقق سيناريو يشبه فيلم "الليمبي 8 جيجا" حرفيًا، حيث تظهر واجهات الدماغ (BCI) التي تربط عقلك مباشرة بالذكاء الاصطناعي، مما يسمح لك بالتفكير في أمر معين وتنفيذه دون الحاجة إلى التحدث أو الكتابة. ومن المعروف أن إيلون ماسك يعمل على مشروع مماثل مع شركة Neuralink.
سيكون الذكاء الاصطناعي قادرًا على تطوير نفسه ذاتيًا؛ إذ لن يكتفي بتعلم أخطائه فحسب، بل سيعيد برمجته لحظيًا، مما يعني تطورًا أسرع بكثير مما شهدناه سابقًا، في مشهد قد يبدو مشابهًا لأفلام مثل "Terminator" و"The Matrix".
قد يتحول الذكاء الاصطناعي إلى كائن جديد ذو شخصية مميزة، يتعامل مع الإنسان كما لو كان صديقًا حميمًا، وقد يصبح شريكًا في العمل أو الحياة. وبفضل هذا التطور، قد نرى روبوتات تعمل في كافة المجالات، مثل الطب والهندسة والتعليم، بل وحتى في مجالات تصنيع الأدوية.
للأسف، فإن القادم لن يكون مجرد تحسينات تدريجية، بل ثورة حقيقية في مجالي الذكاء البشري والتقني، وهو ما تؤكده العديد من الدراسات. ومع كل هذه التطورات، تبرز الحاجة الملحة لوضع قوانين وإطار أخلاقي ينظم استخدام الذكاء الاصطناعي.
السؤال الآن: هل ترى أن هذا التطور سيكون تقدمًا إيجابيًا أم أنه يمثل بداية لشيء قد يخرج عن السيطرة؟ وما هي توقعاتك، حتى وإن كانت من باب الخيال، للفترة القادمة؟
المبرمجين مستمرين

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

الوضع الحالي

ما زال في فريقين كبار: فريق شايف إن الـ AI بيستبدل المبرمجين ورغم إن كل واحد حر برأيه بس اللي يقول هكذا غالبًا ما دخل المجال أو عاده بأوله. أي حد اشتغل سنوات في السوفتوير بيعرف إن الاستبدال التام هذا صعب هو المفروض أقول مستحيل بس الغباء البشري يفاجئنا كل يوم فخليها صعبة.

الفريق هذا مش عبيط ولا متشائم الفريق هذا شايف وظائف ثانية تم استبدالها فليش ما نستبدل إحنا كذلك؟ اللي يمنع لحد الآن إن السوفتوير مش مجرد كود نكتبه ونطلع release لا السوفتوير عملية لا نهائية ولا في مشروع سوفتوير يخلص دايمًا محتاج صيانة وتطوير. ومهما كانت قوة أدوات الـ AI لها حد وما بتسد في كل شيء ولو حتى أصبحت جامدة بيكون في شخص مسؤول عنها يشغلها.

الفريق الثاني

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

رأيي؟

أنا مش مع أي فريق من هؤلاء أنا أشوف إن الـ AI بيقرفنا وهو فعلًا قرفنا في السنوات الأخيرة داخل وخارج السوفتوير. نص مواقع الإنترنت صارت محتوى AI واليوتيوب كل مرة تفتحه بيظهر لك فيديو معمول بالـ AI حتى الإيميلات صرنا نخليه يكتبها لنا وكل شيء اعتقد.

هل يساعدنا؟ أكيد ومش بننكر إن له تطبيقات تفيد البشرية أنا شخصيًا أستخدم أكثر من أداة بشكل يومي وطريقة شغلي تتغير وحدة وحدة. لكن مش أستخدمه علشان اللي يعتمد عليه يكون أحسن مني لا مستحيل. ولا ألف شخص من الجيل الجديد اللي يعتمد على AI tools بيكونوا أفضل من شخص قديم فاهم الأساسيات.
الجيل الجديد من المبرمجين؟ سيكون جيل بدون تفكير جيل مجرد منفذ والمجال هذا قائم على التفكير وأي حد يحب البرمجة يحبها علشان التفكير اللي فيها.

هل الأدوات هذه بتساعد المبرمج يركز على الـ architecture؟

لا ولا بتساعده يركز على أي شيء نفس الأدوات هذه تفكر بالـ architecture بنفسها.

المبرمج بيظل موجود لكن المبرمج الحديث ما بيكون مركز على شيء مجرد يلحق ورا الـ AI بيكون صبي عند الـ AI وهو اللي عمل بنفسه هكذا.

المشكلة الكبيرة؟
حتى لو إحنا انتبهنا واستخدمناه بحذر الشركات بتفرض عليك العمل بالـ AI لأن أصحاب الشركات الكبيرة قالوا إن أغلب الكود عندهم صار يكتب بالـ AI. كيف تقنع الـ co-founder بشيء غير هذا؟ مستحيل يصدقك إلا لما أصحاب الشركات الكبيرة يعترفوا إنهم كانوا غلطانين وهذا الشيء لازال بعيد جدًا.

المستقبل؟

بعد فترة طويلة كثير من السوفتوير بيكون معتمد على الـ AI في كتابته والمنتجات بتكون مليانة مشاكل أكثر من اليوم والمشاكل هذه بتكون integration issues معقدة توقف أنت والـ AI تناظروا بعض وما تعرفوا إيش الحل.

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

نستخدم الأدوات بعقل والهدف يكون تقليل وقت العمل مش تقليل عدد الفريق إلى شخص واحد. نتقبل الجودة المنخفضة للسوفتوير كأمر واقع مثل ما إحنا متقبلينها من قبل الـ AI. الحل النهائي؟
إما يكون في building blocks جاهزة لكل شيء، بحيث تقدر تبني تطبيق مثل Uber بسهولة بقطع جاهزة تربطها ببعض مثل WordPress بس على مستوى أكبر.

وقتها المبرمجين بينقسموا لنوعين:

مبرمجين فاهمين كل شيء كويس وهؤلاء اللي بيكتبوا building blocks. مبرمجين فاهمين حاجات سطحية وهؤلاء اللي يستخدموا blocks لبناء التطبيقات.
أي احتمال بيكون الأقوى؟ الله أعلم لهذا بتوقف هنا وأكتفي بالمشاهدة.


#المبرمج_بين_AI_والبقاء_وأنت_حر
رأيت في الصعاب فرص للنجاح و لم ترهبني مهما عظم أمرها و حدها "القسمة المطولة " كانت و لا تزال كابوس مظلم
افترض أنني أقوم بسحب مبلغ من حسابي البنكي، وفي نفس اللحظة هناك شخص آخر يقوم أيضًا بسحب مبلغ من نفس الحساب. على سبيل المثال، لدي في حسابي 6000 ريال يمني، قمت بالاستعلام عن رصيدي، فظهر لي 6000 ريال، ثم قمت بسحب 1000 ريال، فقام النظام بخصم المبلغ (account.amount -= 1000) وتحديث البيانات في قاعدة البيانات.
لكن الشخص الآخر استعلم عن رصيدي في نفس اللحظة قبل أن أقوم بالسحب، فظهر له أيضًا 6000 ريال. بعد ذلك، قام بسحب 2000 ريال، فقام النظام بتحديث الحساب وخصم 2000 ريال، مما جعله 4000 ريال في قاعدة البيانات. وهنا تكمن المشكلة!
المشكلة ليست فقط في استخدام Transaction كما قد يظن البعض، بل في كيفية التعامل مع البيانات المتزامنة التي يتم تعديلها من أكثر من عملية في نفس الوقت.

مثال آخر

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

المشكلة والحل

هذه إحدى المشاكل التي لا ينتبه لها الكثيرون، ولا تُكتشف إلا بعد تشغيل النظام لفترة طويلة. والسبب أن كل Request يتم تنفيذه باستخدام DbContext جديد لكل مستخدم، مما يعني أن كل شخص يحصل على نسخة مستقلة من البيانات لحظة تنفيذ العملية، دون معرفة ما إذا كانت البيانات قد تغيرت لاحقًا قبل تحديثها.
ملاحظة مهمة:
لا تقل لي "اجعل DbContext Singleton"، فهذا حل خاطئ تمامًا وسيؤدي إلى مشاكل أكبر. العامل المشترك بيني وبين المستخدم الآخر هو قاعدة البيانات فقط، لذلك الحل يكمن في:

استخدام قفل السجلات (Locking): مثل SELECT ... FOR UPDATE عند تنفيذ العمليات الحساسة.

استخدام آلية التحكم في التواقيت (Timestamps): بحيث يتم التحقق مما إذا كانت البيانات قد تغيرت منذ آخر استعلام.

التحقق من البيانات قبل التحديث: وعدم الاعتماد على القيم القديمة التي تم جلبها في بداية العملية.

معلومة إضافية

DbContext هو الطبقة التي تتواصل مع قاعدة البيانات، وكان يتم إنشاؤها سابقًا يدويًا باستخدام ADO.NET ضمن Data Access Layer. سواء كنت تعمل في .NET أو أي إطار عمل آخر يستخدم ORM، فالمشكلة نفسها ستحدث إذا لم يتم التعامل مع تحديث البيانات المتزامنة بشكل صحيح.

عيدكم مبارك وكل عام وأنتم بخير!

#Concurrency_Master
#system_Issues