Метка «web-разработка» - 12

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

Для начала кратко основные шаги:
— производим отправку изображения с использованием XMLHttpRequest;
— проводим проверку загруженных данных на сервере на предмет «действительно ли это изображение»;
— проводим принудительное преобразование изображения в jpeg
Читать полностью »

Кейт Мэтсудейра: Масштабируемая Веб архитектура и распределенные системыЧетыре месяца назад ребром встал вопрос о тексте для моего дипломного перевода. Результатом помощи коллективного разума стало решение переводить главу Scalable Web Architecture and Distributed Systems за авторством Kate Matsudaira. Нужно отметить, что это мой первый перевод такого объема и сложности. Текст, был мною относительно успешно переведен, хотя по качеству перевода я поставил бы себе 6-7 из 10. Дабы мои усилия не пропали втуне, публикую результат своих трудов.

Читать полностью »

Всем привет!

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

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

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

В статье расскажу какие инструменты позволяют быстро диагностировать проблему, приведу работающий код и дам несколько боевых рекомендаций по выживанию :-)

Читать полностью »

Приветствую всех.
Эта статья поможет начинающим в области веб-программирования научиться писать плагины под JIRA. Сам в начале работы с этой системой столкнулся с тем, что, во-первых, нет ни одного достаточно подробного и русскоязычного гайда. А во-вторых, большая часть статей рассчитана на достаточно опытных людей.
Для начала, я рассмотрю основные моменты и ошибки при создании плагинов, а так же структуру JIRA плагина, что сильно упростит задачу начинающему веб-программисту.
Читать полностью »

В своем комментарии: habrahabr.ru/post/177709/#comment_6169843 я описал проблему расширения из соответствующей статьи, кроме редиректов также есть проблемы с выводом логов AJAX запросов и возможно в некоторых случаях с iframe заголовками.
Я решил разобраться почему это происходит и понял, что то мое утверждение было слишком категоричным. После того как webRequest перестал быть экспериментальным developer.chrome.com/extensions/experimental.webRequest.html теперь можно писать логеры «на заголовках» обрабатывающие все, ранее проблемные, ситуации. Я не ставлю своей целью разобрать все такие ситуации, просто хотел бы показать — как можно модифицировать расширение Chrome Logger для решения части вышеуказанных проблем и возможно заинтересовать желающих разобраться с расширениями Google Chrome на простом примере. Может быть у кого-то после прочтения поста возникнет желание написать свое расширение.
Читать полностью »

Запустили svsite.com — сервис для размещения сайтов из одной страницы. Очень удобно, когда нужно быстро поднять сайт или html5-приложение. Для сайтов-визиток — вообще идеальный вариант. Одностраничные сайты сейчас в тренде.

Что сейчас можно делать:

  • Редактировать исходный код сайта (html, css, javascript) с подсветкой синтаксиса.
  • Править содержание страницы с помощью WYSIWYG-редактора прямо на сайте. Чтобы редактировать текст на сайте, нужно поместить его в html-тег с любым id и css-классом sv. С тегом <img> такое тоже работает — появляется меню загрузки изображения.
  • Читать полностью »

Автоматизация тестирования Web приложений

Автоматизация тестирования – место встречи двух дисциплин: разработки и тестирования. Наверное поэтому, я отношу эту практику к сложным, но интересным.

Путем проб и ошибок мы пришли к следующему технологическому стеку:

  1. SpecFlow (опционально): DSL
  2. NUnit: тестовый фреймворк
  3. PageObject + PageElements: UI-абстракиця
  4. Контекст тестирования (информация о целевом окружении, пользователях системы)
  5. Selenium.WebDriver

Для запуска тестов по расписанию мы используем TFS 2012 и TeamCity.
В статье я опишу, как мы к этому пришли, типовые ошибки и пути их решения.
Читать полностью »

image

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

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

Очень часто, почти всегда, хочется сократить до максимума время/усилия на создание «админки».

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

Обычно на рутинный процесс создания этого интерфейса уходит непростительно много времени/ресурсов.

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

Именно к таким наработкам относится и Rear.

С его помощью можно создать полноценный админ интерфейс одной строкой — include Rear

Согласен, звучит как SEO-шное заявление, но тем не менее это так.

Полный разбор полёта под катом.

А для нетерпеливых — смотрим демо

Читать полностью »

Привет всем.

Как вы уже поняли из названия статьи, я не люблю JS framework'и.
Меня пугает их размер, медлительность и неизвестность…
Да-да, именно 'неизвестность', даже когда есть берешь 'чистые' исходники без какой-либо компрессии и тд., сложно проследить весь путь исполняемой функции. Сколько раз на работе сталкивался с тем что элементарная задача, типа: «Удалить целую строку из html таблицы, при клике на кнопку» — заканчивалась error'ом в IE. Именно поэтому я и задумался над созданием своего 'джентльменского' набора для работы с JS.

Что-то было найдено на просторах javascript.ru, что-то — на просторах Интернета, а что-то и было написано мной.
Большинство функций каждый из вас уже видел, поэтому я буду задерживаться только на интересных моментах (на мой взгляд).

Итак, приступим:
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js