Pull to refresh
0
0
Alexzander thunder Shevchenko @thunderspb

DevOps

Send message

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

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


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

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

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

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

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

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

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

Как я Quake в браузере делал

Reading time5 min
Views102K

2 месяца назад я выложил на GitHub первую бета-сборку WebQuake — порта первого Quake, работающего в браузере через WebGL.

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

Генерация случайных лиц в PaperJS

Reading time1 min
Views27K


Синтетические изображения обычно выглядят неестественно, не по-человечески, и тренированный глаз сразу их отличает от настоящих. Проект Weird Faces Study — это попытка объединить традиционную технику «человеческого» рисунка и компьютерные алгоритмы. Результат — сгенерированные компьютерные лица, каждое из которых уникально и выглядит как оригинальная авторская работа.
Читать дальше →

PHP HTML DOM парсер с jQuery подобными селекторами

Reading time3 min
Views146K
Добрый день, уважаемые хабровчане. В данном посте речь пойдет о совместном проекте S. C. Chen и John Schlick под названием PHP Simple HTML DOM Parser (ссылки на sourceforge).

Идея проекта — создать инструмент позволяющий работать с html кодом используя jQuery подобные селекторы. Оригинальная идея принадлежит Jose Solorzano's и реализована для php четвертой версии. Данный же проект является более усовершенствованной версией базирующейся на php5+.

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

Веб-чат от Mozilla на JavaScript

Reading time1 min
Views23K
Фонд Mozilla из недр своей тестовой лаборатории выкатил новую возможность Tow Truck в альфа-версии, который представляет из себя интегрированный прямо в веб-страницу чат, который практически не требует от разработчика поддержки — при этом присутствуют возможности обмена текстовыми сообщениями и голосом, а также разделения контента страницы в реальном времени.

Схема работы следующая — на страницу требуется добавить JS-библиотеку:



и кнопку для включения работы TowTruck примерно так:.

Start TowTruck

Узнать подробности

RPG для обучения детей программированию на Java

Reading time2 min
Views126K

Java считается мало подходящим для того, чтобы стать первым языком программирования, в отличие от того же Pascal или Python, тем более для детей. Однако, это обстоятельство не остановило специалистов университета Калифорния (Сан-Диего) от любопытного эксперимента, который, по их словам, показал вполне успешные результаты — ими была разработана игра CodeSpell для обучения детей Java в ходе игрового процесса.

Игра представляет собой нечто вроде RPG от первого лица с довольно скромной на сегодня графикой и весьма типичным сюжетом. Игрок — волшебник в стране, населённой гномами, которые по некоторой причине утратили свои магические способности. Задача игрока — помогать гномам при помощи своей магии, которая представляет из себя Java-код, выполнение которого приводит к модификации предметов и влиянию на окружающий мир: левитация, полёты, уничтожение огнём и тому подобное. Игра «помогает» игроку различными способами, начиная от подсказок и заканчивая чем-то на подобие дополнения кода, так что раздражения по поводу заклинания на Java «как разрушить это препятствие» у школьников не должно возникнуть.

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

Легко настраиваемый python daemon

Reading time2 min
Views60K
В какой-то момент мне потребовалось демонизировать некоторое действие на python. В сети валялась куча примеров подобной деятельности разной степени собранности. Так как в дальнейшем предполагалось использовать код демонизации в дальнейшей деятельности я решил разнести на разные части настройки и собственно демона.
В итоге файлов получилось три:
  • Родительские классы — с небольшим изменением классы взятые из интернет статей
  • Классы настройки — реакция на сигналы, реакция на команды и набор статических настроек для запуска
  • Скрипт запуска — собирает первые два в собственно демона


Дальше я попробую описать логику работы всех трех.
Читать дальше →

Regexponline – интерактивный анализатор и редактор регулярных выражений

Reading time4 min
Views53K
Есть одна бородатая шутка: «если у вас есть проблема, и вы собираетесь решать ее с использованием регулярных выражений, то у вас есть две проблемы». Действительно, регулярные выражения – очень мощный и гибкий инструмент, применяемый для решения весьма широкого круга задач. Но, как водится, для поддержания баланса, такой серьёзный инструмент имеет весьма недружелюбный вид.

(<([a-z]+[^>]*)>)(.*)(</\2>)

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

image

