Дмитрий Брайт
@Bright_Translate
Переводчик
Эволюция кода: путь к лучшему дизайну
Перевод
В этой статье мы изучим программное решение экзаменационной задачи конца второго семестра в AltSchool Africa. Эта задача подразумевает построение системы для управления складскими запасами магазина, продающего машины и другие товары. В частности, магазин должен иметь возможность отслеживать количество и общую стоимость проданных и оставшихся на складе товаров.
Пять шаблонов загрузки данных для повышения быстродействия сайтов
Блог компании RUVDS.com JavaScript *Программирование *Клиентская оптимизация *Серверная оптимизация *
Перевод
Фреймворки вам требуются не для всего, но в случае их использования есть ряд способов, позволяющих добиться максимального быстродействия. В данной статье речь пойдёт о пяти шаблонах загрузки данных, которые при уместном применении позволят значительно повысить производительность приложений или сайтов.
Генерация музыки из изображений с помощью Python
Перевод
Сказать, что музыка является частью моей жизни, будет серьёзным преуменьшением. Я более 20 лет играю на гитаре, и каждый день слушаю других гитаристов. По правде говоря, прежде чем начать свой академический путь в качестве физхимика двенадцать лет назад, я был намерен строить музыкальную карьеру.
И хотя этим моим планам ну было суждено осуществиться, я всё равно продолжаю наслаждаться музыкой и делать с её помощью всякие крутые штуки. К примеру, этот проект возник из идеи написать программу, которая бы создавала музыку из изображений. В прошлом уже были довольно интересные попытки сделать нечто подобное, но вот результаты оказывались не особо музыкальными.
Далее в этой статье я расскажу о своём подходе к генерации из картинок аудиотреков, которые, имхо, звучат весьма неплохо. Здесь я опишу основные результаты и покажу некоторые удачные примеры программы. Если вы захотите посмотреть весь код, то он лежит на моём сайте и в репозитории GitHub. Я также создал с помощью Streamlit приложение, с которым вы можете поэкспериментировать здесь.
Всё про USB-C: переходники вне стандарта
Перевод
Давайте будем откровенны — одних только кабелей USB-C — USB-C недостаточно. Существует и много других видов, которые могут потребоваться в повседневной жизни, пока в нашем обиходе присутствуют устройства без разъёма USB-C. Однако в спецификации учитываются далеко не все типы кабелей, которые мы можем захотеть купить или собрать самостоятельно.
Лично я считаю, что как у хакера у вас должна быть возможность приобрести любую необходимую приспособу со стандартом подключения USB-C. Хакерам не нужны ограничения, обуславливаемые маркетингом, — им необходимо понимать, как можно или нельзя применить тот или иной девайс, исходя из его внутреннего устройства. И я хочу поделиться с вами таким пониманием, чтобы вы могли принимать осмысленные решения.
С другой стороны, USB-C создан для использования не умудрёнными опытом людьми, хотя и в этом плане у данного стандарта есть пробелы. Здесь нам поможет ясность определения того, что соответствует стандарту. Вот известная история о кабеле USB-C, который убил Chromebook и подтолкнул Бенсона Люна к запуску онлайн-блога с рекомендациями относительно USB-C. На деле существует множество подобных печальных историй.
Сегодня же мы разберём виды кабелей USB-C, которые в зависимости от своего использования могут как выполнить свою роль, так и подвести вас.
Прим. пер.: эта статья является частью серии, посвященной стандарту USB-C. Остальные публикации здесь:
Как можно ускорить Python сегодня
Перевод
Python не перестаёт удивлять многих своей гибкостью и эффективностью. Лично я являюсь приверженцем С и Fortran, а также серьёзно увлекаюсь C++, поскольку эти языки позволяют добиться высокого быстродействия. Python тоже предлагает такие возможности, но дополнительно выделяется удобством, за что я его и люблю.
Этот инструмент способен обеспечивать хорошее быстродействие, поскольку имеет в арсенале ключевые оптимизированные библиотеки, а также возможность динамической компиляции основного кода, который предварительно не компилировался. Однако скорость Python значительно падает, когда дело доходит до обработки крупных датасетов или более сложных алгоритмов. В текущей статье мы разберём:
- Почему столь важно думать о «будущем разнородных вычислений».
- Две ключевых сложности, которые необходимо преодолеть в открытом решении.
- Параллельное выполнение задач для более эффективного задействования CPU.
- Использование ускорителя для дополнительного повышения быстродействия.
Один только третий пункт позволил увеличить быстродействие в 12 раз притом, что четвёртый позволяет добиться ещё большего за счёт ускорителя. Эти простые техники могут оказаться бесценными при работе с Python, когда требуется добиться дополнительного ускорения программы. Описанные здесь приёмы позволяют нам уверенно продвигаться вперёд без длительного ожидания результатов.
Как мы в Slack используем Terraform
Перевод
В Slack всей своей инфраструктурой, опирающейся на AWS, DigitalOcean, NS1 и GCP, мы управляем с помощью Terraform. И хотя большая её часть работает на AWS, мы выбрали Terraform в противоположность их нативному сервису CloudFormation, чтобы использовать единый инструмент среди всех провайдеров сервисов. Это позволяет сохранить модель «инфраструктура как код» и механизм развёртывания универсальными. В статье мы разберём процесс развёртывания нашей инфраструктуры с помощью Terraform.
Генерация конвейеров обработки данных в Dataflow
Перевод
Эта статья посвящена всем практикующим специалистам по данным, заинтересованным в освоении запуска, стандартизации и автоматизации пакетных конвейеров данных в Netflix.
О Dataflow мы писали в статье под названием Data pipeline asset management with Dataflow. Та статья представляла подробное знакомство с одним из наиболее технических аспектов Dataflow, но сам этот инструмент толком не описывала. На сей раз мы оправдаем заявленное вступление, после чего сосредоточимся на одной из основных возможностей Dataflow — образцах рабочих потоков. Для начала же мы коротко разберём Dataflow в общем.
Всё про USB-C: типы кабелей
Перевод
Тема кабелей и разъёмов стандарта USB-C является довольно запутанной, и тому есть объективные причины. Множество вариантов реализации и нюансов вкупе с не всегда добросовестными производителями вносят на рынок кабелей неразбериху. Тем не менее в статье я покажу, что всё в этом вопросе не так уж плохо, если вы готовы прибегнуть к ряду приёмов и скорректировать собственные ожидания.
Примечание пер.: это первая часть серии, посвященной стандарту USB-C. Остальные статьи по этой теме доступны здесь:
Графы в Python: введение и знакомство с лучшими библиотеками
Перевод
Граф – это математическая структура данных, представляющая собой множество связанных элементов. Поскольку графы, по своей сути, являются очень гибкими и позволяют сохранять информацию в знакомой и удобной для восприятия форме, они всегда активно использовались в компьютерной науке и сфере технологий. С появлением же машинного и глубокого обучения, графы обрели ещё бо́льшую популярность, создав новое направление — машинное обучение на графах.
В этой статье я расскажу вам о наиболее полезных библиотеках Python, которые использовал для сетевого/графового анализа, визуализации и машинного обучения. Если говорить конкретнее, то это будут:
Моделирование возможностей связи комплекса Starlink
Перевод
starlink.sx v0.1 pre-pre-alpha
Прошло 18 месяцев с того момента, как я запустил свой проект starlink.sx, в первую очередь нацеленный на расширение моего понимания принципов работы комплекса Starlink от SpaceX, а также изучение возможностей его применения в Кении. В этой стране мой стартап – Poa Internet – предлагает доступный широкополосный доступ непривилегированным сообществам, используя фиксированный беспроводной доступ (FWA). Учитывая отсутствие хорошей оптоволоконной структуры в большей части Африки, использование Starlink в качестве транзитного соединения для распределения FWA выглядит вполне годным.
И хотя я ожидал, что это будет короткий проект на пару-тройку месяцев, судя по моему трекеру Loon вскоре стало ясно, что запуск низкоорбитального (LEO) комплекса на негеостационарной орбите (NGSO) сопряжён со множеством областей – не только с аэрокосмической инженерией, орбитальной механикой или беспроводными коммуникациями, но также с юридическими, финансовыми, регуляторными нюансами и прочим. Мне предстоял непростой путь.
Сегодня я выпустил v2.0 сайта, впервые предложив возможность моделирования потенциальных мощностей для обслуживания потребителей в выбранной стране.
Прошло 18 месяцев с того момента, как я запустил свой проект starlink.sx, в первую очередь нацеленный на расширение моего понимания принципов работы комплекса Starlink от SpaceX, а также изучение возможностей его применения в Кении. В этой стране мой стартап – Poa Internet – предлагает доступный широкополосный доступ непривилегированным сообществам, используя фиксированный беспроводной доступ (FWA). Учитывая отсутствие хорошей оптоволоконной структуры в большей части Африки, использование Starlink в качестве транзитного соединения для распределения FWA выглядит вполне годным.
И хотя я ожидал, что это будет короткий проект на пару-тройку месяцев, судя по моему трекеру Loon вскоре стало ясно, что запуск низкоорбитального (LEO) комплекса на негеостационарной орбите (NGSO) сопряжён со множеством областей – не только с аэрокосмической инженерией, орбитальной механикой или беспроводными коммуникациями, но также с юридическими, финансовыми, регуляторными нюансами и прочим. Мне предстоял непростой путь.
Сегодня я выпустил v2.0 сайта, впервые предложив возможность моделирования потенциальных мощностей для обслуживания потребителей в выбранной стране.
Почему стоит использовать лимиты CPU в Kubernetes
Перевод
Эту статью я написал в противовес статье “For the love of god, stop using CPU limits on Kubernetes” (Ради всего святого, прекратите использовать в Kubernetes лимиты CPU).
Мне та статья понравилась, и я считаю её хорошим чтивом. Более того, я согласен с высказанными в ней рекомендациями относительно установки объёмов запрашиваемой памяти и её лимитов для контейнеров, а также с советом всегда устанавливать запросы на выделение CPU.
При этом моё несогласие, явно выраженное в противоположном по смыслу заголовке, связано с той категоричностью, с которой в итоге автор рекомендует не устанавливать лимиты потребления CPU.
2003–2023: Краткая история Big Data
Перевод
Когда, играя в ту или иную RPG, я оказываюсь в библиотеке, то обязательно перечитываю все книги на полках, чтобы лучше вникнуть во вселенную игры. Помнит кто-нибудь «Краткую историю империи» в Morrowind?
Большие данные (Big Data) и, в частности, экосистема Hadoop появились немногим более 15 лет назад и развились к сегодняшнему дню так, как мало кто мог тогда предположить.
Ещё только появившись, опенсорсный Hadoop сразу стал популярным инструментом для хранения и управления петабайтами данных. Вокруг него сформировалась обширная и яркая экосистема с сотнями проектов, и он до сих пор используется многими крупными компаниями, даже на фоне современных облачных платформ. В текущей статье я опишу все эти 15 лет1 эволюции экосистемы Hadoop, расскажу о её росте в течение последнего десятилетия, а также о последних шагах в развитии сферы больших данных за последние годы.
Так что пристегнитесь и настройтесь на путешествие во времени вглубь 20 последних лет, поскольку наша история начинается в 2003 году в маленьком городке к югу от Сан-Франциско…
Большие данные (Big Data) и, в частности, экосистема Hadoop появились немногим более 15 лет назад и развились к сегодняшнему дню так, как мало кто мог тогда предположить.
Ещё только появившись, опенсорсный Hadoop сразу стал популярным инструментом для хранения и управления петабайтами данных. Вокруг него сформировалась обширная и яркая экосистема с сотнями проектов, и он до сих пор используется многими крупными компаниями, даже на фоне современных облачных платформ. В текущей статье я опишу все эти 15 лет1 эволюции экосистемы Hadoop, расскажу о её росте в течение последнего десятилетия, а также о последних шагах в развитии сферы больших данных за последние годы.
Так что пристегнитесь и настройтесь на путешествие во времени вглубь 20 последних лет, поскольку наша история начинается в 2003 году в маленьком городке к югу от Сан-Франциско…
Дисклеймер: изначально я планировал оформить статью логотипами упоминаемых в ней компаний и программ, но на TDS запрещено обширное использование логотипов, поэтому я решил украсить содержание случайными изображениями и справочной информацией. Весело вспоминать, где мы в те времена находились и чем занимались.
Работа с поверхностными и глубокими копиями в Python
Перевод
В этой статье объясняется, как делать копии списков Python, массивов NumPy и датафреймов Pandas при помощи операций получения срезов, списочного индексирования (fancy indexing) и логического (boolean indexing). Эти операции очень часто используются при анализе данных и должны рассматриваться всерьёз, поскольку ошибочные предположения могут привести к падению быстродействия или неожиданным результатам.
Python кажется простым, но всякий раз, возвращаясь к его азам, ты находишь новые для освоения вещи. Здесь на ум приходит известное изречение Эйнштейна:
«Чем больше я узнаю, тем больше понимаю, как много я ещё не знаю».
Инженерия данных != инженерия ПО
Перевод
В последние годы мы видим, как инженерия данных всё больше сливается с индустрией DevOps. В обоих этих направлениях для доставки надёжных цифровых продуктов клиентам используется облачная инфраструктура, контейнеризация, CI/CD и GitOps. Это схождение в плане использования одного набора инструментов заставило многих думать, что инженерия данных не имеет значительных отличий от инженерии программного обеспечения. Как следствие, первая оказывается «несовершенной», поскольку дата-инженеры отстают с внедрением эффективных практик разработки ПО.
Но такая оценка ошибочна. Несмотря на то что в обработке данных и разработке ПО используется много общих инструментов и практик, между ними есть ряд существенных отличий. Игнорирование этих отличий и управление командой дата-инженеров по аналогии с командой разработки ПО является ошибкой. Так что цель данной статьи – подчеркнуть некоторые уникальные проблемы в инженерии данных и пояснить, почему в этой области иногда требуется особый подход.
Практическое руководство по реализации Observability в DevOps
Туториал
Перевод
В ходе этой статьи мы развернём следующий стек инструментов Observability (наблюдаемости) Grafana:
- Loki (логи);
- Promtail (агент логов);
- Tempo (трассировка);
- Prometheus (метрики);
- Cortex и Grafana Mimir (долгосрочное хранилище для данных Prometheus);
- Alertmanager (обработка оповещений Prometheus);
- Grafana (визуализация).
Приступим!
Каково это: строить бизнес в разработке, когда тебе 40
Блог компании RUVDS.com Разработка мобильных приложений *Разработка под Android *Карьера в IT-индустрии История IT
Перевод
Кадр из фильма «Перекрёсток» (1986)
Я родился в 1981-м, так что в прошлом году мне стукнуло 40. Если верить Википедии, это первый год поколения Y (миллениалов). Миллениалов обычно ассоциируют с претенциозным характером, и в моём случае так оно и есть. Родители кучу раз говорили мне, как тяжело им приходилось работать и идти на жертвы, чтобы обеспечить для меня достойное образование. Из этого следовало, что мне следует как можно лучше учиться и усердно трудиться, что я и делал (спасибо вам за совет, мама и папа ✝). И вот чему я научился. Это моя история о росте, обязанностях и пределах.
Я родился в 1981-м, так что в прошлом году мне стукнуло 40. Если верить Википедии, это первый год поколения Y (миллениалов). Миллениалов обычно ассоциируют с претенциозным характером, и в моём случае так оно и есть. Родители кучу раз говорили мне, как тяжело им приходилось работать и идти на жертвы, чтобы обеспечить для меня достойное образование. Из этого следовало, что мне следует как можно лучше учиться и усердно трудиться, что я и делал (спасибо вам за совет, мама и папа ✝). И вот чему я научился. Это моя история о росте, обязанностях и пределах.
Основные архитектурные шаблоны построения ПО
Блог компании RUVDS.com Системное администрирование *Серверное администрирование *Распределённые системы *
Перевод
Читать дальше →
Как НЕ надо строить надежные системы
Перевод
При проектировании системы знание анти-паттернов и подвохов зачастую оказывается более полезным, чем знание самих паттернов. Отталкиваясь от этой идеи, я решил написать данную статью, чтобы рассказать о факторах, которые, на мой взгляд, приведут к созданию ненадёжных систем. В её основе лежит мой собственный опыт проектирования преимущественно распределённых корпоративных приложений. Будет здорово, если ниже вы поделитесь собственным опытом и полезными идеями по теме.
Считыватель показаний цифровых штангенциркулей VINCA
Туториал
Перевод
Этот проект посвящён замене кабеля передачи данных VINCA DTCR-03 «RS232» для цифрового штангенциркуля на микроконтроллер ESP8266/ESP32 с поддержкой Wi-Fi.
Штангенциркуль VINCA DCLA-0605 поддерживает передачу данных на ПК только через проприетарный кабель. Можно, конечно, купить адаптер, но это не так интересно, поэтому я решил разобраться с принципом работы RS232 и реализовать собственное решение.