Pull to refresh
27
0
Джони Дэп @Godless

Супермэн

Send message

PSNR и SSIM или как работать с изображениями под С

Reading time4 min
Views32K
imageВ данной статье я коснусь базовых принципов, как работать с изображениями. Для этого я выбрал библиотеку OpenCV. Она распространяется бесплатно, так что скачать ее не составит труда.
Когда мне на учебе дали задание написать две метрики для оценки различия двух картинок, в частности качества видоизмененной от исходной, меня это конечно все это немного смутило. Знания в программировании были, мягко говоря, не очень большими, как-никак был только на первом курсе. Благо, какую библиотеку выбрать сказали заранее, так что с этим труда не возникло. А вот как ее использовать это было уже на порядок сложнее, все, что я в основном смог нарыть в интернете, было на английском, хоть я его и знаю на уровне, что могу читать тех. литературу, вследствие огромности самой библиотеки, подходило мало. Отлично, что удалось, какие функции и как использовать, я смог потом уточнить у преподавателя. А требовалось только понять как обращаться к самой картинке, в частности к отдельным пикселям изображения. Кого заинтересовало, добро пожаловать под кат.
Читать дальше →

Как убрать все управляющие символы из строки — история одной бурной оптимизации

Reading time8 min
Views56K
Получилось так, что мне довелось оптимизировать код кластерной задачи, которая входила в состав Большого Кластерного Алгоритма и занималась весьма простой вещью: входной поток из n полей нужно было в зависимости от содержимого полей переразложить в выходной поток из m полей и почти успокоиться. Почти — потому что внутри полей были строчки произвольного вида, которые нужно было «очистить» — провести простейшую, казалось бы, операцию удаления всех управляющих символов из строки.

Оказалось, что эта операция совсем не такая «простейшая», как кажется, особенно если рассматривать её в современных языках с виртуальной машиной. Чуть ниже я покажу, как можно заменить решение в одну строчку на решение в пару десятков строчек, увеличив производительность алгоритма в ~10 раз. Сразу оговорюсь, что примеры будут относится к Java, но аналогичные рассуждения будут справедливы и для большинства других языков и виртуальных машин — в первую очередь, для .NET-based.
Читать дальше →

GStreamer: кодеки с привкусом Linux

Reading time4 min
Views40K
Вы когда-нибудь задумывались о том как работают Gnome-плееры, такие как Totem, Rhythmbox или Banshee? Наверное каждый из вас в новоустановленной Ubuntu, при попытке проиграть AVI-шку видел сообщение о необходимости установить дополнительный пакет gst-ffmpeg или gst-plugins-ugly. Под катом — моя попытка прояснить свет на то, как работает этот мультимедийный фреймворк и на что он способен.
Читать дальше →

Работа с виртуальными машинами KVM. Клонирование виртуальных машин

Reading time9 min
Views19K
Clone

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

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

Доработка китайской акустики (SVEN SPS-678)

Reading time3 min
Views190K
Привет, %username%. Сегодня я расскажу как немного апгрейдить твою компьютерную акустику. Сразу оговорюсь, что данное руководство не преследует цель сделать из твоей акустики B&W, а лишь в разумных пределах улучшить звучание при минимальных затратах времени и денег.

Итак, имеем такие вот колонки:


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

Little-Endian против Big-Endian

Reading time2 min
Views60K
Одно время приходилось постоянно работать с сетевыми данными и в особенности с заголовками сетевого и транспортного уровней модели OSI. Постоянно напрягал тот факт, что многие поля были в Big-Endian, а код выполнялся на архитектуре Little-Endian. Ну невозможно было постоянно вызывать ntohl(), htonl(), ntohs(), htons()...


Автор фото: Ciroduran, источник фото: flickr.
Читать дальше →

Как правильно выбирать клиентов

Reading time4 min
Views4.3K
image

Я работаю в сфере фриланса уже более 7 лет и успел побывать как в роли исполнителя, так и работодателя. Вы наверняка читали не один пост о подборе удаленных сотрудников. А я бы хотел представить «взгляд с обратной стороны», от лица фрилансера. Сегодня мы научимся подбирать себе клиентов.

Работать я рекомендую только на крупнейших фриланс-биржах, где в день публикуются сотни проектов. Например, free-lance.ru, weblancer.net и freelancejob.ru. Обязательно приобретите там pro-версии аккаунтов – обойдется это недорого, но без них вас и за человека-то не посчитают.
Читать дальше →

Ваш инструмент для коллективной работы над текстами

Reading time5 min
Views2.8K
Одна из частых и проблемных задач в ИТ-бизнесе и не только — коллективная работа над текстами. Причем потребность в решении такой задачи возникает во многих случаях:
  • формулирование идеи для стартапа и первичный анализ;
  • написание статей для блогов;
  • написание и согласование PR-текстов
  • составление пользовательской документации;
  • составление и согласование текстов договоров и коммерческих предложений;
  • формирование отчетов;
  • маркетинговые и иные исследования;
  • написание базового и периодического контента для сайта.

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

Дорабатываем видеокарту. Напильником

Reading time2 min
Views25K
Все мы слышали анектоты про мужиков, которые напильниками допиливали память чтобы в материнку влезла, не раз радовала нас эта шутка в разных вариациях… Однако, понадобилось мне тут на досуге кое-что посчитать (жесткачь полный, но об этом отдельная история) — в материнке у меня 3 штуки PCI-E x16 (и 2 x1), но нижние 2 стоят так, что туда только одну карту поставить можно (двухслотовую), как ни крути. А нужно 3 — на двух считать, а на третьей чтобы десктоп не тормозил.

Тут мой взор и упал на старичка, не раз меня выручавшего — nVidia 8400GS (как сейчас помню, хотели мне продать 8500GT, т.к. быстрее, но я был стоек :-) ), остается взять напильник, и попробовать запихнуть в x1 слот…

На хабре уже была статья (про то, как в слоте прорезается щель, и карта влазит) — но у меня чипсет с радиатором не дал бы так просто отделаться (также там не было про проблемы с определением карты биосом)… Потому я решил пойти единственно правильным путем — не курочить материнку, а срезать с карты разъем :-) Поехали!

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

Надёжный и безопасный Linux (наш ответ Чемберлену)

Reading time8 min
Views20K
После прочтения на Хабре недавних статей, посвящённых теме безопасности линукс систем, у меня возникло желание поделиться своей точкой зрения на этот вопрос.
Статья в целом рассчитана на начинающих администраторов, поэтому в ней изложены очевидные для хорошего специалиста вещи. Ценные дополнения и замечания приветствуются.
Копи-пейст выдержки из конфиг файлов я почти не буду приводить по трём причинам:
  1. Это приведёт с излишнему разрастанию статьи
  2. Маны и гугл никто не отменял
  3. Пункт 2 очень полезен для развития специалиста


Итак, как повысить безопасность и надёжность сервера (да и рабочей станции) на базе линукс?

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

Выпущена утилита ioping для тестирования отзывчивости дисковой подсистемы

Reading time1 min
Views5.4K
Случайно наткнулся на свеженаписанную утилиту ioping, написал её русский программист koct9i, пользователь k001 оформил в rpm для fedora 14 . ioping на google code.
А пользователь Grohman собрал ебилд, а LupineDreamer сделал деб-пакет i386 и x64 от magzimko.

Выглядит это дело примерно вот как:
$ ioping -i 0.2 -c 6 -s 1M -S 10M /tmp
1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=1 time=0.7 ms
1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=2 time=191.3 ms
1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=3 time=18.4 ms
1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=4 time=12.4 ms
1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=5 time=8.4 ms
1048576 bytes from /tmp (ext3 /dev/mapper/VolGroup00-LogVol00): request=6 time=8.2 ms
Читать дальше →

SkypeTab — вкладки для линуксового скайпа. Теперь под любые оконный менеджер и панель

Reading time2 min
Views1.5K
Устарело, см. свежую версию тут.

  • Если Вы не пользуетесь Linux или Skype, то этот пост не для Вас.
  • Если Вы настроили себе мост в Pidgin и теперь все 3.5 скайпоконтакта у Вас в этом списке, то этот пост не для Вас.
  • Если Вас устраивает то, как скайпоокна группирует KWin, и не смущает тот факт, что они как в таскбаре место все дружно занимали, так и занимают, то этот пост тоже не для Вас.
А вот если Вы активно пользуетесь скайпом, активно переключаетесь между несколькими конфами и хотите удобного нативного интерфейса, то рекомендую всё же ознакомиться.



Когда я разрабатывал предыдущую версию, я упёрся лбом в стену. Все попытки поправить косяки упирались в «умные» оконные менеджеры, лучше меня знающие, где должны находиться окна, и в кривые утилиты таскбара (да-да, gnome-panel в их числе), игнорирующие SKIP_TASKBAR_HINT, если он не был установлен до появления окна на экране. Знаете, я тогда сдался.

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

Работа с виртуальными машинами KVM. Введение

Reading time4 min
Views77K
Как и обещал, начинаю серию статей о том, как мы делали услугу аренды выделенных серверов на базе KVM.

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

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

Паттерны Command и Strategy с точки зрения функционального программирования

Reading time9 min
Views14K
В результате изучения функционального программирования в моей голове появились некоторые мысли, которыми я хочу с вами поделиться.
Читать дальше →

Dropbox — получаем дополнительные 9 Гб за один день

Reading time2 min
Views12K
Сервис Dropbox я начал использовать совсем недавно. Кстати, когда попробовал, долго недоумевал, почему я начал использовать его только сейчас, хотя слышал о нем давно — уж очень удобно все.

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

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

Учим ПК разговаривать

Reading time10 min
Views17K
Для тех, у кого дома есть стационарный компьютер аля «home сервер». Предлагаю вашему вниманию одну интересную функцию, которую под силу реализовать многим.

Типичные задачи для такой машинки:
  • Медиа-центр
  • Torrent-качалка
  • Файловым хранилище
  • Репозиторий
Возложим на него еще одну задачу — человеческим голосом сообщать нам разные интересные вещи…
Читать дальше →

Ограничиваем входящий и исходящий трафик в Linux

Reading time11 min
Views114K
В данной статье хочу рассказать, как я строил систему ограничения входящего и исходящего трафика в Linux.
Как и учет трафика, ограничение полосы пропускания в сети является очень важной задачей, хотя первое с каждым годом всё быстрее отходит на второй план, шейпинг трафика остается необходимой задачей каждого системного/сетевого администратора.
Читать дальше →

Apache 2 под наблюдением. Мониторинг загрузки системы веб-сервером

Reading time5 min
Views26K

Apache 2 под наблюдением



Вступление


Уже написано немало постов на просторах интернета, о мониторинге веб-сервера Apache. При вводе такой фразы, как «мониторинг нагрузки apache» в строке поиска Google, результаты поиска указывают на полезнейший модуль mod_status. А также о еще большей полезности этого модуля в сочетании с perl-расширениями. А если еще и немного пропатчить эти perl-расширения — то вообще супер система получается. Но настроив такую систему — системный администратор на этом, как правило, не останавливается, ему уже необходимо история нагрузки по серверу в целом, потом по каждому хосту, а далее и с точностью до скрипта. И чтоб потом сравнить можно было, а как раньше было, а как теперь нагрузка распределяется.
И вот здесь на помощь может прийти модуль для веб-сервера Apache — mod_performance.
Читать дальше →

Работа с GSM-модулем на примере SIM900D

Reading time9 min
Views152K
Не так давно друг предложил мне работу, связанную с созданием прошивки для микроконтроллера, который должен был связываться с сервером при помощи GSM-модуля SIM900D. Ранее я с программированием микроконтроллеров дела не имел, да и на C программировал последний раз в студенческие времена, но любопытство перевесило и я принялся за работу. Документация по данной железке присутствует в интернете, однако хороших примеров работы с TCP/IP в коде найти не удалось. Ничего не оставалось, кроме как обложиться документацией, запастись сигаретами и чаем и приступить к лавированию между граблями. А граблей оказалось немало. Собственно, поэтому я и написал эту статью — чтобы другим было легче.

Далее будет много AT-команд, не слишком много кода и очень много букв.
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Registered
Activity