TGTGInsightтелеграм анализLIVE / telegram public index
← Такты, стеки, два колеса

TGINSIGHT SIMILAR POSTS

Намери подобно съдържание

Изходен канал @clockstackwheels · Post #385 · 17.06

Второй онлайн-день #DotNext закончился. В числе прочего был интересный разговор на тему «Страх и ненависть в Open Source», но я вам о некоторых особо заметных случаях рассказывал уже вот тут и тут. Ещё послушал про обратное соединение распиленного монолита (бывает, что и такое нужно!) и ещё пару докладов. В целом, впечатления противоречивые. Опишу кратко. Плюсы: 1. Высочайшего качества техническая организация. Ничего не глючило, чистая картинка и звук, удобный UI. 2. Были полезные и практичные вещи, интересные. 3. Реально отвечали на вопросы в чате в реалтайм-режиме. Что прошло ниже моих ожиданий (я впервые на такой дорогой IT-конференции): 1. Наверное, подсознательно я ожидал что с учётом цены билета буквально каждый доклад будет супер звёздным уровня "Торвальдс лично рассказывает подробности устройства ядра Linux, и делает это с шутками и котиками". Но доклады в среднем довольно обычные. Некоторые поверхностные, другие на очень далёкую от меня тему. И ещё их не очень много, не то, чтоб был гигантский выбор. Хотя, справедливости ради, больше 2-3 лекций в день тяжело осилить. 2. Интерактивные фишки формально заявлены: виртуальные стенды и квизы. По факту, во-первых, стенды и квизы полностью повторяют друг друга, во-вторых, их было всего два, и интересный (на мой личный взгляд) только один. Я ожидал, что их хотя бы десяток будет. 3. Часть обсуждения в Telegram, часть прямо в онлайн-чате лекции, и это, на мой взгляд, не пошло на пользу. Мне не хотелось вступать в Telegram-чат, но активность в основном чате лекции была низкой, при этом с телефона такой чат вообще не подразумевался. Я для себя убедился, что всё-таки именно мне в таких мероприятиях важна офлайновость: прийти и вживую потусить, получить мерч, поучаствовать в активностях. Чисто в онлайн-формате сугубо на мой взгляд мероприятие себя не окупает. Посмотрим, что будет в офлайне 27-го числа, напишу вам отзыв. #dev

Hashtags

Резултати

Намерени 869 подобни публикации

Общо глобално търсене

Сопоставление с образцом (pattern matching) — сильный механизм языков программирования, который, к сожалению, встречается не так часто. Причём, как в коде разработчиков, так и в поддержке со стороны самого языка. Разработчики на функциональных языках используют этот механизм довольно часто, потому что у них вообще многое определяется статически через правильный подход к системе типов. Разработчики же на императивных языках очень любят огромные многоуровневые ветвления. Есть даже такое понятие «Спагетти-код» — раньше его применяли к коду, перегруженному операторами перехода, но в современном виде это скорее об избытке операторов условия. Pattern matching позволяет накладывать на объекты некоторый трафарет и смотреть, попадают ли они под него. Это не только выглядит лаконичнее и короче, чем дерево условий, но ещё и понятнее с точки зрения восприятия человеком: вот у нас заказ содержит более 10 элементов и при этом стоит более 1000 долларов, значит делаем на него скидку 10 центов. При этом трафарет работает как сортировщик монеток: самая маленькая проваливается в первый паз, следующая по размеру в следующий итд, применение условий идёт сверху вниз. Есть и неявный плюс: такой подход автоматически провоцирует разработчиков проводить проверку на null. Ведь null не может подходить под трафарет «содержит более 10 товаров». К счастью, в C# этот механизм в последних версиях активно развивают и совершенствуют. И это одно из многочисленных преимуществ C# над Java. #dev

Hashtags