Когда-то и мне пришлось по долгу службы подружиться с регулярными выражениями. Прочитав Фридла и несколько статей на Хабре, я, конечно, начал понимать этот синтетический язык. Тем не менее, каждый раз, когда приходилось написать очередную регулярку, я быстро закапывался в нагромождении скобок, слешей, точек, плюсов, знаков вопроса, и других хорошо вам знакомых конструкциях. Разобраться в этой каше было очень сложно, особенно если возвращаешься к задаче месячной давности. Я мечтал об инструменте, который помог бы мне разобраться в собственном творении. Приблизительно подходящих по смыслу сервисов нагуглилось с десяток, но все они приносили мало пользы. Как раз тогда я и начал разрабатывать этот проект.

Итак, regexponline – инструмент, способный наглядно изобразить структуру регулярного выражения, разобрав его по элементарным компонентам; продемонстрировать совпадающие и не совпадающие его части; помочь в написании и отладке выражения, которое почему-то не совпадает с нужной строчкой.
Читать дальше →

50 потрясающих плагинов jQuery

Reading time1 min
Views89K

Кто-то вчера шутил, а кто-то занимался реально полезными вещами. Как например болгарский разработчик Мартин Ангелов, опубликовавший впечатляющий обзор JS библиотек:
http://tutorialzine.com/2013/04/50-amazing-jquery-plugins/
Настоятельно рекомендуется к обозрению.
PS Куда-то пропал тип топика «Ссылка» :(

Уведомления о завершении консольных команд

Reading time1 min
Views24K
Undistract-Me — простая, но чрезвычайно полезная в хозяйстве утилита, которая делает одну вещь — выводит уведомление, когда длинная команда (по умолчанию 10 секунд, но можно настроить) завершила свое исполнение.



Также показывает название этой команды и время, которое она заняла. Должно работать со всеми окружениями рабочего стола.
Особенно хороша, когда вы, например, решили чего-нибудь скомпилировать, и не хотите все время пялиться в черный экран или проверять каждую минуту работает ли оно еще. Теперь во время пересборки ядра вы сможете наслаждаться своими любимыми видео с кошечками!
Читать дальше →

Exim + DKIM на примере FreeBSD 8.2

Reading time4 min
Views44K

Что такое DKIM и как оно работает


DKIM (расшифровывается как DomainKeys Identified Mail) — метод идентификации письма по доменным ключам.
DKIM настраивается на почтовом сервере для того, чтобы подписывать исходящие письма цифровой подписью. Наличие такой подписи в заголовке отправленного письма сообщает серверу-получателю, что оно действительно было отправлено с указанного домена.
Известно, что в СПАМ-письмах часто в поле From: ставят е-mail, не имеющий совершенно никакого отношения к отправителю. В этом случае DKIM поможет распознать реальное письмо от спама. В отличие от других методов цифровой подписи письма, DKIM совместим с существующими форматами и протоколами и может быть плавно интегрирован в имеющиеся системы доставки и получения почты.

Подпись письма происходит на SMTP-сервере с помощью секретного ключа (Private key), а расшифровка подписи происходит на сервере-получателе или клиентской программе с помощью публичного ключа (Public key). Что интересно, публичный ключ хранится в DNS, что позволяет убить сразу двух зайцев. Во-первых, нет необходимости прикладывать Public key с каждым письмом для его расшифровки. А во-вторых, в таком случае DKIM позволяет сообщать серверам-получателям что делать с письмом, которое не имеет цифровой подписи, но якобы отправлено от вас. Эта технология называется ADSP (Author Domain Signing Practices). ADSP также хранится в DNS SMTP-сервера и доступен всем и отовсюду.

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

Балансировка входящих соединений на iptables

Reading time3 min
Views27K
Предположим, что у вас есть некий сервис, принимающий входящие соединения и возникла задача балансировки нагрузки и/или отказоустойчивости.

В общем виде схема выглядит так:
клиент ----> балансировщик ---> бэкенд (сервис)


Готовых балансировщиков под конкретные нужды множество. Например, nginx — отличный балансировщик для веб-приложений, haproxy для tcp-соединений.

Так почему iptables?

Dater — определяет часовой пояс, локализует и форматирует время в PHP

Reading time4 min
Views22K


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

А что если хочется просто несколько строчек кода, и чтобы весь остальной код никогда не узнал, что данные клиенту нужно отдавать в другом часовом поясе, и что в данных пришедших от клиента время может быть указано с часовым поясом отличным от серверного? Для решения этой и многих других задач, сегодня я расскажу вам про одну лаконичную и функциональную библиотеку для PHP.

И так, встречайте — Dater, и его основные возможности:

  • Биндинг форматов
  • Локализация текстов и форматов
  • Расширение списка опций форматирования
  • Автоопределение часового пояса
  • Конвертация времени с учётом часового пояса
  • Автоматическая конвертация времени в $_GET, $_POST, $_REQUEST с учётом часового пояса
  • Автоматическая конвертация часового пояса в шаблоне отправляемых данных
Читать дальше →

CMS Koken для фотогалерей

Reading time3 min
Views69K


Появилась надобность создать сайт с фотогалереей. И пошел искать CMS для сих утех. После некоторого поиска обнаружил неприятную тенденцию. Есть CMS для фотогалерей, но не с современной навигацией, без Lightbox и так далее. Есть красивые HTML шаблоны с всякими вкусностями (например, Gamma Gallery), но без системы управления контентом. Рассматривать Wordpress и др. для сайта только с фотками — слишком накладно. Даже опечалился, но поиск натолкнул на одну новую CMS Koken. После небольшого рассмотрения понял, что это именно то, что мне нужно: первоклассная админка с множеством настроек, и современное отображение галерей. А с напильником так вообще красота получается.
Читать дальше →

Перестаньте учить английские слова

Reading time4 min
Views464K
Шесть советов тем, кто хочет выучить язык и переводить.

Иллюстрация с сайта speakoutitalian.com

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

Мой первый совет и главное, что стоит запомнить из заметки — бросьте запоминать слова. Учите грамматику.

Это ещё зачем?

Общественный транспорт в мобильном телефоне

Reading time5 min
Views7.3K
Сейчас уже во многих городах появились сервисы, которые показывают движение общественного транспорта на карте. Наш Курган — не исключение. Вот только одна проблема: чтобы просмотреть, где едут автобусы, нужен компьютер или хотя бы мощный смартфон, который сможет загрузить всю карту. Если же вы много перемещаетесь по городу, то максимум, что у вас есть под рукой — обычный телефон, на котором ни о какой карте не может быть и речи.

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

Итак, поехали...

Браузерный TTD: закрытое тестирование сетевой игры

Reading time1 min
Views5.9K
Всем доброго времени суток. Особенно любителям игры Transport Tycoon Deluxe. Напомню, что я занимаюсь портированием OpenTTD на JS и в последние время работал над портированием сетевой части игры. Сейчас промежуточные сборки позволяют играть по сети на одном игровом сервере. На данный момент сервер может принять до 255 игроков, а в одной игровой сессии может быть созданно до 15 компаний. Компанией может управлять как один, так и несколько человек (бекэнд — обычный OpenTTD сервер). Что бы не ударить в грязь лицом, я бы хотел провести закрытое тестирование.
Читать дальше →

10 девайсов, которые вы можете проапгрейдить, немного поковырявшись с электроникой

Reading time4 min
Views180K

Правило №1 в DIY: никогда не довольствуйтесь тем, что вам дано. Вы можете проапгрейдить или улучшить все что угодно обладая скромными познаниями и приложив немного усилий, особенно если вы немного знакомы с электроникой. Под катом 10 домашних предметов, которые вы можете круто прокачать, используя капельку припоя и ряд DIY ноу-хау.
Читать дальше →

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

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



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

Получаем бесплатный SSL сертификат

Reading time4 min
Views517K
Привет, хабр!

О StartSSL я узнал от небезызвестного lissyara, в связи с чем ему очень благодарен.

Для начала расскажу, что же за зверь это. Как известно, SSL сертификаты выдаются центрами сертификации, чьи корневые сертификаты хранятся в хранилище сертификатов браузера\ОС (либо другого ПО, использующего SSL). Цена на большинство сертификатов зашкаливает, и платить приходится за каждый сертификат. Но у StartSSL весьма интересный подход — сами сертификаты у них бесплатные, вы платите только за проверку вашей личности.

Так же не может не радовать наличие русскоязычной поддержки.
Читать дальше →

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity