Search
Write a publication
Pull to refresh
17
0
Ilia Agafonov @Tairesh

Backend Developer

Send message

Путь к серебряной медали на Russian AI Cup 2012

Reading time14 min
Views19K
Расскажу о своем участии в Russian AI Cup. Я — участник с ником Hohol, занявший второе место в финале.

У меня уже имелся некоторый опыт в написании бота для управления танком. Дело в том, что я вот уже пять лет участвую в ACM ICPC. Четвертьфинал нашего региона проходит в стенах Саратовского Государственного Университета, который, напомню, является одним из организоторов Russian AI Cup. На четвертьфинале каждый раз проводится неофициальный игровой конкурс Code Game Challenge. Суть все та же — напишите бота, который всех порвет. И хотя боты оказываются то волшебниками в шляпе и с посохом, то гоночными автомобилями, то суднами на воздушной подушке — мы всегда звали их танчиками.

Так как я участвовал в CGC аж пять раз, конкурс особого энтузиазма у меня поначалу не вызвал.

Но познакомившись с правилами поближе, решил, что конкурс мне все же интересен.
Читать дальше →

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

Reading time5 min
Views38K
Проверить принадлежность точки невыпуклому многоугольнику за линейное время совсем не сложно. Один из самых распространенных методов — выпустить луч и посчитать число точек пересечения. Однако, при этом нужно аккуратно рассматривать случаи, когда точки многоугольника попадают на луч. Отсюда естественно возникает вопрос, как рассмотреть эти случаи проще всего?
Дать волю пефекционизму

Генерируем QR-код на PHP

Reading time2 min
Views82K

QR-code, уже давно распространен повсеместно, во всех сферах человеческой жизни. Вроде такая популярная вещь, а нормальной библиотеки (Open Source) на PHP — нет. Товарища deltalab, очень напрягла эта проблема и он решил переписать имеющиеся в наличии С библиотеки ibqrencode от Kentaro Fukuchi, на более привычный ему язык PHP.
Читать дальше →

Доброфон — бесплатные телефонные консультации по любым вопросам

Reading time7 min
Views31K


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

Мы попробовали решить эту задачу и сделали Доброфон – горячую линию куда можно позвонить в любое время и поговорить с реальным человеком тет–а–тет. Операторы разделены на категории в зависимости от квалификации и пола.
Все, разумеется, бесплатно и создано исключительно для эстетического удовольствия.

В Доброфон можно позвонить через:

  • Skype
  • Стационарный телефон — доступны прямые номера во многих странах и шлюзы в крупных городах
  • Приложение вконтакте
  • WebRTC-виджет (работает только в браузере Chrome)
  • Flash-виджет
  • Веб-интерфейс Gmail и Google Talk
  • iNUM
  • SIP


В статье будет описана техническая сторона организации call-центра и тонкости подключения всех внешних линий.

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

Код CSS «с душком»

Reading time8 min
Views107K
Недавно Крис Койер отвечал на вопросы читателей Smashing Magazine. Один из вопросов был о том, как распознать код CSS с «душком»:
Как можно определить, что ваш CSS пованивает? Какие признаки указывают на то, что код неоптимален или что разработчик писал его спустя рукава? На что вы смотрите в первую очередь, чтобы определить, плох или хорош код?

Я подумал, что могу расширить и дополнить ответ Криса исходя из собственного опыта.

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

Я хочу поделиться несколькими вещами, на которые я обращаю внимание прежде всего, чтобы составить впечатление о качестве, сопровождаемости и чистоте кода CSS.
Читать дальше →

Новый jQuery плагин адаптивной галереи c автоматической группировкой

Reading time3 min
Views30K
image

На сайте tympanus.net представлен новый экспериментальный jQuery плагин для создания галереи, который можно использовать для решения разных задач, например, простой показ изображении, сгруппированных определенным образом или отображение целых альбомов пользователей с фотографиями без перезагрузки страницы. Разумеется, галерея адаптивная, что позволяет удобно использовать ее как на компьютерах с большим экраном так и на мобильных устройствах.
Как использовать этот плагин?

Новые подробности о шифре Copiale 18 века

Reading time4 min
Views62K


Журнал Wired опубликовал замечательную историю о том, как специалисты по машинному переводу текстов вместе с лингвистами сумели найти ключ к шифру масонского манускрипта 1760-1780-х годов, который никто не мог прочитать с момента его находки в 1970 году и который считался одним из самых трудных шифров в мире. О расшифровке рукописи сообщалось год назад — в октябре 2011 года, тогда были расшифрованы первые 16 страниц текста. С тех пор учёные значительно продвинулись в понимании этого уникального документа, составленного членами ордена Окулистов.

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

