@clockstackwheels · Post #609 · 26.10.2022 г., 11:49
ВКонтакте, я бэкенд-разработчик, причём не ваш, а вообще другой организации. Но так и быть, сделаю чуть-чуть работу ваших фронтендеров. #dev
Hashtags
TGINSIGHT SIMILAR POSTS
Изходен канал @clockstackwheels · Post #577 · 1.10
Закончился второй этап конкурса "Код Петербурга". На первый я отправил скилл для Маруси, позволяющий гибко искать события по базе KudaGo. Но с самого начала говорили, что среди критериев оценки будут метрики: число пользователей и так далее. Там, где есть метрики, нужно делать развлекательный проект или игру, без вариантов. У "полезных" самостоятельных приложений (не связанных с внешним бизнесом) метрик нет почти никогда. Я посмотрел на топ развлекательных приложений в каталоге ВК и увидел, что местная аудитория любит кликеры / idle. Это такие игры, которые максимально абстрагируют игровой процесс: буквально конвертируют время вашей сессии и совершение простейших действий во внутриигровой ресурс. Грубо говоря, вы получаете очки, потому что просто сидите в игре, и на этом все. Ну, иногда нужно нажимать на экран. О причинах популярности и кажущейся примитивности этого жанра я сейчас рассуждать не берусь, но во второй этап решил сделать кликер про музеи Петербурга. Напомню, что одно из условий конкурса: использовать API городских сервисов. Здесь я взял базу данных Министерства Культуры. В игре "Музейный Барон" вам нужно нажимать на посетителей с разными предпочтениями, получать с них деньги, на которые строить музеи, позволяющие получать еще больше денег, в том числе автоматически. Музеи, разумеется, настоящие. Я, кстати, пока подбирал, узнал о нескольких новых, которые хочется посетить. Еще есть, например, возможность в реальности зачекиниться по GPS у нужного музея и получить его со скидкой. И, конечно, я не отказал себе в удовольствии сделать отдельный режим "Ночь Музеев", генерирующий в разы больше посетителей. Вообще, делать кликер было интереснее, чем кажется. Отдельно пришлось придумывать, как не допустить написание игроками ботов для автоматизации. Ну и математику тоже пришлось продумывать, строя графики, хотя, кажется, есть куда улучшать. #dev#games
Общо глобално търсене
@clockstackwheels · Post #609 · 26.10.2022 г., 11:49
ВКонтакте, я бэкенд-разработчик, причём не ваш, а вообще другой организации. Но так и быть, сделаю чуть-чуть работу ваших фронтендеров. #dev
Hashtags
@clockstackwheels · Post #596 · 14.10.2022 г., 19:03
Свершилось. Сегодня Экосистема городских сервисов совместно с VK Mini Apps подвели итоги конкурса, в котором я участвовал, и писал вам об этом. Мой музейный кликер оценили не только вы в комментариях, но и члены жюри: я занял первое место во втором этапе (по правилам можно занять призовое место только в одном, даже если подавался в два). Очень рад :) Люблю наш город, люблю конкурсы по программированию, ну и, разумеется, люблю выигрывать, чего греха таить :) Работы интересные, список всех победителей можно посмотреть вот тут. До шорт-листа дошли всего 42 проекта, так что на самом деле при внимательном и аккуратном отношении шансы попасть в список из 20 призёров были хорошие. Участвуйте в конкурсах тоже. Это полезно для прокачки скилла, даже если вы не получите приз. Но если получите — ещё и приятно :) P.S. Постоял рядом с CEO VK, думал попросить включить мне новый дизайн, но постеснялся. #dev
Hashtags
@clockstackwheels · Post #570 · 26.09.2022 г., 12:41
Как вы уже знаете, я участвую в конкурсе "Код Петербурга", где нужно сделать какие-то программные продукты, используя API различных городских сервисов. KudaGo взяли у некоторых разработчиков интервью, попросив ответить на распространённые вопросы типа "Нужен ли айтишнику технический склад ума?" и "Правда ли, что айтишники — закрытые интроверты?". Я тоже поотвечал, и даже, пожалуй, слишком многословно на фоне других отвечающих. Вот, собственно, сама статья: https://kudago.com/all/news/top-glupyih-vopros-dlya/ #dev
Hashtags
@clockstackwheels · Post #550 · 10.09.2022 г., 11:40
Пришло уведомление от Whoosh: "Годовая подписка за 990р". Захожу в приложение, а там её нет. Стандартные недельная и месячная. Пишу в саппорт: так и так, прорекламировали — предоставляйте. Посоветовали обновить приложение — и правда, подписка появилась. Если бы я не поленился в саппорт написать, у них могло бы быть на одного платного клиента меньше. Это хорошая задачка на архитектуру и проектирование приложений: такие элементы нужно отрисовывать динамически по данным из БД. Создаётся абстрактный компонент, у которого есть свойства типа title, subtitle, caption, рисуются стили. При необходимости данные меняются на сервере, и все пользователи получают новый список. А тут, вероятно, захардкожено в клиенте. Нехорошо. #dev
Hashtags
@clockstackwheels · Post #547 · 08.09.2022 г., 18:04
Мой новый любимый тип задач на собеседованиях: даём кандидату кусок кода и просим провести ревью. Во-первых, это из тех задач, которые нельзя строго либо решить, либо не решить. Разные кандидаты находят разное количество ошибок, оценка получается более гибкой. Во-вторых, проверяется сразу несколько компетенций: и работа с базами данных, и многопоточность, и оптимизация, и кодстайл и куча всего ещё. Увидит ли кандидат ошибку в SQL? Сделает ли необязательное, но ценное замечание по именованию переменных? А может даже даст комментарий на тему архитектуры? Ещё и софтскиллы сразу проверяются: каким способом человек сообщает о чужих ошибках. Но нашу задачку я вам не покажу. Вдруг будете у нас собеседование проходить, хехе ) Ещё из недавнего: соискатель указал в резюме английский B2 и особо подчеркнул, что очень силён в алгоритмах. Я скинул ему скриншот ниже и попросил объяснить задание и поразмышлять над решением. К сожалению, и задание и решение в итоге объяснял я. Кстати, кто занимается разработкой, можете под спойлерами предложить свои варианты. Вообще, проведение собеседований помогает хорошо бороться с синдромом самозванца. У меня прям сильный был, пока я на постоянную работу не пошёл. Сейчас тоже есть (думаю, все разработчики этим страдают, кроме самых плохих: у них эффект Даннинга-Крюгера), но меньше. #dev
Hashtags
@clockstackwheels · Post #518 · 27.08.2022 г., 11:51
Я порешал немного задачи на leetcode и остался не слишком доволен сервисом. Leetcode — это онлайн-сайт с задачами по программированию. Даётся описание (какие данные приходят на вход, и что нужно получить). Можно отправить код на любом актуальном языке программирования, и ваше решение будет оценено по двум показателям: скорость и память. Что не понравилось в сервисе: 1. Встроенный редактор кода поленились делать нормальным, это по сути блокнот без каких-либо хинтов и проверок. Проще сразу писать в IDE, а потом копировать. Но это мелочь, куда серьёзнее второй пункт. 2. Система оценки, о которой я упомянул выше, крайне неточная. Разброс по времени бывает в 1.5-2 раза у одного и того же кода. И, наоборот, почти не показывает важную разницу между разными решениями. По памяти то же самое: цифры плюс минус одинаковые, как бы вы ни решали задачу. Это выражается в том, что легко словить результат типа "Ваше решение лучше, чем 33.33% остальных", причем, много раз подряд. Это значит, что в точности треть решений попадает в какой-то один кластер оценки (либо что решений отправлено очень мало, но сайт популярный, так что не знаю даже). При этом подобная оценка — единственный показатель успешности вашего решения, поэтому она важна, но при таком разбросе теряет смысл. Хотя сама идея, например, ежедневной новой задачи мне нравится — позволяет разминать мозги и держать себя в тонусе в некотором смысле. Впрочем, тут тоже есть нюанс: эффективное решение задач редко пересекается с правильным и реалистичным решением, которое требовалось бы от программиста в любом практическом сценарии. Допустим, вам нужно наполнить ведро водой. В обычной жизни вы отнесёте его в ванну, откроете кран и наполните. А вот подход на Leetcode заставляет использовать извращения типа "вытащить из холодильника бутылку воды и разрезать её над ведром". И вот в какой-то момент вы понимаете, что быстрее всего выбросить ведро в окно, потому что под окном глубокая лужа, оно там утонет и технически станет наполненным водой мгновенно. О реальной жизненной применимости такого решения, думаю, говорить не стоит. Но иногда буду решать. Сегодняшняя задача уровня Hard, такие дают за собеседованиях на middle и senior: поиск максимальной суммы прямоугольника внутри матрицы. #dev
Hashtags
@clockstackwheels · Post #510 · 20.08.2022 г., 09:17
Один из легальных способов для программистов бороться с жадностью корпораций — писать 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
Hashtags
@clockstackwheels · Post #494 · 05.08.2022 г., 20:25
Написал большущую статью о том, как проходил AtomSkills. Это был очень интересный и необычный опыт, даже с учётом моих предыдущих поездок на хакатоны. Если вам интересна разработка и соревнования по программированию, велкам :) #dev https://vk.com/@denisnp-kak-my-vyigrali-sorevnovanie-dlya-stroitelei-i-svarschikov?v=4
Hashtags
@clockstackwheels · Post #482 · 02.08.2022 г., 18:12
Я участвую в конкурсе разработчиков «Код Петербурга», проводимом совместно VK и городом. По условиям нужно сделать или VK-приложение или чат-бота для VK/Маруси с какой-то важной для жителя или гостя города функцией, и с использованием одного из предоставленных внешних API. Я попробовал воплотить свои давние мысли по семантическому поиску по текстам, в чем мне помог @wooferclaw. Что-то подобное мы пытались соорудить на хакатоне в Салехарде, но сейчас я пошёл дальше. Бот для Маруси, который ищет мероприятия в Петербурге с сайта KudaGo. При этом к боту подключён морфологический словарь и тезаурус, который умеет определять домены и ассоциативные связи между словами. Работает вроде неплохо. Во-первых, довольно точно ищет по прямым связям. Например, хорошо понимает, что слова «научный» и «наука» одинаковые, хотя в словаре словоформ они разные. Во-вторых, умеет находить связи по области: допустим, если попросить что-то про пришельцев, предлагает экспозицию о внеземных цивилизациях, хотя ни в описании, ни в ключевых словах этой экспозиции нет слова «пришелец» однокоренных с ним. Но этот поиск приводит и к забавным последствиям, которые лично я не считаю недостатком, а скорее щепоткой соли в работе алгоритма. Так, при запросе о пришельцах может выдать выставку о коммунальных квартирах (что действительно близко по смыслу, но человеку, который ищет пришельцев, скорее всего нужно не это). А ещё на слово «крокодилы» предлагает экскурсию по рекам и каналам, мне очень нравится :) Потестить можно, открыв Марусю (в приложении ВК или в отдельном) и сказав «Запусти навык Куда Пойти в Петербурге». А результаты конкурса будут в октябре. Там ещё второй этап, на него тоже что-нибудь подам. #dev
Hashtags
@clockstackwheels · Post #398 · 24.06.2022 г., 16:50
Хочу немного похвалить Copilot — у него обнаружилась удивительно неплохая способность писать комментарии к коду! На этом скриншоте я написал только первые полтора слова у каждого комментария, остальное дополнила нейросеть, и в одном месте я сделал после этого небольшую правку. Во-первых, это действительно подразгружает, потому что ошибки в комментариях не так страшны, можно доверить такое дело генератору. Во-вторых, есть интересное неочевидное свойство: нейросеть может попытаться объяснить вам чужой код таким способом. Вы как бы спрашиваете компьютер о том, что написал другой человек на языке компьютера. Это довольно прикольно, и даже может быть как-то использовано в целях обучения, как по мне. #dev
Hashtags
@clockstackwheels · Post #396 · 22.06.2022 г., 11:54
Попробовал Github Copilot. Это проект, в рамках которого Гитхаб обучил нейросеть на миллионах строк программного кода, загруженного людьми, и теперь она вроде как способна предлагать автоматическое дополнение к тому, что вы пишете. В теории, если вы напишете название функции, например public int Fibonacci(int n), то она сразу предложит вам автоматически подставить всё остальное. Конкретно с этим примером система действительно справляется, но в целом впечатления у меня от неё смешанные, и на мой взгляд она пока что не стоит тех $10 в месяц, которые за неё просят после тестового двухмесячного периода. Я уже писал ранее о своём отношении к нейросетям. В задачах дополнения данных они работают средненько: значимый процент решений будет с ошибками. Вот и здесь — сначала я подумал, что Copilot сможет за меня копипастить популярные однотипные куски кода из интернета. Например, я не помню алгоритм Вагнера-Фишера, постоянно его копирую из своих других проектов, часть из которых выложена на Github и наверняка была передана в обучение Copilot. Я предложил нейросетям мне этот алгоритм написать, они написали что-то отдалённо похожее. Внешне выглядело убедительно и даже компилировалось, но работало неправильно, и при ближайшем рассмотрении оказалось, что там просто случайно надёрганные строчки из настоящего алгоритма. Некоторые проверки по 2 раза, а часть нужной логики упущено совсем. Об оформлении кода вообще говорить не стоит: пока всё, что мне выдавалось, оформлено плохо, и на ревью я бы написал разработчику несколько замечаний. Однако, в других местах работает, как задумано. Если у вас есть дуальные функции, оно умеет предлагать дописать остаток (пример на скриншоте ниже). Но из того, что я попробовал, только процентов 20 случаев реально были полезны. Остальные 80% или вообще неверный код, или правильный, но такой неаккуратный, что лучше самому написать. Есть ещё проблема: массовый копипаст довольно опасен, потому что легко пропустить какую-то мелочь. В идеале нужно весь вставленный код проверять построчно, но по когнитивной нагрузке это близко к тому, чтобы создать его самостоятельно. И человеческое внимание совершенно точно будет расслабляться и размываться при работе с такими средствами автодополнения, а, значит, неизбежны ошибки. На месте чувствительной к багам энтерпрайз-разработки я бы вообще запрещал бы своим сотрудникам применять Copilot. С другой стороны, возможно, подобная утилита хорошо зайдёт для прототипирования, на хакатонах, на стримах с демонстрацией разработки чего-нибудь. У меня будет возможность проверить на соревновании через месяц, но в работе скорее всего отключу. #dev
Hashtags
@clockstackwheels · Post #367 · 30.05.2022 г., 19:16
Поговорим про ML. Пару дней назад вышла новость о том, что в продажу поступила первая русскоязычная книга, половину текста в которой написала нейросеть ruGPT-3. А до этого вы все наверняка натыкались на очень яркие записи про Dalle и Imagen, где нейросеть по описанию рисует картинку, и получается очень любопытно. Такими темпами скоро нейросети превратятся в крипту: высокотехнологичную вещь, о которой, однако, в среде приличных технарей лучше не упоминать. Потому что то, каким образом это используется, и то, какой образ этому создают в массах, расходится не только с реальностью, но и с определённым уровнем вменяемости. Кстати, ML ещё и может ярко демонстрировать эффект Даннинга-Крюгера. Мем про "Ты чё, пёс, я математик!" нифига не шутка. Человек может считать себя крутым программистом, если научился комбинировать чужие библиотеки на питоне. Хотя на самом деле простейшую практическую задачу решить не способен -- я с такими сталкивался лично. ML-щики вообще пихают свои нейросети куда ни попадя, считая, что это волшебная таблетка и швейцарский нож для любых ситуаций. Мне рассказывали случай, когда на хакатоне по работе с данными выиграл человек, который просто аккуратно вручную подобрал нужные зависимости в Excel :) Глобально же нейросетями пытаются решать три вида задач: 1. Информации в вопросе много, а в ответе нужно мало. Например, распознавание образов и символов. Подбор значений каких-нибудь коэффициентов. Приложение "Хотдог или не хотдог" из сериала Кремниевая Долина. Обычно нейросети справляются с таким очень хорошо. Рукописный ввод распознают шикарно, по фото могут назвать породу собаки, математические формулы читают. Но важно понимать, что под капотом даже у такой нейросети не возникает никаких понятных вам символов. Например, при распознавании рукописного ввода случайный набор пикселей, не имеющий для человека смысла, может быть с той же степенью уверенности интерпретирован нейросетью, как совершенно чёткая буква А. Просто мы на такой случайный набор не попадаем почти всегда, и поэтому всё ок. 2. Информации в вопросе средне, и в ответе нужно средне. Как правило, это предсказание, восстановление недостающих данных, улучшение качества фото, раскрашивание ч/б. С такими задачами нейросети справляются уже средненько. Улучшенный нейросетью снимок сразу видно. Предсказание лишь ненамного точнее, чем случайный выбор. Польза в том, что в обращении такие сети просты, а результат всё-таки дают. Но не стоит их переоценивать. Например, сюда можно отнести задачу суммаризации текста (по большому объёму текстов тебе печатают выжимку). Мои товарищи в одном чате несколько дней игрались с ботом-суммаризатором, и в основном половина написанных им фраз это просто мусор и ерунда для ржача. Но в другой половине всё-таки какой-то совсем небольшой смысл проглядывался. Недостаточный для того, чтобы задалбывать этим ботом участников чата (привет, ребята :) ), но не абсолютный рандом. 3. Информации в вопросе мало, а в ответе нужно много. Это генерация данных: вот как раз написание текстов, составление рисунков, логотипов и так далее. Так вот, по моему скромному, но всё-таки хоть немного компетентному мнению, в таких вопросах нейросети выдают полную херню. И хвалёная логотипная нейросетка Лебедева — тоже полная херня. И распиаренная GPT ничего толкового не пишет. Когда читаешь примеры в новостях-анонсах, сразу думаешь: "Вау, как круто!". Но когда пробуешь сам: ruGPT-3 по уровню осмысленности где-то чуть ниже "Яндекс.Рефератов", если помните такой сервис и суть его работы. Я не знаю, будут ли сети по созданию изображений работать так круто (сейчас доступа к ним ни у кого нет), но книга в соавторстве с человеком стала возможна только по той причине, что в качестве человека взяли Павла Пепперштейна, который берёт случайные комбинации словосочетаний и выдаёт это за литературу. Поверьте: человечество пока что в безопасности касательно захвата машинами. #dev
Hashtags