Как стать автором
Обновить
22
@Delphirread⁠-⁠only

Пользователь

Отправить сообщение

Разбираемся с построением мультирегиональных сайтов

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


Варианты построения URL-ов

Конечно, в жизни существует больше групп, например, часть сайтов хранят региональные настройки в cookie-файлах, другие передают параметром ?lang=ru, однако это непопулярные решения и основными являются:

1. Версия сайта на другом домене:

example.com, example.ru
Самый кардинальный способ. Этот вариант может быть удобен компаниям, имеющим локальные представительства в разных странах и работающих относительно независимо от главного офиса, например, на другом движке сайта.

2. Версия сайта на поддомене:

ru.example.com, ua.example.com
Очень похож на предыдущий вариант, но легче в администрировании. Эти два варианта легко реализуются на физически разных хостах, поэтому могут быть размещены в разных странах.

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

Уязвимость в почте mail.ru, позволяющая сменить пароль на любом ящике без секретного вопроса

Время на прочтение2 мин
Количество просмотров416K

Mail.Ru — The Ghost Question Bug!


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

На днях я решил заново взяться за базу примари на mail.ru и побрутить ящики по секретным вопросам. В 2011 году было снято несколько сотен ящиков и по этому встал вопрос: где взять актуальные ответы!?
Недолго думая я обратился к недавно найденной хитрости. С её помощью можно узнать имя и фамилию от любого зарегистрированного ящика в mail.ru. Для этого проходим по ссылке www.icq.com/download/webicq/ru, входим в аську и в поиске вбиваем желаемое мыло.
В ответе нам приходит имя и фамилия из информации о владельце ящика, дата рождения и город.
Читать дальше →

Оперативная реакция на DDoS-атаки

Время на прочтение4 мин
Количество просмотров51K
Один из ресурсов, за которым я присматриваю, вдруг стал неожиданно популярным как у хороших пользователей, так и у плохих. Мощное, в общем-то, железо перестало справляться с нагрузкой. Софт на сервере самый обычный — Linux,Nginx,PHP-FPM(+APC),MySQL, версии — самые последние. На сайтах крутится Drupal и phpBB. Оптимизация на уровне софта (memcached, индексы в базе, где их не хватало) чуть помогла, но кардинально проблему не решила. А проблема — большое количество запросов, к статике, динамике и особенно базе. Поставил следующие лимиты в Nginx:

на соединения
limit_conn_zone $binary_remote_addr zone=perip:10m;
limit_conn perip 100;

и скорость запросов на динамику (fastcgi_pass на php-fpm)
limit_req_zone $binary_remote_addr zone=dynamic:10m rate=2r/s;
limit_req zone=dynamic burst=10 nodelay;

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

Но плохиши продолжали долбить, и захотелось их отбрасывать раньше — на уровне фаервола, и надолго.

Сначала сам парсил логи, и особо настырных добавлял через iptables в баню. Потом парсил уже по крону каждые 5 минут. Пробовал fail2ban. Когда понял, что плохишей стало очень много, перенёс их в ipset ip hash.

Почти всё хорошо стало, но есть неприятные моменты:
— парсинг/сортировка логов тоже приличное (процессорное) время отнимает
— сервер тупит, если началась новая волна между соседними разборками (логов)

Нужно было придумать как быстро добавлять нарушителей в черный список. Сначала была идея написать/дописать модуль к Nginx + демон, который будет ipset-ы обновлять. Можно и без демона, но тогда придётся запускать Nginx от рута, что не есть красиво. Написать это реально, но понял, что нет столько времени. Ничего похожего не нашёл (может плохо искал?), и придумал вот такой алгоритм.

При привышении лимита, Nginx выбрасывает 503-юю ошибку Service Temporarily Unavailable. Вот я решил на неё и прицепиться!

Для каждого location создаём свою страничку с ошибкой
error_page 503 =429 @blacklist;

И соответствующий именованный location
location @blacklist {
    fastcgi_pass    localhost:1234;
    fastcgi_param   SCRIPT_FILENAME    /data/web/cgi/blacklist.sh;
    include         fastcgi_params;
}

Дальше интересней.
Нам нужна поддержка CGI-скриптов. Ставим, настраиваем, запускаем spawn-fcgi и fcgiwrap. У меня уже было готовое для collectd.

Сам CGI-скрипт
Читать дальше →

Использование драйверов из Android приложения

Время на прочтение7 мин
Количество просмотров46K
Рут даёт практически абсолютную власть над Android устройством. Сегодня я расскажу вам как получить еще больше имея склонность к программированию и желание исследовать систему на своём устройстве. Кто заинтересовался — прошу под кат.
Читать дальше →

Уроки рисования или как снимался фильм «Секунда свободного падения»

