
CoreHard هو مؤتمر C ++ يعقد في مينسك مرتين في السنة ، في الربيع والخريف. منذ عام 2015 ، نمت من مجتمع صغير من المتحمسين إلى مؤتمر إقليمي كبير. نحن نحاول الجمع بين معرفة الأساتذة المعترف بهم في عالم C ++ مع تطور حركة C ++ المحلية ، وجذب متكلمين بنشاط من الشركات البيلاروسية والروسية والأوكرانية المحلية.
نحن في عجلة من أمرنا لمشاركتنا مع سكان خاباروفسك أفضل 10 مقاطع فيديو طازجة من مؤتمرنا
الصاخب مؤخرًا .
لذلك ، دعنا نذهب: أفضل 10 تقارير مصنفة من قبل المشاهدين.
10. نموذج ذاكرة استثنائي - أليكسي تكاتشينكو
يتجاوز مفهوم الذاكرة في الكمبيوتر نطاق مجموعة من شرائح الذاكرة الديناميكية "الحديدية" المثبتة في الكمبيوتر. منذ فترة طويلة ينظر إلى الذاكرة باعتبارها مساحة عنونة ، والتي تدار من قبل وحدة إدارة الذاكرة - MMU. يتيح لنا هذا الأسلوب التمييز بين الذاكرة الفعلية والذاكرة الافتراضية ، والتي يتم استخدامها بنشاط في جميع أنظمة التشغيل التي تستخدم مفهوم العملية كوحدة لإدارة الموارد.
في التقرير ، سنتحدث عن بعض التطبيقات غير العادية لأساليب الحماية المطبقة في وحدة MMU ، وهي طرق محاكاة تفاعل الأجهزة مع المعالج المركزي من خلال ملفات التسجيل.
سيغطي التقرير أنظمة تشغيل Windows و Linux ومختلف الهياكل.
سيكون التقرير ذا أهمية أساسية لمطوري البرامج المدمجة (المضمنة) ، ومع ذلك ، فإن التقنيات الموضحة في التقرير ستكون مفيدة للمطورين لأجهزة الكمبيوتر "الكبيرة".
عن المتحدثمنذ أكثر من 12 عامًا ، ظل Alexey Tkachenko يطور برامج لاختبار البرمجيات والأجهزة ومجمعات مقاعد منتجات تكنولوجيا الفضاء في شركة Peleng. أدوات العمل الأساسية: C ++ للمهام ذات المستوى المنخفض والتفاعل مع الأجهزة و C # /. NET لبرنامج العميل. في وقت فراغه ، فهو مولع بـ Embedded على ميكروكنترولر متواضعة.

9. C ++ تاكسي الخدع - انطون Polukhin
عند كتابة أطر عمل كبيرة ، يتعين على المرء أن يتعامل مع المهام النموذجية التي طالما كانت الحلول معروفة لها. ومع ذلك ، فإن هذه الحلول ليست فعالة بما فيه الكفاية ، وأفضل بكثير يمكن القيام به.
في التقرير ، سنتحدث عن pimpl الصديق للتخزين المؤقت ، وتحسين تسجيل أنواع المستخدمين ، والتحويل من JSON / XML / YAML إلى أنواع المستخدمين وغيرها من التقنيات المثيرة للاهتمام.
عن المتحدثأنطون Polukhin هو ممثل روسيا في ISO في الاجتماعات الدولية لمجموعة العمل على توحيد C ++. مؤلف العديد من المقترحات المقبولة لمعيار لغة C ++. مؤلف من مكتبات Boost TypeIndex و DLL و Stacktrace و المشرف النشط Any و Conversion و LexicalCast و Variant. وهو مؤلف كتاب تطوير تطبيقات Boost C ++ والإصدار الثاني.

8. C ++ 20: الأشياء الصغيرة - تيمور دوملر
C ++ 20 يجلب ميزات جديدة رائعة للغة: الوحدات النمطية ، coroutines ، المفاهيم ، مشغل سفينة الفضاء ، والعديد من المكتبات الجديدة. ومع ذلك ، بالإضافة إلى ذلك ، يضيف C ++ 20 أيضًا العديد من التحسينات الصغيرة ، مما يجعل C ++ أكثر قوة وتعبيرًا ، وفي الوقت نفسه أكثر أمانًا وشمولية.
في هذا التقرير ، سوف نلقي نظرة على التحسينات الصغيرة في جوهر اللغة التي يمكن أن تساعد في جعل حياة المبرمج أسهل: تعبيرات lambda ، و CTAD ، والربط المنظم ، والتهيئة ، وغير ذلك الكثير.
عن المتحدثTimur Doumler هو مطور C ++ متخصص في تكنولوجيا معالجة الصوت والتوليف ، وعضو نشط في لجنة التقييس ISO C ++ وناشط في مجتمع #include <C ++>.

7. السعي من أجل الكمون المنخفض النهائي - Mateusz Pusz
في هذا التقرير ، نلقي نظرة على عالم C ++ من خلال نطاق زمن الانتقال المنخفض. هذا عالم لا يتم الترحيب فيه بتخصيصات واستثناءات الذاكرة الديناميكية ، حيث قد لا يكون لدينا ما يكفي من حاويات STL وحيث يتم إجبار المطورين في كثير من الأحيان على النزول إلى مستوى المجمّع للتأكد من أن الكود يفعل ما هو مطلوب بالضبط بالطريقة المثلى.
عن المتحدثMateusz Pusz هو مهندس معماري ومهندس وأخصائي أمن ومستشار ومدرس ومبشر من C ++ الحديثة. عضو في فريقي العمل WG21 ولجنة الدراسات 14 للجنة التقييس C ++.

6. Windbg: عندما لا نلعب - ألكسندر جولوفاتش
في ممارسة البرمجة ، تنشأ مشاكل غالبًا لا يمكن استنساخها والتحقيق فيها من جانب المطور. في مثل هذه الحالات ، يكون من المستحيل في بعض الأحيان حتى تنظيم الوصول عن بعد إلى الجهاز. سيناقش التقرير وسيعطي نصائح حول تصحيح الأخطاء للمهام النموذجية مثل الأعطال وتسرب الموارد وأخطاء المزامنة في التطبيقات ذات مؤشرات الترابط المتعددة باستخدام مصحح أخطاء Windbg كمثال. سيكون التقرير ذا أهمية خاصة للمطورين المبتدئين الذين يعملون مع نظام التشغيل Windows الأساسي.
عن المتحدثألكساندر جولوفاتش هو مبرمج نظام ويندوز ، مطور Checkpoint Endpoint Security. شارك في إنشاء منتجات مثل Anti Exploit و Anti Ransomware و Endpoint Forensics.

5. كيف LLVM الخلفية في C # يعمل - إيجور بوجاتوف
يحتوي LLVM على عدد كبير من التحسينات وهو مناسب كواجهة خلفية للعديد من لغات البرمجة. لكن الأمور تزداد تعقيدًا بالنسبة للغات المدارة والنصوص JIT. في هذا التقرير ، سوف يتحدث ايجور عن الصعوبات التي يواجهها مطورو C # عند تنفيذ الواجهة الخلفية لـ LLVM.
عن المتحدثيعمل Egor Bogatov في فريق .NET / Mono في Microsoft ، وهو مهتم بالحواشي الدقيقة و LLVM.

4. دراسات حول التخزين المؤقت: التنبيهات غير المتزامنة وتكرار التحديثات وتوحيد الطلبات المعلقة - Vadim Vinnik
يمكن أن تؤدي ممارسة تطوير تطبيق معين إلى بيان للمشكلة ، والذي يتحول ، في التفكير الناضج ، إلى أنه عام بما فيه الكفاية لعزله إلى تجريد يمكن أن يكون مفيدًا للعديد من التطبيقات المختلفة. يتطلب تقديم حل لشكل مناسب للاستخدام المتكرر ، على عكس الحل الذي يلبي احتياجات تطبيق معين ، بذل جهد عقلي إضافي لتسليط الضوء على الجوانب المختلفة للمهمة ، ووضع نماذج لها باستخدام اللغة. يقدم التقرير تجربة تنفيذ ثلاثة تجريدات ، توحدها سمة مشتركة - تخزين البيانات مؤقتًا في المعالجة متعددة الخيوط. يظهر تدريب الفكر من تحليل المهمة إلى تنفيذ لغة C ++ 17.
عن المتحدثفاديم فينيك هو مرشح للعلوم الفيزيائية والرياضية ، وله 10 سنوات من الخبرة في تدريس البرمجة للطلاب ، بما في ذلك في جامعة تاراس شيفتشينكو الوطنية في كييف. أكثر من 10 سنوات من الخبرة في البرمجة الصناعية (بشكل أساسي في C / C ++ / C #) ، مع التركيز على مجالات النسخ الاحتياطي واستعادة البيانات. فاديم - مؤلف كتب "لغات الخوارزميات وأسس البرمجة: لغة C" ، "أساسيات البرمجة الشيئية في لغة C ++" ؛ مؤلف 29 منشورًا علميًا حول نظرية البرمجة ؛ مترجم من الإنجليزية إلى الروسية لكتاب "مبادئ البرمجة الموجهة للكائنات" (Anton Antonens) ، "الجمع بين نظريات البرمجة" (Charles Hoar، Hee Jifen). مجالات الاهتمام: البرمجة بلغة C ++ واللغات الوظيفية (هاسكل).

3. ثابت SQL في C ++ 14 - يفغيني زاخاروف
سيتحدث المتحدث عن تطوير مكتبة مكتبة
sqlite_orm ORM لـ SQLite3 في الإصدار C ++ 14 ومشاركة تجربته في محاولة إنشاء ORM التي يمكنك نسيان استعلامات النص وكيفية تكيفها مع C ++ باستخدام القوالب.
عن المتحدثيفغيني زاخاروف هو مطور ألعاب C ++ ، مؤلف مكتبة sqlite_orm.

2. Metaprogramming: بناء آلة الدولة المحدودة - سيرجي فيدوروف
يعد تنفيذ أجهزة الحالة يدويًا باستخدام علبة التبديل أو الوراثة مع الوظائف الافتراضية وقتًا طويلاً وعرضة للخطأ. في التقرير ، يتحدث المتحدث عن مكتبة آلات الحالة AFSM (آلة أخرى محدودة للحالة) ، والتي تتيح لك استخدام لغة تعريف لوصف آلة الحالة. وكذلك عن الحيل الصغيرة والحيل من metaprogramming على أمثلة من رمز هذه المكتبة.
عن المتحدثيعمل سيرجي فيدوروف ، المطور الرائد في Yandex.Taxi ، على تطوير إطار غير متزامن لخلفية التاكسي. مروحة كبيرة من metaprogramming ومفتوحة المصدر.

1. حماية C ++ - بافيل فيلونوف
غالبًا ما تتم مقارنة C ++ مع nunchucks: في الأيدي الماهرة فهي أداة فعالة ، وفي أيدي المبتدئين هناك خطر على صحة الفرد. هذه المقارنة مستوحاة بوضوح من رأي C ++ كلغة برمجة غير آمنة. بعض اللغات الجديدة تستخدم هذا الرأي للترويج الخاص بها. ولكن ما هي الأخطار المحددة التي تكمن وراء مصطلح "غير آمن"؟ من الواضح أن الإجابة التفصيلية ستثير عدة اتجاهات ، أحدها سيكون الأمن السيبراني. سيغطي التقرير أمثلة بسيطة لاستغلال نقاط الضعف في كود C / C ++: تنفيذ كود shell على المكدس ، والعودة إلى libc ، وإعادة كتابة vptr ، تجاوز سعة الكومة.
ولكن يتم التركيز بشكل رئيسي على الحماية من مثل هذه الهجمات: الكناري على المكدس ، ASLR ، المناطق المستحيلة ، الاختبار والمعقمات ، عمليات التخريب ، SDL.
عن المتحدثشاركت بافيل فيلونوف في تطوير أنظمة Max Patrol SIEM كمطور C ++ و Kaspersky MLAD كعالم بيانات. عضو لجنة البرنامج في مؤتمر C ++ Russia. متخصص في CI / ML / موضوعات الأداء.

وكذلك ، بعض تقارير المكافآت!
أتمتة ذلك - كيريل تيخونوف
سوف نكتب خدمة الويب أبسط من العميل والخادم في C ++. في جزء C ++ سينتهي ، وسيستمر إعداد البيئة والبنية التحتية. سوف نضمن قابلية التجميع وتشغيل الاختبار. تسهيل التحديث اللاحق للمكتبات التابعة. نحن أتمتة الشيكات الثابتة ، والتحقق من رمز ، يعمل الاختبار. سوف نضمن توافر الخدمة ، وتكوين البنية التحتية ، وتحقيق التوازن بين الحمل ، وإضافة القياس التلقائي واليدوي. وفي النهاية ، سنقوم بإعداد تسليم مستمر بحيث يكون الرمز قيد الإنتاج بعد 5 دقائق من الطلب ، وحتى التغييرات غير الصالحة وأخطاء المبرمجين لن تكون قادرة على التأثير في عملها.
هل ما زلت تكتب الكود بيديك؟ ثم نذهب لك! - سيرجي سادوفنيكوف
في عالم تطوير C ++ ، هناك العديد من المهام التي يتعين عليك فيها كتابة قدر كبير من التعليمات البرمجية المتداول: التسلسل ، RPC ، ORM ، روابط لغة البرمجة النصية ، وما إلى ذلك ، وبالطبع ، هناك العديد من الطرق التي تسهل كتابة مثل هذه التعليمات البرمجية ، على سبيل المثال ، للتسلسل: اكتب كل شيء بيديك ، ضع كل شيء في وحدات ماكرو ، واسحب القوالب التي تقودها هناء ، وادمج واحدًا مع الآخر. ولكن هناك طريقة واحدة يجب أن تحل في النهاية محل جميع الأساليب الأخرى: إنشاء الكود. json ، bson ، xml ، yaml ، protobuf - هناك الكثير من الخيارات للتنسيقات التي يمكنك من خلالها حفظ البيانات. كل تنسيق له مكتباته الخاصة ، وليس مكتبة واحدة. تقدم المكتبات بإصرار طريقة خاصة بها لوصف البيانات ، وبعضها يوفر بنية تحتية كاملة تحتاج إلى تكييفها بنفسك وتحسين التعليمات البرمجية الخاصة بك. وهذا ليس مريحًا دائمًا ، حيث يريد المرء الحرية. أود أن يعتمد النص المصدر بأقل قدر ممكن على كيفية إجراء تسلسل البيانات. والوسائل الحديثة لتوليد الكود يمكن أن توفر هذه الحرية ، تحتاج فقط إلى معرفة كيفية استخدامها بشكل صحيح.
كارثة مدى الحياة لـ C ++ rval - أرنو شودل
روابط Rvalue موجودة في اللغة منذ الإصدار C ++ 11. تم تقديمها لجعل الأجسام المتحركة أكثر كفاءة. جنبا إلى جنب مع هذه التحسينات ، يجلب هذا الابتكار الكثير من الفروق الدقيقة في اللغة التي يجب أن يعرفها كل مبرمج يحترم نفسه. دعنا نغرق في عالم روابط rvalue ونفحصها بعناية!
استثناءات C ++ من خلال المنشور Optimization Optimization - Roman Rusyaev
في الفناء هو القرن الحادي والعشرين ، كان التنفيذ غير المثمر لمعالجة استثناء C ++ استنادًا إلى setjmp / longjmp موجودًا بالفعل في الماضي. تستخدم برامج التحويل البرمجي الحديثة ، مثل gcc و clang ، تطبيقًا متقدمًا لاستثناءات C ++ تسمى معالجة استثناء التكلفة الصفرية. لكن ما مدى صحة هذه التكلفة الصفرية؟ نعم ، نحن ندفع عن طريق زيادة حجم الملف الثنائي ، وكذلك في حالة إلقاء الاستثناء فعليًا ، وبدء عملية فك المكدس ، واستدعاء مدمرات الكائنات المحلية ، إلخ. ولكن هل نفقد الأداء إذا لم يتم طرح استثناء؟ هل هناك أي قيود على تحسينات برنامج التحويل البرمجي؟ يصف هذا التقرير كيف تؤثر استثناءات C ++ على تحسينات برنامج التحويل البرمجي. ما هي التحسينات التي لا يمكن تطبيقها إذا تمكنت الوظيفة من طرح استثناءات ، وأي التحسينات أصبحت أكثر صعوبة في تطبيقها. يتم أخذ أمثلة على تنفيذ الاستثناءات والتحسينات لبرنامج التحويل البرمجي على أساس LLVM. يهدف التقرير إلى إعطاء الناس فهمًا عندما يكون من المنطقي إنشاء التطبيق الخاص بك مع استثناءات -fno ، وعندما يمكنك التمتع بجميع المسرات باستخدام استثناءات C ++ ، مع العلم أن التعليمات البرمجية الخاصة بهم لم تفقد الأداء بشكل ملحوظ مقارنة بالكود حيث تم تعطيل الاستثناءات.
مولدات ، Coroutines وغيرها من حلاوة تفوح الدماغ - عدي شافيت
جلبت C ++ 20 لنا coroutines ومعهم القدرة على كتابة المولدات الكهربائية ، وأنواع التكرار ، ونطاقات. سنرى كيف تساعد coroutines في كتابة تعليمات برمجية أنظف وأكثر قابلية للقراءة مع تجريدات أخف وزنا وتعميم.
كيف لا يختنق مشروع قديم كبير - يوري ميناييف
لقد تغير العالم. ما نجح من قبل لم يتوقف عن العمل ، لكنه أصبح غير كافٍ. لا تزال البرمجة المزدوجة ومراجعات الكود واختبارات الوحدات مهمة وضرورية ، لكنها لم تعد قادرة على توفير المستوى المناسب من الجودة والموثوقية لمشاريع C ++. نمت العديد من المشاريع مئات المرات. كان النمو تدريجياً ، ولم يفهم الجميع ما حدث. يتكون أي مشروع قديم كبير من طبقات غير متجانسة (الرواسب الجيولوجية) ، والأهم من ذلك ، لا أحد يعرف بالفعل كيف يعمل كل شيء. لقد حان الوقت للأدوات والمنهجيات للمساعدة في الحفاظ على جودة وتكامل الشفرة: DevSecOps ، التحليل الثابت ، التحليل الديناميكي ، منصات قياس الجودة.
كيفية المساعدة وكيفية منع المترجم - أندريه أولينيكوف
كقاعدة عامة ، يمكنك الاعتماد على حقيقة أن المحول البرمجي يعمل على تحسين الملف الثنائي الناتج بحيث يعمل في أسرع وقت ممكن. لكن المترجم لا يعرف ما هي البيانات وما هي الأجهزة التي سيتم تشغيل البرنامج. بالإضافة إلى ذلك ، أود أن يستغرق التجميع وقتًا مقبولًا. لهذا السبب ، قد تكون النتيجة دون المستوى الأمثل. أقترح استخدام أمثلة لـ LLVM لمعرفة كيف يمكنك إخبار المترجم بكيفية تحسين البرنامج وجعل النتيجة أفضل أو أسوأ.
إن CoreHard (C ++ CoreHard Spring 2020 Conference) في طريقها وسيُعقد في الفترة من 10 إلى 11 أبريل 2020 في مينسك ، وابحث عن التذاكر والبرنامج الكامل على الموقع الرسمي.
ويمكنك تقديم تقرير هنا (اختراق الحياة: لا يمكن للمتكلم دفع ثمن التذكرة!)