Search
Write a publication
Pull to refresh
24
0
jrip @jrip

User

Send message

Веб-сервисы играют в покер

Reading time7 min
Views12K
imageЗдравствуй, Хабр.

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

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

Изначальная идея проекта принадлежит моему другу (он не с Хабра). Первый раз она прозвучала примерно так:
Я считаю, что нет ничего дурного в том, чтобы боты играли в покер-румах. Хотя, может быть, честнее было бы организовать специальный покерный клуб, где роботы играли бы только друг с другом. Вот я бы с удовольствием написал такого бота. А ты?
Не помню, что я ответил. Мне интереснее было именно сделать такой сервис. Challenge accepted ;)
Читать дальше →

Lokata.ru – онлайн-каталог для покупок в оффлайне

Reading time4 min
Views13K


Fast Lane Ventures запустила свой новый проект Lokata.ru: первый в России онлайн-сервис поиска товаров и услуг по каталогам торговых сетей. Принцип сервиса – находить товары и услуги самого широкого профиля с помощью онлайн-каталогов. Через сайт Lokata.ru, приложение для iPhone или Android, вы можете:
• Искать и находить товары и услуги любой категории по каталогам торговых сетей
• Находить нужные вам магазины/точки обслуживания поблизости
• Узнавать адреса и часы их работы

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

Web-сервер на D?

Reading time1 min
Views5.7K
Читая официальный twitter-канал языка D, попал на интересный пост о новом движке на D (vibe.d) для разработки web-приложений, ну или даже web-сервера.
Стало интересно — полез смотреть и разбираться!
Читать дальше →

Хочешь сделать хорошо — сделай это сам: редактор UnityScript на базе FlashDevelop 4

Reading time2 min
Views6.1K
Коротко: я подбил автора FlashDevelop внедрить в его редактор поддержку UnityScript и оказал посильную помощь в адаптации. Рабочий билд можно скачать здесь.

А теперь подробно: кто-то, возможно, читал мой предыдущий пост где я изучал доступные редакторы для UnityScript и пришел к выводу, что все как-то кривовато и хочется большего.

Опуская текст предыдущей статьи, могу сказать, что наилучшие результаты показал некий UnityDevelop — билд FlashDevelop старинной версии 2.0, который был адаптирован под Unity-версию javascript'а. Оно и не удивительно, ведь по своей сути UnityScript — это просто-таки близнец ActionScript'a. В целом — IDE выглядела неплохо, но хотелось, конечно же, — большего.

И тогда я пошел к разработчикам FlashDevelop на форум… Один из разработчиков (Philippe) откликнулся и заинтересовался. И работа пошла. Буквально за неделю мы с ним собрали работающий билд с поддержкой UnityScript. Конечно что касается кода — по большей степени сделал все он (за что ему огромное спасибо). Я больше направлял :)
Читать дальше →

Определение IP адреса пользователя Skype

Reading time1 min
Views119K


Вводим логин — получаем IP: http://skype-ip-finder.tk

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

Деобфусцированный десктопный Skype для windows использовать безопасно, если только не запрашивать сильно часто vcard. Эта инструкция актуальна habrahabr.ru/post/142876

Поиск происходит абсолютно незаметно для юзера.

Слева внешний IP через который клиент выходит наружу, справа локальный.
Если они совпадают значит у пользователя не используется NAT.

Если запущено одновременно несколько клиентов — будут показаны все.

Если возвращается только локальный IP вида 10.* или 192.168.* значит используется старая версия клиента, например Linux 2.0.0.72

IP показываются еще спустя несколько часов после того как пользователь отключился.

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

Прототипная модель данных

Reading time4 min
Views4.5K
В прототипной модели данных объекты создаются на основе других объектов. В этом случае у объекта имеется прототип, его ещё можно назвать эталоном или наследуемым объектом. В такой модели данных отсутствуют типы и классы. Объекты можно различать по тому, кого прототипируют, но эта задача второстепенная. Прототипирование, в первую очередь, применяется для повторного использования существующих структур из объектов.


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

Американский музыкант положил на музыку математическую константу Тау

Reading time1 min
Views5.7K
Американский музыкант положил на музыку математическую константу под названием Тау. О необычном подходе к числам пишет New Scientist.
Число Тау в два раза больше числа Пи и приближенно равно 6,283185. Майкл Блейк присвоил нотам от «До» одной октавы до ноты «До» следующей октавы номера от 1 до 8. Затем Блейк взял запись числа Тау с точностью до 126 знака после запятой и проиграл ее в соответствии с выбранной кодировкой нот. Далее музыкант аранжировал получившуюся мелодию.
Как сообщалось ранее, Блейк положил на музыку само число Пи. Однако, по мнению композитора, Тау звучит более гармонично.
Под катом — видео
Читать дальше →

Как заставить сайт летать и сэкономить десятки часов системного администрирования

Reading time10 min
Views109K
Скорость работы вашего сайта, его стабильность и отказоустойчивость всегда зависят от трех составляющих:

1. Платформа (CMS) и ее настройки, которые влияют на производительность (параметры кэширования и т.п.)
2. Конфигурация сервера (реального физического или виртуального) и настройки системного ПО (веб-сервер, база данных и т.д.)
3. Качество разработки, кода, интеграции с платформой.

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

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

В итоге сайт может «хромать» из-за проблем и «узких» мест в любой из составляющих: CMS, хостинг, разработка. Клиент в нюансы не вникает и остается не удовлетворен проектом в целом. Его негатив переносится на всех: «Тормозной хостинг! Ужасная система! Разработчики ничего не умеют!»

Такая картина нас, конечно, никогда не устраивала. И мы решили, что надо что-то делать…
Читать дальше →

RealSync — односторонняя синхронизация исходников в реальном времени для веб-разработчиков

Reading time6 min
Views30K
Представляю общественности утилиту RealSync (GPL). Ее призвание — облегчить работу тех, кто периодически мучается от лагов сетевой папки Samba при поиске/редактировании файлов веб-проекта. Идея RealSync в том, что вы теперь работаете с файлами сайта на локальной машине в привычной IDE, а результат, как и прежде, смотрите на удаленном разработческом веб-сервере, куда RealSync копирует изменения в реальном времени. В результате вы можете, например, запустить поиск по всем файлам в IDE — они же локальные, а не подключены через сетевую папку по Samba, так что поиск работает очень быстро; при этом ваш Ctrl+S продолжает попадать на сервер моментально, как и при работе через сетевую папку.

RealSync — утилита для Windows, MacOS и Linux, позволяющая в реальном времени содержать на удаленном сервере точную копию файлов (например, скриптов на PHP, Python, Ruby и др.) из папки на вашем локальном компьютере, даже в условиях плохой связи, когда вы работаете из дома. Все изменения, производимые в локальной папке, попадают на сервер практически моментально (задержка около 0.2 с), независимо от того, сколько этих изменений и каким именно образом они были внесены (хоть через IDE, хоть через Блокнот или Far).

Главное отличие RealSync от аналогов — в том, что он крайне устойчив к нестабильности интернет-соединения, реконнектам и тайм-аутам. При этом используется SSH-соединение, доступ через которое конфигурируется автоматически при первом запуске утилиты (т.е. не нужно возиться с ключами — настройка производится в интерактивном режиме).

Фактически, случайно «убить» RealSync почти невозможно. Вы можете держать его постоянно свернутым в трее и забыть про его существование (CPU он почти не ест). Если утилита видит, что соединение разорвалось на длительный срок, автоматически запускается знакомый многим алгоритм RSYNC для быстрого копирования большого количества различий. В режиме же реального времени применяется собственный протокол поверх SSH, чтобы при нажатии Ctrl+S в редакторе вы сразу же видели изменения на сервере. Передача файла сопровождается приятным «треньканьем» (отключаемым при необходимости в конфиге), а временная потеря связи — покраснением иконки (когда связь восстановится, иконка обратно станет серой, а RealSync «догонит» накопившиеся изменения).

И зачем этот велосипед, когда есть Samba или Денвер или XAMPP?

Читать подробности

jQuery UI Bootstrap Theme

Reading time1 min
Views42K
На проектах использую Twitter Bootstrap и jQuery UI для прототипирования интерфейсов различных элементов страниц в т.ч. форм.

На днях понадобилось дополнить форму одним полем. Был выбран наиболее подходящий формат, в виде набора переключателей (элемент input, тип radio).

В Twitter Bootstrap, набор переключателей представлен в виде набора кнопок и не работает напрямую с элементом input, что предполагает написание дополнительного кода для обработки событий. Библиотека jQuery UI, имеет решение подобной задачи, и вся обработка событий уже реализована.
Вот что из этого получилось

Cheapway — апгрейд туристической отрасли

Reading time2 min
Views929
Если вы ездили в отпуск в теплые страны, то скорее всего, покупали тур в туристическом офлайн-агентстве со всеми проблемами, которые ему присущи:
  • Заявленного тура к вашему приходу не было.
  • Доллар стоил 32 рубля.
  • Пришлось заплатить за топливный сбор и ещё что-нибудь.
  • И отстоять часовую очередь в рабочее время.


Все это потому, что туристическая отрасль, несмотря на ее масштаб, наименее автоматизируемая.

Мы это немного исправили, запустив CheapWay.
Читать дальше →

RPG для разработчиков. Два года спустя

Reading time8 min
Views12K
Чуть более двух лет назад я опубликовал статью Другое видение скучных GTD планировщиков через призму RPG игр, в которой описал свою старую идею про совмещение работы над software проектами и элементов RPG игр.

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

Топик тогда собрал 100500 комментов (в основном «супер! хочу!»), а особо заразительные собрались в команды и стали воплощать идею в жизнь. Так что же было сделано за эти два года?


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

SVG-штабеля

Reading time1 min
Views2K
Картинки со спрайтами безудержно используются для скачивания массы значков и элементов интерфейса всех сразу, единственным HTTP-запросом. Однако они несколько обременительны в употреблении, так как приходится рассчитывать сдвиги и задавать их в background-position. Не получится добавить, убрать или переставить спрайты без такого пересчитывания. Или изменить размер спрайта без того, чтобы наткнуться на его соседа сбоку.

Как можно устранить эту проблему? Ну, положить все спрайты друг на друга, отключить их видимость, затем показать только тот, который нужен. Хотел бы я, чтобы это было возможно… и давно хотел… а затем случилось вот что (читайте снизу вверх):

[цитаты из микроблогов]

Ах, хорошо! И ужé работает в Файерфоксе. Такая же возможность запланирована к добавлению в Оперу: баг «CORE-37596» (я не мог найти общедоступной гиперссылки, к нему ведущей). Есть и альтернативы SVG-штабелям, лучше поддерживаемые браузерами: элементы embed, iframe, object или img — но я всё же предпочитаю фоновые картинки из-за того, что проще изменять их размеры и положение. Так что давайте надеяться, что поддержку SVG-штабелей добавят и другие браузеры.

Итак, как же работает SVG-штабель? На самом деле, весьма несложно. Поглядите в исходный код SVG-файла Эрика.

[вид SVG-файла]

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

Сага о конденсаторах или «Очередной срыв покровов»

Reading time4 min
Views51K
Иногда почитываю Хабр, в основном DIY. Иногда — это редко, поскольку работа, знаете-ли… И вот, не так давно, с удивлением наткнулся на хабратопик (не буду тыкать пальцем) с описанием, так сказать, ремонта ЖК-монитора. Бегло проглядев, почувствовал сперва желание поплакать, а затем — посмеяться. Почему?
Читать дальше →

Результаты конкурса

Reading time3 min
Views15K
Итак, вот они результаты нашего последнего конкурса. Спасибо всем, кто принял участие.
В принципе, задачка была совсем не сложной (она такой и планировалась) и целых 56 человек с ней справились. Вот имена людей, которые сделали это первыми:



Под катом можно найти решение задачи и ссылки по теме.
Читать дальше →

Meteor — Новый способ создания приложений

Reading time2 min
Views23K
Meteor представляет собой набор новых технологий для быстрого создания высококачественных веб-приложений, с которым справятся не только опытные разработчики но даже и новички.

Чистый JavaScript.


Пишите всё приложение полностью на чистом JavaScript. Все API, доступны на клиенте и на сервере — в том числе API базы данных! — Так что один код может легко работать на клиенте и на сервере.

Живые обновления страниц.


Просто напишите ваши шаблоны. Они автоматически обновляются при изменении данных. Meteor поддерживает любой язык шаблонов.

Чистая, мощная синхронизация данных.


Пишите ваш код клиентской части, как если бы она была запущена на сервере, и имела прямой доступ к базе данных. Больше не придется получать данные через REST.
Читать дальше →

Квадрокоптер за 1 день и $120

Reading time8 min
Views350K
Создать квадрокоптер как платформу для летающего робота я планирую уже очень давно. Первые расчеты и заказ деталей я сделал год еще назад. Однако, делать «просто коптер» чтобы полетать, управляя с пультом или даже в FPV режиме конечной задачей не является. Поэтому коптер должен быть максимально гибким и как можно менее дорогим.
По отдельности все детали для коптера есть, но их сопряжение — дело простое только в теории. Нужно быть и программистом и инженером и моделистом — вертолетчиком. Поэтому процесс движется довольно небыстро. А летать хочется :) Ничто так не расхолаживает и не демотивирует как отсутствие видимых результатов, особенно когда прогресс-то вроде есть, но не наглядный. Да и экспериментировать сразу на большом квадракоптере дорого и опасно.
Поэтому я решил собрать для экспериментов миникоптер. Как всегда — задача сделать недорого, просто и гибко.
Мой результат — готовый коптер за 1 день (на сборку и запуск) и $120 (стоимость квадрокоптера включая доставку). А с аппаратурой — $145.
MiniQuadroCopter
«MiniQuadroCopter»
Под катом описание и видео.
Buddy-коды для заказа на HobbyKing
Строим недорогой квадрокоптер

Утечки памяти в IE8, или страшная сказка со счастливым концом

Reading time3 min
Views3.6K


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

Однажды в одном большом-большом городе, в одной большой-большой ИТ-компании тестировали один большой-большой проект в одном очень используемом браузере. И обнаружили там утечки памяти. Большие-большие. Прям незадолго до релиза.

И было бы это неудивительно, если бы разработчики были совсем глупые. Но нет же, разработчики наизусть знали «Understanding and Solving Internet Explorer Leak Patterns». Циклические ссылки разрывали, замыкания не использовали, к событиям относились с должным почтением и удалять обработчики не забывали. Да вот только от утечек это не спасло.

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

Как раскрыть мощь HTML5 Canvas для игр

Reading time8 min
Views40K


Браузеры, поддерживающие HTML5, и платформа HTML5 для Windows 8 Metro сегодня становятся серьезными кандидатами для разработки современных игр.

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

Цель данной статьи — дать вам несколько подсказок, как выжать максимум мощности из HTML5 Canvas. Статья состоит из двух основных частей [вы читаете первую]. David Rousset скоро опубликует вторую часть.

В статье я буду показывать ключевые идеи на одном и том же примере — это эффект 2D-туннеля, который я написал для Coding4Fun-сессии на TechDays 2012 во Франции.
Читать дальше →

TeamLab Document Editor на canvas: стирая грани между desktop и online

Reading time4 min
Views20K
В предыдущем посте мы рассказали вам, что одной из главных целей участия в CeBIT 2012 было анонсирование нового онлайн редактора документов TeamLab. Сегодня поподробнее о редакторе (на данный момент он в beta версии), как пришли к идее его создания и как, в итоге, реализовали.

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

Information

Rating
Does not participate
Location
Санкт-Петербург и область, Россия
Date of birth
Registered
Activity