Как стать автором
Обновить
0
0
Иван Гайдамакин @MeGaPk

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

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

Один конфиг Nginx для работы с кучей разных сайтов

Время на прочтение3 мин
Количество просмотров106K
Если вам приходилось настраивать Nginx под нужды веб-студии, сеошников или киберсквоттеров ;), то уже наверняка знаете про символ подчёркивания в качестве server_name. Тем не менее несколько других небесполезных приёмчиков из моего примера почерпнуть можно.

Чтоб создать новый сайт на сервере с такой конфигурацией, достаточно создать директорию с именем сайта и залить в неё содержимое. А конфигурационный файл остаётся единственным и неизменным.

Конфиг делает следующее:
1. Отрезает «www» от адреса, дабы сервер нашел директорию с сайтом невзирая на эти буквы в URL.
2. Выдаёт отдельную страничку при запросе несуществующего сайта.
3. Делает стандартный редирект на index.php в корне сайта при запросе несуществующего пути.
4. Перенаправляет запрос на php-fpm при вызове .php файлов.
5. Добавляет возможность обработки .htm(l) файлов как PHP.

Читать дальше →
Всего голосов 67: ↑46 и ↓21+25
Комментарии28

Самый частый шаблон SQL инъекций в РНР — бесполезное экранирование символов

Время на прочтение2 мин
Количество просмотров35K
По роду своей деятельности, мне приходится выполнять аудиты безопасности исходного кода веб-приложений.
Много веб-приложений и много кода…

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

Не секрет, что уязвимости внедрения операторов СУБД (SQL injections) являются самыми распространенными из всех серверных уязвимостей веб-приложений. Есть платформы и фреймворки, где такие вещи практически полностью исключены, например ORM'ом и прочим. Но статистика упорно говорит нам об абсолютном преобладании на просторах Интернета веб-приложений с простыми конкатенированными SQL запросами. Кроме того, есть случаи, где ORM вообще применим быть не может. Например, когда от пользовательских данных должны зависеть не только параметры выражений, но и сама логика запроса на уровне операторов.
Читать дальше →
Всего голосов 90: ↑78 и ↓12+66
Комментарии148

Треугольники с тенью на CSS

Время на прочтение3 мин
Количество просмотров40K
Скорее всего, вы уже знаете, как сделать треугольник на чистом CSS, использовав свойство border. Если же не знаете, то можно почитать, например, здесь. Но что, если вам понадобятся треугольники с тенью?



Классическая манипуляция с бордером не может изменить форму объекта, это всего лишь визуальный обман.
Т.е. нельзя просто взять и добавить box-shadow к такому треугольнику, потому что получим что-нибудь в таком роде:



Давайте посмотрим на несколько альтернативных решений.
Читать дальше →
Всего голосов 57: ↑51 и ↓6+45
Комментарии13

Подробно о свойстве float

Время на прочтение4 мин
Количество просмотров215K
Правильное использование CSS свойства float может стать непростой задачей даже для опытного верстальщика. В этой статье собраны варианты применения float, а также некоторые ошибки, с наглядными примерами.

Читать дальше →
Всего голосов 153: ↑140 и ↓13+127
Комментарии89

Google выпустила модуль mod_spdy для Apache

Время на прочтение1 мин
Количество просмотров2K
Продвигая разрабатываемый в компании протокол SPDY, Google вчера выпустила модуль для Apache 2.2, который позволяет веб-серверу начать работу с этим протоколом и который является значительно доработанной версией ранней беты, выпущенной в декабре 2011 года.

Описывая преимущества, которые даёт новый модуль с точки зрения ускорения работы, инженеры Google утверждают, что в некоторых случаях новый протокол будет работать на 50% быстрее обычного HTTP, при этом не предъявляя никаких требований к оборудованию сервера, использованию процессора и оперативной памяти. Это происходит за счёт применения нескольких техник акселерации, таких как сжатие HTTP-заголовков, мультиплексирования запроса нескольких ресурсов за одно TCP-соединение, механизмы приоритезации данных и некоторые другие. Правда, работать SPDY будет только с браузерами, уже поддерживающими этот протокол — это, согласно отчетам некоторых аналитических агентств, второй по популярности браузер Chrome и штатный браузер Android (в Firefox 11 также ожидается внедрение SPDY). К тому же, разработчики признают, что ничего революционного не изобрели, а просто объединили уже существующие технологии в один пакет и представили его общественности.

Стоит напомнить, что Microsoft продвигает собственное подобное решение HTTP Speed+Mobility.

Под катом видео-демонстрация работы SPDY на примере некоего ресурса и ссылка на загрузки.
Посмотреть
Всего голосов 24: ↑22 и ↓2+20
Комментарии34

SSH и FTP через Dropbox

Время на прочтение2 мин
Количество просмотров15K
Всем доброго хабрадня!

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

Внимание! Всё нижеописанное не является руководством к действию и воспринимать это стоит не иначе как юмор. А то больно всерьёз все восприняли… =)

Для начала немного предыстории. Недавно возникла очень острая необходимость в ssh доступе на некоторый unix-based компьютер, дабы выполнить там svn diff > mypatch.diff и перекинуть результат по ftp. Но оказалось, что целевая машина по некоторым причинам не хочет пинговаться! Причём, по словам админов, и не предвидится пинг к ней, хотя выход в интернет она имеет. И я решил, что неплохо бы пробросить ssh через что-то стороннее. В голову сразу начали лезть VPN, reverse ssh, туннели и прочее. Но для большинства решений нужна дополнительная машина и/или дополнительный софт, либо это требует перенастройки самой сети (что для меня совсем не вариант — сеть-то не моя). Я уже готов был отчаяться и гуглить упорнее, но тут в мою не совсем здоровую голову пришла мысль: а что если заюзать дропбокс?
И вот что получилось...
Всего голосов 61: ↑47 и ↓14+33
Комментарии28

Самодельный PIR (ПИК) извещатель из Arduino

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


Для начала предлагаю вам совершить небольшой экскурс по теории. Что же такое ПИК? Расшифровывается как «Пассивный инфракрасный извещатель». Он же — датчик движения.
Читать дальше →
Всего голосов 30: ↑21 и ↓9+12
Комментарии31

codestre.am — потоковая запись терминала

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


Сегодня наткнулся на очень интересный сервис codestre.am, разработанный LearnBoost.
Идея подобного сервиса наверняка возникала у многих.

Смысл проекта создание обучающих видео, только в формате командной строки, причём с возможностью всё воспроизвести не перепечатывая слова и буквы, а просто копируя их из самого видео.
Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Комментарии10

Gearman — сервер очередей: использование в проектах на PHP

Время на прочтение9 мин
Количество просмотров81K
Не так давно была замечательная статья, описывающая общие принципы работы с сервером очередей Gearman. Мне бы хотелось продолжить материал, дополнив его некоторыми деталями практического применения, а именно:
— установка и управление сервером
— управление очередью — что возможно и как
— PECL и PEAR php-расширения для работы с Gearman
— мониторинг сервера
— примеры кода
— передача данных порциями
— организация параллельных вычислений в PHP

Интересно? Прошу под кат
Читать дальше →
Всего голосов 72: ↑66 и ↓6+60
Комментарии51

Обзор роутера NETGEAR WNDR3800

Время на прочтение10 мин
Количество просмотров52K
Давно хотел поменять свой заросший мхом noname-роутер на что-то более породистое, технологичное и просто современное. Каких-то извращенных требований к будущему устройству у меня не было, то есть мне наверняка подошли бы 8 роутеров из 10. Сегодня речь пойдет только про 1 из тех 8, на котором я остановил свои поиски — NETGEAR WNDR3800, про который на Хабре еще вроде бы никто не рассказывал.



Выбор решений для дома сейчас очень велик, но…
Читать дальше →
Всего голосов 45: ↑38 и ↓7+31
Комментарии62

Создаём parallax scrolling эффект с помощью jQuery и CSS

Время на прочтение3 мин
Количество просмотров132K
В последнее время, сайты с parallax scrolling эффектом стали появляться повсюду. Я не хотел это пропускать, поэтому я создал демонстрационную страницу с parallax scrolling эффектом с помощью jQuery и CSS.


Читать дальше →
Всего голосов 66: ↑58 и ↓8+50
Комментарии31

Mosh — SSH 2012 года

Время на прочтение1 мин
Количество просмотров9K
Mosh — замена(или дополнение) SSH. Он быстрее и отзывчивее, особенно на линках с высокой задержкой, например, в мобильных сетях. Набираете символ, и моментально видите его на экране, так же, как и в локальном терминале. Почему? Потому, что в Mosh реализован так называемый local line editing, который не дожидается ответа от сервера, а сразу все отображает на экране. Работает даже в полноэкранных приложениях, вроде vim или emacs. И это далеко не единственный плюс!
Читать дальше →
Всего голосов 81: ↑75 и ↓6+69
Комментарии82

Пентест на стероидах. Автоматизируем процесс

Время на прочтение6 мин
Количество просмотров45K
С данной темой доклада я выступал на CodeFest. А здесь я перескажу словами, что, как и зачем.


Доклад довольно поверхностный и не требует практически никакой квалификации в области ИБ. Был рассчитан на целевую аудиторию (веб-разработчики, тестировщики (не на проникновение), сисадмины и т.д.). Все довольно просто: несколько утилит, запустили, подождали, разбираем отчет.

Видеоприглашение на конференцию:

Читать дальше →
Всего голосов 82: ↑75 и ↓7+68
Комментарии18

Полезные ссылки для изучения CSS анимации

Время на прочтение3 мин
Количество просмотров24K
Мы начали наблюдать много экспериментов над CSS3 анимацией и статьи о ней в 2011-м, но тогда поддержка этой анимации была ограничена браузерами на вебките. В середине 2011-го Firefox 5 тоже получил эту поддержку, а также мы можем ожидать ее в следующей реинкарнации Internet Explorer (10), поэтому сейчас идеальное время, чтобы разобраться с синтаксисом @keyframes (покадровой анимации). Этот пост предлагает краткий обзор 10-ти статей, в которых объясняется, как использовать это клевое CSS3 свойство, с примерами и демками.


Читать дальше →
Всего голосов 72: ↑69 и ↓3+66
Комментарии10

Что значат для вас юнит-тесты?

Время на прочтение5 мин
Количество просмотров8K
С технической точки зрения юнит-тесты – это очень простой инструмент, основанный на паре несложных концепций: (1) тестируемый класс, (2) набор тестовых методов, завернутых в некоторый класс и (3) набор методов, с помощью которых можно удостовериться в том, что состояние тестового класса соответствует (или не соответствует) некоторому значению.

Это очень простая штуковина, которая может кардинальным образом повлиять на процесс разработки в целом. С одной стороны существует TDD (“test-first approach"), при котором тесты «драйвят» не только процессом кодирования, но и процессом проектирования (т.е. дизайном системы). С другой стороны существуют разработчики с противоположной точкой зрения, которые считают юнит-тесты пустой тратой времени, потому что они не приносят никакой ценности пользователю.

Читать дальше →
Всего голосов 52: ↑49 и ↓3+46
Комментарии71

Мониторинг сайта с помощью Google Docs

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


Автор блога Digital Inspirations Амид Агарвал (Amit Agarwal) опубликовал скрипт для Google Docs, который опрашивает статус сайта и заносит ответ в ячейку таблицы. Таким образом, можно сделать сервис мониторинга своими руками. Google Docs позволяет запускать скрипт с минутным интервалом и получать уведомления на email.
Читать дальше →
Всего голосов 106: ↑100 и ↓6+94
Комментарии32

Масштабируем CSS спрайты с SVG, убивая сразу трех зайцев

Время на прочтение6 мин
Количество просмотров66K
Привет, Хабр.
Сразу хочу отметить, что если мы говорим об иконках, их можно масштабировать двумя способами (других я просто не знаю): конвертировать иконки в шрифт и подключать их через @font-face, либо использовать SVG в качестве формата для этих иконок.

Немного отойду от темы и расскажу предысторию.

Предыстория


Я было решил использовать у себя на сайте шрифтовые иконки, казалось бы все хорошо: и размер менять можно, и цвет задавать и запрос к серверу всего один (на подключение шрифта). Другими словами, подключаемый шрифт это и есть своеобразный «CSS спрайт», верно?

Я давай проверять, везде ли все красиво выглядит. Оказалось, что не все так хорошо как хотелось бы, потому как в некоторых размерах иконки выглядели кособокими, а при отключенном сглаживании вообще противно смотреть на них стало. Что делать? Использовать второй вариант — SVG, о чем и пойдет речь.
Подробно о создании CSS спрайтов с SVG
Всего голосов 64: ↑57 и ↓7+50
Комментарии73

Ускоряем свою Arduino

Время на прочтение3 мин
Количество просмотров202K
Месяца 3 назад, как и многие горе-электроники, купил себе на мой тогдашний взгляд самую навороченную микропроцессорную плату из семейства Arduino, а именно Seeeduino Mega, на базе процессора Atmega1280. Побаловавшись всласть вращающимся сервоприводом и моргающим светодиодом, встал вопрос: «зачем же я её купил?».

Я работаю одним из ведущих конструкторов на одном крупном военном Зеленоградском заводе, и в данный момент веду проект по разработке метрологического средства измерения. В данной задаче существует бесконечное множество проблем, которые требуют индивидуального решения. Одной из таких задач является управление шаговым двигателем без шумов и с шагом не 1.8 градуса, как сказано в документации шагового двигателя, а до 0.0001 градуса. Казалось бы, задача сложна и нерешабельна, но, повозившись немного со схемами управления, пришёл к выводу, что всё реально и возможно. Требуется только генерация двух сигналов специфичной формы и со сдвигом фаз и частотой изменения напряжения до 1 МГц. (Подробное исследование шагового мотора и раскрытие всех тайн управления напишу в следующей статье) Сразу же в голове стали появляться проблески надежды, что я не зря потратил 1500 рублей на свою красненькую Seeeduino, и я, набравшись энтузиазма, начал разбираться.
Читать дальше →
Всего голосов 59: ↑46 и ↓13+33
Комментарии70

Асинхронные функции в Javascript и ключевое слово this

Время на прочтение2 мин
Количество просмотров6.7K
При использовании асинхронных функций в классах часто возникает проблема, когда в теле функции невозможно обратиться к объекту класса, вызывающему функцию. Это хорошо видно на примере с аяксом (с использованием jQuery):

function Loader()
{
    this.load = function()
    {
        $.ajax({
            url: '/test.php',
            success: function(data, textStatus, jqXHR) {
                // здесь уже никак нельзя обратиться к объекту класса
                console.log(this); // this содержит внутренний объект jQuery,
                                   // вызывающий функцию success
            }
        });
    }
}
(new Loader()).load();

Читать дальше →
Всего голосов 17: ↑9 и ↓8+1
Комментарии12

Информация

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