Русский
Русский
English
Статистика
Реклама

Wriketechclub

Разговоры в пижамах. Онлайн-встреча с Виталием Фридманом 19 июня

17.06.2020 20:12:14 | Автор: admin


Надоел зум и скучные митинги? Мы хотим разнообразить твою жизнь, приглашая в Wrike TechClub ярких, интересных и вдохновляющих людей из IT и не только. А ты садись поудобнее, расслабься, налей себе чего-нибудь и оставь тягостные мысли на завтра. Марафон из бесконечных дел подождет, присоединяйся к нашему Пижаматону 19 июня в 7 вечера (по Москве).

Жить в 2020 году, как оказалось, непросто. Многие из нас ежедневно борются с нескончаемыми созвонами и встречами, онлайн-митапы тоже начали надоедать. И это мы еще не говорим о постоянной рекламе о новых курсах, вебинарах и тренингах. Кто бы мог подумать, что цифровая жизнь может быть такой утомительной, не правда ли?

Именно поэтому мы подумали и решили организовать новый формат пижамные разговоры. Но ты можешь быть одет в чем хочешь. Можешь даже смотреть невнимательно, мы все-равно будем пытаться тебя заинтересовать
NB: Встречи проходят на английском языке.

Первый эпизод вышел неделю назад с Максимом Сальниковым, DevRel из Microsoft. Краткое содержание выпуска:

Что такое работа мечты?
Как делать маркетинг для тех, кто ненавидит маркетинг?
Как объяснить бабушке, что такое PWA (не клей)
Что нужно для того, чтобы организовать запоминающуюся конференцию
Итсория релокации Макса в Норвегию
Разрушаем мифы о Норвегии


А 19 июня к нам в гости придет Виталий Фридман (Smashing Mag, Smashing Conf)



Виталий родился в Минске, Беларусь и изучал информатику и математику в Германии, где он обнаружил интерес к типографике, журнализму и веб-дизайну. Проработав с разными агентствами и клиентами 6 лет, Виталий создал Smashing Magazine, популярный онлайн-журнал о дизайне и веб-программировании.

Виталий Фридман любит красивый контент и не любит легко сдаваться. Когда он не пишет и не выступает на конференциях, он, скорее всего, проводит семинары по интерфейсам / UX и вебинары. Он любит решать сложные UX, front-end задачи и проблемы с производительностью.

Бесплатная регистрация на встречу: wriketeam.timepad.ru/event/1320725
Больше информации о Pyjamathon: wrikepyjamathon.com
Подробнее..

Перевод Обновление роадмапа AngularDart

23.10.2020 22:21:47 | Автор: admin


Недавно команда языка Dart опубликовала важный анонс про обновление роадмапа AngularDart. Мы решили перевести эту новость на русский язык и добавить свой комментарий о том, что это сообщение будет значить для Dart-сообщества.

Сегодня мы объявляем о значительном обновлении пакетов AngularDart. Этот релиз стал результатом тысяч трудочасов разработчиков и несет ряд улучшений нашим пользователям. Он повысит производительность для больших приложений, упростит наиболее распространенные варианты использования и устранит некоторые шероховатости. Если вы уже используете AngularDart, мы рекомендуем обновить его.

Также мы хотим воспользоваться этим релизом, чтобы обозначить изменение приоритетов в нашем проекте. Для многих из вас это не должно стать новостью, так как мы обсуждали это в течение последних нескольких месяцев в репозитории GitHub.

Внедрение AngularDart внутри Google шло быстро, но внешняя веб-инфраструктура очень конкурентоспособна, и мы наблюдаем скромный рост популярности фреймворка среди команд, которые не входят в Google. В связи с этим мы переориентировались на проекты Google: новую Google Play Console и Google Ads. Мы хотим честно предупредить об этом, потому что стараемся быть прозрачными в отношении наших инвестиционных приоритетов для развития в ближайшие годы.

Одна из главных причин нашего решения сфокусировать AngularDart на Google apps стремительное развитие Flutter. Уже больше двух миллионов разработчиков используют его для создания красивых, быстрых, нативных приложений для мобильных, десктопов, а теперь и для веба. Разработчики просят дальнейшего развития, и мы намерены заняться этим.

Чтобы не было недопонимания: мы продолжаем развивать AngularDart. Но превращение успешного внутреннего проекта в успешный внешний проект это немалый шаг. Открытый исходный код продукта подразумевает больше, чем просто отправку кода в репозиторий GitHub и публикацию пакетов. Для успешного опыта пользователям нужны примеры и документация. Они ждут ответов на свои вопросы, исправления ошибок и развития фичей. И мы надеемся на бльшую вовлеченность пользовательского комьюнити в названных областях.

В этом релизе представлен новый инструментарий инфраструктуры. Мы надеемся, что с его помощью сможем чаще обновлять исходные репозитории и публиковать пакеты. В то же время наши ресурсы на поддержку крупных проектов с открытым исходным кодом ограничены, и мы хотели бы сосредоточить силы на росте и развитии экосистемы Flutter.
Таким образом, наша двенадцатимесячная дорожная карта состоит в том, чтобы:

  1. Как можно скорее опубликовать долгосрочный стабильный релиз основных пакетов AngularDart в pub.dev. Они будут поддерживать последний стабильный Dart SDK и иметь обновленные зависимости.
  2. Продолжить обновлять исходный репозиторий последними внутренними изменениями. Сейчас они по большей части заключаются в обеспечении null-safety в базе кода.
  3. Сосредоточиться на обновлении пакетов до новой функции null-safety.


Если вы уже работаете с AngularDart, знайте, что мы будем продолжать поддерживать вас обновлениями. Но если вы только начинаете новый веб-проект на Dart, настоятельно рекомендуем посмотреть в сторону Flutter, который является нашим предложением для кросс-платформенной разработки в долгосрочной перспективе.
Для дополнительной информации о нашем продвижении по намеченному плану, смотрите исходный репозиторий и страницу пакета.

Примечание: это объявление касается только AngularDart. Angular Javascript Framework это совершенно отдельный проект.

Комментарий от команды разработки Wrike:

Многие слышали, что наша система (Wrike) является одним из самых крупных проектов в мире, написанных на Dart и AngularDart. Поэтому отношение к этому обновлению неоднозначное. Может прозвучать странно, но, несмотря ни на что, его можно назвать позитивным. Во-первых, про AngularDart не было слышно уже достаточно давно, и, хотя у нас есть прямые каналы связи с Google, мы ждали его не меньше других. Если сделать выжимку из сообщения, то вот что это будет значить для Dart-сообщества.

Появилась прозрачность в роадмапе AngularDart. Самая большая проблема веб-мира он очень конкурентен. Даже не так, ОЧЕНЬ конкурентен. Поэтому по-серьёзному выводить фреймворк на рынок, где уже есть такие гиганты как React, Vue или старший брат Angular (TS), может стоить очень дорого. И до этого момента была какая-то недосказанность: А что будет дальше?. Будет ли AngularDart пытаться завоевать мир, останется ли нишевой историей и вообще какой план? Часто новички, приходя в мир Dart, задавали вопрос: Я хочу веб приложение, что мне использовать?. Теперь ответ есть: Google делает ставку на Flutter. Учитывая его популярность (105k звёзд на GitHub!), это весьма разумный ход. Объём проделанной работы по добавлению документации, исправлению ошибок и качеству кода настолько велик, что AngularDart очень тяжело довести до такого уровня. Тем не менее, AngularDart остаётся открытым, и сообщество может вносить исправления и улучшения во фреймворк.

Значит ли это, что нужно куда-то бежать, переписывать всё на новые рельсы? Нет, потому что поддержка AngularDart останется, и, зная сколько всего уже написано (adsence, например), скорее всего, поддержка останется с нами ещё надолго. Те пользователи, у кого AngularDart работает прямо сейчас, могут не волноваться, что их продакшн превратится в тыкву.

И самое позитивное: Flutter for Web привлекает к себе дополнительное внимание и ресурсы. Посудите сами: рынок мобильных устройств если не захвачен, то весьма неплохо накалён из-за Flutter. На рынке desktop-разработки вообще застой все используют браузеры (Electron, PWA). Рынка интерфейсов для IoT устройств вообще нет. Всё идёт к тому, что Flutter, набрав силу и скорость для входа в мир Web, сделает это в скором времени. Что из этого получится трудно загадывать, но мы надеемся, что у него всё получится.

На правах рекламы: четвёртый год подряд мы проводим DartUP, ежегодную конференцию посвященную Dart/Flutter и AngularDart. В этот раз конференция пройдёт в онлайн-формате. К сожалению, знаменитого крафтового Дарт-пива в этом году не будет. Но будет всё остальное: бесплатность, крутые спикеры, неформальное общение и неформальные форматы (да, вот так). Следите за новостями на dartup.ru и в телеграм-сообществе.
Подробнее..

DartUP 2020 в этом году онлайн и с известными спикерами

12.11.2020 12:19:49 | Автор: admin


4-5 декабря уже в четвертый раз Wrike при поддержке Google проведет DartUP единственную в России конференцию по Dart и Flutter. Современная реальность внесла коррективы в наши планы, поэтому в этом году DartUP пройдет в онлайн-формате. Это значит, что мы не будем обращать внимание на границы, трудности с логистикой и часовые пояса и позовём самых крутых спикеров, которые поделятся новостями об экосистеме Dart и практическим опытом.

Год назад в Санкт-Петербурге 420+ разработчиков слушали доклады про Dart и Flutter, соревновались в CodeBattle, выигрывали призы, неформально общались и пробовали фирменное Dart-пиво. 14 спикеров в двух залах поделились экспертизой и рассказали про зоны в Dart, работу с графикой на Flutter, Domain Driven Design и многом другом. Все доклады с прошлогодней конференции смотрите в плейлисте на Youtube.

Как это было в 2019:


В 2020 году DartUP станет лучше и масштабнее, а мы сохраним неформальную атмосферу нашего сообщества уже в онлайн-формате.

Снова будет два потока докладов: один на русском, другой на английском. Уже известны первые спикеры: Слава Егоров и Michael Thomsen из Google, Андрей Смирнов из Wrike, Евгений Сатуров из Surf, Александр Денисов из EPAM, Kevin Segaud, Геннадий Евстратов из Яндекс.Такси, Борис Горячев из Meduza и другие. Список будет пополняться, следите за анонсами. У всех участников конференции будет возможность пообщаться со спикерами в неформальной обстановке и задать вопросы после выступлений.

Помимо основного трека докладов, разработчики и дизайнеры из команды Wrike подготовили онлайн-активности турнир ботов-жуков, управляемых сгенерированным генокодом, и игру-битву Code Kombat, в которой можно победить противника, решив алгоритмические задачки на Dart и JS (посмотрим, чье кунг-фу круче).

По традиции, эксперты из Wrike ответят на вопросы про Dart и Flutter и поделятся опытом даже с новичками, делающими первые шаги в этих технологиях. Готовьте свои вопросы: на конференции будет возможность даже показать код для ревью или спросить совета, в том числе и у разработчиков языка из Google.



Участие в DartUP бесплатное, нужно только зарегистрироваться до 4 декабря. Накануне конференции мы пришлем на вашу почту ссылки на онлайн-трансляции и активности. Подать заявку на доклад и стать спикером можно здесь.

Следите за новостями: совсем скоро мы опубликуем программу конференции и подробно расскажем про спикеров и темы докладов. Да, в этом году DartUP пройдет без фирменного пива, но никто не запрещает подготовить своё. Мы от лица организаторов обещаем, что будет интересно. До встречи в декабре!
Подробнее..

DartUP 2020 архитектура Dart VM, non-nullability в действии и Flutter для бизнеса

26.11.2020 20:11:58 | Автор: admin


Уже 4 и 5 декабря пройдет DartUP конференция по Dart и Flutter на русском и английском языках. Обычно в это время мы смотрим площадку, печатаем стикеры и запасаем в офисе коробки со свежеприготовленным Dart-пивом. Но в этом году все будет по-другому. Под катом рассказываем про темы докладов, спикеров и онлайн-активности, которые нас ждут на DartUP 2020.

Программа


Слава Егоров разработчик Dart VM из Google, который уже 10 лет работает с Dart. Слава расскажет про архитектуру Dart Virtual Machine и ее эволюцию в ходе развития языка. Хардкорный доклад с огромным количеством примеров с кодом.

Michael Thomsen, Product Manager языка Dart из Google, проведет лайвкодинг-сессию на тему Dart non-nullability в действии. Недавно команда Dart выпустила null-safety один из важнейших релизов со времен второй версии. Во время своего выступления Майкл ответит на один из главных вопросов комьюнити: как переносить реальные проекты на мажорную версию.

