Pull to refresh
65
0
Игорь Аникеев @Coder

User

Send message

Олимпиадное хобби. Разминка

Reading time3 min
Views5.5K
В качестве хобби, я решаю олимпиадные задачки по программированию. Это помогает отвлечься от повседневных проблем, позволяя на часок другой уйти от мира в собственный астрал. Мой мозг, благодаря этому хобби, находится в постоянной спортивной форме.

Я решил, что неплохо было бы поделиться с Вами алгоритмами, размышления, результатами, а также получить качественную критику моих путей решения задач.
Будем брать задачу, разбирать ее по частям, анализировать, выдумывать различные пути решения, выбирать лучший, а потом нести на суд «великих судей». Для многих, по моему мнению, такой час разгрузки будет очень полезным, а кому-то просто будет интересно посоревноваться и придумать свой алгоритм.

Задачи я буду брать с сайта http://uva.onlinejudge.org/, где располагается достаточно большая коллекция задач на любой вкус, и там же можно проверить свое решение. Выбирать буду случайным образом и всегда доводить начатое до финального решения, которое ознаменуется оценкой «Accepted» (Принято). Для решения этих задач нам потребуется знание одного из языков программирования: c, c++, java, pascal, а также терпение, логика и базовое знание английского языка, т.к. условия задач мы получаем на английском языке.

Итак, начнем мы с простой задачки из набора «Для новичков» для разминки, чтобы проверить свои способности.
Читать дальше →

Фильтры: смерть регуляркам и правильная валидация

Reading time2 min
Views26K
Фильтры данных впервые появились в PHP 5.0, и по какому-то стечению обстоятельств остались незамечеными большй частью кодеров. Наверное, это можно объяснить отсутствием чего-нибудь подобного в PHP4, а может просто мануал плохо читали. Я тоже узнал про них случайно… А ведь эта замечательная функция позволяет избавиться от запутаных, и подчас некорректных, регулярных выражений, при выполнении типичных задач.
Мануал по фильтрам находится здесь. Приведу только основную информацию и пару практичных примеров.
Читать дальше →

PDF с точки зрения программиста

Reading time8 min
Views80K
Я имею дело с PDF не только как пользователь, а, прежде всего, как разработчик софта, умеющего его читать и писать (возможно, вы сталкивались с продуктами компании ABBYY, работающими с PDF – ABBYY FineReader, ABBYY PDF Transformer). Я предполагаю, что вы прочитали статью habrahabr.ru/company/abbyy/blog/105006 и далее пишу только про некоторые особенности и ограничения PDF, которые больше интересны продвинутым пользователям. Никаких сложных технических деталей при этом не буду касаться, так что программистам, желающим научиться читать или писать PDF, лучше сразу перейти к чтению спецификацию версии 1.7 со страницы www.adobe.com/devnet/pdf/pdf_reference_archive.html :)
Читать дальше →

Фотографии как контент

Reading time5 min
Views13K
Якоб Нильсен
Перевод статьи известнейшего американского специалиста по юзабилити Якоба Нильсена (Jakob Nielsen):

Наши исследования по движению глаз выявили существенные различия в подходе людей к изображениям на сайтах:
  • Некоторые типы изображений полностью игнорируются. Это типично для больших качественных изображений, которые используются только в декоративных целях.
  • Другие изображения рассматриваются тщательно, как важный контент. Фотографии товаров и фото реальных людей (в противоположность фото моделей из фотостоков) зачастую попадают именно в эту категорию.

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

apache+nginx+gzip_static+yuicompressor

Reading time6 min
Views15K
В этой статье я опишу принципиальные различия Apache и Nginx, архитектуру фронтэнд-бэкэнд, установку Apache в качестве бэкэнда и Nginx в качестве фронтэнда. А также опишу технологию, позволяющую ускорить работу веб-сервера: gzip_static+yuicompressor.
Читать дальше →

Linux HA на основе Pacemaker

Reading time5 min
Views126K
В своей предыдущей статье я вкратце коснулся темы создания High Availability решения на основе демона heartbeat. Однако, как выяснилось, что-то сложнее чем 2-х узловой кластер на нем делать не так уж удобно. Изучение проблемы вывело меня на след проекта Pacemaker. Его-то мы сейчас в кратце и рассмотрим.
Читать дальше →

Определение кодировки текста в PHP — обзор существующих решений плюс еще один велосипед

Reading time7 min
Views105K
Столкнулся с задачей — автоопределение кодировки страницы/текста/чего угодно. Задача не нова, и велосипедов понапридумано уже много. В статье небольшой обзор найденного в сети — плюс предложение своего, как мне кажется, достойного решения.

1. Почему не mb_detect_encoding() ?


Если кратко — он не работает.
Подробнее - под катом

Как подружить PHP с консолью Google Chrome

Reading time2 min
Views21K

Внимание

Статья содержит информацию об устаревшей версии PHP Console.

О новой версии PHP Console 3.0 читайте тут.


PHP Console 1.0





Речь пойдёт об одном чудном расширении для Google Chrome, которое позволяет проксировать вывод ошибок и дебаг сообщений из PHP в консоль Google Chrome, а также отображать их в виде всплывающих popup-уведомлений.
Читать дальше →

Первый взгляд на Activiti

Reading time4 min
Views22K
activiti
На этой неделе пришлось столкнуться с Activiti — новым workflow движком для Java, и так как тема эта еще не обсуждалась на Хабре, решил поделиться впечатлениями. Сразу скажу — впечатления немного печальные, но об этом под катом

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

Gimpbox — Однооконный Gimp

Reading time1 min
Views3.6K


Сегодня я хотел бы рассказать Вам о замечательном дополнении для Gimp'а под названием Gimpbox.

Многим уже порядком поднадоел многооконный режим Gimp'a и пока все в ожидании стабильного релиза 2.8 где разработчики обещали сделать возможность выбора между многооконным и однооконным режимом, китайские разработчики подумали как можно решить эту проблему малой кровью и сделали дополнение Gimpbox, смысл которого заключается в том что бы объединить все окна Gimp'а в одно окно как это сделано например в Adobe Photoshop, Paint.net и других редакторах.

Gimpbox является frontendом для Gimp'а, т.е. он будет работать только с уже установленным Gimp'ом.

Под катом инструкция по установки.
Читать дальше →

Stackless Python и Concurrence

Reading time8 min
Views15K
Перед тем, как перейти собственно к возможностям Stackless и Concurrence, рассмотрим самый простой способ написать сетевое приложение, обрабатывающее несколько одновременных соединений:

socket()
bind()
listen()
accept()
fork() ->
    read()
    write()
    ...
    close()

Под каждое новое входящее соединение процесс создаёт свою копию через fork(). Это чрезвычайно накладный способ, у которого, к тому же, есть сложности с синхронизацией между процессами. В простом случае они решаются через создание каналов (pipes) между родительским и дочерним процессами и сериализацию данных. В более сложных потребуются примитивы межпроцессной синхронизации. Вспомним ещё про затраты на создание, разрушение и переключение процессов. Это очень ресурсоёмкие операции — как по памяти, так и по вычислительной мощности. Поэтому обработать много одновременных соединений будет весьма сложно.
Читать дальше →

Вёрстка c «Ушами»

Reading time2 min
Views9.3K
Очень часто фантазия человека, разрабатывающего макет сайта, не ограничивается шириной 1024px, при этом требуется, чтобы сайт выглядел достойно на всех разрешениях и соответствовал полёту мысли дизайнера.

Проблему можно представить графически так:
image

Задача вёрстки заключается в следующем:
  • — независимо от разрешения (размера она браузера), информативная часть сайта находилась посередине;
  • — справа и слева должны остаться графические блоки (уши), причём эти уши должны быть видны только при увеличенном размере экрана браузера, а при уменьшенном не уместившаяся часть должна прятаться (в идеале, чтобы ещё горизонтальной полосы прокрутки не было);;
  • — страница должна быть резиновой от 680px до 1000px.

Работает для FF3, FF4, IE8 и почти для Opera.
Читать дальше →

Рабочий день за 3 часа. Анализ и сортировка информации

Reading time4 min
Views6.2K
Инструменты системы управления временем, описанные в прошлом посте, дают возможность свести все дела, происходящие в вашей жизни и требующие участия, в одно место. Это, как, наверное, понятно — списки дел, разбитые на категории DAY, LATER, CONTROL. Работой со списками предшествует работа с накопителями.

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

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

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

Нестандартное использование услуги Multifon в «железном» варианте

Reading time2 min
Views5.6K
С подключением новой услуги Multifon от Мегафона стало возможным принимать и совершать звонки не только на мобильный телефон, но и на различные интернет устройства с поддержкой протокола SIP, о чем уже писали уважаемые Хабровчане.
Но мы решили протестировать данную услугу не с программами для SIP телефонии, а с «железным» устройством. И в качестве подопытного устройства была выбрана относительно новая модель телефона от компании Cisco со звучным названием iPhone или WIP310-G2.

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

Грабли при верстке HTML писем

Reading time3 min
Views104K
Довольно часто наши клиенты устраивают регулярные рассылки с новостями. Почти всегда их не устраивают текстовые рассылки или простое оформление HTML рассылок. Наши дизайнеры вовсю креативят, а мы потом набиваем шишки при верстке их макетов с корректным отображением во множестве почтовых клиентов.

Ниже список встретившихся нам особенностей и способы их разрешения (как то упорядочить их мне не удалось, поэтому всё идет единым списком)
Читать дальше →

Рабочий день за 3 часа. Инструменты GTD

Reading time4 min
Views15K
Начало здесь.

Накопители



Прежде чем описывать инструменты, необходимо показать карту информации.

  1. Вне человека — хаотичная.
  2. В накопителе — хаотичная, но собранная в одном месте.
  3. В человеке, его записях, файлах — отсортированная.


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

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

Многие знают, что за такими запросами стоит не действительно срочная потребность, а сумбурность мысли. Человек не всегда может осознать, к какому же сроку ему нужны те или иные данные? Зачастую, они кричат «срочно!» только потому что им хочется , а не потому что они действительно нуждаются.

Чтобы справиться с хаосом, Дэвидом Алленом был придуман простой инструмент — накопитель.
Читать дальше →

Tableless justification или inline-blocks revisited

Reading time6 min
Views6.8K
Все давно знают про кроссбраузерную реализацию инлайн-блоков, но не все знают, что данная реализация не такая уж и кроссбраузерная и полная, как кажется. Что, как и почему рассмотрим на простом примере: сделаем меню, пункты которого равномерно распределены по всей ширине экрана.
Читать дальше →

Как уместить полный рабочий день в 3 часа

Reading time3 min
Views9.7K

Вступление


C системой Аллена меня познакомили около двух лет назад. Начинал пользоваться вариантом Васи Кислого с помощью HTC Touch Pro, но глючность девайса сильно мешала освоить систему, а сам «Успеватель» не давал необходимого уровня понимания. С GTD пришлось на время расстаться.

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

Попытки вести мобильную версию системы в Nokia E63 с помощью «Активных заметок» привели к покупке книги Дэвида Аллена, переработке статьи В. Кислого, приобретению стабильно работающего, хоть и старенького HTC P3400 (а потом и более современного продукта от HTC) и введению бумажной, физически ощутимой части этой системы.

Итогом переработки стала строгая вариация за моим авторством на тему Дэвида Аллена в обработке Васи Кислого. Благодаря ей, работа стала занимать не больше 3-х часов в день. Но за это время я успеваю сделать действительно много.

Следуя этим принципам, я прихожу на работу к 11-12 часам, работаю плотно и не отвлекаясь до 15 часов. В 15 часов ухожу в зал потаскать железки, прихожу в офис к 17-30, прорабатываю за полчаса все накопившееся с 15 часов. И еду домой.

Пока я не разобрался и не адаптировал под себя систему Аллена, мой рабочий день не ограничивался 8 часами в офисе. Приходилось работать еще вечером дома.

Кому интересно, прошу под кат.
Читать дальше →

The True Mapping Party. Как мы делали карту Великих Лук

Reading time8 min
Views3.1K
Velikie Luki Mapping Weekend.png
11-12 сентября прошла встреча «Великие Луки Mapping Weekend», где картографы-любители из России и Беларуси рисовали карту Великих Лук с нуля. Это не первый опыт такого рода, но впервые люди массово собрались исключительно во славу OSM. До этой недели событие не освещалось, догорая тихо, как и всё, что происходит в русскоязычных картах. Но как же, в таком случае, быть последователям, кто хочет организовать встречи в своих городах? Посвятив вечер будущим активистам картодвижения, Илья Зверев рассказывает историю организации Mapping Party по всем правилам, которые удалось придумать.

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

Information

Rating
Does not participate
Date of birth
Registered
Activity