Skip to content

Instantly share code, notes, and snippets.

View kdmatrosov's full-sized avatar
:octocat:
Coding

Kirill Matrosov kdmatrosov

:octocat:
Coding
  • Moscow
View GitHub Profile
@kdmatrosov
kdmatrosov / Developing_with_Corda_4.md
Last active May 15, 2019 13:15
Разработка с Corda 4

Перевод статьи Developing with Corda 4

!

Это обновленная версия статьи Developing with Corda, которую я написал в прошлом году. С тех пор многое изменилось, но с точки зрения разработчика, все должно быть очень похожим. В Corda 4 увеличили производительность, улучшили безопасность и постарались обеспечить лучший опыт разработчика. Кстати о последнем. Улучшение опыта разработчика требует добавления новой функциональности при удалении менее желательных частей. Но, чтобы сделать это и сохранить обратную совместимость при работе с Corda 3 и 4, требуется решить немного маленьких вопросов. Как было сказано - есть несколько отличий. Эти моменты будут освещены в данном материале, но основная задача – рассказать новым разработчикам основу для работы с Corda.

Если вы уже работали с Corda раньше, то беглого просмотра эт

@kdmatrosov
kdmatrosov / announcing_dart_2.3.md
Last active May 11, 2019 10:21
Перевод "Announcing Dart 2.3: Optimized for building user interfaces"

Анонсирован Dart 2.3: оптимизирован для разработки пользовательских интерфейсов

Сегодня (8 мая 2019) мы объявляем о релизе Dart 2.3 SDK с новыми языковыми конструкциями, которые улучшают ваш опыт разработки при создании пользовательских интерфейсов, новой поддержкой инструментов для разработки Flutter UI и двумя новыми веб-сайтами: dart.dev и pub.dev.

Импульс ускорения

Каждый год мы с нетерпением ждем опрос разработчиков StackOverflow Developer Survey, который предоставляет полный набор данных о тенденциях в разработке и настроениях разработчиков по отношению к различным технологиям. В этом году данные показали рост популярности и осведомленности о Dart, который впервые вошел в список самых любимых языков и занял место рядом с другими популярными языками, такими как JavaScript, C# и Go и впереди таких, как C++, F# и R. В то же время наши хороши

@kdmatrosov
kdmatrosov / performance_testing_of_flutter_apps.md
Last active May 15, 2019 08:34
Перевод "Performance testing of Flutter apps"

Тестирование производительности Flutter приложений

Фреймворк Flutter по умолчанию работает хорошо и быстро, но означает ли это, что вам вообще не нужно думать о производительности? Нет. Абсолютно реально писать приложения Flutter, которые будут медленными. С другой стороны, также можно использовать фреймворк максимально и делать ваши приложения не только быстрыми, но и эффективными, потребляя меньше времени процессора и батареи.

Это то, что мы хотим видеть: статистически значимый результат сравнения двух версий вашего приложения по какой-то значимой метрике. Читайте дальше, чтобы узнать, как такое получить.

Существуют некоторые общие рекомендации по оптимизации производительности во Flutter:

  • Задействуйте, как можно меньше виджетов, при обновлении состояния.
@kdmatrosov
kdmatrosov / what_is_this.md
Last active May 17, 2019 10:10
Перевод "What is this? The Inner Workings of JavaScript Objects"

Какой здесь this? Внутренняя работа объектов JavaScript

Фотография: "Любопытный" Liliana Saeb (CC BY 2.0)

JavaScript – это мультипарадигмальный язык, который поддерживает объектно-ориентированное программирование и динамическое связывание. Динамическое связывание - это мощная концепция, которая позволяет изменять структуру JavaScript кода во время выполнения, но эти дополнительные мощность и гибкость достигаются ценой некоторой путаницы, большая часть которой связана с поведением this в JavaScript.

Динамическое связывание

При динамическом связывании определение метода для вызова происходит во время выполнения, а не во время компиляции. JavaScript выполняет это с помощью this и цепочки прототипов. В частности, внутри метода this определяется во время вызова, и значение this будет разным в зависимости от того, как метод был определен.

@kdmatrosov
kdmatrosov / js_async_and_await.md
Last active August 28, 2019 18:03
Перевод "JavaScript async and await" https://zellwk.com/blog/async-await/

Ассинхронный JavaScript никогда не был простым. Когда-то мы использовали колбэки, затем промисы, и сейчас у нас есть ассинхронные функции.

Асинхронные функции упрощают процесс написания асинхронного кода, но вместе с тем при работе с ними возникают ситуации, которые могут усложнить вам жизнь.

В двух статьях я хочу рассказать, что нужно знать об асинхронных функциях.

Ассинхронные функции

Ассинхронные функции объявляются с помощью ключевого слова async. Можно использовать его как для "классического" объявления функций:

@kdmatrosov
kdmatrosov / dart_nullability.md
Last active August 29, 2019 08:58
Перевод "Dart nullability syntax decision: a?[b] or a?.[b]" https://medium.com/dartlang/dart-nullability-syntax-decision-a-b-or-a-b-d827259e34a3

Решение по синтаксису nullability в Dart: a?[b] или a?.[b]

Dart находится в процессе перепроектирования системы типов, так что отдельные типы будут либо nullable (выражения этого типа могут иметь значение null), либо non-nullable. Позже в этом году мы расскажем вам больше о сроках и процессе развертывания, но в итоге код Dart по умолчанию будет non-nullable (NNBD – non-nullable by default). Для разрешения null значений необходимо будет использовать специальный синтаксис.

Например, чтобы объявить, что целое число может быть null, нужно добавить символ ? после типа:

int? someInt; // someInt can be null.

Выбор в пользу вопросительного знака может быть знаком, если вы видели код Kotlin, Swift или C#. Но некоторые вещи отличаются, в частности, оператор subscript ([]), который чаще всего используется для доступа к элементу списка или массива. C# и Swift используют ?[]. Текущий план для Dart (и, кстати, для ECMAScript) – использо

@kdmatrosov
kdmatrosov / improving_flutter’s_error_messages.md
Last active September 16, 2019 08:51
Перевод "Improving Flutter’s Error Messages"

Улучшение сообщений об ошибках во Flutter

Когда вы пишете код, то случаются ошибки, что неизбежно даже для самого опытного разработчика. При устранении ошибки первым шагом часто является чтение сообщения о ней, которое мы видим в консоли. Но исследования показывают, что программисты, особенно новички, испытывают сложности при попытках разобраться в данных сообщениях, не говоря уже о нахождения решения для выведенных ошибок.

В общем-то, когда заходит речь о том, чтобы помочь разработчику разобраться с ошибкой, Flutter не очень-то и справляется со своей работой. Вывод ошибки в консоли обычно очень подробный, и зачастую неясно, как проследить ошибку до определенного места в коде. В последнее время мы работаем над решением обеих проблем. В этой статье я собираюсь рассказать о нашей первой попытки увеличить отношение сигнал/шум сообщений о runtime ошибках Flutter и описать исследования, которые мы п

BigchainDB – база данных на блокчейн-стероидах

BigchainDB

Многие люди из мира blockchain могут критиковать или даже ненавидеть BigchainDB, утверждая, что это "ненастоящий блокчейн", и они могут быть правы, но только, если они не за Hyperledger Fabric. По-моему, BigchainDB – это технология, которую стоит знать, особенно если вы планируете создавать децентрализованные или распределенные системы в корпоративной среде.

BigchainDB – это распределенная система хранения с открытым исходным кодом, целью которой является объединение основных преимуществ "традиционных" NoSQL баз данных с преимуществами технологии blockchain (вроде того, что недавно анонсировала AWS с базой данных QLDB — Quantum Ledger). Одним из основных преимуществ, которые я вижу в BigchainDB, является возможность развертывания децентрализованной системы, подобной blockchain, с использованием production-ready технологий. Позвольте мне пояс

Как работает Flutter

Как Flutter работает на самом деле?

Что такое Widgets, Elements, BuildContext, RenderOject, Bindings?..

Сложность: Новичок

Вступление