Вместе с Filip Hracek, DevRel Flutter и Dart из Google, мы решили подготовить не обычный доклад, а веселый интерактив. Поэтому объявляем конкурс Cracking up Flutter: присылайте на wriketechclub@team.wrike.com свои Codepen с любым Flutter-приложением, которое не работает из-за ошибки в одной строчке кода, и правильный ответ. В теме письма укажите Cracking up Flutter.

Мы покажем ваши submissions Филиппу во время его выступления, и он за ограниченный промежуток времени попробует разобраться и найти место, в котором прячется ошибка. Присоединяйтесь к чату во время трансляции, чтобы помочь Филиппу в процессе! Участнику конкурса, который спрячет ошибку так виртуозно, что Филипп не сможет ее найти, мы подарим приз.




На круглом столе Flutter для бизнеса Борис Горячев (CTO в Meduza), Геннадий Евстратов (Head of iOS в Yandex.Taxi) и Александр Денисов (Co-Head of Flutter Competency в EPAM) поспорят о том, как продавать Flutter бизнесу и отвечать на три самых распространенных вопроса: А что если Google решит закрыть Flutter через год?, Где искать разработчиков? и Какие перспективы есть у Flutter?.

Kevin Segaud Dart и Flutter GDE, который уже выступал на DartUP в прошлом году. В этот раз Кевин расскажет про интересную и достаточно новую для комьюнити тему Dart FFI. Будет немного теории и много практики: Кевин в реальном времени покажет, как использовать Dart в связке с кодом C и расскажет про плюсы и минусы такого подхода.

Андрей Смирнов из Wrike знает о виджетах практически все. На прошлой конференции Андрей рассказывал про работу с графикой, а в этом году погрузится в устройство Flutter Engine, расскажет про Rendering Pipeline, Constraints и про то, как эти инструменты использовать на практике.

Кирилл Бубочкин из чешской компании Mews поделится опытом использования Flutter в продакшне: команда год назад переписала на Flutter свое большое B2B-приложение. На DartUP 2020 Кирилл расскажет про архитектурные подходы и полезные библиотеки.

Thomas Burkhart выступит с темой, которую редко удается встретить на Flutter-конференциях. Томас расскажет про RVMS практичную архитектуру для Flutter-приложений, поделится своим опытом и последними наработками.

Доклад Efthymis Sarbanis (Athens Flutter) круто зайдет в комбинации с предыдущим докладом Томаса. Efthymis Dart и Flutter GDE и организатор Flutter Greek Community. В своем докладе он расскажет про изоляцию фич во Flutter и использование принципов Domain-Driven Design и SOLID.

Взаимодействие с картами требуется во многих приложениях. Алиса Цветкова из HIQ разберет библиотеки карт для Flutter, расскажет о подводных камнях при работе с ними и о том, как построить взаимодействие вашего приложения с картами.

Леша Шаров из Wrike готовит доклад про нейронные сети на Dart. Во время выступления Леши мы поговорим про то, что из себя представляют простейшие нейронные сети и можно ли использовать Dart для их написания. А еще будет несколько работающих примеров.

Нейронные сети Леша использовал и для создания Bugz онлайн-игры, в которой команды ботов-жуков, управляемые сгенерированным генокодом, сразятся друг с другом или с жуками Wrike. Всем зарегистрировавшимся на конференцию мы пришлем правила игры и ссылку.

Любителям хардкорных тем особенно понравится доклад Михаила Зотьева из Surf про внутренности Flutter: устройство Rendering, вывод виджетов и другие аспекты фреймворка. Будет полезно как новичкам, так и тем, кто хочет лучше разобраться во внутреннем устройстве Flutter.

Александр Денисов из EPAM расскажет про Navigator 2.0, который появился во Flutter относительно недавно. Саша расскажет, зачем они затащили его в проект, с какими сложностями столкнулись в процессе и что получилось в итоге.


Владимир Иванов из EPAM расскажет про проблему pixel perfect верстки, длинный фидбек луп на дизайн и про то, как инструмент Flutter Figma Preview может помочь в этой ситуации. Павел Мартынов из QuantumArt про особенности дизайна и разработки Flutter-приложений для AR-устройств. Андрей Скалкин из Datagrok поделится опытом создания высокопроизводительного веб-приложения на Dart.

Это далеко не полный список тем, о которых мы поговорим на конференции. Больше информации про спикеров, доклады и программу (которую мы опубликуем уже совсем скоро) ищите на dartup.ru.

Нетворкинг и онлайн-активности


Участники (и мы тоже!) любят DartUP не только за актуальные и полезные доклады, но и за неформальную атмосферу и возможность пообщаться с комьюнити.



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

Все неформальные нетворкинг- и Q&A-сессии будут проходить в SpatialChat. Там спикеры и эксперты из Wrike и Surf ответят на любые вопросы участников про Dart и Flutter. Готовьте свои трудные кейсы и приходите с кодом. Ребята из Surf объявили сбор идей и болей разработчиков для Open Source. А также эксперты из команды проведут код-ревью ваших репозиториев в прямом эфире. Все подробности по этой ссылке.

А пока присоединяйтесь к Slack-каналу, в котором мы будем постить анонсы во время конференции, отвечать на вопросы и неформально общаться.

Регистрируйтесь на DartUP до 4 декабря, готовьте вопросы спикерам и код на ревью. За день до конференции мы пришлем вам на почту ссылки на трансляции и активности. До встречи в декабре!
Подробнее..

Перевод Объявление о бета-тестировании null-safety Dart. Начало процесса миграции пакетов в надежное и безопасное состояние

27.11.2020 20:16:23 | Автор: admin


Безусловно, null-safety важный шаг в развитии языка. Команда Dart анонсировала бета-релиз версии с null-safety! Мы перевели на русский новость об этом релизе, в котором вы узнаете, как мигрировать на новые версии, какие преимущества получите, и в чем польза null-safety для всех нас.

Сегодня мы объявляем, что бета-версия с надежной null-safety доступна для Dart и Flutter. Null-safety это наше последнее важное достижение, призванное помочь вам избежать ошибок обращения к null-значениям класса ошибок, которые часто трудно обнаружить. Это видео в общих чертах объясняет причину нашей радости:


С переходом на бета-версию с null-safety пришло время для миграции тысяч пакетов, доступных на pub.dev. Мы перенесли библиотеки ядра Dart, фреймворк Flutter и более 40 пакетов Dart и Flutter. При этом мы надеемся, что комьюнити примет null-safety, мигрируя свои пакеты.



Выпустив бета-версию, мы также выходим на финишную прямую перед выпуском стабильной версии с null-safety. Надеемся, что вы воспользуетесь этой функциональностью и сообщите нам, можно ли ее улучшить и сделать более понятными UI-сообщения и документацию. Мы с большим нетерпением ждем ваших отзывов.

Выбор в пользу null-safety


Прежде чем обсуждать миграцию на null-safety, хотим повторить, что (как указано в наших принципах null-safety) у вас есть возможность выбирать, когда именно начинать переход. Приложения и пакеты будут работать только с null-safety, если их минимальное ограничение Dart SDK принадлежит по крайней мере к пред-релизной версии Dart 2.12:

environment: sdk: ">=2.12.0-0 <3.0.0"

Чтобы испытать ее, попробуйте создать небольшое null-safety приложение hello (например, с помощью dart create), содержащее код, как показано ниже. Затем можете попробовать запустить приложение до и после изменения ограничения SDK и запуска dart pub get и посмотреть, как меняется поведение программы. (Убедитесь, что dart --version возвращает вам именно 2.12)

bin/hello.dart:...void main() {  var hello = 'Hello Dart developers';  if (someCondition) {hello = null;  }  print(hello);} Before changing the SDK constraint:$ dart run null After changing the SDK constraint (and running dart pub get):$ dart run bin/hello.dart:6:13: Error: Null can't be assigned to a variable of type 'String' because 'String' is not nullable. hello = null;        ^


Переход к null-safety


Чтобы мигрировать пакет (или простое приложение) в режим null-safety, выполните следующие пять шагов, которые подробно описаны в руководстве по миграции на dart.dev.

Шаг 1: проверьте, готовы ли ваши зависимости


Настоятельно рекомендуем переносить код по порядку, начиная с листьев графа зависимостей. Например, если C зависит от B, который зависит от A, сначала мигрируйте на null-safety A, затем B, затем C. Этот порядок применим вне зависимости от того, являются A, B и C библиотеками, пакетами или приложениями.



Почему порядок так важен? Можно добиться некоторого прогресса в миграции кода до миграции зависимостей, но есть риск столкнуться с необходимостью повторного прогона, если ваши зависимости изменят свои интерфейсы во время миграции. Если некоторые из ваших зависимостей не null-safety, подумайте о том, чтобы связаться с издателями пакетов, используя контактные данные, указанные для каждого пакета на pub.dev.

Проверка готовности зависимостей


Чтобы проверить, готово ли ваше приложение или пакет к началу миграции, можете выполнить dart pub outdated в режиме null-safety. Приведенный ниже пример показывает, что приложение будет готово к миграции, если обновит свои зависимости на path, process и pedantic до пред-релизных версий, перечисленных в столбце Resolvable.



Если поддержка null-safety доступна в новых минорных версиях, вы увидите их в столбце Upgradable. Часто поддержка null-safety будет доступна в мажорных новых версиях; в этом случае вы увидите версии, перечисленные в разделе Resolvable в выводе утилиты outdated. Для перехода на них отредактируйте файл pubspec.yaml, чтобы разрешить эти мажорные версии. Например, можете поменять
process: ^3.0.13 на process: ^4.0.0-nullsafety.

Также вы можете найти пакеты с поддержкой null-safety на pub.dev, используя новые теги Null safety на страницах пакетов (например, collection 1.15) и новую опцию Расширенного поиска null safety search.



Шаг 2: перенос с помощью инструмента миграции


Если зависимости готовы, можете приступать к переносу вашего приложения или пакета с помощью инструмента миграции dart migrate.

Инструмент миграции интерактивен, поэтому вы можете просмотреть свойства null-safety, выведенные этим инструментом. Если вы не согласны с каким-либо результатом работы инструмента, можно добавить подсказки о допустимости пустых значений, чтобы изменить его. Добавление всего нескольких подсказок может оказать огромное влияние на качество миграции.



Несколько авторов пакетов Dart протестировали миграцию с использованием ранних предварительных сборок null-safety, и их отзывы были воодушевляющими. В руководстве по миграции есть дополнительные подсказки по использованию инструмента миграции.

Шаг 3: статический анализ перенесенного кода


Обновите пакеты с помощью pub get в вашей IDE или в командной строке. Затем используйте IDE или командную строку для выполнения статического анализа вашего кода Dart:

$ dart pub get$ dart analyze


Или на коде Flutter:

$ flutter pub get$ flutter analyze


Шаг 4: убедитесь, что тесты проходят


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

Шаг 5: опубликуйте свой null-safety пакет


Завершив миграцию и прогнав тесты, можете опубликовать свой пакет в качестве пререлиза. Вот краткое изложение наилучших практик:

  • Обновите версию до следующей мажорной версии (например, с 2.3.x до 3.0.0). Это гарантирует, что пользователи вашего пакета не обновятся до него, пока не будут готовы использовать null-safety. Это дает вам свободу рефакторинга API, чтобы наилучшим образом применить null-safety.
  • Переведите и опубликуйте свой пакет в качестве предварительной версии на pub.dev. (Например, используйте 3.0.0-nullsafety.0, а не 3.0.0.)


Для более подробной информации о миграции и управлении версиями см. руководство по миграции.

Преимущества гарантированной null-safety


В наших предыдущих публикациях, посвященных техническим превью null-safety в Dart и Flutter, на ряде примеров обсуждались преимущества этих перемен. Теперь, когда null-safety близится к завершению, мы видим несколько реальных примеров этого преимущества.

Более безопасный код


Совсем недавно мы обнаружили ошибку в основной ветке Flutter, из-за которой различные команды инструмента flutter вылетали на определенных конфигурациях машины с ошибкой null: The method '>=' was called on null. Основной проблемой был недавний пулл-реквест на добавление поддержки для обнаружения Android Studio 4.1. Этот пулл-реквест добавил такой код:

final int major = version?.major;final int minor = version?.minor;if (globals.platform.isMacOS) {  /// plugin path of Android Studio changed after version 4.1.  if (major >= 4 && minor >= 1) {    ...


Можете найти ошибку? Поскольку версия может быть null, как основная, так и дополнительная версия также могут быть null. Этот баг может показаться легко находимым здесь в изоляции, но на практике подобный код проскальзывает постоянно, даже при строгом процессе код-ревью, который используется в репозитории Flutter. При null-safety статический анализ сразу же отлавливает эту проблему:



Это была довольно простая ошибка. На ранних этапах использования null-safety во внутреннем коде Google мы видели, как благодаря null-safety обнаруживаются, а затем решаются гораздо более сложные ошибки. Вот несколько примеров:

  • Внутренняя группа обнаружила, что они часто проверяют наличие null значений в коде, которые null-safety определяла как никогда не null. Эта проблема чаще всего встречается в коде, использующем protobuf, где необязательные поля возвращают значение по умолчанию, когда оно не задано, и никогда не имеют значения null. Это приводило к тому, что код неправильно проверял условие по умолчанию, смешивая значения по-умолчанию и null значения.
  • Команда Google Pay обнаружила баги в своем коде Flutter, из-за которых они не могли получить доступ к объектам Flutter State вне контекста Widget. До null-safety они возвращали null и маскировали ошибку; при null-safety анализ определил, что эти свойства никогда не могут быть null, и выдал ошибку анализа.
  • Команда Flutter обнаружила ошибку, из-за которой движок Flutter потенциально мог выйти из строя, если null был передан параметру scene в Window.render(). Во время миграции на null-safety они добавили подсказку, чтобы пометить Scene как не допускающую нулевое значение, а затем смогли легко предотвратить потенциальные сбои приложения, которые мог вызвать переданный null.


Использование надежной null-safety во время компиляции


Надежность null-safety Dart имеет еще одно важное значение: компиляторы Dart могут использовать информацию о допустимости значений null. Это может сделать ваши программы меньше и быстрее. Пока что у нас не так много реальных приложений, полностью переведенных на null-safety (ведь мы только сейчас начинаем миграцию экосистемы пакетов, от которых эти приложения зависят в плане надежности), но мы видим очень обнадеживающие результаты из основного фреймворка.

Недавно мы провели тестовую перекомпиляцию образца hello_world, чтобы измерить влияние null-safety на размер приложения. Это минимальный пример, который просто отображает hello world. При сравнении общего размера скомпилированного кода размер несжатого (установленного на устройстве) кода сократился на 3,5% без каких-либо действий кроме перекомпиляции с надежной null-safety. Это стало возможным несмотря на то, что все приложение состояло из 10 строк кода, потому что размер кода всех включенных библиотек сократился; например, сам фреймворк Flutter (package:flutter) сократился на 3,9%.

Что касается скорости кода, то необходимость принудительного использования системы надежных типов данных потенциально увеличивает накладные расходы. Однако меньшее количество проверок на null также потенциально ускоряет код. Первоначальный анализ тестов показывает, что производительность находится на одном уровне с предыдущими релизами, а новая дополнительная информация о типах дает нам потенциал для новых способов улучшения производительности в будущем. Мы планируем подробнее написать об этом в следующих публикациях.

В некоторых случаях мы уже видели, как null-safety приводила к росту производительности, когда переход обнаруживал изъян в логике кода. Например, мы обнаружили проблему в кеше позиционирования текста во Flutter web. Этот кеш использовал ключ, допускающий значение null, а затем по заданной логике использовал TextAlign.start при null. Эта логика вызывала ошибку в кеше, когда элементы выглядели так, будто они изменились, даже если у них все еще было значение по умолчанию. В результате часто случались нерезультативные обращения в кеш. Добавление геттера textAlign, не допускающего значения null, помогло исправить ошибку кеширования, что привело к увеличению производительности рендеринга текста в 14 раз в случаях кешируемого текста.

Начните сегодня!


Бета-версии Dart и Flutter, содержащие null-safety, уже готовы. Если вы пишете на Flutter, можете переключиться на бета-версию с помощью flutter channel beta, а затем flutter upgrade. А если вы не используете Flutter, то можете получить автономный Dart SDK из архива Dart SDK.

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

Если вы разработчик приложения, можете отложить перенос, пока функция не появится в наших стабильных версиях. Мы планируем быстро отреагировать на фидбек бета-версии и исправить все оставшиеся проблемы. Трудно назвать конкретные сроки, когда null-safety выйдет в стабильном релизе, но мы думаем о начале следующего года.

Спасибо за вашу поддержку и обратную связь! Мы работаем над тем, чтобы сделать Dart более надежным языком, а Flutter более мощным фреймворком.

Michael Thomsen, продакт-менеджер Dart и Flutter, опубликовал эту статью в официальном блоге Dartlang. Если вы хотите послушать доклад Майкла и пообщаться с ним лично, приходите на DartUP 2020 Online 4 и 5 декабря и обсудите последние обновления языка с командой Dart и сообществом.
Подробнее..

DartUP 2020 итоги и видеозаписи докладов

23.12.2020 12:19:27 | Автор: admin


Вот и отгремел DartUP 2020! Два дня мы слушали доклады про Dart и Flutter, играли в Code Kombat и Bugz Arena и общались с участниками и спикерами в SpatialChat. Получилось ничуть не менее атмосферно, чем в офлайне. В этой статье мы подведем итоги конференции и поделимся с вами видеозаписями докладов на русском и английском.

Немного цифр про DartUP 2020:

  • 2 дня, 10 часов докладов и активностей
  • 29 спикеров
  • 2 200 зарегистрировавшихся на конференцию
  • 2 500 уникальных зрителей на Youtube

Топ-3 доклада на русском по оценкам участников


Вячеслав Егоров, Google 10 years of Dart

Слайды

Михаил Зотьев, Артём Зайцев, Surf Flutter под капотом

Слайды

Света Кривошеева, Effective Я не художник, я только программирую

Слайды

Топ-3 доклада на английском по оценкам участников


Efthymis Sarbanis Feature isolation in Flutter

Michael Thomsen, Google Dart non-nullablity in action

Rafa lsarz Slivers and Boxes How Scrolling Works

Слайды

Видеозаписи всех докладов со ссылками на презентации смотрите в плейлисте на Youtube.

Если захотите ненадолго вернуться на DartUP, посмотрите наш небольшой фотоотчет от иллюстратора Софьи Мироедовой. Так выглядела бы конференция, если бы проходила оффлайн.

Все материалы (иллюстрации, ссылки на видеозаписи и описания докладов) вы также всегда можете найти на официальном сайте DartUP.

Присоединяйтесь к русскоязычному сообществу Dart & Flutter в Telegram и Slack-каналу, в котором также можно продолжать общаться и задавать вопросы комьюнити.



Спасибо, что были с нами эти два дня! Надеемся на встречу в следующем году.
Подробнее..

Перевод Подготовка экосистем Dart и Flutter к переходу на null safety

26.02.2021 18:20:16 | Автор: admin

Поезд null safety мчится вперёд, уже почти официально анонсирован Flutter 2.0 (подключайтесь к предстоящему Flutter Engage), экосистема Dart тоже не стоит на месте. Мы перевели на русский язык новость из официального блога Dartlang и настоятельно рекомендуем вам переводить свои пакеты на новые рельсы, если вы этого ещё не сделали!

Вышел стабильный API для null safety

На днях вышла новая бета версия Dart, которая отличается повышенной стабильностью и наличием надежной null safety системы, над которой мы работали больше года. Обновленная бета (2.12.0259.9.beta) доступна на dart.dev и на бета канале Flutter. До выхода стабильной версии null-safe Dart критических изменений больше не предвидится.

Мы призываем разработчиков публиковать null-safe версии своих пакетов, чтобы пользователи смогли получить полноценную функциональность экосистемы на момент публикации стабильной версии null-safe Dart. Сами мы этот процесс уже запустили опубликовали стабильные версии null-safe пакетов, таких как args, yaml и grpc. Если все ваши зависимости в null-safe состоянии и опубликованы под стабильной версией (например, 1.0.0 вместо 1.0.0-nullsafety.123), вам пора заняться тем же!

На pub.dev мы также добавили новую фичу, которая сама размечает версии пакетов, помечая preview-релизы, если стабильная версия зависимого Dart SDK еще не вышла. Preview-релизы будут автоматически помечены как стабильные версии, как только состоится релиз стабильного Dart SDK.

Cтабильная (1.6.0) и preview (2.0.0) версии пакета args на pub.devCтабильная (1.6.0) и preview (2.0.0) версии пакета args на pub.dev

В руководстве по переходу на null safety есть вся последняя информация о том, как организовать миграцию ваших пакетов. Обратите особое внимание на ограничения Dart SDK и версии ваших зависимостей в pubspec. В том числе обратите внимание и на версию SDK, который вы используете для тестирования непрерывной интеграции (CI). Стабильная null-safe версия Dart выйдет уже скоро! Спасибо вам за поддержку!

Подробнее..

Wrike уходит от использования языка Dart. Часть 1

16.04.2021 16:20:16 | Автор: admin

Данной статьёй мы хотим пролить свет на технический стек Wrike: каким он был раньше и каким мы видим его в будущем. Мы расскажем о том, почему пять лет назад мы выбрали язык Dart основным для frontend-разработки нашего продукта и почему сейчас мы решили посмотреть в сторону других языков и фреймворков.

Что такое Wrike?

Для полноценного понимания наших технических решений необходимо рассказать, что такое Wrike как продукт. Wrike это большая SaaS платформа для управления проектами и совместной работы команд. Когда мы говорим большая, имеется в виду не только количество возможностей самого продукта (о которых вы можете почитать здесь), но и кодовая база. За годы своего развития, пока продукт рос и эволюционировал, мы прошли большой путь от:

Wrike, каким он был в 2014Wrike, каким он был в 2014

До:

Wrike 2021Wrike 2021

Столь же стремительно эволюционировали технический стек и команда разработки.

Если постараться рассказать на пальцах, что такое Wrike, то стоит отметить, что в мире управления проектами есть довольно много must have фич, без которых трудно себе представить полноценный продукт на этом рынке:

Gantt Chart, календари, таблицы и это далеко не полный набор возможностей WrikeGantt Chart, календари, таблицы и это далеко не полный набор возможностей Wrike

Это хорошо иллюстрирует сложность и комплексность UI Wrike, что накладывает дополнительную ответственность на инженерную команду с точки зрения требований перформанса, скорости разработки и стоимости поддержки.

Краткая история технического стека

Wrike появился в 2006, но так далеко мы копать не будем. Историю frontend-разработки нового времени Райка можно условно поделить на несколько этапов, рассматривая последние шесть лет.

JS + EXT

На тот момент (2013-2014) мы уже написали достаточно внушительный объём кода на чистом JS, которому тогда не было альтернатив. В качестве основного движка (или фреймворка, если хотите) мы использовали Ext.js третьей версии. Несмотря на теперешнюю архаичность, вы будете удивлены, но он по-прежнему жив-здоров! На тот момент в нём было достаточно много прорывных возможностей, которые потом, через года, трансформировались в то, к чему мы привыкли сейчас. Например, data stores с некоторой натяжкой можно считать провозвестником привычных нам stores в React.

Однако уже тогда было понятно, что JavaScript не отвечает нашим требованиям. Дело в том, что растущая команда и растущая кодовая база вынуждали нас искать язык, который предлагал бы:

  • строгую типизацию

  • большие возможности из коробки

  • хорошую работу с большими объемами кода (сборка, минимизация и т.д.)

DART. Почему не TypeScript?

2014-2015 года были сложными с точки зрения принятия инженерных решений. Мы оказались перед выбором: использовать TypeScript, который тогда только-только вышел на стабильную версию или взять Dart, который был более зрелым, но менее распространенным. Подробнее вы можете прочесть тут.

Ключевыми моментами в нашем выборе стали:

  • Более строгая типизация. Как показало время, и Dart, и TypeScript двинулись в сторону более строгой системы типов. Dart полностью перешёл на sound систему типов, TypeScript по-прежнему имеет с этим некоторые сложности.

  • Возможности из коробки. Порой third-party libraries могут быть очень полезны, а порой вредны. Одна из проблем современного мира web, и ее TypeScript не решает, это обилие библиотек, которые могут помочь ускорить разработку, но которые при этом нужно выбрать, поддерживать и время от времени обновлять. Шутки про node_modules уже вошли в историю. Dart при этом имеет достаточно богатую встроенную библиотеку, core библиотеки обновляются и поддерживаются самим Google

  • Агрессивный Tree-Shaking. Так как Wrike имеет огромный набор фичей, которые в итоге превращаются в большой объём кода, язык должен был помогать нам не загружать большое количество кода на клиент (см. Minification is not enough, you need tree shaking by Seth Ladd, a также github).

Эти и некоторые другие особенности убедили нас сделать выбор в пользу Dart. И, оглядываясь назад на почти шестилетнюю историю Dart и Wrike, мы видим, что выбор был правильным. Конечно, мы прошли долгий путь от Dart 1.x с его динамической типизацией и интеграцией с Polymer до AngularDart и Dart 2.x. Dart помогал нам год от года растить продукт с инженерной и бизнесовой точки зрения, продвигая компанию и продукт в лидеры рынка Work Management Platforms (Gartner and Forrester ratings).

Текущее состояние

Сейчас мы написали на Dart уже 2.5 миллиона строк кода, а кодовая база состоит из 365 репозиториев. Мы создали большое количество решений для сборки и проверки Dart-кода: например, Dart Code Metrics. Без преувеличения отметим, что Wrike один из самых больших потребителей Dart за пределами Google, что касается его web-ипостаси (появление Flutter способствовало взрывному росту популярности Dart, но пока ещё по большей мере в мире мобильной разработки).

Однако реальность такова, что язык сам по себе не может дать все необходимые инструменты для построения большого web-приложения. Экосистема имеет не менее, а, может, и более важное значение. Системы сборки, подсветки синтаксиса, интернационализации, фреймворки для View без этого невозможно себе представить современную разработку.

Экосистема Dart

Мы бы не хотели полностью пересказывать документацию, поэтому сосредоточимся на наиболее важной части фреймворках. Несмотря на то, что теоретически Dart позволяет работать со всеми web-фреймворками через JS interop, на самом деле выбор не очень большой:

  • OverReact обёртка над React от Workiva.

  • Flutter for Web популярный кроссплатформенный фреймворк, написанный на Dart, с недавнего времени поддержка web вышла в стабильной версии.

  • AngularDart де-факто стандарт для разработки web-приложений на Dart.

Другие решения возможны, но неудобны либо трудно реализуемы. Таким образом, выбирая Dart для web-разработки, вы вынуждены взять один из этих трёх фреймворков либо писать что-то своё.

Главные причины нашего ухода от разработки на Dart

В предыдущей части мы дали краткий обзор на текущее состояние экосистемы языка Dart, касаясь в основном её frontend-части. Пришло время подойти к одной из ключевых проблем, которая на момент написания этой статьи, к сожалению, не решена: при всём желании невозможно выбрать техническое решение на века. Мир frontend-разработки постоянно движется вперёд, развиваясь, порой, даже быстрее, чем того хотелось бы. Веб-браузеры также развиваются, добавляя новые и новые возможности и расширяя API. Веб-фреймворки, которые, казалось бы, по определению созданы для того, чтобы абстрагироваться от нижележащих слоёв, тоже вынуждены реагировать на это.

Вдобавок к этому существуют и модные течения даже в весьма хаотичном мире фронтенда. Какое-то время назад это был прогрессивный рендеринг (React Fiber, Angular Ivy). Сейчас появляется тенденция в виде отказа от глобальных state managers, для примера можно рассмотреть Effector. GraphQL, Server Side Rendering можно найти достаточно много вещей, которые обязательно должны быть поддержаны в современном веб-фреймворке.

Становится очевидно, что для SaaS-продукта, который движется вперёд со скоростью сверхзвукового истребителя, жизненно важно, чтобы техническая основа, фундамент, из которого он состоит, развивалась так же быстро.

И в этом фундаменте есть два составляющих элемента:

  • Код, который ваши инженеры пишут.

  • Код, который ваши инженеры НЕ пишут.

Современная разработка (особенно на фронтенде) щедро сдобрена использованием third-party библиотек и инструментов. Да что там, сейчас можно запустить продукт на рынок, вообще не написав ни строчки кода (так называемый no-code подход)! Тем не менее, код, который вы не написали это, с одной стороны, время, которое вы сэкономили, а с другой риск, который вы берёте на себя.

Разработка крупного продукта это всегда сложный баланс между написанием собственных решений / переиспользованием готовых / взаимодействием с разработчиками сторонних фреймворков. И используемые язык и фреймворк как одни из самых обширных и всепроникающих частей разработки становятся её наиболее уязвимым местом. В былые годы, когда продукты распространялись на дисках и концепция Continuous Delivery ещё не появилась, смена языка или фреймворка могла стоить критически дорого. Сейчас же, особенно с появлением концепции micro frontends, это не только не должно быть трагедией, а, наоборот, служит здоровым механизмом эволюционного развития.

Со всем вышесказанным приходится признать, что мы пришли к точке, где нам приходится пересмотреть свой текущий технический стек как не отвечающий нашим требованиям. Несмотря на то, что язык Dart и его экосистема движутся вперёд (в том числе благодаря взрывному росту популярности Flutter), а язык Dart становится всё лучше и лучше (например, с null safety) один ингредиент всё равно отсутствует web-фреймворк. Да, в самом языке уже есть примитивы, которые позволяют работать с DOM напрямую, но такая разработка может подойти для индивидуальных разработчиков, а не для больших команд.

Под отсутствием web-фреймворка мы имеем в виду, что никакое из существующих решений для языка Dart не обладает четырьмя необходимыми для современного web-фреймворка качествами:

  • Feature richness. Обеспечение работы со всеми (или большинством) возможностей, которые предоставляет современный web.

  • Performance.

  • Поддержка сообщества.

  • Развитие и добавление новых возможностей.

Если более пристально посмотреть на существующие фреймворки для языка Dart, то мы увидим, что:

AngularDart

Де-факто стандарт для веб-приложений. Отвечал почти всем требованиям, но, к сожалению, Google-команда сдвинула приоритет его развития в сторону Flutter. Это следует не только из твиттера Tim Sneath (менеджер Dart & Flutter):

Переписка о судьбе AngularDartПереписка о судьбе AngularDart

Но и из более официальных источников. Также можно прочесть ветку на GitHub. Да, AngularDart по-прежнему на месте, он жив, его можно использовать. Но ему не хватает одного из ключевых элементов: Развитие и добавление новых возможностей.

OverReact

Портированная версия React для Dart. К сожалению, поддержка комьюнити не очень большая, а сам проект разрабатывается в основном компанией Workiva.

Flutter for Web

Именно на этот фреймворк делают ставку инженеры Google. И он действительно движется вперёд взрывными темпами! Но то, что подойдёт небольшим компаниям или при портировании мобильного приложения на web, к сожалению, не подходит для наших задач.

В данный момент для нас есть несколько блокеров, связанных с Flutter Web. Основной это то, что невозможно встроить Flutter-приложение внутрь текущего веб-приложения. Ведь, к сожалению, Flutter нельзя обернуть в веб-компонент. Это очень сильно мешает концепции микро-фронтендов, основная идея которой состоит в том, что всю функциональность мы делим на независимые приложения. Эти приложения деплоятся и разрабатываются разными командами и имеют слабую связанность друг с другом. Если вы хотите узнать больше, на это есть соответствующий баг. Выходом было бы заворачивать микро-фронтенды в iframe, но это сопряжено с рядом трудностей технического характера.

Помимо этого, Flutter пока не имеет ряда немаловажных для современного web возможностей, например SSR или SEO.

Немаловажный аспект связан и со скоростью приложения: пока не совсем ясно, насколько Flutter сможет справиться, допустим, с табличным представлением. Мы проведём это исследование, когда появится возможность встраивать Flutter-приложение внутрь другого.

Таким образом, несмотря на нашу любовь к Dart и годы, которые мы прошли вместе, мы приняли решение двигаться в сторону изменения нашего технического стека, так как основная задача компании обеспечить возможность разработки приложения и через 2 года, и дальше, а с AngularDart мы объективно не можем этого гарантировать.

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

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

Подробнее..

Организация работы в креативной команде опыт Wrike, Miro, Revolut

18.09.2020 16:04:09 | Автор: admin


Мы в Wrike решили сделать встречу для сотрудников креативных команд дизайнеров, маркетологов, проджект-менеджеров чтобы поговорить об эффективных процессах там, где рутина может убить творчество. Позвали дизайн-лидов из Revolut, Miro и Wrike, чтобы они поделились своим опытом, наработками и секретами.
24 сентября, в 18:00 по Москве. Онлайн.


Спикеры:





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



В Miro мы делаем продукт для работы распределенных команд, и когда весь мир переключился на удаленную работу, мы столкнулись сразу с несколькими глобальными задачами:
Как трансформировать процессы в команде под удаленную работу
Как улучшить опыт + 4 миллионов новых пользователей
Какие ритуалы в дизайн-команде должны помогать обмениваться опытом и двигаться быстро

Я расскажу о том, как мы решали эти задачи и трансформировали дизайн-процесс после выхода на ремоут, как в компании сфокусировались на улучшении пользовательского опыта и внедрили 60+ улучшений за полтора месяца, а в конце поделюсь практиками организации удаленной работы дизайн-команды, которые помогут сохранять прозрачность и доносить ценность до пользователей.



Приходите и готовьте вопросы спикерам. Мы всегда рады диалогу в это непростое онлайн-время.

Регистрация

Подробнее..

Митап Организация работы в креативной команде видеозаписи докладов

28.09.2020 14:11:21 | Автор: admin


24 сентября Wrike организовал митап для сотрудников креативных команд (дизайнеров, маркетологов) и проджект-менеджеров, чтобы обсудить, как построить процесс, который обеспечит прозрачность работы, предсказуемые результаты и разумные сроки выполнения даже самых глобальных проектов.
Дизайн-лиды из больших продуктовых компаний Wrike, Miro и Revolut на примерах показали, как эффективно решались их задачи благодаря правильной организации командной работы.
Если пропустили, делимся видеозаписями.


Катя Сюма, Miro Выход на ремоут: как всё не сломать и поддержать новых пользователей
В Miro мы делаем продукт для работы распределенных команд, и когда весь мир переключился на удаленную работу, мы столкнулись сразу с несколькими глобальными задачами:
Как трансформировать процессы в команде под удаленную работу
Как улучшить опыт + 4 миллионов новых пользователей
Какие ритуалы в дизайн-команде должны помогать обмениваться опытом и двигаться быстро



Екатерина Пуданова, Wrike Структура, процессы и человечность.
Полгода мы работали над концепцией бренда в офисе, и через неделю после выхода на удаленку переосмыслили ее за неделю. Поговорим о методологиях быстрой генерации идей для распределенных команд, о планировании от формирования брифа до финального утверждения и о том, как сохранить бодрость духа, когда сроки горят.


Дмитрий Щеглов, Revolut Revolut Figma Playbook: интерактивная организация проектов
Доклад о том, по каким правилам играет дизайн-команда, работая над проектами, какие дизайн принципы стоят во главе угла и какие критерии оценки качества мы используем. Как коллективно строить дизайн систему и как добиться того, чтобы проекты выглядели так, будто бы их делал один дизайнер, а не 30.
Подробнее..

Разговоры в пижамах смотри запись встречи с Виталием Фридманом

30.06.2020 16:15:52 | Автор: admin


Продолжаем наш марафон пижамных разговоров. В этот раз позвали в гости Виталия Фридмана, редактора Smashing magazine, гуру в области веб-дизайна, юзабилити и завсегдатая ведущих европейских конференций по фронтенду и веб-технологиям.

Поговорили о том, в чем прелести и недостатки работы в консалтинге, вспомнили самые нелепые ситуации, произошедшие с Виталием во время выступлений, провели UX-ревью нескольких решений. На десерт Виталий показал 5 цепляющих примеров современного веб-дизайна. Приятного просмотра под катом!

Выпуск, как и весь проект Wrike Pyjama talks, на английском языке.

Свои предложения о том, кого хотели бы видеть гостем нашего марафона, оставляйте в комментариях. Попробуем это устроить.

Подробнее..

Встреча с Majid Hajian, экспертом по Flutter и PWA

01.09.2020 14:23:02 | Автор: admin


Привет!
Уже в этот четверг в рамках нашего шоу PyjamaTalks встретимся с Majid Hajian, евангелистом Flutter и PWA, автором книги Progressive web app with Angular и курса Progressive Web Apps на Udemy.

Маджид приезжал к нам прошлой зимой на конференцию DartUP 2019 (его доклад), теперь мы решили отправиться к нему в гости, пусть и виртуально.
Поговорим про флаттер, конференции, софт-скиллы и Норвегию, которую гость считает лучшей в мире страной. Выясним, почему. Подключайтесь к трансляции и готовьте вопросы.

Узнать о проекте Pyjamatalks и посмотреть предыдущие эпизоды можно здесь.

Когда: 3 сентября 18:00 (Московское время)

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru