UfoStation
3.13K subscribers
285 photos
19 videos
13 files
634 links
Авторский канал про разработку, информационные технологии, компании и продукты ☮️

Секретный чат
https://xn--r1a.website/+WJap9ejonMNwKVGj

Подкаст: https://ufostation.mave.digital/
Поддержать: https://boosty.to/ufocoder
Download Telegram
С 6–17 декабря пройдет онлайн конференция https://podlodka.io/fecrew

Имеется один бесплатный билет, хочешь его получить?
Нажми на кнопку — получишь результат!
Завтра в это же время будет выбран победитель!
*****
Победители: Tim Khazamov
Какие ЯП подойдут в качестве первого языка программирования
Anonymous Poll
20%
Java
21%
C/C++
50%
Python
44%
JavaScript
16%
PHP
18%
Go
7%
Rust
6%
Haskell
4%
Closure
6%
Ни один из списка выше
Не думал, что опрос соберет столько реакции. Пользуясь случаем, хочу задать общественности другой вопрос: какие концепции в программировании, какую базу необходимо знать условному новичку, если на изучение у него есть 3 условных месяца?

Чтобы в дальнейшем он мог двигаться в любом интересующем его направлении
Верите в совпадения? Tracing Frames 101

В конце октября я делал доклад на ITeaConf (опубликовали в ноябре), где говорил о том, почему мы не следим за отброшенными кадрами. Если кратко, потому что это сложно. В докладе я лишь упомянул о том, что ответ нужно искать в работе жизненного цикла компоновщика.

В ноябре выходит доклад Tracing Frames 101 на конференции BlinkOn 15, который как раз и раскрывает эту тему глубже — профилирование (или точнее трассировка) кадров.

Если вам интересны тонкости работы рендеринга Chromium браузера, то рекомендую видео к просмотру.

Дополнительные ссылки

- BlinkOn - youtube-канал с всеми докладами конференции;
- BlinkOn 15 — официальное описание мероприятия;
- How cc Works — документ о работе компоновщика в Chromium;
- Life of a frame — документ о жизненном цикле кадра.
This media is not supported in your browser
VIEW IN TELEGRAM
Donut math: how donut.c works

Как написать вращающийся в пространстве пончик в консоли на JavaScript
На днях пересобрал из своих заметок доклад Браузерный рендеринг (слайды) для podlodka fecrew, если до этого не смотрели доклады на эту тему, то текущий может вполне зайти.

Немного напутал со скринами для эксперимента с моделями создания рендер процессор, но там я пересказываю, некоторые заметки из этого канала.
В следующем году п̶е̶р̶е̶с̶к̶а̶з̶ы̶в̶а̶т̶ь̶ делать доклады про рендеринг не собираюсь — пора переключиться на другую большую тему, погружение в которую слишком долго откладывал. Постараюсь выдать некоторый контент на тему приватности и/или анонимности с точки зрения браузера.
👍1
Возможно, вам не нужен Rust, чтобы ускорить ваш JS

Статья начала 2018 года, не знаю насколько она актуальна сегодня, вдруг в v8 для некоторых примеров из статьи что-то изменилось за это время, однако сами подходы к оптимизации JavaScript кода довольно интересны и неожиданны. И почему я раньше не читал статьи от Вячеслава Егорова

Русский перевод: https://habr.com/ru/post/350018/
Оригинал: https://mrale.ph/blog/2018/02/03/maybe-you-dont-need-rust-to-speed-up-your-js.html
Defront Feed — новости веб-разработки

Мне часто попадаются небольшие новости и статьи, которые не попадают под формат канала. Такие материалы я обычно ретвичу или делюсь ими в чате канала. Долго думал, как эффективнее доносить их до аудитории. Публиковать их здесь не хочется, так как пропадёт фишка канала с дистиллированными статьями. Поэтому решил сделать отдельный канал для такого новостного контента — Defront Feed. В нём будут публиковаться новости и мини-посты, которые не попали в Defront и Defront Plus.

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

@defront_feed
Менеджеры состояний
UfoStation-s01e09
Менеджеры состояний

Гости выпуска:
— Артем Арутюнян: twitter, telegram
— Александр Колесников: twitter

Содержание выпуска:
- 00:03:12 - Состояние и менеджер состояний (SM)
- 00:06:00 - Множество состояний
- 00:10:18 - Зачем SM, если есть встроенные API
- 00:12:28 - Единый интерфейс, единственный API
- 00:20:13 - Принципы, лежащие в основе SM
- 00:27:46 - Почему появляются новые SM
- 00:35:58 - Влияние SM на архитектуру приложения
- 00:42:12 - Как быть непосвященному разработчику
- 00:47:32 - Переход на новый SM в приложении
- 00:51:52 - Стандартизация API
- 00:59:41 - Проблемы больших состояний
- 01:05:18 - Синхронизация c бекэндом
- 01:09:05 - 2 менеджера состояний и 1 состояние

Слушать подкаст на других платформах
🔥4
Дружественные каналы о разработке

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

devSchachtChannel — Подкаст. Переводы. Веб-разработка. Ведущий канала Андрей Мелихов. У Андрея есть также youtube-канал, где вы сможете найти ролики про NodeJS, Nest, архитектуру и прочее, также есть подкаст на soundcloud. Благодаря Андрею можно сказать появился подкаст Станция НЛО, ведь все записи происходят на подаренный им микрофон.

Defront — ламповый канал про фронтенд и не только. Всё самое полезное для опытных web-разработчиков. Ведущий канала — Александр Мышов. В канале публикуются краткие пересказы статей, у каждой статьи есть хэштэги, что помогает поиску. В свое время канал позволил ознакомится со множеством статей касательно performance. Существует еще дочерний проект Defront Feed.

Вебня — JS VMs, спецификации, пропозалы, встречи #TC39, WebAssembly, W3C, браузеры, нёрдство. Ведущие канала: Сергей Рубанов, Роман Дворнов (@gorshochekvarit). Благодаря вебне, можно быть на один шаг впереди касательно обновлений в ECMAScript.

wild_wild_web — небольшие заметки о TypeScript/Node.js. Ведущий канала: Евгений Обрезков. Известен своим проектом type-challenges-solutions. Если возникают какие-то вопросы по тонкостям типизации, то иногда заглядываю на его канал. Евгений помимо всего прочего первый гость подкаста Станция НЛО. Доклады Евгения.

vladtenlive — личный канал Влада, в котором помимо всего прочего появляются ссылки на технический контент. Концентрированный контент касательно разработки можно найти на его youtube канале, где он устроил марафон решений задач из leetcode. Также в рамках проекта "Мы обречены" Влад брал интервью у известных представителей мировой айти сферы в выпусках Тен за Бугром.

KirJS — Кирилл стримит про front-end, Open Source, Angular. Приходите на его стримы, там очень лампово. Кирилл периодически приглашает на стримы других разработчиков, где он пытается вместе с гостями разобраться в поставленных технических вопросах.

Math.random() — профессиональное сообщество: бесплатные вебинары; публичные собеседования; проекты на JavaScript из FrontEnd, BackEnd, Mobile. Ведущий канала: Андрей К. Присутствует также youtube-канал, на котором можно найти весь вышеобозначенный контент.

typesafesound — типы, фронтенд, DX и программирование в целом. Occasional music. Канал ведет Михаил, который пытается углубиться в типизацию, например, на канале можно найти стрим как решались задачки на Coq.
👍168🔥3
Григорий Петров - Почему Python медленный

Несмотря на заявленное название, в докладе рассматриваются и другие языки, в том числе Java, C#, JavaScript и тд. Рекомендую к ознакомлению всем интересующимся языками программирования.
👍4😱3
Антон Сергеев, «Go под капотом»

Скомпилированная программа "Hello world" на одной и той же машине, написанная:
— на C++ весит 8.2Кб
— на Golang весит 2.0Мб

Такая разница связана с находящимся в программе на Golang runtime: горутины, планировщики, стандартная библиотека и прочее.

О том, как работает Golang runtime, вы узнаете в этом видео. Помимо любителей Golang доклад будет интересен и тем, кто питает интерес к устройству программ, написанных на других языках.
🔥3👍2
Вчера Артем Арутюнян (@artalar) нашел уязвимость в популярном пакете Nano ID, у которого миллионы скачиваний в неделю. В частности Артем нашел проблему колизий при генерировании новых ID и предложил способ решения.
Forwarded from artalog (artalar)
valueOf

В моем личном списке, “что должен сделать успешный программист за свою карьеру”, есть два пункта: найти уязвимость в чужом ПО и исправить ее. Я никогда не надеялся их реализовать тк предметная область мне кажется достаточно сложной. Но вчера, совершенно случайно, при регулярном использовании nanoid у меня что-то стрельнуло в голове, и я пошел копать исходники.

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

Для нетерпеливых вот ПР с кодом воспроизведения проблемы и ее фиксом.

Детали. В вызов генератора идентификатора можно передать число для указания его длины. Чаще всего его не указывают и используется значение по умолчанию - 21. Одна из особенностей JS заключается в том что для математических операций над значениями вызывается их метод valueOf, который для Number возвращает само число, но для любых других объектов мы можем его переопределить. И возвращать разные числа по условию!

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

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

Интересно было и придумать исправление для этой ошибки. Не хотелось вносить большой оверхед в нано библиотеку, я сам увлекаюсь микрооптимизациями производительности и бандлсайза и для меня это был отдельный челендж. Несколько часов я экспериментировал. Первая реализация добавляла 4 байта, последующая size += size добавляла 2 байта. В итоговой версии я добавил всего 3 символа -=0, а магия минификатора и архиватора смогла нивелировать это до ничего - бандлсайз не изменился.

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

В течении дня я нашел уязвимость, связался с автором, сделал фикс, отрепортил все это в snyk, который завел CVE-2021-23566 (скоро будет опубликован). Андрей со всем помогал и сразу же зарелизил новую версию 3.1.31, за что ему отдельно спасибо.

В общем опыт был интересный, наконец удалось получить фан от слабой динамической типизации ЖСа 🙂
👍371
В ближайшее время планируется выпуск подкаста с разработчиком в сфере IT Healthcare с медицинским образованием.

Постоянный слушатель мог заметить, что подкасты проходят в формате интервью, где с моей стороны задаются вопросы. Если хотите, чтобы возможно и ваш вопрос попал в выпуск — напишите его ;)
👍17
IT Healthcare
UfoStation-s02e01
IT Healthcare

Гости выпуска:
— Александр Павлушкин (telegram, linkedin)

Содержание выпуска:

- 00:37 - Знакомство с гостем
- 05:31 - Информационные системы
- 11:41 - IT Healthcare
- 13:36 - Разработка без экспертизы
- 17:28 - Контроль FDA
- 20:17 - Ошибки в ПО
- 22:43 - Стандартизация ПО
- 27:19 - Google Healthcare API
- 28:10 - С чего начать в IT Healthcare
- 30:40 - Требования к стэку
- 32:33 - Удаленная диагостика
- 34:50 - Обмен данными м/у клиниками
- 39:32 - Кому принадлежат данные
- 42:14 - prodoctorov.ru
- 46:43 - Машинное обучение
- 51:51 - Чипирование
- 55:15 - Напутствие разработчикам

Слушать подкаст на других платформах
🔥7