مفتوحة المصدر على كلوجور

Run Loop تدعو أولئك الذين يصنعون منتجات رائعة بأيديهم. نيكيتا بروكوبوف ( تونسكي ) - رجل وسفينة ، تمكن من إنشاء العديد من المشاريع مفتوحة المصدر التي يستمتع الآخرون باستخدامها.

بادئ ذي بدء ، دعونا نتحدث عن خط FiraCode ، Clojure ، ومشاريع مختلفة تمامًا ، على سبيل المثال ، غلاف ClojureScript لـ React. ثم دعنا ننتقل إلى مناقشات أكثر عمومية حول الواجهات الجيدة والحس السليم ونماذج التدريب للمبرمجين.



عن الضيف : نيكيتا بروكوبوف بارز لحقيقة أنه أنشأ FiraCode ، وقدم مساهمة كبيرة في تطوير مجتمع Clojure ونشر مشاريع مثل Datascript و Rum في OpenSource. بالإضافة إلى ذلك ، يكتب في Objective-C تحت نظام macOS: سيخبرك برنامج AnyBar عن حدوث حدث في شريط الحالة ، أوه ، menubar من جهاز الكمبيوتر الخاص بك.

المقدمون : Roman Busygin (مطور Yandex.Music لنظام iOS) و Alexey Mileev (التطبيق في الهواء).

نيكيتا : أنا مبرمج من نوفوسيبيرسك ، لكنني أعيش الآن في موسكو. كان يعمل في مشاريع الويب بشكل رئيسي ، أنا مغرم بالواجهات. لقد قمت مؤخرًا بالبرمجة في كلوجور.

روماني : أقترح بناء محادثة اليوم حول المصدر المفتوح والمشاريع العامة. أريد أن أبدأ بالشيء الأول والأكثر إثارة للاهتمام بالنسبة لي - إنه خط FiraCode . يتم استخدامه من قبل العديد من زملائي وأنا. كنت مهتمًا دائمًا بكيفية إنشاء الخط الخاص بي ، وكيف يحدث ، وما إذا كان هناك برنامج خاص ، وما هي المعرفة التي تحتاجها لإنشاء الخط الخاص بك. من فضلك قل عن هذا.

Firacode


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

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

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

رومان : كم من الوقت استغرق الانتهاء من FiraMono إلى نوع FiraCode الذي يستخدمه الجميع الآن؟

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

رومان : أي أنه كانت هناك أيضًا عدة إصدارات. كيف اختلفوا؟

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

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

نيكيتا : بشكل تصريح ، ثم ترجم داخليًا بكفاءة إلى جدول الاستبدال.

تعيين للنسخة الأولى من الحروف المركبة


رومان : أخبرني ، متى توصلت إلى مجموعة من الحروف المركبة ، هل نظرت إلى أي لغات برمجة محددة أم أن هناك قائمة عامة إلى حد ما لما يحتاجه الناس في الحياة اليومية؟

نيكيتا : لم أتوصل إلى هذه الفكرة بنفسي. رأيت أن هناك خط Hasklig المصمم خصيصًا لـ Haskell. لكنني لم أكن بحاجة إلى هاسكل ، لذلك اعتقدت أنني بحاجة إلى إنشاء نفس الخط ، ولكن ، أولاً ، بناءً على الخط الذي يعجبني ، وثانيًا ، لأي لغة. ثم أخذت كل ما حدث لي . أول الأشياء واضحة: <= ،> = ، -> ، <-. تكتب كما في C ، ولكن يتم استبداله بسهم. في رأيي ، بدأ كل هذا.

كلوجور


Alexei : في البداية ، ذكرت أنك تكتب على Clojure الآن. أخبرني كيف جئت إلى Clojure ، وكيف بدأ كل شيء ، وكيف وصلت إلى هذه اللغة؟

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

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

أليكسي : ما الذي يعجبك بالضبط في كلوجور؟

نيكيتا : في المؤتمر الأخير ، أدلى ريتش هيكي بالملاحظة التالية:

Clojure هي لغة للمبرمجين الأكبر سناً والمتعبين.

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

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

