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

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

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

Прекратите использовать location.hash, да здравствует HTML5 History API!

Время на прочтение2 мин
Количество просмотров78K
Много лет location.hash был способом в AJAX-приложении заставить работать кнопки «Назад» / «Вперёд» и, например, добавить определенное состояние страницы в избранное и вернуться к нему позже.

Сейчас, когда HTML5 считается нормой, пора обратить свое внимание на History API и забыть про location.hash. HTML5 History API проще для понимания и позволяет сделать URL чуточку красивее (без кракозябры # или #! если вы имеете дело с индексированием ajax приложения).
Читать дальше →
Всего голосов 63: ↑46 и ↓17+29
Комментарии38

PHP: неправильный путь

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

В мире PHP-программирования существует набор трендов. Некоторые люди активно продвигают их (в книгах и на сайтах) как «современный PHP», а другие подходы выставляют как устаревшие, глупые или просто неверные.

Похоже, все эти люди без устали стараются заставить каждого программировать так, как они считают нужным. Эта статья написана, чтобы поделиться прагматичным взглядом на PHP-программирование. Взглядом, продиктованным опытом и практическими последствиями, а не популярными тенденциями, теориями или академическими догмами. Материалы, представленные на сайте PHP — The Wrong Way, будут обновляться по мере появления новой информации. Приглашаем всех поучаствовать в этом.
Читать дальше →
Всего голосов 104: ↑83 и ↓21+62
Комментарии368

HttpRequest — библиотека для простой работы с HTTP протоколом

Время на прочтение2 мин
Количество просмотров31K
https://github.com/Garik-/http-request

Очень часто в коде можно встретить такие строки:

$result = file_get_contents("http://geocode-maps.yandex.ru/1.x/?geocode=".urlencode("Москва"));

$handle = fopen("http://www.example.com/", "rb");
$result = fgets($handle);

  • Не важно человеку, что директива allow_url_fopen может быть отключена на сервере.
  • Не важно, что на сервере установлена библиотека cURL, которая без проблем скачает 100 МБ файл.
  • Не важно, какой ответ вернет сервер, 200, 301, может 404, может 502?
  • Не важно, то что сеть не идеальная среда и ответ может придти частично или его вовсе не будет продолжительное время. Скрипт попросту подвиснет в ожидании на неопределенное время или вернет не корректный результат.

try {
    $http = HttpRequest::get("http://geocode-maps.yandex.ru/1.x/?format=json",array("geocode"=>$city))->acceptJson();
    $json = $http->ok() ? json_decode($http->body()) : null;
} catch (HttpRequestException $e) {
    exit($e->getMessage());
}

Теперь это действительно не важно.

Библиотека Http Request основана на одноименной библиотеке Kevin Sawicki, которая должна быть хорошо известна Android разработчикам, ведь её использует сам GitHub в своем приложении.
Читать дальше →
Всего голосов 38: ↑18 и ↓20-2
Комментарии12

Опасный target="_blank"

Время на прочтение2 мин
Количество просмотров200K
Большинство создают внешние ссылки через target="_blank" и не знают одного интересного нюанса — страница, на которую мы попадем таким образом, получит частичный контроль над ссылающейся на нее страницей через js свойство window.opener.

Через window.opener.location мы сможем сделать редирект на, к примеру, фишинговую страницу. Это своего рода tabnabbing, только более продвинутый. Так как жертва меньше всего ожидает подмены страницы, в открытой ранее, доверенной вкладке браузера.
Читать дальше →
Всего голосов 132: ↑126 и ↓6+120
Комментарии136

Выбираем доменную зону

Время на прочтение9 мин
Количество просмотров126K
Более 24 лёт прошло с изобретения доменных имён (и 18 — с создания Всемирной паутины), а люди так до конца и не освоились в вопросе выбора доменного имени для сайта.

До сих пор распространено нелепое суеверие, будто домены третьего уровня менее привлекательны, нежели домены второго уровня; более того, не так давно мне приходилось сталкиваться с утверждениями, будто домен в зоне .info неприличен — и почему? только лишь из-за низкой цены!

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

Читать дальше →
Всего голосов 62: ↑51 и ↓11+40
Комментарии193

Под прессом. Ломаем и защищаем Wordpress своими руками

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


WordPress — это удобная блог-платформа для публикации статей и управления ими, на которой базируется огромное число различных сайтов. Из-за своей распространенности эта CMS уже давно является лакомым куском для злоумышленников. К сожалению, базовые настройки не обеспечивают достаточного уровня защиты, оставляя многие дефолтные дырки незакрытыми. В этой статье мы пройдем типичным путем «типового» взлома сайта на Wordpress, а также покажем как устранить выявленные уязвимости.
Читать дальше →
Всего голосов 29: ↑26 и ↓3+23
Комментарии11

Вы можете обойтись без jQuery

Время на прочтение1 мин
Количество просмотров56K
jQuery — практически стандартная библиотека любого веб-разработчика. Если при разработке сайтов и веб-приложений почти никогда нет смысла отказываться от вылизанного до последнего байта библиотечного кода ради экономии нескольких десятков килобайт при загрузке, то при написании библиотек отказ от лишней зависимости выглядит куда соблазнительнее. Вполне может оказаться, что в ваш код достаточно включить всего пару десятков строк, реализующих одну или несколько функций jQuery. Да и вопросы совместимости и соответствия стандартам в современных браузерах стоят уже не так остро, как несколько лет назад.
Читать дальше →
Всего голосов 130: ↑97 и ↓33+64
Комментарии105

Как я учился защищать изображения

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

Изображение защиты

В этой статье хочу изложить нелёгкий путь, который я прошёл «защищая» изображения в вебе. Перед тем, как мы начнём это увлекательное путешествие, хочу обозначить два подхода в деле защиты изображений:
  1. ограничение/запрет постинга прямых ссылок на оригиналы изображений
  2. вы параноик и пытаетесь ограничить распростронение копий изображений

UPDATE
Универсальной защиты конечно же не существует. Статья о том, как не подставлять напрямую данные из GET в SQL-запросы. Только в контексте защиты изображений.
Итак...
Всего голосов 108: ↑69 и ↓39+30
Комментарии121

Закрепляем jQuery — 25 отличных советов

Время на прочтение19 мин
Количество просмотров168K
Перевод отличной статейки. Думаю, будет полезна как новичкам, которые только приступили к использованию jQuery, так и тем, кто уже какое-то время с ним работает. А кого-то, возможно, заставит глянуть эту чудесную библиотечку. Многие советы имеют отношение не только к jQuery, но и к JavaScript в целом. Лично для меня была весьма и весьма познавательной, посему и захотелось донести это «до масс». Перевод не дословный, но передающий смысл и максимально адаптированный к русскому языку.

Далее все написано от имени автора оригинальной статьи.

Введение


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

Я не эксперт в jQuery. И даже не претендую, поэтому, если встретите ошибки, смело поправляйте меня и вносите предложения по улучшению (поправлять и присылать поправки нужно автору статьи, а не перевода — зам. пер.).

Я называю себя «среднестатистическим» пользователем jQuery и я думаю, что всем остальным будет интересно почитать и что-нибудь почерпнуть из «фишек», «трюков» и техник, которые я освоил за последний год. Статья получилась куда длиннее, чем я предполагал изначально, так что в самом начале я привел «содержание» для более удобной навигации и возможности при желании пропустить не интересующие моменты.

Содержание


  1. Загружайте фреймворк с Google Code
  2. Используйте «шпаргалку» (cheat sheet)
  3. Соединяйте все ваши скрипты и уменьшайте размер файла
  4. Используйте возможности Firebug для ведения логов
  5. Минимизируйте операции выборки в пользу кэширования
  6. Сводите манипуляции с DOM-деревом к минимуму
  7. Оборачивайте все в единый элемент, когда речь идет о любой вставке в DOM
  8. Используйте «id» вместо классов, где это возможно
  9. Задайте контекст своим селекторам
  10. Используйте последовательности вызовов методов с умом
  11. Научитесь правильно использовать анимацию
  12. Научитесь назначать и делегировать события
  13. Используйте классы для сохранения состояния
  14. Еще лучше — используйте встроенный в jQuery метод data() для сохранения состояния
  15. Пишите собственные селекторы
  16. Подготавливайте HTML и модифицируйте его, когда страница загружена
  17. Используйте «отложенную загрузку» (lazy loading) для определенного контента для выигрыша в общей скорости и преимуществ для SEO
  18. Используйте служебные функции jQuery
  19. Используйте «noconflict» для переименования глобального объекта «jquery», когда используете его с другими фреймворками
  20. Как узнать что картинки загружены?
  21. Всегда используйте последнюю версию
  22. Как проверить, что элемент существует?
  23. Добавляйте класс «JS» в элемент «html»
  24. Возвращайте «false» для отмены поведения по-умолчанию
  25. Короткая запись для события готовности документа


Rock'n'Roll!
Всего голосов 188: ↑182 и ↓6+176
Комментарии109

Как удалить фейковый трафик с вашего сайта

Время на прочтение11 мин
Количество просмотров38K
Очень часто мы отмечаем всплеск трафика на сайте, анализируя данные, собранные Google Analytics. Это воспринимается как интерес к ресурсу. И, разумеется, такой рост посещаемости не может не радовать.  

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

Реферальный спам происходит, когда ваш сайт получает поддельные направления трафика от спам-ботов. Эта подделка трафика и записывается Google Analytics. Если вы замечаете в Аналитике трафик, полученный из спам источников, вам необходимо выполнить определенные действия, чтобы устранить эти данные из статистики. 

image

Что такое бот?


Ботами принято называть программы, задача которых – выполнение повторяющихся задач с  максимальной скоростью и степенью точности.

Традиционный вариант использования ботов — веб-индексация содержимого интернет-ресурсов, регулярно осуществляемая поисковиками. Но боты также могут использоваться и в злонамеренных целях. Например, для:
  • совершения мошенничества путем кликов;
  • аккумуляции адресов e-mail;
  • передачи содержания веб-сайтов;
  • распространения вредоносного программного обеспечения;
  • искусственного завышения трафика ресурса.

Анализируя задачи, для которых используются боты, можно разделить их на безопасные и опасные.
Читать дальше
Всего голосов 12: ↑11 и ↓1+10
Комментарии16

Использование cdn Amazon Cloudfront в wordpress в картинках

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

Однажды в студенную летнюю пору решил я прикрутить к блогу отдачу файлов из cdn Amazon CloudFront. Инфы как всегда мало и сделал все методом быстрого научного тыка.
Статья изобилует большим количеством пояснений и картинок.
Читать дальше →
Всего голосов 30: ↑27 и ↓3+24
Комментарии23

Ещё 10 уловок для защиты Wordpress'a

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

На сегодняшний день Wordpress как никогда популярен. Блоги, мини-сайты, а то и целые порталы — всё это строится на основе такого удобного движка-конструктора как Wordpress. Но за удобностью и лёгкостью освоения кроются, прежде всего, вопросы, связанные с безопасностью вашего сайта. Большая распространённость — большее внимание злоумышленников.

В этой статье описаны десять простых уловок, которые позволят сделать ваш сайт на Wordpress’e ещё более защищённым и позволят спокойнее спать по ночам.
Читать дальше →
Всего голосов 95: ↑84 и ↓11+73
Комментарии73

Каково это — быть разработчиком, когда тебе сорок

Время на прочтение18 мин
Количество просмотров229K
Примечание от переводчика:

Этот пост был написан и опубликован на Medium разработчиком приложений Адрианом Космачевским из Швейцарии. Кроме подготовки перевода его публикации, я также пригласил и самого автора, Адриана ( akosma ), на Хабр, для того, чтобы он смог лично ответить на любые вопросы участников сообщества, если таковые возникнут. Думаю, для общего удобства при общении в комментариях с ним стоит использовать английский (и, при желании, дублировать на русском).



Привет всем, я — сорокадвухлетний программист-самоучка, а это моя история.

Пару недель назад я наткнулся на твит, в котором была картинка, прикрепленная ниже, и он заставил меня задуматься о моей карьере.

image

Эти размышления привели меня туда, откуда все начиналось.

Я дебютировал в роли разработчика программного обеспечения в 10 часов утра 6 октября 1997 года, в городе Оливос, к северу от Буэнос-Айреса, в Аргентине. Был понедельник. Не так давно я праздновал свой 24-й день рождения.

Мир в 1997 году


Тогда он был немного другим. На веб-сайтах не было предупреждений об использовании cookie. Новаторскими в сети были сайты вида Excite.com, а моим любимым поисковиком был AltaVista.

Мой электронный ящик имел вид kosmacze@sc2a.unige.ch и был расположен на личном веб-сайте, который размещался по адресу http://sc2a.unige.ch/~kosmacze. Тогда мы еще оплакивали принцессу Диану, а Стив Джобс только-только вернулся на роль CEO и убедил Microsoft «вбросить» в Apple Computer 150 миллионов долларов. Digital Equipment Corporation подала в суд на Dell, останки Че Гевары вернули на Кубу, только начался четвертый (!) сезон «Друзей». Был убит Джанни Версаче, скончались Мать Тереза, Рой Лихтенштейн и Жанна Кальман. Люди зависали за Final Fantasy 7 на PlayStation, будто бы были наркоманами, Би-Би-2 начал вещание телепузиков, а Кэмерон только собирался показать миру свой «Титаник».
Читать дальше →
Всего голосов 200: ↑194 и ↓6+188
Комментарии321

SEO плагины для Wordpress

Время на прочтение2 мин
Количество просмотров17K
Плагины будут полезны не только SEO специалистам, но и любому блогеру.

SEO


Meta Robots WordPress plugin — автоматически добавляет мета теги к постам

Aizatto’s Related Posts — добавляет ссылки на «посты по теме» к постам на блоге и в фиде
Sitemap Generator — автоматически создает HTML карту сайта
Google (XML) Sitemaps — автоматически создает XML карту сайта и пингует в различные сайтмеп сервисы
Читать дальше →
Всего голосов 18: ↑10 и ↓8+2
Комментарии3

30 сервисов для тех, кто делает медиа

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

image

Собрали сервисы, которые сэкономят время на редактуру, привлекут трафик, вовлекут читателей, помогут вести аналитику, найти экспертов и все-все-все.
Читать дальше →
Всего голосов 9: ↑9 и ↓0+9
Комментарии2

How-to: Процесс создания верстки html-писем

Время на прочтение7 мин
Количество просмотров29K
В нашем блоге мы уже неоднократно рассказывали о создании email-рассылок с помощью CSS и HTML. Сегодня же речь пойдет о самом подходе к созданию верстки. Итальянский дизайнер Массимо Кассандро на сайте SitePoint описал свой процесс разработки html-писем. В нем есть несколько интересных моментов, так что мы решили сделать адаптированный перевод этой заметки.



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

По моему опыту, особенно важно это при создании HTML почтовых писем. Email требует выполнения большого количества повторяющихся задача, которые сами по себе не так уж сложны, но затрагивают огромное количество разных элементов, что может приводить к ошибкам. Вот, как я стараюсь этого избежать.
Читать дальше →
Всего голосов 15: ↑13 и ↓2+11
Комментарии6

Туториал по Jade для начинающих

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


Jade — это препроцессор HTML и шаблонизатор, который был написан на JavaScript для Node.js. Проще говоря, Jade — это именно то средство, которое предоставляет вам возможность написания разметки совершенно по новому, с целым рядом преимуществ по сравнению с обычным HTML.
Читать дальше →
Всего голосов 34: ↑27 и ↓7+20
Комментарии74

Анимация SVG-элемента path

Время на прочтение5 мин
Количество просмотров123K
Думаю многие видели обзоры игровых консолей нового поколения от Polygon (Vox Media). Это те, где консоли отрисовывались в стиле blueprint'ов:

PlayStation 4

Обзоры выглядели круто, довольно необычно и ново. О том как реализована основная фишка обзоров — SVG анимация, как сделать нечто подобное самому, и какие ещё «секретные» возможности скрывает старый добрый SVG в плане анимации элемента path — можно узнать под катом.
Читать дальше →
Всего голосов 64: ↑62 и ↓2+60
Комментарии15

Повышение Not Provided в Google Analytics: что изменится в SEO?

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

Количество отметок «not provided» в Google Analytics продолжает расти и уже этой осенью может достигнуть 100%. Возникает резонный вопрос, как теперь оценивать трафиковые проекты в SEO и как анализировать поисковый трафик с Google?

Что такое not provided?


Что же скрывает под собой запросы в категории «not provided» в Google Analytics? Это переходы из органического поиска пользователей, защищенных протоколом SSL (https). Google зашифровывает данные пользователей, которые:

  • Авторизовались в любом аккаунте Google (Gmail, Google+, AdWords, Analytics, YouTube, Drive);
  • Используют Firefox 14 и выше версии, т.к. поиск Google там происходит через протокол https;
  • Включили опцию безопасного поиска в настройках аккаунта.

Так было раньше. А теперь Google скрывает данные абсолютно всех пользователей! Не важно залогинен пользователь или нет, с мобильного или десктопа ведется поиск. Исключения обещали только для отдельных случаев, когда Google не может это сделать технически (для некоторых устройств и сетей).
Читать дальше →
Всего голосов 27: ↑17 и ↓10+7
Комментарии2
1
23 ...

Информация

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