Позднее Ctrl + ↑

Кадры из «Tales from the Loop». Часть 1

Смотрю очень красивый сериал «Tales from the Loop». Место действия — альтернативные 70-80ые в Швеции.

Оригинальной предысторией была одноименная настолка со своим сеттингом, вселенной и артбуком. Согласно ей, в 1954 году шведское правительство приступает к созданию крупнейшего в мире ускорителя частиц. Строительство объекта, расположившегося глубоко под сельской округой островов озера Меларен, завершено в 1969 году. Местные окрестили эти чудеса прогресса «Петлёй».

Нравится передача необычности места какими-то небольшими яркими деталями и их вписыванием в обстановку, например старый телефон и механизированный протез руки. Это первая часть кадров, будет вторая.

Еще сделал баркоды, и как и для сериала «Чернобыль».

«Loop»
«Transpose»
«Stasis»
«Echo Sphere»

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:

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

Ранее Ctrl + ↓