Search
Write a publication
Pull to refresh
51
0
Dmitry Spodarets @m31

Head of R&D at V.I.Tech

Send message

Параллельное программирование в Python при помощи multiprocessing и shared array

Reading time6 min
Views102K

Введение.


Python замечательный язык. Связка Python + NumPy + Matplotlib, на мой взгляд, сейчас одна из лучших для научных расчётов и быстрого прототипирования алгоритмов. Но у каждого инструмента есть свои светлые и тёмные стороны. Одной из самых дискутируемых особенностей Python является GIL – Global Interpreter Lock. Я бы отнёс эту особенность к тёмной стороне инструмента. Хотя многие со мной не согласятся.

Если кратко, то GIL не позволяет в одном интерпретаторе Python эффективно использовать больше одного потока. Защитники GIL утверждают, что однопоточные программы при наличии GIL работают намного эффективнее. Но наличие GIL означает, что параллельные вычисления с использованием множества потоков и общей памяти невозможны. А это достаточно сильное ограничения в современном многоядерном мире.

Один из способов преодоления GIL при помощи потоков на C++ был недавно рассмотрен в статье: Использование Python в многопоточном приложении на C++. Я же хочу рассмотреть другой способ преодоления ограничений GIL, основанный на multiprocessing и shared array. На мой взгляд, этот способ позволяет достаточно просто и эффективно использовать процессы и разделяемую память для прозрачного параллельного программирования в стиле множества потоков и общей памяти.
Читать дальше →

Использование Python в многопоточном приложении на C++ и настоящая многопоточность в Python

Reading time7 min
Views40K
Все более или менее знающие Python разработчики знают про такую жуткую вещь как GIL. Глобальный блокировщик всего процесса до тех пор пока Python выполняется в одном из потоков. Он даёт потоко-защищённость методами сравнимыми с садизмом, поскольку любая неявная блокировка в многопоточном приложении смерти подобна, всё что опиралось на параллельное выполнение, умирает в мучениях, раз за разом натыкаясь на блокировку GIL.
Известно что по сей день из-за этого скорбного факта программисты на C++ используют Python-обёртки по большей части лишь в однопоточных приложениях, а программисты на Python пытаются всех убедить, что им и так неплохо живётся.
Казалось бы, если поток порождён в C++, он не знает ни о каком GIL, используй Python без блокировок и радуйся. Радость разработчика однако закончится уже на втором потоке запросившем область глобальных переменных без блокировки.
Однако есть путь ведущий к светлому будущему!
Этот путь был изначально в таком языке как Perl, он же поддерживается в Си-API языка Python и я ума не приложу почему подобный механизм не включен в один из стандартных модулей Python! Способ по сути сводит использование различных под-интерпретаторов Python в разных потоках, причём используя свой GIL для каждого(!!!) без всякого шаманства и магии, просто последовательно вызвав несколько функций и стандартного набора Си-API языка Python!
Читать дальше →

Ищем деньги. Каталог инвесторов для стартапа

Reading time4 min
Views230K
UPD: получил инвестиции под свой проект в сфере обучения облачным технологиям

Здравствуйте уважаемые Хабравчане, особенно те, у кого есть идея своего стартапа! А вот с деньгами и осведомленностью похуже. Хочу Вам в помощь поделиться небольшой таблицей IT-инвесторов, которая была составлена для себя. Дело в том, что я также как и вы, обладаю минимум информации. Такие вопросы как: «к кому идти за деньгами», «как составить бизнес-план», и наконец «кому я вообще нужен со своей идеей» — давно стали навязчивыми.
Именно сейчас, после Новогодних праздников, самое время начать искать тех самых менторов, инвесторов, бизнес-ангелов, да и в целом зачитываться информацией на эту тему. Да, и у меня есть свой стартап, который перестал быстро развиваться и я активно ищу инвестора на дальнейшее развитие (О чем уже писал неделю назад).
Под катом таблица, со списком полезных ссылок, в помощь начинающим IT-компаниям.
Читать дальше →

Функциональное программирование на PHP

Reading time6 min
Views52K
PHP всегда был простым, процедурным языком программирования, черпавшим свое вдохновение из C и Perl. В PHP 5 появилась правильная объектная модель, но о ней вы уже все знаете. А вот в PHP 5.3 появились замыкания (closure), которые были серьезно улучшены в версии 5.4 (подсказка: $this теперь доступен по умолчанию).
Читать дальше →

Сверхкомпактная высокоинтегрированная x86-плата от AMD

Reading time1 min
Views46K

GizmoSphere и AMD представили высокоинтегрированную плату Gizmo Board для независимых разработчиков, производителей встроенных систем и гиков.

Gizmo Board представляет собой четырехдюймовый квадрат текстолита, заряженный двухъядерным x86-процессором G-T40E, который работает на частоте 1 ГГц, и GPU Radeon 6250. Эти два компонента в таком компактном дизайне обеспечивают приличную вычислительную мощь, правда всего 1 ГБ оперативной памяти DDR3, распаянной прямо на плате, возможно существенно ограничивают ее. Устройство способно работать под Android, Linux или Windows и снабжено следующими коммуникационными разъемами: SATA, Ethernet, USB, VGA, Audio, PCI, PCIe, а так же кучей выводов GPIO.
Читать дальше →

Архитектура highload проекта на примере веб-консультанта

Reading time4 min
Views27K
Наша команда занимается удаленным администрированием серверов и не так давно к нам обратились представители сервиса WebConsult с задачей построить легко масштабируемую серверную архитектуру, которая будет выдерживать серьезные нагрузки. Мы решили, что возможно это будет интересно пользователям Хабрахабра, которые так или иначе связаны с администрированием Highload проектов. Проект оказался быстрорастущим и имеющаяся на тот момент структура уже работала на пределе, поэтому нам пришлось в ускоренном режиме запускать новую.

image

Читать дальше →

Простой осциллограф за 1 день

Reading time7 min
Views180K
Здрасьте!
Ну нет у меня денег на нормальный осциллограф(и на нормальную камеру). Так что сильно не деритесь.
Но было 500 рублей на экран и простой 8-битный микроконтроллер.

Небольшое описание под катом.
Читать дальше →

Полный набор пакетов для разработки с помощью NodeJS

Reading time5 min
Views53K
Начал изучать NodeJS. Нигде не нашел актуальный стек мейнстримных библиотек (технологий) применяемых в node. Поэтому решил сам составить список.
Читать дальше →

Adobe бесплатно раздает Creative Suite 2 (или же не раздает?)

Reading time2 min
Views320K
Читайте UPD7, Adobe разместила официальный ответ в своем блоге.

Акция невиданной щедрости от Adobe. Они решили раздать хоть и устаревший, но все же полный Creative Suite второй версии. Доступны версии как под Mac (PowerPC) так и под Windows.

В комплекте:
  • Creative Suite 2
  • Acrobat 3D 1.0 for Windows
  • Acrobat Standard 7.0
  • Acrobat Pro 8.0
  • Audition 3.0
  • GoLive CS2
  • Illustrator CS2
  • InCopy CS2
  • InDesign CS2
  • Photoshop CS2
  • Photoshop Elements 4.0/5.0
  • Adobe Premiere Pro 2.0


Спешите, количество скорее всего ограничено. Получить можно тут. Для получения необходима регистрация.


Скачать можно тут

UPD: Сайт слег, ключи одни и те же для всех. Под катом ключи и ссылки на софт. А так же сообщение от одного из разработчиков, говорящее что данные ключи и установщики могут использоваться только теми у кого уже есть купленная лицензия на CS2.
Читать дальше →

Создание телеканала в интернете при помощи домашнего компьютера

Reading time5 min
Views112K
Загорелся я как-то мыслью создать собственный телеканал, хорошо порылся в интернете, и столкнулся с несколькими техническими проблемами не решаемыми или решаемыми но очень дорого для хобби обычного гражданина. И забросил эту идею буквально до средины прошлого лета пока не узнал что барьеров для создания собственного тв больше нет.

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

Итак если вы хотите организовать собственный тв канал в интернете нам понадобится список необходимых для этого программ:

1 вариант (бюджетный и с самой низкой нагрузкой на машину) — VLC media player, acestream (torrentstream). Все будет работать и под Windows и под Linux.

2 вариант (только под Windows) — VLC media player, acestream (torrentstream), XSplit Broadcaster и/или VH Screen Capture driver, а также по желанию Virtual Audio Cable.
Читать дальше →

Сетевые извращения: несколько одинаковых ip на разных интерфейсах маршрутизатора в FreeBSD

Reading time4 min
Views36K

Небольшое вступление. Сегодня попросили помочь в одной дружеской сети. Имеем: небольшой ISP, достаточно распределенной структуры, некоторая часть на радиоканалах, авторизации нет, есть привязка к mac и ip адресам. На одном из направлений перестало хватать полосы радиоканала, встала необходимость поднять второй канал и перекинуть часть пользователей на него. Кажется все просто и тривиально, но адреса и все настройки у клиентов заданы статически (да дурость, но работаем с тем что дали) и необходимо чтоб сеть остались рабочей у всех абонентов, без каких-либо телодвижений с их стороны.
Читать дальше →

Nginx+php-fpm+perl под Debian Squeeze

Reading time10 min
Views125K

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

В качестве теста решил перевести все свои сайты на nginx, до этого все работало на Apache из состава ZendServerCE. Интересно было пробовать насколько сложно будет полностью переехать на новый для себя веб-сервер, ведь используется несколько CMS (DLE, Wordpress, самописныеCMS).

Задачи:
  • базовая работа web сервера — обработка html;
  • запуск php скриптов;
  • корректная работа phpmyadmin для всех сайтов на сервере;
  • запуск cgi и pl скриптов;
  • использование кеширования и подбор оптимальных параметров для увеличения производительности.


Имеем свежеустановленный сервер Debian 6 в минимальной установке из netinstall. И так поехали.
Читать дальше →

Техническое задание на сайт

Reading time11 min
Views699K
UPD: Продолжение статьи с примером техзадания

Не так давно на хабре были две статьи (Согласно техническому заданию и А зачем мне ТЗ? Я и так знаю!) посвященные техническим заданиям. У меня обе статьи вызвали, мягко говоря, недоумение, в особенности статья «Согласно техническому заданию». На мой взгляд, это вообще вредная статья, которая приводит к неверному понимаю сути ТЗ. В связи с этим хочу выразить свой взгляд на этот вопрос. Не буду говорить обо всех тех. заданиях, слишком широка тема, но думаю смогу рассказать о ТЗ на сайт.

То описание технического задания, о котором речь пойдет ниже, не является пересказом ГОСТа, но скорее является его творческой переработкой, хорошо сдобренной горьким опытом. Описанный ниже подход к ТЗ не охватывает все аспекты сайтостроения, но задает общее направление.

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

1. Обоснование необходимости ТЗ


А зачем вообще нужно ТЗ на сайт? Заказчик говорит: «Нужен следующий сайт: каталог товаров, корзина, форма заказа, доставка, мы на карте, о нас, обратная связь». Что не ясно? Ничего необычного, всё обыденно и рутинно.

Разработчик отчетливо представляет, что нужно сделать, а сделать, в его понимании нужно вот так:



Далее много букв

Что нам стоит Git настроить!

Reading time3 min
Views107K

Дарова, хабр! (ничего оригинальнее не придумал)

Сомневаюсь что эта заметка тянет на полноценный пост, но я все же оставлю ее здесь. О чем же пойдет речь?

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

Так, мне уже немного надоело писать этот, по сути, бессмысленный вступительный текст, так что давайте уже начнем что-то делать.
Читать дальше →

12 инструментов, о которых необходимо знать каждому программисту, работающему с Big Data

Reading time5 min
Views35K
Проектируете ли вы систему для анализа Big Data или просто пытаетесь собирать и обрабатывать данные своих мобильных приложений, вам никак не обойтись без качественных инструментов для аналитики. Хорошей новостью является то, что в данный момент множество компаний выпускают на рынок инструменты, учитывающие потребности разработчиков и соответствующие их навыкам.
Читать дальше →

Простая проверка безопасности на ваших серверах

Reading time1 min
Views30K
Всем привет!

Предлагаю сделать простую проверку безопасности на ваших серверах.

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

Замечу, что например апачевский юзер не должен иметь прав на изменение и удаление апачевских логов.

С Новым Годом!
А как проверить то?

Ещё 10 тысяч бесплатных контроллеров Leap Motion для разработчиков

Reading time1 min
Views30K
В мае этого года американский стартап Leap анонсировал футуристический контроллер Leap Motion с распознаванием жестов в воздухе. Он превосходит Microsoft Kinect по многим параметрам. Например, точность распознавания жестов 0,01 мм, что в сто раз лучше, чем в Kinect. Контроллер подключается к компьютеру по USB.



Весь текущий год компания Leap распространяла SDK и рассылала образцы контроллеров разработчикам программных приложений. Всего было выслано 2000 штук. Сейчас, на финальном этапе тестирования, компания объявила об увеличении количества бесплатных образцов до 12000 и выпуске новой версии SDK.
Читать дальше →

Организация High-Load cluster с несколькими нодами

Reading time8 min
Views21K
В ответ на этот этот топик решил написать свои соображения по тому, как стоит строить кластер для высоко нагруженных проектов.

Топик очень хорош. Очень приятно почитать подобное с точки зрения разработчика.

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

За время работы у меня выработалось некое виденье идеального кластера для тяжеловесных проектов. Это:

— 2 WEB сервера

— 1 DB сервер

— 1 балансировщик нагрузки.

Совсем не ново, но соображения связаны именно с балансировщиком нагрузки
Читать дальше →

Erlang on Xen — запуск приложений Erlang на голом виртуальном железе

Reading time2 min
Views19K
Erlang on Xen позволяет запускать приложения Erlang без операционной системы, на голом гипервизоре Xen. От момента запуска VM до начала работы приложения проходит всего 50 миллисекунд — в 100-1000 раз меньше, чем нужно для запуска привычного сочетания Linux+Erlang, а размер образа машины составляет лишь около 1 Мб. Это позволяет добиться практически мгновенного масштабирования, вплоть до запуска экземпляра VM после того, как пришёл запрос от клиента.

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

Лежащая в основе Erlang on Xen виртуальная машина Ling показывает производительность, сравнимую со стандартной для Erlang VM BEAM (Bogdan/Björn’s Erlang Abstract Machine).
Читать дальше →

Skype-бот для голосовых конференций

Reading time2 min
Views30K


Вероятно, некоторые помнят сервис Skype Casts — публичные голосовые конференции, где каждый мог создать конференцию, которая анонсировалась на сайте skype.com. В 2008 году сервис был закрыт.

Сегодня единственная возможность хостить конференцию — держать запущенным Skype-клиент.
Это не удобно, потому как человек, который «держит» конференц-звонок не может принять входящий вызов, иначе конференция будет поставлена на удержание и никто в ней не сможет общаться. Если у хоста проблемы с интернетом — связь портится у всех.
К тому же хостить звонок в котором 10-15 участников существенно нагружает компьютер.

Мы пытались решить эту задачу держа запущенным Skype на Windows-сервере. Чтобы звонок не обрывался когда все участники кладут трубку — приходилось запускать две копии клиента и держать второго как участника конференции.
Но такая схема не очень стабильна, через 3-5 дней один из клиентов вылетает и звонок обрывается. Приходилось каждый переподнимать его вручную.

И вот наконец удалось найти стабльное и просто решение на основе skypekit позволяющие:

Постоянно держать звонок с помощью одной копии skypekit.
Если все участники конференции положили трубки, звонок перезапускается как /golive

Хостить бота на Linux-сервере без X-ов.
Десктопный клиент требует для запуска X-сервер. Skypekit можно запускать без него, даже на VPS.
Доступен под все платформы Windows/Linux/Mac

Управлять ботом через комманды в чате
Бот умеет разграничивать права доступа, различать комманды отправленные из основного чата конференции и из других чатов.
При желании можно написать аналог irc-шного eggdrop.

Инструкция

Information

Rating
Does not participate
Location
Одесса, Одесская обл., Украина
Date of birth
Registered
Activity