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

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

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

Pillow-SIMD

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

Ускорение операций в 2.5 раза по сравнению с Pillow и в 10 по сравнению с ImageMagick



Pillow-SIMD — это «форк-последователь» библиотеки работы с изображениями Pillow (которая сама является форком библиотеки PIL, ныне покойной). «Последователь» означает, что проект не становится самостоятельным, а будет обновляться вместе с Pillow и иметь ту же нумерацию версий, только с суффиксом. Я надеюсь более-менее оперативно выпускать версии Pillow-SIMD сразу после выхода версий Pillow.


Почему SIMD


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


  1. Можно использовать более хорошие алгоритмы, которые дают такой же результат.
  2. Можно сделать более быструю реализацию существующего алгоритма.
  3. Можно подключить больше вычислительных ресурсов для решения той же задачи: дополнительные ядра CPU, GPU.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии5

«Космонавты» в Чили: как мы делали всю ИТ-инфраструктуру для четырех телескопов в Андах

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


Анды, высота 1564 метра, чистейший горный воздух, остро пахнущий соляркой. Голая каменистая площадка, четыре купола и три контейнера — купола для телескопов, а контейнеры поменьше — жилой для сторожа или инженеров, санузел, мастерская размером с санузел, плюс купол для стойки Циски и линейки аккумуляторов ИБП. Вокруг — забор из металлической сетки.

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

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

Простая работа, говорили они. Нужен сисадмин, говорили они. Карлос увидел нас, поздоровался и сразу предупредил на своём ломаном испанском:
— Видишь облака — беги. Если начнётся дождь, всё, совсем конец!

Но акцент мы не разобрали, поэтому его не поняли.
Читать дальше →
Всего голосов 118: ↑115 и ↓3+112
Комментарии35

Многопоточные вычисления в PHP: pthreads

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

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



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


Стоит отметить, что автор расширения, Joe Watkins, в своих статьях предупреждает, что многопоточность — это всегда не просто и надо быть к этому готовым.


Кто не испугался, идем далее.

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

О чем говорят тренды PHP в 2016-м году?

Время на прочтение5 мин
Количество просмотров25K
Если вы узнали эти несколько строчек кода ниже, значит потенциально вы в тренде последних лет развития PHP.

$client = new \Joli\ArDrone\Client();
// use API service (see below)
$client->start();




PHP-ar-drone является портом node-ar-drone, который позволяет пользователю управлять Parrot AR Drone на PHP. Пару лет назад, когда Адриен Баптист демонстрировал эту технологию, это могло показаться парашюткой :), но не сегодня.

Известные личности в мире PHP и не очень известные, многие сейчас в интернете обсуждают три основных темы – это PHP 7 против HHVM, асинхронное программирование с ReactPHP и PSR-7, а также микрофреймворки как middleware.

Во многом, споры о будущем PHP активизировались с появлением “прямого конкурента” движку PHP Zend Engine. Таким конкурентом стал HHVM — виртуальная машина для компиляции PHP кода в машинный, основанная на JIT, которая была разработана Facebook для решения все возрастающих нагрузок на сервера. Добившись повышения производительности удалось увеличить трафик на 500-600 процентов в сравнении с популярными версиями PHP на Zend 2. После чего, HHVM был отдан в свободное пользование в первую очередь сообществу WordPress. Именно это заставило основателей Zend Engine воспринимать HHVM, как прямого конкурента и к декабрю 2015-го выкатить 3-ю версию движка для PHP 7.
Читать дальше →
Всего голосов 23: ↑17 и ↓6+11
Комментарии12

Текстовый туториал по React.js и Redux на русском

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

(у учебника по Основам React вышло второе издание, Redux-учебник в процессе обновления)

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


Курс про Redux попал в официальную документацию.


Оба руководства бесплатны и выложены на gitbook (можно скачать PDF, ePub, mobi).


В текстах нарочно участвуют термины переведенные на русский (например, состояние), английские (state), либо английский термин написанный по-русски — стейт. Считаю это допустимым, и даже более того, удобным для читателя.

Читать дальше →
Всего голосов 37: ↑35 и ↓2+33
Комментарии22

Объясняя необъяснимое. Часть 2

Время на прочтение8 мин
Количество просмотров76K
Регистрация на конференцию PG Day’16 в разгаре, а мы продолжаем публиковать перевод статей Hubert Lubaczewski об explain и его основных компонентах.