رومان : أدركت أنك أجبت على سؤالي. عندما سمعت أن Clojure لا يفرض أي قيود عليك ، لسبب ما تذكرت على الفور C ، الذي وقف أيضًا على أذنيه بطريقة أو بأخرى. ولكن بعد ذلك سمعت الجواب أنه بعد كل شيء ليس فقط السكر النحوي ، ولكن أيضًا لغة ملائمة ومدمجة تسمح لك بالتعبير عن أفكارك باستخدام كود أقل.

نيكيتا : نعم ، إنه على مستوى عالٍ جدًا ، و C على مستوى منخفض.

أليكسي : أتساءل ما إذا كانت حرية اللغة هذه لا تتعارض مع العمل في مشاريع كبيرة مع عدد كبير من الناس. أو في OpenSource ، حيث تحتاج إلى مراقبة كل تغيير بعناية؟ بقدر ما سمعت ، يُسمح للأشياء في Clojure بتغيير بنية اللغة . ألا يزعجك ذلك؟

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

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

مشاريع في كلوجور


Roman : بقدر ما أرى ، لديك العديد من المشاريع على Clojure على GitHub. أخبرنا المزيد عنهم.

ملف بيانات


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

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

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

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

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

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

رم


أليكسي : هناك مكتبة رم أخرى . حدثني عنها من فضلك.

نيكيتا : رم مجرد غلاف رد فعل ClojureScript. رد الفعل رائع ، رائع ، والجميع يحب ذلك. أرغب في استخدامه ب في ClojureScript للاستخدام. إنه نص Java ، لكني أريد استخدامه في Clojurescript. كان هناك العديد من الحلول في عالم ClojureScript ، لكنها كانت مفاهيمية للغاية. عرضوا نموذجهم ، الذي استخدم رد فعل داخلي. هذا ليس نقيًا ، ولكن مفهومه الخاص ، والذي يستخدم رد فعل.

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

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

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

الرومانية : هل G6 جزء من رد فعل أم لا؟

نيكيتا : رسميًا - لا ، هذا مكون منفصل.

رومان : هل قمت بنقلها أو تركتها جانبًا؟

نيكيتا : لا ، لم أقوم بنقلها ؛ لا تستخدمها في ClojureScript. في ClojureScript ، الشفرة هي البيانات وكل ذلك ، حتى أنك لا تحتاج إلى شيء مثل G6 ، لديك بالفعل بناء قائم على المتجه الخاص بك ، والذي يتم قبوله في مجتمع Clojure. باستخدام البيانات ، نقدم نفس الشيء الذي يتم إجراؤه في G6 بواسطة الماكرو والمعالجة المسبقة للمصادر.

رومان : واو! أقترح الآن الانتقال إلى المشروع التالي. لقد فوجئت وسعدت للغاية عندما رأيت أنك ، نيكيتا ، كتبت مشروع AnyBar - تطبيق menubar الذي يعرض مؤشرات مختلفة على مدار الساعة. والمثير للدهشة ، أن مشروعي الأول لنظام MacOS كان أيضًا تطبيق menubar الذي أظهر إشعارات برسائل جديدة من Yandex.Mail. نظرت إلى المصدر وعدت مباشرة إلى 8 سنوات ماضية.

المشروع بسيط جدا وشعبية. بالتأكيد ، يستخدمونه لبعض المهام التطبيقية. من فضلك قل لي كيف ظهر المشروع ، وكيف تستخدمه بنفسك ، أو ربما تعرف كيف يستخدمه شخص ما؟

أنبار


نيكيتا : ظهر المشروع بالصدفة. تعلمون ، المبرمجون يحبون كتابة شيء ما ، وهنا. لا يحتاج كود Clojure إلى التحويل البرمجي ؛ يحتاج رمز ClojureScript. في كل مرة تقوم فيها بتغيير المصدر ، يتم إعادة تجميعه. يستغرق هذا بعض الوقت: تستغرق البداية الباردة 30-40 ثانية ، على سبيل المثال ، والبناء التدريجي من ثانية إلى عشر ثوان. لقد قمت بتغيير المصدر ، وانتقلت إلى المتصفح ، وما زلت لا تعرف ما إذا كان بإمكانك المشاهدة بالفعل أو لا تزال بحاجة إلى الانتظار ، لأن المصدر لم يتم تجميعه. لمعرفة ذلك ، توصلت إلى مؤشر.

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

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

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

روماني : نيكيتا ، هل يعمل هذا الشيء فقط على Localhost ، أو يمكن للجهاز الظاهري في هولندا تنفيذ الأمر ping على الكمبيوتر المحمول وعرض شيء ما في menubar؟

نيكيتا : إذا كان بإمكانك إرسال حزمة UDP من جهازك الافتراضي لجهاز كمبيوتر محمول ، فعندئذٍ نعم.

Alexei : بعد أن سمعت عن وقت البناء البارد لمدة 30-40 ثانية ثم إعادة التحميل الساخن لمدة ثانية أو ثانيتين ، بالطبع ، لا يمكنني سوى الحسد من عالم Android. ولكن لدي هنا هذا السؤال: هل تم تجاوز هذا الأمر برمته بمجموعة من البرامج النصية الجاهزة ، والمكونات الإضافية الجاهزة التي لا يمكنك حتى كتابتها ، ولكن ببساطة توصيلها بحيث تعمل جميعًا على الفور؟

نيكيتا : لم يكبر ، لأنني لم أفعل ذلك كثيرًا. حتى أنني مندهش من اهتمام شخص آخر. هناك الكثير من الأشياء: الكثير من الأفكار ، والكثير من النسخ المستنسخة. يريد الناس عرض نص أو عدة مؤشرات وما إلى ذلك. كنت سأفعل كل هذا ، لكن يدي لم تصل.

grumpy.website


أليكسي : دعنا ننتقل إلى مشروعك التالي. أخبرني ما هو موقع الويب الغاضب.

Nikita : grumpy.website هي مدونة حول أمثلة الواجهات السيئة. نقوم بجمع أي عضادات في واجهات الكمبيوتر وغير الكمبيوتر ، نناقشها ونشكو منها.

أليكسي : إلى متى ظهر هذا الموقع؟

نيكيتا : قبل حوالي عام.

أليكسي : كم عدد الأشخاص الذين ينشرون شيئًا هناك؟

نيكيتا : هذا مشروع مؤلف ، لدينا الآن أربعة مؤلفين. ننشر بشكل رئيسي ، ولكن خمسة أشخاص آخرين يرسلون اقتراحاتهم بشكل دوري. هذا محرك مخصص بالكامل مكتوب على Clojure مباشرة على قناتي على YouTube . استغرق الأمر على الهواء 13-14 قضية ، وأوصافها الكاملة في Gist . إذا كنت مهتمًا بكيفية إنشاء تطبيق ويب على Clojure من البداية ، يمكنك أن ترى.

الرومانية : هل تم الانتهاء من هذه الدورة بالفعل ، أم أن المشروع لا يزال قيد الإنهاء ، وهل تنشر الملاحظات أثناء الانتهاء منها؟

نيكيتا: إنها أكثر من مدونة فيديو. انتهى إلى الحالة التي يوجد فيها موقع الويب الغاضب الآن - إنه في الوقت الحقيقي. ما هو موجود الآن على الموقع ، ثم على المدونة.

التصميم وسهولة الاستخدام


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

نيكيتا : حدث ذلك في وقت مبكر جداً ، في بداية مهنة. كنت منخرطًا في مشاريع الويب ، وبدا لي أنه من أجل القيام بالواجهات بشكل جيد ، كنت بحاجة إلى فهم ما نقوم به. كان هناك شعور بأن كل شيء لم يكن على ما يرام مع واجهات الكمبيوتر.

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

أتذكر أنه بعد قراءة كتاب "تصميم الأشياء المألوفة" لدونالد نورمان ، بدأت حقًا في رؤية المزيد. ولكن قبل ذلك ، استخدمت هذه الهراء ، هذه العيوب ولم تتشبث عيناي.

تقرير AppsConf


أليكسي : ستتحدث نيكيتا في AppsConf مع تقرير " اكتساب المهارات ". نيكيتا ، أخبرني كيف ظهر مثل هذا التقرير.

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

, : , . — , — . . , , , .

: , , , , , . , . , .
AppsConf — 8 9 . . ( : , ), .

YouTube- , .

Source: https://habr.com/ru/post/ar420147/


All Articles