Hello our valued visitor, We present you the best web solutions and high quality graphic designs with a lot of features. just login to your account and enjoy ...

<none>

Hello our valued visitor, We present you the best web solutions and high quality graphic designs with a lot of features. just login to your account and enjoy ...

CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.
7 + 11 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.

أخبار تكنلوجيا

رقم الخبر عنوان الخبر التفاصيل
72,485 مدخل إلى كتابة ماكرو Macro في ليبرأوفيس كالك LibreOffice Calc

يوفّر ليبرأوفيس LibreOffice طريقة لكتابة الماكرو Macro الذي تحتاجه لأتمتة المهام المتكررة في تطبيقك المكتبي، إذ يمكنك استخدام لغتي بايثون Python أو بيسك Basic لتطوير هذا الماكرو. سنتعلّم في هذا المقال كيفية كتابة ماكرو في ليبرأوفيس باستخدام ماكرو "Hello World" بلغة بيسك، حيث سننشئ ماكرو يضع السلسلة النصية "Hello World" في الخلية الأولى من برنامج ليبرأوفيس كالك Calc، أي خلية الصف 1 والعمود A وأيضًا سنتطرق إلى موضوع تنظيم الماكرو وكيفية تصديره واستيراده كمكتبة مستقلة.

هذا المقال جزء من سلسلة مقالات حول إنشاء ماكرو في ليبرأوفيس كالك، فهرس السلسلة:

إنشاء الماكرو

افتح برنامج ليبرأوفيس كالك من قائمة ابدأ ثم كافة البرامج ثم اختر ليبرأوفيس LibreOffice ثم ليبرأوفيس كالك LibreOffice Calc في نظام ويندوز أو من تطبيقات Applications ثم اختر Office ثم ليبرأوفيس كالك LibreOffice Calc في نظام لينكس.

انتقل إلى قائمة أدوات Tools ثم ماكرو Macros ثم نظّم وحدات الماكرو Organize Macros ثم LibreOffice Basic، حيث ستفتح نافذة "ماكروهات أساسية LibreOffice basic macros".

أدخِل الاسم الذي تريده في خانة اسم الماكرو وانقر على جديد. استخدمنا الاسم hello_world، ولكن يمكنك استخدام الاسم الذي تريده.

سيفتح محرر الماكرو macro editor بعد النقر على زر "جديد"، وهذا المحرّر هو المكان الذي يجب أن تكتب فيه شيفرتك وتنقّح الأخطاء debugging الموجودة فيها وغير ذلك الكثير، حيث يمكنك أن ترى أن اسم الماكرو أصبح اسمًا لدالة الماكرو المكتوبة بلغة بيسك.

لنكتب الآن شيفرة الماكرو الأول من خلال التصريح عن متغيرين من النوع كائن object كما يلي:

dim document as object dim dispatcher as object

ثم نسند قيمتين للمتغيرين السابقين كما يلي:

document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

يشير ThisComponent إلى المستند الحالي. يكون كل شيء في ليبرأوفيس -مثل الكتابة والتلوين والإدراج- مراقبًا باستخدام متحكم controller، حيث يرسل هذا المتحكم التغييرات إلى إطار المستند، أي منطقة نافذة كالك الرئيسية. لذلك يشير المتغير document إلى منطقة كالك الرئيسية.

يُنشِئ التابع createUnoService نسخةً من خدمة DispatchHelper التي تساعد في إرسال المهام من الماكرو إلى الإطار، حيث يمكن تنفيذ جميع مهام ماكرو في ليبرأوفيس تقريبًا باستخدام المرسل dispatcher.

سنصرّح الآن عن مجموعة من الخاصيات التي تتكوّن من الزوج اسم/قيمة name/value، وبالتالي يحتوي الاسم name على اسم الخاصية وتحتوي القيمة value على قيمة تلك الخاصية.

dim args1(0) as new com.sun.star.beans.PropertyValue dim args2(0) as new com.sun.star.beans.PropertyValue

هدفنا هو وضع النص "Hello World" في الخلية الأولى، حيث يمكن الإشارة إلى الخلية الأولى A1 ثم وضع نص فيها من خلال استخدام الخاصيتين ToPoint و StringName.

args1(0).Name = "ToPoint" args1(0).Value = "$A$1" args2(0).Name = "StringName" args2(0).Value = "Hello World!"

يجب بعد ضبط الخاصيات استدعاء المرسل لإرسالها إلى المستند، لذلك استدعِ الحدث executeDispatch الخاص بالمرسل باستخدام أمرين هما: ‎.uno:GoToCell و ‎.uno:EnterString، حيث يخبر هذان الأمران الإطارَ بما يجب تنفيذه، ويمرّران مصفوفة الخاصيات بأكملها مع القيم. ضع الآن مربع رسالة message box لإعلامك باكتمال التنفيذ كما يلي:

تشغيل الماكرو

يمكن تشغيل الماكرو بالضغط على مفتاح F5 أو بالنقر على زر تشغيل الماكرو Run Macro من شريط الأدوات، ثم يظهر مربع الرسالة بعد التنفيذ. إذا تحققت من جدول بيانات كالك، فيجب أن ترى النص "Hello World!‎" مكتوبًا في الخلية الأولى.

الشيفرة الكاملة REM ***** BASIC ***** sub hello_world dim document as object dim dispatcher as object document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") dim args1(0) as new com.sun.star.beans.PropertyValue dim args2(0) as new com.sun.star.beans.PropertyValue args1(0).Name = "ToPoint" args1(0).Value = "$A$1" dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1()) args2(0).Name = "StringName" args2(0).Value = "Hello World!" dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2()) msgbox "Completed!" end sub تنقيح أخطاء الماكرو باستخدام نقطة التوقف والمراقبة

سنتعلّم الآن تقنية تنقيح أخطاء debugging ماكرو بيسك في ليبرأوفيس باستخدام نقطة التوقف breakpoint والمراقبة watch، حيث بُنيَت هذه التقنية على نظام أبونتو Ubuntu 14.04LTS وبرنامج ليبرأوفيس الذي يستخدم لغة بيسك، وتُطبَّق على جميع لغات البرمجة تقريبًا مع ليبرأوفيس.

تعريف المتغيرات

لنعرّف 3 متغيرات سنستخدمها في مثالنا كما يلي:

dim i, j, cnt

عرّف حلقة for التي ستنفّذ من القيمة 1 إلى 10، ثم زِد متغيرين داخل هذه الحلقة على النحو التالي:

for cnt = 1 to 10 i = i + 1 j = i + 1 next cnt إضافة نقطة توقف Breakpoint

نريد وضع نقطتي توقف للعبارتين for cnt = 1 to 10 و j = i + 1، حيث تُشغَّل نقطة التوقف عند وضعها ضمن برنامجك في وضع تنقيح الأخطاء ويتوقف التنفيذ عند هذه النقطة.

يمكنك وضع نقطة توقف من خلال وضع المؤشر عند العبارة، ثم الضغط على مفتاح F9 أو الضغط على الزر التالي من شريط الأدوات:

سترى بعد ذلك دائرة حمراء بجانب العبارة مما يعني إضافة نقطة توقف كما يلي:

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

إضافة مراقبة Watch

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

ستلاحظ بعد ذلك إضافة المتغير إلى قائمة المراقبة أسفل المحرر.

تنفيذ خطوة تلو الأخرى

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

  1. اضغط على مفتاح F5 مرة أخرى لمتابعة تنفيذ البرنامج، ولكنه سيتوقف مرةً أخرى في نقطة التوقف التالية.
  2. اضغط على مفتاح F8 (تنفيذ خطوة) والذي سينفذ خطوةً تلو الخطوة، ويمكنك أن ترى تغيُّر قيمة المتغير cnt المُراقَبة.

لنضغط على مفتاح F8، حيث يمكنك أن ترى السهم البرتقالي ينتقل إلى العبارة التالية وينتظر. إذا ألقيت نظرة على نافذة المراقبة، فيمكنك رؤية قيمة المتغير cnt هي 1.

ويمكنك بهذه الطريقة تنقيح الأخطاء وإضافة نقطة توقف وإضافة مراقبة لأيّ ماكرو في ليبرأوفيس أو أوبن أوفيس OpenOffice باستخدام محرّره الخاص.

تنظيم الماكرو في ليبرأوفيس

إذا كنت معتادًا على استخدام البرمجة بلغة فيجوال بيسك Visual Basic for Applications -اختصارًا VBA- في مايكروسوفت إكسل Excel، فلا بدّ أنك تعرف أن شيفرات فيجوال بيسك VB الخاصة بالماكرو موجودة في مشروع VB، وإذا أردت تضمين الماكرو ضمن ملف إكسل Excel مثلًا، فيجب أن تحفظه بالتنسيق ‎.xlsm الذي يوضّح احتواء الملف على ماكرو.

البنى الافتراضية لملف الماكرو في ليبرأوفيس

ينشئ ليبرأوفيس افتراضيًا الماكرو ضمن المسار ماكروهاتي My Macros ثم Standard ثم Module1 عند إنشائه لأول مرة، إذ توجد جميع دوال الماكرو الخاصة بك ضمن الوحدة Module1، حيث أنشأنا في مثالنا الدالة my_macro ضمن الوحدة Module1.

يحتفظ ليبرأوفيس بجميع شيفرات الماكرو التي أُنشئت ضمن الوحدة Module1 الافتراضية في المسار الآتي:

‎/home/[user name]/.config/libreoffice/4/user/basic/Standard

يجب أن يوجد ضمن المسار ملف يسمى Module1.xba يحتوي على دوال الماكرو الافتراضية، حيث يجب أن تكون دالة الاختبار my_macro ومحتوياتها داخل هذا الملف.

كيفية إنشاء الماكرو بوصفه جزءا من ملف مكتبي

إذا كتبت سابقًا كثيرًا من وحدات الماكرو والدوال باستخدام بنية الملفات الافتراضية السابقة وحفظت الملف، فلن تُحفَظ وحدات الماكرو مع الملف. إذا وزّعتَ هذا الملف أو أرسلته إلى شخص آخر، فلن يتمكن من رؤية وحدات الماكرو عند فتح الملف، لأن محتويات الماكرو تبقى في القرص الصلب حيث كُتِبت أو طُوِّرت شيفرتها.

إذا أردت توزيع أو إرسال ملف ليبرأوفيس مثل كالك Calc أو إمبرس Impress أو غيرها مع دوال الماكرو، فيجب عليك إنشاء وحدات الماكرو بطريقة مختلفة، إذ يجب إنشاء الماكرو داخل الملف أثناء إنشاء وحدات الماكرو ومربع الحوار الذي تريد توزيعه بوصفه جزءًا من ملف ليبرأوفيس. افتح مربع الحوار من قائمة أدوات Tools ثم ماكرو Macros ثم تنظيم الماكرو Organize Macros ثم بيسك LibreOffice Basic. حدّد اسم الملف من قائمة "الماكرو من Macro From" داخل مربع الحوار، ثم اضغط "جديد New"، حيث سيطلب ليبرأوفيس كتابة اسم الوحدة Module.

يستخدم ليبرأوفيس الوحدة "Module1" افتراضيًا، لذلك اكتب أي اسم تريده واضغط على "موافق" (استخدمنا اسم الوحدةdebugpoint_demo_module).

سيفتح بعد ذلك محرّر الماكرو الذي يحتوي الوحدة الجديدة والماكرو ضمن ملف عملك. يمكنك الآن كتابة العديد من وحدات الماكرو التي تريدها ضمن الوحدة الحالية وحفظ ملف ليبرأوفيس الحالي، ثم ستُحفَظ جميع وحدات الماكرو ومحتوياتها مع الملف ويمكنك بسهولة مشاركة الملف أو توزيعه على المستخدمين.

تُخزَّن وحدات الماكرو Macros ضمن الوحدات Modules في ليبرأوفيس، والوحدات هي جزء من المكتبات Libraries والمكتبات هي جزء من الحاويات Containers كما هو موضح أدناه:

تحميل الوحدة التي يعرفها المستخدم

يفترض ليبرأوفيس أن جميع مربعات الحوار والمتغيرات موجودة في الوحدة "Module1" وفقًا للتنظيم الافتراضي، لكننا أنشأنا وحدة جديدة بالاسم "debugpointdemomodule" التي تبقى مع الملف، حيث يجب تحميل الوحدة قبل البدء في كتابة شيفرات الماكرو. يمكنك تحميل الوحدات التي يعرّفها المستخدم باستخدام التابع التالي:

ThisComponent.BasicLibraries.LoadLibrary("debugpoint_demo_module")

إذا أنشأتَ مربع حوار -"my_dialog" مثلًا- أسفل ملف العمل نفسه، فيمكنك إنشاء كائن الحوار Dialog باستخدام ما يلي:

Dim oDialog1 As Object oDialog1 = CreateUnoDialog(DialogLibraries.Standard.my_dialog) تفعيل الماكرو في ملفات ليبرأوفيس

قد يواجه المستخدم الخطأ الموضح أدناه عند فتح الملف على نظام آخر بعد توزيع ملف ليبرأوفيس أو مشاركته مع الماكرو الموجود فيه، حيث يُعطَّل تنفيذ الماكرو افتراضيًا في ليبرأوفيس لأسباب أمنية.

انتقل إلى قائمة أدوات Tools ثم خيارات Options ثم ليبرأوفيس LibreOffice ثم الأمن Security ثم أمان الماكرو Macro Security، حيث يُضبَط أمان الماكرو على الخيار "عالٍ high"، ولكن يمكنك تغييره إلى الخيار "منخفض low" إذا كنت واثقًا من مصدر الماكرو، ثم يمكنك إعادة محاولة تنفيذ الماكرو.

ترجمة -وبتصرُّف- للمقالات Writing a Macro in LibreOffice Calc – Getting Started و Debugging LibreOffice Macro Basic using Breakpoint and Watch و LibreOffice Macro Organization لصاحبهما Arindam.

اقرأ أيضًا
72,468 لماذا يتخلى الرجل عن المرأة التي أحبها ويرحل بصمت؟ تتفاجأ العديد من النساء بإنهاء الشريك للعلاقة دون سابق إنذار. وتسأل المرأة: لماذا رحل بصمت ودون أن ينطق بشيء. دراسة علمية على مر عد سنوات توضح هذا التصرف.
72,467 تويتر تستحوذ على خدمة المراسلة Quill

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

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

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

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

المصدر:

Quill.Chat

التدوينة تويتر تستحوذ على خدمة المراسلة Quill ظهرت أولاً على عالم التقنية.

72,466 يوتيوب تشير إلى أن معظم النزاعات حول الحقوق تنتهي لصالح رافع الفيديو

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

تقول شركة يوتيوب إن معظم النزاعات حول حقوق البث تنتهي لصالح رافع المقطع وليس المطالب بها، حيث كان نحو 2.2 مليون شخص من رافعي مقاطع الفيديو على المنصة قد فازوا في النزاع حول الحقوق وهو ما يعادل 60% من النزاعات التي تم حلها، حيث كان هناك 1.5 مليون نزاع تقريبًا فاز بها مدعي الحقوق على رافع الفيديو.

وتضيف الشركة بالقول إن 99% من ادعاءات امتلاك الحقوق بين يناير ويونيو من هذا العام، البالغ عددها نحو 722.7 مليون ادعاء، تم حلها عبر تقنيات التعرف الآلية على المحتوى “Content ID” لمنع أي انتهاك للحقوق، فيما كان 0.5 % منها فقط قد تم حلها بعد التنازع حول الحقوق.

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

المصدر:

YouTube

التدوينة يوتيوب تشير إلى أن معظم النزاعات حول الحقوق تنتهي لصالح رافع الفيديو ظهرت أولاً على عالم التقنية.

72,440 أكثر من 200 صحيفة أميركية تقيم دعوى قضائية ضد غوغل وفيسبوك

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

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

وقال دوج رينولدز، الشريك الإداري لشركة HD Media، وهي شركة قابضة تمتلك العديد من صحف فيرجينيا الغربية، بما في ذلك Charleston Gazette-Mail: "لقد تطور الإطار الفكري لهذا التحرك على مدى السنوات الثلاث أو الأربع الماضية". ورفع رينولدز، مع مجموعة من المحامين، أول دعوى قضائية من هذا النوع في الصحف في يناير في ولاية فرجينيا الغربية.

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

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

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

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

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

ورفعت وزارة العدل، إلى جانب العديد من المدعين العامين بالولاية، دعوى قضائية ضد Google لانتهاكها قوانين مكافحة الاحتكار.

وتواجه Facebook دعوى قضائية مماثلة لمكافحة الاحتكار من المدعين العامين بالولاية ولجنة التجارة الفيدرالية.

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

72,439 سامسونج تدمج قسم الهواتف مع الأجهزة الاستهلاكية وتغير هيكليتها الإدارية

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

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

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

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

المصدر:

Samsung

التدوينة سامسونج تدمج قسم الهواتف مع الأجهزة الاستهلاكية وتغير هيكليتها الإدارية ظهرت أولاً على عالم التقنية.

72,438 الطريقة الاشمل MVC Repository pattern -Generic الطريقة الاشمل MVC Repository pattern -Generic
72,437 تجربة المشروع شاشات اضافة البيانات وشاشة عرض البيانات Repository pattern mvc and mvc core تجربة المشروع شاشات اضافة البيانات وشاشة عرض البيانات Repository pattern mvc and mvc core
72,436 الطريقة الرابعة MVC Repository pattern الطريقة الرابعة MVC Repository pattern
72,415 كأس العرب.. خطوة قطر الأولى لمونديال بمعجزات تقنية يقول المراقبون إن ما سوف تقدمه قطر تنظيميا وتجهيزيا في مونديال 2022 يفوق كل التوقعات. وبذلك ترفع قطر السقف المعهود به في التظاهرات الدولية السابقة. ولعلّ أهم ما سوف يقدمه مونديال 2022 المستوى التقني العالي.

الصفحات

أنت هنا