Ctrl + ↑ Позднее

Если вы встретились с подобной хернёй в логах, то сразу отключать весь APC будет слишком расточительным решением.

Достаточно про

13 июля 2014, 12:57

Умный ф

Если вы делаете умный фильтр на своём сайте, будет полезным показать посетителю количество результатов после очередного поиска. Например 2ГИС по

4 июля 2014, 23:31

Минимальный UI в Safa

С помощью <meta>-тега viewport можно сделать так, чтобы адресная строка браузера в Сафари, а также нижняя панель с кнопками была по-умолчанию скрыта:

Для этого в значение тега через запятую допишите minimal-ui, вот так:

<meta name="viewport" content="width=device-width, init

Помните, этот анекдот?

— Простите, бабушка, я вам на ногу наступил!
— Не волнуйся, внучек, я тебе уже на спину плюнула.

Сегодня его можно перефраз

27 июня 2014, 19:07

Ctrl+

Если вы на сайте используете навигацию через комбинации клавиш и пишете про эти комбинации на сайте, н

И выдаёт ошибку вида:

[root@host.ru ~]# service nginx start
Starting nginx: nginx: [alert] mmap(MAP_ANON|MAP_SHARED, 268435456) failed (12: Cannot allocate memory) [FAILED]

Решение:

  1. Заходим в файл /etc/nginx/bx/conf/im_settings.conf
  2. Уменьшаем значение памяти в директиве push_stream_shared_memory_size до 1-2 МБайт.

По

11 июня 2014, 20:02

Блокировки в

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

Для этого можно пользоваться очень простой и короткой «библиотекой» (не уверен, что так можно назвать пять строк кода, но всё же):

(function() {
    var blocks = {};
    window.setBlock = function(name) { if (name in blocks) return false; return blocks[name] = true; }
    window.clearBlock = function(name) { delete blocks[name]; return true; }
})();



Как это действует:

  1. Функция setBlock() ставит блокировку по указанному коду. Если блокировки не было — возвращает true, если блокировка уже есть, возвращает false.
  2. Функция clearBlock() снимает блокировку по указанному коду.

Пример использования данных функций:

$('.my-submit').on('click', function() {
    if (setBlock('my-form-submit')) {
        // Устанавливаем блокировку в первый раз.
        // Тут можно ещё, например, выставить кнопке параметр disabled.

        // Отправляем нашу форму
        $.post('form-submit.php', function() {
            // Обрабатываем ответ формы, как это необходимо.

            // После обработки снимаем блокировку: теперь форму можно отправлять снова
            clearBlock('my-form-submit');
        }).fail(function() {
            // Эта функция будет выполнена, если произойдёт ошибка связи (скажем, у пользователя сломается интернет).
            // В таком случае нам важно снять блокировку, чтобы пользователь мог отправить форму снова,
            // 

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

99% сервисов для обмена мгновенными сообщениями работают за счёт промежуточных серверов, которые занимаются передачей сообщений между адресатами. Это выглядит так: вы отправляете сообщение; оно попадает на промежуточный сервер; далее сервер находит получателя и передаёт ему ваше сообщение.

При этом, если сервер получил ваше сообщение, то вы ему больше не нужны: сообщение хранится на сервере и ждёт, пока получатель станет доступен для доставки.

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

Скайп входит в тот один процент, который устроен иначе. У скайпа нет никаких промежуточных серверов, есть только вы и ваш собеседник. Схема работы скайпа выглядит иначе: вы отправляете сообщение; ваш собственный компьютер хранит сообщение и ждёт, пока получатель появится в сети; ваш собственный компьютер доставляет сообщение получателю, когда тот появляется в сети. Такая схема называется пиринговой сетью.

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

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

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

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

Не следует использовать скайп для отправки важных рабочих сообщений. Для этого лучше пользоваться электронной почтой.

8 июня 2014, 9:56

Пеп

Ctrl + ↓ Ранее