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

TGINSIGHT CHAT

Такты, стеки, два колеса

@clockstackwheels

Технологии

О технологиях, научной фантастике, программировании и схемах. Навигация по каналу: https://t.me/clockstackwheels/3 Чат канала: https://t.me/joinchat/VNhNF1NF70dkFgUX

Абонати1,330Текущи абонати
Публикации894Индексирани публикации
Скорошен обхват6,452Прегледи на скорошни публикации
Последни публикации

Последни публикации

Таг: #dev · 127 публикации

当前筛选 #dev清除筛选

Я порешал немного задачи на leetcode и остался не слишком доволен сервисом. Leetcode — это онлайн-сайт с задачами по программированию. Даётся описание (какие данные приходят на вход, и что нужно получить). Можно отправить код на любом актуальном языке программирования, и ваше решение будет оценено по двум показателям: скорость и память. Что не понравилось в сервисе: 1. Встроенный редактор кода поленились делать нормальным, это по сути блокнот без каких-либо хинтов и проверок. Проще сразу писать в IDE, а потом копировать. Но это мелочь, куда серьёзнее второй пункт. 2. Система оценки, о которой я упомянул выше, крайне неточная. Разброс по времени бывает в 1.5-2 раза у одного и того же кода. И, наоборот, почти не показывает важную разницу между разными решениями. По памяти то же самое: цифры плюс минус одинаковые, как бы вы ни решали задачу. Это выражается в том, что легко словить результат типа "Ваше решение лучше, чем 33.33% остальных", причем, много раз подряд. Это значит, что в точности треть решений попадает в какой-то один кластер оценки (либо что решений отправлено очень мало, но сайт популярный, так что не знаю даже). При этом подобная оценка — единственный показатель успешности вашего решения, поэтому она важна, но при таком разбросе теряет смысл. Хотя сама идея, например, ежедневной новой задачи мне нравится — позволяет разминать мозги и держать себя в тонусе в некотором смысле. Впрочем, тут тоже есть нюанс: эффективное решение задач редко пересекается с правильным и реалистичным решением, которое требовалось бы от программиста в любом практическом сценарии. Допустим, вам нужно наполнить ведро водой. В обычной жизни вы отнесёте его в ванну, откроете кран и наполните. А вот подход на Leetcode заставляет использовать извращения типа "вытащить из холодильника бутылку воды и разрезать её над ведром". И вот в какой-то момент вы понимаете, что быстрее всего выбросить ведро в окно, потому что под окном глубокая лужа, оно там утонет и технически станет наполненным водой мгновенно. О реальной жизненной применимости такого решения, думаю, говорить не стоит. Но иногда буду решать. Сегодняшняя задача уровня Hard, такие дают за собеседованиях на middle и senior: поиск максимальной суммы прямоугольника внутри матрицы. #dev

575 views

Hashtags

Сервис Heroku объявил о том, что с ноября убирает бесплатные тарифы. Heroku это такой облачный провайдер, который даёт вам не голый сервер, а готовую инфраструктуру, где вы можете достаточно простым способом развернуть веб-приложение практически на любом языке. Если обычные сервера оперируют вводом консольных команд, которые задаёт разработчик, то в Heroku достаточно кинуть правильно сконфигурированный репозиторий с исходным кодом, сервис сам его соберёт и запустит. Это очень удобно во многих случаях, но в основном, например, для прототипирования и хакатонов. Неоднократно пользовался. Компания в официальном блоге написала пафосный текст о своей великой миссии, которая, к глубочайшему сожалению авторов, не совместима с наличием бесплатных тарифов. Жизни себе не находят, страдают, бедные, но вынуждены оставить только платные опции. Простой экземпляр облака теперь будет стоить $7 в месяц. Проблема в том, что за $5 в месяц можно на DigitalOcean взять выделенный сервер с автоматически предустановленной на него системой Dokku. Даже ничего делать не нужно, там буквально в интерфейсе есть одной кнопкой "Создать сервер с Dokku". Dokku — это консольный Open Source аналог Heroku. В него можно запушить репозиторий с кодом, после чего ваше приложение автоматически соберётся, задеплоится, пробросится на правильные порты, выведется на поддомен. Эта штука сокращает сложность деплоя в десятки раз. Я сижу на Dokku уже несколько лет и не перестаю восторгаться, насколько значительно она экономит время и нервы. И теперь у Heroku фактически не осталось преимуществ. Разве что в Heroku есть GUI, но зато выделенный сервер, на котором будет выполняться Dokku, существенно более гибок и функционален. Так, с помощью плагина вы можете в том же Dokku бесплатно поднять СУБД, которая у Heroku теперь будет отдельным инстансом от $9 в месяц. О бОльшей защищённости данных я вообще молчу. Теперь пользоваться Heroku имеет смысл только либо если вы просто не знаете об альтернативе, либо если ленитесь переехать. Но насчёт лени я уже писал ранее о разграничении субъективного выбора и объективно эффективного — если небольшой одноразовый вклад сил позволит вам потом получать преимущество постоянно и систематически, то отказываться от такого вклада неправильно. Здесь аналогичная ситуация. #web#dev

