في احد الحسابات علي اللينكدان نزل شويه اسئله انترفيو لل backend هي عموما ل laravel بس غالبيتها يمشي علي الكل يعني معضم الأسئلة تحسها عامة لأنها مصطلحات ومفاهيم عامة بغض النظر عن اللغة او الفريم ورك .
1-اي هو OOP ؟
2- اي الفرق بين session & cookies؟
3- اي الفرق بين class & object؟
4- اي هو template engine في لارافيل
5- اي الفرق construct & destractor و هل استخدمت destractor قبل كدا؟
6- اي الفرق بين class & trait؟
7- اي interface & abstract و استخدمتهم في اي؟
8- اي هي مبادي Solid ؟
9- اي هو sql joins و اي انواعها ؟
10- اي الفرق بين where , groub by , having ؟
11- امتي استخدم sql join و امتي استخدم ORM ؟
12- اي الحالات اللي استخدم فيها sql join ؟
13- اي الفرق بين extend , implment و بنستخدم كل واحدة امتي ؟
14- اي هو event & listeners و استخدامهم في اي ؟
15- اي هو queue & jobs ؟
16- اي هو facade ؟
17- باكدج spatie permessions شغالة ازاي في database ؟
18- اي هو polymorgh ؟
19- اي هيا design battern اللي استخدمتها في شاريعك ؟
20- اي هيا sql injection ؟
21- اي هو dependency injection ؟
22- اي الفرق بين service conainer & service provider ؟
23- اي هيا access modefiers ؟
24- اي الفرق بين self & this ؟
25- امتي بنستخدم single auth & multi auth ؟
26 - اشرح laravel request life cycle ؟
27- اي هيا CSEF ؟
28- لية بنستخدم migration و مش بنتعامل مع data base مباشرة ؟
29- اي الحاجات اللي بتاثر علي performance او سرعة الموقع من حيث الفرونت و الباك ؟
30- اي الفرق بين sql query و query bulder و ORM elequant ؟
31- ال route عبارة عن اي ؟
32- اية هو observer ؟
33- اية هو repositary pattern ؟
34- اية هو N+1 ؟
35- اية هو service layer
36- اية هو x-blade componant ؟
37- اية هو seeder & factory ؟
38- اية هو composer ؟
39- اية هو overloading & overriding ؟
40- اية هو namespace ؟
41- اية هو collection ؟
42- اية هو callback function ؟
43- اية هو transaction ؟
44- اية هو مبادي rest api ؟
45- اي هيا trait ؟
46- اي هو Model Binding ؟
47- ازاي نحسن سرعة Query معين ؟
48- اي ال accessor and mutator ؟
49- يعني اي migration ؟
50- اي الفرق بين http & https ؟
51- اي الفرق بين mysql & oracle ؟
52- اي هو MVC ؟
53- اي config files ؟
54- اي هو throtting ؟
55- اي الفرق بين observer & triggers؟
قد تجد يعض الأسئلة بسيطة وبعضها لأول مره تسمع عنها فلذلك من خلال هذي الأسئلة حاول تبحث وتتعلم الأشياء الذي تلاحظها جديده عليك
1-اي هو OOP ؟
2- اي الفرق بين session & cookies؟
3- اي الفرق بين class & object؟
4- اي هو template engine في لارافيل
5- اي الفرق construct & destractor و هل استخدمت destractor قبل كدا؟
6- اي الفرق بين class & trait؟
7- اي interface & abstract و استخدمتهم في اي؟
8- اي هي مبادي Solid ؟
9- اي هو sql joins و اي انواعها ؟
10- اي الفرق بين where , groub by , having ؟
11- امتي استخدم sql join و امتي استخدم ORM ؟
12- اي الحالات اللي استخدم فيها sql join ؟
13- اي الفرق بين extend , implment و بنستخدم كل واحدة امتي ؟
14- اي هو event & listeners و استخدامهم في اي ؟
15- اي هو queue & jobs ؟
16- اي هو facade ؟
17- باكدج spatie permessions شغالة ازاي في database ؟
18- اي هو polymorgh ؟
19- اي هيا design battern اللي استخدمتها في شاريعك ؟
20- اي هيا sql injection ؟
21- اي هو dependency injection ؟
22- اي الفرق بين service conainer & service provider ؟
23- اي هيا access modefiers ؟
24- اي الفرق بين self & this ؟
25- امتي بنستخدم single auth & multi auth ؟
26 - اشرح laravel request life cycle ؟
27- اي هيا CSEF ؟
28- لية بنستخدم migration و مش بنتعامل مع data base مباشرة ؟
29- اي الحاجات اللي بتاثر علي performance او سرعة الموقع من حيث الفرونت و الباك ؟
30- اي الفرق بين sql query و query bulder و ORM elequant ؟
31- ال route عبارة عن اي ؟
32- اية هو observer ؟
33- اية هو repositary pattern ؟
34- اية هو N+1 ؟
35- اية هو service layer
36- اية هو x-blade componant ؟
37- اية هو seeder & factory ؟
38- اية هو composer ؟
39- اية هو overloading & overriding ؟
40- اية هو namespace ؟
41- اية هو collection ؟
42- اية هو callback function ؟
43- اية هو transaction ؟
44- اية هو مبادي rest api ؟
45- اي هيا trait ؟
46- اي هو Model Binding ؟
47- ازاي نحسن سرعة Query معين ؟
48- اي ال accessor and mutator ؟
49- يعني اي migration ؟
50- اي الفرق بين http & https ؟
51- اي الفرق بين mysql & oracle ؟
52- اي هو MVC ؟
53- اي config files ؟
54- اي هو throtting ؟
55- اي الفرق بين observer & triggers؟
قد تجد يعض الأسئلة بسيطة وبعضها لأول مره تسمع عنها فلذلك من خلال هذي الأسئلة حاول تبحث وتتعلم الأشياء الذي تلاحظها جديده عليك
❤1👍1
📛📛 API (Application Programming Interface)
اولاً عشان نعرف ايش هو الـ API لازم نعرف ايش هو الـ Json
🔹 الـ Json: هي طريقة لكتابة البيانات بطريقة تفهمها كل لغات البرمجة عشان تتواصل وتنقل البيانات من مكان الى آخر
🔹 طيب كيف هذه البيانات بتنتقل؟
هنا يجي دور الـ API
وهو الوسيط بين الـ backend وكل التطبيقات الي تستخدم البيانات الخاصة به (وهنا يمكن يكون في شي مش مفهوم لكن شوية ونفهمه)
والـ API ماهو الا رابط او Link بنستخدمه عشان نعمل request معين من قاعدة البيانات، سواءًا تجيب بيانات مخزنة في القاعدة او ترسل بيانات عشان تتخزن فيها او تحذف او تعدل.
وطبعاً ما نقدر نتواصل مع قاعدة البيانات مباشرة من موقع ويب كواجهات بإستخدام JS او كتطبيق موبايل
لكن بيكون في الـ backend developers هم الي بيتعاملوا مع البيانات ويوصلوا لقاعدة البيانات بلغة مثل php او c#
وكذلك هم الي بيقوموا بعمل الـ API عشان مطورين التطبيقات او الويب كواجهات والخ يقدروا يوصلوا لقاعدة البيانات بالـ API الي يوفروه لنا
ويكون محدد حسب ما يسمحوا به هم وهذا يخلينا نوصل لنقطة...
🔹 ماهي مكونات الـ API
1- الـ base Url
وهذا بيكون ثابت في التطبيق كامل ما يتغيرش ويعبر عن الـ domain الي موجود فيه الاستضافة على السرفر
مثل:
2- الـ end point
وهذا بيحدد ايش تشتي توصل له بالضبط وبيتغير طبعاً حسبما الـ backend developers بيحددوه
مثل:
وهذا بيتبع الـ base Url وبيمثل غالباً الجدول الي بتوصل له
3- الـ headers
وهي بيانات بترسلها مع الـ request عشان المطور ممكن يحتاجها عشان يعمل شيء معين او يعرف كيف يرجع لك response حسب هذه البيانات
مثل:
وهذا المثال عشان يعرف هل يرجع لك الرد عربي او انجليزي
4- الـ body:
وهنا بترسل بيانات بيتعامل معاها المطور فمثلاً هنا اذا تشتي تدخل بيانات لقاعدة البيانات بترسلها هنا كـ json مثلاً، او تعدل بيانات وغيرها
مثل:
5- الـ Query parameters
وهذه محددات بترسلها في ال Url نفسه وتفيد انك تمرر مثلاً الـ id حق المستخدم عشان يفعل الـ query على اساسه بإستخدام الـ Where
مثل:
اولاً عشان نعرف ايش هو الـ API لازم نعرف ايش هو الـ Json
🔹 الـ Json: هي طريقة لكتابة البيانات بطريقة تفهمها كل لغات البرمجة عشان تتواصل وتنقل البيانات من مكان الى آخر
🔹 طيب كيف هذه البيانات بتنتقل؟
هنا يجي دور الـ API
وهو الوسيط بين الـ backend وكل التطبيقات الي تستخدم البيانات الخاصة به (وهنا يمكن يكون في شي مش مفهوم لكن شوية ونفهمه)
والـ API ماهو الا رابط او Link بنستخدمه عشان نعمل request معين من قاعدة البيانات، سواءًا تجيب بيانات مخزنة في القاعدة او ترسل بيانات عشان تتخزن فيها او تحذف او تعدل.
وطبعاً ما نقدر نتواصل مع قاعدة البيانات مباشرة من موقع ويب كواجهات بإستخدام JS او كتطبيق موبايل
لكن بيكون في الـ backend developers هم الي بيتعاملوا مع البيانات ويوصلوا لقاعدة البيانات بلغة مثل php او c#
وكذلك هم الي بيقوموا بعمل الـ API عشان مطورين التطبيقات او الويب كواجهات والخ يقدروا يوصلوا لقاعدة البيانات بالـ API الي يوفروه لنا
ويكون محدد حسب ما يسمحوا به هم وهذا يخلينا نوصل لنقطة...
🔹 ماهي مكونات الـ API
1- الـ base Url
وهذا بيكون ثابت في التطبيق كامل ما يتغيرش ويعبر عن الـ domain الي موجود فيه الاستضافة على السرفر
مثل:
https://www. app. com
2- الـ end point
وهذا بيحدد ايش تشتي توصل له بالضبط وبيتغير طبعاً حسبما الـ backend developers بيحددوه
مثل:
/users
وهذا بيتبع الـ base Url وبيمثل غالباً الجدول الي بتوصل له
3- الـ headers
وهي بيانات بترسلها مع الـ request عشان المطور ممكن يحتاجها عشان يعمل شيء معين او يعرف كيف يرجع لك response حسب هذه البيانات
مثل:
Accepted_Language: ar
وهذا المثال عشان يعرف هل يرجع لك الرد عربي او انجليزي
4- الـ body:
وهنا بترسل بيانات بيتعامل معاها المطور فمثلاً هنا اذا تشتي تدخل بيانات لقاعدة البيانات بترسلها هنا كـ json مثلاً، او تعدل بيانات وغيرها
مثل:
{"Name": "Ahmed"}
5- الـ Query parameters
وهذه محددات بترسلها في ال Url نفسه وتفيد انك تمرر مثلاً الـ id حق المستخدم عشان يفعل الـ query على اساسه بإستخدام الـ Where
مثل:
?id=2
Forwarded from اللجنة العلمية CS 22 (ʙʀʜᴏᴏᴍ ⑇)
مسابقة اعادة تصميم شعار مطاعم الربيع بقيمة 1000$
المنشور قبل 6 ايام
اخر موعد يوم 26 من هذا الشهر
المصممين والمصممات بدفعتنا وباقي الدفع... فرصه جميلة للمشاركة ، وفي اسوأ سيناريو إن لم تفز يكفيك أكتساب الخبره في التصميم 👍
التفاصيل:
https://www.facebook.com/share/p/19SXP8XLxd/
المنشور قبل 6 ايام
اخر موعد يوم 26 من هذا الشهر
المصممين والمصممات بدفعتنا وباقي الدفع... فرصه جميلة للمشاركة ، وفي اسوأ سيناريو إن لم تفز يكفيك أكتساب الخبره في التصميم 👍
التفاصيل:
https://www.facebook.com/share/p/19SXP8XLxd/
👍2
لمحة 👀 برمجية
قبل كل شي... لازم نسأل انفسنا هذه الاسئله 1. ايش هو DB؟ هي قاعدة البيانات (Database) عباره عن النظام الذي نستخدمه لحفظ الداتا بطريقة متناسقة في جداول... وعادة الجداول هذه ما بيستفيد منها اليوزر بشكل مباشر ، وانما بيستفيد من جداول معينه تم تجميع البيانات ب…
ورجعنا مع بارت 2... طبعا اعذروني على التأخير فهذه الرسائل اكتبها أنا ويأخذ مني وقت.
طبعا الحلول الي شاركوها العيال والبنات سابقاُ فهمنا انها صحيحه لحالات معينه... بس الحاله الي في الشركه مختلف.
نتكلم عن db كبيره جدا مع بيانات عملاقه وعلاقات توجع الدماغ 🤕
ملاحظة: انا أحكي لكم حل الشركة وليس معناته ان هذا أفضل حل ممكن... حلهم جميل في حالتهم الخاصة فقط وقد ربما يكون في طرق أفضل وأسرع
فلا تعتمدو على هذه الطريقه 100%
لما الشركه فكرت بحلول للمشكلة... احد الموظفين جاب فكره حلوه... وقال ليش ما استغل فكره:-
بدل مسأله :
بمعنى... ليش المستخدم لما يشتي تقرير معقد يروح يجيبه من view! ليش ما نفعل جدول ثاني نفس view وفيبه 0 علاقات ونروح نجيب الداتا منه!
طيب ليش!؟ مش احنا عارفين ان select من جدول واحد حتى وان كانت بياناته كبيره بيكون أسرع (بشكل ملحوظ) من select مع join لنفس البيانات ولكن بجداول منفصله
ولكن هنا في مشكلة كذلك!
الdb اصلا فوق 80 جدول! فكيف بيتم عمل هذا!!
هنا الشركة عملت db ثانيه عشان ما تعصد ال db الأساسية
والاسم حقها اذا اسم الdb الرئيسي هو
store_db
يكون اسم الdb حق التقارير الكبيرة كمثال:
store_db_big_reports
او اي اسم بدل big reports عشان التنظيم
المهم...
بشرح لكم بشكل مختصر جداً الحل الي تم اتخاذه في الشركة
فكرة db الجديده عباره عن db شبه مؤقته...
بيكون كل جدول فيها يمثل view في قاعده البيانات الأساسية ، بمعنى لو معي مثلا 10 views ولكن في 6 حبات منهن ثقيلااات مره ويتأخرين لما نستعلم منهم... ال db الجديدة بيكون فيها 6 جداول فقط (ما يحتاج لباقي ال view ال 4 لانهن سريعات)
طبعا الحل الي الشركه تستخدمه يكون عمل مشترك من db و backend... ولان اغلبنا سنه 4 بتكلم بالثنتين مع بعض.
طبعا مستحيل يكون الحل بهذه البساطه!! اصلا لازم يتم أخذ هذه الأمور في الحسبان:-
1 - لازم نتأكد ان الثنتين db متزامنات... اي اذا في شي جديد في db الأساسية لايزم ما يكون موجود في db المؤقته حق التقارير العملاقة
2 - لازم ما يكون عملية التحقق هذه تتم بالكود... اي ان العميل او المستخدم ما يحس ان في 2 db ويحصل sync فيما بينهم...
3 - يتم انشاء مشروع جانبي api لكي يدير عمل ال db الجديده - طبعا اذا كان المشروع الأساس مرتب وبتقدر تضيف كل شي فيه فما يحتاج انشاء المشروع الجديد.
الان بعد ما فهمنا بشكل نظري كيف الطريقه عادة يكون بعده دور الكود... ولكن مستحيل اشارك الكود بسبب:
1 - الكود تبع شركه وخاص بها.
2 - الكود طويل جداً.
لهذا بشرح لكم الكود هدره والي يشتي يتعمق يفعل مشروع جانبي ويحاول يطبقه 👍
الان نبدأ نطبق موضوع sync بين الثنتين قواعد البيانات... بس كيف؟! 🤔
ببساطه في db الأساسية ما بيتم تعديل اي شي فيها! فقط بنضيف جدول جديد في db الموقتة فكرته بكل بساطه يفعل لنا track للاشياء الجديده الي تحصل في db الجديدة من insert و delete و update
طبعا مش لكل الجداول... انما للجداول ال 6 حق view المذكورة سابقاً
الهيكلية تبع الجدول الجديد هو:
id, row_id, view_name
وكما هو معروف.. ال id هو pk
ال row_id هذا ال id الخاص بالصف الي تعدل او انضاف او انحذف في db الأساسية
والاخير هو ايش اسم الفيو
ولا تنسو... بيكون هذا الجدور له دور اساسي في طريقه الشركه.
طبعا الان بتقولو فهمنا كل شي... بس في سؤالين
1 - ايش استفدنا من جدول track وكيف بنفعل track?
يا عزيزي بيتم عمل api بين الثنتين... اذا تم اضافه او تعديل او حذف اي صف في أي جدول بيتم ارسال request الى api وبيضيفه هناك في track... ومن ثم بشرح لكم كيف تتعاملو مع الجدول لما يكون فيبه داتا 👍
2 - ال db الجديده ايش بيكون فيها غير هذا الجدول؟!
بيكون كل view في db الأساسية عباره عن جدول جديد في db الجديده
بمعنى انه جدول عادي بدون اي علاقه نفس view ولكنه create table بدون ما يكون joins
فيعني اذا معي 6 views ثقيله مره بيكون معي 6 جداول اساسيه هناك فقط وانتهينا
هنا بتوقف... هل انتهينا من الشرح؟! لا 🤕
في بارت 3 بواصل اشرح لكم طريقه الحل مع تلميحات في الكود...
أترك لكم مجال مشاركة ارائكم وافكاركم ان اردتم وكعادة المنشور السابق... يوزري:-
@E_1_E
#db #سلسلة
طبعا الحلول الي شاركوها العيال والبنات سابقاُ فهمنا انها صحيحه لحالات معينه... بس الحاله الي في الشركه مختلف.
نتكلم عن db كبيره جدا مع بيانات عملاقه وعلاقات توجع الدماغ 🤕
ملاحظة: انا أحكي لكم حل الشركة وليس معناته ان هذا أفضل حل ممكن... حلهم جميل في حالتهم الخاصة فقط وقد ربما يكون في طرق أفضل وأسرع
فلا تعتمدو على هذه الطريقه 100%
لما الشركه فكرت بحلول للمشكلة... احد الموظفين جاب فكره حلوه... وقال ليش ما استغل فكره:-
select * from table_nameبدل مسأله :
select * from view_nameبمعنى... ليش المستخدم لما يشتي تقرير معقد يروح يجيبه من view! ليش ما نفعل جدول ثاني نفس view وفيبه 0 علاقات ونروح نجيب الداتا منه!
طيب ليش!؟ مش احنا عارفين ان select من جدول واحد حتى وان كانت بياناته كبيره بيكون أسرع (بشكل ملحوظ) من select مع join لنفس البيانات ولكن بجداول منفصله
ولكن هنا في مشكلة كذلك!
الdb اصلا فوق 80 جدول! فكيف بيتم عمل هذا!!
هنا الشركة عملت db ثانيه عشان ما تعصد ال db الأساسية
والاسم حقها اذا اسم الdb الرئيسي هو
store_db
يكون اسم الdb حق التقارير الكبيرة كمثال:
store_db_big_reports
او اي اسم بدل big reports عشان التنظيم
المهم...
بشرح لكم بشكل مختصر جداً الحل الي تم اتخاذه في الشركة
فكرة db الجديده عباره عن db شبه مؤقته...
بيكون كل جدول فيها يمثل view في قاعده البيانات الأساسية ، بمعنى لو معي مثلا 10 views ولكن في 6 حبات منهن ثقيلااات مره ويتأخرين لما نستعلم منهم... ال db الجديدة بيكون فيها 6 جداول فقط (ما يحتاج لباقي ال view ال 4 لانهن سريعات)
طبعا الحل الي الشركه تستخدمه يكون عمل مشترك من db و backend... ولان اغلبنا سنه 4 بتكلم بالثنتين مع بعض.
طبعا مستحيل يكون الحل بهذه البساطه!! اصلا لازم يتم أخذ هذه الأمور في الحسبان:-
1 - لازم نتأكد ان الثنتين db متزامنات... اي اذا في شي جديد في db الأساسية لايزم ما يكون موجود في db المؤقته حق التقارير العملاقة
2 - لازم ما يكون عملية التحقق هذه تتم بالكود... اي ان العميل او المستخدم ما يحس ان في 2 db ويحصل sync فيما بينهم...
3 - يتم انشاء مشروع جانبي api لكي يدير عمل ال db الجديده - طبعا اذا كان المشروع الأساس مرتب وبتقدر تضيف كل شي فيه فما يحتاج انشاء المشروع الجديد.
الان بعد ما فهمنا بشكل نظري كيف الطريقه عادة يكون بعده دور الكود... ولكن مستحيل اشارك الكود بسبب:
1 - الكود تبع شركه وخاص بها.
2 - الكود طويل جداً.
لهذا بشرح لكم الكود هدره والي يشتي يتعمق يفعل مشروع جانبي ويحاول يطبقه 👍
الان نبدأ نطبق موضوع sync بين الثنتين قواعد البيانات... بس كيف؟! 🤔
ببساطه في db الأساسية ما بيتم تعديل اي شي فيها! فقط بنضيف جدول جديد في db الموقتة فكرته بكل بساطه يفعل لنا track للاشياء الجديده الي تحصل في db الجديدة من insert و delete و update
طبعا مش لكل الجداول... انما للجداول ال 6 حق view المذكورة سابقاً
الهيكلية تبع الجدول الجديد هو:
id, row_id, view_name
وكما هو معروف.. ال id هو pk
ال row_id هذا ال id الخاص بالصف الي تعدل او انضاف او انحذف في db الأساسية
والاخير هو ايش اسم الفيو
ولا تنسو... بيكون هذا الجدور له دور اساسي في طريقه الشركه.
طبعا الان بتقولو فهمنا كل شي... بس في سؤالين
1 - ايش استفدنا من جدول track وكيف بنفعل track?
يا عزيزي بيتم عمل api بين الثنتين... اذا تم اضافه او تعديل او حذف اي صف في أي جدول بيتم ارسال request الى api وبيضيفه هناك في track... ومن ثم بشرح لكم كيف تتعاملو مع الجدول لما يكون فيبه داتا 👍
2 - ال db الجديده ايش بيكون فيها غير هذا الجدول؟!
بيكون كل view في db الأساسية عباره عن جدول جديد في db الجديده
بمعنى انه جدول عادي بدون اي علاقه نفس view ولكنه create table بدون ما يكون joins
فيعني اذا معي 6 views ثقيله مره بيكون معي 6 جداول اساسيه هناك فقط وانتهينا
هنا بتوقف... هل انتهينا من الشرح؟! لا 🤕
في بارت 3 بواصل اشرح لكم طريقه الحل مع تلميحات في الكود...
أترك لكم مجال مشاركة ارائكم وافكاركم ان اردتم وكعادة المنشور السابق... يوزري:-
@E_1_E
#db #سلسلة
👍5
يحتاج مطور الـFrontend إلى التأكد من ملائمة الصفحات التي ينفذها على جميع الشاشات .. من فترة قريبة اكتشفت برنامج Responsively
وهو أداة تساعدك على معاينة اي موقع على أكثر من قياس بنفس الوقت وبسهولة
#Front_End
وهو أداة تساعدك على معاينة اي موقع على أكثر من قياس بنفس الوقت وبسهولة
#Front_End
طريقك لتعلم exploit development
1- تذاكر سي كويس جدا ممكن تذاكرها من the c programming language أو أي كتاب تحبه.
2- طبق شويه على السي كويس يعني ممكن تعمل بروجكت على سبيل المثال http server صغير.
3- تبدأ تذاكر أسمبلي ابدأ بالاسمبلي بتاع لينكس هنا:
https://youtube.com/playlist?list=PL6brsSrstzga43kcZRn6nbSi_GeXoZQhR&feature=shared
4- بعد كده تذاكر اسمبلي الويندوز:
https://www.youtube.com/playlist?list=PL6qa4C74KbMAjEAYPzWAIblkTAvR4CHmt
5- ابدأ ذاكر buffer over flow من الفيدوهات دي:
https://youtube.com/playlist?list=PL6brsSrstzga2IQwI2oz9vCKDQEmSS2FL&feature=shared
وبعد كده الفيديوهات دي:
https://youtube.com/playlist?list=PL6qa4C74KbMBo0BMM9ZdcFlDLkArwA3SF&si=0G5h8_tMhBqvGxw_
6- وبعد كده ال format string bugs من هنا (من باب العلم بالشئ بقى من النادر جدا تلاقي حاجه زي كده):
https://www.youtube.com/@TheSecurityTube/search?query=Format%20string%20vulnerabilities%20primer
7- هتحل الرووم دي pwn101
https://tryhackme.com/r/room/pwn101
ودي فيديوهات الحلول
https://youtube.com/playlist?list=PLchBW5mYosh_F38onTyuhMTt2WGfY-yr7&si=dU5UP8j-UJXucHYc
8- كده انت خدت مبادئ استغلال الثغرات محتاج تاخد مبادئ ازاي تلاقيها نبدأ بالأسهل وهو مراجعه الكود هتتفرج غلى الفيدوهات دي هتديلك فكره كويسه:
https://vimeo.com/30001189
https://vimeo.com/29702192
9- الطريقه التانيه و هي ال binary auditing أو ال reverse engineering :
https://vimeo.com/30076325
https://vimeo.com/30594548
10 - الطريقه الاخيره هي ال fuzzing وهي احد انواع ال random testing:
http://resources.infosecinstitute.com/intro-to-fuzzing/
11- الحاجات اللي فوق دي بتتكلم عن نوع واحد من الثغرات اللي هو stack based buffer over flow ودا نوع واحد من ال memory corruption bugs ممكن تبدأ تقرا عن الانواع التانيه يعني تبدأ بال heap overflow هنا http://fuzzysecurity.com/tutorials.html
هتلاقيها تحت Windows Heap Exploitation
بعد كده هتقرأ عن حاجه اسمها use after free في نفس ال blog اللي فوق ودا لينكها:
http://fuzzysecurity.com/tutorials/expDev/13.html
بعد كده هتروح على موقع hacktricks هتلاقي فيه قسم كامل لل binary exploitation شامل حاجات كتير
https://book.hacktricks.xyz/binary-exploitation
كده هتبقى اتعلمت كذا نوع من الثغرات و فهمت الدنيا ماشيه ازاي و محتاج تقرا شويه عن ثغرات حقيقيه ممكن تبدأ بالفيديو ده
https://www.youtube.com/watch?v=gHISpAZiAm0
بعد كده تقرا كتاب bug hunter's diary وده جميل جدا و ممكن تتدخل على exploit-db.com تقرا ثغرات عشان تتعلم منها.
و دي تتوريال عن ال browser exploitation هي ٣ أجزاء و بتوريلك مثال عملي على الموضوع دا لينك اول جزء و باقي الأجزاء منشوره على نفس الموقع
https://jhalon.github.io/chrome-browser-exploitation-1/
في نفس الوقت ممكن تتابع ال channel دي على youtube كويسه جدا
https://www.youtube.com/user/GynvaelEN/videos
برضه من ال resources الكويسه pwn.college
https://pwn.college/software-exploitation/
في النهايه احب اقول ان الفكره في المواضيع مش الكورسات اللي بتذاكر منها يعني لو لقيت مثلا شرح واحد في الاسمبلي مش عاجبك عادي دوس مع اي حد تاني بيوصل نفس المفاهيم الحاجه الثانيه انك هتحتاج تبقى صبور شويه عشان تتعلم و ربنا يوفقكم جميعا
#exploit_development
1- تذاكر سي كويس جدا ممكن تذاكرها من the c programming language أو أي كتاب تحبه.
2- طبق شويه على السي كويس يعني ممكن تعمل بروجكت على سبيل المثال http server صغير.
3- تبدأ تذاكر أسمبلي ابدأ بالاسمبلي بتاع لينكس هنا:
https://youtube.com/playlist?list=PL6brsSrstzga43kcZRn6nbSi_GeXoZQhR&feature=shared
4- بعد كده تذاكر اسمبلي الويندوز:
https://www.youtube.com/playlist?list=PL6qa4C74KbMAjEAYPzWAIblkTAvR4CHmt
5- ابدأ ذاكر buffer over flow من الفيدوهات دي:
https://youtube.com/playlist?list=PL6brsSrstzga2IQwI2oz9vCKDQEmSS2FL&feature=shared
وبعد كده الفيديوهات دي:
https://youtube.com/playlist?list=PL6qa4C74KbMBo0BMM9ZdcFlDLkArwA3SF&si=0G5h8_tMhBqvGxw_
6- وبعد كده ال format string bugs من هنا (من باب العلم بالشئ بقى من النادر جدا تلاقي حاجه زي كده):
https://www.youtube.com/@TheSecurityTube/search?query=Format%20string%20vulnerabilities%20primer
7- هتحل الرووم دي pwn101
https://tryhackme.com/r/room/pwn101
ودي فيديوهات الحلول
https://youtube.com/playlist?list=PLchBW5mYosh_F38onTyuhMTt2WGfY-yr7&si=dU5UP8j-UJXucHYc
8- كده انت خدت مبادئ استغلال الثغرات محتاج تاخد مبادئ ازاي تلاقيها نبدأ بالأسهل وهو مراجعه الكود هتتفرج غلى الفيدوهات دي هتديلك فكره كويسه:
https://vimeo.com/30001189
https://vimeo.com/29702192
9- الطريقه التانيه و هي ال binary auditing أو ال reverse engineering :
https://vimeo.com/30076325
https://vimeo.com/30594548
10 - الطريقه الاخيره هي ال fuzzing وهي احد انواع ال random testing:
http://resources.infosecinstitute.com/intro-to-fuzzing/
11- الحاجات اللي فوق دي بتتكلم عن نوع واحد من الثغرات اللي هو stack based buffer over flow ودا نوع واحد من ال memory corruption bugs ممكن تبدأ تقرا عن الانواع التانيه يعني تبدأ بال heap overflow هنا http://fuzzysecurity.com/tutorials.html
هتلاقيها تحت Windows Heap Exploitation
بعد كده هتقرأ عن حاجه اسمها use after free في نفس ال blog اللي فوق ودا لينكها:
http://fuzzysecurity.com/tutorials/expDev/13.html
بعد كده هتروح على موقع hacktricks هتلاقي فيه قسم كامل لل binary exploitation شامل حاجات كتير
https://book.hacktricks.xyz/binary-exploitation
كده هتبقى اتعلمت كذا نوع من الثغرات و فهمت الدنيا ماشيه ازاي و محتاج تقرا شويه عن ثغرات حقيقيه ممكن تبدأ بالفيديو ده
https://www.youtube.com/watch?v=gHISpAZiAm0
بعد كده تقرا كتاب bug hunter's diary وده جميل جدا و ممكن تتدخل على exploit-db.com تقرا ثغرات عشان تتعلم منها.
و دي تتوريال عن ال browser exploitation هي ٣ أجزاء و بتوريلك مثال عملي على الموضوع دا لينك اول جزء و باقي الأجزاء منشوره على نفس الموقع
https://jhalon.github.io/chrome-browser-exploitation-1/
في نفس الوقت ممكن تتابع ال channel دي على youtube كويسه جدا
https://www.youtube.com/user/GynvaelEN/videos
برضه من ال resources الكويسه pwn.college
https://pwn.college/software-exploitation/
في النهايه احب اقول ان الفكره في المواضيع مش الكورسات اللي بتذاكر منها يعني لو لقيت مثلا شرح واحد في الاسمبلي مش عاجبك عادي دوس مع اي حد تاني بيوصل نفس المفاهيم الحاجه الثانيه انك هتحتاج تبقى صبور شويه عشان تتعلم و ربنا يوفقكم جميعا
#exploit_development
انت فرونت ايند وتشتي تفعل اول مكتبة برمجية لك بس ما تعرف من وين تبدأ!؟
سويت template تساعد اي مبرمج في انشاء مكاتب برمجيه على Vue او React او كلاهما ونشرتها في GitHub! 📦
🔧 المزايا الي في التيمبلت:
- دعم Vue او React او كلاهما
- بناء سريع بـ Vite
- تدعم TS
- سويت انا config بشكل كامل وشرحت كل شي في readme عشان انت تركز على الكود وما تهم الاعدادات 👍🏻
رابط التيمبلت:
https://github.com/Hetari/vue-and-react-library-template
#code #github #open_source
سويت template تساعد اي مبرمج في انشاء مكاتب برمجيه على Vue او React او كلاهما ونشرتها في GitHub! 📦
🔧 المزايا الي في التيمبلت:
- دعم Vue او React او كلاهما
- بناء سريع بـ Vite
- تدعم TS
- سويت انا config بشكل كامل وشرحت كل شي في readme عشان انت تركز على الكود وما تهم الاعدادات 👍🏻
رابط التيمبلت:
https://github.com/Hetari/vue-and-react-library-template
#code #github #open_source
GitHub
GitHub - Hetari/vue-and-react-library-template: A template for building shared libraries in both Vue and React. This template uses…
A template for building shared libraries in both Vue and React. This template uses Vite for fast builds and includes TypeScript support, with easy configuration for single or multiple framework tar...
بقالي فتره بذاكر database بتعمق سواء ك internals او ك queries فقولت ما يلا تعاله حل SQL 50 و اللي ميعرفشوش ده Problems sql علي LeetCode المهم انهارده ربنا اكرمني و خلصت حل SQL 50 قولت بقا وانا بحل احاول افيد الناس معايا ف كل problem حليتها عملتلها push علي GitHub و هتلاقي في Problems ليها كذا حل بتفسير كل حل لوحده و
ده لينك GitHub Repo :
https://github.com/mrXrobot26/SQL-50
و ده لينك SQL 50 :
https://leetcode.com/studyplan/top-sql-50/
حقيقي بنصح بيه اي حد بيذاكر SQL
أسأل الله أن يجعل هذا العمل نافعاً لي ولكم وأن يكتب لي ولكم التوفيق.
منقول..!
#db
#sql
ده لينك GitHub Repo :
https://github.com/mrXrobot26/SQL-50
و ده لينك SQL 50 :
https://leetcode.com/studyplan/top-sql-50/
حقيقي بنصح بيه اي حد بيذاكر SQL
أسأل الله أن يجعل هذا العمل نافعاً لي ولكم وأن يكتب لي ولكم التوفيق.
منقول..!
#db
#sql
GitHub
GitHub - mrXrobot26/SQL-50: This repository is managed by LeetPush extension: https://github.com/husamahmud/LeetPush
This repository is managed by LeetPush extension: https://github.com/husamahmud/LeetPush - mrXrobot26/SQL-50
❤2
معلومة على السريع:
وصف Search في وسوم Input كالتالي:
```html
```html
<input type='se
يقدم لك بعض الوظائف الإضافية للخانة.
#برمجة_ويب
#Web_development
وصف Search في وسوم Input كالتالي:
```html
```html
<input type='se
arch' />
يقدم لك بعض الوظائف الإضافية للخانة.
#برمجة_ويب
#Web_development
❤1
Forwarded from اللجنة العلمية CS 22
دفئ الشتاء 2
من الصدقات هي صدقات الشتاء، فالبرد ينام على أجساد الفقراء، وعندما تقدم بطانية أو ملابس شتوية لمن يحتاجها فإنك تطرد هذا الكابوس عن أجسادهم.
فكن عوناً لهم وشارك في مبادرتنا 🖤!!!!!
ونحن سنقوم بترقيع و غسل و كوي و تغليف الملابس وإيصالها لمن يستحق او قم بمشاركتنا حتى ولو بميه ريال
اللهم هون برد الشتاء علي من لا مأوي له وارحم حالهم واجعله عليهم برداً وسلاماً .
الله الله وكل واحد بما يستطع حتى نشر ❤️❤️❤️.
للاستفسار @HR2te
من الصدقات هي صدقات الشتاء، فالبرد ينام على أجساد الفقراء، وعندما تقدم بطانية أو ملابس شتوية لمن يحتاجها فإنك تطرد هذا الكابوس عن أجسادهم.
فكن عوناً لهم وشارك في مبادرتنا 🖤!!!!!
ونحن سنقوم بترقيع و غسل و كوي و تغليف الملابس وإيصالها لمن يستحق او قم بمشاركتنا حتى ولو بميه ريال
اللهم هون برد الشتاء علي من لا مأوي له وارحم حالهم واجعله عليهم برداً وسلاماً .
الله الله وكل واحد بما يستطع حتى نشر ❤️❤️❤️.
للاستفسار @HR2te
👍4
Forwarded from اللجنة العلمية CS 22
This media is not supported in your browser
VIEW IN TELEGRAM
من حمله السنه الماضيه مايقارب 40 شخص تم اكتفالهم من أطفال إلى كبار السن لبس كامل كفوف شرابات جلد أغطيه راس
الله الله ي رجال 🖤🖤🖤.
الله الله ي رجال 🖤🖤🖤.
👍2
Forwarded from اللجنة العلمية CS 22 (ʙʀʜᴏᴏᴍ ⑇)
Framer-motion ❌
motion ✅
تعديل اسم المكتبة الشهيرة فرايمر موشن الى موشن وخروجها التجاري من سلسلة framer ، أي الان هي مستقلة بحد ذاتها
+ تدعم react و JavaScript
بمعنى اصحاب فيو و انجلر واسترو وكويك او...الخ يقدرو يستخدموها في مشاريعهم الخاصة بشكل سلس 🔥
https://motion.dev/
motion ✅
تعديل اسم المكتبة الشهيرة فرايمر موشن الى موشن وخروجها التجاري من سلسلة framer ، أي الان هي مستقلة بحد ذاتها
+ تدعم react و JavaScript
بمعنى اصحاب فيو و انجلر واسترو وكويك او...الخ يقدرو يستخدموها في مشاريعهم الخاصة بشكل سلس 🔥
https://motion.dev/
🔥1
Forwarded from InfoTechnology (IT4_2024) (Ahmed_Askar)
بهذا الفديو يتحدث مارك زوكربيرگ بجامعة هارفرد عن كيفية بناء نظام الفيسبوك والمراحل الي مر بيهة تطوير النظام والعقبات الي واجهتهم وكيف تم حلها. الفديو تاريخة بنهاية ٢٠٠٥ يعني تقريبا بعد اقل من سنتين من بداية انطلاق الفيسبوك.
يذكر مارك ان البداية كانت بحاسبة وحدة باستخدام ال php وقاعدة بيانات my sql. كان تمثيل الاصدقاء عبارة عن undirected unweighted graph data structure واستخدم خوارزميات خاصة بال traversal مثل ال depth first search وال breath first search وكيف استفاد من مادة هياكل البيانات والخوارزميات بتنفيذ الفكرة الاساسية من النظام.
تحدث مارك عن بعض التحديات الي واجهتهم من زاد عدد المستخدمين ومن ضمنها بناء ال timeline وكيف كان يحتاج الى اكثر من ميتين queries وكيف بدوا يستخدمون ال memchace وخزن المعلومات بالذاكرة حتى يسرعون من استرجاع المعلومات وكيف استخدمو ال hashtable حتى يسرعون من استرجاع المعلومات لان هنا راح يكون ال time complexity يساوي O(1) ويوفر round trip لقاعدة البيانات وكيف بنوا indexing بقواعد البيانات لان هنا راح يكون عدنة ال time complexity يساوي O(LogN) لان يستخدم b-tree بال Index بدل ما يكون عدنة linear scan وهنا احتاجو ا الرجوع لاساسيات قواعد البيانات حتى يحلون مشاكلهم. بعدها فصلوا النظام الى اكثر من حاسبة وهنا احتاج معرفة معمقة بنظم التشغيل والشبكات حتى يحل مشاكل عدة خاصة بال scalability مال النظام وذكر كيف كان درس نظام التشغيل مفيد له بشكل كبير وساعده وساعد فريقه بحل مشاكل عدة.
تحدث كذلك بالفديو عن حاجتهم لبناء قاعدة بيانات خاصة بكل جامعة وهنا صار عندة حاجة لمعرفة اساسيات النظم الموزعة من ضمنهة ال partitioning وال redundancy وال replication وكذلك فكرة استخدام ال UDP بدل ال TCP لتسريع نقل المعلومات الي متحتاج دقة عالية مثل الصور والفديو. تحدث عن كيفية استخدام ال compression حتى يحل مشكلة الصور كبيرة الحجم.
الخلاصة ان مارك استفاد من درس هياكل البيانات والخوارزميات ودرس نظم التشغيل والي درسهن بعمق بجامعة هارفرد وكذلك احتاج فهم معمق للشبكات وقواعد البيانات حتى يبني نظام گدر ان يستخدمة نص كوكب الارض تقريبا, وقيمة الشركة اليوم اكثر من تلريون واربعميت مليار دولار.
https://youtu.be/xFFs9UgOAlE?si=_X6IjB5S8GI6oYAF
يذكر مارك ان البداية كانت بحاسبة وحدة باستخدام ال php وقاعدة بيانات my sql. كان تمثيل الاصدقاء عبارة عن undirected unweighted graph data structure واستخدم خوارزميات خاصة بال traversal مثل ال depth first search وال breath first search وكيف استفاد من مادة هياكل البيانات والخوارزميات بتنفيذ الفكرة الاساسية من النظام.
تحدث مارك عن بعض التحديات الي واجهتهم من زاد عدد المستخدمين ومن ضمنها بناء ال timeline وكيف كان يحتاج الى اكثر من ميتين queries وكيف بدوا يستخدمون ال memchace وخزن المعلومات بالذاكرة حتى يسرعون من استرجاع المعلومات وكيف استخدمو ال hashtable حتى يسرعون من استرجاع المعلومات لان هنا راح يكون ال time complexity يساوي O(1) ويوفر round trip لقاعدة البيانات وكيف بنوا indexing بقواعد البيانات لان هنا راح يكون عدنة ال time complexity يساوي O(LogN) لان يستخدم b-tree بال Index بدل ما يكون عدنة linear scan وهنا احتاجو ا الرجوع لاساسيات قواعد البيانات حتى يحلون مشاكلهم. بعدها فصلوا النظام الى اكثر من حاسبة وهنا احتاج معرفة معمقة بنظم التشغيل والشبكات حتى يحل مشاكل عدة خاصة بال scalability مال النظام وذكر كيف كان درس نظام التشغيل مفيد له بشكل كبير وساعده وساعد فريقه بحل مشاكل عدة.
تحدث كذلك بالفديو عن حاجتهم لبناء قاعدة بيانات خاصة بكل جامعة وهنا صار عندة حاجة لمعرفة اساسيات النظم الموزعة من ضمنهة ال partitioning وال redundancy وال replication وكذلك فكرة استخدام ال UDP بدل ال TCP لتسريع نقل المعلومات الي متحتاج دقة عالية مثل الصور والفديو. تحدث عن كيفية استخدام ال compression حتى يحل مشكلة الصور كبيرة الحجم.
الخلاصة ان مارك استفاد من درس هياكل البيانات والخوارزميات ودرس نظم التشغيل والي درسهن بعمق بجامعة هارفرد وكذلك احتاج فهم معمق للشبكات وقواعد البيانات حتى يبني نظام گدر ان يستخدمة نص كوكب الارض تقريبا, وقيمة الشركة اليوم اكثر من تلريون واربعميت مليار دولار.
https://youtu.be/xFFs9UgOAlE?si=_X6IjB5S8GI6oYAF
YouTube
CS50 Lecture by Mark Zuckerberg - 7 December 2005
On 7 December 2005, Mark Zuckerberg joined CS50 for a guest lecture about Facebook and computer science. With Professor Michael D. Smith. Shared with permission.
***
HOW TO SUBSCRIBE
http://www.youtube.com/subnoscription_center?add_user=cs50tv
HOW TO TAKE…
***
HOW TO SUBSCRIBE
http://www.youtube.com/subnoscription_center?add_user=cs50tv
HOW TO TAKE…
Forwarded from IS AM 23
برمجة وتطوير
Git_GitHub__proadev.pdf
📛 شرح للـ Version control systems والـ Git&Github
الملخص والشرح ضخخم جداً ويغنيك عن الكورسات من حيث التسلسل والشرح والتفاصيل الي تفهمك الموضوع ككل وصح الصفحات كثير لكن سهل وتقدروا تكملوه في يوم تقريباً
#للفايدة
الملخص والشرح ضخخم جداً ويغنيك عن الكورسات من حيث التسلسل والشرح والتفاصيل الي تفهمك الموضوع ككل وصح الصفحات كثير لكن سهل وتقدروا تكملوه في يوم تقريباً
#للفايدة
🚨 لاتسمي نفسك مبرمج اذا ماتستخدم الذكاء الاصطناعي ب 2024 !
هذه مجموعة ادوات ذكاء اصطناعي AI تفيدك كمبرمج ... وتختصر عليك الكثثثيررر من الوقت🔥
..
https://twitter.com/proadev/status/1754557661297721827?t=suqpoh5D9ecFDLmfe_PEaQ&s=19
#للفائدة
هذه مجموعة ادوات ذكاء اصطناعي AI تفيدك كمبرمج ... وتختصر عليك الكثثثيررر من الوقت🔥
..
https://twitter.com/proadev/status/1754557661297721827?t=suqpoh5D9ecFDLmfe_PEaQ&s=19
#للفائدة
X (formerly Twitter)
برمجة وتطوير (@proadev) on X
🚨 لاتسمي نفسك مبرمج اذا ماتستخدم الذكاء الاصطناعي ب 2024 !
هذه مجموعة ادوات ذكاء اصطناعي AI تفيدك كمبرمج ... وتختصر عليك الكثثثيررر من الوقت🔥
..
هذه مجموعة ادوات ذكاء اصطناعي AI تفيدك كمبرمج ... وتختصر عليك الكثثثيررر من الوقت🔥
..
لمحة 👀 برمجية
ورجعنا مع بارت 2... طبعا اعذروني على التأخير فهذه الرسائل اكتبها أنا ويأخذ مني وقت. طبعا الحلول الي شاركوها العيال والبنات سابقاُ فهمنا انها صحيحه لحالات معينه... بس الحاله الي في الشركه مختلف. نتكلم عن db كبيره جدا مع بيانات عملاقه وعلاقات توجع الدماغ 🤕…
واخيرا آخر بارت 😁
تكلمنا في بارت 1 على المشكلة وعرفناها وفي بارت 2 تكلمنا عن الحل النظري...
طبعا كما هو واضح في بارت 2 مستحيل اشارك الكود لانه خاص بالشركة... لهذا بكتفي بالكلام الرخيص واشرح لكم كل شي هدرة 🌚👍
بسم الله نبدأ:
الان في اي فريمورك backend مثل لارافل او adonis او...الخ في شي اسمه task scheduling او jobs... اعتقد الأغلب يعرف يستخدم لارافل... لهذا حبذا لو يبحث عن
Laravel 11 task scheduling
وفكرته بكل بساطه يكون يشغل كود معين كل فترة زمنية معينه (اما يوميا في ساعه معينة او اسبوعيا او كل 5 دقائق او ....الخ)
بنستغل هذه الميزة وبنفعل اوامر والاشياء الي تكلمنا عليها في بارت 2.
بنفعل tasks كثيرة... منها:
1 - انشاء db الجديدة مع الجداول الثقيله (الي هي views من db القديمة) وبنسميه init_db مع insert لكل البيانات
2 - بنفعل أمر sync_db وهذا الي بيكون يراجع الجدول الجديد الي تكلمنا عليه في بارت 2
الان بتكلم على أمر init ... الا init بيفعل drop if exist و create للجدول بحيث انه يحتوي على كل columns ال view
مثلا لو معي تقرير اجيبه من ٢٠ جدول والتقرير بينه ٥٠ عمود... الجدول ذاك بيكون ٥٠ عمود بدون اي علاقه
وهكذا...
وهذا شي عظيم... لانه في التطبيق بدل ما تقول له هات التقرير من view بتقول له هات لي التقرير من db الجديده.
طبعا الموضوع مش هكذا وبس... فهذا جزء بسيط من الحل 🤕
وبنضطر نفعل أشياء كثيرة بجانب أمر init_db
لانه - تخيلو معي - اذا المستخدم عدل بياناته في db الأساسية معناته بياناته في db الجديده بتكون قديمه ومختلفه عن البيانات الحديثة.
ولو شغلنا init_db في كل عملية تعديل عشان نحدث البيانات بنواجه مشكله ثانيه! في كل مره بيأخذ مننا مثلا ١٠ دقائق الي كنا نهرب منها اساساً 🤦🏻♂️
الحل هنا بيكون مشترك في الباك ايند وفي الجدول الجديد وفكره sync_db.
لو ناسي ايش new_table هو هذا الي تكلمنا عليه في بارت 2
اول شي في الباك ايند حق التطبيق بتمر لكل عملية إنشاء (Insert) أو تعديل (Update) أو حذف (Delete) على الجداول المرتبطة بالتقرير، ان حصل وتنفذ اي واحد من هولا بتحتاج تعمل insert في الجدول new_table. كذا بنضمن أنه إذا حصل أي تعديل، يكون موثق وموجود عندنا في new_table.
لكن هنا تظل المشكلة: البيانات مش متزامنة بشكل مباشر. وهنا يجي دور مهمة sync_db.
وهنا موضوع التزامن بيكون شغل ال task الجديده...
فكرة أمر sync_db انه بيشتغل كل 5 دقائق مثلاً... وبيفعل
select * from new_table
1. يعمل SELECT من الجدول new_table، ويجيب كل العمليات الجديدة اللي حصلت.
2. بعدين، يسوي استعلام SELECT من الـ View لكل id تم تسجيله في new_table.
3. بعد ما ياخذ البيانات، يسوي INSERT في الجدول الجديد في الـ DB الجديدة (يفعل اضافه في الجدول الي يمثل التقرير وعملناه عن طريق init_db)
4. بعد نجاح عملية الإضافة في الجدول الجديد، نحذف الصف من new_table لتجنب تكرار نفس العملية في المستقبل... لو ما عملنا رقم 4 بتتكرر البيانات في الجدول الجديد...
انتيهت من السلسلة هذه... وملاحظة هامة:
الحل في الشركة اكبر من هذا وفي اشياء كثيرة ما تكلمت عنها... ولكن هذه هي الفكرة الأساسية وتقدر انت تتلاعب بها على حسب احتياجات المشروع واحتياجك انت 👍
#db #سلسلة
تكلمنا في بارت 1 على المشكلة وعرفناها وفي بارت 2 تكلمنا عن الحل النظري...
طبعا كما هو واضح في بارت 2 مستحيل اشارك الكود لانه خاص بالشركة... لهذا بكتفي بالكلام الرخيص واشرح لكم كل شي هدرة 🌚👍
بسم الله نبدأ:
الان في اي فريمورك backend مثل لارافل او adonis او...الخ في شي اسمه task scheduling او jobs... اعتقد الأغلب يعرف يستخدم لارافل... لهذا حبذا لو يبحث عن
Laravel 11 task scheduling
وفكرته بكل بساطه يكون يشغل كود معين كل فترة زمنية معينه (اما يوميا في ساعه معينة او اسبوعيا او كل 5 دقائق او ....الخ)
بنستغل هذه الميزة وبنفعل اوامر والاشياء الي تكلمنا عليها في بارت 2.
بنفعل tasks كثيرة... منها:
1 - انشاء db الجديدة مع الجداول الثقيله (الي هي views من db القديمة) وبنسميه init_db مع insert لكل البيانات
2 - بنفعل أمر sync_db وهذا الي بيكون يراجع الجدول الجديد الي تكلمنا عليه في بارت 2
الان بتكلم على أمر init ... الا init بيفعل drop if exist و create للجدول بحيث انه يحتوي على كل columns ال view
مثلا لو معي تقرير اجيبه من ٢٠ جدول والتقرير بينه ٥٠ عمود... الجدول ذاك بيكون ٥٠ عمود بدون اي علاقه
وهكذا...
وهذا شي عظيم... لانه في التطبيق بدل ما تقول له هات التقرير من view بتقول له هات لي التقرير من db الجديده.
طبعا الموضوع مش هكذا وبس... فهذا جزء بسيط من الحل 🤕
وبنضطر نفعل أشياء كثيرة بجانب أمر init_db
لانه - تخيلو معي - اذا المستخدم عدل بياناته في db الأساسية معناته بياناته في db الجديده بتكون قديمه ومختلفه عن البيانات الحديثة.
ولو شغلنا init_db في كل عملية تعديل عشان نحدث البيانات بنواجه مشكله ثانيه! في كل مره بيأخذ مننا مثلا ١٠ دقائق الي كنا نهرب منها اساساً 🤦🏻♂️
الحل هنا بيكون مشترك في الباك ايند وفي الجدول الجديد وفكره sync_db.
لو ناسي ايش new_table هو هذا الي تكلمنا عليه في بارت 2
الهيكلية تبع الجدول الجديد هو:
id, row_id, view_name
اول شي في الباك ايند حق التطبيق بتمر لكل عملية إنشاء (Insert) أو تعديل (Update) أو حذف (Delete) على الجداول المرتبطة بالتقرير، ان حصل وتنفذ اي واحد من هولا بتحتاج تعمل insert في الجدول new_table. كذا بنضمن أنه إذا حصل أي تعديل، يكون موثق وموجود عندنا في new_table.
لكن هنا تظل المشكلة: البيانات مش متزامنة بشكل مباشر. وهنا يجي دور مهمة sync_db.
وهنا موضوع التزامن بيكون شغل ال task الجديده...
فكرة أمر sync_db انه بيشتغل كل 5 دقائق مثلاً... وبيفعل
select * from new_table
1. يعمل SELECT من الجدول new_table، ويجيب كل العمليات الجديدة اللي حصلت.
2. بعدين، يسوي استعلام SELECT من الـ View لكل id تم تسجيله في new_table.
3. بعد ما ياخذ البيانات، يسوي INSERT في الجدول الجديد في الـ DB الجديدة (يفعل اضافه في الجدول الي يمثل التقرير وعملناه عن طريق init_db)
4. بعد نجاح عملية الإضافة في الجدول الجديد، نحذف الصف من new_table لتجنب تكرار نفس العملية في المستقبل... لو ما عملنا رقم 4 بتتكرر البيانات في الجدول الجديد...
انتيهت من السلسلة هذه... وملاحظة هامة:
الحل في الشركة اكبر من هذا وفي اشياء كثيرة ما تكلمت عنها... ولكن هذه هي الفكرة الأساسية وتقدر انت تتلاعب بها على حسب احتياجات المشروع واحتياجك انت 👍
#db #سلسلة
🔥3