Получи случайную криптовалюту за регистрацию!

Никита Шпилевой | Про ИТ, ИИ, итд

Логотип телеграм канала @nikitashpilevoy — Никита Шпилевой | Про ИТ, ИИ, итд Н
Логотип телеграм канала @nikitashpilevoy — Никита Шпилевой | Про ИТ, ИИ, итд
Адрес канала: @nikitashpilevoy
Категории: Технологии
Язык: Русский
Количество подписчиков: 378
Описание канала:

Заметки о программировании, базах данных, книгах, карьере в ИТ.
Авторский канал. 12 лет занимаюсь ИТ. В известных IT-компаниях и стартапах. Состою в программном комитете конференции Highload.
Без рекламы. Обратная связь: contact@nickshpil.com

Рейтинги и Отзывы

1.00

2 отзыва

Оценить канал nikitashpilevoy и оставить отзыв — могут только зарегестрированные пользователи. Все отзывы проходят модерацию.

5 звезд

0

4 звезд

0

3 звезд

0

2 звезд

0

1 звезд

2


Последние сообщения 2

2022-10-17 19:29:30 Вопрос от подписчика:
Стоит ли покупать/читать технические книги? Кажется, в Интернете можно найти статью на абсолютно любую тему

Я со всей уверенностью могу сказать, что чтение книг по программированию/технологиям/теории - это самый лучшей способ ускорить свой карьерный рост.

Почему поиска в Google недостаточно? Это может отлично работать, если у вас есть конкретный сформулированный вопрос. Однако, книга предоставляет гораздо большее погружение в предметную область.

Если вы хотите на самом деле изучить предмет, тогда вам нужно найти всестороннее освещение темы от эксперта, который вероятно является автором книги. Это гораздо более продуктивно, чем чтение рандомных постов из таких же блогов и обсуждений на stackoverflow в долгосрочной перспективе.

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

Как техлид, я являюсь тем человеком, который приходит на помощь, когда кто-то застрял в своей задаче из-за странностей системы или поведения базы данных или других технических проблем. И я часто вижу, что у людей просто не хватает знаний как собрать все это вместе.

Ответ заключается в том, что я прочитал, выучил и понял множество книг, стоящих на полках, в то время как другим было наплевать. Беглое чтение и гугление могут дать вам только базовое понимание; стать экспертом требует немного больше усилий.
336 views16:29
Открыть/Комментировать
2022-10-15 17:43:22
Иллюстрация CAP теоремы
274 views14:43
Открыть/Комментировать
2022-10-15 17:42:49 CAP теорема: один из самых недооцененных терминов

CAP теорема это один из самых известных терминов в сфере информационных технологий, но я готов поспорить что разные разработчики имеют разное его понимание. Давайте рассмотрим на примере, почему это происходит.

CAP теорема утверждает, что распределенная система не может предоставить более чем 2 из 3 гарантий одновременно.

Консестентность: консистентность подразумевает все клиенты (в смысле клиент-серверной архитектуры) видят те же самые данные в любой произвольный момент времени, независимо от того, к какой ноде они подключены.

Доступность: означает любой клиент может запросить данные и получить ответ даже если какие-то из узлов недоступны.

𝐏𝐚𝐫𝐭𝐢𝐭𝐢𝐨𝐧 𝐓𝐨𝐥𝐞𝐫𝐚𝐧𝐜𝐞, означает обрыв коммуникаций между двумя нодами. Устойчивость к подобного рода разрывам, означает система продолжает работать несмотря на сетевые разрывы.

Формулировка "2 из 3" может быть удобной и простой для понимания, но такое упрощение приводит к недопониманию.

1. Выбор базы данных не является простой задачей. Выбор на основе лишь CAP теоремы недостаточен. Для примера, компании не выбирают Cassandra при разработке чат приложений только потому что она является примером AP системы. Есть ряд характеристик, которые делают Cassandra отличным выбором для хранения сообщений чата. Но для этого нужно копнуть глубже.

2. CAP теорема покрывает лишь малую часть архитектурных проблем

3. Теорема упрощает и возводит в абсолют выбор между 100% доступностью и консистентностью. В реальном мире мы решаем задачи выбора между длительностью обработки запроса и консистентностью когда нет рассинхронизации сети. Ознакомтесь с PACECL теоремой, она дает более развернутый ответ.

Полезна ли CAP теорема?
Я думаю она достаточно полезна, так как приучает наш мозг к подобного рода дилеммам, когда нужно делать выбор между производительностью, консистентностью и какими либо гарантиями. Однако не стоит делать выбор базы данных только на ее основании.

#базыданных #программирование #архитектура
262 views14:42
Открыть/Комментировать
2022-08-06 16:12:20 Если вы следите за последними новостями про #Kubernetes, наверняка уже слышали про Ephemeral контейнеры. Давайте разберемся что это за новая фича, появившееся в Kubernetes v1.25.

Эфимерные контейнеры позволяют нам запускать контейнер с указанным образом в контексте уже запущенного Pod. Это очень полезно для отладки или поиска проблем в образах в которых нехватает нужных для этого утилит, таких как curl или tcpdump.

$ kubectl exec -it some-deployment -- sh
$ tcpdump
sh: 1: tcpdump: not found


Но если вы присоедините эфимерный контейнер к pod:

$ kubectl debug -it some-deployment --image busybox


Так как у нас есть доступ к сетевому пространству имен данного Pod, мы можем отправить GET запрос используя curl/wget, что было бы невозможным в легковесном образе:

$ wget localhost:80
Connecting to localhost:80 (127.0.0.1:80)
saving to 'index.html'
index.html 100%


Эфимерные контейнеры используют те же самые cgrpup, ipc, net, user и utc пространства имен. Хотя был бы смысл не разделять mnt пространство, так как файловая система эфимерного и основного контейнера не пересекается. Пространство pid (процессоры) может быть доступна созданием копии pod (описано в документации).
215 views13:12
Открыть/Комментировать
2022-08-06 16:01:21 If you’re following the latest news on #Kubernetes, you probably would have heard about Ephemeral Containers. Not sure? Fear not! In this blog post we will try to shed some light on this new feature soon to be stable1 in Kubernetes v1.25.

Ephemeral containers let us run a container with a specific image in the context of an already running container in a Pod. This comes in handy when debugging/troubleshooting distroless images or images that lack certain utilities, where kubectl exec won’t be helpful.

$ kubectl exec -it some-deployment -- sh
$ tcpdump
sh: 1: tcpdump: not found


But now you can attach an ephemeral container to the pod:

$ kubectl debug -it some-deployment --image busybox


Since we have access to a the network namespace of the Pod, we should be able to send a GET request using curl/wget utilities, which would not be available on a distroless image -

$ wget localhost:80
Connecting to localhost:80 (127.0.0.1:80)
saving to 'index.html'
index.html 100%


It looks like the ephemeral container has the same cgroup, ipc, net, user, and uts namespaces. It would make sense for the mnt namespace to not be available, because filesystems for both the ephemeral and the debugged container are different. pid namespace can be accessed by creating a copy of the pod as discussed in the documentation here.

However, if the target container is specified explicitly, the ephemeral container has access to the pid namespace. This means we can access the filesystem of the debugged pod by referring to the root path as /proc/1/root
183 views13:01
Открыть/Комментировать
2022-07-26 23:31:14 Asdf

Сегодня расскажу про такую утилиту командной строки как Asdf. Она позволяет управлять несколькими версиями языка на уровне проекта. Изначально, я просто использовал Pyenv что-бы использовать несколько версий Python, но в некоторых проектах мне требуется тоже самое для Node.js. Я начал с использования Nvm, пока один из коллег не показал мне Asdf. Название не самое удачное, но это не главное, ведь утилита решает свою задачу - возможность запускать окружение на нескольких версиях python/node.js. И кстати говоря, Python плагин для Asdf использует именно Pyenv для установки разных версий Python.

Пример использования
# Подключаем python плагин
asdf plugin add python

# Устанавливаем нужную версию
asdf install python 3.9.6

# Делаем ее глобальной
asdf global python 3.9.6

# Проверяем результат
python --version


Если вам также как и мне нужно работать с JavaScript:

# Добавляем плагин Node.js
asdf plugin add nodejs

# Устанавливаем последнюю LTS версию
asdf install nodejs lts

# Делаем ее глобальной
asdf global nodejs lts

# Проверяем результат
node --version


#Python #NodeJS
158 views20:31
Открыть/Комментировать
2022-07-20 22:27:28 Channel photo updated
19:27
Открыть/Комментировать
2022-07-20 22:25:30 Channel name was changed to «Записки ТехЛида»
19:25
Открыть/Комментировать
2022-07-20 20:39:53
Numba быстрее всего обрабатывает маленький массив, но на больших NumPy обгоняет ее.
133 views17:39
Открыть/Комментировать
2022-07-20 20:39:13 Поговорим про Numba.

Это такой JIT компилятор, который компилирует подмножество Python кода в быстрый машинный код, который намного быстрее чем обычное выполнение в cpython. Но только строго определенное подмножество Python кода может быть скомпилированно.

Сложно сказать, в какой момент numba становится эффективной. Однако, есть несколько индикаторов которые помогут провести черту:
- Если вы не можете использовать jit с nopython=True - если вы не можете скомпилировать что-то в режиме nopython вы либо пытаетесь скомпилировать слишком много либо это не будет работать значительно быстрее
- Если вы не используете массивы - когда вы имеете дело со списками или другими типами, которые вы подаете на вход в функцию numba (за исклюдчением других numba функций), numba копирует эти данные что-бы избежать большого оверхэда
- Если уже есть NumPy или SciPy функция которая делает это - даже если numba может значительно ускорить код для коротких массивов, для больших скорее всего numba покажет такую же скорость

Есть еще одна причина, почему вы вероятно не захотите использовать numba только потому, что она немного быстрее чем другие решения: Numba-функции должны быть скомпилированны заранее, в противном случае время на компиляцию будет потрачено больше чем выигрыш по скорости. Еще numba довольно медленно импортируется и ее функции добавляют overhead. Как по мне, нет никакого смысла использовать это ради нескольких миллисекунд, особенно с учетом того что импорт может достигать 1-10 секунд.
131 views17:39
Открыть/Комментировать