Чем я занимаюсь в рабочее время?
Если коротко, то все мои задачи можно разделить на 3 большие группы:
- баг-фикс;
- реализация фичи;
- исследование стороннего сервиса/библиотеки/технологии для возможного использования в дальнейшем.
Теперь по порядку.
1. Баг-фикс. Здесь все просто, есть ожидаемое поведение, есть актуальное поведение. Когда эти два мира не сходятся, где-то на просторах проекта рождается баг. Причины могут быть разные, начиная с того, что разработчик не до конца реализовал задачу и, заканчивая тем, что тестировщики стучатся не в тот метод. С багами обычно есть правило: баг чинит тот,кто его нашел на чьей фиче его поймали. Самый простой способ понять, что пошло не так, если сразу не понятно, это пойти и почитать логи. Но учтите, чтиво не для слабонервных и может занимать до нескольких часов, так что советую вам быть осторожным 🙂
2. Реализация фич. Здесь тоже все просто: есть задача и есть требования к ней, как говорится, бери и делай. Если вы тоже так думаете, то представьте, что требований к задаче нет, а есть примерный набросок того, что нужно сделать. Что, например, вы обычно в таких случаях делаете? Я обычнозабиваюсь в угол и начинаю плакать иду к аналитикам, к своей команде, выяснять хотя бы какие-нибудь требования и исхожу из пользовательского опыта. А уже после вступает правило "глаза боятся, руки делают")
3. Исследование стороннего сервиса/библиотеки/технологии. Это мое любимое. Я люблю, в меру своей любознательности, покопаться в чем-то новом, так еще и платят за это, что может быть лучше? Как раз так я узнал про фреймворк Blazor - о нем мы поговорим завтра. После исследования необходимо описать результаты, сделать выводы, а опыт в написании отчетов у меня большой 😉
#underhood
Если коротко, то все мои задачи можно разделить на 3 большие группы:
- баг-фикс;
- реализация фичи;
- исследование стороннего сервиса/библиотеки/технологии для возможного использования в дальнейшем.
Теперь по порядку.
1. Баг-фикс. Здесь все просто, есть ожидаемое поведение, есть актуальное поведение. Когда эти два мира не сходятся, где-то на просторах проекта рождается баг. Причины могут быть разные, начиная с того, что разработчик не до конца реализовал задачу и, заканчивая тем, что тестировщики стучатся не в тот метод. С багами обычно есть правило: баг чинит тот,
2. Реализация фич. Здесь тоже все просто: есть задача и есть требования к ней, как говорится, бери и делай. Если вы тоже так думаете, то представьте, что требований к задаче нет, а есть примерный набросок того, что нужно сделать. Что, например, вы обычно в таких случаях делаете? Я обычно
3. Исследование стороннего сервиса/библиотеки/технологии. Это мое любимое. Я люблю, в меру своей любознательности, покопаться в чем-то новом, так еще и платят за это, что может быть лучше? Как раз так я узнал про фреймворк Blazor - о нем мы поговорим завтра. После исследования необходимо описать результаты, сделать выводы, а опыт в написании отчетов у меня большой 😉
#underhood
Как заканчивается мой рабочий день?
В конце дня я заполняю отчет о проделанной работе в нашей системе трэкинга времени. Отчеты пишутся на английском языке и по началу мне было сложно, потому что английский у меня не самый лучший. Но начинаю замечать, что в Google Translate заглядываю все реже и реже.
Также в конце рабочего дня стараюсь закрыть текущую задачу или доделать её до какой-то условной точки, даже если придется немного задержатся, минут на 10-15. Обычно я оставляю пометки, чтобы в следующий день было проще вспомнить, что я вчера наделал. И после со спокойной душой ухожу.
Эпизодически бывают случаи, что перед самым уходом, ты уже написал отчет, собрал вещи, как внезапно прилетает «маленький баг». Ну а как бывает дальше, вы знаете 🙂
Но сегодня, кажется, я уйду вовремя, потому что отключил все нотификации)
—
Это последний пост на сегодня. Завтра как и обещал буду писать про Blazor✌️
#underhood
В конце дня я заполняю отчет о проделанной работе в нашей системе трэкинга времени. Отчеты пишутся на английском языке и по началу мне было сложно, потому что английский у меня не самый лучший. Но начинаю замечать, что в Google Translate заглядываю все реже и реже.
Также в конце рабочего дня стараюсь закрыть текущую задачу или доделать её до какой-то условной точки, даже если придется немного задержатся, минут на 10-15. Обычно я оставляю пометки, чтобы в следующий день было проще вспомнить, что я вчера наделал. И после со спокойной душой ухожу.
Эпизодически бывают случаи, что перед самым уходом, ты уже написал отчет, собрал вещи, как внезапно прилетает «маленький баг». Ну а как бывает дальше, вы знаете 🙂
Но сегодня, кажется, я уйду вовремя
—
Это последний пост на сегодня. Завтра как и обещал буду писать про Blazor✌️
#underhood
Всем привет! Сегодня завершаем андерхуд интенсив прекрасной темой про Blazor.
В 2018 году Microsoft анонсировала новый веб-фреймворк, который позволяет создавать браузерные приложения, используя, помимо HTML и CSS, также язык C# и синтаксис Razor. Назвали Blazor (не путать с напитком).
Да, да, это тот самый Razor, который раньше запускал представления (view) Razor на сервере, формируя таким образом HTML-код, который мог быть выведен браузером. Теперь же представления Razor можно выполнять на стороне клиента.
Он дает все преимущества богатых современных одностраничных приложений (SPA), позволяя при этом использовать .NET везде, вплоть до общего кода на сервере и клиенте.
Далее расскажу про основные подходы, который предлагает Blazor. Пишите, что бы вам хотелось про новый веб-фреймфорк от Microsoft?
#underhood #backend #frontend
В 2018 году Microsoft анонсировала новый веб-фреймворк, который позволяет создавать браузерные приложения, используя, помимо HTML и CSS, также язык C# и синтаксис Razor. Назвали Blazor (не путать с напитком).
Да, да, это тот самый Razor, который раньше запускал представления (view) Razor на сервере, формируя таким образом HTML-код, который мог быть выведен браузером. Теперь же представления Razor можно выполнять на стороне клиента.
Он дает все преимущества богатых современных одностраничных приложений (SPA), позволяя при этом использовать .NET везде, вплоть до общего кода на сервере и клиенте.
Далее расскажу про основные подходы, который предлагает Blazor. Пишите, что бы вам хотелось про новый веб-фреймфорк от Microsoft?
#underhood #backend #frontend
Что нам предлагает Blazor?
Для создания приложения с использованием Blazor у нас есть 2 сценария:
1. Blazor WebAssembly
2. Blazor Server
Blazor WebAssembly позволяет размещать наши клиентские компоненты Blazor с помощью WebAssembly.
WebAssembly (WASM) - это бинарный формат, который позволяет запускать код в браузере. Результат компиляции с языка высокого уровня. Если проще, то это низко-уровневная виртуальная машина, как у Java. Вот тут ссылка на языки, которые умеют в WASM. Также стоит сказать, что WASM является частью JavaScript: он загружается, запускается и вызывается из JavaScript. В свою очередь WASM умеет вызывать JavaScript.
Все современные браузеры сейчас поддерживают WASM, кроме IE11, но кому он нужен 🙂
Что загружается при старте приложения на Blazor WASM:
- всякие js bootstrap.
- mono.js - связывает WASM с JavaScript
- mono.wasm - CLR .NET
- и приложение в виде dll с зависимостями.
Вот тут можно потыкать "Hello world" проект на Blazor WASM.
При помощи WebAssembly теперь мы можем использовать С# на клиенте без обращения к серверу и сторонних плагинов, а это здорово.
Что по ограничениям? Ограничение накладывает сам WASM. Нельзя создавать всякие сложные объекты связанные с многопоточностью, например, мютексы - код просто не скомпилируется.
—
Наверное, немного вас подгрузил. Пишите ваши вопросы относительно Blazor WASM, в следующих постах постараюсь ответить.
Далее также расскажу про Blazor Server.
UPD: Мне тут подсказывают, что WebAssembly является низкоуровневым языком программирования. А также окружение может предоставлять API для вызова методов, которые экспортируются WASM-модулем при помощи JavaScript 🙂
#underhood #backend #frontend
Для создания приложения с использованием Blazor у нас есть 2 сценария:
1. Blazor WebAssembly
2. Blazor Server
Blazor WebAssembly позволяет размещать наши клиентские компоненты Blazor с помощью WebAssembly.
WebAssembly (WASM) - это бинарный формат, который позволяет запускать код в браузере. Результат компиляции с языка высокого уровня. Если проще, то это низко-уровневная виртуальная машина, как у Java. Вот тут ссылка на языки, которые умеют в WASM. Также стоит сказать, что WASM является частью JavaScript: он загружается, запускается и вызывается из JavaScript. В свою очередь WASM умеет вызывать JavaScript.
Все современные браузеры сейчас поддерживают WASM, кроме IE11
Что загружается при старте приложения на Blazor WASM:
- всякие js bootstrap.
- mono.js - связывает WASM с JavaScript
- mono.wasm - CLR .NET
- и приложение в виде dll с зависимостями.
Вот тут можно потыкать "Hello world" проект на Blazor WASM.
При помощи WebAssembly теперь мы можем использовать С# на клиенте без обращения к серверу и сторонних плагинов, а это здорово.
Что по ограничениям? Ограничение накладывает сам WASM. Нельзя создавать всякие сложные объекты связанные с многопоточностью, например, мютексы - код просто не скомпилируется.
—
Наверное, немного вас подгрузил. Пишите ваши вопросы относительно Blazor WASM, в следующих постах постараюсь ответить.
Далее также расскажу про Blazor Server.
UPD: Мне тут подсказывают, что WebAssembly является низкоуровневым языком программирования. А также окружение может предоставлять API для вызова методов, которые экспортируются WASM-модулем при помощи JavaScript 🙂
#underhood #backend #frontend
Blazor Server
В какой-то степени это похоже на подход, применявшийся в ASP .NET WebForms.
При загрузке JavaScript устанавливает SignalR соединение с сервером. Все файлы приложения уже лежат на серверной части нашего приложения.
При активности пользователя (например, при клике на какой-то компонент) он уходит через JavaScript, через вызов SignalR и отрабатывает на сервере, где есть виртуальное DOM-дерево. По binding происходит изменение DOM-дерева и разница отправляется на клиент и через JavaScript применяется на HTML.
При использовании такого подхода клиент становится тонким и мы можем использовать все возможности .NET, такие как доступ к файлам, многопоточные объекты и так далее. Загрузка приложения пободрее, чем у подхода с WASM, но не переживайте, IE11 тут тоже особо не работает 😂 (хотя я видел несколько статей, где применяют polyfill и все начнет работать😉)
Однако у такого подхода также есть существенные недостатки. SignalR использует протокол обмена сообщениями WebSocket, а это означает постоянное соединение. С одной стороны, это хорошо: не нужно постоянно устанавливать соединение. Но с другой стороны, каждый ответ сервера будет зависеть от скорости сети.
—
Далее посмотрим, что общего у Blazor WebAssembly c Angular и чем они различаются.
#underhood #backend #frontend
В какой-то степени это похоже на подход, применявшийся в ASP .NET WebForms.
При загрузке JavaScript устанавливает SignalR соединение с сервером. Все файлы приложения уже лежат на серверной части нашего приложения.
При активности пользователя (например, при клике на какой-то компонент) он уходит через JavaScript, через вызов SignalR и отрабатывает на сервере, где есть виртуальное DOM-дерево. По binding происходит изменение DOM-дерева и разница отправляется на клиент и через JavaScript применяется на HTML.
При использовании такого подхода клиент становится тонким и мы можем использовать все возможности .NET, такие как доступ к файлам, многопоточные объекты и так далее. Загрузка приложения пободрее, чем у подхода с WASM, но не переживайте, IE11 тут тоже особо не работает 😂 (хотя я видел несколько статей, где применяют polyfill и все начнет работать😉)
Однако у такого подхода также есть существенные недостатки. SignalR использует протокол обмена сообщениями WebSocket, а это означает постоянное соединение. С одной стороны, это хорошо: не нужно постоянно устанавливать соединение. Но с другой стороны, каждый ответ сервера будет зависеть от скорости сети.
—
Далее посмотрим, что общего у Blazor WebAssembly c Angular и чем они различаются.
#underhood #backend #frontend
Blazor WebAssemly и Angular?
При обзоре и первом опыте, мне показалось, что Blazor чем-то напоминает Angular. Также можно сделать 3 файла (верстка/стили/код) для компонента или держать все в одном файле. И на этом их сходство, к сожалению, закончилось) Как кому, кстати, больше нравится: разделять верстку, стили и код или держать все в одном файле?
Далее я столкнулся с проблемой подключения сторонних библиотек, потому что, в Angular это делается очень просто через npm. Для того, чтобы подключить библиотеку в Blazor, недостаточно как обычно в приложении написать команду установки пакета:
Вот например инструкция, как добавить Material Design компоненты для Blazor:
To Install:
Что кстати по HotReload в Blazor WASM?
Он есть, необходимо запустить приложение через
В общем, на первый взгляд, Blazor выглядит слегка сыроватым, но пригодным к применению веб-фреймворком и однозначно пришелся мне по вкусу. Надеюсь, что когда-нибудь он встанет на ряду с Angular, Vue и React.
#underhood #backend #frontend
При обзоре и первом опыте, мне показалось, что Blazor чем-то напоминает Angular. Также можно сделать 3 файла (верстка/стили/код) для компонента или держать все в одном файле. И на этом их сходство, к сожалению, закончилось) Как кому, кстати, больше нравится: разделять верстку, стили и код или держать все в одном файле?
Далее я столкнулся с проблемой подключения сторонних библиотек, потому что, в Angular это делается очень просто через npm. Для того, чтобы подключить библиотеку в Blazor, недостаточно как обычно в приложении написать команду установки пакета:
dotnet add package MatBlazor. Иногда необходимо сделать дополнительное действие - пойти еще что-то куда-то добавить.Вот например инструкция, как добавить Material Design компоненты для Blazor:
To Install:
dotnet add package MatBlazorКстати, будьте осторожными с подключением пакетов в Blazor WASM, потому что если библиотека будет использовать что-то, что не может использовать WASM, то ваше приложение не скомпилируется.
For client-side and server-side Blazor - add noscript section to index.html or _Host.cshtml (head section):
<noscript src="_content/MatBlazor/dist/matBlazor.js"></noscript>
<link href="_content/MatBlazor/dist/matBlazor.css" rel="stylesheet" />
Что кстати по HotReload в Blazor WASM?
Он есть, необходимо запустить приложение через
dotnet watch и тогда после каждого нажатия CTRL+S веб страница в браузере будет перезагружаться.В общем, на первый взгляд, Blazor выглядит слегка сыроватым, но пригодным к применению веб-фреймворком и однозначно пришелся мне по вкусу. Надеюсь, что когда-нибудь он встанет на ряду с Angular, Vue и React.
#underhood #backend #frontend
Что еще интересного?
Вот тут уроки, статьи, best practices, библиотеки, примеры проектов на Blazor, книги, подкасты и много чего еще.
Насчет больших, громких проектов, мне, к сожалению, не известно. Как мне кажется, еще слишком рано, ведь Blazor WASM зарелизился только в прошлом году и думаю, что люди еще только присматриваются к этой технологии.
В Меркури мы пока не используем Blazor. Но технология развивается и, возможно, в будущем мы попробуем фреймворк на подходящем проекте. Было бы круто услышать историю, как .NET-команда целиком затащила проект, как у нас делали фронтендеры с помощью React и React Native 💪
Пишите в коменты под этим постом, что думаете насчет Blazor? Возможно, я бы даже подготовил серию постов-ответов) Конечно же, если смогу ответить.
А это был последний пост на сегодня и на этом андерхуд - интенсив все) Это был отличный опыт, спасибо, что читаете, оставляете коменты, задаете вопросы и поправляете. Надеюсь, вам тоже было интересно) Успехов, всем пока ✌️
Вот тут уроки, статьи, best practices, библиотеки, примеры проектов на Blazor, книги, подкасты и много чего еще.
Насчет больших, громких проектов, мне, к сожалению, не известно. Как мне кажется, еще слишком рано, ведь Blazor WASM зарелизился только в прошлом году и думаю, что люди еще только присматриваются к этой технологии.
В Меркури мы пока не используем Blazor. Но технология развивается и, возможно, в будущем мы попробуем фреймворк на подходящем проекте. Было бы круто услышать историю, как .NET-команда целиком затащила проект, как у нас делали фронтендеры с помощью React и React Native 💪
Пишите в коменты под этим постом, что думаете насчет Blazor? Возможно, я бы даже подготовил серию постов-ответов) Конечно же, если смогу ответить.
А это был последний пост на сегодня и на этом андерхуд - интенсив все) Это был отличный опыт, спасибо, что читаете, оставляете коменты, задаете вопросы и поправляете. Надеюсь, вам тоже было интересно) Успехов, всем пока ✌️
GitHub
GitHub - AdrienTorris/awesome-blazor: Resources for Blazor, a .NET web framework using C#/Razor and HTML that runs in the browser…
Resources for Blazor, a .NET web framework using C#/Razor and HTML that runs in the browser with WebAssembly. - AdrienTorris/awesome-blazor
DevTools на Android
Вышла новая версия Kiwi Browser, основанная на Chromium 93.
На данный момент это единственный браузер на Android, который имеет инструменты разработчика (DevTools) и поддерживает расширения, прям как на настольных компьютерах.
Теперь, чтобы отладить веб-страницу или веб-приложение, не нужно на Android-устройстве включать настройки разработчика, активировать режим ADB (Android Debug Bridge), подключать его к настольному компьютеру по USB или Wi-Fi и т.д. Можно даже вообще не иметь настольного компьютера и сделать всё прямо на смартфоне, планшете, телевизоре или любом другом Android-устройстве. 🛠
Наш ведущий фронтенд-разработчик Алексей Родионов уже протестировал DevTools на Android. Говорит, есть мелкие проблемы — например, некоторые элементы интерфейса не оптимизированы для сенсорных экранов, но в целом это прорыв и в некоторых случаях просто незаменимый инструмент.
Вышла новая версия Kiwi Browser, основанная на Chromium 93.
На данный момент это единственный браузер на Android, который имеет инструменты разработчика (DevTools) и поддерживает расширения, прям как на настольных компьютерах.
Теперь, чтобы отладить веб-страницу или веб-приложение, не нужно на Android-устройстве включать настройки разработчика, активировать режим ADB (Android Debug Bridge), подключать его к настольному компьютеру по USB или Wi-Fi и т.д. Можно даже вообще не иметь настольного компьютера и сделать всё прямо на смартфоне, планшете, телевизоре или любом другом Android-устройстве. 🛠
Наш ведущий фронтенд-разработчик Алексей Родионов уже протестировал DevTools на Android. Говорит, есть мелкие проблемы — например, некоторые элементы интерфейса не оптимизированы для сенсорных экранов, но в целом это прорыв и в некоторых случаях просто незаменимый инструмент.
Twitter
Alexey Rodionov
ICYMI, @kiwibrowser is the only Chromium-based browser that has DevTools alongside Extensions support on Android, like on desktop. 🤯#DX #DeveloperExperience
Twitter тестирует кнопки дизлайков, а также апвоуты и даунвоуты как на Reddit.
В США разрушили монополию производителей на сервисное обслуживание
Как было раньше
Производители разрешали ремонтировать свою технику только в авторизированных сервисах и порой за неадекватные деньги. Нельзя было заказать оригинальные запчасти или скачать в открытом доступе специальное руководство. Хотите починить гаджет? Тогда выбирайте: либо «к мужикам в гараж», либо отдавай сумму, сопоставимую со стоимостью техники.
Как будет теперь
Пользователи и сторонние сервисные центры получат доступ к покупке оригинальных запчастей, руководствам и требуемому ПО.
Как было раньше
Производители разрешали ремонтировать свою технику только в авторизированных сервисах и порой за неадекватные деньги. Нельзя было заказать оригинальные запчасти или скачать в открытом доступе специальное руководство. Хотите починить гаджет? Тогда выбирайте: либо «к мужикам в гараж», либо отдавай сумму, сопоставимую со стоимостью техники.
Как будет теперь
Пользователи и сторонние сервисные центры получат доступ к покупке оригинальных запчастей, руководствам и требуемому ПО.
The Verge
President Joe Biden’s latest executive order is a huge win for right to repair
A major win for repair advocates
Microsoft открыла доступ к комплекту для разработки ПК-игр
В Microsoft Game Development Kit входят необходимые библиотеки, инструменты и документация. По умолчанию GDK можно использовать бесплатно только в учебных целях, а чтобы опубликовать созданную с его помощью игру, нужно подписать лицензионное соглашение с Microsoft.
В Microsoft Game Development Kit входят необходимые библиотеки, инструменты и документация. По умолчанию GDK можно использовать бесплатно только в учебных целях, а чтобы опубликовать созданную с его помощью игру, нужно подписать лицензионное соглашение с Microsoft.
GitHub
GitHub - microsoft/GDK: Microsoft Public GDK
Microsoft Public GDK. Contribute to microsoft/GDK development by creating an account on GitHub.
Facebook запустил облачный игровой сервис на iOS в виде PWA, чтобы обойти правила Apple и использовать собственную платежную систему.
Новость в тему недавнего предложения со стороны Apple использовать PWA, если кого-то не устраивают правила App Store.
Новость в тему недавнего предложения со стороны Apple использовать PWA, если кого-то не устраивают правила App Store.
Telegram
Mercury Daily: Tech, Space & Innovation
Apple предложила разработчикам обходить правила App Store при помощи PWA
Apple в своем ответе на жалобу австралийской комиссии по защите прав потребителей (Australian Competition and Consumer Commission, ACCC) заявила, что разработчики и пользователи iOS…
Apple в своем ответе на жалобу австралийской комиссии по защите прав потребителей (Australian Competition and Consumer Commission, ACCC) заявила, что разработчики и пользователи iOS…
This media is not supported in your browser
VIEW IN TELEGRAM
В Google поиске на смартфонах можно посмотреть, почему та или иная страница отображается в выдаче.
This media is not supported in your browser
VIEW IN TELEGRAM
Летние олимпийские игры в Токио открыло впечатляющее шоу дронов. Как думаете, сколько их там всего?
SpaceX и NASA отправят зонд к спутнику Юпитера, чтобы искать там жизнь.
NASA
NASA Awards Launch Services Contract for Europa Clipper Mission
NASA has selected Space Exploration Technologies Corp. (SpaceX) of Hawthorne, California, to provide launch services for Earth’s first mission to conduct detailed investigations of Jupiter's moon Europa.
Слышали о хранилище Судного дня? Это такой бункер на острове в Норвегии, где хранятся семена растений на случай ядерной катастрофы, чтобы человечество смогло восстановить цивилизацию из пепла.
Так вот, теперь на том же острове построят специальный бункер для хранения музыкальных записей «начиная от The Beatles и заканчивая австралийской музыкой коренных народов».
Так вот, теперь на том же острове построят специальный бункер для хранения музыкальных записей «начиная от The Beatles и заканчивая австралийской музыкой коренных народов».
HYPEBEAST
Doomsday Music Vault to Be Constructed in Arctic Island Near North Pole
The facility will be able to withstand disasters and nuclear attacks for at least 1,000 years.
This media is not supported in your browser
VIEW IN TELEGRAM
Забавный баг: автопилот Tesla иногда принимает Луну за желтый сигнал светофора 🌕
Цукерберг собирается создать метавселенную — конвергенцию физической, дополненной и виртуальной реальности в общем онлайн-пространстве.
The Verge
Mark Zuckerberg is betting Facebook’s future on the metaverse
An interview with the CEO about his most sci-fi speculation.
GitHub создаст фонд в $1млн для юридической помощи разработчикам в борьбе с DMCA-жалобами. Если конкретно, то речь о статье 1201, которая запрещает распространять исходный код, позволяющий обходить DRM-защиту.
Например, с такой жалобой столкнулись авторы youtube-dl — популярной утилиты для скачивания медиа с разных сайтов. GitHub пришлось заблокировать их репозиторий из-за жалобы Ассоциации звукозаписывающей индустрии Америки.
Например, с такой жалобой столкнулись авторы youtube-dl — популярной утилиты для скачивания медиа с разных сайтов. GitHub пришлось заблокировать их репозиторий из-за жалобы Ассоциации звукозаписывающей индустрии Америки.
The GitHub Blog
Standing up for developers: the GitHub Developer Rights Fellowship at Stanford Law School
GitHub’s Developer Defense Fund will enable independent legal support from the Stanford Juelsgaard Clinic to review and handle appropriate DMCA cases.
🧭 Бета Safari 15 для macOS Catalina стала доступна для разработчиков: https://developer.apple.com/download/all/