В прошлый раз я писал о том, что показывает вывод explain. Теперь я хочу больше поговорить о разных типах «узлов» / операций, которые вы можете встретить в планах explain.

Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Комментарии4

Объясняя необъяснимое

Время на прочтение11 мин
Количество просмотров64K
Друзья, мы с радостью продолжаем публикацию интересных материалов, посвященных самым разнообразным аспектам работы с PostgreSQL. Сегодняшний перевод открывает целую серию статей за авторством Hubert Lubaczewski, которые наверняка заинтересуют широкий круг читателей.



Одна из первых вещей, которую слышит новоиспеченный администратор баз данных – «используй EXPLAIN». И при первой же попытке он сталкивается c непостижимым:

                                                        QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------
 Sort  (cost=146.63..148.65 rows=808 width=138) (actual time=55.009..55.012 rows=71 loops=1)
   Sort Key: n.nspname, p.proname, (pg_get_function_arguments(p.oid))
   Sort Method: quicksort  Memory: 43kB
   ->  Hash Join  (cost=1.14..107.61 rows=808 width=138) (actual time=42.495..54.854 rows=71 loops=1)
         Hash Cond: (p.pronamespace = n.oid)
         ->  Seq Scan on pg_proc p  (cost=0.00..89.30 rows=808 width=78) (actual time=0.052..53.465 rows=2402 loops=1)
               Filter: pg_function_is_visible(oid)
         ->  Hash  (cost=1.09..1.09 rows=4 width=68) (actual time=0.011..0.011 rows=4 loops=1)
               Buckets: 1024  Batches: 1  Memory Usage: 1kB
               ->  Seq Scan on pg_namespace n  (cost=0.00..1.09 rows=4 width=68) (actual time=0.005..0.007 rows=4 loops=1)
                     Filter: ((nspname <> 'pg_catalog'::name) AND (nspname <> 'information_schema'::name))

Что бы это могло значить?
Читать дальше →
Всего голосов 33: ↑31 и ↓2+29
Комментарии23

Я веб-разработчик и уже 10 дней не могу написать простейшее приложение

Время на прочтение6 мин
Количество просмотров139K
Предлагаю вашему вниманию перевод статьи "I’m a web developer and I’ve been stuck with the simplest app for the last 10 days".

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

В основном я занимаюсь full-stack web-разработкой. Периодически пишу бэкенд на Python или Ruby, иногда работаю с C#. Еще я пишу консольные утилиты на C++ и Node.js. Мне нравится Closure, я познакомился с web много лет назад, когда писал на Perl и PHP, а первые годы профессиональной разработки посвятил программированию на Java.

Когда я впервые встретился с Javascript, он в основном использовался для того, чтобы добавить на страничку "Текущее время". Это были девяностые, когда все хотели приправить свои странички так, чтобы пользователи могли оценить, как это клево: текущий день недели выводится динамически. А спустя какое-то время оказывалось, что Javascript может гораздо больше, и мы получаем полностью динамический HTML — DHTML!

Последнее время я разрабатывал довольно большие SPA с использованием разных фреймворков, а, когда торопился, то и с кучей грязного кода из которого то тут, то там торчала jQuery-лапша.

Десять дней назад я решил сделать небольшое SPA для себя — маленькая утилита, потенциальный pet-project. Работы дня на два-три. А последние полгода я работал над десктопным проектом на C#. Это была довольно скучная программулина для управления рабочими процессами: webservice-бэкенд и winforms на фронте.
Читать дальше →
Всего голосов 139: ↑132 и ↓7+125
Комментарии148

Опыт Angular + Typescript + Offline SPA проекта через год

Время на прочтение7 мин
Количество просмотров26K
imageХочу поделиться своим небольшом положительном опытом об проекте основанном на Angular + Typescript по прошествии года. Это далеко не новая связка, и я уверен, что уже многие её успешно используют. Конечно, уже многие ждут больше статей об React или Angular 2.0, но мне кажется, и этот опыт будет кому-то полезен.
Читать дальше →
Всего голосов 26: ↑21 и ↓5+16
Комментарии17

Pagekit: обзор модульной CMS на базе Symfony

Время на прочтение7 мин
Количество просмотров34K
Pagekit: обзор модульной CMS на базе Symfony