Время на прочтение7 мин
Количество просмотров17K
На киносъемках очень популярна фраза: «А, фиг с ним, на постпродашкене дорисуем!». Такой чудесной вещи, как доработке на постпродакшене съемочного «фиг с ним», и посвящена сия статья. Здесь я расскажу о личном опыте и пользе использования данного заклинания во время работы над короткометражным фильмом «Секунда свободного падения», режиссёром коего являюсь.





До начала съемок я не планировал пользоваться цифровой обработкой вообще (за исключением разве что цветокоррекции), желая добиться максимально реалистичного изображения. Ну-ну!.. Волшебное «фиг с ним» имеет невероятную мощь, всем чародеям известно это!
Читать дальше →

Таблица для выбора диагонали экрана и разрешения

Время на прочтение2 мин
Количество просмотров184K
Когда у вас возникнет вопрос, как выбрать диагональ экрана, или в каком разрешении скачать фильм, предлагаю воспользоваться таблицей Головина для выбора диагонали экрана (pdf, 85 Кб). Название я придумал сам, надеюсь, Головин был бы не против.



С появлением первых телевизоров с разрешением 4к (3840 × 2160), я хотел обновить график для определения оптимального расстояния до экрана. Но, поскольку там указаны рекомендуемые расстояния, это бы снова вылилось в субъективные обсуждение возможностей зрения каждого. Новая таблица, теоретически, должна помочь каждому сделать выбор, в не зависимости от остроты зрения.

Инструкция и теория

Загадка выпадающего списка «Амазона»

Время на прочтение2 мин
Количество просмотров192K
Бен Кэменс обнаружил, что в выпадающем списке Shop by Department на сайте «Амазон» ховер-эффект происходит очень быстро, абсолютно без какой-либо задержки. Тем самым происходит нарушение старого, выработанного ещё в 90-х годах прошлого века правила: перед отображением пункта подменю необходим так называемый гистерезис, запаздывание.



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

Увеличиваем прибыль от iOS приложения втрое. Никакого продвижения, только техника…

Время на прочтение6 мин
Количество просмотров74K
Привет, Хабрахабр!

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



Кому интересно, добро пожаловать под кат.
Читать дальше →

Еще один клон Dropbox с возможностью установки своего сервера или ownCloud против Seafile

Время на прочтение5 мин
Количество просмотров30K
Я давно искал замену Dropbox на что-то, чтобы можно было полностью управлять сервером, размер хранилища ограничивался бы только размером диска на сервере и при этом клиент должен быть интуитивно понятным, запускаться под Linux/MacOS/Windows, уметь синхронизировать директорию на локальном компьютере без необходимости монтирование каких либо удаленных источников, т.е. иметь доступ к файлам в оффлайне. Ниже я расскажу о своем опыте использования ownCloud и Seafile.
Читать дальше →

Европейцы и европейские языки: переводить или не переводить?

Время на прочтение5 мин
Количество просмотров48K
Европа известна своим языковым разнообразием: в этой части света говорят на 23 официальных языках и более чем на 60 региональных языках коренного населения. К тому же согласно полному докладу Европейской комиссии от 2012 года «Европейцы и европейские языки» множество мигрантов, приехавших в Европу, разговаривают на своих родных языках.

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

Недавно компания TNS, которая проводит исследования общественного мнения и социальных сетей в 27 государствах Европейского союза, подготовила отчет о том, как европейцы используют и воспринимают языки. И мне хотелось бы ознакомить вас с несколькими самыми интересными выводами, сделанными в этом документе.
Читать дальше →

Вскрытие клавиатуры Logitech Illuminated K800

Время на прочтение3 мин
Количество просмотров54K
О тактильных ощущениях, удобстве пользования, стильности внешнего вида Logitech Illuminated К800 уже достаточно написано в разного вида обзорах. Поговорим о грустном. Так случилось, что на клавиатуру было пролито пиво. Быстрое смахивание и вытряхивание жидкости не помогло – внутрь попало приличное количество напитка, но она продолжала работать. На следующее утро клавиатура самопроизвольно начала выдавать бессмысленные сочетания символов, а после и вовсе воцарилась тишина, отвечали только пара клавиш, да и те печатали не то, что на них изображено. Случай это не гарантийный, поэтому и решил разобрать клавиатуру. Кому интересно, что там внутри и как это можно открыть, прошу под кат.
Читать дальше →

Улучшаем схему питания беспроводной клавиатуры

Время на прочтение2 мин
Количество просмотров71K
Была у моего товарища проблема с беспроводной клавиатурой — быстро в ней садились батарейки.
Причем, когда они садились, она могла еще долго работать, но «дальнобойность» резко уменьшалась до полной неюзабельности. А я на днях как раз решил испробовать отличную микросхемку — NCP1402. Показал товарищу ее возможности, а ему пришла идея использовать ее для решения проблем с питанием клавиатуры.


За подробностями — прошу под кат.
Читать дальше →

Интернет-радиостанция на Liquidsoap + IceCast