Список Full-Mesh VPN решений

Reading time2 min
Views236K

Введение


Многие интересуются Full-Mesh (или P2P) VPN, хотят использовать их для игр с друзьями, для связи удаленных офисов, серверов, да для чего угодно. Обычные VPN, вроде OpenVPN или PPTP, пропускают весь трафик через центральный сервер, а Full-Mesh соединяются непосредственно с нодами, зачастую пробивая NAT.
Читать дальше →

CSS анимации на реальном проекте

Reading time9 min
Views92K


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

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

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

Типы адаптивных макетов

Reading time2 min
Views62K


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

+1 к эволюции фрилансера

Reading time4 min
Views150K
image


Собрал небольшой список пунктов эволюции фрилансера, каждый +1 сделает вас продуктивнее или дороже на рынке.
Список взят из моей жизни, я уже как год практикующий фрилансер, до этого никогда не покидал России, за последний год посетил 9 стран, в следующем году надеюсь посетить ещё 20.

1) Никогда ничего не забывайте. Для этого каждую мелкую задачу я всегда добавляю в miniplan.ru и я всегда получу в нужный момент письмо или смску, все совершенно бесплатно.
2) Самоосознание. Когда работаешь без прямого начальника, когда зарплата не два/раз в месяц, нужно максимально осознать свою жизнь, понимать как вы работаете, как вы получаете деньги, забиваете ли вы на работу, к чему стремитесь. Если в обычной жизни можно плыть по течению то фриланс вам приоткрывает двери осознанной жизни.
3) Отдыхайте. Работодателя нет и вы сами должны заботиться о своем отпуске, сделайте так чтобы его было больше, чем если бы вы работали по прямому найму. Не забывайте о перерывах в работе. Отдых сделает вас продуктивнее или абсолютно расслабит и тут вам поможет самоосознание.
Читать дальше →

Jam with Chrome

Reading time1 min
Views18K


Ресурс Jam With Chrome позволит вам устроить джейм-сейшн с вашими друзьями.

Позиционируется как один из хромовых Экспериментов (веб-аудио и веб-сокеты), поэтому запустить эту штуку в другом браузере не получится (Лиса предлагает сразу скачать Хром с этим приложением, но можно продолжить и в ней, просто стабильная работа не гарантируется).

Можно выбрать музыкальный инструмент (несколько гитар, барабанных установок, клавиш, драм-машин и прочее) и пригласить друзей сыграть вместе с вами.

Лучше сразу переключаться в PRO-режим.



via

Steam под Linux: началось закрытое бета-тестирование

Reading time1 min
Views50K
Сегодня первым счастливчикам в почтовые ящики упало приглашение в закрытое бета-тестирование клиента Steam под Linux, о чём было сообщено в официальном сообществе:

«Первая волна инвайтов выслана!
Если вы прошли опрос*, но вам так и не пришло письмо, не отчаивайтесь. Мы расширим бету в будущем большим количеством участников опроса.

Спасибо за вашу поддержку, помогающую выпустить Steam под Linux,
Команда Valve Linux.»


(*опрос, проводимый недавно на сайте Valve, в котором желающие могли заполнить некоторую информацию о своём Linux-е и железе).

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

Создание «островка сетевой свободы» на основе VPS за 30 минут

Reading time4 min
Views155K
В связи с вступлением в силу нашумевшего закона 149-ФЗ у многих хабравчан возник вопрос: а что будет дальше? Неужели в России появится аналог Великого Китайского Фаервола, который будет блокировать всё и вся? В данном туториале я хотел бы рассмотреть один из самых эффективных и безопасных способов обеспечения себе свободы информации — собственный VPS сервер, находящийся далеко за границей и связанного с вами с помощью зашифрованного VPN туннеля. В отличие от tor или i2p конфиденциальность передаваемой информации гарантированна, вряд ли кто-то будет пытаться расшифровать ваши данные или устраивать рейд на заграничный сервер (если конечно вы не хакер мирового масштаба).
Читать дальше →

Описание Google AI challenge (Ants)

Reading time9 min
Views4.6K
image
На хабре уже имеется много информации по этому состязанию, однако вся она освещает отдельные моменты реализации, но не картину в целом. Постараюсь исправить это положение как можно более кратко, но в целом.
Данное описание предназначено для тех, кто что-то слышал о данном мероприятии, но всё желание что-то сделать отбила необходимость разбираться в тонкостях реализации. Пост состоит частично из перевода материалов с официального сайта, частично из анализа стратегий других ботов и чистой логики. Также в конце поста будет ссылочка на PHP-бота (чуть сложнее чем из starter-pack), который позволит вам попробовать собственные силы дописав имеющийся код. Официальный сайт состязания: aichallenge.org
Читать дальше →

Evo, часть 2 — о скрещивании

Reading time4 min
Views11K
Приветствую вас, хабражители!

В продолжение поста «Аналог игры «Жизнь» — Evo» хотелось бы дать более подробное описание команд «языка генов», который используется в Evo, и поделиться своими соображениями по методам скрещивания особей в этой игре.
Читать дальше →

Аналог игры «Жизнь» — Evo

Reading time5 min
Views27K
Приветствую вас, хабражители!

Недавно прочитал статью про игру Жизнь, и вспомнилось мне, что я в мае этого года начинал писать свой проект подобной направленности. Только вот интерес к нему за рутиной работы быстро угас, хотя написано было немало. И сейчас, вдохновлённый этой статьёй, я взял этот проект с пыльной полки и добавил несколько фич, о которых расскажу далее.
Вкратце, мой вариант имеет следующие условия:
  • жизнь развивается на поле 256*256 клеток;
  • на поле могут размещаться объекты трёх типов: живность, пища(назовем её травой) и камень (препятствие);
  • живность представляет собой фактически модифицированную машину Тьюринга, если точнее, то это больше похоже на Автомат с магазинной памятью, т.е. живность является «процессором», выполняющим свой «генетический» код;
  • живность имеет возможность совершать определенные действия (двигаться, есть, размножаться (пока только клонированием, мутации будут со дня на день, скрещивание в перспективе)), отдавая соответствующие команды;
  • наступив на траву, живность её вытаптывает;
  • для поглощения еды надо дать команду «Ешь в этом направлении!», находясь в соседней клетке;
  • живность имеет память, что позволяет строить циклы, условия и т.п., т.е. полная по Тьюрингу (поправьте меня, если не прав!), объем памяти неограничен;
  • живность может складывать и вычитать значения в уме, разрядность ограничена одним байтом;
  • существует возможность реализации генетических алгоритмов (пока не реализовано).
Кому интересны подробности, прошу под кат!

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

Безопасная авторизация с передачей хешированного пароля

Reading time4 min
Views30K
При разработке одного проекта, появилась задача осуществить защиту в случае просмотра трафика, и просмотра исходника (могут узнать хеш пароля) злоумышленниками. Имея доступ ко всем данным, никто не должен авторизоваться на сервере, не зная исходный пароль. Варианты подмены IP адреса, получение пароля непосредственно в момент ввода (keylog), или брутфорс исключаем, это уже не забота веб сайта.

Пароль по сети передаваться не будет, поэтому используется хеширование прямо в браузере, для этого использую небольшую библиотеку JavaScript SHA-1. Почему SHA-1, а не, допустим, MD5? Считается, что SHA-1 немного надежнее, да и сама JavaScript библиотека меньше, чем аналогичная (на том же сайте) для MD5.
Читать дальше →

Базовые CSS-стили различных элементов

Reading time5 min
Views129K
В этом топике представлены лаконичные базовые стили для различных элементов: кнопок, ссылок, форм, теней, градиентов, которые можно использовать в своих проектах. Да и просто разобраться в принципах работы таких конструкций проще на несложных примерах.



Демонстрация стилей / Скачать исходники
Читать дальше →

2400 иконок флагов под свободной лицензией

Reading time1 min
Views91K


Самая большая коллекция флагов: 2400 пиктограмм размерами 16×16, 24×24, 32×32, 48×48 и 64×64. Есть государственные флаги всех стран, плюс бонусы: Англия, Абхазия, Нагорный Карабах, Красный крест, Южная Осетия, Сомалиленд, флаг Марса, НАТО и проч.

Все иконки в двух вариантах: стандартный и глянцевый.

Скачать:
www.gosquared.com/download/pixels/flags.zip

Лицензия MIT (GPL-совместимая), разрешает использование иконок в коммерческих проектах.

Information

Rating
Does not participate
Date of birth
Registered
Activity

Specialization

Backend Developer
Senior
From 4,000 €
Docker
SQL
Linux
PostgreSQL
Git
MySQL
PHP
Yii framework
Symfony
RabbitMQ