Позднее Ctrl + ↑

Ecto и GCP Cloud SQL

Когда запускаешь сервис через GCP Cloud Run, есть очень удобная возможность пробросить внутрь контейнера Cloud SQL через настройки сервиса при запуске.

В Ecto (data-layer для Elixir-приложений, чаще всего используется с фреймворком Phoenix) получается такой удобный конфиг для PostgreSQL:

# project_directory/config/config.exs config :project, Project.Repo, username: "username", password: "password", database: "db_name", socket: "/cloudsql/<project>:<region:><db_instance_name>/.s.PGSQL.5432"

docker-compose не умеет искать конфиги docker’a из snap’a

Исходная обстановка:

docker version 18.09.9, build 1752eb3 docker-compose version 1.25.4, build 8d51620a Ubuntu 18.04

При пуле из приватного AWS ECR после docker login и aws ecr get-login-password сам docker работает нормально, а вот docker-compose не может аутентифицироваться в ECR и отдает ошибку:

ERROR: compose.cli.errors.log_api_error: Get https://aws_id.dkr.ecr.region.amazonaws.com/image:tag: no basic auth credentials

Через verbose выяснено, что docker-compose ищет конфиг с ключами в ~/.docker/config.json или ~/.dockercfg, а если (как было и есть у меня) docker поставлен через snap, то конфиг благополучно не находится, потому что всё лежит в другом месте. Спасибо на том, что в verbose пишет.

Конфиг же лежит в ~/snap/docker/current/.docker/config.json, где current — это симлинк до текущей версии.

Выход: создать симлинк на существующий конфиг в ~/.docker/

UPD: Хотя да, тут можно и в мейнтейнеров пакета из Canonical камень кинуть, почему они симлинки конфигов в стандартные места не делают при установке. Кажется разумным так делать.

bash -> zsh

Ruby-скрипт для конвертации истории bash в zsh, Ctrl-C / Ctrl-V с просторов Гитхаба.

#################################################################
# = This script transfers bash history to zsh history
# = Change bash and zsh history files, if you don't use defaults
#
# = Usage: ruby bash_to_zsh_history.rb
#
# = Author: Ankit Goyal
#################################################################

# change if you don't use default values
BASH_HISTORY_FILE_PATH="#{ENV['HOME']}/.bash_history"
ZSH_HISTORY_FILE_PATH="#{ENV['HOME']}/.zsh_history"

# Read the bash history file
bash_hist_file = File.read(BASH_HISTORY_FILE_PATH)

# Get the list of commands from bash history hile
command_list = bash_hist_file.split("\n")

# Open the zsh history file
zsh_hist_file = File.open(ZSH_HISTORY_FILE_PATH, "a")

# Get timestamp required for zsh history file format and update the history file
time = Time.now.to_i
command_list.each do |command|
  time += 1
  zsh_hist_file.write(": #{time}:0;#{command}\n")
end

# Close the file
zsh_hist_file.close

Телеграмная глупость или моя?

Я очень люблю писать в Телеграме в форме:

Смотри, какая картинка: <тут картинка>

Но Телеграм использует эту картинку всегда как подпись (даже с «:» в конце предложения). Я постоянно об этом забываю и картинка получается выше текста, а снизу вверх никто не читает:

Видимо, это все таки мой опыт университетской глупости в бумажных работах:

... объяснение, почему моя программа не работает, вы можете увидеть на рисунке 1:

Кто читал Мильчина? Как правильно?

Почитать

Уменьшая информационный шум и повышая качество информации, сейчас читаю:

  • republic — обычные новости с аналитикой. Подписка стоит небольшую денежку, но он один позволяет держаться в контексте всего происходящего. Есть классная рассылка,
  • reminder — онлайн журнал с рассылкой. Иногда упрощают и рассказывают научные статьи, но не настолько, чтобы скатываться в научпоп-пошлость. Делают интересные ребята (бывший главред того же Republic),
  • сигма — общественная платформа для текстов о человеке, обществе, культуре и обо всём, что рядом,
  • КРОТ — нерегулярный онлайн журнал с самоопределением:

КРОТ — нерегулярный интернет-вестник потаенной красоты и мудрости со всего мира. Мы ищем и формируем альтернативную культурную повестку — уникальную для каждого края, страны и региона — будь-то пекинский грайм, греческая философия, колдуны Ассама, поморский фольклор и прочие подспудные феномены. Наш девиз: нет ни андеграунда, ни мейнстрима — только культура и то, что притворяется таковой.

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

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

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

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

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

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

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

Tesla и нейронные сети

Илон Маск упомянул, что в Тесле прототипы сеток набрасываются на Python, а реализуются и работают на голом железе или C/C++. Интересно конечно, у них свой рантайм для них, или какие-то инженеры успешные эксперименты переписывают?

В любом случае мысль, что рантайм NN (обработка запросов и т. д.) должен быть максимально близко к железу очень правильная. Поэтому не люблю упаковывать модели в проде в Flask-контейнеры или какую-то ещё python-обёртку сверху.

Вообще кажется есть тренд на производительный ML (отчасти из-за работы в реальном времени) и на фоне этого TensorRT/OpenVINO и подобные штуки будут всё популярнее.

Эх, когда-то даже писал шаблон сервиса на Go, чтобы xgboost-модельки гонять.

Интерполяция кадров и ML

На выходных потыкал в интерполяцию кадров с помощью нейронных сетей. Я смотрел на статью с CVPR 2018, но результаты лучше сейчас показывает DAIN с CVPR 2019.

В результате получился «Ёжик в тумане» и «Ух ты, говорящая рыба!» в 120 fps, но я не могу никуда их загрузить из-за авторских прав. Хотя бы youtube позволяет показать небольшое демо.

Получаются очень интересные артефакты на кадрах с падением листа дуба.

Ранее Ctrl + ↓