Pull to refresh
0
0
Send message

Оптимальная параллелизация юнит-тестов или 17000 тестов за 4 минуты

Reading time10 min
Views27K
Сегодня мы поговорим про разработанную нами утилиту, которая оптимизирует тестирование PHP-кода с помощью PHPUnit и TeamCity. При этом нужно понимать, что наш проект — это не только веб-сайт, но и мобильные приложения, wap-сайт, Facebook-приложение и много чего ещё, а разработка ведется не только на PHP, но и на C, C++, HTML5 и т.д.

Методы, которые мы описываем, прекрасно адаптируются под любой язык, любую систему тестирования и любое окружение. Поэтому наш опыт может оказаться полезным не только разработчикам веб-сайтов на PHP, но и представителям других областей разработки. Кроме того, в ближайшем будущем мы планируем перевести нашу систему в Open Source ― без обязательной привязки к TeamCity и PHPUnit ― наверняка она кому-нибудь пригодится.
Читать далее
Total votes 66: ↑58 and ↓8+50
Comments31

Неожиданные результаты простого MySQL-запроса

Reading time3 min
Views34K

Недавно я потратил кучу времени, пытаясь понять, почему один запрос выдает такой странный результат. На MariaDB он выдавал явно некорректный результат, а на старом добром MySQL не выполнялся вовсе. Т.е. запрос запускался, но дождаться его завершения не удавалось. Для того чтобы разобраться, в чем же дело, пришлось провести небольшое исследование. Но давайте обо всем по порядку.
Читать дальше →
Total votes 58: ↑40 and ↓18+22
Comments49

17-летний подросток опубликовал 0day XSS в PayPal после того, как ему отказали в вознаграждении

Reading time2 min
Views167K
Robert Kugler, 17-летний студент из Германии, который интересуется компьютерной безопасностью, нашел уязвимость на сайте paypal.com, и решил сообщить о ней в рамках программы по награждению за найденные баги. Однако, ему было отказано, т.к. он не достиг 18 лет. В ответ на это, он опубликовал уязвимость на seclists.org.
Читать дальше →
Total votes 298: ↑290 and ↓8+282
Comments146

Как хвост виляет собакой. Азбука пропаганды

Reading time4 min
Views209K
Чем доступнее информация, тем больше её вокруг. Чем быстрее она распространяется, тем меньше остаётся времени на то, чтобы её проверить. Постепенно информационная среда превращается в некое подобие «белого шума». Всё труднее строить внутри себя новые информационные фильтры, чтобы отсеять лишнее: убрать в сторону лозунги, агитацию, пропаганду, а оставить только то, что на самом деле кроется за ними. А манипулировать нашими мыслями пытаются постоянно, и я говорю не о 25-ом кадре (он не работает), а о более земных вещах — приёмах пропаганды, которые так умело (а зачастую — очень топорно) используют политики, рекламщики и вообще, все, кому не лень. Об этих приёмах и пойдёт речь в статье.

Хвост виляет собакой. ("Wag the dog") — чтобы избежать большого скандала или «замять», оставить незамеченным какое-нибудь важное, но неприятное событие, часто используется простой, но хитрый и ловкий приём, который англоязычные политтехнологи называют «Wag the dog», а русскоязычные — «Хвост виляет собакой». Он заключается в том, чтобы вовремя поднять волну обсуждения вокруг вопроса второстепенной важности, на фоне которой другое, более важное событие или действие пройдёт незаметно.
Примеры таких вопросов: Отмена перехода на зимнее время, российское гражданство Депардье, поездка Путина или Саши Грей на Ладе Калине по России, полёты со стерхами и т.д.
Своё название этот приём получил в честь английского выражения tail wagging the dog, который, в свою очередь, появился из следующего народного пассажа:
— Почему собака виляет хвостом?
— Потому, что собака умнее, чем хвост. Если бы хвост был умнее, он вилял бы собакой.

Ещё 7 приёмов - под катом
Total votes 402: ↑352 and ↓50+302
Comments183

Ещё один способ устранить ВОШ

Reading time3 min
Views26K

Задача


ВОШ — эффект, возникающий при стилизации текста подключаемым шрифтом, не установленным на компьютере пользователя. Проявляется, когда подключаемый шрифт ещё не успел скачаться, и стилизуемый текст отображается следующим шрифтом из значения свойства font-family этого элемента. Такое переключение шрифтов также может повлиять на размеры элемента, если они зависят от размеров текста в нём.
Эффект известен также как FOUT — так его назвал Пол Айриш.

При общих моментах, есть и особенности. Например, в Файрфоксе текст, который нужно будет отрисовать нестандартным шрифтом, в течение 3 секунд не отображается, в Хроме тоже есть подобная задержка. Если шрифт успеет скачаться за это время, текст отобразится сразу нужным шрифтом.

На эту тему здесь была такая статья. В ней последствия ВОШ рекомендовалось нивелировать грамотной игрой со шрифтами. К сожалению, иногда подключаются такие шрифты, которые слишком отличаются по характеристикам от стандартных.
Подробности
Total votes 56: ↑51 and ↓5+46
Comments16

Справочник фронт-энд девелопера: виды горизонтальных панелей навигации

Reading time4 min
Views58K

Предисловие: работая верстальщиком, ваш покорный слуга заметил, что существует несколько типов меню; при этом для верстки каждого из них следует использовать свои приемы.
Подробности — под катом.
Читать дальше →
Total votes 81: ↑69 and ↓12+57
Comments16

Графы дорожных сетей и алгоритмы работы с ними

Reading time7 min
Views41K
В математике сети дорог (автомобильных и не только) представляются взвешенным графом. Населенные пункты (или перекрестки) — это вершины графа, ребра — дороги, веса ребер — расстояния по этим дорогам.

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

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

Мы не знаем эти правила, однако, работая с дорожными сетями, вполне можно использовать алгоритмы, которые эффективны для графов дорог, хотя и не подходят для графов в универсальном или математическом смысле. Рассмотрим здесь два таких алгоритма.
Читать дальше →
Total votes 40: ↑35 and ↓5+30
Comments11

WebSocket (Sec-WebSocket-Version: 13) — тонкости реализации, в частности на PHP

Reading time7 min
Views85K
Собственно, изучая данную тему, было перерыто много сайтов, но нигде толком ничего не объяснялось, либо информация была по устаревшим ныне протоколам. Это и послужило своеобразным пинком для создания этого HowTo. Это будет не детальный разбор всех возможных проблем, но немного теории и описание некоторых вещей которые для кого-то являются банальщиной, а у кого-то (вроде меня) вызвали трудности и потерю времени на поиск решения. Сразу предупрежу — здесь не рассматривается как поднять сокет-сервер на PHP, подобной информации в интернете навалом. Буду исходить из того, что сокет-сервер уже существует и надо лишь научить его общаться через вебсокеты.
Итак, хватит лирики, теперь к делу!
Читать дальше →
Total votes 44: ↑35 and ↓9+26
Comments26

0day уязвимость в Linux от 2.6.37 до 3.8.10

Reading time1 min
Views52K
Сегодня в сети появился рабочий эксплоит для всех версий Linux от 2.6.37 до 3.8.10, который дает возможность локальному пользователю получить права root. Проблема осложняется тем, что в случае с RHEL/CentOS 6 уязвимость была бэкпортирована в ядро 2.6.32, так что владельцам серверов с данными системами так же следует надеяться на скорейший выпуск ядра и исправлением ошибки. Таким образом, уязвимыми оказались все основные выпуски наиболее популярных серверных дистрибутивов: Debian 7.0, RHEL/CentOS 6, Ubuntu 12.04.

UPD: эксплоит для x86_64 / amd64, компилировать надо с -O2 о чем сказано в исходном коде.
Total votes 86: ↑76 and ↓10+66
Comments104

Пишу игрушечную ОС (о реализации мьютекса)

Reading time4 min
Views27K

Продолжаю блог о разработке игрушечной ОС (предыдущие посты: раз, два, три). Сделав паузу в кодировании (майские праздники, всё-таки), продолжаю работу. Только что набросал сканирование PCI-шины. Эта штука понадобится для работы с SATA-контроллером: следующее, что хочу сделать — это простенький драйвер диска. Он позволит поэкспериментировать с проецированием постоянной памяти на адресное пространство (своппинг, доведённый до логического конца). А пока хотел бы описать реализацию мьютекса.
Читать дальше →
Total votes 70: ↑63 and ↓7+56
Comments11

Как ускорить загрузку своего сайта при помощи compress.php, который объединит и сожмёт JS + CSS в Gzip

Reading time3 min
Views61K
Ускоряем сайт при помощи GoogleПодробные инструкции, которые даются на code.google позволят вам:

  • Сжать все многочисленные скрипты JS и стили CSS
  • Соединить все полученные файлы в один JS и в один CSS
  • Сжать полученные два файла в формат GZIP, который понимают почти все браузеры и умеют распаковывать на лету
  • Прописать такой .htaccess, который заставляет браузеры кэшировать данные два файла

Всё это будет происходить при запуске единственного скрипта compress.php

Для примера, результат сжатия скриптов моего сайта:
  • JS: сжато в gzip 26 698 B, сжато без gzip 95 796 B, было 120 147 B
  • CSS: сжато в gzip 46 049 B, сжато без gzip 160 001 B, было 281 870 B

Получается, что экономия трафика составляет 329 270 B. Но основной выигрыш для скорости загрузки в том, что теперь загружается не 14 файлов, а всего 2 (а это намного быстрее, так как браузер не тратит время на запросы). Причём делается это один раз, а не динамически силами самого сервера (тем более, что не все сервера поддерживают подобное конфигурирование сжатия для экономии ресурсов процессора).

В итоге, получится:
<link rel="stylesheet" type="text/css" href="min/styles_1349888114.cssgz" />
<script src="min/all_1349888114.jsgz" /></script>

Читать дальше →
Total votes 52: ↑38 and ↓14+24
Comments50

Usability чеклист

Reading time5 min
Views53K
image

Небольшой и полезный чеклист по usability. Проверьте свой ресурс перед тем как перейти к юзер-тестированию. Не претендует на «столп usability», которому необходимо следовать, но здесь собраны довольно полезные вещи.
Читать дальше →
Total votes 54: ↑44 and ↓10+34
Comments35

Создание простого CRUD-приложения с помощью Yii2

Reading time14 min
Views94K

Disclaimer


Этот урок поможет вам познакомиться с Yii2. В данный момент Yii2 абсолютно не готов для продакшена. Я не рекомендую использовать его в рабочих проектах.

Начнём


Сегодня авторы Yii Framework анонсировали публичное превью Yii2. Между Yii1 и Yii2 довольно много изменений.

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

Для продолжения вам потребуется:

  • Вебсервер, например Apache или Nginx. Я буду использовать Nginx. Использование Apache будет отличаться незначительно, поэтому не волнуйтесь если у вас нет поблизости сервера с Nginx.
  • Север базы данных для нашего приложения. Я выбрал MySQL 5.5
  • Базовые знания PHP. Я постараюсь объяснять всё так просто, как это возможно, но чем лучше вы знаете PHP, тем проще вам будет двигаться дальше.
  • Базовые знания Yii или MVC. Если у вас нет никакого опыта работы с MVC, то я рекомендую вам прочесть основы MVC. Вы можете прочитать этот урок и без знания MVC, но вам будет гораздо легче понимать происходящее, разбираюсь в теме MVC.

Вперёд!
Читать дальше →
Total votes 37: ↑21 and ↓16+5
Comments29

Verlet.js — физический движок на основе метода Верле

Reading time1 min
Views39K
Метод численного интегрирования Верле издавна использовался для вычисления траекторий частиц. Сам метод был впервые использован ещё в 1791 году французским астрономом Жаном-Батистом-Жозефом Деламбром. В 1907 норвежский математик и физик Карл Штёрмер использовал его для моделирования движения частиц в магнитном поле, поэтому иногда этот метод называют методом Штёрмера. Современное название этот алгоритм получил от имени французского физика Лу Верле, который в 1967 году использовал его в моделировании молекулярной динамики. В последнее время метод Верле применяется и в разработке компьютерных игр.
Читать дальше →
Total votes 79: ↑79 and ↓0+79
Comments43