534 views

Hashtags

В одном чате вспомнили недавно Flash. С этой технологией связана значительная часть моей жизни и становления, как специалиста: с неё я начал учить программирование и на ней же заработал не только первые серьёзные деньги, но и вообще одну из крупнейших в своей жизни сумм за единицу времени (тогда был экспоненциальный рост игр для соцсетей, мне тоже удалось чуть-чуть вписаться). Никогда не прощу Apple убийство флэша. Этот софт опережал своё время: художники рисовали на нём полноценные мультики и делали сложные анимации, а программисты создавали демосцены и игры, богатые графикой и даже, при желании, с физическим и 3D-движком. В старших классах я на флэше делал работу для экзамена по географии. Казалось, там можно вообще всё. У флэша почти не было проблем совместимости. Да, ему требовался Flash Player, но зато во всех браузерах флэшки отрисовывались и работали одинаково. Не нужно было думать о том, что какой-то очередной браузер из-за мудачества его разработчиков не поддерживает очередную команду, тег, свойство или API. Возможности по графике, интерактиву и медиа в браузере только недавно еле еле догнали то, что мог флэш в 2000-х. А язык программирования ActionScript 3.0 и сейчас на световые годы впереди JavaScript'а. Да, были недостатки. Проприетарность технологии тормозила и развитие и активность комьюнити. Никакой резиновой вёрстки — только скалярное пространство с числовыми координатами под заданное соотношение сторон. Да, в какой-то момент появился MXML, но это совсем отдельная ветка. Хотя, сейчас вон тоже сайты под десктопы и мобилы по суди два раза верстают. Я нашел этот скриншот в статье 2011 года, которая заканчивается так: «...что касается интернет-приложений и разработки игр, тут Flash на долгие годы останется лучшим выбором для разработчика». Уже через год после этой статьи Adobe объявила о будущем скором прекращении поддержки технологии. Впрочем, некоторые современные инструменты, такие, как Unity, позаимствовали очень многое у Flash, так что можно сказать, он переродился. #dev#web

743 views

Hashtags

Один из легальных способов для программистов бороться с жадностью корпораций — писать open source аналоги проприетарного софта. Да, к сожалению, мы всё ещё вынуждены покупать (или незаконно качать) Photoshop, After Effects, AutoCAD и даже Microsoft Office, до которых свободные аналоги пока не дотягивают. Но тот же Blender очень сильно подвинул баланс сил на рынке 3D-моделирования. Да, возможно те, кто когда-то учился на 3D Max, Cinema 4D или Maya, скорее всего, всё ещё на них остались, но вот новое поколение 3D-художников очень активно учится на Blender и делает в нём шедевральные вещи, абсолютно ничем не уступающие коммерческим гигантам. В близкой мне области тоже есть свежий пример: для экшен-камер GoPro долгое время единственным хорошим решением был платный и дорогой стабилизатор под названием ReelSteady. За софтину просят что-то около $200 единоразово, но только она могла дать стабилизацию на основе гироскопа, которая на три головы превосходила любые алгоритмы на основе анализа картинки. Однако, несколько лет назад вышел кривой и неудобный open source проект, а буквально в этом году, если я не ошибаюсь, другой разработчик допилил его до прямого и удобного. Называется GyroFlow: кроссплатформенный софт с открытым кодом, который тоже умеет стабилизировать картинку на основе гиро-данных, причём, с кучи разных камер, включая все современные модели GoPro. Он абсолютно бесплатный, выдаёт результат ничуть не хуже, чем ReelSteady, да ещё и работает быстрее и содержит больше настроек. Просто flawless victory, как по мне. Надеюсь, такого будет появляться всё больше. В конце-концов, комьюнити уже прогибает корпорации на выпуск вещей вроде VS Code. #dev

662 views

Hashtags

Написал большущую статью о том, как проходил AtomSkills. Это был очень интересный и необычный опыт, даже с учётом моих предыдущих поездок на хакатоны. Если вам интересна разработка и соревнования по программированию, велкам :) #dev https://vk.com/@denisnp-kak-my-vyigrali-sorevnovanie-dlya-stroitelei-i-svarschikov?v=4

499 views

Hashtags

Я участвую в конкурсе разработчиков «Код Петербурга», проводимом совместно VK и городом. По условиям нужно сделать или VK-приложение или чат-бота для VK/Маруси с какой-то важной для жителя или гостя города функцией, и с использованием одного из предоставленных внешних API. Я попробовал воплотить свои давние мысли по семантическому поиску по текстам, в чем мне помог @wooferclaw. Что-то подобное мы пытались соорудить на хакатоне в Салехарде, но сейчас я пошёл дальше. Бот для Маруси, который ищет мероприятия в Петербурге с сайта KudaGo. При этом к боту подключён морфологический словарь и тезаурус, который умеет определять домены и ассоциативные связи между словами. Работает вроде неплохо. Во-первых, довольно точно ищет по прямым связям. Например, хорошо понимает, что слова «научный» и «наука» одинаковые, хотя в словаре словоформ они разные. Во-вторых, умеет находить связи по области: допустим, если попросить что-то про пришельцев, предлагает экспозицию о внеземных цивилизациях, хотя ни в описании, ни в ключевых словах этой экспозиции нет слова «пришелец» однокоренных с ним. Но этот поиск приводит и к забавным последствиям, которые лично я не считаю недостатком, а скорее щепоткой соли в работе алгоритма. Так, при запросе о пришельцах может выдать выставку о коммунальных квартирах (что действительно близко по смыслу, но человеку, который ищет пришельцев, скорее всего нужно не это). А ещё на слово «крокодилы» предлагает экскурсию по рекам и каналам, мне очень нравится :) Потестить можно, открыв Марусю (в приложении ВК или в отдельном) и сказав «Запусти навык Куда Пойти в Петербурге». А результаты конкурса будут в октябре. Там ещё второй этап, на него тоже что-нибудь подам. #dev

492 views

Hashtags

Я вам уже писал об игре Satisfactory, которая является наследницей Factorio. А вот тут вышла статья (очень хороший перевод с английского), где сравнивают Factorio с программированием и мышлением разработчика, и становится понятно, почему мне так понравился жанр. Тут пишут, что сотрудникам компании Shopify компенсируют покупку Factorio. И вообще много интересных цитат: «Эта игра в конечном итоге создаёт у игроков привычку смотреть на каждую ситуацию под следующим углом: каков наилучший способ автоматизации этой задачи, и какие зависимости других механизмов подвергнутся угрозе, если я её автоматизирую?» «вы вряд ли сможете увеличить вес своей становой тяги в 50 раз. Но области, для которых это не так, занимают всё большую долю от общей экономической деятельности по очень тавтологической причине: их доля растёт, потому что именно они могут масштабироваться» Очень любопытное замечание. И ещё прикольное в конце: «Оказывается, у того, что некоторые задачи можно автоматизировать, есть и обратная сторона: это значит, что со временем всё большая доля общемировых проблем будет проистекать из задач, которые нельзя автоматизировать. Удачи вам с комбинированием вызовов API для решения проблемы ревности или высокомерия» #games#dev Сама статья: https://habr.com/ru/company/sportmaster_lab/blog/678038/

480 views

Hashtags

Есть такой онлайн-сервис SunCalc. Он использует астрономические формулы, чтобы показывать положение солнца в заданных координатах и заданное время. Я его применяю, например, чтобы выбрать время и место съёмки. Так вот, там в сервисе взяты Google-карты, и уже несколько лет на каждом тайле отображается ватермарка "For development purposes only", а при старте сервиса выскакивает ошибка о некорректной загрузке карт. Это произошло из-за того, что Гугл в какой-то момент поменял карты, не сохранив обратную совместимость, и сделал платной ту квоту, которая прежде была бесплатной, увеличив стоимость использования в 14 раз! В SunCalc, как и во множестве подобных проектов на базе API крупных компаний, нет рекламы и монетизации. А код сервиса доступен в Open Source. Это просто удобная онлайн-тулза от энтузиаста. Он на ней не зарабатывает, даже наоборот: тратит собственные деньги на оплату серверов, просто чтобы привнести в мир некоторое универсальное общественное благо. Формально, конечно, Гугл, как владелец своих карт, имеет полное право раздавать доступы к этим картам на любых условиях. Но фактически нет никакой хорошей и рациональной причины, по которой бесплатный некоммерческий общественно-полезный сервис не должен иметь возможность применять эти карты. Платить автор сервиса точно не будет: нет никакого смысла выкидывать сотни долларов в месяц просто так ради жадности Гугла. Получается, что пользователи на ровном месте испытывают неудобства. Хоть и небольшие, но всё-таки — работать с чистой картой без надписей и затемнения гораздо приятнее. Вот вам ещё про вред капитализма и монополий. Не то, чтоб я видел какую-то другую более работающую экономическую систему (социализм с его плановой экономикой во много раз хуже и нежизнеспособнее, разумеется). Но просто каждый раз раздражают такие ситуации, когда на них наталкиваюсь. Какого хера вообще? #web#dev

423 views

Hashtags

Сегодня целый день был на офлайн-части конференции #DotNext для разработчиков под платформу .NET. Посетил две лекции, два круглых стола (это такое обсуждение несколькими экспертами на сцене, как подкаст, но вживую), поучаствовал во всех активностях, позадавал вопросы и обсудил со спикерами и другими участниками ряд проблем. Вроде всё на месте, но я понял вот что: для меня было мало точек приложения внимания в ширину, однако избыток приложения внимания в глубину. Возможно, я сам себя не слишком правильно настроил. Лето, жара, скоро отпуск: кажется, я ошибочно ожидал чего-то более казуального от мероприятия. Могу сказать, что в своё время посещение TechTrain принесло мне суммарно больше удовольствия, хотя там билеты на порядок дешевле, и выставка в целом более лёгкая и менее тематическая. Здесь же было хорошее глубокое погружение в тему, но горизонтально мне не хватило разнообразия: мало стендов (два), мало пространства по выбору лекций (в каждый момент шло две лекции в двух залах, выбор всегда из двух). На стенде от PVS-Studio поискал ошибки в коде, получил много мерча, прикольного. Но сама система у ребят только корпоративная, индивидуальных лицензий нет, а я возможно даже попробовал бы. Второй стенд от Промсвязьбанка предлагал телеграм-бота с разными заданиями. Я, кстати, Промсвязьбанку писал недавно квиз на Хабр. Они активно хантят народ. Задания были нормальные: там и коммуникация с другими участниками, и ответы на вопросы, и всякое решение задачек. Но разрыв по очкам между точками получения призов такой большой, что всю вторую половину игры я буквально вёл впустую. Из минусов организации отмечу два момента: 1. Офлайн-участников было не очень много, а онлайн-участников существенно больше. Поэтому даже офлайн-участникам предлагалось задавать вопросы спикерам с помощью чатов в Телеграме. Это не только создавало миллион чатов (по каждому докладу свой чат, потому что Телега не умеет в комнаты), но и было неудобно в процессе — ссылка на чат показывалась только в самом начале доклада, если не успел, а вопрос возник по ходу лекции, то найти ссылку проблематично. И вообще, я считаю, что правильно было бы дискриминировать онлайн-участников. Они меньше заплатили за билет, они поленились приехать. Но их удобство в итоге было приоритетным над удобством офлайн-участников просто из-за количества. 2. Дискуссии пересекались по времени с другими лекциями и с обедом. В итоге нельзя было полноценно пообсуждать что-то со спикером, не опоздав куда-то дальше. А на обед я вообще попал тогда, когда почти всё уже съели. За счёт работодателя бы ездил с удовольствием, но за личные деньги, пожалуй, не моё. #dev

449 views

Hashtags

Хочу немного похвалить Copilot — у него обнаружилась удивительно неплохая способность писать комментарии к коду! На этом скриншоте я написал только первые полтора слова у каждого комментария, остальное дополнила нейросеть, и в одном месте я сделал после этого небольшую правку. Во-первых, это действительно подразгружает, потому что ошибки в комментариях не так страшны, можно доверить такое дело генератору. Во-вторых, есть интересное неочевидное свойство: нейросеть может попытаться объяснить вам чужой код таким способом. Вы как бы спрашиваете компьютер о том, что написал другой человек на языке компьютера. Это довольно прикольно, и даже может быть как-то использовано в целях обучения, как по мне. #dev

546 views

Hashtags

Яндекс выложил в открытый доступ нейросеть YaLM 100B, которая может псевдоразумно отвечать на вопросы и вести беседу. К сожалению, попробовать её лично я не могу, потому что для запуска нужно около 200+ гигабайт видеопамяти, это приличная такая майнинг-ферма. Но по скриншотам она действительно хорошо работает. Хотя про GPT-3 тоже так говорили, а на деле очень так себе. А ещё неделю назад по сети ходила новость о том, что один из разработчиков в Google пообщался с их нейросетью и увидел в ней признаки разума. Вплоть до того, что нанял юриста защищать интересы нейросети! Его в итоге отправили в оплачиваемый принудительный отпуск, подлечиться, наверное. Разработчики знают о мысленном эксперименте "Китайская комната", но обывателю он, на мой взгляд, сложен для понимания, поэтому я попробую привести другой пример. Представьте, что у вас есть кубики с буквами, и там набор граней, которые составляют фразу "Привет, человек". Вы эти грани намазали чем-то вкусным и научили вашу собаку переворачивать кубики вкусными гранями вверх в ответ на команду "Привет, собака". В итоге, если вы говорите "Привет, собака", она переворачивает кубики так, чтобы из них сложилось "Привет, человек". Научилась ли собака при этом говорить на человеческом языке и осознанно отвечать на приветствие? Нет. Нейросеть гораздо глупее собаки (та хотя бы способна именно сознанием различать разные человеческие фразы). Это просто набор алгоритмов, которые складывают кубики, а мы уже на этих кубиках что-то читаем. Чтобы кубики складывались правильно, этих алгоритмов много, и параметров, которыми такая нейросеть оперирует, 100 миллиардов. Даже очень хороший алгоритм по подбору кубиков не является разумным фактически ни в каком смысле этого слова. Впрочем, это не значит, что он не может решать нужные нам задачи. Такую сетку вполне нормально поставить в условной службе поддержки отбиваться от дурачков, задающих банальные или глупые вопросы. Что еще посмотреть по теме: «Теорема о бесконечном количестве обезъян»; И очень крутой фантастический рассказ Хорхе Луиса Борхеса «Вавилонская библиотека». В Библиотеке точно будет книга, которая станет буквально с вами разговаривать: вы задаёте вопрос (любой), переворачиваете страницу и видите там ответ на него, будто бы от разумного существа. #dev#fiction

554 views

Hashtags

Попробовал Github Copilot. Это проект, в рамках которого Гитхаб обучил нейросеть на миллионах строк программного кода, загруженного людьми, и теперь она вроде как способна предлагать автоматическое дополнение к тому, что вы пишете. В теории, если вы напишете название функции, например public int Fibonacci(int n), то она сразу предложит вам автоматически подставить всё остальное. Конкретно с этим примером система действительно справляется, но в целом впечатления у меня от неё смешанные, и на мой взгляд она пока что не стоит тех $10 в месяц, которые за неё просят после тестового двухмесячного периода. Я уже писал ранее о своём отношении к нейросетям. В задачах дополнения данных они работают средненько: значимый процент решений будет с ошибками. Вот и здесь — сначала я подумал, что Copilot сможет за меня копипастить популярные однотипные куски кода из интернета. Например, я не помню алгоритм Вагнера-Фишера, постоянно его копирую из своих других проектов, часть из которых выложена на Github и наверняка была передана в обучение Copilot. Я предложил нейросетям мне этот алгоритм написать, они написали что-то отдалённо похожее. Внешне выглядело убедительно и даже компилировалось, но работало неправильно, и при ближайшем рассмотрении оказалось, что там просто случайно надёрганные строчки из настоящего алгоритма. Некоторые проверки по 2 раза, а часть нужной логики упущено совсем. Об оформлении кода вообще говорить не стоит: пока всё, что мне выдавалось, оформлено плохо, и на ревью я бы написал разработчику несколько замечаний. Однако, в других местах работает, как задумано. Если у вас есть дуальные функции, оно умеет предлагать дописать остаток (пример на скриншоте ниже). Но из того, что я попробовал, только процентов 20 случаев реально были полезны. Остальные 80% или вообще неверный код, или правильный, но такой неаккуратный, что лучше самому написать. Есть ещё проблема: массовый копипаст довольно опасен, потому что легко пропустить какую-то мелочь. В идеале нужно весь вставленный код проверять построчно, но по когнитивной нагрузке это близко к тому, чтобы создать его самостоятельно. И человеческое внимание совершенно точно будет расслабляться и размываться при работе с такими средствами автодополнения, а, значит, неизбежны ошибки. На месте чувствительной к багам энтерпрайз-разработки я бы вообще запрещал бы своим сотрудникам применять Copilot. С другой стороны, возможно, подобная утилита хорошо зайдёт для прототипирования, на хакатонах, на стримах с демонстрацией разработки чего-нибудь. У меня будет возможность проверить на соревновании через месяц, но в работе скорее всего отключу. #dev

495 views

Hashtags