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

TGINSIGHT SIMILAR POSTS

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

Изходен канал @clockstackwheels · Post #721 · 26.12

Почему я люблю языки с сильной системой типов, проверяемой статическим анализом кода — хорошо написанная программа является своей собственной спецификацией и позволяет выражать через язык программирования законы существования предметной области. Когда-то давно я писал на ActionScript. Там была система типов, но вот десериализация JSON'ов по-умолчанию была в какой-то общий Object, к полям которого нужно было обращаться ["по_строковому_имени"]. В один момент мне потребовалось написать что-то на C#, который я совсем не знал, я стал гуглить, как десериализовать JSON, и с удивлением обнаружил кучу советов заранее объявить класс со всеми нужными полями и десериализовать в него. "Какой ужас!", — подумал я тогда, — "Это же дико неудобно! А если я не знаю полей JSON? А если их много? Отвратительный язык!" Теперь то я прекрасно понимаю, что JSON это контракт, и что правильная десериализация только такая и должна быть, и что в хорошем API в одном поле никогда не бывает данных принципиально разных типов, и так далее. Нет, если вы набиваете вечерами пет-проект или сидите бессонную ночь на хакатоне, нет ничего плохого в том, чтобы взять простой язык с динамическими типами вроде JavaScript или Python, не требующий описывать данные. Но вот в энтерпрайзе, особенно когда над одним проектом работает много людей (а бывает это очень часто) — хорошее использование системы типов убережёт разработчиков от огромного количества ошибок, будет бить их по рукам, когда они пытаются сделать что-то не то, и будет подсказывать, когда они не уверены в чём-то. С помощью статической типизации можно на уровне кода обозначить правила, по которым ведёт себя предметная область вашей программы в реальном мире. Разработчику не только будет сложно их нарушить, но он ещё и станет узнавать какие-то вещи, которые мог не знать раньше. Например, если мы делаем медицинскую CRM, и больница заводит новых пациентов только тогда, когда знает их группу крови, мы можем объявить тип "Пациент" (или, если точнее, "Карта пациента") и запретить создавать экземпляры этого типа, не передав в конструктор группу крови (которая, в свою очередь, тоже является типом, вероятнее всего ValueObject'ом). Если новый программист пришёл в проект, он, во-первых, не сможет записать в БД некорректную карту пациента. Понятно, мы не учитываем случаи, когда новый программист переделывает модели предметной области — это будет хорошо видно на кодревью. А, во-вторых, даже если ему никто не сказал, что пациенты должны быть с группой крови, он узнает это из кода. И уже будет понимать, что в тех процессах реальной жизни, которые он описывает кодом, карта пациента создаётся только при наличии группы крови. А, значит, нужно искать какой-то способ сначала эту группу крови получить, и только потом создавать карту. Программирование моделирует реальный процесс. В настоящей работе даже на языках с типами, конечно, без должного контроля можно написать что угодно. Нужна управленческая воля, компетентность руководства, понимание опасности техдолга, в идеале отдельные должности для архитекторов, опытные лиды и старшие разработчики. Но когда всё это есть, можно отсекать много проблем ещё на старте и проще погружать новичков. #dev

Hashtags

Резултати

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

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

Am Neumarkt 😱

@amneumarkt · Post #197 · 24.02.2021 г., 21:17

#dev You can even use Chinese in GitHub Codespaces. 😱 Well this is trivial if you have Chinese input methods on your computer. What if you are using a company computer and you would like to add some Chinese comments just for fun....

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

Написал свою первую статью на VC. Где-то с марта по июнь я занимался участием в конкурсе Сбера с очень большим призовым фондом, и смог занять первое место. История с множеством неожиданных поворотов, надеюсь, будет интересно. #dev https://vc.ru/life/274970-plan-pobedy-kak-ya-poluchil-2-5-milliona-rubley-v-konkurse-sbera

Hashtags

Полноценное ООП, статическая типизация, события, Си-подобный синтаксис — именно на этом языке я научился тому фундаменту, который позволил мне стать профессиональным разработчиком. Именно после него я без особого труда кодил на Java и теперь вот на C#. Именно на AS3 я выиграл первый в своей жизни конкурс по программированию, и на нём же сделал первый проект, принёсший серьёзные деньги — достаточно серьёзные, чтобы я мог съехать от родителей. На нем непрерывно писал несколько лет, и ни о чём не жалею. Потом Apple убила Flash, а крупные студии убили рынок инди-проектов в социальных сетях. Мой профессиональный путь стал менее простым и наивным, зато уровень знаний и умений в этой области сильно вырос. Прошлогодний код в любой момент кажется мне плохим, и хочется верить, что это признак какого-то развития. Но те времена я всегда вспоминаю с теплотой и любовью. https://youtu.be/sanpUp8GIoY? #dev

Hashtags

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