Как стать автором
Обновить
0
0

Пользователь

Отправить сообщение

Эмиттерный повторитель — ключ к пониманию работы транзисторных каскадов

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров40K


Привет, эту публикацию я хочу посвятить людям, кто, как и я, любил в детстве читать журнал «Радио» и книги по электронике, но не смог сам разобраться в принципах работы усилителей на биполярных транзисторах. Тема полупроводников непроста и требует понимания многих чуждых для нашей повседневной интуиции физических процессов. Я помню момент озарения, когда я понял принцип схемотехнического решения эмиттерного повторителя, и именно с него пошло постепенное понимание, как функционируют и другие типы транзисторных каскадов. И я предполагаю, что эта тема может стать точкой входа в аналоговую электронику не только для меня.
Читать и смотреть схемы
Всего голосов 149: ↑147 и ↓2+187
Комментарии117

Kubernetes: продолжаем говорить о контейнерах и архитектуре

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров6K

Каждый раз залипаю на анимацию работы Raft-протокола

В прошлый раз мы говорили о контейнерах, механизмах Namespace и о том, как это всё работает.

Сегодня мы пойдём дальше — к системам оркестрации, так как нам мало просто иметь контейнер. Нам нужно управлять сетью, распределять нагрузку и вовремя поднимать упавшие контейнеры и свои собственные компоненты.

Попробуем немного отойти от классического «yaml-программирования» и заглянуть под капот.

Коснёмся CAP-теоремы, важности ETCD и причинах его устойчивости к split-brain-проблеме. А ещё посмотрим, почему Kubernetes API можно распределить на кучу инстансов, работающих одновременно, а Controller Manager может работать только в одном экземпляре за раз.

Вот о том, как всё это работает в Kubernetes, кто и зачем тыкает в API, мы сегодня и поговорим.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Комментарии0

Разворачиваем веб-приложение в Kubernetes с нуля

Уровень сложностиПростой
Время на прочтение31 мин
Количество просмотров46K

Современные веб-приложения, даже простые на вид, часто подразумевают нетривиальную архитектуру, состоящую из многих компонент. В статье «Делаем современное веб-приложение с нуля» я рассказал, как она может выглядеть, и собрал для демонстрации простейшую реализацию на стеке из нескольких популярных технологий. В неё вошёл бэкенд, фронтенд, воркер для асинхронных задач и аж два хранилища данных — MongoDB как основная база и Redis как очередь задач. В «Делаем поиск в веб-приложении с нуля» я показал, как можно добавить полнотекстовый поиск, и подключил третье хранилище — Elasticsearch.

Всё это время для простоты разработки и отладки компоненты приложения запускались локально через Docker Compose. Но как развернуть такое приложение в настоящем продакшн-окружении? Как обеспечить горизонтальное масштабирование? Как раскатывать новые релизы без простоя? 

В этой статье мы разберёмся, как разворачивать многокомпонентное веб-приложение в кластере Kubernetes на примере его локальной реализации — minikube. Мы поднимем виртуальный кластер прямо на рабочем ноутбуке, разберёмся с основными сущностями Kubernetes, запустим и соединим между собой компоненты демо-приложения и обсудим, какие ещё возможности Kubernetes пригодятся нам в суровом энтерпрайзе. Если вы занимаетесь разработкой и слышали о Kubernetes, но ещё не имели возможности пощупать его руками — добро пожаловать под кат!

Скорее к YAML-инженерии
Всего голосов 38: ↑38 и ↓0+38
Комментарии10

Как создать Minecraft на Python? Обзор библиотеки Ursina Engine

Время на прочтение11 мин
Количество просмотров41K

Среди любителей Minecraft много энтузиастов: пока одни просто играют, другие запускают целые серверы и пишут модификации. А кто-то идет дальше и разрабатывает собственные песочницы. Последнее достаточно просто сделать на Python.

Под катом делюсь основами работы с библиотекой Ursina Engine и показываю, как с помощью нее создать мир из кубов.
Читать дальше →
Всего голосов 49: ↑48 и ↓1+58
Комментарии21

Как ускорить работу PostgreSQL с помощью конфигурации базы и оптимизации запросов

Время на прочтение12 мин
Количество просмотров43K

Когда работаешь с данными, скорость запросов — один из главных показателей эффективности. Чтобы повысить эту скорость, нужно знать не только как оптимизировать сами запросы, но и как конфигурация самой базы влияет на скорость выполнения запроса.

Администратор баз данных в Southbridge и ведущий инженер компании Data Driven Lab Иван Чувашов занимается базами данных 15 лет и сегодня хочет поговорить про оптимизацию запросов. Разбирать все будет на примере PostgreSQL, так как именно с этой базой он сейчас работает плотнее всего.

Эта статья — конспект бесплатного вебинара об оптимизации PostgreSQL от «Слёрма». Если вам удобнее смотреть, а не читать, переходите на YouTube.

Читать далее
Всего голосов 16: ↑14 и ↓2+15
Комментарии13

Многопоточный Python на примерах: избавляемся от дедлоков

Время на прочтение8 мин
Количество просмотров17K

Дедлоки — распространенная проблема в многопоточном программировании. В больших приложениях вручную отслеживать порядок блокировок может быть достаточно сложно, причем эта проблема может не всплыть на этапе тестирования и случиться только в каких-то сложновоспроизводимых кейсах при реальном использовании. Существует много способов их избегания, но здесь мы рассмотрим только один — автоматическое выявление дедлоков на основе графа ожидания.

Разблокировать
Всего голосов 31: ↑31 и ↓0+31
Комментарии14

Возможности Heap Table в PostgreSQL

Время на прочтение12 мин
Количество просмотров13K

Меня зовут Якупов Азат, я дата-архитектор Quadcode. В индустрии я больше 20 лет, из них больше 6 лет — в архитектуре. Эта статья — немного сокращенный пересказ моего выступления на митапе по теме «Heap Table в PostgreSQL». 

Речь в тексте пойдет об обычных таблицах, с которых начинается вся дата-инженерия. Посмотрим на то, как метаданные располагаются в Postgres, разберемся, что такое table page и fillfactor, а также поближе познакомимся с TOAST-таблицами.

Читать далее
Всего голосов 15: ↑13 и ↓2+14
Комментарии18

Как Kubernetes создает и запускает контейнеры: Иллюстрированное руководство

Время на прочтение7 мин
Количество просмотров27K

Понимание того как Kubernetes обрабатывает контейнеры дает большую гибкость при создании пользовательских конфигураций под конкретные нужды.

Kubernetes позволяет выполнять много полезной работы без глубокого понимания деталей. Утилита командной строки kubectl и дашборды в Openshift помогают управлять вашими контейнерами. Однако, как только вы заглянете глубже в Kubernetes все может быстро усложниться.

Тем не менее, понимание того, как основные части взаимодействуют друг с другом, является важным для главного архитектора, который использует Kubernetes в своих проектах. Проведем аналогию с обычным архитектором: для проектирования небоскребов важно знать прочность на растяжение железобетона в сравнении с балками из чистой стали. Также полезно понимать как работают системы отопления, вентиляции и кондиционирования воздуха.

Такая аналогия правдива и для работы с Kubernetes. Просто сказать: "Давайте оставим это на усмотрение разработчиков" - недостаточно, с таким же успехом можно предоставить выбор системы кондиционирования обычным рабочим со строительной площадки. За каждой хорошо спроектированной системой стоит как множество деталей, так и архитектор, который понимает их значение.

Для системного архитектора в IT важно понимать как Kubernetes создает и запускает контейнеры. Изучение контейнерной оркестрации необходимо по двум причинам. Во-первых, это хорошее знание для архитектора уровня компании (как для обычного архитектора знание систем кондиционирования). Во-вторых, понимание механизмов, благодаря которым Kubernetes создает и запускает контейнеры, позволяет настраивать пользовательские конфигурации кластеров Kubernetes для специфичных кейсов, но для этого необходимо понимать основы.

Читать далее
Всего голосов 9: ↑7 и ↓2+7
Комментарии2

График платежей с напоминалкой в Telegram с помощью Google Sheets & JavaScript

Время на прочтение4 мин
Количество просмотров16K

Меня заинтересовал челлендж: в течение 26 недель откладывать N+100 руб, где N - сумма, вложенная на прошлой неделе. Я решил откладывать деньги по средам, составил такую табличку в Google Sheets

Читать далее
Всего голосов 18: ↑18 и ↓0+18
Комментарии7

Ленивый деплой Django проекта UWSGI + NGINX (UBUNTU 20.04)

Время на прочтение3 мин
Количество просмотров20K

Здравствуйте!

Хочу представить вам пошаговую инструкцию по деплою django проекта.

Сразу скажу, что используя мою краткую инструкцию вы не поймете механику развертывания. По сути, это просто список команд для деплоя. Тут не будет никаких подробностей касательно работы UWSGI, NGINX и самого Django. Я просто помогу быстро добраться до цели, а цель у нас одна - задеплоить уже наконец этот **** проект!

Читать далее
Всего голосов 18: ↑5 и ↓13-5
Комментарии15

Современный Python: как начать свой проект с нуля при помощи Pyenv и Poetry

Время на прочтение7 мин
Количество просмотров60K

Рассказываем, как начинающему разработчику установить и управлять различными версиями Python с помощью Pyenv, подготовить свой проект и создать виртуальное окружение через Poetry.

Читать далее
Всего голосов 15: ↑11 и ↓4+8
Комментарии16

Как проверить, зависит ли Java проект от уязвимой версии Log4j

Время на прочтение4 мин
Количество просмотров18K

Если ваше приложение использует Log4j с версии 2.0-alpha1 до 2.14.1, вам следует как можно скорее выполнить обновление до последней версии (2.16.0 на момент написания этой статьи - 20 декабря).

Log4j уязвимость отслеживаться как CVE-2021-44228 (также известный как Log4Shell) позволяет злоумышленнику выполнить произвольный код в системе. 

В заметке описаны инструменты для проверки зависимости Java проекта от уязвимой версии Log4j.

Читать далее
Всего голосов 7: ↑6 и ↓1+6
Комментарии8

Как стать DevOps инженером за полгода или даже быстрее. Часть 1. Введение

Время на прочтение8 мин
Количество просмотров132K

Целевая аудитория


Вы разработчик, который хочет повернуть свою карьеру в сторону более совершенной модели DevOps? Вы являетесь классическим Ops-инженером и хотели бы получить представление о том, что означит DevOps? Или же вы не являетесь ни тем, ни другим и, потратив некоторое время на работу в области ИТ-технологий, хотите поменять работу и понятия не имеете, с чего начать?
Если да, то читайте дальше, чтобы узнать, как можно стать инженером DevOps среднего уровня за шесть месяцев! Наконец, если вы уже много лет занимаетесь DevOps, то все равно сможете почерпнуть много полезного из этого цикла статей и узнать, где находится отрасль интеграции и автоматизации в данный момент и куда она стремится в своем развитии.

Читать дальше →
Всего голосов 29: ↑18 и ↓11+16
Комментарии13

Делаем современное веб-приложение с нуля

Время на прочтение31 мин
Количество просмотров153K
Итак, вы решили сделать новый проект. И проект этот — веб-приложение. Сколько времени уйдёт на создание базового прототипа? Насколько это сложно? Что должен уже со старта уметь современный веб-сайт?

В этой статье мы попробуем набросать boilerplate простейшего веб-приложения со следующей архитектурой:


Что мы покроем:

  • настройка dev-окружения в docker-compose.
  • создание бэкенда на Flask.
  • создание фронтенда на Express.
  • сборка JS с помощью Webpack.
  • React, Redux и server side rendering.
  • очереди задач с RQ.
Читать дальше →
Всего голосов 64: ↑56 и ↓8+48
Комментарии125

Обширный обзор собеседований по Python. Советы и подсказки

Время на прочтение10 мин
Количество просмотров185K

Всем привет!


Кратко о себе. По образованию я математик, а вот по профессии — программист. В сфере разработки с 2006 года. Хотя, поскольку программирование начали изучать ещё в школе, свои первые программки и игры я начал писать ещё в школе (примерно, с 2003). Так сложилось, что пришлось выучить и поработать на нескольких языках. Если не брать во внимание ВУЗ-овские лекции по С, С++, Бэйсику, Паскалю и Фортрану, то реально я работал с Delphi (более 6 лет), PHP (более 5 лет), Embedded (Atmel + PIC около 2.5 лет) и последним временем Python + чуть-чуть Scala. Конечно же без баз данных тоже никак не обойтись.


Для кого эта статья? Для всех, кто, как и я, хотел (или хочет) найти для себя достойную хорошо оплачиваемую работу с интересным проектом, классным коллективом и всякими плюшками. А также для тех, кто желает поднять свой уровень знаний и мастерства.

Читать дальше →
Всего голосов 71: ↑70 и ↓1+69
Комментарии57

Как стать Java разработчиком за 1,5 года

Время на прочтение10 мин
Количество просмотров311K

Меня зовут Сергей, мне 40 лет и сейчас я работаю Java разработчиком в немецкой компании. Мы занимаемся разработкой программного обеспечения для пивоварен оценки финансовых и кредитных рисков. Это моя первая работа в качестве разработчика. До этого я работал в сфере IT-поддержки и системной интеграции. Первого февраля 2019 г. закончился мой шестимесячный испытательный срок, и у меня на руках бессрочный контракт. Я хочу поделиться своим опытом, как можно самостоятельно выучить Java так, чтобы получить работу.



Это мой рабочий стол. Пить пиво в рабочее время у нас разрешено, мы же в Германии.


Моя первая статья: «IT-эмиграция с семьей. И особенности поиска работы в маленьком городе Германии, когда ты уже там»

Читать дальше →
Всего голосов 129: ↑122 и ↓7+115
Комментарии212

Подборка @pythonetc, январь 2019

Время на прочтение3 мин
Количество просмотров8.5K


Это восьмая подборка советов про Python и программирование из моего авторского канала @pythonetc.

Предыдущие подборки:


Читать дальше →
Всего голосов 39: ↑38 и ↓1+37
Комментарии0

IBM MQ и JMeter: Первый контакт

Время на прочтение3 мин
Количество просмотров14K
Привет, Хабр!

Это приквел моей предыдущей публикации и в то же время ремейк статьи Автоматизированное тестирование сервисов, использующих протокол MQ с помощью JMeter.

На этот раз расскажу о своем опыте примирения JMeter и IBM MQ для счастливого тестирования приложений на IBM WAS. Сталкивался с такой задачей, легко она не поддавалась. Хочу помочь сэкономить время всем заинтересованным.

Осторожно, много скриншотов
Всего голосов 16: ↑14 и ↓2+12
Комментарии12

Классические алгоритмы и структуры данных на JavaScript

Время на прочтение2 мин
Количество просмотров94K
Привет Всем! Я недавно запустил на GitHub проект JavaScript Algorithms and Data Structures, который содержит примеры классических алгоритмов и структур данных написанных на JavaScript с объяснениями, примерами и ссылками для дальнейшего изучения (в частности на соответствующие YouTube видео).

Основная задача проекта — помочь программистам в изучении и применении алгоритмов и сделать это на JavaScript-е.
Читать дальше →
Всего голосов 76: ↑71 и ↓5+66
Комментарии31

Выстраиваем процесс разработки и CI pipeline, или Как разработчику стать DevOps для QA

Время на прочтение10 мин
Количество просмотров15K
Дано:

  1. крупный проект на Java с фронтом на Angular,
  2. разрабатываемый небольшой командой (~15 человек),
  3. с использованием кучи (порядка 40 штук параллельно) фич-бранчей,
  4. в git-репозитории;
  5. несколько виртуальных серверов в приватном амазоновском облаке, которые можно использовать под задачи разработки;
  6. разработчик, который немного подустал от Java, и хочет сделать что-нибудь по-настоящему полезное для постановки процессов.

Требуется:

  1. обеспечить возможность команде QA инженеров тестировать каждый фич-бранч, как вручную, так и автоматизированно, на выделенном стенде, который не мешает остальным.


Консоль управления космическим кораблёмQA стендом

Вот приходишь ты работать в маленький стартап с американскими корнями…
...уже интригует? Дальше будет особенное девоповское порно
Всего голосов 14: ↑13 и ↓1+12
Комментарии14
1

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность