Dull.ru / Светло, ага...
Tech Questions
Ни хао, комрады!
У меня тут на повестке дня созрело два вопроса:
- Doctrine ORM — плюсы/минусы/подводные камни?
- Code Review Tools for SVN — как жить дальше?
Может есть дельные советы (с гуглом дружу, но там уж очень сильно мнения расходятся)
Jun. 29, 2009 // 16:17 | Комментарии (2)
.dev | Cards
Поскольку томными вечерами сейчас заниматься особо нечем, я с бумажкой и ручкой выдрочил алгоритм игры в карты (конкретно в Дурачка, но смысловая составляющая будет применима к практически любой карточной игре). Как результат, код для AI игры пишется за час с хвостиком и уместился в примерно 250 строк.
Основные постулаты:
- Кажой карте присваивается определённый «вес», скажем от 0.01 до 1.00
- Специальным картам (например козырям) к весу прибавляется 1.00, в принципе если играть в дурачка с сменным козырем, то можно к сменной масти прибавлять какой-то постепенно увеличивающийся «вес».
- Игра AI делится на атаки и защиту
- Атака
- Цель №1 — повысить свой «средний вес» карт
- Цель №2 — понизить «средний вес» карт противника
- Лучший ход, соответственно, будет тот, который наиболее близко совпадает с моими целями
- Защита
- Цель №1 — удержать свой «средний вес» как можно выше (то бишь тут сразу ясно что порой выгодно «брать», вместо того, чтобы биться)
- Цель №2 — сбить «средний вес» карт противника «выманивая» тяжёлые карты (ведь AI знает, что противник получит из колоды)
- Стратегия элементарно расчитывается методом нехитрого перебора вариантов
Вот, собственно, и всё! Осталось сделать кучку опций и продумать интерфейс. В будущем меня, правда, ждёт более сложный момент изучения графического API iPhone, но это должно быть интересно!
Jun. 07, 2009 // 12:54 | Комментарии (0)
.project | Gandja
Ололо, Маньяки!
Я тут ебанулся на отличненько, и сделал одну очень полезную штуку, и назвал её "Gandja" (намёк не понял).
Не знаю как вы, но у меня постоянно какие-то косяки с структурой БД происходят. Локально всё чики, а на сервере какой-нить запрос нет-нет, а не выполню. Проблема эскалировала, когда задействованых в работе компьютеров стало 3. Понять где, что, когда и как делал стало практически невозможно.
В другой ипостаси, над одним подпольным проектом трудится дюжина разработчиков, и надо как-то нам всем локально иметь одинаковую структуру БД.
Есть проблема? Есть решение! Отчего бы не следить за изменениями автоматически (а делиться ими через SVN)? Сказано-сделано.
Welcome to Gandja. Просто и удобно. До безобразия просто и удобно.
copyright note — этот скрипт у нас быстренько на коленке набросал один дяденька, я же его причесал парочкой стилей и с общего согласия выложил на google code
Apr. 24, 2009 // 21:46 | Комментарии (6)
Всему Своё
Меня порой искренне удивляет повальное рвение интернет-сообщества стрелять по тараканам из тяжёлой артиллерии. Например сплошь и рядом все вешают под банальные сайты-визитки хитрожопые CMS и фреймворки, когда в 99% случаев можно было бы обойтись простым SSI?
Keep It Simple, Stupid!
Nov. 20, 2008 // 21:21 | Комментарии (6)
PHP5 on Leopard
В связи с тем, что у меня из офиса на прошлых выходных спёрли компы, обзавёлся новёхоньким iMac. Конечно быстро на него понавешал всяких рюшечек, однако новый PHP5 c сайта entropy.ch вставать категорически отказывался.
Причина капризов оказалась в том, что апач летает в системе используя 64 битную архитектуру, когда модуль PHP5 от entropy собран только под 32х битную машину. Кто виноват? Что делать? Элементарно, Ватсон! Локальную сборку апача оставляем только 32х битную :)
Всё работает. Полёт нормальный!
Nov. 18, 2008 // 19:48 | Комментарии (1)
Конвертировать базу в UTF8
Меня часто спрашивают как конвертировать СУБД MySQL в UTF8 (из дефолтной кодировки, конечно). Итак, рассказываю:
Действие первое — сделать дамп базы с помощью утилиты «mysqldump», команда выглядит примерно вот так:
Действие второе — заменить стандартные кодировки таблиц:
Действие третье — воссоздать базу данных с новой дефольной кодировкой:
Действие четвёрное — залить в базу все данные:
Вот, собственно и всё. Правда есть ещё одна очень важная мелочь — указывать стандартную кодировку для отдачи данных для каждого нового соединения с СУБД, делается это следующим SQL запросом:
Вот!
Nov. 06, 2008 // 20:47 | Комментарии (1)
Flash Charts
А посоветуйте пож-ста движок для построения Flash графиков — обязательно нужна динамическая подгрузка данных (ajax ест-но). Пока из приличного нашёл разве что fusioncharts.com
Jul. 21, 2008 // 10:49 | Комментарии (3)
Google Media Planner
Получил приглашение в Google Media Planner — пока не совсем понял зачем это чудо нужно сайтостроителю, разве что сравнить аудиторию своего проекта с другими в этой же категории (результаты далеко не лучшие, у меня всего 0.2% рынка, хнык-хнык). Дни гламура сочтены, тыц-тыц :)
Jul. 15, 2008 // 11:53 | Комментарии (0)
.hardware
Вопрос, в первую очередь, к маленьким студиям/компаниям, чей первичный источник дохода лежит в сети. Скажите, а как вы организуете ваш хардвер (не побоюсь громкого слова «серверпарк»)?
На данный момент я имею дело с следующей архитектурой:
- Два «live» сервера примерно одинаковой мощности, перед ними живёт load balancer.
- Скрипты фигачит апач
- css и прочую мелкую статику отдаёт nginx
- крупную статику отдаёт Amazon S3 (ежедневный бекап падает туда же)
- Один «demo/development» сервер, куда сначала попадают все новые разработки и тщательно обкатываются. К «dev» машине доступ есть у всех разработчиков, там же живёт кодовый репозиторий и всякая ненужная чешуя.
- Мейлом рулит Google Hosted Applications
- DNS живёт на XName + Afraid.org
Какие при этом раскладе очевидные минусы? Какие плюсы?
Май. 13, 2008 // 15:29 | Комментарии (0)
.server
После небольшого «слешдота» в пятницу, когда с сервера вдруг тысячи пользователей начали тянуть сотни фотографий одновременно и апач решил отбросить коньки, я таки нашёл пару часов времени и вполне успешно (и с первой попытки) поднял nginx как reverse proxy, то бишь на основных сайтах всю статику стал отдавать именно он, а уже с php обработкой валандался апач.
Не знаю кто там что кричал на отсутствие документации, но скажу честно, что того, что написано на сайте вполне себе достаточно чтобы всё это дело быстро и аккуратно настроить. Будет время – может быть расскажу как ;)
Что примечательно, так это то, что nginx даже не видно в top процессах, когда mysql, apache и postgres там постоянные обитатели.
Жить классно!
Apr. 20, 2008 // 15:38 | Комментарии (3)
.project 2.0
А кто что знает про dosug.nu? Ну в смысле прибыли/обороты, кто конкуренты, что можно сделать лучше и тд и тп; м?
Apr. 16, 2008 // 16:28 | Комментарии (1)
.gtd
Я тут давно вообще-то про GTD распинаюсь, но только сейчас заметил, что мало кто вообще-то читал великое творение Дэвида Аллена. Самое время провести работу над ошибками, ибо русская версия великолепной книги «Getting Things Done» есть в сети. Велкам!
Dec. 12, 2007 // 12:08 | Комментарии (1)
javascript str_replace
Да-да, все давно пользуются prototype 1.6, однако порой ой как не хочется ради тривиальных задачь фигачить всем простым смертным целую библиотеку, а посему встала однажды передо мной задача сделать на Джаба Скрипте банальный str_replace() — долго поэт бился головой об стенку, однако ответ был найден:
function str_replace(search, replace, subject) {
return subject.split(search).join(replace);
}
Nov. 27, 2007 // 12:21 | Комментарии (3)
Как Наши Лочили Ряды
Да-да, все «реальные пацаны» умеют строить веб-системы, способные выдержать монументальные нагрузки. Ну а для «непацанофф» всегда есть гугл и масса сайтов посвящёных данной тематике. Однако «проблема роста» включает в себя не только вопрос верной сервировки данных клиенту и их грамотной репликации/распределении на кластере. Зачастую проблемы возникают от того, что всё как раз-таки наоборот — слишком шустро работает. Рассмотрим пример из недавней практики:
[ "Поехали" ]
Oct. 25, 2007 // 12:09 | Комментарии (0)
.app | GMail
В GMail появилась поддержка IMAP — как же этого не хватало честным людям! Теперь у нас всё выглядит примерно так:
Oct. 24, 2007 // 11:06 | Комментарии (1)