[{"_path":"/blog/10-advice-for-best-design","_draft":false,"_partial":false,"_empty":false,"title":"10 نصائح للحصول على تصميم ويب إحترافي","description":"الدقة والإحترافية في التصميم من الأشياء الضروري إكتسابها للحصول على تصميم إحترافي بالإضافة لنصائح أخرى","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"تقديم-"},"children":[{"type":"text","value":"تقديم :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"الحصول على تصميم إحترافي وأكثر جمالية ليس بالأمر السهل أبدا فدائما المصمم لابد وان يكون مبدع ومحترف وذواق أيضا , لكن دائما مايكون هناك مجموعة من النقاط النصائح التي ستئدي حتما إلى الحصول على نتيجة جيدة ألا وهي تصميم واجهة ويب إحترافية وقوية."}]},{"type":"element","tag":"h2","props":{"id":"النصائح-"},"children":[{"type":"text","value":"النصائح :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"1. تخصيص الوقت الكافي :"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وهو الشيء الضروري والذي يجعل منك مبرمج محترف ، لذلك عليك تخصيص الوقت الكافي للعمل فلا يمكنك إحتراف أي لغة برمجية في مدة تقل عن سنة و من يقول لك أنه إحترف لغة برمجية في مدة تقل عن سنة فاعلم بانه ليس محترفا ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"2. حب البرمجة :"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"أمر ضروري أن تكون تحب المجال الذي تريد إحترافه و الإبداع فبه لأنك إذا أحببت ما تقوم به فإنه ستسهل عليك الكثير من الأمور ، لذلك إذا كنت تتعلم لتعمل بها فصدقني لن تحترفها ولو عملت على ذلك طيلة حياتك ، و ضع حلمك بين عينك و ضع في رأسك فكرة أنك تدرس من اجل التعلم و أما الشغل فهو يأتي بعد ذلك ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"3. تعلم الخوارزمية (Algorithm) :"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"من الامور الأساسية و التي يجب عليك تعلمها قبل الشروع في تعلم أي لغة برمجية هي الخوارزمية أو ما يطلق عليها بالإنجليزية Algorithm فهي أمر ضروري و تساعدك على إيجاد حلول لمشاكلك البرمجية ويصبح لديك فكر رياضي و كذلك الفهم و ليس الحفظ لأن المبرمج المحترف هو الذي يفهم و ليس من يحفظ الكود ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"4. عدم التوقف من أول محاولة :"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"الإحباط من المشاكل و الخوف من الفشل هو السلاح السلبي الذي يقف عائقا أمامك لذا وجب عليك أن تفكر إيجابيا و تواصل العمل لتحقيق حلمك فإذا كنت تواجه مشاكل فأنت في الطريق الصحيح لأنه لا يوجد مبرمج محترف إلا و مر بهذه العوائق و مازال يقع في مشاكل وتأكد بأنك لن تصل إلى اليوم الذي لن تقايل فيه أية مشاكل ، لذلك عليك أن تحاول حلها و تبحث عن الحلول لها و أجعل سؤال الأخرين عن الحل هو أخر شيء تقوم به و اعتمد على نفسك بالدرجة الاولى لكي تصل إلى هدفك ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"5. التخصص بلغة برمجية واحدة :"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"من الامور الأساسية التي ينبغي عليك ان تلتزم بها هو تخصص بلغة معينة بمعنى أنك إذا اخترت لغة فلا تتعلم لغة برمجية أخرى بنفس الوقت بل حاول تعلم تلك اللغة التي اخترتها و اجعلها هدف لك و بعد أن تحترفها اذهب إلى لغة برمجية أخرى و هكذا لأنك إذا تعلمت أكثر من لغة برمجية في نفس الوقت فإنك ستضيع الكثير من الوقت و تختلط عليك الامور و لن تحصل شيئا و ستصاب بالإحباط من أول محاولة ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"6. اللغة الإنجليزية :"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"شئت أم أبيت فإن اللغة الإنجليزية هي لغة العالم و الحاسوب ، لذلك وجب عليك تعلمها لأنها ستساعدك الدرجة الأولى في التعلم وذلك نظرا لنقص المحتوى العربي وقلة المصادر الموجودة على الأنترنت باللغة العربية ، و كذلك لتتواصل مع الكثير من المبرمجين على المستوى العالمي الذين تجد أغلبهم إذا لم نقل كلهم يتحدثون باللغة الإنجليزية و للتبادل معهم الأفكار و المعلومات لكي تطور مهاراتك ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"7. تعلم الطباعة العمياء :"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"الطباعة العمياء هي القدرة على الكتابة على لوحة المفاتيح دون النظر إلى إليها لأن هذا الأمر يسمح لك بكتابة الأكواد بشكل أسرع و كذلك الانتباه ، فهناك الكثير من المواقع تساعدك على ذلك لأنه يمكن لحرف واحد اخطأت فيه أو نسيته أو أضفت شيئا إلى الكود الذي كتبته سيتسبب ذلك في توقف برنامجك عن العمل ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"8. المصادر التعليمية و التعلم الذاتي :"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"هناك الكثير من المصادر المتواجدة على شبكة الأنترنت سواءا كانت فيديوهات أو كتب او دروس .. فالأنترنت توفر لك كل الشروط لكي تصبح محترف لكن الامر يرجع إليك و طريقة إختيارك للمصادر التعليمية ، فإذا كنت تبحث عن شيء يكفيك كتابته في جوجل و ستجد الكثير من المصادر التعليمية و الكورسات فمنها من هو مجاني و منها ما هو مدفوع و كنصيحة ركز على المصادر الأجنبية وكذلك المنتديات"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"9. مساعدة الأخرين :"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"طبعا مساعدة الاخرين وحل مشاكلهم البرمجية أمر يحبه الله و إذا كنت تقوم به فاعلم علم اليقين بل عين اليقين بان الله سيوفقك في الوصول إلى هدفك و تحقيق حلمك وكذلك لكي ترسخ فهمك و تنمي قدراتك ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"10. ابقى مطلعا على أخر الاخبار المتعلقة بالبرمجة ولا تتوقف عن العمل :"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"لا تتوقف عن البحث و التعلم ففي كل يوم تظهر لغات جديدة و تقنيات جديدة و تطويرات على لغات برمجية موجودة لذلك وجب عليك متابعة كل جديد يخص البرمجة وواصل التعلم حتى لا تفقد تميزك و شغفك بالتعلم ."}]},{"type":"element","tag":"h2","props":{"id":"ختاما-"},"children":[{"type":"text","value":"ختاما :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"كل هاته النقاط والنصائح تبقى منعدمة الجدوى إذا كنت في أصل الأمور غير مثابر , قد تجد فئة تتقن حد الإتقان تقنية ما وأنت مازلت على در ج الصعود , ويهويك الإستسلام , فقط لاتستسلم كل مافي الأمور أن الآخرون ثابرو وعملو بجد."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"لاتنسى متابعتنا على صفحتين :"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://web.facebook.com/Ko5Blog/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"مدونة كوخ على فيسبوك"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://twitter.com/Ko5Blog","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"مدونة كوخ على تويتر"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://paypal.me/ALAHCEN?locale.x=en_US","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"أو ودعمنا على بايبال للحصول على دومين خاص شكرا ."}]}]}]}]},"img":"img/10-advice.png","author":1,"category":["مقال","Tips"],"created":"2020-07-26T00:00:00.000Z","tags":["تصميم","برمجة"],"hotest":1,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"تقديم-"},"children":[{"type":"text","value":"تقديم :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"الحصول على تصميم إحترافي وأكثر جمالية ليس بالأمر السهل أبدا فدائما المصمم لابد وان يكون مبدع ومحترف وذواق أيضا , لكن دائما مايكون هناك مجموعة من النقاط النصائح التي ستئدي حتما إلى الحصول على نتيجة جيدة ألا وهي تصميم واجهة ويب إحترافية وقوية."}]},{"type":"element","tag":"h2","props":{"id":"النصائح-"},"children":[{"type":"text","value":"النصائح :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"1. تخصيص الوقت الكافي :"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وهو الشيء الضروري والذي يجعل منك مبرمج محترف ، لذلك عليك تخصيص الوقت الكافي للعمل فلا يمكنك إحتراف أي لغة برمجية في مدة تقل عن سنة و من يقول لك أنه إحترف لغة برمجية في مدة تقل عن سنة فاعلم بانه ليس محترفا ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"2. حب البرمجة :"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"أمر ضروري أن تكون تحب المجال الذي تريد إحترافه و الإبداع فبه لأنك إذا أحببت ما تقوم به فإنه ستسهل عليك الكثير من الأمور ، لذلك إذا كنت تتعلم لتعمل بها فصدقني لن تحترفها ولو عملت على ذلك طيلة حياتك ، و ضع حلمك بين عينك و ضع في رأسك فكرة أنك تدرس من اجل التعلم و أما الشغل فهو يأتي بعد ذلك ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"3. تعلم الخوارزمية (Algorithm) :"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"من الامور الأساسية و التي يجب عليك تعلمها قبل الشروع في تعلم أي لغة برمجية هي الخوارزمية أو ما يطلق عليها بالإنجليزية Algorithm فهي أمر ضروري و تساعدك على إيجاد حلول لمشاكلك البرمجية ويصبح لديك فكر رياضي و كذلك الفهم و ليس الحفظ لأن المبرمج المحترف هو الذي يفهم و ليس من يحفظ الكود ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"4. عدم التوقف من أول محاولة :"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"الإحباط من المشاكل و الخوف من الفشل هو السلاح السلبي الذي يقف عائقا أمامك لذا وجب عليك أن تفكر إيجابيا و تواصل العمل لتحقيق حلمك فإذا كنت تواجه مشاكل فأنت في الطريق الصحيح لأنه لا يوجد مبرمج محترف إلا و مر بهذه العوائق و مازال يقع في مشاكل وتأكد بأنك لن تصل إلى اليوم الذي لن تقايل فيه أية مشاكل ، لذلك عليك أن تحاول حلها و تبحث عن الحلول لها و أجعل سؤال الأخرين عن الحل هو أخر شيء تقوم به و اعتمد على نفسك بالدرجة الاولى لكي تصل إلى هدفك ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"5. التخصص بلغة برمجية واحدة :"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"من الامور الأساسية التي ينبغي عليك ان تلتزم بها هو تخصص بلغة معينة بمعنى أنك إذا اخترت لغة فلا تتعلم لغة برمجية أخرى بنفس الوقت بل حاول تعلم تلك اللغة التي اخترتها و اجعلها هدف لك و بعد أن تحترفها اذهب إلى لغة برمجية أخرى و هكذا لأنك إذا تعلمت أكثر من لغة برمجية في نفس الوقت فإنك ستضيع الكثير من الوقت و تختلط عليك الامور و لن تحصل شيئا و ستصاب بالإحباط من أول محاولة ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"6. اللغة الإنجليزية :"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"شئت أم أبيت فإن اللغة الإنجليزية هي لغة العالم و الحاسوب ، لذلك وجب عليك تعلمها لأنها ستساعدك الدرجة الأولى في التعلم وذلك نظرا لنقص المحتوى العربي وقلة المصادر الموجودة على الأنترنت باللغة العربية ، و كذلك لتتواصل مع الكثير من المبرمجين على المستوى العالمي الذين تجد أغلبهم إذا لم نقل كلهم يتحدثون باللغة الإنجليزية و للتبادل معهم الأفكار و المعلومات لكي تطور مهاراتك ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"7. تعلم الطباعة العمياء :"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"الطباعة العمياء هي القدرة على الكتابة على لوحة المفاتيح دون النظر إلى إليها لأن هذا الأمر يسمح لك بكتابة الأكواد بشكل أسرع و كذلك الانتباه ، فهناك الكثير من المواقع تساعدك على ذلك لأنه يمكن لحرف واحد اخطأت فيه أو نسيته أو أضفت شيئا إلى الكود الذي كتبته سيتسبب ذلك في توقف برنامجك عن العمل ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"8. المصادر التعليمية و التعلم الذاتي :"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"هناك الكثير من المصادر المتواجدة على شبكة الأنترنت سواءا كانت فيديوهات أو كتب او دروس .. فالأنترنت توفر لك كل الشروط لكي تصبح محترف لكن الامر يرجع إليك و طريقة إختيارك للمصادر التعليمية ، فإذا كنت تبحث عن شيء يكفيك كتابته في جوجل و ستجد الكثير من المصادر التعليمية و الكورسات فمنها من هو مجاني و منها ما هو مدفوع و كنصيحة ركز على المصادر الأجنبية وكذلك المنتديات"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"9. مساعدة الأخرين :"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"طبعا مساعدة الاخرين وحل مشاكلهم البرمجية أمر يحبه الله و إذا كنت تقوم به فاعلم علم اليقين بل عين اليقين بان الله سيوفقك في الوصول إلى هدفك و تحقيق حلمك وكذلك لكي ترسخ فهمك و تنمي قدراتك ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"10. ابقى مطلعا على أخر الاخبار المتعلقة بالبرمجة ولا تتوقف عن العمل :"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"لا تتوقف عن البحث و التعلم ففي كل يوم تظهر لغات جديدة و تقنيات جديدة و تطويرات على لغات برمجية موجودة لذلك وجب عليك متابعة كل جديد يخص البرمجة وواصل التعلم حتى لا تفقد تميزك و شغفك بالتعلم ."}]},{"type":"element","tag":"h2","props":{"id":"ختاما-"},"children":[{"type":"text","value":"ختاما :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"كل هاته النقاط والنصائح تبقى منعدمة الجدوى إذا كنت في أصل الأمور غير مثابر , قد تجد فئة تتقن حد الإتقان تقنية ما وأنت مازلت على در ج الصعود , ويهويك الإستسلام , فقط لاتستسلم كل مافي الأمور أن الآخرون ثابرو وعملو بجد."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"لاتنسى متابعتنا على صفحتين :"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://web.facebook.com/Ko5Blog/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"مدونة كوخ على فيسبوك"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://twitter.com/Ko5Blog","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"مدونة كوخ على تويتر"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://paypal.me/ALAHCEN?locale.x=en_US","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"أو ودعمنا على بايبال للحصول على دومين خاص شكرا ."}]}]}]}],"toc":{"title":"","searchDepth":5,"depth":5,"links":[{"id":"تقديم-","depth":2,"text":"تقديم :"},{"id":"النصائح-","depth":2,"text":"النصائح :"},{"id":"ختاما-","depth":2,"text":"ختاما :"}]}},"_type":"markdown","_id":"content:blog:10-advice-for-best-design.md","_source":"content","_file":"blog/10-advice-for-best-design.md","_extension":"md"},{"_path":"/blog/everything-about-data-structures","_draft":false,"_partial":false,"_empty":false,"title":"شرح Data Structures ودورها في ترتيب البيانات","description":"في مجال هندسة البرمجيات جملة Data Structure تعني بنية أو هيكل البيانات والتي تتيح لك ترتيب وتخزين البيانات","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"ماهي-البيانات-"},"children":[{"type":"text","value":"ماهي البيانات ؟"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"عموما في عالم البرمجة تتعامل مع البيانات بشكل أساسي كونها هي التي تجسد تطبيق ما او موقع ما , كأسماء المشتركين أو محتوى المقالات , تخزن هاته البيانات على سرفرات خاصة ليتم جلبها والعمل عليها وفق تطبيقات و أحداث على برنامج أو تطبيق أو موقع معين ."}]},{"type":"element","tag":"h2","props":{"id":"الإشكالية-"},"children":[{"type":"text","value":"الإشكالية :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"تكمن إشكالية تخزين البيانات المملوكة لنا في كيفية التعامل معها , لنفترض أنك مالك شركة عقار , كل يوم تتوصل ب 10 عمليات بيع ومثلها طلبات للشراء وفي اليوم التالي كذلك , لكن يلزمك في اليوم التالي أيضا التعامل مع طلبات اليوم الذي سبق , لتحديد العمليات التي تمت والعمليات التي فشلت والعمليات التي لم تتكمل قيمتها , بالإضافة لتحديد حال تطور الطلبات وتوفر العقار والقيمة المطلوبة والتفاوض وحالته , كمية كبيرة من المعلومات المرتبطة أساسا , هذا كله يجسد إشكالية ألا وهي إشكالية ترتيب المعلومات ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"هنا يبدأ الحديث عن دور مفهوم ** Data Structures ** ."}]},{"type":"element","tag":"h2","props":{"id":"مفهوم-data-structures-"},"children":[{"type":"text","value":"مفهوم Data Structures :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"** Data Structures ** تعني هيكلة البيانات , التي توفر لك إمكانية التحكم في ترتيب البيانات , وتهيئتها بشكل كفوء و سليم للتعامل معها بشكل جيد والتعديل عليها . بالإضافة إلى تسريع عمليات المعالجة والبحث من خلال خوارزميات فعالة ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"ول Data Structures أنواع نمطية متعددة نذكر منها نوعين رئيسيين , ال ** Primitive Types ** و ** Composite Types **"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"** Primitive Types **"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وهي النوع المعروف جدا , وأساس جل اللغات البرمجية ويندرج ضمنه :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Integer"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وهو العدد الصحيح الطبيعي دون أعداد الكسور "},{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"-,+"}]}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"مثال عملي بلغة Javascript"}]}]},{"type":"element","tag":"code","props":{"code":" var myInteger = 5 ; // integer type\n typeOf(myInteger) ; // number \n console.log(myInteger); // output = 5\n","language":"javascript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" var myInteger = 5 ; // integer type\n typeOf(myInteger) ; // number \n console.log(myInteger); // output = 5\n"}]}]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Bool"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وهي قيمت من قيميتن "},{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"true,false"}]},{"type":"text","value":" أو "},{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"0,1"}]},{"type":"text","value":" , ستم إستخدامهم في الدوال الشرطية وهنا مثال بال Javascript أيضا :"}]},{"type":"element","tag":"code","props":{"code":" var name = '';\n\n if(name == ''){ // true\n console.log(\"Please Enter a name\");\n } else { // false mean name = 'value..'\n console.log(\"Valid name\");\n } \n","language":"javascript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" var name = '';\n\n if(name == ''){ // true\n console.log(\"Please Enter a name\");\n } else { // false mean name = 'value..'\n console.log(\"Valid name\");\n } \n"}]}]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Float"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"هو نوع العدد العشري الذي يحتوي على فاصلة عشرية ونأخد مثال بلغة بايثون"}]},{"type":"element","tag":"code","props":{"code":" five_units_number = 16355\n\n p1 = 1635.5 * (10 ** 1)\n p2 = 163.55 * (10 ** 1)\n p3 = 16.355 * (10 ** 2)\n p4 = 1.6355 * (10 ** 3)\n p5 = 0.16355 * (10 ** 4)\n\n print(int(p1)) # 1635\n print(int(p2)) # 1635\n print(int(p3)) # 1635\n print(int(p4)) # 1635\n print(int(p5)) # 1635\n","language":"python"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" five_units_number = 16355\n\n p1 = 1635.5 * (10 ** 1)\n p2 = 163.55 * (10 ** 1)\n p3 = 16.355 * (10 ** 2)\n p4 = 1.6355 * (10 ** 3)\n p5 = 0.16355 * (10 ** 4)\n\n print(int(p1)) # 1635\n print(int(p2)) # 1635\n print(int(p3)) # 1635\n print(int(p4)) # 1635\n print(int(p5)) # 1635\n"}]}]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Character"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"الأرقام والحروف يشكلون لنا في النهاية Character بالإضافة لحروف اساسية ك Tab و Return"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"** Composite Types **"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"البيانات المركية أو Non Primitive بدورها تنقسم لجزيئين , Linear Data Structure و Non Linear Data Structure"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Linear Data Structure"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وهي البيانات التي تشكل سلسة بينات موضعة على شكل تسلسلي بجانب بعضها البعض ."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Non Linear Data Structure"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وتشكل سلسلة مترابطة غير مرتبة وغير موضعة بجانب بعضها البعض وتوضح روابط إرتباطها مع حاوية بيانات أخرى"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"مثال توضيحي :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Non and Linear Data Structure","src":"./images/NonandLinearData.png"},"children":[]}]},{"type":"element","tag":"h1","props":{"id":"وتضم-مجموعة-linear-data-structure-"},"children":[{"type":"text","value":"وتضم مجموعة Linear Data Structure :"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"** Arrays **"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"إضافة مجموعة من البيانات من نفس النوع في مكان واحد ويمكن الوصول لكل عنصر من العناصر عن طريق ال Index الخاص به"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"مثال عملي : Javascript"}]},{"type":"element","tag":"code","props":{"code":"const arrA = [\"Ali\", \"Hassan\"]; // array with names\nconst arrB = [21, 15]; // array with num 'ages'\n\nconsole.log(arrA[1]); // Hassan\nconsole.log(arrB[0]); // 21\n","language":"javascript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"const arrA = [\"Ali\", \"Hassan\"]; // array with names\nconst arrB = [21, 15]; // array with num 'ages'\n\nconsole.log(arrA[1]); // Hassan\nconsole.log(arrB[0]); // 21\n"}]}]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"** Stacks **"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"في ال Stack البيانات تدخل وتخرج من مكان واحد ودخول البيانات يسمى Push وخروج البيانات يسمى Pop وهناك Peek لمعرفة أعلى عنصر في ال Stack وإدخال العناصر وإزالتها بهذا الترتيب يسمى LIFO بمعنى Last In First Out بمعنى من دخل أخيرا يخرج أولا وفيما يلي مثال بلغة Python لعرض الفكرة."}]},{"type":"element","tag":"code","props":{"code":" stack_example = []\n\n stack_example.append('Ali')\n stack_example.append('Hassan')\n stack_example.append('Aligo')\n\n print(stack_example) # [\"Ali\", \"Hassan\", \"Aligo\"]\n\n print(stack_example.pop()) # Aligo\n print(stack_example.pop()) # Hassan\n print(stack_example.pop()) # Ali\n\n print(stack_example) # [] // Empty\n","language":"python"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" stack_example = []\n\n stack_example.append('Ali')\n stack_example.append('Hassan')\n stack_example.append('Aligo')\n\n print(stack_example) # [\"Ali\", \"Hassan\", \"Aligo\"]\n\n print(stack_example.pop()) # Aligo\n print(stack_example.pop()) # Hassan\n print(stack_example.pop()) # Ali\n\n print(stack_example) # [] // Empty\n"}]}]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"** Queue **"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"نفس فكرة عمل ال Stack ولكن هناك مكانين يخرج منهم البيانات وتقوم بإضافة البيانات بواسطة enqueue() وإزالة البيانات بواسطة dequeue() والترتيب الخاص به يعمل بنظام FIFO"}]},{"type":"element","tag":"code","props":{"code":" queue_exemple = []\n\n queue_exemple.append('Ali')\n queue_exemple.append('Hassan')\n queue_exemple.append('Aligo')\n\n print(queue_exemple) # [\"Ali\", \"Hassan\", \"Aligo\"]\n\n print(queue_exemple.pop(0)) # Ali\n print(queue_exemple.pop(0)) # Hassan\n print(queue_exemple.pop(0)) # Aligo\n\n print(queue_exemple) # [] // Empty\n","language":"python"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" queue_exemple = []\n\n queue_exemple.append('Ali')\n queue_exemple.append('Hassan')\n queue_exemple.append('Aligo')\n\n print(queue_exemple) # [\"Ali\", \"Hassan\", \"Aligo\"]\n\n print(queue_exemple.pop(0)) # Ali\n print(queue_exemple.pop(0)) # Hassan\n print(queue_exemple.pop(0)) # Aligo\n\n print(queue_exemple) # [] // Empty\n"}]}]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"** Linked List **"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"هي بنية من البيانات تحتوي على مجموعة من السجلات مرتبة ومرتبطة ببعضها البعض وكل سجل يحتوي على حقلين الحقل الأول يحتوي على القيمة والثاني يحتوي على مؤشر عنوان."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"بنية البيانات","src":"https://elzero.org/wp-content/uploads/2020/05/data-structure-linked-list.png"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://elzero.org/everything-about-data-structure/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"مصدر الصورة اكاديمية الزيرو"}]}]},{"type":"element","tag":"h2","props":{"id":"non-linear-data-structure"},"children":[{"type":"text","value":"Non Linear Data Structure"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"بشكل عام عكس سابقتها Linear Data Structure فهي تخزن بطريقة مختلفة لكن مرتبطة ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"ومن أهم عنصر في المجموعة الشجرة أو Tree"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"TREE"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"سميت بالشجرة لتوضيح مدى الإرتباط الكامن بين البيانات في عنصر Tree , حيث أن ال Root الخاص بالشجرة في أعلى الشجرة والعناصر الموجودة في البنية تسمى Nodes وتتصل ببعضها عن طريق ال Edges وكل Node يحتوي على بيانات أو قيمة ( Value ) ويمكن أن يكون تحته Child Node أو لا, ويطلق على العناصر في أسفل الشجرة Leaf Nodes وهي العناصر التي لا يوجد تحتها Childs"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tree","src":"https://upload.wikimedia.org/wikipedia/commons/thumb/d/d1/Sorted_binary_tree_breadth-first_traversal.svg/250px-Sorted_binary_tree_breadth-first_traversal.svg.png"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"1. Root :"}]},{"type":"text","value":"\tأعلى Node في الشجرة\n"},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"2. Edge :"}]},{"type":"text","value":"\tحلقة الوصل بين ال Nodes\n"},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"3. Child :"}]},{"type":"text","value":"\tعبارة عن Node يحتوي على Parent\n"},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"4. Parent :"}]},{"type":"text","value":"\tعبارة عن Node يحتوي على حلقة وصل بينه وبين Child Node\n"},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"5. Leaf :"}]},{"type":"text","value":"\tعبارة عن Node لا يوجد لديه Child Node"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Hash Table"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"hash table من أسرع هياكل البيانات ويجب أستخدامها في حال أردت سرعه كبيره في عمليه البحث والإدخال ،،\nتستخدم هذه البنيه داله هاشيه hash function تقوم بتحويل المدخلات الى قيم محصوره تكون عباره عن مواقع Index في الجدول table ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Hash table","src":"https://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Hash_table_3_1_1_0_1_0_0_SP.svg/315px-Hash_table_3_1_1_0_1_0_0_SP.svg.png"},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"ختاما"},"children":[{"type":"text","value":"ختاما"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"دور Data Structure يتمحور أساسا حول الكيفية الممنهجة في هيكلة البيانات , الشيء الذي قضى على إشكاليات كانت ستكون عائق بارز في التعامل مع البيانات ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وأدعوك للإنضمام ومتابعتنا :"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://web.facebook.com/Ko5Blog/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"مدونة كوخ على فيسبوك"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://twitter.com/Ko5Blog","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"مدونة كوخ على تويتر"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://paypal.me/ALAHCEN?locale.x=en_US","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"أو ودعمنا على بايبال للحصول على دومين خاص شكرا ."}]}]}]},{"type":"element","tag":"h2","props":{"id":"مصادر-المقالة-"},"children":[{"type":"text","value":"مصادر المقالة :"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/List_of_data_structures","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"ويكيبيديا"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://elzero.org/everything-about-data-structure/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"أكاديمية الزيرو"}]}]}]}]},"img":"img/Data Structure.png","author":1,"category":["بيانات"],"created":"2020-07-27T00:00:00.000Z","tags":["البيانات","هيكلة","Data Structures"],"hotest":1,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"ماهي-البيانات-"},"children":[{"type":"text","value":"ماهي البيانات ؟"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"عموما في عالم البرمجة تتعامل مع البيانات بشكل أساسي كونها هي التي تجسد تطبيق ما او موقع ما , كأسماء المشتركين أو محتوى المقالات , تخزن هاته البيانات على سرفرات خاصة ليتم جلبها والعمل عليها وفق تطبيقات و أحداث على برنامج أو تطبيق أو موقع معين ."}]},{"type":"element","tag":"h2","props":{"id":"الإشكالية-"},"children":[{"type":"text","value":"الإشكالية :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"تكمن إشكالية تخزين البيانات المملوكة لنا في كيفية التعامل معها , لنفترض أنك مالك شركة عقار , كل يوم تتوصل ب 10 عمليات بيع ومثلها طلبات للشراء وفي اليوم التالي كذلك , لكن يلزمك في اليوم التالي أيضا التعامل مع طلبات اليوم الذي سبق , لتحديد العمليات التي تمت والعمليات التي فشلت والعمليات التي لم تتكمل قيمتها , بالإضافة لتحديد حال تطور الطلبات وتوفر العقار والقيمة المطلوبة والتفاوض وحالته , كمية كبيرة من المعلومات المرتبطة أساسا , هذا كله يجسد إشكالية ألا وهي إشكالية ترتيب المعلومات ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"هنا يبدأ الحديث عن دور مفهوم ** Data Structures ** ."}]},{"type":"element","tag":"h2","props":{"id":"مفهوم-data-structures-"},"children":[{"type":"text","value":"مفهوم Data Structures :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"** Data Structures ** تعني هيكلة البيانات , التي توفر لك إمكانية التحكم في ترتيب البيانات , وتهيئتها بشكل كفوء و سليم للتعامل معها بشكل جيد والتعديل عليها . بالإضافة إلى تسريع عمليات المعالجة والبحث من خلال خوارزميات فعالة ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"ول Data Structures أنواع نمطية متعددة نذكر منها نوعين رئيسيين , ال ** Primitive Types ** و ** Composite Types **"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"** Primitive Types **"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وهي النوع المعروف جدا , وأساس جل اللغات البرمجية ويندرج ضمنه :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Integer"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وهو العدد الصحيح الطبيعي دون أعداد الكسور "},{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"-,+"}]}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"مثال عملي بلغة Javascript"}]}]},{"type":"element","tag":"code","props":{"code":" var myInteger = 5 ; // integer type\n typeOf(myInteger) ; // number \n console.log(myInteger); // output = 5\n","language":"javascript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"var"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" myInteger "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" ; "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"// integer type"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a163aa"},"children":[{"type":"text","value":"typeOf"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"(myInteger) ; "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"// number "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" console."}]},{"type":"element","tag":"span","props":{"class":"ct-a163aa"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"(myInteger); "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"// output = 5"}]}]}]}]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Bool"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وهي قيمت من قيميتن "},{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"true,false"}]},{"type":"text","value":" أو "},{"type":"element","tag":"span","props":{},"children":[{"type":"text","value":"0,1"}]},{"type":"text","value":" , ستم إستخدامهم في الدوال الشرطية وهنا مثال بال Javascript أيضا :"}]},{"type":"element","tag":"code","props":{"code":" var name = '';\n\n if(name == ''){ // true\n console.log(\"Please Enter a name\");\n } else { // false mean name = 'value..'\n console.log(\"Valid name\");\n } \n","language":"javascript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"var"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" name "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-50b4e1"},"children":[{"type":"text","value":"''"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"if"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"(name "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"=="}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-50b4e1"},"children":[{"type":"text","value":"''"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"){ "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"// true"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" console."}]},{"type":"element","tag":"span","props":{"class":"ct-a163aa"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-50b4e1"},"children":[{"type":"text","value":"\"Please Enter a name\""}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" } "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"else"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" { "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"// false mean name = 'value..'"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" console."}]},{"type":"element","tag":"span","props":{"class":"ct-a163aa"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-50b4e1"},"children":[{"type":"text","value":"\"Valid name\""}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" } "}]}]}]}]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Float"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"هو نوع العدد العشري الذي يحتوي على فاصلة عشرية ونأخد مثال بلغة بايثون"}]},{"type":"element","tag":"code","props":{"code":" five_units_number = 16355\n\n p1 = 1635.5 * (10 ** 1)\n p2 = 163.55 * (10 ** 1)\n p3 = 16.355 * (10 ** 2)\n p4 = 1.6355 * (10 ** 3)\n p5 = 0.16355 * (10 ** 4)\n\n print(int(p1)) # 1635\n print(int(p2)) # 1635\n print(int(p3)) # 1635\n print(int(p4)) # 1635\n print(int(p5)) # 1635\n","language":"python"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" five_units_number "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"16355"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" p1 "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"1635.5"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"*"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"10"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"**"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" p2 "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"163.55"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"*"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"10"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"**"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" p3 "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"16.355"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"*"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"10"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"**"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"2"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" p4 "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"1.6355"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"*"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"10"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"**"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"3"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" p5 "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"0.16355"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"*"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"10"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"**"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"4"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"print"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"int"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"(p1)) "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"# 1635"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"print"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"int"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"(p2)) "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"# 1635"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"print"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"int"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"(p3)) "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"# 1635"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"print"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"int"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"(p4)) "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"# 1635"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"print"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"int"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"(p5)) "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"# 1635"}]}]}]}]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Character"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"الأرقام والحروف يشكلون لنا في النهاية Character بالإضافة لحروف اساسية ك Tab و Return"}]},{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"** Composite Types **"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"البيانات المركية أو Non Primitive بدورها تنقسم لجزيئين , Linear Data Structure و Non Linear Data Structure"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Linear Data Structure"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وهي البيانات التي تشكل سلسة بينات موضعة على شكل تسلسلي بجانب بعضها البعض ."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Non Linear Data Structure"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وتشكل سلسلة مترابطة غير مرتبة وغير موضعة بجانب بعضها البعض وتوضح روابط إرتباطها مع حاوية بيانات أخرى"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"مثال توضيحي :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Non and Linear Data Structure","src":"./images/NonandLinearData.png"},"children":[]}]},{"type":"element","tag":"h1","props":{"id":"وتضم-مجموعة-linear-data-structure-"},"children":[{"type":"text","value":"وتضم مجموعة Linear Data Structure :"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"** Arrays **"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"إضافة مجموعة من البيانات من نفس النوع في مكان واحد ويمكن الوصول لكل عنصر من العناصر عن طريق ال Index الخاص به"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"مثال عملي : Javascript"}]},{"type":"element","tag":"code","props":{"code":"const arrA = [\"Ali\", \"Hassan\"]; // array with names\nconst arrB = [21, 15]; // array with num 'ages'\n\nconsole.log(arrA[1]); // Hassan\nconsole.log(arrB[0]); // 21\n","language":"javascript"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"arrA"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" ["}]},{"type":"element","tag":"span","props":{"class":"ct-50b4e1"},"children":[{"type":"text","value":"\"Ali\""}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-50b4e1"},"children":[{"type":"text","value":"\"Hassan\""}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"]; "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"// array with names"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"const"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"arrB"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" ["}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"21"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"15"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"]; "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"// array with num 'ages'"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"console."}]},{"type":"element","tag":"span","props":{"class":"ct-a163aa"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"(arrA["}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"1"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"]); "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"// Hassan"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"console."}]},{"type":"element","tag":"span","props":{"class":"ct-a163aa"},"children":[{"type":"text","value":"log"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"(arrB["}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"]); "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"// 21"}]}]}]}]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"** Stacks **"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"في ال Stack البيانات تدخل وتخرج من مكان واحد ودخول البيانات يسمى Push وخروج البيانات يسمى Pop وهناك Peek لمعرفة أعلى عنصر في ال Stack وإدخال العناصر وإزالتها بهذا الترتيب يسمى LIFO بمعنى Last In First Out بمعنى من دخل أخيرا يخرج أولا وفيما يلي مثال بلغة Python لعرض الفكرة."}]},{"type":"element","tag":"code","props":{"code":" stack_example = []\n\n stack_example.append('Ali')\n stack_example.append('Hassan')\n stack_example.append('Aligo')\n\n print(stack_example) # [\"Ali\", \"Hassan\", \"Aligo\"]\n\n print(stack_example.pop()) # Aligo\n print(stack_example.pop()) # Hassan\n print(stack_example.pop()) # Ali\n\n print(stack_example) # [] // Empty\n","language":"python"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" stack_example "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" []"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" stack_example.append("}]},{"type":"element","tag":"span","props":{"class":"ct-50b4e1"},"children":[{"type":"text","value":"'Ali'"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" stack_example.append("}]},{"type":"element","tag":"span","props":{"class":"ct-50b4e1"},"children":[{"type":"text","value":"'Hassan'"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" stack_example.append("}]},{"type":"element","tag":"span","props":{"class":"ct-50b4e1"},"children":[{"type":"text","value":"'Aligo'"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"print"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"(stack_example) "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"# [\"Ali\", \"Hassan\", \"Aligo\"]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"print"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"(stack_example.pop()) "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"# Aligo"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"print"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"(stack_example.pop()) "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"# Hassan"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"print"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"(stack_example.pop()) "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"# Ali"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"print"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"(stack_example) "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"# [] // Empty"}]}]}]}]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"** Queue **"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"نفس فكرة عمل ال Stack ولكن هناك مكانين يخرج منهم البيانات وتقوم بإضافة البيانات بواسطة enqueue() وإزالة البيانات بواسطة dequeue() والترتيب الخاص به يعمل بنظام FIFO"}]},{"type":"element","tag":"code","props":{"code":" queue_exemple = []\n\n queue_exemple.append('Ali')\n queue_exemple.append('Hassan')\n queue_exemple.append('Aligo')\n\n print(queue_exemple) # [\"Ali\", \"Hassan\", \"Aligo\"]\n\n print(queue_exemple.pop(0)) # Ali\n print(queue_exemple.pop(0)) # Hassan\n print(queue_exemple.pop(0)) # Aligo\n\n print(queue_exemple) # [] // Empty\n","language":"python"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" queue_exemple "}]},{"type":"element","tag":"span","props":{"class":"ct-068096"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" []"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" queue_exemple.append("}]},{"type":"element","tag":"span","props":{"class":"ct-50b4e1"},"children":[{"type":"text","value":"'Ali'"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" queue_exemple.append("}]},{"type":"element","tag":"span","props":{"class":"ct-50b4e1"},"children":[{"type":"text","value":"'Hassan'"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" queue_exemple.append("}]},{"type":"element","tag":"span","props":{"class":"ct-50b4e1"},"children":[{"type":"text","value":"'Aligo'"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":")"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"print"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"(queue_exemple) "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"# [\"Ali\", \"Hassan\", \"Aligo\"]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"print"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"(queue_exemple.pop("}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":")) "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"# Ali"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"print"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"(queue_exemple.pop("}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":")) "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"# Hassan"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"print"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"(queue_exemple.pop("}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":")) "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"# Aligo"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e421f3"},"children":[{"type":"text","value":"print"}]},{"type":"element","tag":"span","props":{"class":"ct-67a08e"},"children":[{"type":"text","value":"(queue_exemple) "}]},{"type":"element","tag":"span","props":{"class":"ct-4b3983"},"children":[{"type":"text","value":"# [] // Empty"}]}]}]}]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"** Linked List **"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"هي بنية من البيانات تحتوي على مجموعة من السجلات مرتبة ومرتبطة ببعضها البعض وكل سجل يحتوي على حقلين الحقل الأول يحتوي على القيمة والثاني يحتوي على مؤشر عنوان."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"بنية البيانات","src":"https://elzero.org/wp-content/uploads/2020/05/data-structure-linked-list.png"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://elzero.org/everything-about-data-structure/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"مصدر الصورة اكاديمية الزيرو"}]}]},{"type":"element","tag":"h2","props":{"id":"non-linear-data-structure"},"children":[{"type":"text","value":"Non Linear Data Structure"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"بشكل عام عكس سابقتها Linear Data Structure فهي تخزن بطريقة مختلفة لكن مرتبطة ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"ومن أهم عنصر في المجموعة الشجرة أو Tree"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"TREE"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"سميت بالشجرة لتوضيح مدى الإرتباط الكامن بين البيانات في عنصر Tree , حيث أن ال Root الخاص بالشجرة في أعلى الشجرة والعناصر الموجودة في البنية تسمى Nodes وتتصل ببعضها عن طريق ال Edges وكل Node يحتوي على بيانات أو قيمة ( Value ) ويمكن أن يكون تحته Child Node أو لا, ويطلق على العناصر في أسفل الشجرة Leaf Nodes وهي العناصر التي لا يوجد تحتها Childs"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Tree","src":"https://upload.wikimedia.org/wikipedia/commons/thumb/d/d1/Sorted_binary_tree_breadth-first_traversal.svg/250px-Sorted_binary_tree_breadth-first_traversal.svg.png"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"1. Root :"}]},{"type":"text","value":"\tأعلى Node في الشجرة\n"},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"2. Edge :"}]},{"type":"text","value":"\tحلقة الوصل بين ال Nodes\n"},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"3. Child :"}]},{"type":"text","value":"\tعبارة عن Node يحتوي على Parent\n"},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"4. Parent :"}]},{"type":"text","value":"\tعبارة عن Node يحتوي على حلقة وصل بينه وبين Child Node\n"},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"5. Leaf :"}]},{"type":"text","value":"\tعبارة عن Node لا يوجد لديه Child Node"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"Hash Table"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"hash table من أسرع هياكل البيانات ويجب أستخدامها في حال أردت سرعه كبيره في عمليه البحث والإدخال ،،\nتستخدم هذه البنيه داله هاشيه hash function تقوم بتحويل المدخلات الى قيم محصوره تكون عباره عن مواقع Index في الجدول table ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"Hash table","src":"https://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Hash_table_3_1_1_0_1_0_0_SP.svg/315px-Hash_table_3_1_1_0_1_0_0_SP.svg.png"},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"ختاما"},"children":[{"type":"text","value":"ختاما"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"دور Data Structure يتمحور أساسا حول الكيفية الممنهجة في هيكلة البيانات , الشيء الذي قضى على إشكاليات كانت ستكون عائق بارز في التعامل مع البيانات ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وأدعوك للإنضمام ومتابعتنا :"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://web.facebook.com/Ko5Blog/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"مدونة كوخ على فيسبوك"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://twitter.com/Ko5Blog","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"مدونة كوخ على تويتر"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://paypal.me/ALAHCEN?locale.x=en_US","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"أو ودعمنا على بايبال للحصول على دومين خاص شكرا ."}]}]}]},{"type":"element","tag":"h2","props":{"id":"مصادر-المقالة-"},"children":[{"type":"text","value":"مصادر المقالة :"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://en.wikipedia.org/wiki/List_of_data_structures","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"ويكيبيديا"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://elzero.org/everything-about-data-structure/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"أكاديمية الزيرو"}]}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-50b4e1{color:#A5D6FF}.ct-a163aa{color:#D2A8FF}.ct-4b3983{color:#8B949E}.ct-e421f3{color:#79C0FF}.ct-068096{color:#FF7B72}.ct-67a08e{color:#C9D1D9}.dark .ct-67a08e{color:#C9D1D9}.dark .ct-068096{color:#FF7B72}.dark .ct-e421f3{color:#79C0FF}.dark .ct-4b3983{color:#8B949E}.dark .ct-a163aa{color:#D2A8FF}.dark .ct-50b4e1{color:#A5D6FF}"}]}],"toc":{"title":"","searchDepth":5,"depth":5,"links":[{"id":"ماهي-البيانات-","depth":2,"text":"ماهي البيانات ؟"},{"id":"الإشكالية-","depth":2,"text":"الإشكالية :"},{"id":"مفهوم-data-structures-","depth":2,"text":"مفهوم Data Structures :"},{"id":"non-linear-data-structure","depth":2,"text":"Non Linear Data Structure"},{"id":"ختاما","depth":2,"text":"ختاما"},{"id":"مصادر-المقالة-","depth":2,"text":"مصادر المقالة :"}]}},"_type":"markdown","_id":"content:blog:everything-about-data-structures.md","_source":"content","_file":"blog/everything-about-data-structures.md","_extension":"md"},{"_path":"/blog/everything-about-graphql","_draft":false,"_partial":false,"_empty":false,"title":"GraphQl [دليل شامل]","description":"لغة إستعلام جديدة مطورة من طرف شركة فاسيبوك , لغرض إنشاء وتصميم الواجهات البرمجية APIs.","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"ماهية-لغة-الإستعلام-graphql"},"children":[{"type":"element","tag":"a","props":{"href":"#%D9%85%D8%A7%D9%87%D9%8A%D8%A9-%D9%84%D8%BA%D8%A9-%D8%A7%D9%84%D8%A5%D8%B3%D8%AA%D8%B9%D9%84%D8%A7%D9%85-graphql"},"children":[{"type":"text","value":"ماهية لغة الإستعلام GraphQl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"** GraphQl ** : لغة إستعلام مقدمة من طرف شركة فايسبوك سنة 2012 إستخدمت داخل مشاريع الشركة الداخلية قبل أن يتم إتاحتها للجميع إبتداءا من 2015 تحت رخص مجانية متاحة للكل (open source) ."}]},{"type":"element","tag":"h2","props":{"id":"الإشكالية-في-إستخدام-rest-apis"},"children":[{"type":"element","tag":"a","props":{"href":"#%D8%A7%D9%84%D8%A5%D8%B4%D9%83%D8%A7%D9%84%D9%8A%D8%A9-%D9%81%D9%8A-%D8%A5%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-rest-apis"},"children":[{"type":"text","value":"الإشكالية في إستخدام REST APIs"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"قبل أن يتم تطوير لغة الإستعلام "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"GraphQl"}]},{"type":"text","value":" كانت جميع التطبيقات تشتغل بإستخدام ** REST APIs ** , ولكن مع التطور الكبير الحاصل سرعان مابدأت شركات كبرى تعاني من مشكلات في تطبيقاتها , وعلى رأس تلك المشاكل البيانات الزائدة و كثرة الإستعلامات بين وظائف التطبيق و مخزن البيانات ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"حسناً , لنوضح المسألة قليلاً ."}]},{"type":"element","tag":"h2","props":{"id":"المسألة-بشكل-نظري"},"children":[{"type":"text","value":"المسألة بشكل نظري"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"لنفترض لدي جدول به مجموعة من المنتجات وجدول آخر به الشركات المصنعة للمنتج ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"1 . جدول المنتجات"}]},{"type":"element","tag":"table","props":{},"children":[{"type":"element","tag":"thead","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"text","value":"ID Com"}]},{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"text","value":"Name"}]},{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"text","value":"Price"}]},{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"text","value":"ID"}]}]}]},{"type":"element","tag":"tbody","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"S1"}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"PES 5"}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"$ 700"}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"001"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"S2"}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"Xbox"}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"$ 900"}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"002"}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"2 . جدول الشركات المصنعة"}]},{"type":"element","tag":"table","props":{},"children":[{"type":"element","tag":"thead","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"text","value":"Location"}]},{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"text","value":"Name"}]},{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"text","value":"ID"}]}]}]},{"type":"element","tag":"tbody","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"LV"}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"Sony"}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"S1"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"NY"}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"Xbox"}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"S2"}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"المسألة-تطبيقيا"},"children":[{"type":"text","value":"المسألة تطبيقيا"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"ونفترض تاليا أننا نود عرض بيانات للمعرف التالي 001 .\nوسيكون الإستعلام على الشكل التالي بإستخدام ** REST APIs ** ."}]},{"type":"element","tag":"code","props":{"code":"GET https://api.domainname.com/products/001\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"GET https://api.domainname.com/products/001\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"والنتيجة :"}]},{"type":"element","tag":"code","props":{"code":"// Result in JSON\n{\n \"ID\": \"001\",\n \"Name\": \"PES 5\",\n \"Price\": \"700$\",\n \"ID_Com\": \"S1\"\n}\n","language":"json"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// Result in JSON\n{\n \"ID\": \"001\",\n \"Name\": \"PES 5\",\n \"Price\": \"700$\",\n \"ID_Com\": \"S1\"\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"لكن الإشكالية ماذا لو نود الإتيان بالشركة المصنعة , والحل مع **REST APIs ** , من خلال القيام بإستعلام جديد وتضمين معرف الشركات المصنعة (ID_Com) , وتبدو هذه الطريقة الواحدة للقيام بالأمر , وفي كل مرة نود الحصول على معلومات , يكون علينا لزاما القيام بإستعلامات جديدة وهذا يستنزف الموارد بشكل كبير , خصوصا في التطبيقات الكبيرة كتطبيقات شركة ** فيسبوك ** , الكثير من الإستعلامات قد يؤثر على الأداء ."}]},{"type":"element","tag":"h3","props":{"id":"هذا-وبالإضافة-إلى-أنه-لاإمكانية-ممكنة-يقدمها-rest-تمكننا-من-تحديد-فقط-البيانات-التي-نريد-الحصول-عليها--فلو-أردت-الحصول--فقط-على-إسم-المنتجات-الموجودة--يقوم-بإرسال-كامل-الحقول-"},"children":[{"type":"text","value":"هذا وبالإضافة إلى أنه لاإمكانية ممكنة يقدمها REST تمكننا من تحديد فقط البيانات التي نريد الحصول عليها , فلو أردت الحصول فقط على إسم المنتجات الموجودة , يقوم بإرسال كامل الحقول ."}]},{"type":"element","tag":"h1","props":{"id":"كيف-تجاوز-graphql-إشكالية-rest--وبماذا-يمتاز-إستعلام-graphql-عن-rest-apis-"},"children":[{"type":"element","tag":"a","props":{"href":"#%D9%83%D9%8A%D9%81-%D8%AA%D8%AC%D8%A7%D9%88%D8%B2-graphql-%D8%A5%D8%B4%D9%83%D8%A7%D9%84%D9%8A%D8%A9-rest--%D9%88%D8%A8%D9%85%D8%A7%D8%B0%D8%A7-%D9%8A%D9%85%D8%AA%D8%A7%D8%B2-%D8%A5%D8%B3%D8%AA%D8%B9%D9%84%D8%A7%D9%85-graphql-%D8%B9%D9%86-rest-apis-"},"children":[{"type":"text","value":"كيف تجاوز GraphQl إشكالية REST ؟ وبماذا يمتاز إستعلام GraphQl عن REST APIs ?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"قد تبدو إشكالية REST APIs بالنسبة للتطبيقات حاليا إشكالية مقلقة , تؤدي باالأداء , ويبدو أن هذه الإشكالية هي ما أقلقت شكرة ** فيسبوك ** لتطور بديل جديد يقوم بالمطلوب بأقل كلفة ممكنة في إستغلال الموارد ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"فبإستخدام لغة الإستعلام ** GraphQl ** لك إمكانية تحديد البينات المراد الحصول عليها فقط , الحصول على بينات من جدولين مختلفيت مرتبطين كما في مثال سابق بإستعلام واحد وفقط ."}]},{"type":"element","tag":"h2","props":{"id":"مثال-إستعلام-graphql"},"children":[{"type":"element","tag":"a","props":{"href":"#%D9%85%D8%AB%D8%A7%D9%84-%D8%A5%D8%B3%D8%AA%D8%B9%D9%84%D8%A7%D9%85-graphql"},"children":[{"type":"text","value":"مثال إستعلام GraphQl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"نفس المثال السابق لكن بإستخدام ** GraphQL ** :"}]},{"type":"element","tag":"code","props":{"code":"product(id : \"001\"){\n name\n price\n company {\n name // إسم الشركة\n }\n}\n","language":"graphql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"product(id : \"001\"){\n name\n price\n company {\n name // إسم الشركة\n }\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"ونتيجة الإستعلام :"}]},{"type":"element","tag":"code","props":{"code":"// Result in JSON\n{\n \"data\": {\n \"product\": {\n \"name\": \"PES 5\",\n \"price\": \"700$\",\n \"company\": {\n \"name\": \"Sony\"\n }\n }\n }\n}\n","language":"json"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// Result in JSON\n{\n \"data\": {\n \"product\": {\n \"name\": \"PES 5\",\n \"price\": \"700$\",\n \"company\": {\n \"name\": \"Sony\"\n }\n }\n }\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"الملاحظ في الإستعلام أننا إشتغلنا على جدولين مختلفين في إستعلام واحد (Product , Company) , يضم نص (String) يسمى بال Query , بالإضافة إلى تضمين إستعلامين في آن واحد قمنا بطلب فقط الحقول المحددة , بهذا تجاوز ** GraphQl ** ال ** REST APIs ** ."}]},{"type":"element","tag":"h2","props":{"id":"مميزات--graphql--"},"children":[{"type":"element","tag":"a","props":{"href":"#%D9%88%D9%85%D9%86-%D9%85%D9%85%D9%8A%D8%B2%D8%A7%D8%AA-graphql"},"children":[{"type":"text","value":"مميزات ** GraphQl ** "}]}]},{"type":"element","tag":"h3","props":{"id":"1-تتيح-للعميل-تحديد-البيانات-التي-يحتاجها-بالضبط-"},"children":[{"type":"text","value":"1. تتيح للعميل تحديد البيانات التي يحتاجها بالضبط ."}]},{"type":"element","tag":"h3","props":{"id":"2-تسهل-عملية-تجميع-البيانات-من-مصادر-متعددة"},"children":[{"type":"text","value":"2. تسهل عملية تجميع البيانات من مصادر متعددة."}]},{"type":"element","tag":"h3","props":{"id":"3-تستخدم-type-system-لوصف-البيانات"},"children":[{"type":"text","value":"3. تستخدم type system لوصف البيانات."}]},{"type":"element","tag":"h2","props":{"id":"عملاء-graphql"},"children":[{"type":"element","tag":"a","props":{"href":"#%D8%B9%D9%85%D9%84%D8%A7%D8%A1-graphql"},"children":[{"type":"text","value":"عملاء GraphQl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"يمكنك التعامل مباشرة مع إستعلامات GraphQl مباشرة دون الإستعانة بأدوات أو مكتبات , لكن توافر إمكانية الإستعانة بأدوات يسهل عليك العمليات بشكل كبير للغاية ."}]},{"type":"element","tag":"h3","props":{"id":"apollo-"},"children":[{"type":"text","value":"Apollo :"}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Apollo عبارة عن نظام أساسي لبناء رسم بياني للبيانات ، وهو طبقة اتصال تربط عملاء التطبيق بسلاسة (مثل تطبيقات React و iOS) بخدماتك الخلفية."},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"حسب تعريف من منصة أبولو"}]}]}]},{"type":"element","tag":"h3","props":{"id":"relay-"},"children":[{"type":"text","value":"Relay :"}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"مصمم من طرف شركة فيسبوك."}]}]},{"type":"element","tag":"h2","props":{"id":"العمليات-queries-mutations-و-subscriptions-في-graphql"},"children":[{"type":"element","tag":"a","props":{"href":"#%D8%A7%D9%84%D8%B9%D9%85%D9%84%D9%8A%D8%A7%D8%AA-queries-mutations-%D9%88-subscriptions-%D9%81%D9%8A-graphql"},"children":[{"type":"text","value":"العمليات Queries, Mutations, و Subscriptions في GraphQl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"حسنًا ، لقد أبرزنا بالفعل بعض الجوانب المهمة المرتبطة بـ GraphQL. ولكن ، لتطوير تطبيق يعمل بكامل طاقته ، نحتاج أيضًا إلى إلقاء نظرة على بعض المكونات الأخرى التي يمكن استخدامها ."}]},{"type":"element","tag":"h3","props":{"id":"queries-"},"children":[{"type":"element","tag":"a","props":{"href":"#queries"},"children":[{"type":"text","value":"Queries"}]},{"type":"text","value":" :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"هي طلبات بيانات يقدمها العميل للخادم , وتختلف عن ال Queries في REST كون أنه على العميل تحديد فقط البيانات المطلوبة ."}]},{"type":"element","tag":"code","props":{"code":"{\n Users {\n name\n }\n}\n","language":"graphql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"{\n Users {\n name\n }\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"حقل (Users) المبين أعلاه يسمى ب (root) بينما العناصر التي تأتي مباشرة ضمنه تسمى ب (payload) ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"نتيجة الإستعلام أعلاه :"}]},{"type":"element","tag":"code","props":{"code":" {\n \"Users\": [ \n {\"name\": \"Houssam\"}\n {\"name\": \"Salman\"}\n {\"name\": \"Fatma\"}\n {\"name\": \"ali\"}\n ]\n }\n \n","language":"json"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" {\n \"Users\": [ \n {\"name\": \"Houssam\"}\n {\"name\": \"Salman\"}\n {\"name\": \"Fatma\"}\n {\"name\": \"ali\"}\n ]\n }\n \n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"من الملاحظ أن طلب البحث هذا نتج عنه أسماء المستخدمين (وذلك لأنه في طلب البحث ، حددنا بوضوح أننا نحتاج إلى قائمة الأسماء فقط)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"على سبيل المثال ، لنفترض أننا نرغب في الوصول إلى معلومات آخر 3 مستخدمين فقط من القائمة."}]},{"type":"element","tag":"code","props":{"code":"{\n Users(last : 3) {\n name\n username\n }\n}\n","language":"graphql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"{\n Users(last : 3) {\n name\n username\n }\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"لقد تعرفنا عن الطريقة المستخدمة في الوصول إلى البيانات من خلال إستخدام الإستعلامات , تاليا سنلقي نظرة عن الكيفية التي من خلالها يمكننا إنشاء أو تحديث البيانات أو حذفها ."}]},{"type":"element","tag":"h3","props":{"id":"mutations-"},"children":[{"type":"element","tag":"a","props":{"href":"#mutations"},"children":[{"type":"text","value":"Mutations"}]},{"type":"text","value":" :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Mutations تستخدم في إنشاء , تحديث او حذف بيانات معينة , البنية الهيكلية تشبه إلى حد ما بنية Queries لكن مع تضمين كلمة Mutations في البداية."}]},{"type":"element","tag":"code","props":{"code":"mutation {\n createUser (name : \"Lahcen\", username: \"aieLahcen\"){\n name\n username\n }\n}\n","language":"graphql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"mutation {\n createUser (name : \"Lahcen\", username: \"aieLahcen\"){\n name\n username\n }\n}\n"}]}]}]},{"type":"element","tag":"h3","props":{"id":"subscriptions-"},"children":[{"type":"element","tag":"a","props":{"href":"#subscriptions"},"children":[{"type":"text","value":"Subscriptions"}]},{"type":"text","value":" :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"تمكن من الحصول بإستمرار على البيانات المحدثة , فكلما طرأ تغيير على البيانات يتم إخطار العميل , وفي الأخير الحصول على تحديثات جديدة للبيانات , من خلال الإعتماد على نمط PubSub حيث الخادم يمثل "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Publisher"}]},{"type":"text","value":" والعميل يمثل "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Subscriber"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"ختاماً"},"children":[{"type":"text","value":"ختاماً"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"GraphQL لغة إستعلام جديدة ألقت بظلالها على نقط ضعف REST برزت في ظل التطور الشاهق الذي تشهده التطبيقات , وهذا لايقصي REST أبداً فلها سجل حافل من الكفاءة والآداء لسنوات عدة . لاكن دائما مانحتاج لحلول سريعة وجديدة للقيام بعمل ما على أوجه الكمال ."}]}]},"img":"img/GraphQl.png","author":1,"category":["GraphQl"],"created":"2020-08-09T00:00:00.000Z","tags":["api","graphql"],"hotest":1,"status":1,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"ماهية-لغة-الإستعلام-graphql"},"children":[{"type":"element","tag":"a","props":{"href":"#%D9%85%D8%A7%D9%87%D9%8A%D8%A9-%D9%84%D8%BA%D8%A9-%D8%A7%D9%84%D8%A5%D8%B3%D8%AA%D8%B9%D9%84%D8%A7%D9%85-graphql"},"children":[{"type":"text","value":"ماهية لغة الإستعلام GraphQl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"** GraphQl ** : لغة إستعلام مقدمة من طرف شركة فايسبوك سنة 2012 إستخدمت داخل مشاريع الشركة الداخلية قبل أن يتم إتاحتها للجميع إبتداءا من 2015 تحت رخص مجانية متاحة للكل (open source) ."}]},{"type":"element","tag":"h2","props":{"id":"الإشكالية-في-إستخدام-rest-apis"},"children":[{"type":"element","tag":"a","props":{"href":"#%D8%A7%D9%84%D8%A5%D8%B4%D9%83%D8%A7%D9%84%D9%8A%D8%A9-%D9%81%D9%8A-%D8%A5%D8%B3%D8%AA%D8%AE%D8%AF%D8%A7%D9%85-rest-apis"},"children":[{"type":"text","value":"الإشكالية في إستخدام REST APIs"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"قبل أن يتم تطوير لغة الإستعلام "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"GraphQl"}]},{"type":"text","value":" كانت جميع التطبيقات تشتغل بإستخدام ** REST APIs ** , ولكن مع التطور الكبير الحاصل سرعان مابدأت شركات كبرى تعاني من مشكلات في تطبيقاتها , وعلى رأس تلك المشاكل البيانات الزائدة و كثرة الإستعلامات بين وظائف التطبيق و مخزن البيانات ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"حسناً , لنوضح المسألة قليلاً ."}]},{"type":"element","tag":"h2","props":{"id":"المسألة-بشكل-نظري"},"children":[{"type":"text","value":"المسألة بشكل نظري"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"لنفترض لدي جدول به مجموعة من المنتجات وجدول آخر به الشركات المصنعة للمنتج ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"1 . جدول المنتجات"}]},{"type":"element","tag":"table","props":{},"children":[{"type":"element","tag":"thead","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"text","value":"ID Com"}]},{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"text","value":"Name"}]},{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"text","value":"Price"}]},{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"text","value":"ID"}]}]}]},{"type":"element","tag":"tbody","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"S1"}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"PES 5"}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"$ 700"}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"001"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"S2"}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"Xbox"}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"$ 900"}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"002"}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"2 . جدول الشركات المصنعة"}]},{"type":"element","tag":"table","props":{},"children":[{"type":"element","tag":"thead","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"text","value":"Location"}]},{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"text","value":"Name"}]},{"type":"element","tag":"th","props":{"align":null},"children":[{"type":"text","value":"ID"}]}]}]},{"type":"element","tag":"tbody","props":{},"children":[{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"LV"}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"Sony"}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"S1"}]}]},{"type":"element","tag":"tr","props":{},"children":[{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"NY"}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"Xbox"}]},{"type":"element","tag":"td","props":{"align":null},"children":[{"type":"text","value":"S2"}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"المسألة-تطبيقيا"},"children":[{"type":"text","value":"المسألة تطبيقيا"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"ونفترض تاليا أننا نود عرض بيانات للمعرف التالي 001 .\nوسيكون الإستعلام على الشكل التالي بإستخدام ** REST APIs ** ."}]},{"type":"element","tag":"code","props":{"code":"GET https://api.domainname.com/products/001\n","language":"bash"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":"GET https://api.domainname.com/products/001"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"والنتيجة :"}]},{"type":"element","tag":"code","props":{"code":"// Result in JSON\n{\n \"ID\": \"001\",\n \"Name\": \"PES 5\",\n \"Price\": \"700$\",\n \"ID_Com\": \"S1\"\n}\n","language":"json"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-95c3de"},"children":[{"type":"text","value":"// Result in JSON"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":"{"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-caf91f"},"children":[{"type":"text","value":"\"ID\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b5a4b7"},"children":[{"type":"text","value":"\"001\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-caf91f"},"children":[{"type":"text","value":"\"Name\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b5a4b7"},"children":[{"type":"text","value":"\"PES 5\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-caf91f"},"children":[{"type":"text","value":"\"Price\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b5a4b7"},"children":[{"type":"text","value":"\"700$\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-caf91f"},"children":[{"type":"text","value":"\"ID_Com\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b5a4b7"},"children":[{"type":"text","value":"\"S1\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"لكن الإشكالية ماذا لو نود الإتيان بالشركة المصنعة , والحل مع **REST APIs ** , من خلال القيام بإستعلام جديد وتضمين معرف الشركات المصنعة (ID_Com) , وتبدو هذه الطريقة الواحدة للقيام بالأمر , وفي كل مرة نود الحصول على معلومات , يكون علينا لزاما القيام بإستعلامات جديدة وهذا يستنزف الموارد بشكل كبير , خصوصا في التطبيقات الكبيرة كتطبيقات شركة ** فيسبوك ** , الكثير من الإستعلامات قد يؤثر على الأداء ."}]},{"type":"element","tag":"h3","props":{"id":"هذا-وبالإضافة-إلى-أنه-لاإمكانية-ممكنة-يقدمها-rest-تمكننا-من-تحديد-فقط-البيانات-التي-نريد-الحصول-عليها--فلو-أردت-الحصول--فقط-على-إسم-المنتجات-الموجودة--يقوم-بإرسال-كامل-الحقول-"},"children":[{"type":"text","value":"هذا وبالإضافة إلى أنه لاإمكانية ممكنة يقدمها REST تمكننا من تحديد فقط البيانات التي نريد الحصول عليها , فلو أردت الحصول فقط على إسم المنتجات الموجودة , يقوم بإرسال كامل الحقول ."}]},{"type":"element","tag":"h1","props":{"id":"كيف-تجاوز-graphql-إشكالية-rest--وبماذا-يمتاز-إستعلام-graphql-عن-rest-apis-"},"children":[{"type":"element","tag":"a","props":{"href":"#%D9%83%D9%8A%D9%81-%D8%AA%D8%AC%D8%A7%D9%88%D8%B2-graphql-%D8%A5%D8%B4%D9%83%D8%A7%D9%84%D9%8A%D8%A9-rest--%D9%88%D8%A8%D9%85%D8%A7%D8%B0%D8%A7-%D9%8A%D9%85%D8%AA%D8%A7%D8%B2-%D8%A5%D8%B3%D8%AA%D8%B9%D9%84%D8%A7%D9%85-graphql-%D8%B9%D9%86-rest-apis-"},"children":[{"type":"text","value":"كيف تجاوز GraphQl إشكالية REST ؟ وبماذا يمتاز إستعلام GraphQl عن REST APIs ?"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"قد تبدو إشكالية REST APIs بالنسبة للتطبيقات حاليا إشكالية مقلقة , تؤدي باالأداء , ويبدو أن هذه الإشكالية هي ما أقلقت شكرة ** فيسبوك ** لتطور بديل جديد يقوم بالمطلوب بأقل كلفة ممكنة في إستغلال الموارد ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"فبإستخدام لغة الإستعلام ** GraphQl ** لك إمكانية تحديد البينات المراد الحصول عليها فقط , الحصول على بينات من جدولين مختلفيت مرتبطين كما في مثال سابق بإستعلام واحد وفقط ."}]},{"type":"element","tag":"h2","props":{"id":"مثال-إستعلام-graphql"},"children":[{"type":"element","tag":"a","props":{"href":"#%D9%85%D8%AB%D8%A7%D9%84-%D8%A5%D8%B3%D8%AA%D8%B9%D9%84%D8%A7%D9%85-graphql"},"children":[{"type":"text","value":"مثال إستعلام GraphQl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"نفس المثال السابق لكن بإستخدام ** GraphQL ** :"}]},{"type":"element","tag":"code","props":{"code":"product(id : \"001\"){\n name\n price\n company {\n name // إسم الشركة\n }\n}\n","language":"graphql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-c5e513"},"children":[{"type":"text","value":"product"}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":"(id : "}]},{"type":"element","tag":"span","props":{"class":"ct-95c3de"},"children":[{"type":"text","value":"\"001\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":"){"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c5680f"},"children":[{"type":"text","value":"name"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c5680f"},"children":[{"type":"text","value":"price"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c5680f"},"children":[{"type":"text","value":"company"}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c5680f"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" // إسم الشركة"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"ونتيجة الإستعلام :"}]},{"type":"element","tag":"code","props":{"code":"// Result in JSON\n{\n \"data\": {\n \"product\": {\n \"name\": \"PES 5\",\n \"price\": \"700$\",\n \"company\": {\n \"name\": \"Sony\"\n }\n }\n }\n}\n","language":"json"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-95c3de"},"children":[{"type":"text","value":"// Result in JSON"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":"{"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-caf91f"},"children":[{"type":"text","value":"\"data\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":": {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-caf91f"},"children":[{"type":"text","value":"\"product\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":": {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-caf91f"},"children":[{"type":"text","value":"\"name\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b5a4b7"},"children":[{"type":"text","value":"\"PES 5\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-caf91f"},"children":[{"type":"text","value":"\"price\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b5a4b7"},"children":[{"type":"text","value":"\"700$\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":","}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-caf91f"},"children":[{"type":"text","value":"\"company\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":": {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-caf91f"},"children":[{"type":"text","value":"\"name\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b5a4b7"},"children":[{"type":"text","value":"\"Sony\""}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"الملاحظ في الإستعلام أننا إشتغلنا على جدولين مختلفين في إستعلام واحد (Product , Company) , يضم نص (String) يسمى بال Query , بالإضافة إلى تضمين إستعلامين في آن واحد قمنا بطلب فقط الحقول المحددة , بهذا تجاوز ** GraphQl ** ال ** REST APIs ** ."}]},{"type":"element","tag":"h2","props":{"id":"مميزات--graphql--"},"children":[{"type":"element","tag":"a","props":{"href":"#%D9%88%D9%85%D9%86-%D9%85%D9%85%D9%8A%D8%B2%D8%A7%D8%AA-graphql"},"children":[{"type":"text","value":"مميزات ** GraphQl ** "}]}]},{"type":"element","tag":"h3","props":{"id":"1-تتيح-للعميل-تحديد-البيانات-التي-يحتاجها-بالضبط-"},"children":[{"type":"text","value":"1. تتيح للعميل تحديد البيانات التي يحتاجها بالضبط ."}]},{"type":"element","tag":"h3","props":{"id":"2-تسهل-عملية-تجميع-البيانات-من-مصادر-متعددة"},"children":[{"type":"text","value":"2. تسهل عملية تجميع البيانات من مصادر متعددة."}]},{"type":"element","tag":"h3","props":{"id":"3-تستخدم-type-system-لوصف-البيانات"},"children":[{"type":"text","value":"3. تستخدم type system لوصف البيانات."}]},{"type":"element","tag":"h2","props":{"id":"عملاء-graphql"},"children":[{"type":"element","tag":"a","props":{"href":"#%D8%B9%D9%85%D9%84%D8%A7%D8%A1-graphql"},"children":[{"type":"text","value":"عملاء GraphQl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"يمكنك التعامل مباشرة مع إستعلامات GraphQl مباشرة دون الإستعانة بأدوات أو مكتبات , لكن توافر إمكانية الإستعانة بأدوات يسهل عليك العمليات بشكل كبير للغاية ."}]},{"type":"element","tag":"h3","props":{"id":"apollo-"},"children":[{"type":"text","value":"Apollo :"}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Apollo عبارة عن نظام أساسي لبناء رسم بياني للبيانات ، وهو طبقة اتصال تربط عملاء التطبيق بسلاسة (مثل تطبيقات React و iOS) بخدماتك الخلفية."},{"type":"element","tag":"em","props":{},"children":[{"type":"text","value":"حسب تعريف من منصة أبولو"}]}]}]},{"type":"element","tag":"h3","props":{"id":"relay-"},"children":[{"type":"text","value":"Relay :"}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"مصمم من طرف شركة فيسبوك."}]}]},{"type":"element","tag":"h2","props":{"id":"العمليات-queries-mutations-و-subscriptions-في-graphql"},"children":[{"type":"element","tag":"a","props":{"href":"#%D8%A7%D9%84%D8%B9%D9%85%D9%84%D9%8A%D8%A7%D8%AA-queries-mutations-%D9%88-subscriptions-%D9%81%D9%8A-graphql"},"children":[{"type":"text","value":"العمليات Queries, Mutations, و Subscriptions في GraphQl"}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"حسنًا ، لقد أبرزنا بالفعل بعض الجوانب المهمة المرتبطة بـ GraphQL. ولكن ، لتطوير تطبيق يعمل بكامل طاقته ، نحتاج أيضًا إلى إلقاء نظرة على بعض المكونات الأخرى التي يمكن استخدامها ."}]},{"type":"element","tag":"h3","props":{"id":"queries-"},"children":[{"type":"element","tag":"a","props":{"href":"#queries"},"children":[{"type":"text","value":"Queries"}]},{"type":"text","value":" :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"هي طلبات بيانات يقدمها العميل للخادم , وتختلف عن ال Queries في REST كون أنه على العميل تحديد فقط البيانات المطلوبة ."}]},{"type":"element","tag":"code","props":{"code":"{\n Users {\n name\n }\n}\n","language":"graphql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":"{"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c5680f"},"children":[{"type":"text","value":"Users"}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c5680f"},"children":[{"type":"text","value":"name"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"حقل (Users) المبين أعلاه يسمى ب (root) بينما العناصر التي تأتي مباشرة ضمنه تسمى ب (payload) ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"نتيجة الإستعلام أعلاه :"}]},{"type":"element","tag":"code","props":{"code":" {\n \"Users\": [ \n {\"name\": \"Houssam\"}\n {\"name\": \"Salman\"}\n {\"name\": \"Fatma\"}\n {\"name\": \"ali\"}\n ]\n }\n \n","language":"json"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-caf91f"},"children":[{"type":"text","value":"\"Users\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":": [ "}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" {"}]},{"type":"element","tag":"span","props":{"class":"ct-caf91f"},"children":[{"type":"text","value":"\"name\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b5a4b7"},"children":[{"type":"text","value":"\"Houssam\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" {"}]},{"type":"element","tag":"span","props":{"class":"ct-caf91f"},"children":[{"type":"text","value":"\"name\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b5a4b7"},"children":[{"type":"text","value":"\"Salman\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" {"}]},{"type":"element","tag":"span","props":{"class":"ct-caf91f"},"children":[{"type":"text","value":"\"name\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b5a4b7"},"children":[{"type":"text","value":"\"Fatma\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" {"}]},{"type":"element","tag":"span","props":{"class":"ct-caf91f"},"children":[{"type":"text","value":"\"name\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b5a4b7"},"children":[{"type":"text","value":"\"ali\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":"}"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" ]"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"من الملاحظ أن طلب البحث هذا نتج عنه أسماء المستخدمين (وذلك لأنه في طلب البحث ، حددنا بوضوح أننا نحتاج إلى قائمة الأسماء فقط)."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"على سبيل المثال ، لنفترض أننا نرغب في الوصول إلى معلومات آخر 3 مستخدمين فقط من القائمة."}]},{"type":"element","tag":"code","props":{"code":"{\n Users(last : 3) {\n name\n username\n }\n}\n","language":"graphql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":"{"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c5680f"},"children":[{"type":"text","value":"Users"}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-c5680f"},"children":[{"type":"text","value":"last"}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" : "}]},{"type":"element","tag":"span","props":{"class":"ct-caf91f"},"children":[{"type":"text","value":"3"}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":") {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c5680f"},"children":[{"type":"text","value":"name"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c5680f"},"children":[{"type":"text","value":"username"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"لقد تعرفنا عن الطريقة المستخدمة في الوصول إلى البيانات من خلال إستخدام الإستعلامات , تاليا سنلقي نظرة عن الكيفية التي من خلالها يمكننا إنشاء أو تحديث البيانات أو حذفها ."}]},{"type":"element","tag":"h3","props":{"id":"mutations-"},"children":[{"type":"element","tag":"a","props":{"href":"#mutations"},"children":[{"type":"text","value":"Mutations"}]},{"type":"text","value":" :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"Mutations تستخدم في إنشاء , تحديث او حذف بيانات معينة , البنية الهيكلية تشبه إلى حد ما بنية Queries لكن مع تضمين كلمة Mutations في البداية."}]},{"type":"element","tag":"code","props":{"code":"mutation {\n createUser (name : \"Lahcen\", username: \"aieLahcen\"){\n name\n username\n }\n}\n","language":"graphql"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-73a490"},"children":[{"type":"text","value":"mutation"}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c5680f"},"children":[{"type":"text","value":"createUser"}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-c5680f"},"children":[{"type":"text","value":"name"}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" : "}]},{"type":"element","tag":"span","props":{"class":"ct-b5a4b7"},"children":[{"type":"text","value":"\"Lahcen\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-c5680f"},"children":[{"type":"text","value":"username"}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":": "}]},{"type":"element","tag":"span","props":{"class":"ct-b5a4b7"},"children":[{"type":"text","value":"\"aieLahcen\""}]},{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":"){"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c5680f"},"children":[{"type":"text","value":"name"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-c5680f"},"children":[{"type":"text","value":"username"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":" }"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8c2d3a"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"h3","props":{"id":"subscriptions-"},"children":[{"type":"element","tag":"a","props":{"href":"#subscriptions"},"children":[{"type":"text","value":"Subscriptions"}]},{"type":"text","value":" :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"تمكن من الحصول بإستمرار على البيانات المحدثة , فكلما طرأ تغيير على البيانات يتم إخطار العميل , وفي الأخير الحصول على تحديثات جديدة للبيانات , من خلال الإعتماد على نمط PubSub حيث الخادم يمثل "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Publisher"}]},{"type":"text","value":" والعميل يمثل "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Subscriber"}]},{"type":"text","value":"."}]},{"type":"element","tag":"h2","props":{"id":"ختاماً"},"children":[{"type":"text","value":"ختاماً"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"GraphQL لغة إستعلام جديدة ألقت بظلالها على نقط ضعف REST برزت في ظل التطور الشاهق الذي تشهده التطبيقات , وهذا لايقصي REST أبداً فلها سجل حافل من الكفاءة والآداء لسنوات عدة . لاكن دائما مانحتاج لحلول سريعة وجديدة للقيام بعمل ما على أوجه الكمال ."}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-73a490{color:#FF7B72}.ct-c5680f{color:#FFA657}.ct-c5e513{color:#D2A8FF}.ct-b5a4b7{color:#A5D6FF}.ct-caf91f{color:#79C0FF}.ct-95c3de{color:#8B949E}.ct-8c2d3a{color:#C9D1D9}.dark .ct-8c2d3a{color:#C9D1D9}.dark .ct-95c3de{color:#8B949E}.dark .ct-caf91f{color:#79C0FF}.dark .ct-b5a4b7{color:#A5D6FF}.dark .ct-c5e513{color:#D2A8FF}.dark .ct-c5680f{color:#FFA657}.dark .ct-73a490{color:#FF7B72}"}]}],"toc":{"title":"","searchDepth":5,"depth":5,"links":[{"id":"ماهية-لغة-الإستعلام-graphql","depth":2,"text":"ماهية لغة الإستعلام GraphQl"},{"id":"الإشكالية-في-إستخدام-rest-apis","depth":2,"text":"الإشكالية في إستخدام REST APIs"},{"id":"المسألة-بشكل-نظري","depth":2,"text":"المسألة بشكل نظري"},{"id":"المسألة-تطبيقيا","depth":2,"text":"المسألة تطبيقيا","children":[{"id":"هذا-وبالإضافة-إلى-أنه-لاإمكانية-ممكنة-يقدمها-rest-تمكننا-من-تحديد-فقط-البيانات-التي-نريد-الحصول-عليها--فلو-أردت-الحصول--فقط-على-إسم-المنتجات-الموجودة--يقوم-بإرسال-كامل-الحقول-","depth":3,"text":"هذا وبالإضافة إلى أنه لاإمكانية ممكنة يقدمها REST تمكننا من تحديد فقط البيانات التي نريد الحصول عليها , فلو أردت الحصول فقط على إسم المنتجات الموجودة , يقوم بإرسال كامل الحقول ."}]},{"id":"مثال-إستعلام-graphql","depth":2,"text":"مثال إستعلام GraphQl"},{"id":"مميزات--graphql--","depth":2,"text":"مميزات ** GraphQl ** ","children":[{"id":"1-تتيح-للعميل-تحديد-البيانات-التي-يحتاجها-بالضبط-","depth":3,"text":"1. تتيح للعميل تحديد البيانات التي يحتاجها بالضبط ."},{"id":"2-تسهل-عملية-تجميع-البيانات-من-مصادر-متعددة","depth":3,"text":"2. تسهل عملية تجميع البيانات من مصادر متعددة."},{"id":"3-تستخدم-type-system-لوصف-البيانات","depth":3,"text":"3. تستخدم type system لوصف البيانات."}]},{"id":"عملاء-graphql","depth":2,"text":"عملاء GraphQl","children":[{"id":"apollo-","depth":3,"text":"Apollo :"},{"id":"relay-","depth":3,"text":"Relay :"}]},{"id":"العمليات-queries-mutations-و-subscriptions-في-graphql","depth":2,"text":"العمليات Queries, Mutations, و Subscriptions في GraphQl","children":[{"id":"queries-","depth":3,"text":"Queries :"},{"id":"mutations-","depth":3,"text":"Mutations :"},{"id":"subscriptions-","depth":3,"text":"Subscriptions :"}]},{"id":"ختاماً","depth":2,"text":"ختاماً"}]}},"_type":"markdown","_id":"content:blog:everything-about-graphql.md","_source":"content","_file":"blog/everything-about-graphql.md","_extension":"md"},{"_path":"/blog/gridsome-not-gatsby","_draft":false,"_partial":false,"_empty":false,"title":"لماذا إخترت Gridsome وليس Gatsby ؟","description":"بناء المواقع بواسطة مولد المواقع الساكنة Gatsby.js و Gridsome.js","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"مقدمة-إلى-مفهوم-المواقع-الساكنة-"},"children":[{"type":"text","value":"مقدمة إلى مفهوم المواقع الساكنة :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"فعليا مفهوم المواقع الساكنة قد تكون تعاملت معه في بادئ تعلمك لتصميم واجهات المواقع بواسطة ** HTML - CSS - JAVASCRIPT ** , والموقع يكون ساكن جميع التعديلات والإضافات تتم من خلال الكود ولاوجود لمحور ثالث يمدنا ب البيانات ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"لاكن مايثير تساؤلاتك ماعلاقة كل هذا بمولدات المواقع الساكنة أليس من الطبيعي لو قمت أنا بإنشاء كل تلك الملفات بدلا عن مولدي المواقع الساكنة ؟؟"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"سؤالك هذا مقبول لاكن للإجابة عليه نحتاج إلى التعرف أكثر عن خلفيات المفهوم ** المواقع الساكنة ** ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"مولدات المواقع الساكنة هي إطارات خاصة بالجافاسكريبت بنيت على تقنية تسمى ب ال JAMstack , وهي تقنية تقوم على توليد ملفات الموقع في مرحلة ** Build ** . عكس العملية العادية التي تحدثنا عنها في البداية التي يتم فيها توليد المكونات في الوقت الفعلي ** Runtime ** ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"JAMstack","src":"https://dinarys.com/photos/7/slide%20jamstack%20-%20dinarys.png"},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"المزيد-حول-تقنية-jamstack-"},"children":[{"type":"text","value":"المزيد حول تقنية JAMStack :"}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"بتعبير آخر، تطبيقات JAM هي مجرد مواقع إلكترونية ساكنة أضيفت إليها بعض اللمسات والمزايا العصرية، أهمها القدرة على القيام بعمليات دينامكية بفضل الحرفين J و A (جافاسكريبت و APIs) :)"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://www.tutomena.com/web-development/javascript/what-is-jamstack/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"مقتطف من مدونة توتومينا"}]},{"type":"text","value":" *"}]}]}]},{"type":"element","tag":"h2","props":{"id":"على-ماذا-سأحصل-حال-إستخدمت-jamstack-"},"children":[{"type":"text","value":"على ماذا سأحصل حال إستخدمت JAMstack :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"ستحصل على الكثير من الميزات اولها ميزة **السرعة ** , والأداء , وميزة الامان كون الملفات تكون مستضافة على خوادم **CDN ** مثل **NETLIFY ** , وبالتالي إنفصال تام بين الخادم وكود العميل ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"بعد أن تعرفنا على النقاط السابقة عليك أن تتسائل عن الكيفية العملية للحصول على التقنية JAMStack , فلابد من وجود أدوات تقوم بتطبيقها .\nصحيح وهذا المحور الثاني من مقالنا اليوم , وسنتعرف من خلالهما على إطارين رائعين للأمانة ونتخد لكل واحد منهما بطاقة تعريف ."}]},{"type":"element","tag":"h2","props":{"id":"gatsbyjs"},"children":[{"type":"text","value":"Gatsby.js"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"gatsby.js","src":"https://www.whitespectre.com/uploads/gatsby.jpg"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"ماسنتحدث عنه عن Gatsby.js لن يكون عكس ماينطبق عليه الحال بالنسبة ل Gridsome فهما وجهان لعملة ال JAMstack ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"بعد التقديم والحديث عن JAMstack , بت تعرف ماهية الأطار , لذا سنتحدث عن الميزات التقنية في Gatsby.js :"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"جميع المكونات والموارد يتم إعدادها من خلال مرحلة البناء "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Build"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"ضغط الأكواد"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"ميزة الكاش , فلن يحتاج المتصفح كل مرة لإعادة تحميل بعض المونات مثلا ك الصور"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"السرعة , شيء مورث من JAMstack"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"دقة الآداء والآمان العالي"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"تحسين الصور وضغطها بشكل تلقائي"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"لاوجود لإعادة تحميل الصفحات و المتصفح"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"تطبيق أحادي SPA ( Single Page Application )"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"يدعم ال GraphQL للتعامل مع البيانات"}]}]},{"type":"element","tag":"h2","props":{"id":"gridsomejs"},"children":[{"type":"text","value":"Gridsome.js"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"gridsome","src":"https://i2.wp.com/azoora.com/blog/wp-content/uploads/2019/11/gridsome-1.png?fit=1480%2C618&ssl=1"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"ماذا عن العزيز Gridsome , كما أشرت سابقا لافرق ولاإختلاف , كل من Gatsby.js و Gridome.js هما نسختان عن بعضهما البعض ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"بجميع المميزات من السرعة والآداء والمان العالي , كل شيء ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"لكن إختلاف وحيد هو مايفرق بينهما .\nألا وهو نمط ولغة الكتابة , جميعهم مبنيين على لغة الجافاسكريبت وعلى تقنية ال JAMstack , لكن الأول (gatsby) بني على إطار عمل React.js والثاني (Gridsome) مبني على إطار عمل Vue.js ,\nوهذا هو جوهر الإختلاف ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"ولو عدت لقراءة العنوان ترى ان الموضوع الرئيسي هو عن ** "},{"type":"element","tag":"a","props":{"href":"https://ko5.netlify.app/blog/gridsome-not-gatsby/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"لماذا إخترت Gridsome وليس Gatsby ؟"}]},{"type":"text","value":" **"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"الجواب بسيط كون أن الإطاريين هما نسختين عن نفسيهما , لكن كل واحد مبني على احد إطاري لغة javascript , React أو Vue , وكوني أنا أحد مبرمجين بإطار Vue.js و هنا برز الإختلاف , فمعرفتي المسبقة بإطار Vue.js رجحت الكفة , والغلبة كانت ل Gridsome ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"ولكن معرفتي المسبقة كانت ل Gatsby فمن خلال مدونة ** "},{"type":"element","tag":"a","props":{"href":"https://www.tutomena.com/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"توتومينا"}]},{"type":"text","value":" ** , أو بعد الحلقات المباشرة على اليوتيوب كقناة ** "},{"type":"element","tag":"a","props":{"href":"https://www.youtube.com/channel/UC6u-1b7VOVIC8LuJpnTNhOg","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"عرباوي مهدي"}]},{"type":"text","value":" ** كانت معرفتي بمولدات الواقع الساكنة"}]},{"type":"element","tag":"h2","props":{"id":"ختاما"},"children":[{"type":"text","value":"ختاما"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"اتمنى أن تكون قد زودت زادك المعرفي وأن قد وفقت في ذلك , وكما أني لا أحب المقارنات فأحيطك أن التدوينة هي حديث لتنوير الموضوع وأنها ليست وسيلة لمقارنة , كون كل تقنية مجدية , وكما أن الإختيار يعود على معرفتك المسبقة وهذا مارجح الكفة لدي , فلولا ما كنت مبرمج على Vue.js ما إخترت Gridsome ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وأدعوك للإنضمام ومتابعتنا :"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://web.facebook.com/Ko5Blog/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"مدونة كوخ على فيسبوك"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://twitter.com/Ko5Blog","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"مدونة كوخ على تويتر"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://paypal.me/ALAHCEN?locale.x=en_US","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"أو ودعمنا على بايبال للحصول على دومين خاص شكرا ."}]}]}]}]},"img":"img/gridsome.png","author":1,"category":["البرمجة"],"created":"2020-07-27T00:00:00.000Z","tags":["gridsome","gatsby","JAMStack","برمجة"],"hotest":1,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"مقدمة-إلى-مفهوم-المواقع-الساكنة-"},"children":[{"type":"text","value":"مقدمة إلى مفهوم المواقع الساكنة :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"فعليا مفهوم المواقع الساكنة قد تكون تعاملت معه في بادئ تعلمك لتصميم واجهات المواقع بواسطة ** HTML - CSS - JAVASCRIPT ** , والموقع يكون ساكن جميع التعديلات والإضافات تتم من خلال الكود ولاوجود لمحور ثالث يمدنا ب البيانات ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"لاكن مايثير تساؤلاتك ماعلاقة كل هذا بمولدات المواقع الساكنة أليس من الطبيعي لو قمت أنا بإنشاء كل تلك الملفات بدلا عن مولدي المواقع الساكنة ؟؟"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"سؤالك هذا مقبول لاكن للإجابة عليه نحتاج إلى التعرف أكثر عن خلفيات المفهوم ** المواقع الساكنة ** ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"مولدات المواقع الساكنة هي إطارات خاصة بالجافاسكريبت بنيت على تقنية تسمى ب ال JAMstack , وهي تقنية تقوم على توليد ملفات الموقع في مرحلة ** Build ** . عكس العملية العادية التي تحدثنا عنها في البداية التي يتم فيها توليد المكونات في الوقت الفعلي ** Runtime ** ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"JAMstack","src":"https://dinarys.com/photos/7/slide%20jamstack%20-%20dinarys.png"},"children":[]}]},{"type":"element","tag":"h2","props":{"id":"المزيد-حول-تقنية-jamstack-"},"children":[{"type":"text","value":"المزيد حول تقنية JAMStack :"}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"بتعبير آخر، تطبيقات JAM هي مجرد مواقع إلكترونية ساكنة أضيفت إليها بعض اللمسات والمزايا العصرية، أهمها القدرة على القيام بعمليات دينامكية بفضل الحرفين J و A (جافاسكريبت و APIs) :)"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://www.tutomena.com/web-development/javascript/what-is-jamstack/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"مقتطف من مدونة توتومينا"}]},{"type":"text","value":" *"}]}]}]},{"type":"element","tag":"h2","props":{"id":"على-ماذا-سأحصل-حال-إستخدمت-jamstack-"},"children":[{"type":"text","value":"على ماذا سأحصل حال إستخدمت JAMstack :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"ستحصل على الكثير من الميزات اولها ميزة **السرعة ** , والأداء , وميزة الامان كون الملفات تكون مستضافة على خوادم **CDN ** مثل **NETLIFY ** , وبالتالي إنفصال تام بين الخادم وكود العميل ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"بعد أن تعرفنا على النقاط السابقة عليك أن تتسائل عن الكيفية العملية للحصول على التقنية JAMStack , فلابد من وجود أدوات تقوم بتطبيقها .\nصحيح وهذا المحور الثاني من مقالنا اليوم , وسنتعرف من خلالهما على إطارين رائعين للأمانة ونتخد لكل واحد منهما بطاقة تعريف ."}]},{"type":"element","tag":"h2","props":{"id":"gatsbyjs"},"children":[{"type":"text","value":"Gatsby.js"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"gatsby.js","src":"https://www.whitespectre.com/uploads/gatsby.jpg"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"ماسنتحدث عنه عن Gatsby.js لن يكون عكس ماينطبق عليه الحال بالنسبة ل Gridsome فهما وجهان لعملة ال JAMstack ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"بعد التقديم والحديث عن JAMstack , بت تعرف ماهية الأطار , لذا سنتحدث عن الميزات التقنية في Gatsby.js :"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"جميع المكونات والموارد يتم إعدادها من خلال مرحلة البناء "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"Build"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"ضغط الأكواد"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"ميزة الكاش , فلن يحتاج المتصفح كل مرة لإعادة تحميل بعض المونات مثلا ك الصور"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"السرعة , شيء مورث من JAMstack"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"دقة الآداء والآمان العالي"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"تحسين الصور وضغطها بشكل تلقائي"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"لاوجود لإعادة تحميل الصفحات و المتصفح"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"تطبيق أحادي SPA ( Single Page Application )"}]},{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"يدعم ال GraphQL للتعامل مع البيانات"}]}]},{"type":"element","tag":"h2","props":{"id":"gridsomejs"},"children":[{"type":"text","value":"Gridsome.js"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"gridsome","src":"https://i2.wp.com/azoora.com/blog/wp-content/uploads/2019/11/gridsome-1.png?fit=1480%2C618&ssl=1"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"ماذا عن العزيز Gridsome , كما أشرت سابقا لافرق ولاإختلاف , كل من Gatsby.js و Gridome.js هما نسختان عن بعضهما البعض ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"بجميع المميزات من السرعة والآداء والمان العالي , كل شيء ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"لكن إختلاف وحيد هو مايفرق بينهما .\nألا وهو نمط ولغة الكتابة , جميعهم مبنيين على لغة الجافاسكريبت وعلى تقنية ال JAMstack , لكن الأول (gatsby) بني على إطار عمل React.js والثاني (Gridsome) مبني على إطار عمل Vue.js ,\nوهذا هو جوهر الإختلاف ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"ولو عدت لقراءة العنوان ترى ان الموضوع الرئيسي هو عن ** "},{"type":"element","tag":"a","props":{"href":"https://ko5.netlify.app/blog/gridsome-not-gatsby/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"لماذا إخترت Gridsome وليس Gatsby ؟"}]},{"type":"text","value":" **"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"الجواب بسيط كون أن الإطاريين هما نسختين عن نفسيهما , لكن كل واحد مبني على احد إطاري لغة javascript , React أو Vue , وكوني أنا أحد مبرمجين بإطار Vue.js و هنا برز الإختلاف , فمعرفتي المسبقة بإطار Vue.js رجحت الكفة , والغلبة كانت ل Gridsome ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"ولكن معرفتي المسبقة كانت ل Gatsby فمن خلال مدونة ** "},{"type":"element","tag":"a","props":{"href":"https://www.tutomena.com/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"توتومينا"}]},{"type":"text","value":" ** , أو بعد الحلقات المباشرة على اليوتيوب كقناة ** "},{"type":"element","tag":"a","props":{"href":"https://www.youtube.com/channel/UC6u-1b7VOVIC8LuJpnTNhOg","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"عرباوي مهدي"}]},{"type":"text","value":" ** كانت معرفتي بمولدات الواقع الساكنة"}]},{"type":"element","tag":"h2","props":{"id":"ختاما"},"children":[{"type":"text","value":"ختاما"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"اتمنى أن تكون قد زودت زادك المعرفي وأن قد وفقت في ذلك , وكما أني لا أحب المقارنات فأحيطك أن التدوينة هي حديث لتنوير الموضوع وأنها ليست وسيلة لمقارنة , كون كل تقنية مجدية , وكما أن الإختيار يعود على معرفتك المسبقة وهذا مارجح الكفة لدي , فلولا ما كنت مبرمج على Vue.js ما إخترت Gridsome ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وأدعوك للإنضمام ومتابعتنا :"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://web.facebook.com/Ko5Blog/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"مدونة كوخ على فيسبوك"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://twitter.com/Ko5Blog","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"مدونة كوخ على تويتر"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://paypal.me/ALAHCEN?locale.x=en_US","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"أو ودعمنا على بايبال للحصول على دومين خاص شكرا ."}]}]}]}],"toc":{"title":"","searchDepth":5,"depth":5,"links":[{"id":"مقدمة-إلى-مفهوم-المواقع-الساكنة-","depth":2,"text":"مقدمة إلى مفهوم المواقع الساكنة :"},{"id":"المزيد-حول-تقنية-jamstack-","depth":2,"text":"المزيد حول تقنية JAMStack :"},{"id":"على-ماذا-سأحصل-حال-إستخدمت-jamstack-","depth":2,"text":"على ماذا سأحصل حال إستخدمت JAMstack :"},{"id":"gatsbyjs","depth":2,"text":"Gatsby.js"},{"id":"gridsomejs","depth":2,"text":"Gridsome.js"},{"id":"ختاما","depth":2,"text":"ختاما"}]}},"_type":"markdown","_id":"content:blog:gridsome-not-gatsby.md","_source":"content","_file":"blog/gridsome-not-gatsby.md","_extension":"md"},{"_path":"/blog/laravel8","_draft":false,"_partial":false,"_empty":false,"title":"Laravel 8 متاح الآن , تعرف على ميزاته الجديدة","description":"تم إصدار Laravel 8 الآن ويتضمن العديد من الميزات الجديدة بما في ذلك Laravel Jetstream","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"تقديم-"},"children":[{"type":"text","value":"تقديم :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"تم إصدار Laravel 8 الآن ويتضمن العديد من الميزات الجديدة بما في ذلك Laravel Jetstream , models directory, model factory classes, migration squashing, rate-limiting improvements, time testing helpers, ومكونات الشفرة الديناميكية ، والعديد من الميزات الأخرى."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"قبل الانتقال إلى الميزات الجديدة ، نود الإشارة إلى أنه بدءًا من الإصدار 6 ، يتبع Laravel الآن semver وسيصدر إصدارًا رئيسيًا جديدًا كل ستة أشهر. يمكنك أن ترى كيف تعمل "},{"type":"element","tag":"a","props":{"href":"https://laravel-news.com/laravel-releases","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"عملية الإصدار هنا."}]}]},{"type":"element","tag":"h2","props":{"id":"laravel-jetstream"},"children":[{"type":"text","value":"Laravel Jetstream"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"يعمل Laravel Jetstream على تحسين سقالات Laravel UI الموجودة في الإصدارات السابقة. يوفر نقطة انطلاق للمشاريع الجديدة ، بما في ذلك تسجيل الدخول ، والتسجيل ، والتحقق من البريد الإلكتروني ، والمصادقة الثنائية ، وإدارة الجلسة ، ودعم واجهة برمجة التطبيقات عبر Laravel."}]},{"type":"element","tag":"h2","props":{"id":"models-directory-دليل-النماذج"},"children":[{"type":"text","value":"Models Directory (دليل النماذج)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"يتضمن الهيكل العظمي لتطبيق Laravel 8 دليل app / Models. تفترض جميع أوامر المولد أن النماذج موجودة في app/Models ؛ ومع ذلك ، إذا لم يكن هذا الدليل موجودًا ، فسيفترض إطار العمل أن التطبيق يحتفظ بالنماذج داخل app/ folder."}]},{"type":"element","tag":"h2","props":{"id":"model-factory-classes"},"children":[{"type":"text","value":"Model Factory Classes"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"أصبحت مصانع النماذج Eloquent الآن قائمة على الفئة بدءًا من Laravel 8 ، مع دعم محسّن للعلاقات بين المصانع (أي أن لدى المستخدم العديد من المنشورات). أعتقد أنك ستوافق على مدى روعة البنية الجديدة في إنشاء السجلات عبر مصانع النماذج الجديدة والمحسنة:"}]},{"type":"element","tag":"code","props":{"code":" use App\\Models\\User;\n\n User::factory()->count(50)->create();\n\n // using a model state \"suspended\" defined within the factory class\n User::factory()->count(5)->suspended()->create();\n","language":"php"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" use App\\Models\\User;\n\n User::factory()->count(50)->create();\n\n // using a model state \"suspended\" defined within the factory class\n User::factory()->count(5)->suspended()->create();\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"migration-squashing-تهجير-البيانات"},"children":[{"type":"text","value":"Migration Squashing (تهجير البيانات)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"إذا كان التطبيق الخاص بك يحتوي على العديد من ملفات الترحيل ، فيمكنك الآن ضغطها في ملف SQL واحد. سيتم تنفيذ هذا الملف أولاً عند تشغيل عمليات الترحيل ، متبوعةً بأية ملفات ترحيل متبقية ليست جزءًا من ملف المخطط المضغوط. يمكن أن يؤدي تهجير عمليات الترحيل الحالية إلى تقليل تضخم ملف الترحيل وربما تحسين الأداء أثناء إجراء الاختبارات."}]},{"type":"element","tag":"h2","props":{"id":"improved-rate-limiting-التحسين"},"children":[{"type":"text","value":"Improved Rate Limiting (التحسين)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"يوفر Laravel 8 تحسينات على وظائف تحديد المعدل الحالية مع دعم التوافق مع الإصدارات السابقة مع البرامج الوسيطة وتقديم مرونة أكبر بكثير :"}]},{"type":"element","tag":"code","props":{"code":" use Illuminate\\Cache\\RateLimiting\\Limit;\n use Illuminate\\Support\\Facades\\RateLimiter;\n\n RateLimiter::for('global', function (Request $request) {\n return Limit::perMinute(1000);\n });\n","language":"php"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" use Illuminate\\Cache\\RateLimiting\\Limit;\n use Illuminate\\Support\\Facades\\RateLimiter;\n\n RateLimiter::for('global', function (Request $request) {\n return Limit::perMinute(1000);\n });\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"كما ترى ، تأخذ دالة for () نسخة طلب HTTP ، مما يمنحك تحكمًا كاملاً في تقييد الطلبات ديناميكيًا."}]},{"type":"element","tag":"h2","props":{"id":"time-testing-helpers-تحسين-الإختبارات"},"children":[{"type":"text","value":"Time Testing Helpers (تحسين الإختبارات)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"يتمتع مستخدمو Laravel بالتحكم الكامل في تعديل الوقت عبر مكتبة Carbon PHP الممتازة. يقدم Laravel 8 هذه الخطوة إلى الأمام من خلال توفير مساعدين اختبار مناسبين للتحكم في الوقت داخل الاختبارات:"}]},{"type":"element","tag":"code","props":{"code":" // Travel into the future...\n $this->travel(5)->milliseconds();\n $this->travel(5)->seconds();\n $this->travel(5)->minutes();\n $this->travel(5)->hours();\n $this->travel(5)->days();\n $this->travel(5)->weeks();\n $this->travel(5)->years();\n\n // Travel into the past...\n $this->travel(-5)->hours();\n\n // Travel to an exact time...\n $this->travelTo(now()->subHours(6));\n\n // Return back to the present time...\n $this->travelBack();\n","language":"php"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":" // Travel into the future...\n $this->travel(5)->milliseconds();\n $this->travel(5)->seconds();\n $this->travel(5)->minutes();\n $this->travel(5)->hours();\n $this->travel(5)->days();\n $this->travel(5)->weeks();\n $this->travel(5)->years();\n\n // Travel into the past...\n $this->travel(-5)->hours();\n\n // Travel to an exact time...\n $this->travelTo(now()->subHours(6));\n\n // Return back to the present time...\n $this->travelBack();\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"عند استخدام هذه الطرق ، ستتم إعادة ضبط الوقت بين كل اختبار."}]},{"type":"element","tag":"h2","props":{"id":"dynamic-blade-components-مكونات-الشفرة-الديناميكية"},"children":[{"type":"text","value":"Dynamic Blade Components (مكونات الشفرة الديناميكية)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"تحتاج أحيانًا إلى تقديم مكون شفرة ديناميكيًا في وقت التشغيل. يوفر Laravel 8 "},{"type":"element","tag":"x-dynamic-component","props":{},"children":[{"type":"text","value":" :"}]}]},{"type":"element","tag":"code","props":{"code":"\n<x-dynamic-component :component=\"$componentName\" class=\"mt-4\" />\n\n\n","language":"php"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"\n<x-dynamic-component :component=\"$componentName\" class=\"mt-4\" />\n\n\n"}]}]}]},{"type":"element","tag":"h2","props":{"id":"ختاماً"},"children":[{"type":"text","value":"ختاماً"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"تعرف على المزيد حول إطار لارافيل 8 من خلال الموقع الرسمي والمصدر الرئيسي للمقال : "},{"type":"element","tag":"a","props":{"href":"https://laravel.com/docs/8.x/releases","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"Laravel 8"}]}]}]},"img":"img/laravel8.jpg","author":1,"category":"إطار عمل","created":"2020-09-09T00:00:00.000Z","tags":["laravel 8","لارافيل 8"],"hotest":0,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"تقديم-"},"children":[{"type":"text","value":"تقديم :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"تم إصدار Laravel 8 الآن ويتضمن العديد من الميزات الجديدة بما في ذلك Laravel Jetstream , models directory, model factory classes, migration squashing, rate-limiting improvements, time testing helpers, ومكونات الشفرة الديناميكية ، والعديد من الميزات الأخرى."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"قبل الانتقال إلى الميزات الجديدة ، نود الإشارة إلى أنه بدءًا من الإصدار 6 ، يتبع Laravel الآن semver وسيصدر إصدارًا رئيسيًا جديدًا كل ستة أشهر. يمكنك أن ترى كيف تعمل "},{"type":"element","tag":"a","props":{"href":"https://laravel-news.com/laravel-releases","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"عملية الإصدار هنا."}]}]},{"type":"element","tag":"h2","props":{"id":"laravel-jetstream"},"children":[{"type":"text","value":"Laravel Jetstream"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"يعمل Laravel Jetstream على تحسين سقالات Laravel UI الموجودة في الإصدارات السابقة. يوفر نقطة انطلاق للمشاريع الجديدة ، بما في ذلك تسجيل الدخول ، والتسجيل ، والتحقق من البريد الإلكتروني ، والمصادقة الثنائية ، وإدارة الجلسة ، ودعم واجهة برمجة التطبيقات عبر Laravel."}]},{"type":"element","tag":"h2","props":{"id":"models-directory-دليل-النماذج"},"children":[{"type":"text","value":"Models Directory (دليل النماذج)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"يتضمن الهيكل العظمي لتطبيق Laravel 8 دليل app / Models. تفترض جميع أوامر المولد أن النماذج موجودة في app/Models ؛ ومع ذلك ، إذا لم يكن هذا الدليل موجودًا ، فسيفترض إطار العمل أن التطبيق يحتفظ بالنماذج داخل app/ folder."}]},{"type":"element","tag":"h2","props":{"id":"model-factory-classes"},"children":[{"type":"text","value":"Model Factory Classes"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"أصبحت مصانع النماذج Eloquent الآن قائمة على الفئة بدءًا من Laravel 8 ، مع دعم محسّن للعلاقات بين المصانع (أي أن لدى المستخدم العديد من المنشورات). أعتقد أنك ستوافق على مدى روعة البنية الجديدة في إنشاء السجلات عبر مصانع النماذج الجديدة والمحسنة:"}]},{"type":"element","tag":"code","props":{"code":" use App\\Models\\User;\n\n User::factory()->count(50)->create();\n\n // using a model state \"suspended\" defined within the factory class\n User::factory()->count(5)->suspended()->create();\n","language":"php"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"use"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"App\\Models\\User"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"User"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"::"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"factory"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"()"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"count"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"50"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"create"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e2c3b7"},"children":[{"type":"text","value":"// using a model state \"suspended\" defined within the factory class"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"User"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"::"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"factory"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"()"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"count"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"suspended"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"()"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"create"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"();"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"migration-squashing-تهجير-البيانات"},"children":[{"type":"text","value":"Migration Squashing (تهجير البيانات)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"إذا كان التطبيق الخاص بك يحتوي على العديد من ملفات الترحيل ، فيمكنك الآن ضغطها في ملف SQL واحد. سيتم تنفيذ هذا الملف أولاً عند تشغيل عمليات الترحيل ، متبوعةً بأية ملفات ترحيل متبقية ليست جزءًا من ملف المخطط المضغوط. يمكن أن يؤدي تهجير عمليات الترحيل الحالية إلى تقليل تضخم ملف الترحيل وربما تحسين الأداء أثناء إجراء الاختبارات."}]},{"type":"element","tag":"h2","props":{"id":"improved-rate-limiting-التحسين"},"children":[{"type":"text","value":"Improved Rate Limiting (التحسين)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"يوفر Laravel 8 تحسينات على وظائف تحديد المعدل الحالية مع دعم التوافق مع الإصدارات السابقة مع البرامج الوسيطة وتقديم مرونة أكبر بكثير :"}]},{"type":"element","tag":"code","props":{"code":" use Illuminate\\Cache\\RateLimiting\\Limit;\n use Illuminate\\Support\\Facades\\RateLimiter;\n\n RateLimiter::for('global', function (Request $request) {\n return Limit::perMinute(1000);\n });\n","language":"php"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"use"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"Illuminate\\Cache\\RateLimiting\\Limit"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"use"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"Illuminate\\Support\\Facades\\RateLimiter"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"RateLimiter"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"::"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"for"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-de061d"},"children":[{"type":"text","value":"'global'"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":", "}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"function"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" ("}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"Request"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" $request) {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"Limit"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"::"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"perMinute"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"1000"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":");"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" });"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"كما ترى ، تأخذ دالة for () نسخة طلب HTTP ، مما يمنحك تحكمًا كاملاً في تقييد الطلبات ديناميكيًا."}]},{"type":"element","tag":"h2","props":{"id":"time-testing-helpers-تحسين-الإختبارات"},"children":[{"type":"text","value":"Time Testing Helpers (تحسين الإختبارات)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"يتمتع مستخدمو Laravel بالتحكم الكامل في تعديل الوقت عبر مكتبة Carbon PHP الممتازة. يقدم Laravel 8 هذه الخطوة إلى الأمام من خلال توفير مساعدين اختبار مناسبين للتحكم في الوقت داخل الاختبارات:"}]},{"type":"element","tag":"code","props":{"code":" // Travel into the future...\n $this->travel(5)->milliseconds();\n $this->travel(5)->seconds();\n $this->travel(5)->minutes();\n $this->travel(5)->hours();\n $this->travel(5)->days();\n $this->travel(5)->weeks();\n $this->travel(5)->years();\n\n // Travel into the past...\n $this->travel(-5)->hours();\n\n // Travel to an exact time...\n $this->travelTo(now()->subHours(6));\n\n // Return back to the present time...\n $this->travelBack();\n","language":"php"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e2c3b7"},"children":[{"type":"text","value":"// Travel into the future..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"$this"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"travel"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"milliseconds"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"$this"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"travel"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"seconds"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"$this"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"travel"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"minutes"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"$this"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"travel"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"hours"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"$this"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"travel"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"days"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"$this"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"travel"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"weeks"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"$this"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"travel"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"years"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e2c3b7"},"children":[{"type":"text","value":"// Travel into the past..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"$this"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"travel"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"5"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":")"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"hours"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"();"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e2c3b7"},"children":[{"type":"text","value":"// Travel to an exact time..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"$this"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"travelTo"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"now"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"()"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"subHours"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"6"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"));"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-e2c3b7"},"children":[{"type":"text","value":"// Return back to the present time..."}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"$this"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"->"}]},{"type":"element","tag":"span","props":{"class":"ct-80410f"},"children":[{"type":"text","value":"travelBack"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"();"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"عند استخدام هذه الطرق ، ستتم إعادة ضبط الوقت بين كل اختبار."}]},{"type":"element","tag":"h2","props":{"id":"dynamic-blade-components-مكونات-الشفرة-الديناميكية"},"children":[{"type":"text","value":"Dynamic Blade Components (مكونات الشفرة الديناميكية)"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"تحتاج أحيانًا إلى تقديم مكون شفرة ديناميكيًا في وقت التشغيل. يوفر Laravel 8 "},{"type":"element","tag":"x-dynamic-component","props":{},"children":[{"type":"text","value":" :"}]}]},{"type":"element","tag":"code","props":{"code":"\n<x-dynamic-component :component=\"$componentName\" class=\"mt-4\" />\n\n\n","language":"php"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"<"}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"x"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"dynamic"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"-"}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"component"}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" :"}]},{"type":"element","tag":"span","props":{"class":"ct-a9e89f"},"children":[{"type":"text","value":"component"}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"="}]},{"type":"element","tag":"span","props":{"class":"ct-de061d"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":"$componentName"}]},{"type":"element","tag":"span","props":{"class":"ct-de061d"},"children":[{"type":"text","value":"\""}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"class="}]},{"type":"element","tag":"span","props":{"class":"ct-de061d"},"children":[{"type":"text","value":"\"mt-4\""}]},{"type":"element","tag":"span","props":{"class":"ct-b80634"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-ae0b7a"},"children":[{"type":"text","value":"/>"}]}]}]}]}]},{"type":"element","tag":"h2","props":{"id":"ختاماً"},"children":[{"type":"text","value":"ختاماً"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"تعرف على المزيد حول إطار لارافيل 8 من خلال الموقع الرسمي والمصدر الرئيسي للمقال : "},{"type":"element","tag":"a","props":{"href":"https://laravel.com/docs/8.x/releases","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"Laravel 8"}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-de061d{color:#A5D6FF}.ct-e2c3b7{color:#8B949E}.ct-80410f{color:#D2A8FF}.ct-a9e89f{color:#79C0FF}.ct-ae0b7a{color:#FF7B72}.ct-b80634{color:#C9D1D9}.dark .ct-b80634{color:#C9D1D9}.dark .ct-ae0b7a{color:#FF7B72}.dark .ct-a9e89f{color:#79C0FF}.dark .ct-80410f{color:#D2A8FF}.dark .ct-e2c3b7{color:#8B949E}.dark .ct-de061d{color:#A5D6FF}"}]}],"toc":{"title":"","searchDepth":5,"depth":5,"links":[{"id":"تقديم-","depth":2,"text":"تقديم :"},{"id":"laravel-jetstream","depth":2,"text":"Laravel Jetstream"},{"id":"models-directory-دليل-النماذج","depth":2,"text":"Models Directory (دليل النماذج)"},{"id":"model-factory-classes","depth":2,"text":"Model Factory Classes"},{"id":"migration-squashing-تهجير-البيانات","depth":2,"text":"Migration Squashing (تهجير البيانات)"},{"id":"improved-rate-limiting-التحسين","depth":2,"text":"Improved Rate Limiting (التحسين)"},{"id":"time-testing-helpers-تحسين-الإختبارات","depth":2,"text":"Time Testing Helpers (تحسين الإختبارات)"},{"id":"dynamic-blade-components-مكونات-الشفرة-الديناميكية","depth":2,"text":"Dynamic Blade Components (مكونات الشفرة الديناميكية)"},{"id":"ختاماً","depth":2,"text":"ختاماً"}]}},"_type":"markdown","_id":"content:blog:laravel8.md","_source":"content","_file":"blog/laravel8.md","_extension":"md"},{"_path":"/blog/startup-ko5-blog","_draft":false,"_partial":false,"_empty":false,"title":"الإنطلاقة مدونة كوخ","description":"اليوم يوم إفتتاح وإطلاق مدونة كوخ للتدوين الرقمي التقني","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"مدونة-كوخ"},"children":[{"type":"text","value":"مدونة كوخ"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"هي مدونة تقنية إخترت لها من الأسماء إسم كوخ كدلالة على إرتباطها ب المجتمع الخاص بي والأشياء المحيطة بي , وأشاركها معكم داخل كوخي هذا ."}]},{"type":"element","tag":"h2","props":{"id":"إهتمامات-مدونة-كوخ"},"children":[{"type":"text","value":"إهتمامات مدونة كوخ"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"مجالات إهتمام المدونة هي في الغالب مجالات تقنية , كوني مبرمج فمن الأساسي أن تكون مدونة كوخ زاوية لأشارككم فيها إهتماماتي وتجاربي ."}]},{"type":"element","tag":"h2","props":{"id":"لماذا"},"children":[{"type":"text","value":"لماذا؟"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"كما سالف الذكر أن المدونة مجال لمشاركة إهتماماتي , فأنا كأي تقني محب للتقنية , غيور على المحتوى العربي وأحبذ أن يكون ذا صيت وأن يكون بمدى قوة المحتويات الغربية الإنجليزية وغيرها , أن يكون المحتوى نظيف وذو معايير عالية , وهذا إن عاد بشيئ فإنه سيعود على المحتوى نفسه بالنفع وعلى رواده بالإفادة والإستفادة."}]},{"type":"element","tag":"h2","props":{"id":"لماذا-إخترت-منصة-gridsome-"},"children":[{"type":"text","value":"لماذا إخترت منصة Gridsome ?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"إن كنت حقا محقا عن ماقلته سابقا فلزاما علي أن أختار تقنية قوية لتحقيق المراد والوصول للمبتغى , وذلك يتجلى في الآليات المخصصة للغرض فلبناء الموقع لم أختر كلا المنصات المشهورة ولا المنتديات إخترت بناء موقع ثابت ذو تجربة إستخدام رهيبة ,"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"المدونة بنية على تقنية جديدة تسمى ب تقنية بناء المواقع الثابتة بإستخدام كتبة Gridsome الخاصة ب جافاسكريبت ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"على العموم سأخصص مقال خاص للحديث عن مجموع نقاط عاته التقنية ."}]},{"type":"element","tag":"h2","props":{"id":"المشروع-مفتوح-المصدر"},"children":[{"type":"text","value":"المشروع مفتوح المصدر"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"بطبيعة الحال مايؤكد على مدى الإهتمام بالمحتوى العربي , فقد تم تخصيص النشروع ليكون مفتوح المصدر كليا وأنت كذلك يمكنك المساهة معنا ."}]},{"type":"element","tag":"h2","props":{"id":"من-أين-حصلت-على-الفكرة-"},"children":[{"type":"text","value":"من أين حصلت على الفكرة ؟"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"مجموعة من المشاريع المشابهة جعلتني أنظر إلى تخصيص حيز للنهوض بالمحتوى وأكون مساهم بدوري ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وتلك المشاريع في مسمياتها بالدرجة الأولى هي :"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://www.tutomena.com/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"مدونة توتومينا"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://www.aqweeb.com/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"أكوا ويب"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"بالإضافة إلى مجموعة من المشاريع الأخرى وتكون على شكل قنوات يوتيوب وصفحات فلى مواقع التواصل ."}]},{"type":"element","tag":"h2","props":{"id":"من-يقف-خلف-المدونة-كشخص-"},"children":[{"type":"text","value":"من يقف خلف المدونة كشخص ؟"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"كشخص أنشئت المشروع واتمنى المزيد من التوفيق للتوفيق في الوقوف عنده , ** الحيان الحسن ** من المغرب مبرمج ويب شامل ."}]}]},"img":"img/startupk05.jpg","author":1,"category":["مقال"],"created":"2020-07-23T00:00:00.000Z","tags":["مدونة كوخ","المحتوى","مدونة"],"hotest":0,"status":1,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"مدونة-كوخ"},"children":[{"type":"text","value":"مدونة كوخ"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"هي مدونة تقنية إخترت لها من الأسماء إسم كوخ كدلالة على إرتباطها ب المجتمع الخاص بي والأشياء المحيطة بي , وأشاركها معكم داخل كوخي هذا ."}]},{"type":"element","tag":"h2","props":{"id":"إهتمامات-مدونة-كوخ"},"children":[{"type":"text","value":"إهتمامات مدونة كوخ"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"مجالات إهتمام المدونة هي في الغالب مجالات تقنية , كوني مبرمج فمن الأساسي أن تكون مدونة كوخ زاوية لأشارككم فيها إهتماماتي وتجاربي ."}]},{"type":"element","tag":"h2","props":{"id":"لماذا"},"children":[{"type":"text","value":"لماذا؟"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"كما سالف الذكر أن المدونة مجال لمشاركة إهتماماتي , فأنا كأي تقني محب للتقنية , غيور على المحتوى العربي وأحبذ أن يكون ذا صيت وأن يكون بمدى قوة المحتويات الغربية الإنجليزية وغيرها , أن يكون المحتوى نظيف وذو معايير عالية , وهذا إن عاد بشيئ فإنه سيعود على المحتوى نفسه بالنفع وعلى رواده بالإفادة والإستفادة."}]},{"type":"element","tag":"h2","props":{"id":"لماذا-إخترت-منصة-gridsome-"},"children":[{"type":"text","value":"لماذا إخترت منصة Gridsome ?"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"إن كنت حقا محقا عن ماقلته سابقا فلزاما علي أن أختار تقنية قوية لتحقيق المراد والوصول للمبتغى , وذلك يتجلى في الآليات المخصصة للغرض فلبناء الموقع لم أختر كلا المنصات المشهورة ولا المنتديات إخترت بناء موقع ثابت ذو تجربة إستخدام رهيبة ,"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"المدونة بنية على تقنية جديدة تسمى ب تقنية بناء المواقع الثابتة بإستخدام كتبة Gridsome الخاصة ب جافاسكريبت ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"على العموم سأخصص مقال خاص للحديث عن مجموع نقاط عاته التقنية ."}]},{"type":"element","tag":"h2","props":{"id":"المشروع-مفتوح-المصدر"},"children":[{"type":"text","value":"المشروع مفتوح المصدر"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"بطبيعة الحال مايؤكد على مدى الإهتمام بالمحتوى العربي , فقد تم تخصيص النشروع ليكون مفتوح المصدر كليا وأنت كذلك يمكنك المساهة معنا ."}]},{"type":"element","tag":"h2","props":{"id":"من-أين-حصلت-على-الفكرة-"},"children":[{"type":"text","value":"من أين حصلت على الفكرة ؟"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"مجموعة من المشاريع المشابهة جعلتني أنظر إلى تخصيص حيز للنهوض بالمحتوى وأكون مساهم بدوري ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وتلك المشاريع في مسمياتها بالدرجة الأولى هي :"}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://www.tutomena.com/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"مدونة توتومينا"}]}]},{"type":"element","tag":"li","props":{},"children":[{"type":"element","tag":"a","props":{"href":"https://www.aqweeb.com/","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"أكوا ويب"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"بالإضافة إلى مجموعة من المشاريع الأخرى وتكون على شكل قنوات يوتيوب وصفحات فلى مواقع التواصل ."}]},{"type":"element","tag":"h2","props":{"id":"من-يقف-خلف-المدونة-كشخص-"},"children":[{"type":"text","value":"من يقف خلف المدونة كشخص ؟"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"كشخص أنشئت المشروع واتمنى المزيد من التوفيق للتوفيق في الوقوف عنده , ** الحيان الحسن ** من المغرب مبرمج ويب شامل ."}]}],"toc":{"title":"","searchDepth":5,"depth":5,"links":[{"id":"مدونة-كوخ","depth":2,"text":"مدونة كوخ"},{"id":"إهتمامات-مدونة-كوخ","depth":2,"text":"إهتمامات مدونة كوخ"},{"id":"لماذا","depth":2,"text":"لماذا؟"},{"id":"لماذا-إخترت-منصة-gridsome-","depth":2,"text":"لماذا إخترت منصة Gridsome ?"},{"id":"المشروع-مفتوح-المصدر","depth":2,"text":"المشروع مفتوح المصدر"},{"id":"من-أين-حصلت-على-الفكرة-","depth":2,"text":"من أين حصلت على الفكرة ؟"},{"id":"من-يقف-خلف-المدونة-كشخص-","depth":2,"text":"من يقف خلف المدونة كشخص ؟"}]}},"_type":"markdown","_id":"content:blog:startup-ko5-blog.md","_source":"content","_file":"blog/startup-ko5-blog.md","_extension":"md"},{"_path":"/blog/why-pythone-easy","_draft":false,"_partial":false,"_empty":false,"title":"بايثون - 4 أسباب تجعل منها اللغة الأسهل","description":"سنتعرف على اهم نقاط جعلت من لغة بايثون لغة سهلة ومرنة في التعلم","excerpt":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"تقديم-"},"children":[{"type":"text","value":"تقديم :"}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"بايثون هي لغة برمجية حديثة , إستطاعت إستقطاب المبرمجين الجدد والمبتدئين إليها , نظرا حسب قولهم لسهولتها وإمكانياتها البسيطة , إذا فهل حقا هي سهلة لتلك السهولة ؟ ولماذا تعتبر هي الانسب للمستجدين ؟ , للتعرف على مفتاح هاته التساؤلات إليك أريعة أسباب عملية جعلت من بايثون اللغة الأنسب للمبتدئين ."}]}]},{"type":"element","tag":"h2","props":{"id":"اولا-لمحة-تعريفية-عن-لغة-بايثون"},"children":[{"type":"text","value":"اولا لمحة تعريفية عن لغة بايثون"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"تم تطويرها بواسطة المبرمج الهولندي "},{"type":"element","tag":"a","props":{"href":"https://ar.wikipedia.org/wiki/%D8%AC%D8%A7%D9%8A%D8%AF%D9%88_%DA%A4%D8%A7%D9%86_%D8%B1%D9%88%D8%B3%D9%85","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"جيدو فان روسوم"}]},{"type":"text","value":" في سنة 1989، وهي مشتقة من عدة لغات برمجة أخرى مثل Unix shell و C و C++ وهي مجانية ومفتوحة المصدر تحت رخصة GPL، ويقوم عليها الآن عدد من المطورين , وبالنسبة لإستخداماتها فهي كثيرة جداً حيث تستخدم في تطوير البرمجيات البسيطة و تطبيقات الذكاء الاصطناعي و البرامج ذات الواجهات الرسومية وألعاب الفيديو والتطبيقات ثلاثية الأبعاد وتطبيقات الويب وغيرها."}]},{"type":"element","tag":"h2","props":{"id":"أهم-الأسباب-التي-جعلت-منها-لغة-سهلة-التعلم"},"children":[{"type":"text","value":"أهم الأسباب التي جعلت منها لغة سهلة التعلم"}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"** مفتوحة المصدر : **"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"اللغات البرمجية المفتوحة المصدر تقوم على مبدأ مشاركة المعرفة مع الجميع وتعتبر Python مثالًا على اللغات البرمجية الحرة المفتوحة المصدر حيث بإمكانك توزيع نسخ من هذه البرمجيات دون قيود وقراءة كود المصدر و القيام ببعض التغييرات عليها واستخدام أجزاء منها في برمجيات أخرى جديدة."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وهذا من أحد الأسباب الرئيسية التي جعلت بايثون لغة جيدة وجذابة في نفس الوقت للمبرمجين فهذه اللغة تم إنشاؤها وتطويرها ووضع أساسياتها من قبل مجتمع البرمجيات مفتوحة المصدر ويتم إخضاعها للتطور والتحسين بإستمرارية ودورية بواسطة متطوعين يتشاركون نفس الشغف باللغة ."}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"ol","props":{"start":2},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"** تستخدم في بناء مشاريع برمجية كبرى : **"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"منصات كبيرة مثل يوتيوب وإنستجرام وغيرها تم تطويرها بواسطة بايثون، فـ بالرغم من أن لغات مثل HTML وجافا سكريبت تستخدم في إنشاء الهيكل الخارجي للبرمجيات إلا أن بايثون تعد واحدة من أكثر تلك اللغات إستخداما في تطوير ال Back End بفضل أطر توفر لها ذلك كمثال Django."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"بايثون","src":"https://www.researchgate.net/profile/Tharindu_Adhikari/publication/281224224/figure/fig10/AS:669492828979203@1536630937113/Development-Platforms-Java-and-Python-are-the-most-common-languages-used-in-AI-field.ppm"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"كما وأنها تستخدم بكثرة في مجال تحليل البيانات ورغم تنافس لغات أخرى معها في نفس المجال إلا أنها تعد المفضلة لأنها مصممة بشكل أفضل ومفتوحة المصدر ولديها القدرة للوصول لمكتبات مثل NumPy و وSciPy فضلاً عن دعم أكبر للقواميس."}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"ol","props":{"start":3},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"** تشتغل على جميع المنصات دون إستثناء : **"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"هي لغة محمولة بمعنى أنه يمكنك إستخدام شفرتها على جميع المنصات و أن كل ما تكتبه من برمجيات من خلال بايثون يمكن أن يعمل على جميع المنصات مثل لينكس وويندوز وماكينتوش وسولاريس وشارب وبلاي ستيشن وغيرها من المنصات دون إستثناء ودون تخصيص ."}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"ol","props":{"start":4},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"** بسيطة ومفسرة : **"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"لغة بايثونسهلة و بسيطة فقراءة الأكواد المكتوبة بها يكاد يشبه قراءة لغة تواصلية معينة على سبيل المثال حيث يمكن إعتبارها لغة شبه رمزية pseudo-code، فضلاً عن ذلك تتميز بايثون بالسهولة من حيث الكتابة و القراءة ومن حيث التركيب النحوي لها فهي تعتمد على المنطق في تنفيذ التعليمات البرمجية."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"مثال لكود طباعة مرحبا بالعالم بلغة بايثون"}]}]},{"type":"element","tag":"code","props":{"code":"# Your First python Program\n\nprint(\"Hello World!\")\n","language":"python"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"# Your First python Program\n\nprint(\"Hello World!\")\n"}]}]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"مثال لكود طباعة مرحبا بالعالم بلغة سي بلس بلس"}]}]},{"type":"element","tag":"code","props":{"code":"// Your First C++ Program\n\n#include <iostream>\n\nint main() {\n std::cout << \"Hello World!\";\n return 0;\n}\n","language":"cpp"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"text","value":"// Your First C++ Program\n\n#include <iostream>\n\nint main() {\n std::cout << \"Hello World!\";\n return 0;\n}\n"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"مع التطوير المستمر لها وضعت بايثون ثقافة خاصة تتميز بها عن باقي اللغات في طريقة كتابة الكود حيث تعتمد اللغة على معيار PEP8 الذي هو عبارة عن إتفاقية لكتابة التعليمات البرمجية بحيث تضمن سهولة القراءة وسهولة المساهمة."}]},{"type":"element","tag":"h2","props":{"id":"ختاما-"},"children":[{"type":"text","value":"ختاما :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"** ختاما هدية كتاب لتعلم لغة بايثون والتعرف أكثر عليها **\n"},{"type":"element","tag":"a","props":{"href":"https://www.file4.net/f-9UK","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"من هنا"}]}]}]},"img":"img/python.png","author":1,"category":"بايثون","created":"2020-07-24T00:00:00.000Z","tags":["البرمجة","تعلم","بايثون"],"hotest":0,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"تقديم-"},"children":[{"type":"text","value":"تقديم :"}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"بايثون هي لغة برمجية حديثة , إستطاعت إستقطاب المبرمجين الجدد والمبتدئين إليها , نظرا حسب قولهم لسهولتها وإمكانياتها البسيطة , إذا فهل حقا هي سهلة لتلك السهولة ؟ ولماذا تعتبر هي الانسب للمستجدين ؟ , للتعرف على مفتاح هاته التساؤلات إليك أريعة أسباب عملية جعلت من بايثون اللغة الأنسب للمبتدئين ."}]}]},{"type":"element","tag":"h2","props":{"id":"اولا-لمحة-تعريفية-عن-لغة-بايثون"},"children":[{"type":"text","value":"اولا لمحة تعريفية عن لغة بايثون"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"تم تطويرها بواسطة المبرمج الهولندي "},{"type":"element","tag":"a","props":{"href":"https://ar.wikipedia.org/wiki/%D8%AC%D8%A7%D9%8A%D8%AF%D9%88_%DA%A4%D8%A7%D9%86_%D8%B1%D9%88%D8%B3%D9%85","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"جيدو فان روسوم"}]},{"type":"text","value":" في سنة 1989، وهي مشتقة من عدة لغات برمجة أخرى مثل Unix shell و C و C++ وهي مجانية ومفتوحة المصدر تحت رخصة GPL، ويقوم عليها الآن عدد من المطورين , وبالنسبة لإستخداماتها فهي كثيرة جداً حيث تستخدم في تطوير البرمجيات البسيطة و تطبيقات الذكاء الاصطناعي و البرامج ذات الواجهات الرسومية وألعاب الفيديو والتطبيقات ثلاثية الأبعاد وتطبيقات الويب وغيرها."}]},{"type":"element","tag":"h2","props":{"id":"أهم-الأسباب-التي-جعلت-منها-لغة-سهلة-التعلم"},"children":[{"type":"text","value":"أهم الأسباب التي جعلت منها لغة سهلة التعلم"}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"ol","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"** مفتوحة المصدر : **"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"اللغات البرمجية المفتوحة المصدر تقوم على مبدأ مشاركة المعرفة مع الجميع وتعتبر Python مثالًا على اللغات البرمجية الحرة المفتوحة المصدر حيث بإمكانك توزيع نسخ من هذه البرمجيات دون قيود وقراءة كود المصدر و القيام ببعض التغييرات عليها واستخدام أجزاء منها في برمجيات أخرى جديدة."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وهذا من أحد الأسباب الرئيسية التي جعلت بايثون لغة جيدة وجذابة في نفس الوقت للمبرمجين فهذه اللغة تم إنشاؤها وتطويرها ووضع أساسياتها من قبل مجتمع البرمجيات مفتوحة المصدر ويتم إخضاعها للتطور والتحسين بإستمرارية ودورية بواسطة متطوعين يتشاركون نفس الشغف باللغة ."}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"ol","props":{"start":2},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"** تستخدم في بناء مشاريع برمجية كبرى : **"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"منصات كبيرة مثل يوتيوب وإنستجرام وغيرها تم تطويرها بواسطة بايثون، فـ بالرغم من أن لغات مثل HTML وجافا سكريبت تستخدم في إنشاء الهيكل الخارجي للبرمجيات إلا أن بايثون تعد واحدة من أكثر تلك اللغات إستخداما في تطوير ال Back End بفضل أطر توفر لها ذلك كمثال Django."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"element","tag":"img","props":{"alt":"بايثون","src":"https://www.researchgate.net/profile/Tharindu_Adhikari/publication/281224224/figure/fig10/AS:669492828979203@1536630937113/Development-Platforms-Java-and-Python-are-the-most-common-languages-used-in-AI-field.ppm"},"children":[]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"كما وأنها تستخدم بكثرة في مجال تحليل البيانات ورغم تنافس لغات أخرى معها في نفس المجال إلا أنها تعد المفضلة لأنها مصممة بشكل أفضل ومفتوحة المصدر ولديها القدرة للوصول لمكتبات مثل NumPy و وSciPy فضلاً عن دعم أكبر للقواميس."}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"ol","props":{"start":3},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"** تشتغل على جميع المنصات دون إستثناء : **"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"هي لغة محمولة بمعنى أنه يمكنك إستخدام شفرتها على جميع المنصات و أن كل ما تكتبه من برمجيات من خلال بايثون يمكن أن يعمل على جميع المنصات مثل لينكس وويندوز وماكينتوش وسولاريس وشارب وبلاي ستيشن وغيرها من المنصات دون إستثناء ودون تخصيص ."}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"ol","props":{"start":4},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"** بسيطة ومفسرة : **"}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"لغة بايثونسهلة و بسيطة فقراءة الأكواد المكتوبة بها يكاد يشبه قراءة لغة تواصلية معينة على سبيل المثال حيث يمكن إعتبارها لغة شبه رمزية pseudo-code، فضلاً عن ذلك تتميز بايثون بالسهولة من حيث الكتابة و القراءة ومن حيث التركيب النحوي لها فهي تعتمد على المنطق في تنفيذ التعليمات البرمجية."}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"مثال لكود طباعة مرحبا بالعالم بلغة بايثون"}]}]},{"type":"element","tag":"code","props":{"code":"# Your First python Program\n\nprint(\"Hello World!\")\n","language":"python"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2336be"},"children":[{"type":"text","value":"# Your First python Program"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-3261a1"},"children":[{"type":"text","value":"print"}]},{"type":"element","tag":"span","props":{"class":"ct-27b154"},"children":[{"type":"text","value":"("}]},{"type":"element","tag":"span","props":{"class":"ct-147c2e"},"children":[{"type":"text","value":"\"Hello World!\""}]},{"type":"element","tag":"span","props":{"class":"ct-27b154"},"children":[{"type":"text","value":")"}]}]}]}]}]},{"type":"element","tag":"ul","props":{},"children":[{"type":"element","tag":"li","props":{},"children":[{"type":"text","value":"مثال لكود طباعة مرحبا بالعالم بلغة سي بلس بلس"}]}]},{"type":"element","tag":"code","props":{"code":"// Your First C++ Program\n\n#include <iostream>\n\nint main() {\n std::cout << \"Hello World!\";\n return 0;\n}\n","language":"cpp"},"children":[{"type":"element","tag":"pre","props":{},"children":[{"type":"element","tag":"code","props":{"__ignoreMap":""},"children":[{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-2336be"},"children":[{"type":"text","value":"// Your First C++ Program"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8f07d7"},"children":[{"type":"text","value":"#include"}]},{"type":"element","tag":"span","props":{"class":"ct-27b154"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-147c2e"},"children":[{"type":"text","value":"<iostream>"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-8f07d7"},"children":[{"type":"text","value":"int"}]},{"type":"element","tag":"span","props":{"class":"ct-27b154"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-f6e592"},"children":[{"type":"text","value":"main"}]},{"type":"element","tag":"span","props":{"class":"ct-27b154"},"children":[{"type":"text","value":"() {"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-27b154"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-437bc2"},"children":[{"type":"text","value":"std"}]},{"type":"element","tag":"span","props":{"class":"ct-27b154"},"children":[{"type":"text","value":"::cout "}]},{"type":"element","tag":"span","props":{"class":"ct-8f07d7"},"children":[{"type":"text","value":"<<"}]},{"type":"element","tag":"span","props":{"class":"ct-27b154"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-147c2e"},"children":[{"type":"text","value":"\"Hello World!\""}]},{"type":"element","tag":"span","props":{"class":"ct-27b154"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-27b154"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-8f07d7"},"children":[{"type":"text","value":"return"}]},{"type":"element","tag":"span","props":{"class":"ct-27b154"},"children":[{"type":"text","value":" "}]},{"type":"element","tag":"span","props":{"class":"ct-3261a1"},"children":[{"type":"text","value":"0"}]},{"type":"element","tag":"span","props":{"class":"ct-27b154"},"children":[{"type":"text","value":";"}]}]},{"type":"element","tag":"span","props":{"class":"line"},"children":[{"type":"element","tag":"span","props":{"class":"ct-27b154"},"children":[{"type":"text","value":"}"}]}]}]}]}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"مع التطوير المستمر لها وضعت بايثون ثقافة خاصة تتميز بها عن باقي اللغات في طريقة كتابة الكود حيث تعتمد اللغة على معيار PEP8 الذي هو عبارة عن إتفاقية لكتابة التعليمات البرمجية بحيث تضمن سهولة القراءة وسهولة المساهمة."}]},{"type":"element","tag":"h2","props":{"id":"ختاما-"},"children":[{"type":"text","value":"ختاما :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"** ختاما هدية كتاب لتعلم لغة بايثون والتعرف أكثر عليها **\n"},{"type":"element","tag":"a","props":{"href":"https://www.file4.net/f-9UK","rel":["nofollow","noopener","noreferrer"],"target":"_blank"},"children":[{"type":"text","value":"من هنا"}]}]},{"type":"element","tag":"style","children":[{"type":"text","value":".ct-437bc2{color:#FFA657}.ct-f6e592{color:#D2A8FF}.ct-8f07d7{color:#FF7B72}.ct-147c2e{color:#A5D6FF}.ct-27b154{color:#C9D1D9}.ct-3261a1{color:#79C0FF}.ct-2336be{color:#8B949E}.dark .ct-2336be{color:#8B949E}.dark .ct-3261a1{color:#79C0FF}.dark .ct-27b154{color:#C9D1D9}.dark .ct-147c2e{color:#A5D6FF}.dark .ct-8f07d7{color:#FF7B72}.dark .ct-f6e592{color:#D2A8FF}.dark .ct-437bc2{color:#FFA657}"}]}],"toc":{"title":"","searchDepth":5,"depth":5,"links":[{"id":"تقديم-","depth":2,"text":"تقديم :"},{"id":"اولا-لمحة-تعريفية-عن-لغة-بايثون","depth":2,"text":"اولا لمحة تعريفية عن لغة بايثون"},{"id":"أهم-الأسباب-التي-جعلت-منها-لغة-سهلة-التعلم","depth":2,"text":"أهم الأسباب التي جعلت منها لغة سهلة التعلم"},{"id":"ختاما-","depth":2,"text":"ختاما :"}]}},"_type":"markdown","_id":"content:blog:why-pythone-easy.md","_source":"content","_file":"blog/why-pythone-easy.md","_extension":"md"},{"_path":"/blog/whyit-doesnt-matter-which-javascript-framework-you-choose","_draft":false,"_partial":false,"_empty":false,"title":"لماذا لايهم أي Framework جافاسكريبت تختار ؟","description":"","excerpt":"في مسيرتك البرمجية لابد وأن تكون في محط سؤال لماذا إخترت إطار فلان وليس غيره .","img":"img/why-it-doesnt-matter-which-javascript-framework-you-choose.png","author":1,"category":"إطار عمل","created":"2020-08-03T00:00:00.000Z","tags":["جافاسكريبت","react","vuejs","angular"],"hotest":0,"status":1,"body":{"type":"root","children":[{"type":"element","tag":"h2","props":{"id":"تقديم-"},"children":[{"type":"text","value":"تقديم :"}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"خلال مسيرتك البرمجية قد تسأل مرة على الأقل عن لماذا إخترت العمل بإطار معين بدل الآخر كإختيارك مثلا Vue , Angular , React , Svelte ."}]}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وإجابتك غالبا ماتكون أن الإطار سهل في بداية التعلم , أو انه متوافق مع تقنية أستعملها سابقا , وهنا قد يرميك الأخر بالتحيز فقط , أي أنك لم تكن مقتنعا به لولا أنه كان متوافقا مع تلك التقنية السابقة ."}]}]},{"type":"element","tag":"blockquote","props":{},"children":[{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وهذا لايقتصر فقط على إطارات داخل جافاسكريبت بل معمم على جميع بيئات العمل , ولهذا كتبت المقال للحديث أكثر عن موضوع إختيارك لإطار عمل جافاسكريبت او للغة أخرى ."}]}]},{"type":"element","tag":"h2","props":{"id":"لاتتعامل-مع-الإطار-كأنه-دين"},"children":[{"type":"text","value":"لاتتعامل مع الإطار كأنه دين"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"وهذا مايحدث فكل مطور ماإن يعمل على أداة ما يتعامل مع الأمر كما يتعامل مع دينه وإعتقاده, فيرمي الأدوات الأخرى ( إطارات عمل , في العيوب ويشيد بأداته وينسى عيوبها )."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"فدائما هنالك مقارانات ونقص وتفوق :"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"و يبدو الأمر كما لو أننا بحاجة إلى أن نثبت لأنفسنا أننا اتخذنا الخيار الصحيح. في الواقع ، لا يهم. إذا كتبت رمزًا في أي وقت من الأوقات ، فستتمكن من التبديل إلى Vue.js إذا احتجت إلى ذلك. فلماذا يجب أن تصر على استخدام React دائمًا؟"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"إن استخدام إطار واحد ليس خيارًا للحياة!و لن تكون غير قابل للتوظيف إذا اخترت \"الخطأ\". إذا جربت إطار عمل واحد ، فسوف تتعلم دائمًا الأشياء التي يمكنك تطبيقها عند البرمجة باستخدام إطار مختلف وأهم شيء هو مدى قوة معرفتك باللغة الأم"}]},{"type":"element","tag":"h2","props":{"id":"حقيقة-الفريلانس"},"children":[{"type":"text","value":"حقيقة الفريلانس"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"إن كنت تعمل ك فريلانس , في الغالب لن يكون بمقدورك الإختيار , كونك ستكون أنت الشخص الوحيد إذا إفترضنا ذلك الذي يعمل على مشروع ما , وستحتاج للكم الهائل من الادوات للقيام بأمور يحتاجها العميل , هنا أظن أن فكرة تبني إطار عمل واحد ستتبخر ,\nوفي تلك الوضعية ستكون في قمة الإحتياج للمعارف القوية للغة الأم وأهم شيء , ان تكون محترف البحث ** Googler ** ."}]},{"type":"element","tag":"h2","props":{"id":"تمكن-من-معاريف-لغة-البرمجة-الخاصة-بالإطار"},"children":[{"type":"text","value":"تمكن من معاريف لغة البرمجة الخاصة بالإطار"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"أعتقد أن العديد من المطورين يخافون من التحول إلى أدوات مختلفة لأنهم يشعرون بالراحة مع ميزات إطار عملهم السابق ."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"في الوقت الحاضر ، يتم تنفيذ الكثير من الأعمال الأساسية من قبل الأطر أو المكتبات. هذا رائع للكفاءة! ولكن إذا كنت لا تفهم العمليات والمبادئ الأساسية ، فقد يكون من الصعب الالتفاف حول تنفيذ مختلف لها. لذلك سيكون من الصعب عليك أن تفهم كيف يجب استخدام الأطر المختلفة للقيام بنفس المهمة."}]},{"type":"element","tag":"h2","props":{"id":"قم-بصقل-معارفك-الأساسية"},"children":[{"type":"text","value":"قم بصقل معارفك الأساسية"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"إذا كنت محتار ولاتشعر بأريحية عند تعاملك مع اطارات جافا سكريبت المختلفة , عليك بإعادة تحديث معاريفك حول اللغة الأم والتعرف على المميزات الحديثة فيها , هذه النقطة بالضبط كررناها مرارا , لأنها هي الأهم , فلقد رأيت العديد من بدأو للتو في تعلم إطار عمل ما , بدون المفاهيم الأساسية , قد حصلو بالفعل على نتائج سريعة ومذهلة , لكنهم لم يتعمقو في التفاصيل , ** ليس لأنهم أغبياء. لديهم فقط طريقة مختلفة للبرمجة لأن لديهم دائما هذه الأدوات المتاحة! ** لكن في ليسو أكثر مرونة في التعامل مع الأدوات بطرف مختلفة ."}]},{"type":"element","tag":"h2","props":{"id":"هل-تعلمت-أساسيات-جافاسكريبت--لذا-إختر-إطار-عمل-حالا-"},"children":[{"type":"text","value":"هل تعلمت أساسيات جافاسكريبت ؟ لذا إختر إطار عمل حالا !"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"أختار Vue.js لمعظم مشاريعي لأنني أشعر بالراحة معها. أعتقد أن الشفرة نظيفة وسهلة القراءة لأي شخص. إنها مرنة. بشكل عام ، أنا فقط أحب الطريقة التي تتعامل بها مع الأشياء. أيضًا ، إنها مثالية لـ Laravel ، إطار عمل PHP الذي أختاره."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"لكن العديد من المشاريع الأخرى التي هي من تملي الأدوات التي سأشتغل بها , لاأختار فيها Vue.js , كوني مرنا جدا مع إطارات العمل الاخرى . إشتغلت مع العديد من الأدوات ولم اتعرف عليها سابقا لكن كوني متمكن جدا من المفاهيم الأساسية ."}]},{"type":"element","tag":"h2","props":{"id":"لكن-ماذا-عن-الفروقات-والإختلافات-"},"children":[{"type":"text","value":"لكن ماذا عن الفروقات والإختلافات ؟"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"نعم بالطبع هناك اختلافات فنية بين أطر JS. ولكن من يدري - قد لا تكون بعض هذه الاعتبارات صالحة حتى في 6 أشهر!"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"أود أيضًا أن أزعم أنه بالنسبة لمعظم الأشياء التي تفعلها ، فإن الاختناق سيكون رمزك بدلاً من الإطار. خاصة إذا كنت قد بدأت للتو. لذا عليك أن تكون أكثر مرونة ولاتركز على فلسفة واحدة ."}]},{"type":"element","tag":"h2","props":{"id":"إبدأ-بحل-المشاكل-وتصحيحها"},"children":[{"type":"text","value":"إبدأ بحل المشاكل وتصحيحها"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"أعتقد أن أهم شيء هو أن تختار إطارًا بالفعل وتبدأ في تطوير أشياء حقيقية به."}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"إذا قمت بحل مشاكل حقيقية مع إطار العمل ، فستحصل على الكثير من الأفكار حول مزاياها وحدودها. سوف تتعلم كيفية جعل الأشياء تعمل معها. إذا كنت تكره هذا ، جرب شيء آخر! لا تفرط في التفكير في ذلك."}]},{"type":"element","tag":"h2","props":{"id":"ختاما"},"children":[{"type":"text","value":"ختاما"}]},{"type":"element","tag":"p","props":{},"children":[{"type":"text","value":"أهم شيء هو انك تحب ماتقوم به , ومع أي إطار كان لأن الأمر حقا لايهم , المرونة مفتاح النجاح مع كل الإطارات مهما بلغ عددها , لأنهم في الأخير يشتركون في بنية واحدة ولغة واحدة "},{"type":"element","tag":"strong","props":{},"children":[{"type":"text","value":"جافاسكريبت"}]}]}],"toc":{"title":"","searchDepth":5,"depth":5,"links":[{"id":"تقديم-","depth":2,"text":"تقديم :"},{"id":"لاتتعامل-مع-الإطار-كأنه-دين","depth":2,"text":"لاتتعامل مع الإطار كأنه دين"},{"id":"حقيقة-الفريلانس","depth":2,"text":"حقيقة الفريلانس"},{"id":"تمكن-من-معاريف-لغة-البرمجة-الخاصة-بالإطار","depth":2,"text":"تمكن من معاريف لغة البرمجة الخاصة بالإطار"},{"id":"قم-بصقل-معارفك-الأساسية","depth":2,"text":"قم بصقل معارفك الأساسية"},{"id":"هل-تعلمت-أساسيات-جافاسكريبت--لذا-إختر-إطار-عمل-حالا-","depth":2,"text":"هل تعلمت أساسيات جافاسكريبت ؟ لذا إختر إطار عمل حالا !"},{"id":"لكن-ماذا-عن-الفروقات-والإختلافات-","depth":2,"text":"لكن ماذا عن الفروقات والإختلافات ؟"},{"id":"إبدأ-بحل-المشاكل-وتصحيحها","depth":2,"text":"إبدأ بحل المشاكل وتصحيحها"},{"id":"ختاما","depth":2,"text":"ختاما"}]}},"_type":"markdown","_id":"content:blog:whyIt-doesnt-matter-which-javascript-framework-you-choose.md","_source":"content","_file":"blog/whyIt-doesnt-matter-which-javascript-framework-you-choose.md","_extension":"md"}]