Разрезание на две равные части, часть вторая

Reading time3 min
Views18K
С первой частью можно невозбранно ознакомиться здесь.

Итак, дорогие друзья, в предыдущей части мы с вами поговорили о параллельном переносе, а сегодня займёмся поворотом. Это будет интересно. Сейчас быстренько вспомним основные понятия — и вперёд.



Интриги, расследования, скандалы
Total votes 27: ↑27 and ↓0+27
Comments39

Shodan – самый страшный поисковик Интернета

Reading time3 min
Views701K


«Если люди не могут найти что-то в Google, они думают, что это не сможет найти никто. Это не так», – утверждает Джон Мэзерли, создатель Shodan, самого страшного поискового движка Интернета.

В отличие от Google, который ищет в Сети простые сайты, Shodan работает с теневыми каналами Интернета. Это своего рода «черный» Google, позволяющий искать серверы, веб-камеры, принтеры, роутеры и самую разную технику, которая подключена к Интернету и составляет его часть.

Читать дальше →
Total votes 199: ↑191 and ↓8+183
Comments131

Как стартапу попасть в акселератор

Reading time7 min
Views8.8K
Как российскому стартапу попасть в американский бизнес-акселератор? Что делать, куда обращаться, как готовиться? Какие преимущества это дает? Под катом немного полезной информации из личного опыта.

Мы запустили TradingView полтора года назад. Со временем стало понятно, что самостоятельные попытки пиара слишком дорого обходятся и не приносят ожидаемого результата. Идеальным вариантом было попасть на акселерационную программу, что мы и сделали, накопив немало интересного опыта в процессе.

image

Читать дальше →
Total votes 10: ↑8 and ↓2+6
Comments10

Пишу игрушечную ОС (о планировщике)

Reading time4 min
Views22K

Продолжаю вести блог о разработке игрушечной ОС.

В прошлом посте я писал о том, как добиться возможности реализовывать на C обработчики прерываний. Теперь, пользуясь написанными ранее макросами, можно реализовать простой SMP-планировщик. Он будет предоставлять минимально возможный функционал, на базе которого в будущем нужно будет возводить различные надстройки, в частности, примитивы синхронизации (например, мьютекс). Опять же, красивая модульная структура не способствует высокой производительности, но красота, как известно, спасёт мир, так что отдадим ей предпочтение.

Итак, попробуем сформулировать требования к нашему планировщику. Нам нужна возможность создать поток, указать для него стек, маску разрешённых логических процессоров (affinity), базовый приоритет и функцию выполнения. Далее, поток можно запустить, приостановить, продолжить его выполнение и, наконец, завершить.

Кроме того, было бы здорово, если бы планировщик не занимался выделением памяти, а мог принимать и возвращать память, выделенную под поток кем-то другим. С одной стороны, это бы обеспечило гибкость произвольного резервирования памяти потоков. С другой – дало бы уникальную возможность сохранять поток во внешней памяти (например, на жёстком диске) с последующей его загрузкой и запуском с прерванного места.
Читать дальше →
Total votes 61: ↑55 and ↓6+49
Comments16

Лазерное шоу своими руками. Часть 1

Reading time6 min
Views113K

Рисующий луч: прошлое, настоящее и будущее.


Это вводная статья о истории развития и принципах работы технологий векторного отображения информации.
Не обижайтесь, на то, что тут всё слишком «википедично», просто мне надоели глупые вопросы.
Те, кто в теме, возможно найдут для себя интересным почитать конец статьи и могут смело переходить ко второй её части по ссылке в конце.
Читать дальше →
Total votes 72: ↑65 and ↓7+58
Comments2

Лазерное шоу своими руками. Часть 2

Reading time3 min
Views101K
Теперь, когда вы прочитали(или не прочитали) всю эту скучную теорию из первой части – займёмся практическими экспериментами. Если у вас в хозяйстве завалялся аналоговый осциллограф, то вы сможете не прилагая почти никаких усилий вывести на него видео.
Читаем
Total votes 75: ↑69 and ↓6+63
Comments8

Information

Rating
Does not participate
Registered
Activity