Как стать автором
Обновить
0
0
Кротов Артур @Archy

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

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

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

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

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

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

image

Читать дальше →
Всего голосов 201: ↑192 и ↓9+183
Комментарии45

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

Время на прочтение4 мин
Количество просмотров41K
image

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

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

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

Время на прочтение1 мин
Количество просмотров2K
По мотивам cssing.org.ua.

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

читать дальше
Всего голосов 21: ↑18 и ↓3+15
Комментарии31

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

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


Читать дальше →
Всего голосов 27: ↑24 и ↓3+21
Комментарии15

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

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

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

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

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

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

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

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

Время на прочтение12 мин
Количество просмотров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;
  • Разные мысли вслух и рассказы о «шишках».

Читать дальше →
Всего голосов 39: ↑38 и ↓1+37
Комментарии15

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

Время на прочтение6 мин
Количество просмотров90K
Всем привет!

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

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



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

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

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

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

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

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

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

echo "Test"


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

Читать дальше →
Всего голосов 95: ↑73 и ↓22+51
Комментарии35

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

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

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

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

Собственно, это – все.
Читать дальше →
Всего голосов 9: ↑5 и ↓4+1
Комментарии24

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

Время на прочтение11 мин
Количество просмотров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 данные.
Читать дальше →
Всего голосов 109: ↑82 и ↓27+55
Комментарии122

Рекомендации для GUI под Android

Время на прочтение1 мин
Количество просмотров23K
Производители обычно выпускают рекомендации для построения GUI под их OS. Дошла очередь и до Google Android:
image
Читать дальше →
Всего голосов 77: ↑65 и ↓12+53
Комментарии52

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Время на прочтение1 мин
Количество просмотров74K
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/.
Попробуйте удалить куки, почистить систему и зайти назад.



Как пользоваться?
Читать дальше →
Всего голосов 111: ↑107 и ↓4+103
Комментарии68

jQuery template engine

Время на прочтение2 мин
Количество просмотров11K
Началось все с прочтения вот этого поста.
Идея мне очень понравилась, и я, недолго думая, начал искать в интернете готовые решения «шаблонизаторов» для jQuery.
Читать дальше →
Всего голосов 35: ↑30 и ↓5+25
Комментарии56

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

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

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность