Skip to content

Instantly share code, notes, and snippets.

View nepalez's full-sized avatar

Andrew Kozin nepalez

  • Evil Martians
  • Lisbon, Portugal
View GitHub Profile
@nepalez
nepalez / stock.md
Last active December 6, 2016 11:42

Структуры данных

Общая схема связей

                              site
                                ^
                                |
                                *
account <-------------------* showcase <---------------------.
@nepalez
nepalez / keybase.md
Created July 5, 2017 15:16
Keybase verification

Keybase proof

I hereby claim:

  • I am nepalez on github.
  • I am nepalez (https://keybase.io/nepalez) on keybase.
  • I have a public key ASAP4n7AyvpMPae1X_9Tk4FokqkCx-UbJ_QlXbGYtjrOtQo

To claim this, I am signing this object:

@nepalez
nepalez / gist:65875c2c0b8686ce28c00cc4217faa2e
Created March 1, 2019 14:54
Скачивание заказов и синхронизация
## События
[Первым коммитом][order_received_event] я добавил новое событие `orderReceived`. Событие хранит **сырой** заказ (новый или ранее зарегистрированный -- не важно) скачанный с ибея.
Основная идея тут вот в чем. Когда мы скачиваем заказы, их может быть пачка. Я проверил через консоль -- у пользователя с наибольшим числом заказов, за сутки их бывает около 300 штук.
Сохранять всю эту тонну информации в модель `Order` и связанные (строки, посылки, адреса) -- это тяжело и больно. Вместо этого мы быстро генерируем события с тем, чтобы их потом обработать и создать/обновить заказы.
Ивент -- надежнее, чем таска в сайдкике, потому что по завершении скачивания (см. ниже) мы сдвигаем отметку времени, до которой скачали обновления. Если мы какую-то из задачек потеряем, то больше мы этот заказ можем и не увидеть, т.к. будем скачивать только более поздние.
В отличие от сайдкика, ивенты -- хранимые. Т.е. нам _гарантировано_, что если мы сдвинули время в аккаунте, то все обновленные заказы лежат в стопке ивентов, ж
# Clean the database
DROP TABLE IF EXISTS _orders CASCADE;
DROP TABLE IF EXISTS _users CASCADE;
DROP TABLE IF EXISTS orders CASCADE;
DROP TABLE IF EXISTS users CASCADE;
# Build the database (for hard deletion)
CREATE TABLE users (
id integer PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
name text NOT NULL
@nepalez
nepalez / keybase.md
Created February 27, 2025 13:37
keybase.md

Keybase proof

I hereby claim:

  • I am nepalez on github.
  • I am andrew_kozin (https://keybase.io/andrew_kozin) on keybase.
  • I have a public key ASCpUHtPalt3lyLebHEZjp5OvZwgUpdZONdVxYOESKLJUQo

To claim this, I am signing this object: