Что делать если свиногорцы постят хейтспичи в гитхабе? (а они прям начали)
Заходим в профиль свиногорца. Жмём “Block or report”. И репортим. Ждём и повторяем с следующим.
Часто не получится, но в перерывах очень даже можно заниматься полезным делом.
P.S. я репорчу только хейтспичи — их достаточно много и так.
Заходим в профиль свиногорца. Жмём “Block or report”. И репортим. Ждём и повторяем с следующим.
Часто не получится, но в перерывах очень даже можно заниматься полезным делом.
P.S. я репорчу только хейтспичи — их достаточно много и так.
👍49🤯1
И вот напишу на самую большую площадку ещё.
Пожалуйста, Пожалуйста.
Пожалуйтса, давайте не сраться между собой.
Давайте не сраться как сделать лучше. Давайте не сраться что во власти зрада и что-то не то делают. Что не так договариваются и не так воюют. Мало того что у нас нет полной инфы и полного понимания и компетенции. Но.
Наша цель — победить. Наша цель сейчас делать что-то ползеное чтобы победить. Как можем, любым доступным способом. Давайте делать полезное. Давайте побеждать.
Разгоны и зрады, внутренние срачи и противоречия сейчас выгодны только рашке. Больше никому.
С тем что плохо и неправильно мы точно сможем разобраться потом. Даже если вот херово договариваются, то что, выходить сейчас на майдан жечь шины? У нас уже есть соседи которые не против пожечь даже дома, не то что шины.
Давайте делать каждый что может полезного. И побеждать. А со всем остальным разберемся после победы.
Пожалуйста, Пожалуйста.
Пожалуйтса, давайте не сраться между собой.
Давайте не сраться как сделать лучше. Давайте не сраться что во власти зрада и что-то не то делают. Что не так договариваются и не так воюют. Мало того что у нас нет полной инфы и полного понимания и компетенции. Но.
Наша цель — победить. Наша цель сейчас делать что-то ползеное чтобы победить. Как можем, любым доступным способом. Давайте делать полезное. Давайте побеждать.
Разгоны и зрады, внутренние срачи и противоречия сейчас выгодны только рашке. Больше никому.
С тем что плохо и неправильно мы точно сможем разобраться потом. Даже если вот херово договариваются, то что, выходить сейчас на майдан жечь шины? У нас уже есть соседи которые не против пожечь даже дома, не то что шины.
Давайте делать каждый что может полезного. И побеждать. А со всем остальным разберемся после победы.
👍110❤15😁1
Тут Антон хорошую штуку предложил — если хабр удаляет статьи (например вот отчёт https://dou.ua/forums/topic/37280/ ), то мы сами можем удалить наши статьи с хабра.
Я там оооооооооочень давно не писал ничего (потому что русня), но можно старые снести. Как вам идея?
Я там оооооооооочень давно не писал ничего (потому что русня), но можно старые снести. Как вам идея?
DOU
Історія видалення моєї останньої статті для habr
Російські ресурси про IT чітко підпорядковуються російському законодавству, цензурують матеріали, беруть участь в інформаційній війні проти України. Ця історія про видалення статті на habr, в якій автор виклав об’єктивні новини про війну в Україні та факт
👍66❤6😁2
новость которая бы раньше заняла мою ближайшую неделю
https://grafana.com/blog/2022/03/30/announcing-grafana-mimir/
но вообще надо тестить
https://grafana.com/blog/2022/03/30/announcing-grafana-mimir/
но вообще надо тестить
Grafana Labs
Announcing Grafana Mimir, the most scalable open source TSDB in the world | Grafana Labs
Our new open source project allows you to scale to 1 billion metrics and beyond.
👍19🔥7🤔4
В чём проблема неправильного использования дженериков?
Вот и зарелизился go1.18 (на самом деле давно, но я не заметил)
Главное нововведение это дженерики. 🫠
Что такое дженерики и с чем их едят я писал раньше
https://news.1rj.ru/str/devops_tricks/279
И там же я писал что по моему мнению (мнению случайного девопса, никоим образом не проф кодера 🙄😇) одна из самых серьезных проблем дженериков это злоупотребления на местах, которые обязательно будут.
И вот Игорь Hatemosphere уже подогнал первый пример.
https://github.com/Arriven/db1000n/commit/dd6d94d1d30fd716849574d1320c8a1963197dff
Давайте разберем что тут не так 🙄
Было две функции:
Внутри логика у них одинаковая — проверить что передали не nil, и если не nil, то вернуть значение. А если nil, то вернуть дефолтное значение.
Соответственно, не мудрствуя лукаво, человек думает — ну одна функция это лучше чем две, и тестировать одну функцию легче чем две.
И пишет такой код:
Проблема в том, что дженерики как раз усложняют тестирование 😒
Например, вот в код приходит новый человек и видит что есть такая функция, общая для всех типов. И применяет её для map[T]T
Как вы думаете, какой будет результат?
То есть nil таки проскочит. Потому что это вполне логичное поведение, когда проверяют не значение, а указатель.
То есть у нас есть мапа, которая nil, но указатель на эту мапу не nil 🫥
И да, дженерики выглядят красиво, но проблема в том что их намного сложнее тестировать. И может для кого-то это не проблема, но для такого полукодера как я, который не может из головы представить все возможные кейсы что б их протестировать и быть уверенным в функции — это прям серьезная проблема.
Так что я прям сильно советую оставить дженерики контрибуторам в язык, которые хорошо понимают что они делают или хотя бы умеют именовать функции и напишут что-то типа PointerNotEqualToNilOrDefault 😂😂
Вот и зарелизился go1.18 (на самом деле давно, но я не заметил)
Главное нововведение это дженерики. 🫠
Что такое дженерики и с чем их едят я писал раньше
https://news.1rj.ru/str/devops_tricks/279
И там же я писал что по моему мнению (мнению случайного девопса, никоим образом не проф кодера 🙄😇) одна из самых серьезных проблем дженериков это злоупотребления на местах, которые обязательно будут.
И вот Игорь Hatemosphere уже подогнал первый пример.
https://github.com/Arriven/db1000n/commit/dd6d94d1d30fd716849574d1320c8a1963197dff
Давайте разберем что тут не так 🙄
Было две функции:
utils.NonNilIntOrDefault utils.NonNilDurationOrDefaultВнутри логика у них одинаковая — проверить что передали не nil, и если не nil, то вернуть значение. А если nil, то вернуть дефолтное значение.
Соответственно, не мудрствуя лукаво, человек думает — ну одна функция это лучше чем две, и тестировать одну функцию легче чем две.
И пишет такой код:
func NonNilOrDefault[T any](v *T, dflt T) T {
if v != nil {
return *v
}
return dflt
}
Проблема в том, что дженерики как раз усложняют тестирование 😒
Например, вот в код приходит новый человек и видит что есть такая функция, общая для всех типов. И применяет её для map[T]T
func main() {
var n map[string]string
res := NonNilOrDefault(&n, map[string]string{"some": "data"})
fmt.Printf("Result: %v \n", res) // 1
fmt.Printf("Eq: %v\n", res == nil) // 2
res["some2"] = "asdasd" // 3
}
Как вы думаете, какой будет результат?
Result: map[] // 1
Eq: true // 2
panic: assignment to entry in nil map // 3
То есть nil таки проскочит. Потому что это вполне логичное поведение, когда проверяют не значение, а указатель.
То есть у нас есть мапа, которая nil, но указатель на эту мапу не nil 🫥
И да, дженерики выглядят красиво, но проблема в том что их намного сложнее тестировать. И может для кого-то это не проблема, но для такого полукодера как я, который не может из головы представить все возможные кейсы что б их протестировать и быть уверенным в функции — это прям серьезная проблема.
Так что я прям сильно советую оставить дженерики контрибуторам в язык, которые хорошо понимают что они делают или хотя бы умеют именовать функции и напишут что-то типа PointerNotEqualToNilOrDefault 😂😂
Telegram
Сєводоканал - please, use haskell instead of bash
Дженерики
Как много в этом слове…
И “дже”.. и “не”.. и даже “рики”! А Рики это очень важно, потому что рики-тики-тави охранял жилище от коварных змей.
В гошечке дженерики почти всегда нафиг не нужны (рядовому оболтусу). Но будут.
Зачем они нужны? Ну…
Как много в этом слове…
И “дже”.. и “не”.. и даже “рики”! А Рики это очень важно, потому что рики-тики-тави охранял жилище от коварных змей.
В гошечке дженерики почти всегда нафиг не нужны (рядовому оболтусу). Но будут.
Зачем они нужны? Ну…
👍6🤔1
Привет всем!
Вчера в слаке отлично насобирали денег для отряда ЗСУ нашего Саши Милушева. А сегодня нужна помощь немного другая.
Наша Лера Фарафонова, член нашего сообщества, девопсиня и моя хорошая знакомая, сейчас в ТРО под ЗСУ.
Её отряд очень много ездит и иногда надо ездить по всяким говнам. Есть обычная машина, но очень нужен какой-то внедорожник, что б мог проехать.
Если вы можете временно дать или продать свой или знаете где можно купить или взять — напишите пожалуйста! Они очень много ездят и это невероятно важно!
фейсбук для перепоста: https://www.facebook.com/ctrlok/posts/5207342352620592
твиттер для перепоста: https://twitter.com/ctrlok/status/1510519504144588800
Вчера в слаке отлично насобирали денег для отряда ЗСУ нашего Саши Милушева. А сегодня нужна помощь немного другая.
Наша Лера Фарафонова, член нашего сообщества, девопсиня и моя хорошая знакомая, сейчас в ТРО под ЗСУ.
Её отряд очень много ездит и иногда надо ездить по всяким говнам. Есть обычная машина, но очень нужен какой-то внедорожник, что б мог проехать.
Если вы можете временно дать или продать свой или знаете где можно купить или взять — напишите пожалуйста! Они очень много ездят и это невероятно важно!
фейсбук для перепоста: https://www.facebook.com/ctrlok/posts/5207342352620592
твиттер для перепоста: https://twitter.com/ctrlok/status/1510519504144588800
Facebook
Log in or sign up to view
See posts, photos and more on Facebook.
👍10
Привет всем.
UPD. Собрали 4к, спасибо всем! Пока останавливаемся
Мы - самое лучшее сообщество девопсов. Самое обьедененное и дружелюбное. Самое сплоченное. Самое украинское!
Я вчера писал что ищем машину для отряда нашей Леры (член нашего сообщества, знаю лично, ТРО, 126 батальен, много ездят по всяким говнам). Нашли несколько вариантов в Польше. Нашли людей которые могут привести (среди наших же девопсов, кстати) и оформить.
Теперь надо найти деньги.
Машину можно купить от 4к до 6к. Вчера, через близких знакомых я уже нашел 1к.
Давайте, как девопсы (у которых самая высокая зп в IT хаха) насобираем оставшуюся сумму.
Очень нужна ваша помощь деньгами. Собираю и занимаюсь лично я под лично мою ответственность.
Всё собрали, спасибо!
И лучи добра всем кто помогает! Мы победим!
UPD. Собрали 4к, спасибо всем! Пока останавливаемся
Мы - самое лучшее сообщество девопсов. Самое обьедененное и дружелюбное. Самое сплоченное. Самое украинское!
Я вчера писал что ищем машину для отряда нашей Леры (член нашего сообщества, знаю лично, ТРО, 126 батальен, много ездят по всяким говнам). Нашли несколько вариантов в Польше. Нашли людей которые могут привести (среди наших же девопсов, кстати) и оформить.
Теперь надо найти деньги.
Машину можно купить от 4к до 6к. Вчера, через близких знакомых я уже нашел 1к.
Давайте, как девопсы (у которых самая высокая зп в IT хаха) насобираем оставшуюся сумму.
Очень нужна ваша помощь деньгами. Собираю и занимаюсь лично я под лично мою ответственность.
Всё собрали, спасибо!
И лучи добра всем кто помогает! Мы победим!
👍29👏1
А кто хочет в ТРО по специальности? Нужны люди и желательно с опытом сетей. Только Киев и без удалёнки, так как работа с информацией которая под грифом секретно 🤐😉
ОЧЕНЬ СИЛЬНО не хватает людей с опытом
пишите в личку мне t.me/ctrlok , а я дальше скоординирую
upd. уже мест нет
ОЧЕНЬ СИЛЬНО не хватает людей с опытом
пишите в личку мне t.me/ctrlok , а я дальше скоординирую
upd. уже мест нет
👍15
По сбору денег на машину — СПАСИБО БОЛЬШОЕ ВСЕМ! за три с небольшим часа мы собрали необходимую сумму и сейчас будем заниматься покупкой!
Вы — самые лучшие котятечки, очень вас всех люблю! 🇺🇦🇺🇦
Вы — самые лучшие котятечки, очень вас всех люблю! 🇺🇦🇺🇦
👍42🔥16❤5
Пока ЗСУ, словно войска Минас Тирита, защищают свободный запад от орков, AWS зарелизили в паблик возможность дергать лямбды по http
Не так гибко как могло было быть, но намного лучше чем ничего. Будем разбираться на ближайшем стриме!
https://aws.amazon.com/blogs/aws/announcing-aws-lambda-function-urls-built-in-https-endpoints-for-single-function-microservices/
Не так гибко как могло было быть, но намного лучше чем ничего. Будем разбираться на ближайшем стриме!
https://aws.amazon.com/blogs/aws/announcing-aws-lambda-function-urls-built-in-https-endpoints-for-single-function-microservices/
Amazon
Announcing AWS Lambda Function URLs: Built-in HTTPS Endpoints for Single-Function Microservices | Amazon Web Services
Organizations are adopting microservices architectures to build resilient and scalable applications using AWS Lambda. These applications are composed of multiple serverless functions that implement the business logic. Each function is mapped to API endpoints…
👍30🤯1
А чем вы менеджите пользовательские конфиги для разных утилит? Ну в плане есть разработчики и им нужно пользоваться софтом, а вы знаете какие конфиги можно под этот софт подсунуть.
Обычно я просто создавал контейнер с нужными тулами и конфигами.
Ещё я как-то пробовал через homebrew, но это неудобно, да и с линуксом есть трудности не смотря на homebrew for linux.
Некоторые штуки локальные для репы можно менеджить через env файлы
Ещё есть огромное количество разных энтерпрайзных менеджеров пользовательского софта и управления доменом, но это не наш вариант
В общем, что вы используете?
Обычно я просто создавал контейнер с нужными тулами и конфигами.
Ещё я как-то пробовал через homebrew, но это неудобно, да и с линуксом есть трудности не смотря на homebrew for linux.
Некоторые штуки локальные для репы можно менеджить через env файлы
Ещё есть огромное количество разных энтерпрайзных менеджеров пользовательского софта и управления доменом, но это не наш вариант
В общем, что вы используете?
новая версия Hashicort Vault: https://www.hashicorp.com/blog/vault-1-10
Из интересного:
• поддержка MFA для логинов!
• нативная возможность использовать Vault как OIDC провайдер
• метрики, наконец-то очень всем нужные метрики
• и куча другого
Из интересного:
• поддержка MFA для логинов!
• нативная возможность использовать Vault как OIDC провайдер
• метрики, наконец-то очень всем нужные метрики
• и куча другого
HashiCorp
HashiCorp Vault 1.10 Adds Login MFA, PKI to Use HSMs, Usage Metrics, and More
HashiCorp Vault 1.10 improves Vault’s core workflows and makes key features production-ready to better serve your use cases.
👍26🤔2❤1
а кто гоняет в проде k3s, как ваши впечатления? Чего не хватает в сравнении с обычным k8s?
🤔4😱2
Всем привет. Держу в курсе по предыдущему сбору средств.
1. Машину Лере мы искали, но в силу требований от её батальона пока ничего не нашли. Искать продолжаем.
2. Купили хороший внедорожник для ПВО под Николаевым за €3200. Фоточки будут после того как доставят, сейчас уже на пути из Европы к нам. Купили с большого согласия Леры.
3. Также от Леры получили список конкретных вещей которые им нужны и начали по ним работать. Зарезервировали часть денег под эти нужды.
Ни одна гривня даром не пропадёт!
Также, хочу анонсировать новый сбор денег для Саши Милушева, который тоже сейчас под Николаевым. Собирать будем очень много денег на:
1. Медицина - бандажі, голки, спреї знеболювальні, комірці, кровоспинні, тощо
2. Плитоноски
3. Плити
В общем, на хорошее дело будем собирать. Также завтра утром пришлю отчёт по деньгам которые мы собирали Саше.
Сбор начнём завтра утром, так что поставьте будильники и не пропустите хаха
1. Машину Лере мы искали, но в силу требований от её батальона пока ничего не нашли. Искать продолжаем.
2. Купили хороший внедорожник для ПВО под Николаевым за €3200. Фоточки будут после того как доставят, сейчас уже на пути из Европы к нам. Купили с большого согласия Леры.
3. Также от Леры получили список конкретных вещей которые им нужны и начали по ним работать. Зарезервировали часть денег под эти нужды.
Ни одна гривня даром не пропадёт!
Также, хочу анонсировать новый сбор денег для Саши Милушева, который тоже сейчас под Николаевым. Собирать будем очень много денег на:
1. Медицина - бандажі, голки, спреї знеболювальні, комірці, кровоспинні, тощо
2. Плитоноски
3. Плити
В общем, на хорошее дело будем собирать. Также завтра утром пришлю отчёт по деньгам которые мы собирали Саше.
Сбор начнём завтра утром, так что поставьте будильники и не пропустите хаха
👍19❤2😱1
UPD. уже всё собрали, спасибо!
Доброго утра мои любимые котики и котенессы!
Огромное спасибо всем кто откликнулся в прошлый раз! Очень хорошо помогли!
Раненько с утра можно сделать хорошее дело 🙂
Есть Саша Милушев. Мой друг. SRE lead. Даже на конференциях выступает, не говоря про то, что на всех сходках с удовольствием жарит шашлыки и хвалит (и ругает) кубернетис хаха
А ещё он активный участник сообщества, помогает новичкам и старичкам и просто велеколепный (хоть и лысый) парень.
Так вот, не смотря на свою алергию на глютен, Саша сейчас служит в ДПСУ, под Николаевом. В один из прошлых разов мы хорошо собрали им на турникеты. Сейчас собираем на:
1. Медицина - бандажі, голки, спреї знеболювальні, комірці, кровоспинні, тощо
2. Плитоноски
3. Плити
Сумма нужна серьезная — €8900, поэтому и сбор серьезный. Это цель номер один.
А ещё есть возможность по очень хорошей цене купить нацгвардии (тоже под Николаевом, рядом с Сашей) короба на 170 патронов которые им нужны
1500 × 30 = 45 000 грн
Это — цель 2, на ачивку “веселый единорожек”
Если закроем, то я после окончания войны печатаю стикеры и бесплатно раздаю всем участникам
А если соберем больше, то есть хороший рамный внедорожник, за €3500 для ПВО тоже под Николаевом (им ОЧЕНЬ СИЛЬНО нужны машины) который могут бесплатно доставить в Украину, а потом по Украине до Николаева.
Это — бонусная цель уровня радосная поняшечка
Если закроем все три, то по окончанию войны — с меня футболки. Футболки, Карл!
Собираю деньги лично я, под свою ответственность. Также собираем и покупаем, и доставляем как наша команда, так и волонтеры которые помогают.
До победы рукой подать!
Всё собрали, спасибо!
Доброго утра мои любимые котики и котенессы!
Огромное спасибо всем кто откликнулся в прошлый раз! Очень хорошо помогли!
Раненько с утра можно сделать хорошее дело 🙂
Есть Саша Милушев. Мой друг. SRE lead. Даже на конференциях выступает, не говоря про то, что на всех сходках с удовольствием жарит шашлыки и хвалит (и ругает) кубернетис хаха
А ещё он активный участник сообщества, помогает новичкам и старичкам и просто велеколепный (хоть и лысый) парень.
Так вот, не смотря на свою алергию на глютен, Саша сейчас служит в ДПСУ, под Николаевом. В один из прошлых разов мы хорошо собрали им на турникеты. Сейчас собираем на:
1. Медицина - бандажі, голки, спреї знеболювальні, комірці, кровоспинні, тощо
2. Плитоноски
3. Плити
Сумма нужна серьезная — €8900, поэтому и сбор серьезный. Это цель номер один.
А ещё есть возможность по очень хорошей цене купить нацгвардии (тоже под Николаевом, рядом с Сашей) короба на 170 патронов которые им нужны
1500 × 30 = 45 000 грн
Это — цель 2, на ачивку “веселый единорожек”
Если закроем, то я после окончания войны печатаю стикеры и бесплатно раздаю всем участникам
А если соберем больше, то есть хороший рамный внедорожник, за €3500 для ПВО тоже под Николаевом (им ОЧЕНЬ СИЛЬНО нужны машины) который могут бесплатно доставить в Украину, а потом по Украине до Николаева.
Это — бонусная цель уровня радосная поняшечка
Если закроем все три, то по окончанию войны — с меня футболки. Футболки, Карл!
Собираю деньги лично я, под свою ответственность. Также собираем и покупаем, и доставляем как наша команда, так и волонтеры которые помогают.
До победы рукой подать!
Всё собрали, спасибо!
👍35😁1
Дамы и господа, вы просто невероятные!
Мы с вами вместе собрали 390 000 в гривне, 800 долларов на paypal и 100 долларов в крипте!
Супер невероятная сумма, всего немного (около 500$) не добираем до «радосной поняшки»
Думаю к вечеру добьем и это 🙂 Вы такие офигенные! ❤️❤️❤️🇺🇦💪
Мы с вами вместе собрали 390 000 в гривне, 800 долларов на paypal и 100 долларов в крипте!
Супер невероятная сумма, всего немного (около 500$) не добираем до «радосной поняшки»
Думаю к вечеру добьем и это 🙂 Вы такие офигенные! ❤️❤️❤️🇺🇦💪
🔥34👍3😱1
Всё, всю необходимую сумму собрали! Спасибо вам 🙏!
Вы самые-самые классные! 🇺🇦💪❤️❤️
Вы самые-самые классные! 🇺🇦💪❤️❤️
🔥36❤9🤯2
а давайте накидаем современных книг для новичков которые вообще слабо понимают что и куда, а то я вспомню только «энциклопедию профессора Фортрана», «FreeBSD administrator handbook» и «UNIX and Linux System Administration Handbook», но они наверняка уже устарели. Не Робачевского же советовать)
👍26❤3🔥2
Заметки по разворачиванию Mimir (long-term storage для метрик)
• Складывать метрики в object storage вместо хранения на дисках — по моим расчетам намного выгоднее 💰
• Есть два режима — монолитик и микросервис.
• Монолитик это всё в одном, поддерживает HA, неплохо для теста или небольших нагрузок🔫.
• Микросервис это разнесенные компоненты, неплохо деплоить хелмом или их jsonnet, в принципе тоже не сложно, но занимает время. Зато легче скейлить и поднастраивать💪
• Перед деплоем надо посчитать сколько ресурсов надо тыц
• В их стандартном хелме много лишних штук, которые неплохо бы отключить
• Метрики намного выгоднее собирать не промом, а grafana-agent
• Пока тестирую как оно работает на preemptible инстансах (это типа спотов, только от гугла) — вроде работает. Да и по архитектуре должно работать. Экономия в деньгах где-то треть-половина🤑, но пока надо следить как будет работать хотя б в течении недели🙄.
В целом, пока выглядит черезвычайно оптимистично, в первую очередь из-за object storage, в вторую из-за preemptible инстансов.
• Складывать метрики в object storage вместо хранения на дисках — по моим расчетам намного выгоднее 💰
• Есть два режима — монолитик и микросервис.
• Монолитик это всё в одном, поддерживает HA, неплохо для теста или небольших нагрузок🔫.
• Микросервис это разнесенные компоненты, неплохо деплоить хелмом или их jsonnet, в принципе тоже не сложно, но занимает время. Зато легче скейлить и поднастраивать💪
• Перед деплоем надо посчитать сколько ресурсов надо тыц
• В их стандартном хелме много лишних штук, которые неплохо бы отключить
• Метрики намного выгоднее собирать не промом, а grafana-agent
• Пока тестирую как оно работает на preemptible инстансах (это типа спотов, только от гугла) — вроде работает. Да и по архитектуре должно работать. Экономия в деньгах где-то треть-половина🤑, но пока надо следить как будет работать хотя б в течении недели🙄.
В целом, пока выглядит черезвычайно оптимистично, в первую очередь из-за object storage, в вторую из-за preemptible инстансов.
Grafana Labs
Grafana Mimir documentation | Grafana Mimir documentation
A guide to different sections of the documentation for Grafana Mimir.
👍17❤5😁1🤔1
а я ещё на завтра новый сбор анонсирую, к 9 мая, от котиков для котиков)
мы вообще очень много всего хорошего купили и пока (тьфу-тьфу) ни одной покупки которой были бы не довольны или которая была б так себе. Детали завтра :)
мы вообще очень много всего хорошего купили и пока (тьфу-тьфу) ни одной покупки которой были бы не довольны или которая была б так себе. Детали завтра :)
❤27👍5😱1