@PTPPAction · Post #198 · 16.01.2023 г., 11:40
#dev#Rhilip#merged fix(ci): build pre-release with tag wrong branch
TGINSIGHT SIMILAR POSTS
Изходен канал @clockstackwheels · Post #721 · 26.12
Почему я люблю языки с сильной системой типов, проверяемой статическим анализом кода — хорошо написанная программа является своей собственной спецификацией и позволяет выражать через язык программирования законы существования предметной области. Когда-то давно я писал на ActionScript. Там была система типов, но вот десериализация JSON'ов по-умолчанию была в какой-то общий Object, к полям которого нужно было обращаться ["по_строковому_имени"]. В один момент мне потребовалось написать что-то на C#, который я совсем не знал, я стал гуглить, как десериализовать JSON, и с удивлением обнаружил кучу советов заранее объявить класс со всеми нужными полями и десериализовать в него. "Какой ужас!", — подумал я тогда, — "Это же дико неудобно! А если я не знаю полей JSON? А если их много? Отвратительный язык!" Теперь то я прекрасно понимаю, что JSON это контракт, и что правильная десериализация только такая и должна быть, и что в хорошем API в одном поле никогда не бывает данных принципиально разных типов, и так далее. Нет, если вы набиваете вечерами пет-проект или сидите бессонную ночь на хакатоне, нет ничего плохого в том, чтобы взять простой язык с динамическими типами вроде JavaScript или Python, не требующий описывать данные. Но вот в энтерпрайзе, особенно когда над одним проектом работает много людей (а бывает это очень часто) — хорошее использование системы типов убережёт разработчиков от огромного количества ошибок, будет бить их по рукам, когда они пытаются сделать что-то не то, и будет подсказывать, когда они не уверены в чём-то. С помощью статической типизации можно на уровне кода обозначить правила, по которым ведёт себя предметная область вашей программы в реальном мире. Разработчику не только будет сложно их нарушить, но он ещё и станет узнавать какие-то вещи, которые мог не знать раньше. Например, если мы делаем медицинскую CRM, и больница заводит новых пациентов только тогда, когда знает их группу крови, мы можем объявить тип "Пациент" (или, если точнее, "Карта пациента") и запретить создавать экземпляры этого типа, не передав в конструктор группу крови (которая, в свою очередь, тоже является типом, вероятнее всего ValueObject'ом). Если новый программист пришёл в проект, он, во-первых, не сможет записать в БД некорректную карту пациента. Понятно, мы не учитываем случаи, когда новый программист переделывает модели предметной области — это будет хорошо видно на кодревью. А, во-вторых, даже если ему никто не сказал, что пациенты должны быть с группой крови, он узнает это из кода. И уже будет понимать, что в тех процессах реальной жизни, которые он описывает кодом, карта пациента создаётся только при наличии группы крови. А, значит, нужно искать какой-то способ сначала эту группу крови получить, и только потом создавать карту. Программирование моделирует реальный процесс. В настоящей работе даже на языках с типами, конечно, без должного контроля можно написать что угодно. Нужна управленческая воля, компетентность руководства, понимание опасности техдолга, в идеале отдельные должности для архитекторов, опытные лиды и старшие разработчики. Но когда всё это есть, можно отсекать много проблем ещё на старте и проще погружать новичков. #dev
Hashtags
Общо глобално търсене
@PTPPAction · Post #198 · 16.01.2023 г., 11:40
#dev#Rhilip#merged fix(ci): build pre-release with tag wrong branch
@PTPPAction · Post #173 · 09.01.2023 г., 11:40
#dev#Rhilip#merged ci: bump version to 1.6.1 closed #1293
@PTPPAction · Post #138 · 03.01.2023 г., 02:00
#dev#Rhilip#merged fix(ci): action for pr should pass build crx
@PTPPAction · Post #85 · 24.12.2022 г., 16:30
#dev#Rhilip#merged ci: allow firefox xpi auto_update
@PTPPAction · Post #79 · 24.12.2022 г., 15:00
#dev#Rhilip#merged wip: allow firefox xpi to be autoupdate
@PTPPAction · Post #47 · 19.12.2022 г., 13:10
#dev#Rhilip#merged fix: support Flood 4.x (aka jesec/flood ) It's BC break, Since legacy flood (aka Flood-UI/flood) is archived and deprecated, so we no longer support it in patch version. closed #715
@clockstackwheels · Post #374 · 06.06.2022 г., 10:39
Много новых людей пришло, расскажу ещё историю из бытия фрилансером. Делали мы как-то с другом проект для одной большой конторы (в своей области самой крупной в городе, миллиардные обороты). И вот там на старте нужно было подписаться в техзадании. А техзадание это такая увесистая папка страниц на сто. И подписаться мне, как руководителю проекта, нужно было на каждой странице. Когда проект запустился, ядро мы собрали быстро. Полный план был что-то типа полгода, но в конечном итоге заняло полтора, потому что после сборки ядра мы практически непрерывно занимались правками и замечаниями. Каждый месяц мы приезжали к заказчику и показывали, что сделали. А нам составляли список из 10-20 новых пунктов. За доработки доплачивали, но в какой то момент стало понятно, что мы в некотором смысле работаем на аутсорсе, хотя подписывались на один конкретный проект. А оставались мы работать, потому что проект не был введён в эксплуатацию, и бросать его без запуска не хотелось. Заказчик в итоге не переставал заваливать правками, шли месяцы. Впоследствии директор компании сменился, новому проект был без надобности, он заплатил нам остаток, который должен был, и проект остался навечно похоронен. Как так вышло: огромное и очень подробное техзадание, но всё равно непрерывные правки и замечания? Я позже рефлексировал этот момент и пришёл к таким выводам: 1. Заказчик описал в техзадании конечную систему, которую хотел бы видеть. Нам была нарисована практически каждая кнопка будущей софтины: очень детально и подробно. При этом результат, который требовался заказчику, был описан только в общих чертах (ещё и менялся по ходу дела). ТРИЗ учит нас обращать внимание на результат, а не на способ его достижения. 2. Заказчик не был готов ничего менять со своей стороны. Представьте, я прихожу в спортзал к тренеру и говорю, что вот вам деньги, а я хочу мускулистое тело. Мне тренер предлагает программу занятий. Но я заявляю, что нет, мне некогда, у меня нет времени и возможности ходить. Вообще для меня слишком дорого будет перестроить процессы в своей жизни. Так что нет, никаких походов на занятия. Я же плачу деньги, в конце-концов. Давайте, заплачу ещё больше, если требуется. Дам тренеру больше времени. Так же и тут: в компании были не готовы перестраивать процессы, обновлять софт и железо, обучать персонал. Поэтому новую систему пытались интегрировать со старой, а в интерфейсе использовать не лучшие решения, а привычные. #dev#freelance
Hashtags
@clockstackwheels · Post #7 · 14.02.2021 г., 17:38
Я регулярно участвую в хакатонах и конкурсах для разработчиков. При всей прелести основной работы, в ней частенько не хватает творческой активности, поэтому меня спасают конкурсы с относительно свободными задачами. Там можно не только выиграть ценные призы, но и поделать что-то нестандартное. А это и приятно само по себе и полезно для программиста, как источник новых знаний и нового опыта. В этот раз мы с командой приняли участие в хакатоне от Яндекса и Великого Новгорода. Цель была такая: создать навык (то есть голосового чат-бота) для «Алисы», который будет интересен гостям и жителям этого города. Подробнее в статье. #dev#hacks https://teletype.in/@clockstackwheels/novgorod-hack
@clockstackwheels · Post #5 · 31.01.2021 г., 23:44
В фантастике часто встречается сюжет о сверхмощном компьютере, который обрабатывает внутри себя симуляцию мира (вселенной, планеты, города). В 6-й серии 10-го Доктора Кто инопланетяне создают симуляцию Земли, чтобы понять, как её захватить. В сериале Devs герой делает виртуальную копию вселенной, чтобы знать всё прошлое и будущее. Нередко искусственный интеллект продумывает все варианты развития человечества, чтобы подсказывать людям лучший выбор (начиная от Мультивака Айзека Азимова и заканчивая третьим сезоном Westworld). Порассуждал с точки зрения программиста о том, почему это, скорее всего, принципиально невозможно. #scifi#dev https://teletype.in/@clockstackwheels/computer-prediction
@clockstackwheels · Post #8 · 13.03.2021 г., 08:45
Почти месяц не было статей — это не специально, а потому что запланированная статья про умные колонки отложена из-за неготовности некоторых помещений в квартире. Но stay tuned, а пока расскажу про не менее забавную вещь — голосовую платформу Сбера и устройство SberBox, которое ко мне попало. #gadgets#dev#tech https://teletype.in/@clockstackwheels/sberbox
@PTPPAction · Post #2499 · 26.12.2024 г., 16:12
#dev#bright#merged 推荐下载 fix(jptv): correct script path commit fix(jptv): correct script path
@clockstackwheels · Post #1125 · 06.07.2025 г., 19:19
Финал#interview#dev Собственно, да. Выбор не единогласный, но вполне очевидный, и вы это тоже показали голосованием. Я два дня прокручивал в голове варианты, спрашивал у друзей и родственников их мнение, и в итоге не стал дожидаться преоффера. Написал Т-Банку отказ, а 2ГИС согласие. Вот завтра уже выхожу, первый рабочий день. Так что, сколько денег бы предложили в Т-Банке, мы так и не узнаем. Спросили, могут ли вернуться через год, если что. Конечно, пообщаться я всегда за. Кстати, в 2ГИС много акцента делали на простую и понятную систему повышения дохода, и она как раз через год должна будет себя показать. В целом, конечно, наша современная система найма в айти сфере — никуда не годится. Собственно, нашумевший на днях случай с индусом по имени Сохам Парекх говорит сам за себя. Но кроме вероятности нанять шарлатана, есть и обратный эффект: не нанять нормального спеца. Я уже говорил, что без подготовки не прошёл бы даже на мидла нигде, хотя за счёт подготовки как специалист я не стал лучше, не получил никакого нового профессионального опыта. В чём заключалась подготовка: 1. DeepSeek. Очень круто объясняет. Ты прямо ему задаёшь вопросы, которые в книгах затронуты поверхностно. Можно задавать максимально стыдные вопросы. Например, вот один из моих вопросов: Я: — Что является узлами кучи, в которой хранятся ссылочные типы в C#? Куча это отсортированное дерево, но я не понимаю, что такого можно извлечь из ссылочных объектов, чтобы по этому сортировать. И зачем. DeepSeek: — Понимаю вас, но здесь есть путаница в именовании. Куча (Heap), как структура данных — это не то же самое, что Куча (Heap) , как область памяти в C#, Java и других языках. Они называются одинаково, но имеют разное устройство и поведение... ... 2. Книги. Целиком я ни одну не прочитал, но погрузился в: • Крис Ричардсон, «Микросервисы». Собственно, это один из авторов идеи микросервисов, хорошо объясняет, как и зачем. • Алекс Сюй, System Design. Это просто книга с шаблонными примерами для шаблонной же секции. • Ганс-Юрген Шёниг, PostgreSQL. Описаны, пожалуй, все существующие функции и особенности СУБД, но без разъяснения. В целом я делал так: узнавал у Шёнига о существовании чего-то и шёл в дипсик уточнять. 3. Видео • Мок-собеседования. Некоторые компании даже прям свои собесы выкладывают на ютуб, удобно. • Доклады, в основном с DotNext. Кстати, я в программе на эту осень, приходите слушать :) Верно ли говорить, что от твоих настоящих умений вообще никак не зависит прохождение современных собеседований? Скажу так: к сожалению, софт-скиллы очень сильно решают. Если ты уверенно говоришь, обладаешь хорошим словарным запасом, активен, не делаешь больших пауз, то это даёт тебе огромный буст. Но полное прохождение на одних софтах это всё равно скорее запредельный случай. Ещё хочу упомянуть, что нигде не спросили ничего по солюшен-архитектуре. Хотя от умения разработчика её выстраивать зависит, например, поддерживаемость его кода. Да и процент ошибок тоже. ______________________ Вижу, что многие подписались в разгар историй о собеседованиях. Конечно же, эти истории не могли продолжаться вечно. Но, если вам нравится мой слог, предлагаю попробовать остаться и почитать два-три следующих поста. Если потом поймёте, что не заходит, и отпишетесь, я не обижусь. Обычно на этом канале я рассказываю о гиковых хобби: фантастика, 3D-печать, DIY, настольные игры. Иногда высказываю своё восприятие айти-новостей и технологий. Вот для примера мой типичный обзор на фантастическую книгу, а вот электронное устройство. И ещё я очень люблю организацию пространства, много этим занимаюсь, поэтому друзья в шутку прозвали такие посты «ОКР-контент», так что я добавил специальный тег #окр. Типичные примеры вот и вот. Stay tuned )
Hashtags