Архив за 25 сентября 2013 - 7

image
Для поиска талантливых программистов написал тестовое задание C++. Вкратце, сложность задачи состоит в передачи дополнительных данных в функцию сравнения, которая используется сортировкой из стандартной библиотеки.
Из википедии:

Функциональный объект (англ. function object), так же функтор, функционал и функционоид — распространённая в программировании конструкция, позволяющая использовать объект как функцию. Часто используется как callback, делегат, либо как замена лямбда-выражениям в нефункциональных языках программирования.

Данное тестовое задание не требует знания решения сходу, хотя опытный программист, думаю, запросто так и сделает. Разрешается использовать интернет. Я без подсказки на stackoverflow не мог найти красивое решение. Цель задания — понять, умеет ли соискатель читать код, находить решения поставленных задач.
Читать полностью »

image

AlterWiki — новый полезный сайт для любителей викисреды. AlterWiki позволяет произвести поиск по всем российским вики-проектам, посмотреть, в каких именно проектах есть необходимая страница. Также смотрите описание на самом сайте.

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

Генератор случайных котов за 8 шагов
Доброго времени!
Я всегда очень любил котов, и любил их рисовать, особенно морды кошачьи. Чуть изменишь форму, линию — и совершенно другое выражение, другое настроение. У меня листы А4 были изрисованы под предел. И тут мне недавно стукнуло в голову — а что если сделать генератор морд котов? Чтобы нажал на кнопочку и тебе выкинется случайная морда кота. Как можно более случайная и интересная. Давайте же посмотрим, как же сделать такую штуку.
Прошу под кат, любители котов.
Читать полностью »

в 9:22, , рубрики: bash, linux, pipe, метки: , ,

Pipe — что это?

Pipe (конвеер) – это однонаправленный канал межпроцессного взаимодействия. Термин был придуман Дугласом Макилроем для командной оболочки Unix и назван по аналогии с трубопроводом. Конвейеры чаще всего используются в shell-скриптах для связи нескольких команд путем перенаправления вывода одной команды (stdout) на вход (stdin) последующей, используя символ конвеера ‘|’:

cmd1 | cmd2 | .... | cmdN

Например:

$ grep -i “error” ./log | wc -l
43

grep выполняет регистронезависимый поиск строки “error” в файле log, но результат поиска не выводится на экран, а перенаправляется на вход (stdin) команды wc, которая в свою очередь выполняет подсчет количества строк.

Логика

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

Размер буфера начиная с ядра версии 2.6.11 составляет 65536 байт (64Кб) и равен странице памяти в более старых ядрах. При попытке чтения из пустого буфера процесс чтения блокируется до появления данных. Аналогично при попытке записи в заполненный буфер процесс записи будет заблокирован до освобождения необходимого места.
Важно, что несмотря на то, что конвейер оперирует файловыми дескрипторами потоков ввода/вывода, все операции выполняются в памяти, без нагрузки на диск.
Вся информация, приведенная ниже, касается оболочки bash-4.2 и ядра 3.10.10.

Простой дебаг

Утилита strace позволяет отследить системные вызовы в процессе выполнения программы:

$ strace -f bash -c ‘/bin/echo foo | grep bar’
....
getpid() = 13726                   <– PID основного процесса
...
pipe([3,  4])                       <– системный вызов для создания конвеера
....
clone(....) = 13727                <– подпроцесс для первой команды конвеера (echo)
...
[pid 13727] execve("/bin/echo",  ["/bin/echo",  "foo"],  [/* 61 vars */] 
.....
[pid 13726] clone(....) = 13728    <– подпроцесс для второй команды (grep) создается так же основным процессом
...
[pid 13728] stat("/home/aikikode/bin/grep",   
...

Видно, что для создания конвеера используется системный вызов pipe(), а также, что оба процесса выполняются параллельно в разных потоках.
Читать полностью »

На Хабре уже не раз упоминались методы оптимизации процесса инвентаризации ИТ инфраструктуры предприятия. Я же хочу осветить задачу с другой стороны, а именно со стороны маркировки оборудования.
На мой взгляд, важно не только иметь инвентарный номер ОС, но и всегда иметь возможность получить исчерпывающую информацию об объекте, находясь рядом с ним, такую как: МОЛ, дата ввода в эксплуатацию, сетевые параметры и т.д.
Читать полностью »

Audio Pirate

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

Дисклеймер:
Да, этот пост написан под впечатлением от обсуждения «антипиратского» закона в РФ. Но я не стою ни на чьей стороне, я даже не живу в этой стране. Я просто хочу, чтобы вы имели всесторонний взгляд на проблему.

1. Музыкальные пираты работают за идею.

image

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

Хотелось бы также подчеркнуть, что многие пираты покупают цифровые релизы не за свои деньги. Это значит, что они работают в связке с кардерами — людьми, которые уводят чужие карточные аккаунты. Т.е. профит почти чистый: ты лишь тратишь время на покупку/обработку релизов, а также деньги на раскрутку своего пиратского сайта.Читать полностью »

Писал для коллег — программистов, далёких от предметной области, которые действительно, искренне не понимали, что такого сложного в базе данных. Они хотели хранить критические данные в простых файлах. Я задавал им каверзные вопросы о надёжности, скорости и одновременном доступе, они пытались «на ходу» придумать хитрые решения. В конце они трезво оценили требуемый объём кода и поняли, что им придётся написать свой маленький ORACLE или, хотя бы, MySQL. Затем я рассказал им, как были решены эти проблемы в DB ORACLE, их поразило изящество некоторых алгоритмов. Лекция понравилась, и я решил выложить её в открытый доступ.

Читать полностью »

Компания PNY Technologies представила две новые графические карты, разогнанные в заводских условиях: GeForce GTX 770 OC и GeForce GTX 780 OC. К их общим достоинствам производитель относит поддержку технологии GPU Boost 2.0, наличие памяти GDDR5, а также использование фирменных охладителей. Младшей модели достался кулер с двумя вентиляторами, старшей — с тремя. Конечно, новые видеокарты поддерживают те же технологии, что и другие модели серии GeForce GTX, включая Nvidia TXAA, FXAA, Adaptive Vertical Sync и 3D Vision Surround. Карты оснащены видеовыходами DVI (два), HDMI и DisplayPort.

Сегодня китайская группа компаний Alibaba Group объявила о том, что приобрела за неназванную сумму сервис Kanbox (клон Dropbox) и отныне предоставляет владельцам аккаунтов по 10 Тб облачного хранилища бесплатно.

Kanbox — солидный сервис, как утверждают создатели, которым в Китае пользуются около 15 млн человек. Имеются как десктопные клиенты, так и мобильные (Windows, Mac, iPhone, Android), позволяющие пользователям загружать файлы на сервис и синхронизировать устройства между собой.

Для получения 10 Тб требуется иметь учётную запись на Kanbox и установить мобильное приложение Laiwang (есть и для Android и для iOS) — китайский мессенджер для мобильной социальной сети. Учётную запись в Laiwang надо будет связать с Kanbox, после чего и будет выделено место.

UPD: да, механизм работает (правда, прецедент из Китая), инструкция ожидается в скором времени.

Подтверждение

image

Читать полностью »

Хотите верьте, а хотите — нет, но до старта 12-ой конференции Ruby-разработчиков RailsClub’Moscow 2013 осталось всего лишь 3 дня!

Билеты по-прежнему можно заказать здесь, а познакомиться с участниками мероприятия по-прежнему можно в нашем блоге. Дельные мысли, принципы/убеждения и даже планы на выходные мы вытянули из наших делегатов посредством интервью: Эрни Миллер, Эрик Ходл, Джереми Эванс, Линда Лиукас, а также Пётр Зотов и Дмитрий Воротилин уже успели побеседовать с нами. На очереди — откровения от Фреда Чанга — технического директора Dressipi и обладателя Ruby Hero Award 2012

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

image

Когда и почему ты начал программировать?
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js