Pull to refresh
0
0
Кротов Артур @Archy

User

Send message

BOOTSTRA.386: тема для Bootstrap в духе 1980-х

Reading time 1 min
Views 109K
Оказывается, некоторые темы для Bootstrap — это маленькие произведения искусства. В рамках надвигающейся пятницы хотелось бы рассказать об одной из таких тем.

Крис МакКензи — явно один из тех, кто скучает по старым добрым временам DOS, EGA/VGA и Turbo Vision, иначе он вряд ли бы решился сделать что-то подобное. Так что если вы успели устать от засилья плоского дизайна, то добро пожаловать в мир BOOTSTRA.386!

Осторожно: будьте готовы к острому приступу ностальгии. Единственное, чего не хватает для полного погружения — так это навигации с клавиатуры, ну и курсора в виде прямоугольного блока.

image

Читать дальше →
Total votes 201: ↑192 and ↓9 +183
Comments 45

Эксперимент Милгрэма

Reading time 4 min
Views 38K
image

В 1963-м году профессор Йельского университета Стэнли Милгрэм решил провести эксперимент. Он хотел узнать, как в годы Второй Мировой войны немецкие граждане, фактически против своей воли, исключительно по приказу свыше, могли уничтожать миллионы людей в концлагерях. Милгрэм предполагал, что жители Германии изначально склонны к повиновению, поэтому даже несмотря на моральные страдания всегда будут подчиняться.

Перед поездкой в Германию Милгрэм решил провести один пробный эксперимент в США. Его результаты показали, что в Германию можно уже не ехать…
Читать дальше →
Total votes 232: ↑196 and ↓36 +160
Comments 226

Вертикальное выравнивание в div'ах

Reading time 1 min
Views 1.9K
По мотивам cssing.org.ua.

Для вертикального выравнивания в блоках разработчики W3C создали замечательное свойство display: table-cell;, которое позволяет заставить какой-либо элемент отображаться как ячейка таблицы. При этом добавив vertical-align: middle; мы прекрасно справились бы с поставленной задачей, если бы не Internet Explorer, который ни в какую не хочет поддерживать свойство display: table-cell;.

читать дальше
Total votes 21: ↑18 and ↓3 +15
Comments 31

Forrester исследовал «социальную технографику»

Reading time 1 min
Views 635
Аналитики из компании Forrester Research тщательно исследовали феномен, известный нам как правило одного процента, которое в упрощённом виде гласит, что если взять онлайн-группу из 100 человек, то всего лишь один человек будет создавать контент, девять — обеспечивать «интерактив» (оставляя комментарии или предлагая улучшения); остальные 90 пользователей ограничатся просмотром, то есть пропорция 1–9–90… В терминологии Forrester этот феномен называется «социальная технографика». Результаты проведённого опроса изображены на графике.


Читать дальше →
Total votes 27: ↑24 and ↓3 +21
Comments 15

eBoy — пиксельные человеки

Reading time 1 min
Views 3.5K
Пиксельная графика уходит в прошлое? Ничего подобного! У этой техники есть масса приверженцев. Надеюсь, что после этой небольшой заметки их станет еще больше.

Мой рассказ о немецкой студии пиксельного дизайна eBoy.
eBoy
Читать дальше →
Total votes 80: ↑79 and ↓1 +78
Comments 37

Факторы, влияющие на релевантность блога в Google Blogsearch

Reading time 1 min
Views 605
В отличие от многих поисковиков по блогам, поисковик Google по умолчанию выводит результаты в зависимости от релевантности. Опубликованный патент даёт ответ на вопрос, в зависимости от чего ранжируются блоги в результатах поиска.

Позитивным для блога являются:
  • ссылки на блог в других блогроллах;
  • ссылки на блог с других сайтов, которые не являются блогами;
  • использование тегов для категоризации контента;
  • PageRank;
  • количество подписчиков на RSS блога;
  • кол-во переходов со страниц результатов поиска и т.д.

Негативно влияют следующие факторы:
  • публикация постов через короткие промежутки времени с чётким интервалом;
  • контент блога отличается от содержания RSS;
  • повышенное содержание ключевых слов, которые считаются «спамерскими»;
  • большое количество дублирующегося контента;
  • одинаковый или почти одинаковый размер постов;
  • ссылки на один и тот же сайт во многих постах;
  • большое количество рекламных блоков, баннеров и их расположение и т.д.
via
Total votes 27: ↑24 and ↓3 +21
Comments 10

Не стоит бояться использовать HandlerSocket

Reading time 12 min
Views 20K

(пример работы протокола HandlerSocket на картинке)

Вступление


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

HandlerSocket — это протокол, реализованный в одноимённом плагине для РСУБД MySQL, позволяющий использовать NoSQL методику для доступа к данным, хранящимся в InnoDB таблицах. Основная причина, по которой используют NoSQL решения — это очень быстрый поиск по первичному ключу.

Еще про HandlerSocket
HandlerSocket работает как демон внутри процесса mysql, принимая TCP соединения и выполняя запросы клиентов. Он не поддерживает SQL запросы, вместо этого он предоставляет простой язык запросов для CRUD операций с таблицами. Именно поэтому он гораздо быстрее mysqld/libmysql в некоторых случаях:

HandlerSocket оперирует данными без парсинга SQL запроса, что приводит к уменьшению загрузки процессора.
Он поддерживает пакетное выполнение запросов. Можно отправить несколько запросов сразу и получить результат за один раз, что опять же снижает нагрузку на процессор и на сеть.
Протокол HandlerSocket более компактный, чем у mysql/libmysql, что приводит к сокращению нагрузки на сеть.

Подробнее можно почитать здесь:



Под катом вас ожидает:
  • Новая библиотека для работы с HS, написанная на PHP;
  • Сравнение производительности существующих решений + нового;
  • Symfony2 bundle для работы с HS;
  • Плагины к Munin для мониторинга активности HS;
  • Разные мысли вслух и рассказы о «шишках».

Читать дальше →
Total votes 39: ↑38 and ↓1 +37
Comments 15

Приводим в порядок css-код. Опыт Яндекса

Reading time 6 min
Views 89K
Всем привет!

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

Когда много людей, используя разные инструменты, пишут и редактируют css, со временем этот css может получиться очень запутанным, неконсистентым и в целом начинает выглядеть плохо. Например, кому-то удобнее писать вендорные префиксы в одном порядке, кому-то — в другом, кто-то ставит кавычки вокруг url, кто-то — нет, а кто-нибудь фикся срочную багу к релизу мог бы, к примеру, написать position: relative в начале блока свойств, незаметив что где-нибудь внизу между color и box-shadow, уже есть position: absolute, и долго гадать, почему у него ничего не работает.



Но несмотря на то, что все пишут код по-разному, у нас в репозитории идеальный порядок: css-код полностью консистентен, и прекрасно выглядит. Весь.

Как мы этого добились, можно прочитать под катом.
Читать дальше →
Total votes 174: ↑169 and ↓5 +164
Comments 70

Приемы неявного вызова php кода, применяемые во вредоносных скриптах

Reading time 2 min
Views 34K
В процессе лечения сайтов обнаруживается множество разновидностей хакерских шеллов и бэкдоров. Скрипты отличаются функционалом и способом обфускации исходного кода, но у всех есть общая черта — это неявное объявление переменных и функций, а также косвенный вызов функций.

Данный подход популярен среди разработчиков вредоносного кода, так как с одной стороны значительно усложняет анализ исходного кода, а с другой позволяет хранить код в текстовых данных. Например, часть вредоносного кода может загружаться со стороннего сайта, из базы данных, мета-данных jpeg/png/gif или передаваться в запросе к скрипту. Кроме того, часть кода, представленная в виде обычной текстовой строки, может быть легко зашифрована.

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

Несмотря на все многообразие вредоносного кода, существует не так много вариантов объявления и косвенного вызова функций. Ниже представлены примеры различных техник скрытого вызова кода. Для простоты и наглядности пусть «вредоносный код» представлен вызовом

echo "Test"


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

Читать дальше →
Total votes 95: ↑73 and ↓22 +51
Comments 35

Работа с архивами tar и gz средствами PHP

Reading time 6 min
Views 19K
Как это часто случается, все началось с того, что мне потребовалось нечто, позволяющее обрабатывать архивы «tar.gz» средствами php. Покопавшись в Интернете, я с удивлением обнаружил, что ничего сколько-нибудь приемлемого на эту тему не опубликовано.

Что у нас есть?

1. PEAR расширение для PHP http://pear.php.net/package/Archive_Tar Прекрасно, но в моем случае – неприемлемо, поскольку доступа к настройкам сервера у меня нет. Вынужденно отметаем.
2. Отменная статья Алексея Валеева «Работа с архивами tar.gz в php». То, что нужно, но – увы. Мне требовалось решение лицензионно «прозрачное», не способное вызвать вопросов. По этому, использование библиотеки от Битрикса тоже не годилось.

Собственно, это – все.
Читать дальше →
Total votes 9: ↑5 and ↓4 +1
Comments 24

Как узнать, что ваш PHP сайт был взломан

Reading time 11 min
Views 134K
Сайт моего друга недавно был взломан, на нем была запущена старая версия IP.Board, в которой есть уязвимость локального внедрения кода (local file inclusion). Этот пост не будет посвящен IP.Board или другому php коду, он покажет, как найти потенциально вредоносный php код на ваших серверах. Наконец, покажу пример того, что злоумышленники могут загрузить на взломанный сайт.

Проверьте логи доступа


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

IpreMOVED - - [01/Mar/2013:06:16:48 -0600] "POST /uploads/monthly_10_2012/view.php HTTP/1.1" 200 36 "-" "Mozilla/5.0"
IpreMOVED - - [01/Mar/2013:06:12:58 -0600] "POST /public/style_images/master/profile/blog.php HTTP/1.1" 200 36 "-" "Mozilla/5.0"

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

Два файла выше это загруженные взломщиком скрипты, как они туда попали, большой роли не играет, так как код на любых двух серверах, вероятно, будет различным. Тем не менее, в данном конкретном примере, уязвимость в устаревшей версии IP.Board была использована, и атакующие смогли добавить свои собственные скрипты в директории доступные для записи, такие как пользовательский каталог загрузки и каталог, в котором IP.Board хранит кэшированные изображения темы оформления. Это общий вектор атаки, много людей изменяют права на эти каталоги на 777 или дают им доступ на запись, подробнее об этом чуть позже.

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

Обратите внимание, что в журнале доступа POST запросы, а не GET запросы.
Скорее всего, злоумышленники хотели сделать журнал доступа более неприметным, так как большинство журналов не сохраняют post данные.
Читать дальше →
Total votes 109: ↑82 and ↓27 +55
Comments 122

Принцип цикады и почему он важен для веб-дизайнеров

Reading time 6 min
Views 228K
Пару лет назад я прочитал интересные факты о жизненном цикле периодических цикад. Обычно мы не видим вокруг себя много этих насекомых, потому что бóльшую часть своей жизни они проводят под землёй и тихо сосут корни растений.

Однако, в зависимости от вида, каждые 7, 11, 13 или 17 лет периодические цикады одновременно массово вылезают на свет и превращаются в шумных летающих тварей, спариваются и вскоре умирают.

Хотя наши странные цикады весело уходят в иной мир, возникает очевидный вопрос: это просто случайность, или числа 7, 11, 13 и 17 какие-то особенные?
Читать дальше →
Total votes 696: ↑682 and ↓14 +668
Comments 119

Бэкапы через bacula на Amazon S3

Reading time 7 min
Views 12K
Как известно, все люди делятся на два вида: те, кто ещё не делает бэкапы, и те, кто их уже делает. У тех, кто только начинает делать бэкапы, первым обычно встаёт вопрос о том, каким способом архивировать данные. Простые варианты (вручную нарезать болванки, целиком архивировать каталоги на другие серверы) рассматривать не будем — у них весьма скромные возможности по индексированию и поиску архивных файлов. Вместо этого обратимся к автоматическим системам бэкапов, в частности bacula. Данная статья не рассматривает вопрос, почему bacula. Главные причины — она распространяется под свободной лицензией, доступна для кучи платформ и обладает огромной гибкостью.

Второй вопрос после выбора системы архивации — выбор места, где хранить бэкапы. Bacula позволяет использовать стриммеры, компакт-диски, писать архивы в FIFO-устройства и в обычные файлы. Стриммер удобен на корпоративных серверах, где есть постоянный физический к железу. Хранение архивов в файлах подойдёт, когда объём архивов не превышает объёма жёстких дисков, плюс для надёжности хранения желательно делать RAID-массив с избыточностью, а то и несколько физических серверов для бэкапов, желательно в разных помещениях. Иначе всё это до первого пожара. Нарезать на болванки — это домашний вариант, главный недостаток которого — необходимость регулярного втыкания свежих дисков. Мы же настроили bacula для архивации данных на Amazon S3.
Читать дальше →
Total votes 23: ↑21 and ↓2 +19
Comments 21

Автоматизированная проверка PHP кода при комитах

Reading time 6 min
Views 33K
В свое время работая в узком кругу программистов, отдельными задачами и даже проектам, мы не задумывались о проблемах связанными с текучкой кадров. Точнее думать — думали, но ни каких мер не применяли, да и в целом коллектив был сплоченный никто не уходил и никого «не уходили». С ростом внутренних проектов и корпоративных клиентов, штат начал разрастаться и казалось, что все отлично — нас больше, значит будем больше успевать и делать, но не тут то было. Мы начали тратить кучу времени на “бесполезные” обсуждения, проверки, излишние проектирование и т.д, больше всего раздражает — это проверка кода. И тут я начал думать, что “мудрые и древние” наверняка решали эти проблемы с сотнями, тысячами программистов, неужели мы не справимся? Я решил провести эксперимент, под названием “автоматизированная проверка стиля кода при комитах”. Для большинства из Вас это не новость и наверняка вы этим пользуетесь, но поделиться опытом внедрения думаю, не будет лишним.
Читать дальше →
Total votes 84: ↑74 and ↓10 +64
Comments 48

Еще раз о GPL и российских законах

Reading time 7 min
Views 27K
Все больше организаций в последнее время переводят свои компьютеры под свободное программное обеспечение. Это может быть «радикальный» переход на Linux или «щадящий вариант», когда компьютеры остаются под управлением Windows, но «пиратские» программы заменяются на бесплатно распространяемые. В результате организация получает возможность сэкономить на покупке лицензионного ПО и обустроить рабочее место, пригодное для выполнения основного круга «офисных» задач: редактирования текстов, работы с интернетом, отправки электронной почты, и тому подобного.

Дабы не провоцировать очередной холивар, мы не будем останавливаться на вопросах о том, насколько качественно «свободный» софт свои задачи выполняет, и во сколько денег обойдется его поддержка. Кроме этих проблем перед компанией встает еще одна — о том, «насколько законно пользоваться «свободным ПО», и не будет ли претензий к организации со стороны разного рода «контролеров».

Сейчас мы попробуем в очередной раз на этой теме остановиться.
Читать дальше →
Total votes 79: ↑77 and ↓2 +75
Comments 43

Грабли при верстке HTML писем

Reading time 3 min
Views 103K
Довольно часто наши клиенты устраивают регулярные рассылки с новостями. Почти всегда их не устраивают текстовые рассылки или простое оформление HTML рассылок. Наши дизайнеры вовсю креативят, а мы потом набиваем шишки при верстке их макетов с корректным отображением во множестве почтовых клиентов.

Ниже список встретившихся нам особенностей и способы их разрешения (как то упорядочить их мне не удалось, поэтому всё идет единым списком)
Читать дальше →
Total votes 282: ↑273 and ↓9 +264
Comments 77

Evercookie — самые устойчивые куки

Reading time 1 min
Views 73K
Samy Mamkar разработал систему, которая позволяет хранить куки в 8 местах, автоматически восстанавливая друг друга, и даже добиться того, чтобы куки, поставленное в одном браузере, действовало и в другом.

Удалить это куки практически невозможно! (Все возможно, конечно, но слишком много мороки)

Куки хранятся в:
  • HTTP Cookies;
  • Local Shared Objects (Flash);
  • Сохранение куки в значениях RGB автосгенерированных и форсированно кэшированных PNG с использованием HTML5 canvas;
  • Сохранение куки в Web History;
  • HTML5 Session Storage;
  • HTML5 Local Storage;
  • HTML5 Global Storage;
  • HTML5 Database Storage через SQLite.

При удалении из одного из этих мест кука автоматически восстанавливается из оставшихся. Работает даже если пользователь сменит браузер (через Local Shared Objects из Flash).

Описание (на английском) и демо: http://samy.pl/evercookie/.
Попробуйте удалить куки, почистить систему и зайти назад.



Как пользоваться?
Читать дальше →
Total votes 111: ↑107 and ↓4 +103
Comments 68

Инструменты быстрого прототипирования

Reading time 9 min
Views 205K
Прототипы, как инструменты дизайна, находятся на подъёме, и вот почему. Я твёрдо верю, что прототипирование помогает нам в процессе создания качественных пользовательских интерфейсов. Мы работаем в мире богатых, обладающих динамикой интерфейсов пользователя как в сети, так и на наших устройствах. Интерфейсы, которые мы создаём, интерактивны, откликаются на воздействие пользователя и обладают эмоциями. Прототипы позволяют сформулировать чувства и функции дизайна так, как этого не могут сделать простые экранные формы. Но как выбрать лучший инструмент прототипирования для работы?
Много текста. Читать дальше
Total votes 63: ↑58 and ↓5 +53
Comments 52
1

Information

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