Знакомьтесь: Pagekit — это новая модульная CMS от немецкой студии-производителя шаблонов YOOtheme, основанная на Symfony компонентах, а также Vue.js, Webpack, Doctrine и других современных технологий. Pagekit задумывался как сочетание простоты в управлении с гибкими возможностями для разработки — того, чего не хватает известным CMS на базе PHP, и имеющим множество анахронизмов.
Читать дальше →
Всего голосов 19: ↑15 и ↓4+11
Комментарии28

Ember.js — прощай MVC (часть 1)

Время на прочтение6 мин
Количество просмотров27K
Предлагаю вашему вниманию перевод статьи Ember.js  —  Goodbye MVC (Part 1).

На конференции EmberConf 2015 Йегуда Кац и Том Дейл сообщили о скором появлении некоторых изменений в Ember 2. В частности, наибольшее внимание привлекли маршрутизируемые компоненты. Они позволяют признать контроллеры устаревшими и убрать их. Конечно, это встревожило многих пользователей Ember, так как Ember и Sproutcore всегда были клиентскими фреймворками MVC.
Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии22

Почему Go — это плохо продуманный язык программирования

Время на прочтение9 мин
Количество просмотров88K
Это перевод статьи юзернейма tucnak с Medium, которая получила обширное обсуждение на reddit.com/r/programming.

image
Окей, заголовок действительно несколько громкий, признаю. Cкажу больше: я прусь от громких заголовков, все из-за внимания. В этой блогозаписи я постараюсь доказать тот факт, что Go это ужасно продуманный язык (спойлер: это так). Я уже играюсь с Go уже на протяжении нескольких месяцев, первый helloworld собрал, кажется, в июне. Математик из меня никакой, но с тех пор прошло уже что-то около 4 месяцев и я даже успел залить на Github несколько репозиториев и собрать немного звезд! Стоит также упомянуть, что у меня совершенно нет опыта применения Go в продакшне, так что любые мои слова о «поддержке кода» или «деплое» не стоит принимать за единственноверную истину.

Я люблю Go, я полюбил его как только впервые попробовал его. Я потратил несколько дней на то, чтобы принять идиоматику, смириться с отсутствием дженериков, разобраться с откровенно странным способом обработки ошибок и вы знаете, всеми этими классическими проблемами, так или иначе связанными с Go. Я прочел Effective Go, много статеек из блога Dave Cheney, следил за всеми новостями из мира Go. Я даже могу сказать, что я достаточно активный участник сообщетсва! Я люблю Go и ничего не могу с этим поделать — Go просто замечательный. Тем не менее, я считаю, что Go это ужасный плохо продуманный язык, который делает совершенно не то, что «продает».
Читать дальше →
Всего голосов 140: ↑114 и ↓26+88
Комментарии289

Кому и зачем все-таки нужен Go?

Время на прочтение4 мин
Количество просмотров178K
image
Здарова! Короче, последнее время на хабре было много срачей вокруг Go: хороший-плохой, нужен-ненужен, много сравнивали с питоном, много сравнивали с растом, divan0 даже додумался перевести высер «Go vs Haskell» ну и в таком ключе. У меня сложилось ощущение, что из-за хайпа и агрессивного маркетинга языка некоторыми Иванами Данилюками очень мало кто понял, кому и зачем вообще Go может пригодиться, зачем его делали и стоит ли вообще его учить. Я тоже долгое время участвовал в этих срачах, принимая посменно сторону «фанов» языка и сторону оппозиции, но в конце-концов допер, в чем фокус. Сегодня немного потупил у дивана в посте и решил написать вот эту заметочку.

Давайте, пацаны, проходим в пост.
Читать дальше →
Всего голосов 208: ↑133 и ↓75+58
Комментарии252

Как команда инженеров Airbnb «разбила» основную БД проекта за пару недель

Время на прочтение3 мин
Количество просмотров12K
В нашем блоге на Хабре мы любим разбирать интересные кейсы, связанные с практической стороной использования виртуальной инфраструктуры стартапами. Помимо этого мы обращаем внимание и на зарубежный опыт — анализируем все, что связано с работой сложных ИТ-систем, инфраструктуры и железа.

Например, совсем недавно мы рассказывали:


Сегодня мы натолкнулись на технологический блог компании Airbnb и решили рассказать об опыте этой очень известной компании. По словам инженеров, каждый год трафик их сервиса растет в 3,5 раза, а его пик приходится на летний период. Этот факт безусловно радует начальство — бизнес процветает, но и ставит перед технологическими специалистами все новые задачи.

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

Использование comet сервера для реализации простого чата

Время на прочтение4 мин
Количество просмотров30K
Comet — любая модель работы веб-приложения, при которой постоянное HTTP-соединение позволяет веб-серверу отправлять (push) данные браузеру без дополнительного запроса со стороны браузера.

На схеме изображено место комет сервера в процессе работы.

На схеме изображено место комет сервера в процессе работы.

Читать дальше →
Всего голосов 12: ↑8 и ↓4+4
Комментарии12

Как я 8 месяцев переписывал свою криптовалюту с PHP на Go. Часть 1

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


«Не звони и не пиши мне больше!!!!» — пришла смс-ка от моей девушки Кати. Через пару часов я осознал, что теперь у меня появилась куча свободного времени и я решил переписать Dcoin на Go.


Читать дальше →
Всего голосов 100: ↑78 и ↓22+56
Комментарии58

AltegroSIM: модернизируем мобильную связь службы доставки

Время на прочтение5 мин
Количество просмотров5.3K
Прошел уже почти год с тех пор, как мы начали вести блог на Хабре. За это время было описано несколько способов интеграции наших AltegroSIM, виртуальных АТС, CRM и всего остального, облачного, что используется в бизнесе для автоматизации и оптимизации. Для нас самих стало открытием, насколько значимое место сотовая связь занимает в коммуникационном поле любой компании и насколько, даже самая небольшая, на первый взгляд, модернизация/оптимизация, способна упростить жизнь менеджеров, курьеров и их начальников. И дело даже не в прямых затратах на звонки, дело больше в бизнес-процессах. Порой, правильно выстроенная схема взаимодействия мобильных и офисных сотрудников и клиентов не только снижает размер ежемесячного счета от оператора связи, но и влияет на эффективность продаж в целом. Сегодня мы опишем любопытный кейс, который облегчает жизнь классического тандема “служба доставки — клиент”.


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

Произведения и копроизведения

Время на прочтение14 мин
Количество просмотров19K
Это пятая статья из цикла «Теория категорий для программистов». Предыдущие статьи уже публиковались на Хабре в переводе Monnoroch:
0. Теория категорий для программистов: предисловие
1. Категория: суть композиции
2. Типы и функции
3. Категории, большие и малые
4. Категории Клейсли

На КДПВ поросенок Петр заводит по одному трактору в каждый объект категории.

Следуй по стрелкам


Древнегреческий драматург Еврипид писал «Всякий человек подобен своему окружению». Это верно и для теории категорий. Выделить определенный объект категории можно только путем описания характера его взаимоотношений с другими объектами (и самим собой), где отношения — это морфизмы.

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

Этот процесс можно сравнить с поиском в сети. Запрос пользователя — это наш шаблон. Если запрос не очень специфичен, то в ответ поисковая система выдаст множество подходящих документов, только часть из которых релевантны. Чтобы исключить нерелевантные ответы, пользователь уточняет запрос, что увеличивает точность поиска. В конце концов поисковая система проранжирует совпадения и, если повезет, искомый результат будет в самом начале списка.
Читать дальше →
Всего голосов 19: ↑17 и ↓2+15
Комментарии18

Drupal 8. Обучающие материалы и не только

Время на прочтение5 мин
Количество просмотров38K
Друзья, вы мне, конечно [1] [2], не поверите, но вышел Drupal 8. В последнее время поступает достаточно много вопросов на тему того, что почитать, посмотреть, послушать для изучения восьмерки. Очень многие чувствуют себя не вполне уверенно и задаются вопросами: переходить на неё или не переходить, жив Drupal или нет, и всем прочим.

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

image

Читать дальше →
Всего голосов 14: ↑10 и ↓4+6
Комментарии2

Ionic Framework — работа с камерой

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

По результатам опроса из первого топика продолжаю серию статей об Ionic Framework (далее IF). Сегодня поговорим о работе с камерой устройства и в дополнение рассмотрим работу с localStorage. В качестве основы возьмем приложение из прошлого топика и добавим нужную функциональность.


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

Информация

В рейтинге
Не участвует
Откуда
Минск, Минская обл., Беларусь
Зарегистрирован
Активность