Время на прочтение11 мин
Количество просмотров61K
liquidsoapДовольно много на хабре сказано про интернет-радиовещание изнутри. Есть даже хорошо написанные теоретические основы интернет-радиовещания, с которыми советую ознакомиться. В данной статье я бы хотел рассказать об организации ещё одной любительской интернет-радиостанции, построенной на связке незаслуженно малоизвестного Liquidsoap 1.0.1 и вездесущего IceCast 2.3.2. Статья расчитана на тех, кто хотя бы приблизительно знает, что такое аудиопоток, IceCast, линуксовская консоль и таки что он вообще хочет получить. Однако она и написана начинающим пользователем, поэтому моё решение даже не зарекается на звание оптимального.
Читать дальше →

Приём онлайн платежей в Европе в 2013 году

Время на прочтение6 мин
Количество просмотров31K
Чтобы зарабатывать деньги в сети, у вас должна быть возможность принимать платежи. Это может казаться простым, но в действительности это не совсем так, и американские подрывные инновационные компании, такие как Stripe и Square, пока ещё не функционируют в Европе.

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

Почему это сложно


Самый простой способ приёма платежей онлайн – это использование банковской карты (кредитной или дебетовой). За всеми карточными платежами стоит определённое количество банковских операций. Законы о защите прав потребителей позволяют покупателям требовать у своего банка возврата денег, если что-либо пойдет не так (например, если они заплатили за товар, но не получили его). Если банк не сможет получить эти деньги от предприятия, принявшего платёж, он терпит убытки.
Читать дальше →

Автономный радиоТермометр на msp430, NRF24L01+ и солнечных батареях

Время на прочтение3 мин
Количество просмотров118K

Начиная упражнения с серией микроконтроллеров msp430 сразу обратил внимание на мизерные потребления энергии в дежурных (low power mode) режимах. Всегда хотелось собрать максимально автономный радиотермометр, чтобы прибить его гвоздями к дереву напротив дома и максимально уменьшить влияние выходящего из дома тепла на точность показаний. Радиотермометр на батарейках, даже если их хватает на годы — тоже не особо гуд, лазить на дерево с целю замены батарейки не всегда здорово, особенно в плохую погоду. Решил попробовать схему питания от солнечных батарей.

Что из этого получилось

Восстановление доступа к Amazon EC2 instance при потере pem-файла

Время на прочтение3 мин
Количество просмотров15K
Однажды Ubuntu на ноутбуке перестала запускаться, ругаясь на поврежденную xfs на диске. Мало того, на нем хранился проект, над которым я работаю. Был, правда, git-репозиторий на EC2 машине, однако pem-файл лежал на этом же диске.
Упомяну так же, что не ставил на сервер FTP, доступ по SFTP нельзя было бы получить без ключа.
Конечно можно долго говорить о прелестях резервного копирования, однако пришлось искать способ как восстановить доступ к облачной машине, чтобы не потерять уже сделанную работу.
Читать дальше →

Легальный вывод денег из oDesk в РФ

Время на прочтение40 мин
Количество просмотров55K
Здравствуйте!

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

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

Миникомпьютер из роутера с OpenWRT: пишем USB class-driver под Linux

Время на прочтение20 мин
Количество просмотров79K

Добрый день, уважаемые хабровчане. В прошлой статье мы с вами разработали простую USB-видеокарту на базе STM32F103 и китайского дисплейного модуля на контроллере ILI9325.
Проверяли мы его из юзерспейса, при помощи LibUSB. Ну что ж, пришло время нам написать свой собственный драйвер, который позволит делать все то же самое, но из-под Linux и без дополнительных библиотек. Этот драйвер мы внесем в дерево исходников OpenWRT и он поселится там наравне со всеми остальными.
Начнем.
Читать дальше →

Визуализация графа социальной сети: анализ событий блогосферы перед декабрём 2011 года

Время на прочтение6 мин
Количество просмотров35K
Это логическое продолжение статьи "Построение графа социальной сети с помощью Drupal и Feeds"

Я в составе группы занимался собором информации из блогосферы. Задачей было оценить напряженность, активность политических дискуссий в период избирательной кампании выборов в Государственную Думу. Забегая вперед скажу, что исследование позволило выдвинуть гипотезы, которые позже подтвердились. В частности, по результатам, о которых вы прочтете ниже можно понять, кто же будет выходить на площади и выводить за собой людей. И главное, за кем они пойдут.
Читать дальше →

Вновь об автоматизации инвентаризации

Время на прочтение10 мин
Количество просмотров81K

Введение


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



До Амазона, с его роботами, мы конечно пока не доросли, но, тем не менее, инвентаризацию товаров как то надо проводить. Вот если бы каждый товар можно было бы однозначно идентифицировать! И тут не пришлось изобретать ни одного велосипеда. Каждая единица товара однозначно идентифицирует себя с помощью штрихкода. Этого более чем достаточно для автоматизации сбора информации. В этой статье я попробую изложить мой опыт внедрения технологии инвентаризации с помощью терминала сбора данных.
Подробнее ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность