Как стать автором
Обновить
12
0
Артем Игликов @arti_kz

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

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

Второе Соревнования по Программированию

Время на прочтение3 мин
Количество просмотров2.1K
Уважаемые, коллеги!

Приглашаем всех желающих принять участие во втором соревновании по программированию CUBRID it!, которое на этот раз мы организовываем с 1-го по 21-е июня включительно на сайте http://www.cubrid.org/cubrid_it.

Задача соревнования состоит в нахождении самого оптимального решения для SQL задачи, используя либо язык программирования Java, либо PHP. В качестве СУБД требуется использовать CUBRID версии 8.3.1. Все! Больше никаких условий!

Готовое решение можно будет отправлять уже с 1-го числа июня на той же странице. В 12 часов ночи по Гринвичу будут доступны как сама задача, так и форма для отправки решений.
Информация о больших призах ждут Вас под катом!
Всего голосов 7: ↑4 и ↓3+1
Комментарии11

Как не надо разрабатывать на Zend Framework

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

Здравствуйте! На днях подвернулась работа — дописать сайт на zend framework. Программист, который начал разрабатывать этот проект не успевал в сроки, не выполнял требования заказчика и в итоге его заменили. Открыв первый раз исходный код я ужаснулся от того количества ошибок, которые допускал разработчик и ведь он утверждал заказчику что является опытным специалистом. Далее я попытаюсь рассказать про некоторые ошибки, которые были им допущены. Данный материал будет полезен начинающим ZF-программистам, в качестве инструкции того как делать нельзя
Читать дальше →
Всего голосов 98: ↑76 и ↓22+54
Комментарии75

Оффлайновые карты всего мира

Время на прочтение2 мин
Количество просмотров6K
MapsWithMe У меня давно была мечта написать карты. Удобные карты, которым не нужен доступ в Интернет, с актуальными данными, быстрые и работающие на любом устройстве. После работы инженером в Google Maps эта мечта только усилилась и в какой то момент переросла в конкретные действия.

Если это будет интересно, я как нибудь напишу, как я уходил из цюрихского Гугла, и при этом все вокруг делали квадратные глаза и как потом на чистом энтузиазме мы с друзьями почти год писали проект.
Читать дальше →
Всего голосов 234: ↑225 и ↓9+216
Комментарии208

LogLog — находим число уникальных элементов

Время на прочтение5 мин
Количество просмотров29K
Здравствуй, Хабр! Мы с тобой уже побаловались фильтрами Блума и MinHash. Сегодня разговор пойдёт о ещё одном вероятностном-рандомизированном алгоритме, который позволяет с минимальными затратами памяти определить примерное число уникальных элементов в больших объёмах данных.

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

Способ всем хорош, но требует относительно большой объём памяти для своей работы, ну а мы с вами, как известно, неугомонные гении эффективности. Зачем много, если можно мало — примерный размер словарного запаса упомянутого выше Шекспира, можно вычислить используя всего 128 байт памяти.

Кажется невозможным?
Всего голосов 81: ↑80 и ↓1+79
Комментарии30

GitHowTo — тур обучения гиту на русском

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

Спешу поделиться радостной новостью о запуске проекта GitHowTo — интерактивного тура-обучалки основам Git.

За основу были взяты идеи gitimmersion.com, но переведены на русский язык и немного изменены под реалии не-ruby разработки, поэтому спешите любить и жаловать — githowto.com!

Буду чрезвычайно рад любым замечаниям и пожеланиям к проекту.
Всего голосов 179: ↑178 и ↓1+177
Комментарии68

А не сделать ли нам домашнюю файлопомойку на 90 терабайт?

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


Собственно идея летает давно и начала свои корни с публикации компании backblaze как сделать дешевое петабайтное хранилище.

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

Но мы не ищем простых путей, всем кому интересно как это сделать своими руками прошу подкат.
Читать дальше →
Всего голосов 174: ↑148 и ↓26+122
Комментарии366

Быстрое умножение многочленов при помощи преобразования Фурье — это просто

Время на прочтение9 мин
Количество просмотров78K
Добрый вечер.
Этот пост посвящён быстрому преобразованию Фурье. Будут рассмотрены прямое и обратное преобразования (в комплексных числах). В следующей части я планирую рассмотреть их применения в некоторых задачах олимпиадного программирования (в частности, одна задача про «похожесть» строк), а также рассказать про реализацию преобразования в целых числах.
БПФ — это алгоритм, вычисляющий значения многочлена степени n=2k в некоторых n точках за время O(n⋅logn) («наивный» метод выполняет ту же задачу за время O(n2)). За то же время можно выполнить и обратное преобразование. Так как складывать, вычитать и умножать массивы чисел гораздо легче, чем многочлены (особенно умножать), БПФ часто применяется для ускорения вычислений с многочленами и длинными числами.
Читать дальше →
Всего голосов 112: ↑105 и ↓7+98
Комментарии38

Захват видео с сетевых камер, часть 2

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

В первой своей статье «измерение расстояния до объекта и его скорости» я рассмотрел захват изображений с веб-камер через Video4Linux2 и через DirectX. В следующей статье «захват видео с сетевых камер, часть 1» я рассмотрел как работать с сетевыми Motion-JPEG камерами. Сейчас я поведаю Вам о захвате изображений с сетевых RTSP камер, в частности поток Motion-JPEG по RTSP.

Задача эта более сложная нежели Motion-JPEG по HTTP, так как необходимо больше действий, больше подключений, но взамен мы получаем большую гибкость, скорость, функциональность и даже некую универсальность. Честно говоря, RTSP для простых задач избыточен, но я не сомневаюсь, что найдутся ситуации, где он будет необходим.

Приступим
Всего голосов 64: ↑63 и ↓1+62
Комментарии39

Кое-что о Wi-Fi

Время на прочтение7 мин
Количество просмотров302K
Недавно побывал на конференции на тему “Построение беспроводных сетей”. Не смотря на то, что довольно длительный период работаю администратором, мне не каждый день приходится разворачивать беспроводные сети. Спешу с вами поделиться некоторыми нюансами. Всех заинтересованных приглашаю под кат.

image
Читать дальше →
Всего голосов 176: ↑168 и ↓8+160
Комментарии62

Нестандартные размеры документа

Время на прочтение1 мин
Количество просмотров8.7K
Допустим, мне надо оформить слайд, но не хочется использовать beamer. Первым же камнем преткновения на пути моей великой мысли станет размер документа. Так уж вышло, что в опциях article, report, book и прочих не предусмотрены опции 1024x768, 1280x1024 или 1366x768. Что делать?
Читать дальше →
Всего голосов 22: ↑20 и ↓2+18
Комментарии17

Фикс падения производительности при копировании/закачке файлов в Ubuntu

Время на прочтение4 мин
Количество просмотров20K
Уже не помню, когда начились проблемы с производительностью при копировании файлов, но тогда я этому не придал большого значения так, как копировал файлы редко. Относительно недавно в моем распоряжении появилось высокоскоростное подключение к сети Интернет и теперь я часто копирую/качаю большие файлы и проблема падения производительности для меня стала очень актуальной.

Поверхностный гуглеж не дал результатов и я начал копать глубже, оказалось, что проблемы высокой нагрузки CPU есть у многих убунтоводов, если не у всех, а решение данной проблемы быстрым поиском не находится, поэтому я решил написать небольшой how-to по устранению высокой нагрузки на процессор при копировании файлов.
Читать дальше →
Всего голосов 93: ↑88 и ↓5+83
Комментарии36

Скажем нет падению Adobe Flash в веб-браузерах на 64-битных платформах

Время на прочтение1 мин
Количество просмотров2.4K
Работая в Ubuntu 10.10 (AMD64), слушаю Grooveshark, а потому спонтанные поломки в приложениях Adobe Flash были для меня пыткой. Когда выкинут приносящий зло nspluginwrapper — не ясно. Починим же сами за 1 минуту:
Читать дальше →
Всего голосов 72: ↑59 и ↓13+46
Комментарии54

«Пластилиновая» архитектура

Время на прочтение5 мин
Количество просмотров13K
Я думаю, любой руководитель проекта или ведущий программист хотя бы однажды сталкивался с ситуацией, когда код приложения вдруг оказывался совершенно запутанным, непонятным, а люди, его поддерживающие, в ответ на просьбу исправить ошибку или добавить новую функциональность отправлялись «в астрал» на несколько дней, прихватив с собой изрядную долю бюджета и, возвращаясь, предъявляли ещё более запутанный код с исправленной ошибкой, но добавленной парой других.

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

Большинство провальных проектов обладают одной закономерностью. Они абсолютно лишены структуры. Я называю архитектуру таких систем «пластилиновой».
Читать дальше →
Всего голосов 102: ↑93 и ↓9+84
Комментарии124

Сервер из образа: DHCP + TFTP + Initrd + OpenVZ

Время на прочтение6 мин
Количество просмотров7.1K
Приветствую. Нередко в крупных проектах используются довольно большие наборы одинаковых серверов, имеющих одинаковую программную конфигурацию(читай — корень). И нередко у администраторов этих машин возникает необходимость поддерживать их в симметричном состоянии — одинаковые наборы пакетов, конфигов, и т.д. и т.п. В качестве одного из решений этой проблемы предлагается загрузка таких машин по сети, дабы они имели общий корень и держали его в RAM, а хранимые данные(например /var/www для веб-серверов) держали на жестких дисках, монтируемых после загрузки. Об этом и поговорим.
Читать дальше →
Всего голосов 57: ↑52 и ↓5+47
Комментарии6

Сервер на стероидах: FreeBSD, nginx, MySQL, PostgreSQL, PHP и многое другое

Время на прочтение16 мин
Количество просмотров40K
Нравится мне эта картинка, у меня, вот никогда такие красивые графики в какти не получались =(

Введение


С момента написания мной предыдущей статьи по оптимизации этой связки прошло довольно много времени. Тот многострадальный Pentium 4 c 512Мб памяти, обслуживающий одновременно до тысячи человек на форуме и до 150,000 пиров на трекере уже давно покоится на какой-нить немецкой, свалке, а клуб сменил уже не один сервер. Всё сказанное в ней всё ещё остаётся актуальным, однако есть вещи которые стоит добавить.
Статья большая, так что будет поделена на логические блоки:

0. Зачем вообще что-то оптимизировать?
  
1. Оптимизация ОС (FreeBSD)
  1.1 Переход на 7.х 
  1.2 Переход на 7.2
  1.3 Переход на amd64
  1.4 Разгрузка сетевой подсистемы
  1.5 FreeBSD и большое кол-во файлов
  1.6 Softupdates, gjournal и mount options
  
2. Оптимизация фронтенда (nginx)
  2.1 Accept Filters
  2.2 Кеширование
  2.3 AIO
  
3. Оптимизация бэкенда
  3.1 APC
  3.1.1 APC locking
  3.1.2 APC hints
  3.1.3 APC fragmentation
  3.2 PHP 5.3
  
4. Оптимизация базы данных
  4.1 MySQL 
  4.1.1 Переход на 5.1
  4.1.2 Переход на InnoDB
  4.1.3 Встроеный кеш MySQL - Query Cache
  4.1.4 Индексы
  
4.2 PostgreSQL
  4.2.1 Индексы
  4.2.2 pgBouncer и другие.
  4.2.3 pgFouine
  
4.3 Разгрузка базы данных
  4.3.1 SphinxQL
  4.3.2 Не-RDBMS хранилище
  4.4 Кодировки
  4.5 Асинхронность
  
Приложение. Мелочи.
  1. SSHGuard или альтернатива.
  2. xtrabackup
  3. Перенос почты на другой хост
  4. Интеграция со сторонним ПО
  5. Мониторинг
  
 6. Минусы оптимизации

Кому что-нибудь из этого списка интересно, жмём сюда...
Всего голосов 375: ↑368 и ↓7+361
Комментарии105

Как уменьшить вероятность ошибки на этапе написания кода. Заметка N1

Время на прочтение15 мин
Количество просмотров4.5K
Check Miranda IM
Я добрался до кода широко известного клиента мгновенных сообщений Miranda IM. Вместе с различными плагинами это достаточно большой проект, размер которого составляет около 950 тысяч строк кода на C и C++. И, как в любом солидном проекте с историей развития, в нем имеется немалое количество ошибок и опечаток.

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

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

Эффективная обработка фотографий в Gimp

Время на прочтение2 мин
Количество просмотров46K
Прочитав недавно на Хабре статью по обработке фотографий в Photoshop, захотелось рассказать, как можно cделать практически то же самое без использования таких монстров, как Photoshop, и без перезагрузок в windows.
Читать дальше →
Всего голосов 131: ↑116 и ↓15+101
Комментарии107

VLC как служба Windows

Время на прочтение3 мин
Количество просмотров25K
После долгого блуждания в гугло-мире я все же нашел решение своей проблемы. Проблема состояла в следующем — компания (вернее непосредственно начальство) узнала о существовании IP-камер, и в срочном порядке приняла решение купить и установить их в офис. Выбор пал на D-link DCS 2102-2121 так как больше ничего не нашли (дорогущие axis — одна стоила как 3 таких). Все бы не плохо, но было одно условие вывести картинку с них в великую сеть.
Читать дальше →
Всего голосов 57: ↑47 и ↓10+37
Комментарии47

История одной оптимизации

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


Аннотация


Статья раскрывает особенности высокоуровневых оптимизаций вычислительных алгоритмов на Java на примере кубического алгоритма перемножения матриц.

Шаг 0. Установи точку отсчета!


Определимся с окружением:
  • Hardware: 1-socket/2-cores Intel Core 2 Duo T7300 2GHz, 2Gb ram;
  • Java: HotSpot(TM) Client VM (build 17.0-b17, mixed mode, sharing);

Читать дальше →
Всего голосов 96: ↑87 и ↓9+78
Комментарии84

Pythonic

Время на прочтение7 мин
Количество просмотров37K
Итак, что же это значит, когда кто-либо говорит, что foo выглядит как pythonic? Что значит, когда кто-либо смотрит в наш код и говорит, что он unpythonic? Давайте попробуем разобраться.

В Python-сообществе существует неологизм pythonic, который можно трактовать по разному, но в общем случае он характеризует стиль кода. Поэтому утверждение, что какой-либо код является pythonic, равносильно утверждению, что он написан в соответствии с идиома Python’a. Аналогично, такое утверждение в отношении интерфейса, или какой-либо функциональности, означает, что он (она) согласуется с идиомами Python’a и хорошо вписывается в экосистему.

Напротив, метка unpythonic означает, что код представляет собой грубую попытку записать код какого-либо другого языка программирования в синтаксисе Python, а не идиоматическую трансформацию.

Понятие Pythonicity плотно связано с минималистической концепцией Python’a и уходом от принципа «существует много способов сделать это». Нечитабельный код, или непонятные идиомы – все это unpythonic.

При переходе от одного языка к другому, некоторые вещи должны быть «разучены». Что мы знаем из других языков программирования, что не будет к месту в Python’e?
Читать дальше →
Всего голосов 106: ↑99 и ↓7+92
Комментарии63

Информация

В рейтинге
Не участвует
Откуда
Казахстан
Дата рождения
Зарегистрирован
Активность