Search
Write a publication
Pull to refresh
2
0
Send message

Разбираемся с параллельными и конкурентными вычислениями в Python

Reading time21 min
Views65K

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

Прим. Wunder Fund: для задач, где не критичны экстремально низкие задержки — при сохранении и обработке биржевых данных, мы используем Питон, и естественно применяем описанные в статье подходы. Статья будет полезна начинающим разработчикам.

Мы увидим, что когда один человек одновременно делает несколько дел — это похоже на конкурентность, а когда несколько человек, работая бок о бок, заняты каждый собственным делом — это напоминает параллелизм. Эти ситуации мы разберём на простом и понятном примере закусочных, в которые люди заходят в обеденный перерыв. Такие заведения стремятся обслуживать клиентов как можно быстрее и эффективнее. Потом я покажу реализацию механизмов этих закусочных на Python, а в итоге мы сравним разные возможности одновременного «приготовления нескольких блюд», которые даёт нам этот язык, и разберёмся с тем, в каких ситуациях их применение наиболее оправдано.

А именно, я раскрою здесь следующие вопросы:

▪ Отличия конкурентности от параллелизма.
▪ Различные варианты организации конкурентного выполнения кода (многопоточность, модуль asyncio, модуль multiprocessing, облачные функции) и их сравнение.
▪ Сильные и слабые стороны каждого подхода к организации конкурентного выполнения кода.
▪ Выбор конкретного варианта организации конкурентного выполнения кода с использованием специальной блок-схемы.

Читать далее

Платежные технологии – просто о сложном. Часть 1

Reading time9 min
Views76K

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

Читать далее

Индексаторы (Indexers) в JavaScript

Reading time3 min
Views7K

В некоторых современных объектно-ориентированных языках есть понятие идексаторов – свойств, позволяющих работать с экземпляром класса как с массивом, используя [] нотацию. В этой статье я хочу продемонстрировать как это сделать на современном JavaScript.

Читать далее

PWA: управление service-worker'ом

Reading time5 min
Views7.3K

Прочитал я хорошую статью "Обновление вашего PWA в продакшене" и задался вопросом - а как часто при обновлении PWA нужно обновлять непосредственно сам service worker? Ведь что такое service worker по сути? "Прокладка" (прокси) между приложением, работающим в браузере, и внешними серверами, с которых это приложение тянет нужные ему ресурсы. По большому счёту, функционал service worker'а сводится к некоторому набору стратегий и пониманию того, к какому ресурсу какую стратегию применять и когда (я сейчас не рассматриваю push notifications и background sync, но изложенное в какой-то степени применимо и к ним).

То есть, код service worker'а более стабилен по сравнению с кодом приложения и во многих случаях для его "обновления" достаточно программно обнулить кэш-хранилище браузера и обновить "понимание того, к какому ресурсу какую стратегию применять" - обновить конфигурацию service worker'а. А для этого нужно приложению нужно иметь возможность каким-то образом управлять состоянием service worker'а и передавать ему данные, что осложняется тем, что приложение и service worker работают в различных потоках.

Под катом пример того, каким образом можно настроить управление service worker'ом из основного приложения при помощи Channel Messaging API.

Читать далее

9 команд для проверки информации о CPU в Linux

Reading time6 min
Views175K

Информация об аппаратном обеспечении CPU

Информация о CPU (Central Processing Unit. Центральный процессор) включает в себя подробные сведения о процессоре, такие как архитектура, название производителя, модель, количество ядер, скорость каждого ядра и т.д.

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

Читать далее

Я написал Scaffold-библиотеку Django, которая создает полнофункциональный REST API за секунды

Reading time3 min
Views4.3K

Меня зовут Абденассер, и сегодня я покажу, как пользоваться небольшой scaffold-библиотекой для создания готовых к использованию полнофункциональных REST API на Django за секунды из командной строки, которую я разработал на прошлой неделе.

Читать далее

Компиляция Python

Reading time7 min
Views102K

Предположим, вы разработали приложение или библиотеку на Python и уже готовитесь передать его / её  заказчику. И в этот момент появляются разные вопросы.

Во-первых, к вам прибегает озадаченный проджект-менеджер и говорит: «Мы решили не отдавать исходный код, ведь это наша интеллектуальная собственность. Придумайте что-нибудь, чтобы заказчик был доволен, а мы оставили у себя исходники».

Во-вторых, возникает вопрос окружения - хочется быть уверенным, что заказчик справится с установкой правильной версии Python и всех вспомогательных библиотек, но это не всегда простая задача. Было бы удобно упаковать приложение в автономный исполняемый файл.

И, наконец, хочется,  чтобы конечное приложение работало быстрее, чем в среде разработки.

И вот тут настало время скомпилировать Python-код.

Меня зовут Руслан, я старший разработчик компании «Цифровое проектирование». Сегодня я расскажу, как выбрать тот самый компилятор из множества доступных.

Читать далее

Секреты выбора онлайн-касс: подборка оптимальных вариантов

Reading time13 min
Views6.1K

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

Читать далее

Почему принцип программирования на уровне интерфейсов в большинстве случаев ошибочен и приводит к плохой архитектуре

Reading time3 min
Views41K

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

Думаю многие знают или слышали о принципах и советах в стиле "Программируйте на уровне интерфейсов, а не реализаций". Хотя в теории, данный принцип кажется полезным и его аргументация звучит логично, но при более глубоком анализе оказывается, что предпосылки лежащие в его основе не реалистичны. 

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

Читать далее

Сжатие данных LZW

Reading time6 min
Views26K

Если бы вы взглянули почти на любой файл данных в компьютере, просматривая символ за символом, то наверняка обратили бы внимание на множество повторяющихся элементов. LZW — это метод сжатия данных, который воспользовался этим повторением. Оригинальная версия метода была создана Лемпелем и Зивом в 1978 году (LZ78) и доработана Уэлчем в 1984 году, отсюда и аббревиатура LZW (Lempel, Ziv and Welch). Как и в любом адаптивном/динамическом методе сжатия, идея заключается в том, чтобы (1) начать с исходной модели, (2) читать данные по частям, (3) обновлять модель и кодировать данные по мере продвижения. LZW — алгоритм сжатия на основе "словаря".

Это означает, что вместо сведения в таблицу количества символов и построения деревьев (как при кодировании по Хаффману), LZW кодирует данные, обращаясь к словарю. Таким образом, чтобы закодировать подстроку, в выходной файл нужно записать только одно кодовое число, соответствующее индексу этой подстроки в словаре. Хотя LZW часто рассматривается в контексте сжатия текстовых файлов, его можно использовать для любого типа файлов. Однако, как правило, он лучше всего справляется с файлами где есть повторяющиеся подстроки, например, с текстовыми файлами.

Читать далее

Из-за чего Facebook стал глобально недоступен. Технический ликбез

Reading time6 min
Views130K

Прим. перев.: в этой статье инженеры онлайн-сервиса Cloudflare весьма популярно объясняют, что именно (технически) произошло с недоступностью Facebook минувшим вечером (4-го октября 2021), а также затрагивают тему того, как этот сбой повлиял на более глобальные процессы в интернете.

«Разве Facebook может упасть?» — задумались мы на секунду…

Сегодня в 16:51 UTC (в 19:51 MSK — прим. перев.) у нас был открыт внутренний инцидент под названием «Facebook DNS lookup returning SERVFAIL». Мы решили, что это с нашим DNS-ресолвером 1.1.1.1 что-то не так. Однако к моменту размещения соответствующего обновления на публичной статус-странице стало ясно, что здесь что-то серьёзное.

Социальные сети уже разрывались от сообщений о том, что быстро подтвердили и наши инженеры: Facebook и связанные с ним сервисы WhatsApp и Instagram действительно упали. Их DNS-имена больше не ресолвились, а IP-адреса инфраструктуры были недоступны. Выглядело так, как будто кто-то буквально выдернул кабели разом во всех их дата-центрах, отключив от интернета.

Как такое вообще возможно?

Читать далее

Как работает JavaScript [Объясняю визуально]

Reading time4 min
Views46K

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

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

Читать далее

Какую СУБД выбрать и почему? (Статья 2)

Reading time4 min
Views11K

После публикации статьи “Какую СУБД выбрать и почему? (Статья 1)” ко мне поступили справедливые комментарии о том, что я не упомянул такие типы СУБД, как Time Series и Spatial. В этой статье я кратко опишу их и добавлю еще два типа — Search engines и Object-oriented (объектные).

Читать далее

Посмотрите, как Google отслеживает ваше местоположение. С Python, Jupyter, Pandas, Geopandas и Matplotlib

Reading time8 min
Views50K

В отделе продаж можно услышать аббревиатуру ABC: Always Be Closing, что означает заключение сделки с покупателем. Последнее десятилетие породило еще одну аббревиатуру ABCD: Always Be Collecting Data

Мы используем Google для почты, карт, фотографий, хранилищ, видео и многого другого. Мы используем Twitter, чтобы читать поток сознания одного президента. Мы используем Facebook для обмена сообщениями и… ну, почти все. Но наши родители пользуются им. Мы используем TikTok… Понятия не имею, зачем. 

На самом деле, оказывается, что большинство из вышеперечисленного бесполезно… Ничего подобного, суть в том, что мы их используем. Мы их используем, и они бесплатны. В экономике XXI века, если вы не платите за товар, вы являетесь товаром. 

Итак, короче говоря, я хотел выяснить, насколько корпорация Alphabet, владелец Google, обо мне знает. Крошечная доля, я посмотрел на историю геолокации. Я никогда не отключал службы определения местоположения, потому что ценил комфорт выше конфиденциальности. Плохая идея.

Читать далее

Создание компонента Toggle

Reading time12 min
Views22K

В рамках серии материалов GUI Challange, в данной статье Адам Аргайл демонстрирует один из способов создания очень маленького, но трудоёмкого компонента переключателя toggle с учётом цветовой схемы и предпочтений пользователя.

Читать далее

Как выучить английский язык быстро и с удовольствием

Reading time8 min
Views29K

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

В статье собраны самые полезные ссылки для изучения английского языка с удовольствием!

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

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

Итак, для начала, важно усвоить главный принцип: пусть английский язык будет встроен в Вашу обычную жизнь.

Читать далее

Самый простой шаг к глобальной устойчивости биосферы

Reading time6 min
Views6.8K

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

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

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

Третьи сомневаются в экономической или энергетической целесообразности некоторых подходов в целом. Например, я недавно переводил статью о целесообразности водорода на транспорте (и в энергетике).

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

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

Читать далее

Разрезать металл — воздухом? Почему бы и нет…

Reading time7 min
Views23K

Во все времена, с самого момента своего появления, металл был окружён различными проблемами: начиная от его добычи и заканчивая последующей обработкой. Особенно эта проблема усугубилась в период промышленной революции, когда всё более возрастающий темп жизни побуждал производства подстраиваться под него и искать такие способы обработки, которые бы позволяли производству быть конкурентоспособным в условиях рыночной среды.
Читать дальше →

Компьютерное зрение в ритейле: как мы научили нейронную сеть распознавать товары по фото

Reading time5 min
Views6.4K

Мы запускаем серию статей про CV  в ритейле. За несколько лет работы с технологиями искусственного интеллекта у нас появилось много опыта и накопилось несколько успешных кейсов внедрения компьютерного зрения в реальный бизнес. И нам есть чем поделиться: распознавание ценников, прайсов сигарет, разметка полок. В этой статье расскажем про то, как мы научились распознавать товары на фото, как отличить водку от яйца и не дать нейронке принять тебя за древесный уголь.  

Читать далее

Information

Rating
6,234-th
Registered
Activity