Pull to refresh
0
0
Макаров Роман @vollossy

User

Send message

PERICOLOR-1000: как был устроен «советский Фотошоп»?

Reading time8 min
Views13K

Отредактировать фотографию, убрать случайные дефекты, отрегулировать яркость и контрастность, повысить чёткость изображения и добавить утраченные фрагменты — что может быть проще? Если под рукой, конечно, имеется верный «Фотошоп»! Однако этот самый «Фотошоп» придумали в 1990 году, а вот фотографию изобрели чуть раньше: Нисефор Ньепс создал свою легендарную работу — «Вид из окна в Ле Гра» — в 1826-м. Но ведь как-то же решали эту задачу наши отцы, скажем, в 70-х и 80-х годах?

На «Хабре» уже публиковался короткий двухминутный фильм о «советском Фотошопе», с помощью которого музейные и научные работники ретушировали и восстанавливали редкие архивные снимки. Хабровчане опознали в нём аппаратно-программный комплекс PERICOLOR-1000 производства французской компании Numelec, но о самом этом наборе устройств известно очень мало — практически ничего. Сохранилась лишь обрывочная документация советского периода, представляющая собой не слишком качественный перевод с французского, в котором, ко всему прочему, используется совершенно непривычная современному айтишнику терминология. Мне стало жутко интересно выяснить как можно больше подробностей об этой удивительной системе, и я принялся целенаправленно искать информацию о ней. Результатами своих поисков я хочу поделиться с вами.
Читать дальше →
Total votes 113: ↑113 and ↓0+113
Comments14

Процедурная генерация бумажных снежинок

Reading time16 min
Views21K

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

Читать далее
Total votes 127: ↑127 and ↓0+127
Comments33

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

Reading time26 min
Views17K
В статье «Делаем современное веб-приложение с нуля» я рассказал в общих чертах, как выглядит архитектура современных высоконагруженных веб-приложений, и собрал для демонстрации простейшую реализацию такой архитектуры на стеке из нескольких предельно популярных и простых технологий и фреймворков. Мы построили single page application с server side rendering, поддерживающее просмотр неких «карточек», набранных в Markdown, и навигацию между ними.

В этой статье я затрону чуть более сложную и интересную (как минимум мне, разработчику команды поиска) тему: полнотекстовый поиск. Мы добавим в наш контейнерный рай ноду Elasticsearch, научимся строить индекс и делать поиск по контенту, взяв в качестве тестовых данных описания пяти тысяч фильмов из TMDB 5000 Movie Dataset. Также мы научимся делать поисковые фильтры и копнём совсем немножко в сторону ранжирования.

Читать дальше →
Total votes 27: ↑25 and ↓2+23
Comments1

Избавляемся от библиотек сохранения состояния фрагмента с помощью чистого kotlin

Reading time2 min
Views6.3K
image

Android библиотеки вспомогательной кодогенерации, такие как Android Annotations или мой любимый Icepick, которые разработчики привыкли использовать для упрощения написания, не готовы были сразу подружиться с Kotlin-кодом, так как большинство из них требует держать поля с модификатором package private. Конечно, ничего страшного писать

@JvmField @State
internal var carName: String? = null

вместо

@State String carName;

Но лучше вспомнить, что Kotlin к нам пришёл для упрощением кода, а не наоборот.
Читать дальше →
Total votes 11: ↑9 and ↓2+7
Comments6

Тавтологические тесты

Reading time7 min
Views20K


Привет! Меня зовут Артём, и большую часть своего рабочего времени я пишу сложные автотесты на Selenium и Cucumber/Calabash. Честно говоря, довольно часто я оказываюсь перед непростым выбором: написать тест, который проверяет конкретную реализацию функциональности (потому что это проще) или тест, который проверяет функциональность (потому что это правильнее, но намного сложнее)? Недавно мне попалась неплохая статья о том, что тесты реализации – это «тавтологические» тесты. И, прочитав её, я уже почти неделю переписываю некоторые тесты в другом ключе. Надеюсь, вас она тоже подтолкнёт к размышлениям.

Читать дальше →
Total votes 78: ↑77 and ↓1+76
Comments19

Обзор 98 одноплатных компьютеров. Часть 4

Reading time14 min
Views46K
Часть 1
Часть 2
Часть 3
Часть 4

Parallella



Компания/проект — Adapteva, Parallella.org
Обзор LinuxGizmos
Страница продукта
CPU — Xilinx Zynq-7020 или -7010 SoC (2x Cortex-A9 @ 667MHz plus FPGA); 16-core Epiphany RISC chip
Память — 1GB DDR3 RAM
Цена — $99

Плата предназначена для построения энергоэффективных серверных кластеров и исследований в области параллелизма, и построена на базе Zynq ARM/FPGA SoC работающего под управлением дистрибутива Ubuntu 15.04, названного Parabuntu, а также «доморощенного» 16-ядерного сопроцессора Epiphany. Порты включают microSD, GbE, micro-HDMI, и два USB. Четыре 60-pin разъёма служат для расширения ввода-вывода и связаны с FPGA и с чипом Epiphany. Adapteva также предлагает за $75 версию Micro-Server с Zynq-7010, у которой нет USB, HDMI, и расширений I/O. В прошлом году также был выпущен корпус Parallella Aluminum Case за $29.50 с теплорассеивающей пластиной, но сейчас его нет в продаже. Новый чип Epiphany-V, содержащий 4.5 млрд. транзисторов должен был выйти уже несколько месяцев назад.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments28

Легко ли положить корову на бок?

Reading time4 min
Views35K
Сразу возникает резонный вопрос — зачем класть корову на бок, если этот зверь и так устойчиво держится на ногах и хорошо в этом положении себя чувствует? Ответ дают ветеринары. Бич современного животноводства — болезни копыт крупно-рогатого скота, которые возникают из-за стойлового содержания. Коровам не хватает моциона, поэтому начинаются болезни копыт, которые грозят тяжелыми последствиями. Обрабатывать и лечить копыта удобнее с использованием специального устройства, которое позволяет положить корову на бок и провести все необходимые хирургические манипуляции. Но как это сделать, если вес хорошей коровы полтонны и более, а особого желания лежать на боку у коровы нет? Без оригинальных идей не обошлось, поэтому кому интересно — прошу под кат.
Читать дальше →
Total votes 74: ↑73 and ↓1+72
Comments79

Где распознают лица

Reading time6 min
Views5K
Компания VisionLabs, которая специализируется на технологии распознавания лиц, меньше чем за год стала одним из победителей конкурса Web Ready (с 2016 года — GoTech), вошла в список 12 финалистов программы Challenge UP!, организованной Intel, Cisco и Deutsche Telekom AG, а также привлекла 350 млн рублей инвестиций венчурного фонда Sistema Venture Capital.

Александр Ханин, генеральный директор компании, рассказывает о том, как технологии распознавания лиц внедряются в коммерческом секторе, какое их ждет будущее и как к ним относятся те, кто попадает в объектив, а также выделяет решения, которые могут составить им конкуренцию.
Читать дальше →
Total votes 14: ↑11 and ↓3+8
Comments5

IMHO, как писать на Хабр

Reading time10 min
Views38K


Акронис на прошлой неделе попросил меня рассказать про опыт на Хабре. После семинара я обещал выложить основные тезисы. Возможно, вы найдёте что-то полезное ниже.

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

При этом активных (голосующих) пользователей всего около 3 тысяч. Уровень знаний аудитории на входе в пост — в примерно 95% случаев низкий, в 5% — экспертный (разбиение оценочное). Проще говоря, есть люди, которые вообще не понимают, что вы хотите сказать (и их большинство), и есть те, кто разбирается в теме на голову лучше вас. Поэтому лучший пост — это тот, что проходит от ликбеза к хардкору. На площадке довольно высокий уровень агрессии (точнее, желания проверить материал на прочность). Ранее был экстремально высок. Средняя или низкая внимательность читателя (ранее была высокая).

Разумеется, это всё моё личное мнение, и можно поспорить. Сейчас постараюсь объяснить, почему я так считаю, и как это влияет на посты. Я основываюсь на опыте примерно 1500 постов за 6 лет, которые написал сам или помогал готовить.

Но начнём с численных показателей. Вот эти компании так или иначе вызвали мой интерес тем, что для них работают агентства или выделенный инхаусный пиар:


Данные тут на конец августа, я их к другому семинару (в Хабре для владельцев блогов) готовил.
Читать дальше →
Total votes 200: ↑182 and ↓18+164
Comments165

Основы реактивного программирования под Android на практическом примере

Reading time8 min
Views41K

1. Введение в реактивное программирование


Разрабатывая сложное приложение под Android со множеством сетевых соединений, взаимодействием с пользователем и анимацией — означает писать код, который полон вложенных обратных вызовов. И по мере развития проекта такой код становится не только громоздким и трудно понимаемым, но также сложным в развитии, поддержке и подвержен множеством трудноуловимым ошибкам.

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

RxJava — реализация ReactiveX с открытым исходным кодом на Java. Базовыми строительными блоками реактивного кода являются Observables и Subscribers. Подробнее с базовой основой можно ознакомиться в статье Грокаем* RxJava, часть первая: основы.

RxAndroid — расширение к RxJava, которое позволяет планировщику запускать код в основном и дополнительных потоках Android приложения и обеспечивает передачу результатов из созданных дополнительных потоках в основное для агрегации и взаимодействия с интерфейсом пользователя.
С целью более полного понимания основных принципов реактивного программирования рассмотрим практический пример для платформы Android. И начнем с настройки окружения для разработки.
Читать дальше →
Total votes 22: ↑17 and ↓5+12
Comments23

10 полезных сайтов с 2D ресурсами для игр

Reading time3 min
Views455K


С развитием HTML5 и мобильных платформ 2D-игры возвращаются в моду. Заниматься такими проектами, будь то браузерные игры, игры на телефон или для ПК, стало легче благодаря таким инструментам, как Unity, и онлайн-ресурсам с игровыми ассетами. Ниже представлен список из 10 лучших сайтов с 2D-ресурсами для игр – как платными, так и бесплатными.

Читать дальше →
Total votes 43: ↑41 and ↓2+39
Comments2

Проект Кронос и малоизвестная российская команда из Новосибирского академгородка Kronos Research Group (KRG)

Reading time11 min
Views25K
Речь пойдет о проекте, который еще раз опровергает тот предвзятый факт, что в области компьютерных технологий мы всегда отставали от Запада, а российские программисты занимаются «коленочным» программированием, и удел разработчиков разве что настраивать готовые системы под потребности нашего отечественного рынка.



Проект Кронос и малоизвестная российская команда из Новосибирского академгородка Kronos Research Group (KRG)


Во второй половине 1980 годов исследовательской группой Кronos были разработаны уникальные технологии, воплощенные в виде целого ряда законченных коммерческих продуктов, и ряд проектов в области космической и телекоммуникационной промышленности. С течением времени группа трансформировалась в три самостоятельные компании, известные как XDS, xTech Ltd. и ProPro Group.

Kronos Research Group (KRG) еще в середине 80 годов разработала отечественную 32-разрядную рабочую станцию, собственную UNIX-подобную операционную систему, реализовала программную и аппаратную части транспьютерной архитектуры для проекта МАРС (Модульные Асинхронные Развиваемые Системы).
читать дальше
Total votes 43: ↑40 and ↓3+37
Comments29

Ubuntu. Русификация консоли в 2016 году

Reading time14 min
Views82K
Для меня было некоторым откровением узнать, что в 2016 году, в одном из крупных дистрибутивов GNU/Linux существуют проблемы с локализацией. А точнее, с локализацией текстовой консоли. Кто пользуется текстовой консолью в 2016 году? Не надо забывать, что есть множество дистрибутивов, базирующихся на Ubuntu и не все из них используют графическое окружение. Назову два примера: Ubuntu Server и Clonezilla.

Выглядит проблема так:



И присутствует в текущем релизе Ubuntu 15.10 и в бета-версии Ubuntu 16.04. Тем, кому интересно узнать причины проблемы и как можно её решить — прошу под хабракат.
Читать дальше →
Total votes 58: ↑51 and ↓7+44
Comments88

Дорожная сеть OpenStreetMap

Reading time5 min
Views17K
Один из главных параметров карты — это информативность. Грубо говоря, это то, сколько информации можно считать с карты своими глазами. На самом подробном масштабе всё выглядит просто: места на экране много и нужно рисовать всё, что интересно пользователю (есть у нас в файле данных). Хотя тут остаётся важная задача — определить, что же всё-таки ему интересно. На обзорных масштабах всё сложнее: данных слишком много и надо выбрать те, которые повысят информативность и наглядность карты. Одновременно с этим карту нельзя перегружать. Если отобразить всё, то она станет нечитаемой. А пригодных для отображения на обзорном масштабе без предварительной обработки видов интересных пользователю объектов практически нет!

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


Читать дальше →
Total votes 32: ↑32 and ↓0+32
Comments29

Как ведут себя покупатели с Хабра

Reading time7 min
Views64K

Привет! Когда хабраэффект в декабре постиг мою книгу, у нас за два дня появилось несколько сотен заказов от людей. Особых людей. Колл-центр осторожно назвал новую для себя категорию «глубоко погружёнными в IT». До этого игры как-то не особо затрагивали самую красноглазую часть сообщества, а книга вот зацепила.

На второй день девушки расслабились и постарались получить удовольствие.

Расскажу, на что это похоже.
Читать дальше →
Total votes 199: ↑194 and ↓5+189
Comments101

Приглашаем на Moscow Python Meetup 18 марта

Reading time1 min
Views5.6K


18 марта, в пятницу, приглашаем на Moscow Python Meetup 33 в офис Mail.Ru Group. На встрече планируются следующие выступления спикеров:

— «QuickCheck в Python: проверка гипотез и поиск ошибок», Александр Шорин, Rambler&Co

Существуют три наисложнейшие проблемы в программировании: именование, кэширование и выход за границу массива. Проверка пограничных случаев поведения кода наиболее важна, но эта зона также наименее тестируема. Придумать и предугадать все возможные ситуации человеку тяжело, и порой мы что-то упускаем из виду. Вот было бы здорово, если бы тесты сами находили такие случаи, при которых код падает… Мечты? О том, как превратить их в реальность, пойдет речь в докладе.
Читать дальше →
Total votes 22: ↑19 and ↓3+16
Comments2

Badoo перешли на PHP7 и сэкономили $1M

Reading time16 min
Views104K
Badoo перешли на PHP7 и сэкономили $1M

Мы сделали это! Несколько сотен наших application-серверов переведены на PHP7 и прекрасно себя чувствуют. Насколько нам известно, это второй переход на PHP7 проекта такого масштаба (после Etsy). В процессе мы нашли несколько очень неприятных багов в системе кеширования байт-кода PHP7, но они исправлены. А теперь — ура! — благая весть для всего PHP-сообщества: PHP7 действительно готов к продакшену, стабилен, потребляет значительно меньше памяти и дает очень хороший прирост производительности. Ниже мы подробно расскажем, как мы перешли на PHP7, с какими трудностями столкнулись, как с ними боролись и какие результаты получили.
Читать дальше →
Total votes 169: ↑159 and ↓10+149
Comments304

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

Reading time11 min
Views60K
Друзья, мы с радостью продолжаем публикацию интересных материалов, посвященных самым разнообразным аспектам работы с 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))

Что бы это могло значить?
Читать дальше →
Total votes 33: ↑31 and ↓2+29
Comments23

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

Reading time8 min
Views69K
Регистрация на конференцию PG Day’16 в разгаре, а мы продолжаем публиковать перевод статей Hubert Lubaczewski об explain и его основных компонентах.

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

Читать дальше →
Total votes 28: ↑27 and ↓1+26
Comments4

Как это — быть разработчиком ПО для автомобилей. Часть 1/2

Reading time4 min
Views61K


Сталкиваясь с реалиями машиностроительной промышленности, большинство разработчиков программного обеспечения не справляются – уж очень узкоспециализированы продукты, с которыми приходится работать. Это вам не создание программ для интернет-пользователей, компьютеров и даже не мобильные приложения, а потому новички чувствуют себя, как Томас из фильма «Бегущий в лабиринте». Посмотрите, примерно, 50 секунд трейлера – и вы поймете, какой шок испытывают те, кто имеет дело с разработкой ПО для автомобилей впервые.

Все, что у вас есть — это множество терминов и инструментов, о которых вы понятия не имеете. Когда во время собеседования в одной автомобильной компании я поинтересовался, какую IDE они используют, интервьюеру мой вопрос, мягко говоря, не понравился. Я привык к Visual Studio, и наивно надеялся, что здесь для разработки встроенного программного обеспечения понадобится что-то аналогичное. Я даже не представлял, что меня ожидало! Просто море мелких и серьезных (по сложности) инструментов, которым нужна была очередная жертва.
Читать дальше →
Total votes 47: ↑37 and ↓10+27
Comments49
1
23 ...

Information

Rating
Does not participate
Location
Ставропольский край, Россия
Date of birth
Registered
Activity