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.
1 + 16 =
Solve this simple math problem and enter the result. E.g. for 1+3, enter 4.

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

رقم الخبر عنوان الخبر التفاصيل
30,687 جوجل تعلن عن مميزات التحديث الجديد لنظام Wear OS لساعات اليد الذكية

هذا المقال تم نشره بواسطة صدى التقنية صدى التقنية
رابط المقال جوجل تعلن عن مميزات التحديث الجديد لنظام Wear OS لساعات اليد الذكية

أعلنت شركة جوجل رسميا عن مميزات التحديث الجديد لنظام Wear OS وير او اس لساعات اليد الذكية والأجهزة القابلة للارتداء، وهو التحديث القادم خلال الربع الأخير من عام 2020، والذي يستند على الإصدار الجديد من أندرويد Android 11، وقالت جوجل أن الأجهزة الذكية القابلة للارتداء تساعد المستخدمين على عيش حياة أكثر صحة، بالإضافة إلى التواصل والحصول على المعلومات الهامة في الوقت المناسب، وأن التحديث الجديد لنظام وير او اس Wear OS يركز على تحسين الأساسيات وتوفير المزيد من المميزات المفيدة لمزيد من الساعات الذكية.

وهذه مميزات تحديث وير او اس Wear OS الجديد لعام 2020: تحسينات على الأداء 
  • التركيز على تحسين الأداء من خلال توفير وصول أسرع للمعلومات وبدء التطبيقات أسرع.
  • تبسيط عملية الاقتران بالهاتف لتسهيل عملية الإعداد. 
  • تحسينات على الواجهة لتوفير عناصر تحكم أكثر سهولة لإدارة أوضاع الساعة والتمرينات المختلفة. 
  • مع التحسينات القادمة لمعالجات ساعات اليد الذكية، قالت جوجل أن المستخدم سيلاحظ تحسنا في سرعة فتح التطبيقات حتى 20 في المئة. 
  • تحسين دعم الإتصال بالإنترنت عبر شبكات الجيل الرابع LTE. 
  • دعم معالج كوالكوم الجديد للأجهزة القابلة للارتداء مثل ساعات اليد الذكية وغيرها Snapdragon Wear 4100 و4100 بلس. 
دعم ميزة التنبيه بغسل اليدين 

وقالت جوجل أن ساعات اليد الذكية تتميز بتوفير الوصول بسهولة إلى المعلومات الهامة في أثناء التنقل، وأن مزايا مثل المؤقت وتتبع عوامل اللياقة البدنية من أكثر مميزات 

Wear OS استخداما، وأن التحديث الجديد يوفر ميزة التنبيه بغسل اليدين، بالإضافة إلى مؤقت لضمان غسل اليدين للفترة التي توصي بها الهيئات الصحية (20 ثانية)، وهي من الاجراءات الهامة لمكافحة تفشي وباء كوفيد-19. 

تجربة أفضل للإطلاع على حالة الطقس 

وقالت جوجل أن مستخدمي ساعات اليد الذكية العاملة بنظام WEAR OS ستحصل في وقت لاحق من هذا العام 2020 على تجربة أفضل للإطلاع على حالة الطقس، بحيث يمكنهم الحصول على معلومات عن الطقس بطريقة أسهل في أثناء التنقل، مع تحليل لحالة الطفس كل ساعة على مدار اليوم لمساعدة المستخدم في التخطيط مسبقا، مع تقديم تنبيهات الطقس الهامة وفقا للموقع الجغرافي.

وقالت جوجل أنها يسعدها توفر المزيد من ساعات اليد الذكية من المزيد من المصنعين، بما في ذلك اوبو (Oppo Watch) وشاومي وSuunto، وهو ما يعني خيارات متنوعة أكثر تناسب الأذواق والاستخدامات المختلفة لكل مستخدم. 

هذا المقال تم نشره بواسطة صدى التقنية صدى التقنية
رابط المقال جوجل تعلن عن مميزات التحديث الجديد لنظام Wear OS لساعات اليد الذكية

30,686 مواصفات iQOO 5 و iQOO 5 Pro والمميزات والسعر

هذا المقال تم نشره بواسطة صدى التقنية صدى التقنية
رابط المقال مواصفات iQOO 5 و iQOO 5 Pro والمميزات والسعر

أعلنت iQOO التابعة لشركة فيفو الصينية رسميا عن هاتفيها الذكيين الجديدين iQOO 5 و iQOO 5 Pro ، وتكتسب الشركة الصينية مؤخرا نموا في الصين والأسواق الأخرى، وذلك بفضل الاعتماد على بعض التقنيات المبتكرة من شركة فيفو الأم، ويأتي iQOO 5 Pro مزودا بتقنية الشحن فائق السرعة بقدرة 120 وات 120W FlashCharge، كما اقترضت الشركة مميزات الكاميرا في Vivo X50 Pro بلس. 

مواصفات ايكو 5 وايكو 5 برو 

وهذه مواصفات ايكو 5 وايكو 5 برو iQOO 5/5 Pro : 

المواصفات iQOO 5iQOO 5 Proالشاشة6.56 بوصة AMOLED بدقة +FHD أو 2376×1080 بكسل بأبعاد 19.8:9 بتردد 120 هرتز، مع دعم HDR10+ووجود مستشعر مدمج لبصمات الأصابع ووجود الكاميرا الأمامية في ثقب داخل الشاشة نفسها6.56 بوصة AMOLED بدقة +FHD أو 2376×1080 بكسل بأبعاد 19.8:9 بتردد 120 هرتز، مع دعم HDR10+ووجود مستشعر مدمج لبصمات الأصابع ووجود الكاميرا الأمامية في ثقب داخل الشاشة نفسهاالمعالج كوالكوم Snapdragon 865كوالكوم Snapdragon 865الرام (ذاكرة الوصول العشوائي)8 أو 12 جيجابايت (LPDDR5)8 أو 12 جيجابايت (LPDDR5)الذاكرة التخزينية128 أو 256 جيجابايت (UFS 3.1)256 جيجابايت (UFS 3.1)البطارية 4500 ميللي أمبير/ساعة4000 ميللي أمبير/ساعةالشحن الشحن السريع بقدرة 55 واتالشحن السريع بقدرة 120 وات الكاميرا الخلفيةثلاثة كاميرات: الرئيسية بقدرة 50 ميجابكسل + كاميرا بزواية واسعة بدقة 13 ميجابكسل + كاميرا للعمق بدقة 13 ميجابكسلثلاثة كاميرات: الرئيسية بقدرة 50 ميجابكسل + كاميرا بزواية واسعة بدقة 13 ميجابكسل + كاميرا periscope بدقة 8ميجابكسل، مع دعم التقريب البصري 5X والتقريب الرقمي 60Xكاميرا السيلفي16 ميجابكسل بفتحة عدسة  f/2.4516 ميجابكسل بفتحة عدسة  f/2.45شبكات الجيل الخامس 5Gيدعم يدعم نظام التشغيل اندرويد 10 مع واجهة iQOO UI 1.5اندرويد 10 مع واجهة iQOO UI 1.5السعريبدأ من حوالي 576 دولار يبدأ من حوالي 720 دولار مميزات ايكو 5/5 برو 

ويوفر هاتف iQOO الجديد ما يتوقعه أي مستخدم من هاتف ذكي رائد، حيث يحمل شاشة AMOLED قياسها 6.56 بوصة بتردد 120 هرتز، مع دعم +HDR10، كما يأتي مزودا بمعالج كوالكوم الرائد Snapdragon 865 مع رام LPDDR5 بسعة 8 أو 12 جيجابايت وسعة تخزينية UFS 3.1 حتى 256 جيجابايت، ويدعم الهاتف شبكات الجيل الخامس، مع دعم واي فاي 6 وبلوتوث 5.1.

البطارية والشحن السريع 

وتعتبر واحدة من أبرز مميزات هاتفي iQOO  الجديدين دعم الشحن فائق السرعة، حيث يأتي ايكو 5 ببطارية قدرتها 4500 ميللي أمبير/ساعة تدعم الشحن السريع بقدرة 55 وات، فيما يحمل iQOO 5 Pro بطارية أصغر قدرتها 4000 ميللي أمبير/ساعة لكن مع الدعم الشحن فائق السرعة بقدرة 120 وات، وهو ما يتيح شحن البطارية من 0 إلى 50 في المئة خلال 5 دقائق فقط، مع إمكانية شحن البطارية كاملة خلال 15 دقيقة فقط، ويدعم الشاحن السريع FlashCharge المرفق مع الهاتف تقنية USB PD بقدرة حتى 65 وات، وهو ما يجعله مناسبا لشحن أجهزة الكمبيوتر المحمولة أيضا. 

الكاميرا في ايكو 5/ايكو 5 برو 

ويأتي هاتفي IQOO الجديدين مزودين بكاميرا سيلفي بقدة 16 ميجابكسل في ثقب داخل الشاشة نفسها، أما عن الكاميرا الخلفية، فإن الكاميرا الرئيسية تعتمد على مستشعر ساكسونج بدقة 50 ميجابكسل، لكنها تفتقد لتقنية تثبيت الصورة التي تحاكي التقنية التي توفرها مثبتات الصور الميكانيكية gimbal، مع دعم ميزة التثبيت الإلكتروني للصورة، ووجود كاميرا بزواية عريضة بدقة 13 ميجابكسل، لكن ايكو 5 يحمل كاميرا للعمق بدقة 13 ميجابكسل، فيما يحمل ايكو5 برو كاميرا بريسكوب بدقة 8 ميجابكسل توفر التكبير البصري 5X والتكبير الرقمي حتى 60X. 

سعر ايكو 5 وايكو 5 برو 

ويتوفر كل من  iQOO 5/5 Pro الآن في الصين بسعر:

  • حوالي 576 دولار أمريكي للإصدار بسعة تخزينية 128 جيجابايت ورام 8 جيجابايت بالنسبة إلى ايكو 5. 
  • حوالي 619 دولار أمريكي للإصدار بسعة تخزينية 128 جيجابايت ورام 12 جيجابايت بالنسبة إلى ايكو 5. 
  • حوالي 662 دولار أمريكي للإصدار بسعة تخزينية 256 جيجابايت ورام 12 جيجابايت بالنسبة إلى ايكو 5. 
  • حوالي 720 دولار أمريكي بالنسبة إلى ايكو 5 برو للإصدار بمساحة تخزينية 256 جيجابايت ورام 8 جيجابايت، وبسعر حوالي 792 دولار أمريكي للإصدار بمساحة تخزينية 256 جيجابايت ورام 12 جيجابايت. 

ويتوفر إصدار خاص من iQOO 5 Pro بالتعاون مع BMW،وهو الإصدار بخلفية من الجلد الفاخر وألوان متدرجة متنوعة. 

هذا المقال تم نشره بواسطة صدى التقنية صدى التقنية
رابط المقال مواصفات iQOO 5 و iQOO 5 Pro والمميزات والسعر

30,685 أجهزة سامسونج جالكسي التي ستحصل على تحدثيات أندرويد لثلاثة سنوات

هذا المقال تم نشره بواسطة صدى التقنية صدى التقنية
رابط المقال أجهزة سامسونج جالكسي التي ستحصل على تحدثيات أندرويد لثلاثة سنوات

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

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

ما هي أجهزة سامسونج جالكسي التي ستحصل على تحديثات أندرويد لثلاثة سنوات؟ 

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

  • سلسلة هواتف جالاكسي اس: جميع إصدارات جالاكسي S20 بما في ذلك S20 وS20 بلس وS20 الترا، بالإضافة إلى هواتف جالاكسي S10 بما في ذلك اس 10 واس 10 بلس واس 10 لايت، إلى جانب جميع أجهزة جالاكسي اس المقبلة. 
  • سلسلة هواتف جالاكسي نوت: جميع إصدارات جالاكسي نوت 20، بالإضافة إلى جميع إصدارات Note10، بما في ذلك نوت 10 لايت، إلى جانب جميع هواتف جالاكسي نوت المقبلة. 
  • هواتف جالاكسي Galaxy القابلة للطي: جالاكسي فولد وجالاكسي فولد2 وجالاكسي زد فليب وجميع أجهزة جالاكسي Z المقبلة. 
  • سلسلة جالاكسي A متوسطة التكلفة: جالاكسي A71 5G وA51 5G وA90 5G ومجموعة مختارة من هواتف Galaxy A المقبلة.
  • سلسلة التابلت جالاكسي تاب اس: جالاكسي تاب S7 وS7 بلس وتاب S6 وتاب اس 6 لايت، بالإضافة لأجهزة التابلت المقبلة من سلسلة جالاكسي تاب اس. 

ووضحت سامسونج طريقة الحصول على تحديثات أندرويد لثلاثة أجيال مقبلة، حيث قالت أن سلسلة هواتف Galaxy S20 التي أعلنت عنها في فبراير 2020 بنظام التشغيل أندرويد 10، ستحصل على ثلاثة ترقيات لنظام التشغيل تشمل  Android 11 الذي أكدت وصوله رسميا في وقت لاحق من هذا العام، ثم سيحصل خلال السنوات المقبلة على كل من أندرويد 12 وأندرويد 13.

هذا المقال تم نشره بواسطة صدى التقنية صدى التقنية
رابط المقال أجهزة سامسونج جالكسي التي ستحصل على تحدثيات أندرويد لثلاثة سنوات

30,684 عمرو دياب بطل مسلسل درامي جديد من إنتاج نتفليكس

هذا المقال تم نشره بواسطة صدى التقنية صدى التقنية
رابط المقال عمرو دياب بطل مسلسل درامي جديد من إنتاج نتفليكس

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

وقالت Netflix أن تعاونها مع عمرو دياب الذي وصفته بالمطرب العالمي يأتي بعد غياب 27 عاما عن الدراما، حيث لعب دور “أدهم” في فيلم ضحك ولعب وجد وحب مع الفنان العالمي الراحل عمر الشريف، وأضافت الشركة أن المطرب المصري يعتبر الفنان الأكثر مبيعا في الشرق الأوسط، كما أنه حائز على 7 جوائز “ورلد ميوزك أورد” و ٦ جوائز “أفريكان ميوزيك أورد”. 

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

لم تكشف نتفليكس بعد أي تفاصيل أخرى عن العمل الدرامي الجديد بطولة عمرو دياب

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

صورة الممثل أحمد أمين من مسلسل “ما وراء الطبيعة”

ولم تكشف نتفليكس بعد أي تفاصيل أخرى عن العمل الدرامي الجديد بطولة عمرو دياب، سواء موعد العرض أو المؤلف أو المخرج أو الممثلين الآخرين المشاركين في العمل الفني الجديد.

ومن المقرر أن تعرض Netflix مسلسل أبلة فاهيتا المصري من إنتاجها في وقت لاحق من عام 2020، وكانت الشركة الأمريكية قد نشرت في وقت سابق من شهر أغسطس الحالي 2020 أول الصور من مسلسل  “ما وراء الطبيعة” المستوحى من سلسلة روايات الخيال العلمي الأكثر مبيعا في الوطن العربي للكاتب الراحل أحمد خالد توفيق، من بطولة  أحمد أمين ورزان جمّال وآية سماحة، والذي تخطط لعرضه في نوفمبر المقبل 2020، وبذلك تصبح المسلسلات المصرية التي أعلنت نتفلكس عن إنتاجها ثلاثة مسلسلات. 

هذا المقال تم نشره بواسطة صدى التقنية صدى التقنية
رابط المقال عمرو دياب بطل مسلسل درامي جديد من إنتاج نتفليكس

30,683 ما هو الفرق بين تصنيفات مقاومة الماء والغبار في الهواتف والأجهزة الذكية ؟

هذا المقال تم نشره بواسطة صدى التقنية صدى التقنية
رابط المقال ما هو الفرق بين تصنيفات مقاومة الماء والغبار في الهواتف والأجهزة الذكية ؟

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

 الفرق بين تصنيفات مقاومة الماء في الهواتف والأجهزة الذكية

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

التصنيف/التقييم التعريف أنشطة الاستخدام المناسبةIPX8مقاومة التعرض للمياه حتى عمق 1.5 مترا من الماء لمدة تصل إلى 30 دقيقة في أثناء وجود رذاذ الماء أو المطر أو تساقط الثلج أو الاستحمامIPX7مقاومة التعرض العرضي للمياه حتى عمق واحد متر لمدة تصل إلى 30 دقيقةفي أثناء وجود رذاذ الماء أو المطر أو تساقط الثلج أو الاستحمامIPX6دعم الحماية من نفاثات المياه القوية، مقاومة سقوط الماء من جميع الزوايا من خلال فوهة بمقاس 12.5 مم بمعدل تدفق 100 لتر لكل دقيقة عند ضغط 100 كيلونيوتن/المتر المربع لمدة 3 دقائق من مسافة 3 أمتارمقاومة الرذاذ الكثيف والمطر القوي والاستخدام في ظروف البحر القاسيةIP68 وهو المعيار أو التقييم المستخدم في معظم الهواتف الذكية الرائدة، مثل جالاكسي نوت 20 وايفون 11 برو وغيرها، حيث يشير رقم 8 لمقاومة الماء، فيما يشير رقم 6 إلى الحماية الكاملة ضد الغبار، أي محكم الغلق ضد دخول الغبار. مقاومة رذاذ الماء والمطر وتساقط الثلح والاستحمام والحماية الكاملة ضد الغبارIP67محكم ضد دخول الغبار ومحمي من الغمر في الماء لمدة 30 دقيقة في عمق حتى 1 متر من الماء1 ATMمقاومة ضغوط تعادل عمق 10 أمتار من الماءمقاومة رذاذ الماء والمطر وتساقط الثلج أو الاستحمام3 ATMمقاومة ضغوط تقاوم عمق 30 مترا من الماء مقاومة الرذاذ والمطر والثلوج والاستحمام والقفز في الماء5 ATM, Swimيتحمل ضغوطا تعادل عمق 50 مترا (مثل ساعة سامسونج جالاكسي ووتش 3)الرذاذ والمطر وتشاقط الثلج والاستحمام  والسباحة  والغوص في الماء والغطس10 ATMمقاومة ضغوطا تعادل عمق 100 مترا من الماءالرذاذ  والمطر وتساقط الثلوج  والاستحمام والسباحة والغوص في الماء والغطس والرياضات المائية عالية السرعة

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

ما هو تصنيف الحماية IP ؟

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

ماذا تعنى الأرقام في تصنيف مقاومة الماء والغبار IP ؟

يشير الرقم الأول إلى مقاومة الجهاز للغبار، فيما يشير الرقم الآخر إلى مدى مقاومة الجهاز للماء والغمر والرطوبة.

هذا المقال تم نشره بواسطة صدى التقنية صدى التقنية
رابط المقال ما هو الفرق بين تصنيفات مقاومة الماء والغبار في الهواتف والأجهزة الذكية ؟

30,682 جوجل تستخدم هواتف أندرويد كشبكة للكشف عن الزلازل والتنبيه المبكر

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

قالت شركة جوجل أنها بدأت هذا الشهر نظاما جديدا للكشف عن الزلازل والتنبيه المبكر بحدوثها، وذلك اعتمادا على هواتف أندرويد Android، بحيث تعمل هواتف أندرويد كجزء من نظام التنبيه بحدوث الزلازل، وهو ما يجعل ملايين الهواتف بنظام أندرويد تعمل كأكبر شبكة للكشف عن الزلازل في العالم. 

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

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

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

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

30,681 هاتف RedMagic 5S قادم إلى الإمارات والسعودية وهذه فرصة للحصول عليه مجانا

هذا المقال تم نشره بواسطة صدى التقنية صدى التقنية
رابط المقال هاتف RedMagic 5S قادم إلى الإمارات والسعودية وهذه فرصة للحصول عليه مجانا

كشفت  شركة ZTE كشفت مؤخرا عن الهاتف الذكي الجديد RedMagic 5S والذي يركز على عشاق الألعاب، وركزت على جعله من أفضل الخيارات المتاحة لهم في السوق بالوقت الراهن، ومن المنتظر أن تطرح الشركة الهاتف أوائل الشهر القادم بكل من السعودية والإمارات على أن تعمل على توفيره في بقية أسواق المنطقة.

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

هاتف ألعاب لا يعاني من ارتفاع الحرارة:
  • يتضمن RedMagic 5S أنبوب تبريد سائل على شكل حرف L ومواد حرارية نانو من الدرجة الجوية ومستشعرات درجة حرارة ذكية وزيادة التهوية بنسبة 4.3٪ للمروحة التوربينية وأول استخدام للفضة في العالم نظرًا لطبيعة الموصلية الحرارية العالية، للحصول على أفضل نظام تبريد في هاتف حتى الان.
  • لنقل هذه التحسينات إلى المستوى التالي، تستخدم RedMagic 5S أيضًا ملحقًا جديدًا، هو Ice Dock. 
  • تم تصميم Ice Dock خصيصًا لـ RedMagic 5S، مما يضمن عدم ارتفاع درجة حرارة الهاتف، وأنه يمكنك مواصلة لعبتك بأقصى أداء طوال اليوم.
مواصفات هاتف RedMagic 5S:
  • يتمتع الجهاز بشاشة Essport AMOLED مقاس 6.65 بوصة سلسة للغاية، وتوفر صورًا واضحة ونقية بشكل جميل طوال الوقت، سواء كانت تلعب لعبة فيديو بسرعة 144 إطارًا في الثانية أو تشاهد مقاطع فيديو عالي الجودة أو تتصفح الإنترنت فقط، ولديه ميزة Touch Choreographer لضبط معدل الإطار تلقائيًا وفقًا لذلك حتى تكون الصور سلسة دائمًا.
  • كما أنه مزود بذاكرة وصول عشوائي تصل إلى 16 جيجابايت وذاكرة بسعة 256 جيجابايت، تم تجهيز ReadMagic 5S بمعالج Qualcomm Snapdragon 865 القوي مع مجموعة شرائح الجيل الخامس، بحيث يكون تشغيل أي تطبيق أو تشغيل أي لعبة بأقصى حد سهل للغاية. 
  • مع إمكانات 5G المدمجة، سيكون للمستخدمين دائمًا أسرع اتصال متاح أيضًا، يستخدم RedMagic 5S أيضًا أحدث تقنيات الذاكرة مع USF 3.1 و LPDDR5. 
  • مع أحدث التطورات الموجودة بشكل خاص في UFS 3.1، أصبح تحميل البرامج وعرض المرئيات سريعًا بشكل لا يصدق.
  • يستخدم RedMagic 5S أيضًا أحدث تقنيات الذاكرة مع USF 3.1 وLPDDR5، وهو ما يساعد على تسريع تحميل البرامج وعرض المرئيات بشكل أفضل.
  • يتميز الجهاز أيضا بكاميرا ثلاثية بسعة 64 ميجابكسل من سوني وهو نظام كاميرا ثلاثية مرن للمساعدة في التقاط اللحظات الجميلة في الحياة.
  • كما أنه مزود ببطارية بسعة 4500 مللي أمبير في الساعة والتي توفر اللعب لساعات متواصلة وإعادة الشحن بسرعة باستخدام الشاحن السريع 18 واط المرفق، وتتوفر الترقية إلى شاحن سريع بقوة 55 واط في مناطق محددة.
هاتف RedMagic 5S مصمم للألعاب بالدرجة الأولى:
  • يأتي الجهاز بميزة مشغلات الكتف 320 هرتز أو ما يسمى Shoulder Triggers هي ميزة تساعد على تحويل الهاتف إلى جهاز ألعاب مخصص. 
  • تعمل المشغلات المدمجة بسرعة 320 هرتز وهي أسرع وأكثر دقة وهي نعمة كبيرة لأي لاعب، ومن خلال ميزة Game Space في RedMagic 5S، يمكن تخصيصها بالكامل لأي وظيفة تحتاجها في ألعابك.
  • تحتوي مساحة الألعاب على العديد من الميزات المتقدمة لتقديم أفضل تجربة لعب، تسمح بالتخصيص الكامل للعبة والهاتف لضمان تحقيق الأداء الأمثل. 
  • في Game Space يقوم اللاعبون أيضًا بتحديد عناصر التحكم المختلفة المتوفرة لديهم، مثل المشغلات المدمجة أو الأزرار الإضافية التي توفرها منصات ألعاب RedMagic. 
  • تعد Game Space أيضًا موطنًا للعديد من ميزات تحسين جودة الحياة مثل تراكب الدردشة على واتساب، وتصغير النوافذ وتسجيل الألعاب وحظر الإشعارات والمزيد من المميزات المتقدمة.
فرصة الفوز بهاتف RedMagic 5S:

تم إطلاق نسخة Sonic Silver في الصين بسعة 128 جيجا بايت و 8 جيجابايت ذاكرة الوصول بسعر 3799 يوان، نسخة Pulse بسعة 256 جيجا بايت و 12 جيجابايت ذاكرة الوصول بسعر 4399 يوان، نسخة Pulse بسعة 256 جيجا بايت و 16 جيجابايت ذاكرة الوصول بسعر 4999 يوان، أما جهاز Ice Dock فيتوفر بسعر 179 يوان.

إذا كنت ترغب في الحصول على هذا الجهاز مجانا فهناك فرصة للفوز بنسخة من هذا الجهاز ستستمر حتى 28 أغسطس / آب، للمشاركة في حدث RedMagic: 5th Space المستمر حتى 28 أغسطس، يمكنك الولوج إلى هذا الرابط: https://bit.ly/RedMagic5thSpace

هذا المقال تم نشره بواسطة صدى التقنية صدى التقنية
رابط المقال هاتف RedMagic 5S قادم إلى الإمارات والسعودية وهذه فرصة للحصول عليه مجانا

30,680 تيك توك تنجو من الحظر الأمريكي بعد موافقة الحكومة على صفقة أوراكل

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

ستقدم أوراكل خدمات التخزين السحابي وحفظ البيانات لشركة تيك توك العالمية أو TikTok Global وستتكفل والمارت بحلول التسويق والأنظمة والمدفوعات.

ستتملك أوراكل ووالمارت نحو 20% من قيمة الشركة الجديدة التي ستكون في غالبيتها مملوكة لمستثمرين أمريكيين دون نسبة دقيقة معلنة.

وستتبع هيكلية مجلس إدارة الشركة التقسيمات الأخرى، بوجود 5 أعضاء منهم 4 أمريكيين لما يتناسب مع حجم الأسهم الكاملة بالشركة.

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

وبموجب القرار الأمريكي والصفقة التي تم ابرامها مع الشركة الصينية، فإن TikTok Global ستعمل وفقًا لقوانين الخصوصية وحماية المستهلك الأمريكية، كما سيتم نقل بيانات أكثر من 100 مليون مستخدم للتطبيق إلى الولايات المتحدة لتكون محفوظة على خوادم أوراكل والتي تُعد الأكثر أمانًا على حد تعبير الشركة.

ستوفر شركة TikTok Global بهذه الصفقة أكثر من 25 ألف وظيفة بالولايات المتحدة، وستساهم بأكثر من 5 مليارات دولار كضرائب.

من جانبها قالت تيك توك أن نقل بيانات المستخدمين للولايات المتحدة لا يتضمن نقل أي تقنيات أو خوارزميات ذكاء اصطناعي.

المصدر:

Oracle

 

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

30,661 الديناميكية Dynamicity في dot NET

التجميعات (Assemblies)

تُصرَّف (compile) الأصناف التي تُعرِّفها، مَصحُوبة بتوابعها وخواصها وملفات البايتكود (bytecode) الخاصة بها، وتُحزَّم بداخل تجميعة (Assembly) تكون في صورة ملف يتضمن شيفرة مُصرَّفة جزئيًا بامتداد ‎.dll او ‎.exe. هذه التجميعات (Assemblies) هي المُكوِّن الأساسي لأي برنامج يتم تشغيله من خلال بيئة التنفيذ المشتركة (CLR).

تُعدّ التجميعات ذاتية التَوْثيق، فهي لا تَحتوِي على اﻷنواع وتوابعها وملفات اللغة الوسيطة (IL code) الخاصة بها فقط، بل أيضًا تَضُمّ البيانات الوَصفيّة (metadata) الضرورية للفَحْص والاستهلاك خلال زمني التَصرِّيف (compile time) والتشغيل (runtime).

تَملُك كل تجميعة (Assembly) اسم يَصِف هويتها المتفردة توصيفًا كاملًا:

// Will print: "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"

تُعدّ أسماء التجميعات التي تحتوي على PublicKeyToken أسماء صارمة (strong).

لِمَنح تجميعة اسمًا صارمًا (strong-naming)، لابّد أن يكون لديك زوجًا من المفاتيح، أحدهما عام (public key) والآخر سري (private key). يُوزَّع المفتاح العام مع التجميعة أما المفتاح السري فيُستخدَم لانشاء بصمة (signature) تُضاف لبيان التجميعة (Assembly manifest)، والذي يحتوي على أسماء جميع ملفات التجميعة وقيمها المقطّعة (hashes)، كما تُصبِح قيمة PublicKeyToken جزءًا من اسمها.

التجميعات التي تَملُك نفس الاسم الصارم هي بالضرورة مُتطابقة، ومِنْ ثَمَّ يُمكِن الاعتماد على ذلك لتَجنُب تضارب أسماء التجميعات (assembly conflicts) وكذلك للإصدارة (versioning).

تنشئة تجميعة (assembly) ديناميكيًا

يُوفِّر إطار عمل ‎.NET عددًا من الأصناف والتوابع بفضاء الاسم System.Reflection.Emit، والتي يُمكِن اِستخدَامِها لإنشاء تجميعة (assembly) بشكل ديناميكي. عامةً، تَضمّ أي تجميعة (assembly) وَحدة (module) واحدة أو أكثر، كلًا منها قد يتَضمَن صنف واحد أو أكثر.

مثلًا، يَتوفَّر التابع ModuleBuilder.DefineType الذي يُمكِن اِستخدَامه لإضافة نوع جديد، ويُعيد قيمة من النوع TypeBuilder. يُوفِّر هذا النوع بدوره العديد من التوابع لإضافة أعضاء (members) بالنوع المُنشَئ. فمثلًا، يُستخدَم التابع TypeBuilder.DefineField لإضافة حَقْل، بينما يُستخدَم التابع TypeBuilder.DefineProperty لإضافة خاصية. يَتوفَّر أيضًا التابعين TypeBuilder.DefineMethod و TypeBuilder.DefineConstructor لإضافة التوابع وبواني الكائن على الترتيب.

في المثال التالي، نَستعرِض طريقة تَنشئة تجميعة تَضُمّ وَحدة (module) وَاحدة تَشتمِل على تَعرِيف لنوع واحد يَحمِل الاسم MyDynamicType. يتكون هذا النوع من:

  • حَقْل وحيد يُسمَى m_number من النوع العددي int.
  • خاصية مُناظِرة لهذا الحقل تَحمِل الاسم Number لها ضَابِط (setter) وجَالِب (getter).
  • بانيين للكائن (constructor) أحدهما بدون مُعامِلات والآخر يَستقبِل مُعامِل وحيد لتهيئة قيمة الحَقْل المبدئية.
  • التابع MyMethod والذي يَستقبِل مُعامِل من النوع العددي int، ويُعيد حاصل ضرب قيمة المُعامِل في قيمة الحَقْل m_number.

وبالتالي، يَكُون النوع المُراد إنشائه كالتالي:

public class MyDynamicType { private int m_number; public MyDynamicType() : this(42) {} public MyDynamicType(int initNumber) { m_number = initNumber; } public int Number { get { return m_number; } set { m_number = value; } } public int MyMethod(int multiplier) { return m_number * multiplier; } }

سنحتاج أولًا لاستدعاء التابعين DefineDynamicAssembly و DefineDynamicModule لتنشئة كائنين من النوع AssemblyBuilder و ModuleBuilder على الترتيب، يُمثل هذين التابعين كُلًا من التجميعة (assembly) والوَحدة (module) المُراد إنشائها، كالتالي:

AssemblyName aName = new AssemblyName("DynamicAssemblyExample"); AssemblyBuilder ab = AppDomain.CurrentDomain.DefineDynamicAssembly( aName, AssemblyBuilderAccess.RunAndSave ); // عادةً ما يكون اسم الوحدة هو نفسه اسم ملف التجميع عند تنشئة ملف تجميع من وحدة واحدة ModuleBuilder mb = ab.DefineDynamicModule(aName.Name, aName.Name + ".dll");

للإعلان عن النوع MyDynamicType داخل الوَحدة المُنشَأة، نَستخدِم الشيفرة التالية:

TypeBuilder tb = mb.DefineType("MyDynamicType", TypeAttributes.Public);

لإضافة الحَقْل m_number بالنوع الجديد، نَستخدِم الشيفرة التالية:

FieldBuilder fbNumber = tb.DefineField( "m_number", typeof(int), FieldAttributes.Private);

لإضافة الخاصية Number المُناظِرة للحَقْل، نَستخدِم الشيفرة التالية:

PropertyBuilder pbNumber = tb.DefineProperty( "Number", // اسم الخاصية PropertyAttributes.None, typeof(int), // نوع الخاصية new Type[0]);

لإضافة ضَابِط (setter) للخاصية المُنشَئة للتو، نَستخدِم الشيفرة التالية:

MethodBuilder mbSetNumber = tb.DefineMethod( "set_Number", // لعدم السماح باستدعاء الضابط لأنه تابع من نوع خاص MethodAttributes.PrivateScope | MethodAttributes.HideBySig | MethodAttributes.Public | MethodAttributes.SpecialName, typeof(void), // لا يُعيد الضابط قيمة // يستقبل الضابط قيمة من النوع العددي new[] { typeof(int) }); // ‫سنستخدم مولد الشيفرة الوسيطة IL generator‎ للحصول على متن التابع il = mbSetNumber.GetILGenerator(); // ‫لابد من تحميل this‎ لأنه المُعامِل الأول لجميع التوابع il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Ldarg_1); // حمل المعامل الثاني الذي يمثل القيمة المراد إسنادها للحقل il.Emit(OpCodes.Stfld, fbNumber); // خزن القيمة الجديدة المحملة للتو بالحقل il.Emit(OpCodes.Ret); // عُد // وأخيرًا، اربط التابع بضابط الخاصية pbNumber.SetSetMethod(mbSetNumber);

عادةً ما يَكُون اسم الضَابِط هو set_Property.

بالمثل، لإضافة جَالِب (getter) لنفس الخاصية، نَستخدِم الشيفرة التالية:

MethodBuilder mbGetNumber = tb.DefineMethod( "get_Number", MethodAttributes.PrivateScope | MethodAttributes.HideBySig | MethodAttributes.Public | MethodAttributes.SpecialName, typeof(int), new Type[0]); il = mbGetNumber.GetILGenerator(); il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Ldfld, fbNumber); // حمل قيمة الحقل il.Emit(OpCodes.Ret); // أعد القيمة المحملة // وأخيرًا، اربط التابع بجالب الخاصية pbNumber.SetGetMethod(mbGetNumber);

لإضافة بواني الكائن بالنوع الجديد، نَضيِف الشيفرة التالية:

ConstructorBuilder intConstructor = tb.DefineConstructor( MethodAttributes.Public, CallingConventions.Standard | CallingConventions.HasThis, new[] { typeof(int) }); il = intConstructor.GetILGenerator(); // ‫حمل this‎ il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Call, typeof(object).GetConstructor(new Type[0])); // اِستدعي باني الأب // ‫حمل this‎ il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Ldarg_1); // حمل قيمة المعامل الثاني الذي يمثل القيمة الممررة لباني الكائن il.Emit(OpCodes.Stfld, fbNumber); // خزن القيمة المحملة بالحقل il.Emit(OpCodes.Ret); var parameterlessConstructor = tb.DefineConstructor( MethodAttributes.Public, CallingConventions.Standard | CallingConventions.HasThis, new Type[0]); il = parameterlessConstructor.GetILGenerator(); il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Ldc_I4_S, (byte)42); // حمل القيمة 42 // ‫استدعي this(42)‎ il.Emit(OpCodes.Call, intConstructor); il.Emit(OpCodes.Ret);

لاحِظ أنه لابُدّ للبواني من استدعاء باني الصنف الأساسي أو بَانِي آخر بنفس الصنف.

لإضافة التابع MyMethod، نَستخدِم الشيفرة التالية:

MethodBuilder mbMyMethod = tb.DefineMethod( "MyMethod", MethodAttributes.Public, typeof(int), new[] { typeof(int) }); ILGenerator il = mbMyMethod.GetILGenerator(); il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Ldfld, fbNumber); // حمل قيمة الحقل il.Emit(OpCodes.Ldarg_1); // حمل قيمة المعامل الممرر il.Emit(OpCodes.Mul); // احسب حاصل ضرب قيمة الحقل بقيمة المعامل il.Emit(OpCodes.Ret); // عُد

وأخيرًا نقوم بالتَنشئِة الفِعلّية للنوع الجديد عن طريق التابع CreateType:

Type ourType = tb.CreateType();

الشيفرة بالكامل:

using System; using System.Reflection; using System.Reflection.Emit; class DemoAssemblyBuilder { public static void Main() { AssemblyName aName = new AssemblyName("DynamicAssemblyExample"); AssemblyBuilder ab = AppDomain.CurrentDomain.DefineDynamicAssembly( aName, AssemblyBuilderAccess.RunAndSave ); ModuleBuilder mb = ab.DefineDynamicModule(aName.Name, aName.Name + ".dll"); TypeBuilder tb = mb.DefineType( "MyDynamicType", TypeAttributes.Public); FieldBuilder fbNumber = tb.DefineField( "m_number", typeof(int), FieldAttributes.Private); MethodBuilder mbMyMethod = tb.DefineMethod( "MyMethod", MethodAttributes.Public, typeof(int), new[] { typeof(int) }); ILGenerator il = mbMyMethod.GetILGenerator(); il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Ldfld, fbNumber); il.Emit(OpCodes.Ldarg_1); il.Emit(OpCodes.Mul); il.Emit(OpCodes.Ret); PropertyBuilder pbNumber = tb.DefineProperty( "Number", PropertyAttributes.None, typeof(int), new Type[0]); MethodBuilder mbSetNumber = tb.DefineMethod( "set_Number", MethodAttributes.PrivateScope | MethodAttributes.HideBySig | MethodAttributes.Public | MethodAttributes.SpecialName, typeof(void), new[] { typeof(int) }); il = mbSetNumber.GetILGenerator(); il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Ldarg_1); il.Emit(OpCodes.Stfld, fbNumber); il.Emit(OpCodes.Ret); pbNumber.SetSetMethod(mbSetNumber); MethodBuilder mbGetNumber = tb.DefineMethod( "get_Number", MethodAttributes.PrivateScope | MethodAttributes.HideBySig | MethodAttributes.Public | MethodAttributes.SpecialName, typeof(int), new Type[0]); il = mbGetNumber.GetILGenerator(); il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Ldfld, fbNumber); il.Emit(OpCodes.Ret); pbNumber.SetGetMethod(mbGetNumber); ConstructorBuilder intConstructor = tb.DefineConstructor( MethodAttributes.Public, CallingConventions.Standard | CallingConventions.HasThis, new[] { typeof(int) }); il = intConstructor.GetILGenerator(); il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Call, typeof(object).GetConstructor(new Type[0])); il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Ldarg_1); il.Emit(OpCodes.Stfld, fbNumber); il.Emit(OpCodes.Ret); var parameterlessConstructor = tb.DefineConstructor( MethodAttributes.Public, CallingConventions.Standard | CallingConventions.HasThis, new Type[0]); il = parameterlessConstructor.GetILGenerator(); il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Ldc_I4_S, (byte)42); il.Emit(OpCodes.Call, intConstructor); il.Emit(OpCodes.Ret); Type ourType = tb.CreateType(); object ourInstance = Activator.CreateInstance(ourType); Console.WriteLine(ourType.GetProperty("Number") .GetValue(ourInstance)); ab.Save(@"DynamicAssemblyExample.dll"); var myDynamicType = tb.CreateType(); var myDynamicTypeInstance = Activator.CreateInstance(myDynamicType); Console.WriteLine(myDynamicTypeInstance.GetType()); var numberField = myDynamicType.GetField("m_number", BindingFlags.NonPublic | BindingFlags.Instance); numberField.SetValue (myDynamicTypeInstance, 10); Console.WriteLine(numberField.GetValue(myDynamicTypeInstance)); } } الانعكاس (Reflection)

يُوفِّر الانعكاس العديد من الأصناف -منها الصنف Assembly- والذي يَعمَل كمُغلِّف للتجميعة (assemblies). يُمكِن لبعض هذه الأصناف تَوفِير معلومات عن التجميعات المُحمَّلة من خلال البيانات الوَصفيّة (metadata) ببيان تلك التجميعات (Assembly manifest). يُمكِن استخدام بعض الأصناف الأُخرى لتَحمِيل ديناميكي للتجميعات، بل ولإنشاء أنواع جديدة واستدعائها ديناميكيا أثناء وقت التشغيل.

جَلْب بيانات عن تجميعة باستخدام الانعكاس

اِستخدِم الشيفرة التالية لجلب كائن Assembly الخاص بصنف معين:

using System.Reflection; Assembly assembly = this.GetType().Assembly;

اِستخدِم الشيفرة التالية لجَلْب كائن Assembly الخاص بالشيفرة قيد التنفيذ:

Assembly assembly = Assembly.GetExecutingAssembly();

يُوفِّر الصنف Assembly التابع GetTypes المُستخدَم لجَلْب قائمة بجميع الأصناف المُعرَّفة ضِمْن التجميعة:

foreach (var type in assembly.GetTypes()) { Console.WriteLine(type.FullName); } موازنة كائنين باستخدام الانعكاس

في المثال التالي، يُستخَدم الانعكاس لموازنة كائنين. بالتحديد، يُستخدم التابع GetType لجلْب قيمة من الصنف Type تُحدد نوع الكائن، والتي بدورها تُستخدَم لجلْب قائمة بحقول الكائن باستدعاء التابع GetFields من خلالها، ثم يتم موازنة قيم تلك الحقول مع نظيراتها بالكائن الآخر.

public class Equatable { public string field1; public override bool Equals(object obj) { if (ReferenceEquals(null, obj)) return false; if (ReferenceEquals(this, obj)) return true; var type = obj.GetType(); if (GetType() != type) return false; var fields = type.GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); foreach (var field in fields) if (field.GetValue(this) != field.GetValue(obj)) return false; return true; } public override int GetHashCode() { var accumulator = 0; var fields = GetType().GetFields(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); foreach (var field in fields) accumulator = unchecked ((accumulator * 937) ^ field.GetValue(this).GetHashCode()); return accumulator; } }

لاحظ أنه بغرض التبسيط، فإن المثال باﻷعلى يُجري موازنة معتمدة على الحقول فقط (يتجاهل الحقول الساكنة [static fields]، والخاصيات [properties]).

جَلْب سِمة تعداد (enum) باستخدام الانعكاس (وتخزينها بصورة مؤقتة caching)

تُعدّ السمات (attributes) مفيدة للإشارة إلى بعض البيانات الوَصفيّة (metadata) بالتعدادات (enums).

يُستخدَم عادة التابع GetCustomAttributes لجَلْب قيم تلك السمات والذي قد يكون بطيئًا، لذلك من المهم الاستعانة بالذاكرة المخبئية لتخزين تلك القيم (caching)، كالتالي:

private static Dictionary<object, object> attributeCache = new Dictionary<object, object>(); public static T GetAttribute<T, V>(this V value) where T : Attribute where V : struct { object temp; // حاول جلب قيمة السمة من الذاكرة المخبئية أولًا if (attributeCache.TryGetValue(value, out temp)) { return (T) temp; } else { // اجلب النوع Type type = value.GetType(); FieldInfo fieldInfo = type.GetField(value.ToString()); // اجلب سمات هذا النوع T[] attribs = (T[])fieldInfo.GetCustomAttributes(typeof(T), false); // أعد أول سمة تجدها var result = attribs.Length > 0 ? attribs[0] : null; // خزن النتيجة بالذاكرة المخبئية attributeCache.Add(value, result); return result; } } ضَبْط خواص الكائنات باستخدام الانعكاس

بفرض أن لدينا الصنف التالي Classy الذي يَملك الخاصية Propertua:

public class Classy { public string Propertua {get; set;} }

لضبْط الخاصية Propertua الموجودة بكائن من النوع Classy باستخدام الانعكاس، يمكن استخدام التابع SetValue:

var typeOfClassy = typeof (Classy); var classy = new Classy(); var prop = typeOfClassy.GetProperty("Propertua"); prop.SetValue(classy, "Value"); تنشئة كائن من النوع T باستخدام الانعكاس

باستخدام باني الكائنات الافتراضي (default constructor):

T variable = Activator.CreateInstance(typeof(T));

باستخدام بَانِي ذات معاملات غير محدَّدة النوع (parameterized constructor):

T variable = Activator.CreateInstance(typeof(T), arg1, arg2); الإطار المُدار القابل للتوسيع (MEF)

الإطار المُدار القَابِل للتوسيع Managed Extensibility Framework - MEF هو مكتبة لإنشاء برامج صغيرة الحجم وقابلة للتوسيع.

عادةً ما تُسجَّل التَبَعيّات (dependencies) داخِل ملفات إعداد بالشيفرة المصدرية (hardcoding). يَترتَب على ذلك أنه لا يُصبِح بالإمكان تَغيير تلك التَبَعيّات إلا عن طريق تعديل الشيفرة وإعادة تَجمِيعها. على العكس من ذلك، يَسمَح الإطار المُدار القابل للتوسيع MEF باكتشاف التَبَعيّات أثناء زمن التشغيل (runtime) ضِمْنِيًّا، واستخدامها دون إعداد مُسبَق.

يَسمَح MEF لعِدة مُكَوِّنات (components) بالتواصل معًا بانسيابية وسهولة. يَستخدِم كل مُكَوِّن سِمات مُعينة (attributes) للإعلان عن تَبَعيّاته وقُدراته، أي ما يَحتاج إلى اِستيراده (imports) وما يقوم بتَصديره (exports)-إن وُجِدَ- على الترتيب. يُعلَّن عن كُلًا من الاستيرادات والتصديرات بصورة مُواصَفَة اِصطلاحيّة (contract). يَنبغي لمُصَدِّر ومُستورِد مُعينين الإعلان عن نفس المُواصَفَة الاصطلاحيّة لعَدِّهما نَظيرين. لاحظ أنه لمّا كانت كل هذه المَعلومات مُتوفِّرة بالبيانات الوصفية (metadata) للمُكَوِّن، أَصبَح مِن المُمكن اكتشافها أثناء زمن التشغيل (runtime).

يُزوِّد مُحرِك MEF المُكَوِّنات باستيراداتها (imports) المُعلَّن عنها اعتمادًا على حَاوِي التركيب (composition container) الذي يَضُمّ كتالوجات (catalogs) تَشتمِل على معلومات عن جميع المُكَوِّنات المُصدَّرة والمُتاحة للتركيب.

تصدير صنف (Exporting)

يُمكن لأي مُكَوِّن استخدام السمة ExportAttribute للاعلان عن تَصدير (export). في المثال التالي، صُدِّرَ النوع UserProvider كمُحقِّق للمُواصَفَة الاصطلاحيّة IUserProvider:

using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel.Composition; namespace Demo { [Export(typeof(IUserProvider))] public sealed class UserProvider : IUserProvider { public ReadOnlyCollection<User> GetAllUsers() { return new List<User> { new User(0, "admin"), new User(1, "Dennis"), new User(2, "Samantha"), }.AsReadOnly(); } } }

في المثال بالأعلى، يُمكن تَعرِيف الصنف UserProvider بأيّ مكان؛ فالمهم هو تَزْوِيد الكتالوج (ComposablePartCatalogs) -الذي يُنشئه البرنامج- بطريقة يَستطيع مِن خلالها اكتشاف هذا الصنف.

استيراد صنف (Importing)

يُمكن لأي مُكَوِّن استخدَام السمة ImportAttribute للاعلان عن استيراد (import) أو تَبَعيّة. انظر المثال التالي:

using System; using System.ComponentModel.Composition; namespace Demo { public sealed class UserWriter { [Import(typeof(IUserProvider))] private IUserProvider userProvider; public void PrintAllUsers() { foreach (User user in this.userProvider.GetAllUsers()) { Console.WriteLine(user); } } } }

في المثال بالأعلى، يُعلِّن الصنف UserWriter عن استيراد لصنف يُحقِّق المُواصَفَة الاصطلاحيّة IUserProvider كقيمة للحَقْل userProvider. لاحِظ أنه ليس مُهمًا أين تقوم بتَعرِيف الصنف المُناظِر؛ فالمهم هو تَزْوِيد الكتالوج (ComposablePartCatalogs) -الذي يُنشئه البرنامج- بطريقة يستطيع من خلالها اكتشاف هذا الصنف.

الرَبطْ (مثال بسيط) using System.ComponentModel.Composition; using System.ComponentModel.Composition.Hosting; namespace Demo { public static class Program { public static void Main() { using (var catalog = new ApplicationCatalog()) using (var exportProvider = new CatalogExportProvider(catalog)) using (var container = new CompositionContainer(exportProvider)) { exportProvider.SourceProvider = container; UserWriter writer = new UserWriter(); // at this point, writer's userProvider field is null container.ComposeParts(writer); // now, it should be non-null (or an exception will be thrown). writer.PrintAllUsers(); } } } }

في المثال بالأعلى، تم تَزْوِيد حَاوِي التركيب (composition container) بكتالوج من النوع ApplicationCatalog، والذي يَعتمِد -في بَحْثه عن التَصديرات المُناظِرة- على ملفات التجميعات بامتداد ‎.exe و DLL الموجودة بمجلد البرنامج. لذلك طالما تَوَفَّرت السِمة [Export(typeof(IUserProvider))‎] باحدى ملفات التجميعات بالمجلد، ستَنجَح عملية استيراد المُواصَفَة الاصطلاحيّة IUserProvider المُعلَّن عنها بداخل الصنف UserWriter.

تَتوفَّر أنواع أُخرى من الكتالوجات مثل DirectoryCatalog، والتي يُمكِن استخدَامِها كبديل أو كإضافة للنوع ApplicationCatalog لتَوسِيع دائرة البَحْث عن تَصدِيرات مُناظِرة للاستيرادات المطلوبة.

ترجمة -وبتصرف- للفصول Reflection - Managed Extensibility Framework - System.Reflection.Emit namespace من كتاب ‎.NET Framework Notes for Professionals

30,624 دراسة: الشمبانزي "اليتيم" يعاني أيضا "نكسات" مدى الحياة! الحيوانات لا تختلف كثيرا عن البشر حين يتعلق الأمر بفقدان الأم. دراسة حديثة تكشف بأن الشمبانزي يتعرض إلى معاناة من” نكسات“ طيلة حياته بعد فقدانه لأمه مقارنة بأقرانه. فما هي هذه”النكسات“ في حياة الشمبانزي"اليتيم"؟

الصفحات

أنت هنا