Pull to refresh
0
0
Markus Tisse @Tisse

User

Send message

Масштабируем до сотен миллионов запросов: что работает, а что нет

Reading time1 min
Views2.8K
Прекрасная тридцатиминутная история (на английском) от Джеймса Голика — CTO американской бдсм-соцсети выдерживающей 180 000 000 реквестов в месяц, при среднем времени отдачи ~200 мс, имея шесть серверов. В двух словах — смотрите тэги.

Nano: И всё-таки его придётся выучить [1]

Reading time2 min
Views115K
            Речь идёт о текстовом редакторе nano в Linux.
Я не люблю nano и предпочитаю vim. Однако, в отсутствии vim, выбирая между vi и nano, я всё-таки предпочту nano, ибо как говорится в старой поговорке, «у vi есть два режима: бибикать и всё портить».

Кроме того, идёт активная замена vi на nano во многих дистрибутивах. Например, в новых версиях Debian и Ubuntu по-умолчанию vi устанавливается в самом куцем виде. А главное, его больше нет в busybox install/initrd этих ОС, что однозначно заставляет задуматься об изучении nano, не из любви к нему, а по необходимости.

Я понимаю, что сидеть и зубрить список комбинаций кнопок бесполезно, так что вместо этого я думаю сделать маленькие nano-уроки — по 8 комбинаций или фич за урок (я и сам их планирую изучать по мере публикации).

Nano не имеет «режима команд» как vim, и этим похож на oldschool-редакторы из консоли DOS/Windows (NC, Far Manager, DN, hiew/biew, внезапно втесавшегося в список mcedit и т.д.). Все команды отдаются нажатием комбинаций клавиш — функциональными кнопками или комбинацией Ctrl-буква, Alt-буква.

Важное отличие от 'generic editor' — это поддержка эмуляции Ctrl'а и Alt'а.

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

Ну очень простая идея, которая повышает эффективность тестирования в разы

Reading time3 min
Views14K
Как обычно строят процесс тестирования непросветлённые тест-менеджеры?

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

Релиз.

Не работает основной функционал.

Почему такое возможно?

1. Заведение всех подряд ошибок мешает разработке. Разработчики тратят своё время на исправление минорных ошибок и вносят новые, зачастую более серьёзные.

2. Потраченное на мелочи время не дало возможности проверить более серьёзные пользовательские сценарии и найти более критичные дефекты.

3. Обратная связь по статусу сборки предоставлялась разработчикам с запозданием: вместо критичных дефектов непрерывно сыпались миноры.

4. Проектный паттерн «дохлая рыба» сыграл своё дело: все участники команды прекрасно понимали, что протестировать всё нельзя, и это не могло не сказаться на качестве работы. А реалистичных целей им никто не поставил…

Что просветлённые тест-менеджеры делают по-другому?

Что они поменяют в первую очередь?
Читать дальше →

Jaconda — виртуальный офис для компаний и удаленных команд

Reading time3 min
Views1.8K
image Jaconda – это больше, чем групповой чат.

Мы много лет работаем в компании с сотрудниками из разных городов и стран, и нам всегда не хватало удобного инструмента для ежедневного общения.

Удалённым командам нужно заниматься проектом и продуктивно общаться, а не разбираться с дурацкими программами. Так и появилась Джаконда.

Мы запустили сервис в 2009 году с одной целью: сделать работу через интернет продуктивнее работы в офисе.
Читать дальше →

Rework по-русски — краткий обзор

Reading time2 min
Views36K
Привет, хабрадрузья!
Как уже обсуждалось здесь, на русском языке вышла книга 37 signals «Rework».
Хотел бы поделиться с вами своим мнением относительно неё.
image
Эту книгу ждали многие. В их числе был и я. Rework произвел на меня впечатление еще в англоязычном варианте. Оставалось узнать, насколько он хорош в русскоязычном.
Читать дальше →

MySQL шпаргалки

Reading time3 min
Views827K
Часто, когда разрабатываешь сайт, замечаешь, как на одни и те же грабли наступают разработчики при проектировании базы данных.

Сегодня я решил опубликовать свои шпаргалки, на самые часто встречающиеся ошибки при работе с MySQL.

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

Развитие валидации форм

Reading time9 min
Views22K

Валидация форм была педантичным занятием с момента появления web. Первой пришла серверная валидация. Затем она развилась в валидацию на стороне клиента для проверки результатов в браузере. Теперь у нас есть такие гиганты как HTML5 и CSS3: глава о формах HTML5 предлагает нам новые типы для input полей и атрибуты, которые делают возможным проверку ограничений поля. Базовый UI модуль CSS3 предоставляет несколько псевдо-классов, которые помогают нам стилизовать состояние валидности и менять внешний вид поля в зависимости от действий пользователя. Давайте взглянем на комбинацию обоих для создания валидатора форм основанного на CSS, который имеет достаточно широкую поддержку браузеров.

Чем больше мы можем дать подсказок пользователю, как правильно заполнять форму, в процессе заполнения, тем меньше шансов, что он сделает ошибку. Взгляните на пример CSS3 валидации форм в браузере поддерживающем CSS3 UI псевдо-классы, например Chrome 4+, Safari 5+ или Opera 9.6+. Я использовал CSS3 UI псевдо-классы и HTML5 атрибуты форм для создания валидации основанной на CSS. Давайте посмотрим как это работает.
Читать дальше →

Установка и настройка SVN (сервер+клиент)

Reading time6 min
Views316K
По просьбам трудящихся, а так же учитывая, что есть статья по установке SVN (правда +Trac) под Linux, решил написать краткое описание установки и настройки SVN для Windows.
Ничего нового для людей, хорошо знающих и работающих с SVN, здесь не будет. Цель статьи — помочь некоторому проценту новичков, пребывающих на Хабре, таки осилить изучение этой системы контроля версий.
Читать дальше →

Еще один первый опыт разрабоки для AppStore

Reading time4 min
Views1K

О приложении



image Привет, Хабр. Я хочу рассказать о моем первом опыте (вообще, тут я немного кривлю душой, но об этом позже) разработки для AppStore и, что, наверное, более интересно, о том, какие уроки из этого я вынес. Приложение называется iAutographer — и само по себе довольно тривиально. Оно предоставят возможность коллекционировать автографы, привязывая их к контактам телефона и набрасывать на общее пано (Sign Board). Затем при просмотре автографа он прорисовывается заново, тем самым создается ощущения, что человек расписывается на ваших глазах. На этом, пожалуй, о приложении и все. Для того чтобы посмотреть на него в деле, привожу 10 промо кодов тут:
Читать дальше

Видео-мафия онлайн

Reading time2 min
Views11K
Mafia-onlineПредставляю вашему вниманию обновленную версию игры WhoIsMafia. Напомню, что WhoIsMafia — это сервис, основанный на популярной салонной игре Мафия, в которой игроки делятся на две группировки и в словесных баталиях пытаются уничтожить противоположную команду, используя для этого вэб-камеры и микрофоны.

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

Одна из главных моих ошибок заключалась в том, что для старта игры создателю комнаты нужно просто было нажать кнопку. Но некоторые админы не выдерживали и покидали комнату до начала игры, и тогда игра не могла начаться никак. К тому же минимальное количество игроков в комнате для старта игры было установлено в шесть. Тогда мне казалось, что эта цифра вполне маленькая — я ошибался :) И если в первую комнату из-за бага набилось сразу под 40 человек, то в последующие дни больше трех я не видел ниразу.

А самая на мой взгляд полезная в продвижении проекта фича заключается в том, что теперь у каждой комнаты есть своя ссылка (пермалинк). Теперь можно создать игру, послать другу ссылку через IM, соц-сеть, твиттер и т.п., и друг сразу попадет в вашу комнату, даже если вы уже давным давно оттуда ушли.
Читать дальше →

Разбираемся с Notifications API

Reading time2 min
Views7.3K
Продолжаю серию переводов статей сайта html5rocks. Мы уже говорили про то, как внедрять шрифты, как работать с видео, сегодня мы поговорим про то как делать всплывающие сообщения в браузере с помощью Notifications API. Работает оно к сожалению пока только в Хроме, но есть уже начальная версия спецификации. Под катом подробности.
Читать дальше →

Защита от DDOS атаки случайными аргументами при помощи Nginx

Reading time1 min
Views3.4K
Я встретился с новым типом ботнета. Если старый долбил только в главную, то новый действует иначе. Он посылает множество запросов вида
GET someurl/?t1555ss5326=5326, где someurl — найденный ботом php скрипт.
Но если атакуемый сайт поддерживает ЧПУ, то такие запросы к нему должны отсутствовать в принципе. ЧПУ сейчас является стандартом де-факто, по этому можно смело отрезать такие запросы, логируя IP ботов.
Для этого очень удобен nginx, и его переменная is_args, которая имеет значение "?", если в URI идут аргументы. Базовая конструкция выглядит так:

if ($is_args = "?") {
return 403 444;
}

Очень просто и красиво, правда?
Вот как выглядит LA после включения этой защиты:
load average: 1.50, 3.09, 6.96
Текущий ботнет из ~20000 зомби, делают 5-8k одновременных запросов.

Плохая и хорошая кириллица

Reading time4 min
Views40K
Удивительно, как мало дизайнеры в нашей стране знают о собственных буквах. На западе любое дизайнерское образование начинается с основы — шрифта и типографики. В обязательном порядке преподают каллиграфию, историю шрифта и дают хорошую типографическую подготовку. Не буду вдаваться в подробности, почему умение обращаться с буквами так сильно отражается на качестве работы дизайнера, но поверьте — влияние впечатляет.

В нашей стране с образованием дизайнеров туго, а шрифтового образования и нет вовсе. Один лишь только курс Ильи Рудермана в БВШД пытается хоть как-то исправить эту печальную картину.

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

Западные дизайнеры не чувствуют наши буквы и делают порой серьезные ошибки. У них отлично получается латиница, но точности контура маловато для качественной шрифтовой работы — надо чувствовать. На мой взгляд, самая качественная западная кириллица у Luc(as) de Groot. Даже крупные и именитые западные агентства выпускают на рынок шрифты с никуда не годной кириллицей, что еще сильнее показывает всю драматичность ситуации. Я выборочно расскажу о том, что мне попадалось на глаза.
Читать дальше →

Загрузка классов в Java. Практика

Reading time7 min
Views84K
Данная статья является продолжением статьи Загрузка классов в Java. Теория.

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

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

Волшебная коробочка

Reading time12 min
Views27K
   Привет, опытные юзернеймы! Сегодня я настоятельно рекомендую вам заглянуть под кат, потому что там пойдет речь об устройстве с удивительным внутренним миром – вы такие любите ;)

image

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

Почему папки желтые

Reading time3 min
Views20K

  Почему папки желтые
Папка — одна из самых известных метафор экранных интерфейсов.  Это очень мощный и сильный символ. За достаточно короткий период времени он сумел затмить термин, который был призван обозначать.  Понятие «директория» или «каталог» канули в Лету. Хотя «папка» когда была лишь метафорой для их обозначения в графических оболочках.

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

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

jQuery плагин визуального стека сообщений

Reading time2 min
Views3.8K
Стояла задача динамического визуального отображения реакции на действия пользователя со стороны системы.
Другими словами: изменилось какое-то состояние объекта — вывести сообщения об удачном завершении сохранения изменения в базе/системе.
Написание плагина не заставило себя ждать...
 
Читать дальше →

Динамические поддомены с использованием nginx+apache

Reading time3 min
Views29K
Этот топик — очередной топик про реализацию динамических поддоменов на сайте, коих много в интернете и даже есть пара топиков на хабре.

Проблема в том, что этот вопрос везде освещается только с точки зрения перенаправления с поддомена в папку и вся динамичность поддомена заключается в том, что ты создал папку — поддомен у тебя заработал.

Иногда же требуется решение другой проблемы — например вынос на поддомен профиля пользователя и всего функционала, который с ним связан.

Например, у нас есть готовый сайт, на котором работают профили по такому url: www.example.com/users/username, и есть всякие дополнительные возможности (например www.example.com/users/username/contact и другие страницы, связанные с этим юзером).

И мы теперь хотим вынести все, что связано с юзером, на поддомен, например username.example.com, username.example.com/contact и т.д.)

Решения, которые были найдены в интернете, меня не удовлетворили по 2 причинам:
  • Не нашел решения как заставить ее работать, сохранив работоспособность домена www.example.com
  • Все найденные решения подходят только для перенаправления в папку и не работают если дальше должны работать какие то правила


На нашем сайте стоит nginx над апачем (как и на многих других), поэтому пришлось изобретать велосипед самому, используя эту связку (nginx+ apache, благо сейчас почти на всех крупных сайтах стоит проксирующий nginx над апачем)

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

Версионность и история данных

Reading time5 min
Views142K
При разработке баз данных зачастую требуется обеспечить поддержку версионности и хранения истории объектов. Например, у работника может изменяться должность, у должности в свою очередь может меняться оклад — в многомерном моделировании это называется Slowly changing dimensions(далее SCD) — редко изменяющиеся измерения, то есть измерения, не ключевые атрибуты которых имеют тенденцию со временем изменяться. Всего существует 6 основных типов(методов) SCD, которые определяют как история изменений может быть отражена в модели.

Подробнее...

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity