"Высокоуровневые" ЯП
Когда учишься программированию сам и начинаешь с интерпретируемых языков, некоторые вещи от тебя скрыты настолько, что ты даже и не задумываешься о них.
Например, конверсия типов: типичные int(str) и str(int).
Вчера увидел задачку в курсе питона по разбивке числа на цифры, то есть число 1234 становится [1,2,3,4].
В комментах многие запостили решение типа
И возникает вопрос, какая разница между 1234 и "1234"? А кратко и не опишешь, вот неплохая статья про представление в памяти.
Копнул исходники питона, чтоб показать, что стоит за str(int) и наоборот:
https://github.com/python/cpython/blob/3.8/Objects/longobject.c#L1752
https://github.com/python/cpython/blob/3.8/Objects/longobject.c#L2314C10
При этом, мне кажется, если изучать программирование с какого-нибудь C, неизвестного о типах и структурах данных практически не останется.
// Пример
https://leetcode.com/problems/string-to-integer-atoi/
Когда учишься программированию сам и начинаешь с интерпретируемых языков, некоторые вещи от тебя скрыты настолько, что ты даже и не задумываешься о них.
Например, конверсия типов: типичные int(str) и str(int).
Вчера увидел задачку в курсе питона по разбивке числа на цифры, то есть число 1234 становится [1,2,3,4].
В комментах многие запостили решение типа
num = str(intNum)
num.split()
for ... {num[i] = int(v)}
И возникает вопрос, какая разница между 1234 и "1234"? А кратко и не опишешь, вот неплохая статья про представление в памяти.
Копнул исходники питона, чтоб показать, что стоит за str(int) и наоборот:
https://github.com/python/cpython/blob/3.8/Objects/longobject.c#L1752
https://github.com/python/cpython/blob/3.8/Objects/longobject.c#L2314C10
При этом, мне кажется, если изучать программирование с какого-нибудь C, неизвестного о типах и структурах данных практически не останется.
// Пример
https://leetcode.com/problems/string-to-integer-atoi/
👍3
NestJS
Запилил микросервис на NestJS, впечатления приятные: TypeScript, кодо и тестогенерация с использованием практик чистого кода, а так же npm install выдающий успокаиващее
Правда есть и неочевидные поведения с DI, чего можно и не заметить в документации по незнанию: injection scopes, с чем я и столкнулся.
https://docs.nestjs.com/fundamentals/injection-scopes
Прокинул по наивности либу для получения/подстановки traceID из запроса в конструктор своего другого сервиса и e2e тесты стали зависать на завершении (jest предлагал
Оказалось, что эта либа request-scoped и мой сервис стал таким же и создавался на каждый запрос, а с ним и тяжелая зависимость, и onModuleDestroy для него перестал работать.
Т.к. я всего этого не знал, пришлось вычислять проблему, вытаскивая из конструкторов все зависимости, добавленные с тех пор, как тесты проходили успешно.
* Также у меня был пост про NextJS
Запилил микросервис на NestJS, впечатления приятные: TypeScript, кодо и тестогенерация с использованием практик чистого кода, а так же npm install выдающий успокаиващее
"found 0 vulnerabilities" даже после десятка установленных зависимостей (с префиксом netsjs).Правда есть и неочевидные поведения с DI, чего можно и не заметить в документации по незнанию: injection scopes, с чем я и столкнулся.
https://docs.nestjs.com/fundamentals/injection-scopes
A controller that depends on a request-scoped provider will, itself, be request-scoped. Прокинул по наивности либу для получения/подстановки traceID из запроса в конструктор своего другого сервиса и e2e тесты стали зависать на завершении (jest предлагал
--detectOpenHandles, который не помог).Оказалось, что эта либа request-scoped и мой сервис стал таким же и создавался на каждый запрос, а с ним и тяжелая зависимость, и onModuleDestroy для него перестал работать.
Т.к. я всего этого не знал, пришлось вычислять проблему, вытаскивая из конструкторов все зависимости, добавленные с тех пор, как тесты проходили успешно.
* Также у меня был пост про NextJS
Documentation | NestJS - A progressive Node.js framework
Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Reactive…
Достигаторы
Пока страдаю от нехватки времени, натыкаюсь на интересных ребят в телеграме.
Парень из Казахстана устроился в Microsoft, а потом в Stripe.
Интересно написал об опыте собеса и переезда в своем блоге на medium.
https://kurmangaliyev.kz
#hpdb
Пока страдаю от нехватки времени, натыкаюсь на интересных ребят в телеграме.
Парень из Казахстана устроился в Microsoft, а потом в Stripe.
Интересно написал об опыте собеса и переезда в своем блоге на medium.
https://kurmangaliyev.kz
#hpdb
🥱2
Упс с Nats
Раскатываешь helm'ом кластер Nats, в values.yaml
а ниже
внезапно сервера взлетают по CPU, открываешь логи подов, а там с огромной скоростью (сотни в секунду) повторяющиeся записи:
-
-
-
В моем случае, пришлось скейлить statefulset в 0 руками в активной ssh-сессии, потому что сервера перестали отвечать на helm upgrade.
Убрал server_name и все стало ок.
Раскатываешь helm'ом кластер Nats, в values.yaml
config:
cluster:
enabled: true
replicas: 3
а ниже
merge:
server_name: my_name
внезапно сервера взлетают по CPU, открываешь логи подов, а там с огромной скоростью (сотни в секунду) повторяющиeся записи:
-
Route connection created-
Remote server has a duplicate name: my_name -
Router connection closed: Duplicate Server NameВ моем случае, пришлось скейлить statefulset в 0 руками в активной ssh-сессии, потому что сервера перестали отвечать на helm upgrade.
Убрал server_name и все стало ок.
artifacthub.io
nats 2.12.4 · nats/nats
A Helm chart for the NATS.io High Speed Cloud Native Distributed Communications Technology.
Бесконечный путь
По мере переноса проектов в свой кубер-кластер, периодически всплывают внезапные недоработки.
Поднял приложение, которому необходимо знать ip-адрес клиента, а я получаю адрес из сети кубера.
Сначала переконфигурил traefik чтобы принимать proxy-protocol - не помогло.
Отбросил наивные решения со всяких stackoverflow, предлагающих поставить externalTrafficPolicy local.
Начал читать глубже, оказалось, что в k3s по дефолту стоит ServiceLB, который, по сути, является парой правил iptables с nat, и там нет никакой поддержки proxy-protocol, source ip до приложений не доходит.
Пришлось опять погружаться в сетевой стек, чтоб поменять ServiceLB на оптимальное решение (пока не выбрал).
https://docs.k3s.io/networking#service-load-balancer
https://github.com/k3s-io/klipper-lb/blob/63942dfab1d4f2a6deed94eeada077ef2462b8c1/entry#L59
По мере переноса проектов в свой кубер-кластер, периодически всплывают внезапные недоработки.
Поднял приложение, которому необходимо знать ip-адрес клиента, а я получаю адрес из сети кубера.
Сначала переконфигурил traefik чтобы принимать proxy-protocol - не помогло.
Отбросил наивные решения со всяких stackoverflow, предлагающих поставить externalTrafficPolicy local.
Начал читать глубже, оказалось, что в k3s по дефолту стоит ServiceLB, который, по сути, является парой правил iptables с nat, и там нет никакой поддержки proxy-protocol, source ip до приложений не доходит.
Пришлось опять погружаться в сетевой стек, чтоб поменять ServiceLB на оптимальное решение (пока не выбрал).
https://docs.k3s.io/networking#service-load-balancer
https://github.com/k3s-io/klipper-lb/blob/63942dfab1d4f2a6deed94eeada077ef2462b8c1/entry#L59
docs.k3s.io
Networking | K3s
This section contains instructions for configuring networking in K3s.
ГТА моддинг
С детства любил GTA San Andreas, а когда узнал о multiplayer, тут же начал играть в нее по интернету. В то же время (лет 12 назад) начали расти role play моды, и я загорелся идеей в этом разобраться и тоже моддить гта. Правда так этого и не сделал (запомнил только название яп PAWN).
Сегодня снова наткнулся на эту тему и решил поглядеть, что там. Как обычно, наткнулся на интересных ребят:
Seemann - российский програмист, вкатившийся в моддинг в 2003 году. Автор Sanny Builder (дизассемблер scm - скриптов rockstar, и язык для их написания), которым все пользуются для моддинга гта.
Его активный гитхаб https://github.com/x87 и блог https://www.patreon.com/seemann и прикольный проект:
CLEO Redux - встраиваемый рантайм для запуска js/ts скриптов в играх и приложениях (а не только в GTA).
#hpdb
С детства любил GTA San Andreas, а когда узнал о multiplayer, тут же начал играть в нее по интернету. В то же время (лет 12 назад) начали расти role play моды, и я загорелся идеей в этом разобраться и тоже моддить гта. Правда так этого и не сделал (запомнил только название яп PAWN).
Сегодня снова наткнулся на эту тему и решил поглядеть, что там. Как обычно, наткнулся на интересных ребят:
Seemann - российский програмист, вкатившийся в моддинг в 2003 году. Автор Sanny Builder (дизассемблер scm - скриптов rockstar, и язык для их написания), которым все пользуются для моддинга гта.
Его активный гитхаб https://github.com/x87 и блог https://www.patreon.com/seemann и прикольный проект:
CLEO Redux - встраиваемый рантайм для запуска js/ts скриптов в играх и приложениях (а не только в GTA).
#hpdb
Compuphase
The Pawn language
Pawn is a simple, typeless extension language with a C-like syntax, suitable for the smallest of embedded systems.
👍2🔥1
Сколько у вас скопилось данных с телефонов за предыдущие годы, как вы их храните?
Anonymous Poll
28%
Сотни гигабайт
41%
Считанные гигабайты
35%
Храню в телефоне
35%
На компе
9%
В NAS
30%
В облаке
Облачное Архивное хранилище
Появилась идея сделать долговременное хранилище за дешево.
У меня скопилось много разных данных, которые я в оригинале пересматриваю редко, но удалять их сильно не хочется. Их с каждым годом становится больше, а чем больше, тем заметнее ценник за облачные хранилки.
Облачные хранилища хранят 1ГБ примерно за 1р/мес. 500р/мес за 500ГБ.
Дешевенький домашний NAS 20к.
Я знаю способ хранить данные в десятки раз дешевле даже без экономики масштаба.
Понадобилось бы вам, как физлицу, архивное хранилище с ценой за запись/чтение? Условно, записал 500гигов, заплатил за это 100р. В цену входит одно считывание. Само хранение с каким-то невысоким тарифом, типа тех же 100р в год.
А если у вас есть юрлицо/опыт с ними, то поделитесь, как они решают эти проблемы и на каких масштабах.
👍/👎
Появилась идея сделать долговременное хранилище за дешево.
У меня скопилось много разных данных, которые я в оригинале пересматриваю редко, но удалять их сильно не хочется. Их с каждым годом становится больше, а чем больше, тем заметнее ценник за облачные хранилки.
Облачные хранилища хранят 1ГБ примерно за 1р/мес. 500р/мес за 500ГБ.
Дешевенький домашний NAS 20к.
Я знаю способ хранить данные в десятки раз дешевле даже без экономики масштаба.
Понадобилось бы вам, как физлицу, архивное хранилище с ценой за запись/чтение? Условно, записал 500гигов, заплатил за это 100р. В цену входит одно считывание. Само хранение с каким-то невысоким тарифом, типа тех же 100р в год.
А если у вас есть юрлицо/опыт с ними, то поделитесь, как они решают эти проблемы и на каких масштабах.
👍/👎
👍4❤1👎1
Код Хэмминга, новый сайт
1. Реализовал давно сидевшую идею по интерактивным алгоритмам на своем сайте всеего спустя 7 лет. Первый - https://borisd.ru/algorithms/interactive/hamming-code/
Скидывайте друзьям.
С компа интерактивность удобнее.
С визуализацией проблем не возникло, немного пришлось вспомнить реакт (немного подзабылось, спустя 3 месяца). А вот с алгоритмом пришлось помучаться: "базу" накидал, а потом с этими позициями битов сам себя запутал и долго тупил.
2. Сайт накидал на Gatsby.js, который ощущается немного тормознутым в разработке (gatsby develop долго собирается). В остальном круто: билдишь статический сайт, при этом можно его и оживить с помощью headless CMS / GraphQL. Даже статичной же версии можно приделать и мета теги и прочий seo.
Пушу код в репу на гитхабе, а там автоматом предлагается поставить github action для gatsby, поставил, запустил, все задеплоилось само, бесплатно. Дожили.
3. Теперь буду развивать borisd.ru всякими интерактивами и, может быть, туда переезжать.
1. Реализовал давно сидевшую идею по интерактивным алгоритмам на своем сайте всеего спустя 7 лет. Первый - https://borisd.ru/algorithms/interactive/hamming-code/
Скидывайте друзьям.
С компа интерактивность удобнее.
С визуализацией проблем не возникло, немного пришлось вспомнить реакт (немного подзабылось, спустя 3 месяца). А вот с алгоритмом пришлось помучаться: "базу" накидал, а потом с этими позициями битов сам себя запутал и долго тупил.
2. Сайт накидал на Gatsby.js, который ощущается немного тормознутым в разработке (gatsby develop долго собирается). В остальном круто: билдишь статический сайт, при этом можно его и оживить с помощью headless CMS / GraphQL. Даже статичной же версии можно приделать и мета теги и прочий seo.
Пушу код в репу на гитхабе, а там автоматом предлагается поставить github action для gatsby, поставил, запустил, все задеплоилось само, бесплатно. Дожили.
3. Теперь буду развивать borisd.ru всякими интерактивами и, может быть, туда переезжать.
❤🔥1🔥1
Алгоритм регулярок
Я когда-то читал старую статейку про оптимальную реализацию регулярок (не помню, но будто близко к O(N)) и о том, что во многих языках (Perl, PHP и т.п.) она реализована совсем не оптимально, и можно положить программу при нужных регулярках и текстах.
Подтверждения я этому не нашел, попробовав всякие https://regex101.com/, https://www.phpliveregex.com/, ну и подумал, что это уже не актуально и забил.
А вчера наткнулся на https://javascript.info/regexp-catastrophic-backtracking 🛑
Я когда-то читал старую статейку про оптимальную реализацию регулярок (не помню, но будто близко к O(N)) и о том, что во многих языках (Perl, PHP и т.п.) она реализована совсем не оптимально, и можно положить программу при нужных регулярках и текстах.
Подтверждения я этому не нашел, попробовав всякие https://regex101.com/, https://www.phpliveregex.com/, ну и подумал, что это уже не актуально и забил.
А вчера наткнулся на https://javascript.info/regexp-catastrophic-backtracking 🛑
Очередной год
- устроился на работу на go ✅
- прошел англоязычный собес ✅
- устроился в Европу ❌
- выполнил план по карьерному росту ❌
- добрался до borisd.ru, сделал первую демку алгоритма ✅
Моя рубрика с созданием проектов не выстрелила: во-первых, долго готовил свою инфу, во-вторых, какие-то тупые у меня идеи и идей мало. Также я не умею в маркетинг, ничего раскачать не могу, и даже в этот блог подписчики органически никогда не приходят, хотя я и веду его уже 3 года.
В новом году буду пилить интерактивы на borisd.ru и погружаться в системную разработку, о чем буду писать тут.
Вытаскивайте канал из архива, включайте нотификации (пишу то я редко), делитесь постами с друзьями 🙏
С наступающим НГ 🎄
- устроился на работу на go ✅
- прошел англоязычный собес ✅
- устроился в Европу ❌
- выполнил план по карьерному росту ❌
- добрался до borisd.ru, сделал первую демку алгоритма ✅
Моя рубрика с созданием проектов не выстрелила: во-первых, долго готовил свою инфу, во-вторых, какие-то тупые у меня идеи и идей мало. Также я не умею в маркетинг, ничего раскачать не могу, и даже в этот блог подписчики органически никогда не приходят, хотя я и веду его уже 3 года.
В новом году буду пилить интерактивы на borisd.ru и погружаться в системную разработку, о чем буду писать тут.
Вытаскивайте канал из архива, включайте нотификации (пишу то я редко), делитесь постами с друзьями 🙏
С наступающим НГ 🎄
🔥12
Электромеханическое программирование
Машина для пинболла, которая реализована только из переключателей, соленоидов и реле, на основе которых реализованы подсчет очков с бонусами и мультиплеер.
Пара кадров в комментах.
* Можно включить озвучку в Яндекс браузере (не знаю, потянет ли он часовые ролики)
- https://www.youtube.com/watch?v=ue-1JoJQaEg
- https://www.youtube.com/watch?v=E3p_Cv32tEo
Машина для пинболла, которая реализована только из переключателей, соленоидов и реле, на основе которых реализованы подсчет очков с бонусами и мультиплеер.
Пара кадров в комментах.
* Можно включить озвучку в Яндекс браузере (не знаю, потянет ли он часовые ролики)
- https://www.youtube.com/watch?v=ue-1JoJQaEg
- https://www.youtube.com/watch?v=E3p_Cv32tEo
YouTube
Old pinball machines are amazingly complex
Shoot for the magic trunk!
PART 2: https://youtu.be/E3p_Cv32tEo
Technology Connextras (the second channel where I put stuff sometimes)
https://www.youtube.com/@TechnologyConnextras
Technology Connections on Mastodon:
https://mas.to/@TechConnectify
This…
PART 2: https://youtu.be/E3p_Cv32tEo
Technology Connextras (the second channel where I put stuff sometimes)
https://www.youtube.com/@TechnologyConnextras
Technology Connections on Mastodon:
https://mas.to/@TechConnectify
This…
Figma 🔥
Начал делать новый проектик, который надеюсь показать в феврале, и решил накидать прототип в фигме.
По работе я сто раз смотрел в ней макеты, но в виде готовых страничек, по которым я видел размеры элементов и т.п. Поэтому я и думал, что это инструмент для верстки дизайнерами или что-то такое.
Сам раньше пробовал, результат получался хуже, чем в ms paint, и с размерами была какая-то фигня.
А тут я просто посмотрел вводные уроки внутри самой фигмы и осознал всю мощь. Набросал интерактивный прототип проекта и, основываясь на нем, решаю что нужно и как связаны сущности между собой, чтоб пилить бэк.
Начал делать новый проектик, который надеюсь показать в феврале, и решил накидать прототип в фигме.
По работе я сто раз смотрел в ней макеты, но в виде готовых страничек, по которым я видел размеры элементов и т.п. Поэтому я и думал, что это инструмент для верстки дизайнерами или что-то такое.
Сам раньше пробовал, результат получался хуже, чем в ms paint, и с размерами была какая-то фигня.
А тут я просто посмотрел вводные уроки внутри самой фигмы и осознал всю мощь. Набросал интерактивный прототип проекта и, основываясь на нем, решаю что нужно и как связаны сущности между собой, чтоб пилить бэк.
👍2🔥1
Hands-on experience
Решил запилить нормальный CI/CD в свой кубер, вместо ручного деплоя. Столкнулся с тем, что за долгое время без внимания, кластер оброс какими-то проблемами. А я вообще забыл, что там и как, пришлось много читать и пробовать.
Во-первых, полно подов с ошибкой disk-pressure: смотрю kubectl describe nodes - все с диском ок. Так я начал освежать тему:
- Taints and tolerations
На ноде можно выставлять taints, чтобы ограничить, какие поды на ней могут работать. Если есть taint, в спеке пода должен быть соответствующий toleration, disk-pressure - один из них, на ноду он накидывается динамически.
Я использую capsule, который заложил для потенциального развития кластера. И он использует еще одну тему:
- Admission controllers
Это инструмент, позволяющий проверять мутирующие запросы к Kube API и не дать им выполниться (после аутентификации и авторизации).
У меня какое-то время назад возникали проблемы с диском и я их решил его увеличением. А про taint не подумал. Taint disk-pressure накинулся, многие "системные" поды поотвалились, в том числе capsule admission webhook.
Возникло что-то типа дедлока: когда решились проблемы с диском, taint убраться не смог, потому что он не мог достучаться до упавшего capsule admission webhook pod'а, которй не мог заschedule'иться из-за taint'а disk-pressure.
Пришлось делать kubectl patch с добавлением toleration disk-pressure на deployment вебхуков capsule.
После этого под поднялся, я смог снять taint disk pressure (с помощью kubectl taint) и все остальные поды тоже ожили.
Очередной раз понял, что без регулярного практического опыта, знания выпадают из головы. Восстанавливать их чуть проще, чем просто изучать с нуля, но все равно затратно.
Решил запилить нормальный CI/CD в свой кубер, вместо ручного деплоя. Столкнулся с тем, что за долгое время без внимания, кластер оброс какими-то проблемами. А я вообще забыл, что там и как, пришлось много читать и пробовать.
Во-первых, полно подов с ошибкой disk-pressure: смотрю kubectl describe nodes - все с диском ок. Так я начал освежать тему:
- Taints and tolerations
На ноде можно выставлять taints, чтобы ограничить, какие поды на ней могут работать. Если есть taint, в спеке пода должен быть соответствующий toleration, disk-pressure - один из них, на ноду он накидывается динамически.
Я использую capsule, который заложил для потенциального развития кластера. И он использует еще одну тему:
- Admission controllers
Это инструмент, позволяющий проверять мутирующие запросы к Kube API и не дать им выполниться (после аутентификации и авторизации).
У меня какое-то время назад возникали проблемы с диском и я их решил его увеличением. А про taint не подумал. Taint disk-pressure накинулся, многие "системные" поды поотвалились, в том числе capsule admission webhook.
Возникло что-то типа дедлока: когда решились проблемы с диском, taint убраться не смог, потому что он не мог достучаться до упавшего capsule admission webhook pod'а, которй не мог заschedule'иться из-за taint'а disk-pressure.
Пришлось делать kubectl patch с добавлением toleration disk-pressure на deployment вебхуков capsule.
После этого под поднялся, я смог снять taint disk pressure (с помощью kubectl taint) и все остальные поды тоже ожили.
Очередной раз понял, что без регулярного практического опыта, знания выпадают из головы. Восстанавливать их чуть проще, чем просто изучать с нуля, но все равно затратно.
Kubernetes
Taints and Tolerations
Node affinity is a property of Pods that attracts them to a set of nodes (either as a preference or a hard requirement). Taints are the opposite -- they allow a node to repel a set of pods.
Tolerations are applied to pods. Tolerations allow the scheduler…
Tolerations are applied to pods. Tolerations allow the scheduler…
👍4
Неудачный выбор вендора
Когда я строил свой кубер-кластер, я исходил из экономии, все должно быть легковесным, но поставляющим реальный функционал.
Так я выбрал k3s, а под него нашлось и управление стораджем (PV/PVC) - longhorn, а под него s3 гейтвей.
https://github.com/aquarist-labs/s3gw
Оказалось, что он не поддерживает функционал раздачи вебсайтов. А в добавок к этому, проект закрыли в этом году, значит и не появится.
Сам проект основан на костылях под radosgw, который, вообще, предназначен для Ceph, вместо которого я, в свое время, взял longhorn.
Проект прикольный, но пропатчить его я вряд ли смогу, а значит придется:
- либо отказаться от s3
- либо перейти на ceph, что влечет переделку всего, что завязано на PV longhorn'а, да и освоение ceph для начала
- либо оставить s3 на неподдерживаемой технологии и без крутых фич.
А пока придется упаковывать статику в какой-нибудь nginx или гошный веб-сервер, что требует билда, деплоя и т.п.(
Когда я строил свой кубер-кластер, я исходил из экономии, все должно быть легковесным, но поставляющим реальный функционал.
Так я выбрал k3s, а под него нашлось и управление стораджем (PV/PVC) - longhorn, а под него s3 гейтвей.
https://github.com/aquarist-labs/s3gw
Оказалось, что он не поддерживает функционал раздачи вебсайтов. А в добавок к этому, проект закрыли в этом году, значит и не появится.
Сам проект основан на костылях под radosgw, который, вообще, предназначен для Ceph, вместо которого я, в свое время, взял longhorn.
Проект прикольный, но пропатчить его я вряд ли смогу, а значит придется:
- либо отказаться от s3
- либо перейти на ceph, что влечет переделку всего, что завязано на PV longhorn'а, да и освоение ceph для начала
- либо оставить s3 на неподдерживаемой технологии и без крутых фич.
А пока придется упаковывать статику в какой-нибудь nginx или гошный веб-сервер, что требует билда, деплоя и т.п.(
GitHub
GitHub - s3gw-tech/s3gw: Container able to run on a Kubernetes cluster, providing S3-compatible endpoints to applications.
Container able to run on a Kubernetes cluster, providing S3-compatible endpoints to applications. - s3gw-tech/s3gw
Ограничение памяти для ОС
Недавно увеличил память на виртуалке в два раза, чтобы сервер смог подняться после проблемки. Проблему пофиксил, решил уменьшить память обратно, но прежде чем это делать, подумал "как можно уменьшить ее мягким образом для теста".
На линуксе так (в моем случае с almalinux):
-
-
-
проверяю через
Недавно увеличил память на виртуалке в два раза, чтобы сервер смог подняться после проблемки. Проблему пофиксил, решил уменьшить память обратно, но прежде чем это делать, подумал "как можно уменьшить ее мягким образом для теста".
На линуксе так (в моем случае с almalinux):
-
grub2-set-default mem=4G (уменьшаю до 4ГБ, после этого в grub2-editenv list вижу `saved_entry=mem=4G`)-
grub2-mkconfig -o /boot/grub2/grub.cfg-
rebootпроверяю через
free - показывает 4ГБ. Сервер поднялся, значит можно уменьшать виртуалку перманентно.👍1👀1
Нужно выбирать новую профессию. Зарплаты не растут, в мире сокращения, взлет того же AI.
Да и от этого блога на it-тематику все только отписываются.
Может мемами заняться?
1 апреля
👍4😢3🤡2😁1
Требуется перезагрузка
Этой весной, вне рабочего времени, ноутбук практически не открывал.
Кубер-кластер заморозил, чтоб не платить просто так. Проекты все забросил, потому что перестал видеть перспективу.
Но, чтоб поддерживать активность в канале, решил опубликовать свой "старый" проект lang-api,
https://github.com/boryashkin/lang-api/ о котором писал на vc. На нем я очередной раз учился React'у и напилил относительно сложный фронт, а так же инструменты для нарезки видосов по субтитрам (см. статью на vc).
А также драфт странички, на которой я в интерактивном виде хотел (потом доделаю) разобраться и показать как работают всякие арифметические операции в JS и в принципе, учитывая ограничения по размерам/памяти.
https://borisd.ru/articles/javascript-numbers/
С серией статей на своем сайте у меня большие планы, но, видимо, долгосрочные.
Этой весной, вне рабочего времени, ноутбук практически не открывал.
Кубер-кластер заморозил, чтоб не платить просто так. Проекты все забросил, потому что перестал видеть перспективу.
Но, чтоб поддерживать активность в канале, решил опубликовать свой "старый" проект lang-api,
https://github.com/boryashkin/lang-api/ о котором писал на vc. На нем я очередной раз учился React'у и напилил относительно сложный фронт, а так же инструменты для нарезки видосов по субтитрам (см. статью на vc).
А также драфт странички, на которой я в интерактивном виде хотел (потом доделаю) разобраться и показать как работают всякие арифметические операции в JS и в принципе, учитывая ограничения по размерам/памяти.
https://borisd.ru/articles/javascript-numbers/
С серией статей на своем сайте у меня большие планы, но, видимо, долгосрочные.
GitHub
GitHub - boryashkin/lang-api
Contribute to boryashkin/lang-api development by creating an account on GitHub.
👍3
Теория автоматического управления
Вспомнил ТАУ с университетских времен, обдумывая идеи для проектов.
В потоке мыслей, начал смотреть проекты, которые делают студенты за рубежом, типа самобалансирующихся палок (см. self balancing stick на ютубе), и наткнулся на крутое изобретение более чем столетней давности: гироскопический монорельс (Gyro monorail)
https://youtube.com/watch?v=kUYzuAJeg3M
Вспомнил ТАУ с университетских времен, обдумывая идеи для проектов.
В потоке мыслей, начал смотреть проекты, которые делают студенты за рубежом, типа самобалансирующихся палок (см. self balancing stick на ютубе), и наткнулся на крутое изобретение более чем столетней давности: гироскопический монорельс (Gyro monorail)
https://youtube.com/watch?v=kUYzuAJeg3M
YouTube
The Self Balancing Monorail
Use code PRIMALSPACE at the link below to get an exclusive 60% off an annual Incogni plan. https://incogni.com/primalspace
In this video, we explore the fascinating story of the Brennan Monorail, an innovative train from the early 1900s designed by Louis…
In this video, we explore the fascinating story of the Brennan Monorail, an innovative train from the early 1900s designed by Louis…
👍2
Набор конспектов по написанию софта
Наткнулся на интересные записи. Коротко и полезно для повторения:
https://web.mit.edu/6.005/www/fa15/
отрывок из содержания
там относительно Java, но на этом можно не акцентировать внимания
Наткнулся на интересные записи. Коротко и полезно для повторения:
https://web.mit.edu/6.005/www/fa15/
отрывок из содержания
03: Testing
04: Code Review
19: Concurrency
20: Thread Safety
21: Sockets & Networking
22: Queues & Message-Passing
23: Locks & Synchronization
там относительно Java, но на этом можно не акцентировать внимания
Программизд
Hands-on experience Решил запилить нормальный CI/CD в свой кубер, вместо ручного деплоя. Столкнулся с тем, что за долгое время без внимания, кластер оброс какими-то проблемами. А я вообще забыл, что там и как, пришлось много читать и пробовать. Во-первых…
Longhorn's failed PV
После очередного восстановления кластера, заметил, что nats не хочет подниматься на одной из нод - srv01. Под инстансы nats я выделял небольшие вольюмы для хранения данных на диске.
Смотрю
Т.к. там ничего важного нет, сделал
Решил заняться этим утром субботы, вместо будничных вечеров, и за 5 минут разобрался:
- во-первых, открыл UI longhorn (который отвечает за тот класс PV) и увидел, что проблема с одной из нод глобальная.
- во-вторых, загуглил, и наткнулся на наводящее слово "instance manager"
- в третьих
Дернул
Хорошо разбираться с проблемами на свежую голову.
Вспоминается мой полугодовой отпуск в том году, когда я делал свои пет-проекты с невероятной скоростью, относительно прогресса при фул-тайм работе.
После очередного восстановления кластера, заметил, что nats не хочет подниматься на одной из нод - srv01. Под инстансы nats я выделял небольшие вольюмы для хранения данных на диске.
Смотрю
kubectl describe pod nats-0 -n nats, там ошибка про аттач к PV или что-то про PVC, в общем, вольюм не предоставился.Т.к. там ничего важного нет, сделал
helm uninstall nats и снова helm install - не помогло. Руками удалил PV, переустановил - все равно именно на одной ноде вольюм не поднимался.Решил заняться этим утром субботы, вместо будничных вечеров, и за 5 минут разобрался:
- во-первых, открыл UI longhorn (который отвечает за тот класс PV) и увидел, что проблема с одной из нод глобальная.
- во-вторых, загуглил, и наткнулся на наводящее слово "instance manager"
- в третьих
kubectl get pods -n longhorn-system -o wide | grep srv01 показал instance-manager'ы в состоянии TerminatingДернул
kubectl delete instance-manager-xxx -n longhorn-system они спокойно перезапустились и вольюмы предоставились, проблемы ушли.Хорошо разбираться с проблемами на свежую голову.
Вспоминается мой полугодовой отпуск в том году, когда я делал свои пет-проекты с невероятной скоростью, относительно прогресса при фул-тайм работе.