13 заметок с тегом проекты

Я что-то сделал

Я — делаю, вы — смотрите

newprojectname.dev

https://newprojectname.dev

Есть забавная традиция называть проекты/библиотеки именами различных мифических существ и божеств. И у меня давно лежала идея хелпера по подбору таких названий, но реализовал её только сейчас.

Я напарсил самый большой список названий божеств из 43 пантеонов, что дало 4096 уникальных имён (и 9000 если считать все алиасы). Ну а чтобы избежать коллизий, проект на лету ищет эти имена в названиях репозиториев на Гитхабе и показывает топ-результаты.

Из интересной инженерии: проект на Svelte, имеются исходники. Внутри есть база на 1Мб сырого json’a, которая затаскивается в общий бандл приложения и ужимается до 150кб. И из-за этого хака всё успешно хостится как статика на Digital Ocean’e за 0.00$ в месяц. Дизайн тоже корявенько делал я. Запросы к Гитхабу — клиентские, лимиты запросов — тоже на клиенте. Легчайшая поддержка.

Типы улиц Тулы

Раз уж пошла такая мода (оригинальная идея Эрина Дэвиса, Москва, Астрахань), то и я нарисовал карту типов улиц Тулы.

Интересно выглядят плотные участки, состоящие только из проездов. Вроде как согласно СНиП (Строительные нормы и правила), к проездам меньше требований по ширине полос, допустимым углам поворота, наибольшему допустимому уклону, ширине пешеходной части.

А ещё в Туле есть особенный тип: «обвод». Он всего один (Восточной обвод), но всё таки существует. И целых два проспекта.

Датасет структуры сети Lightning

Ковыряю в свободное время интересную тему и задачу, которую курирует LAMBDA.

Вводная

Есть сеть Лайтнинг, которая является надстройкой над майннетом Биткоина. Придумывалась для более мелких транзакций, которые не позволял делать Биткоин. Например, тебе нужно заплатить за кофе или совершить какую-то маленькую операцию.

Основная терминология:

  • нода — узел сети. Получатель денег в общем,
  • канал — ребро сети. Общий кошелёк в майннете Биткоина между двумя нодами.

В Лайтнинге интересный механизм поиска пути транзакции. Eсли тебе надо перевести деньги из А в С, то не обязательно открывать новый общий кошелёк в майннете Биткоина.

Предположим у тебя уже есть канал А<->B и есть канал B<->C. В таком случае ты можешь сделать перевод A->B->C, где B за проход транзакции через себя возьмёт какую-то комиссию. А можно перевести и предположим по пути A>D->B->C, если такой существует.

Но не всё так просто. Помимо комиссии, на транзакцию накладываются дополнительные условия. У канала есть «ёмкость»: сколько можно переслать денег между двумя нодами без создания нового общего кошелька в майннете. И «ёмкость» А->B и B->A не одно и то же.

Подробнее и больше можно почитать в документации.

Цель

Основная идея ресёча — заменить глупый перебор результатов DFS для проведения транзакции на что-то более умное. Кажется, что это можно сделать, имея статистику «прошедших» транзакций и варианты альтернативных путей. Получиться должно что-то вроде статистического роутинга на основе прошлых транзакций.
Для этого нужно собирать датасет таких транзакций и их альтернатив, но это упирается в некоторые технические сложности и проблемы. Я собственно сейчас пытаюсь их решить, проверяя вообще работоспособность идеи сбора таких данных. Если получится, то будет очень классное и необычное решение.

Датасет

До этого этапа хотелось посмотреть (и посмотрели) просто на динамику сети, как она меняется и насколько стабильна. Написал простенький парсер и в итоге получился датасет на 10 Gb «слепков» сети: рёбра графа и всякая метаинфа нод (ip-адрес, алиас в сети и гео-координаты).

Парсилось каждый час с 10.12.2019 до 04.03.2020 (84 дня), всего 2022 записи. Каждый результат в отдельном файле со своим временем.

На этом датасете можно построить интересные визуализации динамики графа и прочие клёвые штуки. Почему бы собственно им не поделиться, да?

«Средненько». Проверка гипотезы

Мотивация

Я 3-4 года назад услышал про исследование КБ «Стрелка», в котором они скрапили фото из социальных сетей (Инстаграм и ВК) и рисовали хитмапы на картах по ним. Оказывается, это называется цифровой антропологией.

Идея кейса, который вдохновил меня, в том, что такое исследование помогло в каком-то там городе РФ выбрать лучшую точку для открытия общественного пространства. Гипотеза такая: если люди где-то делают фото, значит уже проводят там время, а значит там и так всё хорошо с социальной жизнью. В итоге администрации посоветовали открыть новую точку интереса на противоположном конце города от существующей.

Загорелся идеей сделать нечто похожее, но в сферу каких-то постоянных событий идея оставалась идеей без реализации.

Закрывая гештальт (как Инстаграм своё API для доступа к гео-информации о фотографиях в 2016-ом) достиг успеха.

Реализация

Т. к. API Инстаграма оказалось закрытым, решил воспользоваться Flickr’ом.
Суть идеи:

  • берем 2019ый год,
  • cкрапим фотографии с Flickr для конкретной локации (т.e. города),
  • аккуратно накладываем на карту,
  • видим места, где люди много фотографируют,
  • делаем какие-то выводы.

Например: люди фотографируют -> там что-то интересное -> логично поселиться во время поездки.

Другой например: можно увидеть места, которые недостаточно освещены туристически (с точки зрения наличия фотографий) и можно выбрать наоборот район, где живут местные. На примере Берлина эта теория вроде как работает.

Фотографии в Берлине за 2019ый год

Найденные подводные камни:

  • API Flickr’a частично не завелось из python-обертки, которую я нашёл,
  • фотографий не так много (250к за год), как в Инстаграме. С геопозицией — еще меньше. За 2019ый год только 44к для Берлина,
  • на карте прямыми линиями из фотографий заметны фотопрогулки, когда один человек шел и фотографировал всё, что видел. Так получается много фотографий одного места, хотя это всего лишь от одного человека. В планах написать кастомную функцию хитмапа, которая бы давала больший вес участкам, где фотографии от разных людей. Так получится сильно честнее.

«Средненько»

В процессе возникла идея — сопоставить кучу фотографий одной достопримечательности для получения её «усреднённого» вида. Итог получился сильно лучше, чем я ожидал.

Оригинальные Бранденбургские ворота
Усреднённые 55 фотографий Бранденбургских ворот

Когда-то вероятно продолжу и сделаю для других городов.

Маленькое исследование в эпидемиологии

Написали на Хабре вместе с заинтересовавшимися из ODS про модель распространения абстрактного вируса по РФ. Опирались на датасет перевозок за апрель 2019ого, которые дали tutu.ru. Огромное спасибо Сергею (Milfgard) за это, без его инициативы ничего бы не было.

Полезное действие — показать, что изоляция и ограничение перемещения действительно помогают снизить темпы распространения.

В статье немножко технических подробностей, но лично мне захотелось теперь лучше разобраться в эпидемиологии и их моделях.

Я тут отвечал за получение полезного и осмысливаемого результата за короткий срок, саму статью и красивые видосы, которые удобнее всего смотреть на скорости 0.25.

На видео симуляция на полгода вперёд. Легенда карты:

  • размер метки зависит от населения города. Больше населения — больше метка,
  • цвет метки зависит от числа инфицированных (зеленый — мало, красный — очень много),
  • если в городе нет инфицированных — он не показывается на карте. Так легко увидеть первые случаи и путь распространения.
Полный пассажиропоток, нет никакой изоляции
10% от пассажиропотока, есть небольшая социальная изоляция

[Идея] Авто-плейлист Spotify/AppleMusic из ближайших концертов в твоём городе

Хочу следующий флоу:

  • сервис парсит артистов и их концерты в  с заданного списка сайтов и формирует тебе плейлист,
  • ты слушаешь плейлист и если тебе понравилась группа/трек, то идёшь на веб-страницу, смотришь концерт этой группы и покупаешь билеты,
  • когда концерт прошёл — трек удаляется из плейлиста.

Выглядит как автоматический мониторинг ближайших концертов прямо в ушах.

Возможность потыкать API Spotify/AppleMusic/GooglePlayMusic.

Junction 2019 — русские, русские, русские, VK

Был на выходных на Junction-2019 (топовый европейский хакатон в Хельсинки), а это заметка фактами по свежим следам.

Выжимка

Русские, русские, автобусы из Питера, иностранцы придумывают, как интегрировать VK с AliExpress 🤯, ещё русские, детская безопасность в интернете, клёвое название нашего проекта, купленные шрифты, Люси в восторге, треки не очень, старость.

Чуть более развёрнуто

Похоже Junction окончательно стал главной выездной площадкой для IT-шников в СНГ. Русскоговорящих было по ощущениям больше половины. Приглашения для визы генерил скриптик на сайте, это ли не победа над бюрократией?

Вспомнил, что он же в 2016 был моим первым выездным IT-мероприятием и атмосфера была совсем другой: пиццабургеры, Yousician с укулеле, на которых можно было играть ночью, лазерный луч через всё пространство мероприятия. Тогда это чувствовалось как что-то близкое, организованное такими же как и ты. Сейчас — построенный бизнес, который (видимо успешно) штампует мероприятия для студентов и ищет спонсоров. Ну и призы подросли.

Чувствовалась старость и лень: зачем не спать всю ночь, когда после сна ты сможешь что-то пофиксить за 20 минут? Зачем не спать, когда в понедельник на работу?

Победители

  1. Приложение для авторизации детей, которые ещё не умеют читать и писать (а потреблять контент хочется) в соцсетях. Суть в том, что ты придумываешь историю с вымышленными персонажами, и вот эта твоя история и становится паролем.
  2. Симуляция потоков людей на мероприятии. Создали комнатку в игровом движке, наплодили агентов, хакнули A* алгоритм и ПОБЕЖАЛИ ВСЕ НА ВЫХОД ПОЖАРНАЯ ТРЕВОГА УПС, ТЫ СГОРЕЛ И НЕ ДОБЕЖАЛ. Демка выглядела классно.
  3. Оказывается, фины очень много тратят на гэмблинг. Ребята сделали рулетку на телефоне, где проигранные деньги отправляются тебе на банковский счёт и вернутся к тебе только через год.

sad but true

В итоге мы с Дашей набросали вдвоём маленькое демо приложения для личного контроля финансов, собрав в кучку все лучшие идеи, которые нашлись в других приложениях (типа burnout-char’a для отслеживания твоего ежедневного бюджета). Сервер я уже грохнул, так что есть только скрины. Возможно как-то допилим и сделаем интеграцию со своими банковскими аккаунтами. Оказывается в Европе это сильно проще, чем с российскими банками.

Называется sad but true, потому что в миллениальном настоящем денег у тебя сильно меньше, чем приходит с ЗП на карту: это на квартирку, это на Netflix, а за Spotify кто заплатит, Пушкин? Вот и хочется, чтобы оно там само где-то считалось, списывалось, советовало как сэкономить, а ты повиновался бы бездушным if-else и средним по окнам в временных рядах.

Фронтендик на Svelte оказался удобным. Мне как глупому `if err!= nil ` бэкендеру прям самое то.

Счастливый конец мойсеверозапад.рф

Мы в КоргиЛаб успешно запустили мойсеверозапад.рф 5 месяцев назад и сейчас готовы сообщить о результатах исследований и полученных данных.

Основная цель запуска — помочь магистрантке архитектурного ВУЗа успешно написать и защитить диплом об открытом проектировании в формировании общественных пространств жилого района. Диплом успешно написано и сдан на отлично, время подводить результаты.

Отфильтровав некорректные данные (например больше 5 отметок одного типа с одной анкеты), получили 263 предложения по категориям:

  • 65 «Досуг»,
  • 64 «Спорт»,
  • 44 «События»,
  • 43 «Дети»,
  • 47 собственных идей жителей.
Финальное состояние карты
Статистика посещений

Баркоды сериала «Чернобыль»

Вспомнил про идею moviebarcode и сделал тоже самое для сериала «Чернобыль» от HBO.
Для каждого кадра серии посчитал средний цвет и выстроил по таймлайну. Сделал всё через OpenCV и Python.
Получилась такая красота:

1:23:45
Пожалуйста, сохраняйте спокойствие
Откройся широко, о Земля!
Счастье всего человечества
Вечная память
Ранее Ctrl + ↓