Допустим, вы разработчик, и вам от пользователя приходит строка user-agent с описанием того, каким браузером он пользуется. В этой строке будет что-то типа такого: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36 И вы хотите из неё узнать мажорную версию Chrome, то есть вытащить число 51. Что вы сделаете? Можно, конечно, написать свой парсер, но я уверен, многие воспользуются регулярными выражениями. Я бы воспользовался. Какое выражение сюда подходит? С виду кажется, что вот такое: /Chrome\/(\d\d)\./g Мы ищем слово Chrome и слэш, затем ловим в группу две цифры, после которых стоит точка. Так? По крайней мере, мышление достаточного количества разработчиков именно таково. Зачастую программистам не хватает умения отойти от техзадания на уровень вещественной сути того, с чем они работают. На самом деле число 51 это версия. Версия будет увеличиваться со временем. «Марти, где твоё четырёхмерное воображение?» Если уже прошло 50 версий, то и следующие 50 не за горами, число станет трёхзначным, регулярка или парсер, сделанные под двухзначные числа, перестанут работать. Трехзначная версия Chrome и Firefox приближается уже сейчас. И да, в них падает куча функций на сайтах, включая крупные корпорации: Yahoo, Bethesda, HBO и бог знает сколько сайтов поменьше. Чисто из-за цифры. Это уже назвали «Проблема сотой версии» по аналогии с «Проблемой 2000 года» (программисты записывали год двумя цифрами, 2000 стал неотличим от 1900). К чему это я? Полезно задумываться о физическом воплощении того, что вы представляете в своей программе. Ваш код должен описывать не столько требования заказчика, сколько законы, по которым существует этот объект в реальном мире. #dev

Hashtags

Увидел тут проект Doka Guide. Это такой ресурс, на котором авторы пытаются писать техническую документацию простым языком. В целом, идея не нова: "Объяснять что-то энциклопедичное человеческим языком, будто рассказываешь другу, а не читаешь лекцию". Это ещё Лурк использует — там многие вещи вполне себе содержат настоящие знания, но простыми словами. Пока есть вопросы к реализации, конечно. Например, я увидел в статье опечатку, но к системе не подключён никакой модуль исправлений (как на новостных сайтах — жмёшь Ctrl+Enter и отправляешь сразу ошибку редактору). То есть мне надо искать эту статью в репозитории, делать форк, оформлять пулреквест... Лениво. Структура местами странная. Статья о трёхслойной архитектуре в блоке JavaScript, хотя эта концепция не только не связана конкретно с JS, но он ещё и один из наименее удачных примеров её применения. Потому что вообще такие архитектурные паттерны для сложных энтерпрайз-разработок, как правило с сильной статической системой типов на каком-нибудь Java или C#. Осталось стойкое ощущение, что авторы знают только JS и фронтенд. Впрочем, я всё равно не понимаю, как с развитием проекта в одну кучу свалят документацию по всем популярным языкам. Тем не менее, инициатива отличная, и я желаю проекту хорошего будущего. Для начинающих фронтендеров там уже есть много ценного. Буду посматривать иногда, что там происходит. #dev

Hashtags

Какой язык программирования учить? У меня есть ответ. Каждый год один из крупнейших в мире порталов для разработчиков StackOverflow проводит опрос своих пользователей. В этом году его ещё не было, но я решил взять из результатов 2021 года два графика и объединить их. На графике расположены языки программирования в следующих координатах: - По горизонтали "Приятность". Мера того, как разработчики отзываются о своих чувствах по отношению к языку, сколько удовольствия он им доставляет, насколько им приятно на нём писать. Эта шкала в процентах, и опрос составлен так, что значение ниже 50% следует понимать как "язык скорее неприятный, чем приятный". - По вертикали "Популярность". Буквально, людей спрашивали, с какими технологиями они по факту работают в своих проектах. Чем больше голосов — тем чаще язык встречается. Здесь я провёл черту по матожиданию всей выборки, которое равно около 14%. Использовать в данном случае медиану мне кажется неправильным, потому что она сильно зависит от того, попал ли какой-то язык в опрос или нет. А очень много языков не попало. В целом субъективно я бы описал квадранты этого графика так: 1. Справа вверху популярные и приятные языки — можно смело брать и учить любой, и вообще они вверху списка на рассмотрение. Но следует понимать, что и другие люди могут хотеть в первую очередь выучить именно их, так что конкуренция на рынке труда будет высокой. 2. Слева вверху популярные, но менее приятные языки — в основном это устаревшие технологии, на которых очень много легаси. На мой взгляд, это надёжный вариант, чтобы найти высокооплачиваемую работу. Рынок не скоро сможет отказаться от них, а поддерживать кому-то надо. 3. Справа внизу приятные но менее популярные языки. Кажется, логично взять какой-то из них в качестве второго языка, на котором вы будете делать пет-проекты для личного удовольствия и саморазвития. Кстати, все функциональные языки попали сюда. И некоторые языки оттуда будут уходить наверх: например Go и Kotlin уже вырвались. Уверен, опрос текущего года покажет их подъём. 4. Ну и слева внизу Бездна Боли. У которой есть неожиданное дно: если язык не очень популярен, и люди его не любят, то вы, как специалист, будете чудовищно ценным в тех немногих местах, где язык всё-таки используют. Говорят, разработчики на COBOL получают фантастические деньги даже по меркам IT. Оба ещё живых разработчика на COBOL, да. Следует внести одну поправку: на графике отсутствует такой параметр, как "сложность". Она тоже, безусловно, влияет на выбор. Что более важно — она влияет и на положение языка по другим параметрам. Так, например, люди, которые попробовали относительно простые JavaScript и Python, могут на этом остановиться и не браться ни за какие другие языки. И такие люди будут отмечать JavaScript и Python как приятные, приносящие удовольствие. Я тоже когда-то любил JS. И даже любил PHP. Пока не попробовал Java. Потом я какое-то время был в восторге от неё, пока не попробовал C#, и сейчас считаю его лучшим языком. Вполне возможно, что через 5 лет я буду писать на Clojure и не понимать, как я мог так восторгаться ужасным C#. #dev

Hashtags

В этот романтический день поговорим о поэзии. Мне всегда нравилась теория стихосложения. Она приближала непонятный мне мир литературы к понятному мне миру математики. Эта любовь получила развитие и в программировании. Опубликовал вот статью об алгоритме вычисления силлабо-тонического стихотворного размера по строчке на русском языке. Задача интересная и не такая простая, как может показаться на первый взгляд. #dev https://habr.com/ru/post/651395/

Hashtags

Традиционно программисты считают, что энтерпрайз разработка это переусложнённая и бюрократизированная вещь, где вместо интересных задач на алгоритмы люди просто перекладывают JSON'ы избыточным способом. В этом мнении есть доля истины, но я уже третий год работаю в энтерпрайзе, а до этого как раз занимался всякими стартап-стайл «интересными» алгоритмами. И хочу со своей стороны защитить энтерпрайз. Основная фишка в том, что одну программу разрабатывают много людей. И часть этих людей друг друга никогда не увидят. Поэтому обычно задача сделать работающий код дополняется двумя пунктами: 1. Другой человек, который первый раз видит ваш код, должен как можно быстрее понять, что этот код делает. 2. Другой человек, который будет дописывать ваш код, должен иметь как можно меньше шансов допустить ошибку и всё сломать. Окей, в реальной жизни есть ещё и третий пункт: 3. Вы ограничены в выборе инструментов и подходов к разработке, потому что легаси / корпоративная архитектура / секретность / отсутствие нужной лицензии / приказ начальства и так далее, нужное подчеркнуть. И это напоминает челленджи, которые геймеры себе придумывают для усложнения и повышения интереса. Пройти игру с одним пистолетом? Протащить через все уровни фигурку садового гнома из первой главы? Ни разу не получить ни одного повреждения? При этом вы ещё и в момент этого прохождения транслируете обучающий стрим, а другой игрок, загрузив ваши сейвы с любого места, должен быть способен пройти дальше, даже если он не про-геймер. Решать такие задачи на самом деле очень интересно. И отлично качает скилл в программировании, не хуже, чем эти ваши алгоритмы. Попробуй с первого раза сделай foolproof архитектуру, ещё и понятную. Есть о чём подумать. #dev

Hashtags

Мой ноутбук обновился до Windows 11, и позавчера на нём стали происходить странности: некоторые программы отказывались выполнять некоторые свои функции. После тщательного исследования симптоматика прояснилась, но не стала более понятной: программы от Microsoft не могли получить доступ в сеть. Именно Microsoft и именно в сетевой части. Outlook, Visual Studio, .NET — всё это вело себя так, будто интернет отсутствует. У программ от других производителей подобное не проявлялось, и у операционной системы в целом тоже. Долгие часы гугления, переписывания реестра, изменения сетевых настроек, переустановки софта и драйверов ни к чему не привели. Я забил и откатился обратно на Windows 10 — всё заработало. А днём позже я прочитал в Твиттере у одного человека описание в точности такой же проблемы, и он докопался до правды — русский софт для электронных подписей КриптоПРО что-то менял в TCP-стеке, на что именно программы от MS реагировали отказом, но только в силу особенностей Windows 11. Так вот. У меня лицензионный Windows и все лицензионные программы от Microsoft. Но нет никакого шанса, что вся эта честная лицензионность и идущая в комплекте поддержка хоть что-то смогла бы сделать за разумные сроки с моей проблемой. Реально, ведь там везде интеграционный ад. С одной стороны, это чудовищно распространенный кейс: можно за 5 минут на любом телефоне и любом компьютере (под управлением любой ОС) найти какую-нибудь фигню, которая проявляет проблемы интеграции одного с другим. Этих проблем каждый человек встречал в своей жизни десятки, даже если всё всегда легально покупал (а порой — особенно если легально покупал). С другой стороны — производитель мог действительно за все циклы проверок ни разу не наткнуться на этот случай. И даже не представлять, что какая-то проблема может существовать. Пользователи обречены на вечные страдания. #dev

Hashtags

Если вам лень было смотреть длинный стрим Сбера в прошлый раз, то вот они тут выложили презентации отдельно. Моя презентация о том, как выбрать способ ввода в приложении. Конкретно здесь сравнивается голосовой ввод и ввод нажатиями, но есть ощущение, что шкала, которую я предлагаю, подходит и к другим вещам (например мышь vs консольный ввод с клавиатуры). Нажатие мышью на кнопку на экране в среднем быстрее, чем набор слова (особенно если учитывать время, необходимое для того, чтобы это слово вспомнить). Ещё мышь гораздо больше страхует от ошибок. Но если у вас тысяча возможных команд, вы тысячу кнопок на экран не выведите, зато набирать эти команды можно без проблем. #dev https://www.youtube.com/watch?v=sSg3m6G8hJ0

Hashtags

Неделю назад в мире опенсорс разработки произошло интересное событие. Опенсорс — это когда разработчик пишет программу (как правило, эта программа нужна для работы других программ) и выкладывает её в общий доступ на полностью свободных началах. В большинстве случаев после этого кто угодно может делать с этой программой абсолютно что угодно: копировать, изменять, продавать решения на её основе за деньги и так далее. Иногда то, что пишут такие разработчики-волонтёры, оказывается невероятно удобно и полезно. Настолько, что гигантские корпорации используют это у себя. А кроме них — ещё десятки тысяч проектов по всему миру. Такое использование называется «зависимость», и оно создаёт связь между автором опенсорс-проекта и тем, кто взял его труд. Связь обычно такая: в моей программе где-то указано, что вот этот вот код взят по такому-то адресу у опенсорс разработчика Васи. Моя программа иногда может на этот адрес заглядывать и смотреть, а не внёс ли Вася чего нового. Вдруг он улучшил работу и исправил ошибки — тогда я скачаю новую версию его программы и установлю её у себя. Формально для такого обновления должны существовать ограничения. По факту человеческая лень и негласный этикет среди разработчиков приводят к тому, что обновления ставят не глядя. Считается, что Вася будет выкладывать только улучшенную и проверенную новую версию своей программы, ведь за ним наблюдает миллион других разработчиков. Пацаны во дворе не поймут, если Вася сделает что-то неаккуратно. Один из разработчиков по имени Marak Squires написал некоторое время назад две очень полезные программные библиотеки. Как раз такие, которые скачали десятки тысяч людей, в том числе в крупных корпорациях, и использовали у себя. В прошлом году этот разработчик написал что-то вроде: «Эй, корпорации, вы берёте мой труд бесплатно. Конечно, я его раздал бесплатно, но вы чёртовы капиталистические гиганты, и у вас миллиарды баксов, а я вам сэкономил миллионы баксов на разработке. Я жду от вас чек на почту в благодарность». Конечно, всем было пофигу. А неделю назад этот разработчик внёс в свои библиотеки деструктивное обновление, которое сделало программы, установившие его, неработоспособными, и вывело на экран «LIBERTY LIBERTY LIBERTY». Это обновление положило кучу проектов, в том числе у гигантов-корпораций. Поднялась буря. Одна часть интернета заявила, что разработчик никому ничего не должен, поэтому волен делать со своим кодом всё, что хочет. Вторая часть претендовала на то, что совершённый им поступок это вандализм и осознанный вред другим разработчикам. Дров в огонь подкинуло то, что GitHub, на котором размещался код этого разработчика, заблокировал его аккаунт. А система хранения пакетов NPM откатила изменения до предыдущих версий. Хотя формально никаких законов он не нарушал: компании брали его код по собственной воле, а он ничего никому не гарантировал. ___________________________ Я не готов назвать здесь однозначно правую сторону. Пока выглядит, как «Все мудаки». Но на мой взгляд это показательный пример вот чего: никакие формальные правила никогда не покроют всё многообразие человеческих взаимоотношений, и поэтому личностный аспект тоже важен. Даже если нет закона или правила, по которому вы что-то должны, есть смысл стараться действовать созидательно и стремиться, хотя бы частично, к всеобщему благу, а не только к личному. Особенно в ситуации, когда у тебя в руках сосредоточена та или иная власть. Корпорации действительно могли бы найти способ отблагодарить разработчика (и вообще — всех разработчиков, чей код они бесплатно берут в таких масштабах). Просто из чувства благодарности, а не потому, что должны. Разработчик мог бы просто закрыть проект и не стараться нанести урон. Просто из чувства неприятия всего деструктивного. Это, конечно, идеализированный мир розовых пони, но сила и власть это как раз способность двигать границы реальности. #dev

Hashtags

На днях скатался в Сбер и прочитал там доклад о выборе способа ввода в приложении. Весь митап может быть вам интересен, если вы разрабатываете или планируете разрабатывать под платформу умных ассистентов Сбера. Но свой доклад я постарался сделать чуть более универсальным: придумал некоторый формальный принцип для выбора способа ввода, привёл примеры с разных платформ. У Сбера пока весьма молодая площадка, однако вкладываются в неё значительно. Я уже ранее писал, что высоко оценил как техническую наполненность, так и работу с сообществом. Запись митапа тоже произвела впечатление: большая студия с кучей оборудования, леса под свет, телесуфлёры, режиссер и звукооператор, гримёрка. Почувствовал себя будто на телевидении. Ссылка с таймкодом на начало моего выступления: https://youtu.be/FbdHktzx3bU?t=3983 #dev

Hashtags

Первый день зимы, самое время показать миру проект, над которым я работал в прошлом месяце: процедурная генерация бумажных снежинок. Написал на Хабр большую статью по теме, поделился результатами. Там же есть демка, которая позволяет в том числе распечатать себе PDF для вырезания. #dev https://habr.com/ru/post/592659/

Hashtags

Год назад 24 сентября 2020 Сбер презентовал свой ребрендинг и платформу с умными ассистентами. Я и тогда высказался об этом довольно позитивно, а теперь я уже некоторое время вовлечён в разработку под неё, и она даже стала источником крупнейшего в моей жизни единовременного денежного выигрыша. Вообще, я не скрываю своего скептицизма по отношению к строительству экосистем и так называемых супераппов. У нас всех уже есть суперапп -- операционная система на смартфоне или компьютере. Совершенно непонятно, почему пользователь должен запускать что-то внутри другого приложения, если может просто иметь себе отдельно такое приложение в телефоне. Пока что в общемировой практике сработал только WeChat в Китае, но там это произошло, судя по всему, из-за своеобразного местного законодательства с его запретами. В России ближе всего к супераппам подошёл ВК, и здесь у них есть два сильнейших преимущества: - соцсеть изначально многоцелевая (в отличие, например, от поисковика или банковского клиента), поэтому пользователи привыкли заниматься здесь разными вещами - социальный граф, отлично способствующий вирусному распространению И даже с такими вводными у ВК пока не вышло убедить массовую аудиторию в необходимости пользоваться встроенными аппами для разных целей. Пользователи есть или у продуктов, созданных как раз вокруг социального графа и других средств социальной сети (опросники и тесты для друзей, статистика страницы итд), или у продуктов, поддерживаемых внешним бизнесом, в том числе самим ВК (такси, алиэкспресс, пиццерия). Нет даже близко речи о том, чтобы вы внутри ВКонтакте запускали, например, фоторедактор или менеджер задач. Даже моё приложение Promenade, которое вы массово репостили и очень хвалили, имеет около нуля активных юзеров. Среди моих друзей и знакомых никто систематически не пользуется ни одним миниаппом, а модерация самого ВК советовала мне превратить одно из приложений в игру, потому что игры популярнее и востребованнее. Так что, возвращаясь к Сберу, ещё более дико выглядит мысль о том, что человек будет запускать приложение внутри банковского клиента, если это приложение не связано с финансами. А у Сбера ещё и сами приложения довольно специфические — поверх любого отрисовывается голосовой ассистент, который должен быть в каком-то виде поддержан, даже там, где в принципе голосовой ввод не предполагается. И у приложений нет доступа к аппаратуре телефона, например, к камере (хотя со временем это добавят). Так что сейчас в сберовском "Салюте" перекати поле в плане количества юзеров. Но этот вопрос должны решать маркетологи и прочие рекламщики. Если предположить, что устойчивая модель супераппа в принципе возможна в России, то у них наверняка есть план. Я не понимаю, какой, и как возможно убедить людей, но не тратят же они в самом деле миллиардные бюджеты на попытку вслепую и из-за моды? :) Зато я разбираюсь в технической составляющей, и немного -- в продуктовой. И могу сказать, что с этой позиции у площадки Сбера всё прям очень хорошо. Я в восторге от многих вещей, как технических, так и продуктовых. На платформе приятно разрабатывать, её правильно и своевременно обновляют, и, конечно же, очень классно взаимодействовать с сообществом, о котором я уже отзывался в статье. На вопросы отвечают быстро, баги реально берут в работу и исправляют за адекватное время. Для меня за прошедший год Сбер открылся с новой стороны. Посмотрим, что будет ещё через год. #dev

Hashtags

12•••5678910•••15•••20•••25•••30•••35•••40•••45•••50•••55•••60•••65•••70•••7273