Архив за 04 апреля 2012

Когда-то, когда горы были выше, а деревья зеленее, в браузерах поиск в адресной строке работал так, как это было правильно: он использовал функцию Google I'm Feeling Lucky. Вы могли легко вводить «хабр» вместо «habrahabr.ru», вводя «Сан-Франциско», вы сразу же попадали на сайт этого города в Википедии (ведь туда вы и хотели, правда?), а фраза «php in_array» моментально перекидывала вас на документацию по этой функции, в синтаксисе которой вы в очередной раз забыли, needle или haystack в ней идет первым.

Но потом Гугл понял, что $110 млн, которые они теряют из-за того, что вам никто не показал рекламу на эти запросы — это непозволительно много, и больше браузеры по умолчанию не хотят демонстрировать нам всю телепатическую магию поиска I'm Feeling Lucky, а вместо этого демонстрируют промежуточное звено поисковой страницы, на которой вы как всегда сразу же нажимаете на первую ссылку (ведь где еще может быть Википедия?), но зато посмотрели рекламу и добросовестно уменьшили рекламодателю CTR.

Читать полностью »

Неуловимый Go.

Помните анекдот про неуловимого Джо? Именно восклицанием «Да кому он нужен!», прозвучавшим в форме вопроса "ЗАЧЕМ?", был встречен на Хабре релиз первой стабильной версии GO 1.

Именно на этот вопрос я хочу ответить циклом статей, оформленных в необычном для Хабра формате — в виде пошаговой совместной разработки действующего веб-проекта — с живым обсуждением и добавлением функционала. А чтобы вдвойне оправдать внесение цикла ещё и в хаб «Высокая производительность», мы поставим перед собой задачу создать не просто «хомяка», а проект, который наглядно продемонстрирует habri et orbi способность выдерживать значительные естественные нагрузки.

Вместо аперитива: реализация простейшего динамического веб-приложения на языке Go работает в 5-20 раз быстрее аналогичной Python-реализации. И всего в два раза уступает скорости отдачи статики Nginx-ом.

В рамках этого проекта, помимо самого языка Go, мы косвенно затронем и другие (относительно новые) технологии веб-разработки — HTML5, CSS3, Redis, MongoDB. Также я постараюсь вытащить из закутков долговременной памяти некоторые из трюков в области безопасности и экономии на спичках, коих накопилось много за полтора десятка лет работы в этой области. Устраивайтесь поудобнее, запасайтесь терпением и кофе — под катом «много букв», а ведь это только вводная часть :)
Читать полностью »

В процессе превращения большей части web-проектов в браузерные приложения, появляется много вопросов. И один из самых весомых из них – обработка прав доступа без лишнего кода. Размышления на эту тему привели нас к большой проблеме: комфортного способа реализовать защиту на уровне полей модели для ActiveRecord просто нет (Егор, привет! ;). CanCan добавляет ограничения на уровне контроллеров, но это слишком высокий уровень чтобы решить все проблемы.

Немножко пободавшись, мы написали два милых гема. Встречайте, Heimdallr (Хеймдаль) и его расширение Heimdallr::Resource. Они принесут в ваши модели мир и безопасность.
Читать полностью »

Дизайнер Pofben с сайта PlentyOfFish.com провёл эксперимент, результаты которого посчитал достаточно забавными для публикации. Он протестировал два баннера по 15K показов на каждом:

Забудьте всё, что вы знали о баннерах

Первый баннер создан по всему канонам:

  • качественное изображение реального игрового контента;
  • зелёная кнопка, призывающая к действию, с волшебным словом «free»;
  • узнаваемые логотипы EA и Need for Speed, что должно повышать доверие.

Вторую картинку он просто по приколу нарисовал в MS Paint за пять минут.

Забудьте всё, что вы знали о баннерах
Читать полностью »

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

Вашему вниманию мой вгляд на правила обработки URL с объяснениями и коментариями «почему так?».

Сперва логика

Объясню сперва логику:
1) все страницы имеют .html окончания.
2) все языки для страниц имеют вид pagename.en.html или pagename.html для языка по умолчанию. Никто, конечно, не запрещает иметь ссылки, где язык идёт вначале как /en/
3) «входной» скрипт только один в docroot.
4) Разрешены запросы на другие скрипты только в docroot
5) Соглашение по определению окончаний в url:
# site.com/
# site.com/index -> site.com/
# site.com -> site.com/
# site.com/file/ -> site.com/file.html
# site.com/file -> site.com/file.html
# site.com/dir/file ->site.com/dir/file.html
# site.com/dir/file/ -> site.com/dir/file.html
Но это можно менять.

Читать полностью »

Понимаем декораторы в Pythone, шаг за шагом. Шаг 1

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

Итак, что же такое «декоратор»?

Впереди достаточно длинная статья, так что, если кто-то спешит — вот пример того, как работают декораторы:

def makebold(fn):
    def wrapped():
        return "<b>" + fn() + "</b>"
    return wrapped
 
def makeitalic(fn):
    def wrapped():
        return "<i>" + fn() + "</i>"
    return wrapped
 
@makebold
@makeitalic
def hello():
    return "hello habr"
 
print hello() ## выведет <b><i>hello habr</i></b>

Читать полностью »

image

Как всегда, по субботам, канал GTV проводит очередной вебинар. В этот раз разговор пойдет о сайтах. Вернее, не о самих сайтах, а о их роли в малом бизнесе.

Кому будет полезен:

  • Владельцу небольшого оффлайнового бизнеса;
  • Начинающему предпринимателю, который планирует или уже начал реализовывать свои идеи;
  • Тому, кто уже потратил приличное количество времени и денег на «раскочегаривание» своего сайта, но не получил ожидаемого результата.

Чего не будет:Читать полностью »

Недавно появился данный ролик от Google и думаю что он многих тут заинтересует.
Тут можно узнать подробнее а так-же написать о своих идеях и предложениях по этому проекту.

Читать полностью »

в 17:56, , рубрики: java, javafx, метки:

На сайте Oracle стала доступна для скачивания предварительная версия JavaFX Scene Builder:

image

Редактор предназначен для мышкоредактирования формочек под JavaFX. Рассмотрим что в нём есть:
Читать полностью »

Нотч делает космическую MMO

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

В 1988 году в продаже появилась абсолютно новая камера глубокого сна для межзвёздных перелётов, совместимая со всеми популярными 16-битными компьютерами. К сожалению, в ней использовалcя порядок записи битов от старшего к младшему, в то время как спецификации DCPU-16 требовали записи от младшего к старшему. Это вызвало серьёзный баг в приложенных драйверах, из-за чего вместо требуемых 0x0000 0000 0000 0001 года сон продолжался 0x0001 0000 0000 0000 лет.

Наступил 281 474 976 712 644 год нашей эры. Первые люди начали просыпаться в глубинах вселенной, которая находится на грани исчезновения, все дальние галактики потерянны в красном смещении, формирование звёзд давно завершилось и во Вселенной доминируют массивные чёрные дыры».
Читать полностью »