Буду по пятницам рекомендовать какие-то доклады или подкасты. Этот я ещё не слышал и тема может показаться скучной, но гость (Николай Рыжиков) очень интересный, рекомендую поискать его доклады в ютубе.
👍4
Forwarded from запуск завтра
Помните медицинские карты в больницах? Картонные книжечки, в которые вклеены десятки листочков с анализами и тем самым докторским почерком. Сегодня клиники по всему миру переходят на электронные медицинские карты.
Первый протокол передачи медицинских данных в электронном виде появился в конце 1970-х — на 10 лет раньше веб-протокола HTTP. При этом комплексно задача хранения и передачи медицинских данных не решена до сих пор. Почему?
Разбираемся в новом эпизоде подкаста вместе с российским апологетом самого современного протокола передачи медицинских данных FHIR Николаем Рыжиковым.
Слушайте и подписывайтесь на всех платформах: Apple, Google, Яндекс, Spotify, Castbox, Overcast, веб-версия.
Первый протокол передачи медицинских данных в электронном виде появился в конце 1970-х — на 10 лет раньше веб-протокола HTTP. При этом комплексно задача хранения и передачи медицинских данных не решена до сих пор. Почему?
Разбираемся в новом эпизоде подкаста вместе с российским апологетом самого современного протокола передачи медицинских данных FHIR Николаем Рыжиковым.
Слушайте и подписывайтесь на всех платформах: Apple, Google, Яндекс, Spotify, Castbox, Overcast, веб-версия.
🔥5👍2💩1
Декларативность
Андрей Мелихов прокоментировал мой предыдущий пост про кеширование и заметил, что декларативное программирование может быть решением проблемы производительности, тк помогает компилятору полностью понять код и лучше его оптимизировать.
Я согласен с этим посылом, но количество ньюансов так велико, что теперь всю неделю я буду бомбить по этому поводу, ждите цепочку постов 🙂
А пока, могу предложить на этот счет мои мысли трехлетней давности в виде доклада или его текстовой расшифровки.
Андрей Мелихов прокоментировал мой предыдущий пост про кеширование и заметил, что декларативное программирование может быть решением проблемы производительности, тк помогает компилятору полностью понять код и лучше его оптимизировать.
Я согласен с этим посылом, но количество ньюансов так велико, что теперь всю неделю я буду бомбить по этому поводу, ждите цепочку постов 🙂
А пока, могу предложить на этот счет мои мысли трехлетней давности в виде доклада или его текстовой расшифровки.
Telegram
melikhov.dev
Тут Артём развивает мысль, что оптимизации зачастую это попытка лечить последствия, а не причины. Если бы писали нормально, то никакие супер-пупер кэши и не понадобились бы (а как мы помним, кэши это вторая главная проблема программирования).
А вот вам интересный…
А вот вам интересный…
👍4🤔4🗿1
Декларативное программирование - паттерн ограничения семантики.
Все эти "что VS как" часто оторваны от реальности. В действительности, какая-то синтаксическая конструкция может включать в себя много семантики, имея большой контекст работы, а может мало.
Семантика, что? Не очень понятно? Когда мы пишем код - мы решаем с помощью него какую-то задачу. Проблема мейнстримных ЯП в том что в нескольких строчках их кода может содержаться много смысла и то что этот же смысл может быть записан другими строчками кода. Массив в JS можно обойти с помощью ключевых конструкций for, for of, for in и while, встроенного метода forEach или вспомогательной библиотеки, вроде R.forEach. При этом, в циклах можно использовать break и continue, а в колбеках forEach никакого break, только early return. await внутри вычисления дает разное поведение в колбеках и в цикле. Крыша уже едет, а мы просто хотели посмотреть на элементы массива.
Чем больше способов у нас есть для решения одной и той же задачи - тем проще нам будет ее решить при возникновении дополнительных условий. Но зачем ориентироваться на крайние случаи, когда в большинстве своем мы пишем однообразный код?
Под декларативным программированием обычно понимают использование таких конструкций, которые будут однозначны. Код с таким свойством действительно прост, легко пишется, легко читается и понимается. Это самое важное, на что стоит обращать внимание.
Какие есть еще способы достичь однозначности?
DSL (Domain Specific Language) - отдельный язык для описания очень ограниченного набора задач - в рамках выбранного домена. Т.к. он должен решать небольшой набор задач, то и код на нем проще и однозначнее. Причем, не обязательно такой код будет декларативен.
Бывают примеры, когда декларативный DSL оказывается чрезмерно сложным и позволяет одну задачу решать разными способами.
SQL прекрасный и, казалось бы, декларативный язык. Андрей рассказывал о его сравнении с наивной реализацией на общем языке программирования. Но как только вам нужна частая выгрузка для аналитики и перф, начинается профилирование сложности и пляски с джоинами (привет императив) вплоть до перестроения схемы. А по другому все еще не научились, оптимизация SQL до сих пор насущный вопрос.
Я бы забанил слово "декларативный" в наших комьюнити, потому что смысл оно только размазывает, а не подчеркивает. Это базворд, который считают за безусловное благо, хотя оно таковым не является.
Код должен быть однозначным - в этом заключается простота. Если глядя на код, не зная о входящих данных, можно с уверенностью сказать что он делает - это простой и однозначный код. Проектируйте API ваших библиотек с этой мыслью.
Все эти "что VS как" часто оторваны от реальности. В действительности, какая-то синтаксическая конструкция может включать в себя много семантики, имея большой контекст работы, а может мало.
Семантика, что? Не очень понятно? Когда мы пишем код - мы решаем с помощью него какую-то задачу. Проблема мейнстримных ЯП в том что в нескольких строчках их кода может содержаться много смысла и то что этот же смысл может быть записан другими строчками кода. Массив в JS можно обойти с помощью ключевых конструкций for, for of, for in и while, встроенного метода forEach или вспомогательной библиотеки, вроде R.forEach. При этом, в циклах можно использовать break и continue, а в колбеках forEach никакого break, только early return. await внутри вычисления дает разное поведение в колбеках и в цикле. Крыша уже едет, а мы просто хотели посмотреть на элементы массива.
Чем больше способов у нас есть для решения одной и той же задачи - тем проще нам будет ее решить при возникновении дополнительных условий. Но зачем ориентироваться на крайние случаи, когда в большинстве своем мы пишем однообразный код?
Под декларативным программированием обычно понимают использование таких конструкций, которые будут однозначны. Код с таким свойством действительно прост, легко пишется, легко читается и понимается. Это самое важное, на что стоит обращать внимание.
Какие есть еще способы достичь однозначности?
DSL (Domain Specific Language) - отдельный язык для описания очень ограниченного набора задач - в рамках выбранного домена. Т.к. он должен решать небольшой набор задач, то и код на нем проще и однозначнее. Причем, не обязательно такой код будет декларативен.
Бывают примеры, когда декларативный DSL оказывается чрезмерно сложным и позволяет одну задачу решать разными способами.
SQL прекрасный и, казалось бы, декларативный язык. Андрей рассказывал о его сравнении с наивной реализацией на общем языке программирования. Но как только вам нужна частая выгрузка для аналитики и перф, начинается профилирование сложности и пляски с джоинами (привет императив) вплоть до перестроения схемы. А по другому все еще не научились, оптимизация SQL до сих пор насущный вопрос.
Я бы забанил слово "декларативный" в наших комьюнити, потому что смысл оно только размазывает, а не подчеркивает. Это базворд, который считают за безусловное благо, хотя оно таковым не является.
Код должен быть однозначным - в этом заключается простота. Если глядя на код, не зная о входящих данных, можно с уверенностью сказать что он делает - это простой и однозначный код. Проектируйте API ваших библиотек с этой мыслью.
👍19👎2
Почему на компьютере модалки не имеют бекдроп?
Потому что диалог в вебе являются частью приложения, в то время как в настольном мире это отдельное окно. Так же и мобильные платформы используют фон для диалогов, что опять же связано со сложностью управления окнами.
from this twit
Потому что диалог в вебе являются частью приложения, в то время как в настольном мире это отдельное окно. Так же и мобильные платформы используют фон для диалогов, что опять же связано со сложностью управления окнами.
from this twit
Twitter
artalar
@adamwathan Because web dialog is a part of app and it is separate window in desktop world. Also, mobile platforms show backdrop too for dialogs, because of difficult window management again.
👍3👎2
Как же у меня бомбит с тайпскриптовых енумов.
Мало того что они используют зарезервированное в ЖС слово (что обязательно в какой-то момент сломается), так и реализованы криво и имеют плохой интероп с остальными типами / значениями и в общем ощущаются как очень странный костыль вместо юнионов.
Главная практическая проблема в них, для меня, в том что их нельзя мапить на уровне типов, те дженерик операции над енумами практически невозможны. Какие-то гиперболизированные, но бесполезные unique type, но иногда не unique 🤪
Мало того что они используют зарезервированное в ЖС слово (что обязательно в какой-то момент сломается), так и реализованы криво и имеют плохой интероп с остальными типами / значениями и в общем ощущаются как очень странный костыль вместо юнионов.
Главная практическая проблема в них, для меня, в том что их нельзя мапить на уровне типов, те дженерик операции над енумами практически невозможны. Какие-то гиперболизированные, но бесполезные unique type, но иногда не unique 🤪
👍13🤔9💩8
А через час будет стрим по разработке реатома.
🔥5
Проблемы с интернетом, 5 минут, попробую исправить
UPD: патити(
UPD: патити(
🤔10
Forwarded from $mol: Новости
$hyoo_js_opt - инструмент, помогающий понять, как TurboFan (JIT компилятор V8) оптимизирует ваш JS код. Сейчас он умеет показывать какие функции были (де)оптимизированы и со скольки попыток, какие и где функции были заинлайнены, а где происходят неявные нативные вызовы.
Работает это так:
- Запускаете CLI утилиту turbotracer, написанную @cevek, передав ей путь к скрипту или ссылку на веб страницу.
- Она запускает ноду или хром со включённым сбором логов компилятора.
- По завершении работы логи обрабатываются и открываются через $hyoo_js_opt.
В интерфейсе вы видите раскрашенные исходники, обогащённые специальными маркерами. Эти маркеры позиционируются абсолютно поверх кода благодаря новому компоненту $mol_follower, которому передаётся якорный компонент, чьё положение отслеживается в реальном времени для абсолютного позиционирования $mol_follower.
Работает это так:
- Запускаете CLI утилиту turbotracer, написанную @cevek, передав ей путь к скрипту или ссылку на веб страницу.
- Она запускает ноду или хром со включённым сбором логов компилятора.
- По завершении работы логи обрабатываются и открываются через $hyoo_js_opt.
В интерфейсе вы видите раскрашенные исходники, обогащённые специальными маркерами. Эти маркеры позиционируются абсолютно поверх кода благодаря новому компоненту $mol_follower, которому передаётся якорный компонент, чьё положение отслеживается в реальном времени для абсолютного позиционирования $mol_follower.
👍8💩6🔥4🤔2
tg_image_60611254.jpeg
190.7 KB
Надоело играть с темами, поставил в маке автопереключение цветовой схемы, в vscode
Хотелось бы Nord, но там нет светлой версии. Есть Nord Light, но там в редких случаях встречаются неконтрастные пересечения.
Шрифт:
Auto Detect Color Scheme и на все Ayu.Хотелось бы Nord, но там нет светлой версии. Есть Nord Light, но там в редких случаях встречаются неконтрастные пересечения.
Шрифт:
{ "editor.fontFamily": "Iosevka Term", "editor.fontWeight": "600", "editor.fontLigatures": true, "editor.fontSize": 18 }🔥11👍3
inputmode="numeric”
Если вам нужен инпут с только числами, без точек, запятых, минуса и “e” (1e2 == 10**2 == 100), то можно попробовать использовать
Пишу просто что бы рассказать прикол про Brave для компа - в нем с указанным инпутмодом можно ввести не числовой символ первым символом, но если попытаться ввести его после какого-то числа - инпут полностью очистится. Web is wild.
UPD: а не, плохо я тестирование провел, проблема с очисткой поля от компонента юйкита.
Если вам нужен инпут с только числами, без точек, запятых, минуса и “e” (1e2 == 10**2 == 100), то можно попробовать использовать
inputmode="numeric”, который как-то там должен поддерживаться на мобилках, но на десктопах ведет себя непредсказуемо.Пишу просто что бы рассказать прикол про Brave для компа - в нем с указанным инпутмодом можно ввести не числовой символ первым символом, но если попытаться ввести его после какого-то числа - инпут полностью очистится. Web is wild.
UPD: а не, плохо я тестирование провел, проблема с очисткой поля от компонента юйкита.
MDN Web Docs
HTML inputmode global attribute - HTML | MDN
The inputmode global attribute is an enumerated attribute that hints at the type of data that might be entered by the user while editing the element or its contents.
This allows a browser to display an appropriate virtual keyboard.
This allows a browser to display an appropriate virtual keyboard.
👍6💩4