Pull to refresh
17
0

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

Send message

Рельсы сошли с рельс: Почему я переписываю Archaeopteryx на CoffeeScript

Reading time14 min
Views5K
Вы бывали на вечеринках, где друзья с работы и друзья из колледжа не разговаривают?

Я запостил видео на Tumblr, которое бы никогда не запостил на Facebook:


Это гитарист, отжигающий под «Bangarang» Skrillex'а.
Эй, при чём тут вообще Рельсы?!

Советы себе в прошлом

Reading time4 min
Views23K
У меня очень мало опыта (суммарно программистом я проработал 16 месяцев), тем не менее, я хотел бы дать несколько советов себе-в-прошлом, ну, или иными словами всем тем, кто сейчас учится в университете и планирует стать разработчиком ПО. Ни в коей мере не претендую на мудрость или опытность. Немного подумав, я понял, что все эти советы как никогда актуальны для меня и сегодня тоже. Первую заметку я опубликовал в своем блоге в прошлом году, а сейчас публикую здесь список, расширенный советами читателей блога.

Все советы автономны и их порядок не имеет значения.
Читать дальше →

Честная генерация DOCX файлов на PHP. Часть 2

Reading time7 min
Views29K
image Здравствуйте, уважаемое хабрасообщество!
Продолжаем историю про генерацию DOCX средствами PHP.

Что нас ждет сегодня:
  • Мы узнаем, как вставлять изображения в документ;
  • Просветимся на счет English Metric Units;
  • Сделаем задел на будущую генерацию Exel.

Тем, кто не в курсе, рекомендуется прочитать первую часть. Ну а кто в теме – прошу под кат
Читать дальше →

Онлайн-симулятор для проверки и тестирования интерфейсов для людей с ограниченными возможностями

Reading time2 min
Views2.7K
Одной из проблем, с которой может столкнуться каждый человек, является старение, и связанные с этим возможности зрения, возможности различать мельчащие детали, видеть в сумерках и т.п. В тоже время нужно понимать, что каждое следующее поколение подходит к старости все более и более «компьютеризированным», привыкшим осуществлять многие действия с помощью персонального компьютера, планшетов, смартфонов и других устройств с различными интерфейсами ввода.

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

image

Ссылка на проект: http://bit.ly/eyesim

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

Основная функциональность сервиса заключается в возможности любого пользователи сети Интернете указать адрес Интернет-ресурса в поле ввода, автоматически получить скриншот указанной страницы сайта и начать применять к полученной картинке фильтры, каждый из которых соответствует тому или иному ограничению в зрении, для некоторых фильтров также отображается регулятор степени данного дефекта зрения, например для потери центрального поля зрения (регулируется площадь поля, недоступного для просмотра). Также в симуляторе реализован функционал слежения за взглядом пользователя: выбранный фильтр привязан к курсору, таким образом передвигая указатель по интерфейсу пользователь симулятора может передвигать полученное поле дефекта по картинке, что позволяет эффективно обнаруживать области, полностью недоступные пользователям с ограниченным зрением. Данные о виде видимых дефектов для различных фильтров симуляторы были взяты из разработок Cambridge Design Center, других прикладных программ-симуляторов для операционных систем Windows, технических устройств и фильтров для эмуляции зрения людей с ограниченными возможностями.

Для кого может быть полезен такой проект:

1. Профессиональным разработчикам интерфейсов информационных систем, тестировщикам и другим специалистам, так или иначе задействованным в разработке интерфейсов;

2. Для некомерческой аудитории — каждый человек, владелец сайта, сервиса сможет проверить доступность своих ресурсов для людей с ограниченными возможностями;

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

2012, Любич М.В.

Модуль nginx для борьбы с DDoS

Reading time6 min
Views67K
Многие сталкивались с таким явлением как DDoS атака методом HTTP флуда. Нет, это не очередной туториал по настройке nginx, хочу представить свой модуль, работающий как быстрый фильтр между ботами и бэкэндом во время L7 DDoS атаки и позволяющий отсеивать мусорные запросы.
Читать дальше →

Методы мониторинга веб-сайтов и сервисов

Reading time4 min
Views34K
WEBO PulsarБизнес в интернете сейчас очень сильно завязан не только на качество самого сайта, но и на его доступность и работоспособность в режиме 24/7/365. И хотя хостинг-провайдеры заявляют о достаточно большом аптайме площадок и серверов, не всегда этого бывает достаточно, чтобы быть уверенным в надежности сайта. Одним из помощников в этом является мониторинг как доступности, так и работоспособности основных подсистем сайта. Давайте посмотрим, как это можно делать сейчас.

Регулярная проверка


Один из наиболее распространенных методов — регулярная проверка работоспособности сайта. Можно делать самому — открыть с утра сайт любимой компании или интернет-магазин (имея его в стартовой странице браузера), радоваться, что работает. И закрывать. Не очень удобно и совсем не эффективно. Проблемы с доступностью обычно начинаются непредсказуемо. Обнаруживать их лучше сразу же, как только они возникли. Также часто помогают сами пользователи — начинают звонить и писать, что сайт не работает (если телефон и почта указаны где-то за пределами сайта). Самый же частый сигнал нерабочего сайта — прекращают приходить клиенты. Тут уже бьют тревогу и начинают выяснять, что же там случилось. рвут волосы, отрывают колокольчики, посыпают пеплом и солью. Хотя всего этого можно было избежать.
Читать дальше →

Начала отладки и профилирования веб-приложений

Reading time8 min
Views19K

Вступление


Много существует статей на Хабре, описывающих интересные и сложные аспекты веб-разработки, но много существует читателей, которые, находясь в начале своей карьеры веб-разработчика, хотели бы видеть материал, который позволил бы сделать первый шаг от «PHP за 24 часа» до разработки на серьезном уровне, и я хотел бы поделиться своим опытом в этом деле.

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

Так же можно отнести к задачам отладки клиентского кода анализ и валидацию HTML кода. Это, вроде бы, задача не совсем из области программирования, но также немаловажная.

Некоторые части рассмотренных задач уже рассматривались в других статьях, и я предоставил на них ссылки.
Читать дальше →

Рекомендательные системы: постановка задачи

Reading time5 min
Views31K
Всем привет! Меня зовут Сергей, я математик, и я определяю развитие рекомендательной системы Surfingbird. Этой статьёй мы открываем цикл, посвящённый машинному обучению и рекомендательным системам в частности – пока не знаю, сколько в цикле будет инсталляций, но постараюсь писать их регулярно. Сегодня я расскажу вам, что такое рекомендательные системы вообще, и поставлю задачу чуть более формально, а в следующих сериях мы начнём говорить о том, как её решать и как учится наша рекомендательная система Tachikoma.

image

Читать дальше →

Уязвимы по определению

Reading time4 min
Views39K
У многих людей, как-либо связанных с безопасностью, периодически возникает желание заняться pentest'ом, то есть тестом на проникновение. И чаще всего начинают все с pentest'а веб-приложений. Порог вхождения довольно мал (простейшая sqli определяется добавлением кавычки в параметр и эксплуатируется не особо сложнее), но при этом встречаются и довольно сложные задания, которые заставляют потратить пару-тройку дней на ковыряние.
Но возникает вопрос — где применять теоретические знания, без страха внезапного появления маски-шоу? Под катом проведу небольшой обзор полигонов для экспериментов по pentest'у.
Читать дальше →

Техническое задание на сайт

Reading time11 min
Views699K
UPD: Продолжение статьи с примером техзадания

Не так давно на хабре были две статьи (Согласно техническому заданию и А зачем мне ТЗ? Я и так знаю!) посвященные техническим заданиям. У меня обе статьи вызвали, мягко говоря, недоумение, в особенности статья «Согласно техническому заданию». На мой взгляд, это вообще вредная статья, которая приводит к неверному понимаю сути ТЗ. В связи с этим хочу выразить свой взгляд на этот вопрос. Не буду говорить обо всех тех. заданиях, слишком широка тема, но думаю смогу рассказать о ТЗ на сайт.

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

Большинство сайтов можно отнести к маленьким и очень маленьким проектам, масштаба единиц человеко-месяцев. В силу малости размеров такие проекты спокойно поддаются хорошему продумыванию и легко реализуются с помощью водопадной модели, достаточно просто не лениться на каждом этапе разработки (от написания ТЗ до сдачи проекта). Применять к этим проектам гибкие методологии разработки нет смысла, а как раз есть смысл применять хорошее ТЗ. К тем сайтам, которые не попадают под водопадную модель не стоит применять описанный ниже подход.

1. Обоснование необходимости ТЗ


А зачем вообще нужно ТЗ на сайт? Заказчик говорит: «Нужен следующий сайт: каталог товаров, корзина, форма заказа, доставка, мы на карте, о нас, обратная связь». Что не ясно? Ничего необычного, всё обыденно и рутинно.

Разработчик отчетливо представляет, что нужно сделать, а сделать, в его понимании нужно вот так:



Далее много букв

Установка легковесного Jabber сервера Prosody с LDAP аутентификацией через SASL

Reading time2 min
Views11K
Это простой рецепт для настройки IM сервера для общения внутри компании. В нашей компании для общения внутри сети используется Jabber и некоторое время назад мы стали замечать что jabberd14 нещадно протекает и грузит сервер. Поиски легковесной замены привели к северу Prosody написаному на языке Lua. По заверению разработчиков это современный гибкий сервер для общения, ориентированый на простоту настройки и нетребовательный к ресурсам. Работа последние пару месяцев это в принципе подтверждает.

Читать дальше →

Автозагрузка в PHP: начали за здравие, а кончили за упокой

Reading time5 min
Views23K

Предисловие переводчика


Данная статья является вольным переводом-пересказом поста The End of Autoloading
. Оригинальная статья не первой свежести, поэтому код приведенный в примерах может быть не актуален. В теме, которую затрагивает статья, самое главное — общий взгляд, а не конкретные примеры.

Предисловие


Автозагрузка в PHP отлично экономит время. Это позволяет писать скрипты не задумываясь о путях к библиотекам, которые вы используете. Но с приходом неймспейсов и под влиянием Java-стиля современных фреймворков ситуация изменилась. В ближайшем будущем автозагрузка будет повсеместно, но без единой выгоды старого ее стиля.
Читать дальше →

Честная генерация DOCX на PHP. Часть 1

Reading time4 min
Views72K
image Здравствуйте, уважаемое хабрасообщество! Как-то раз был на хабре интересный материал про генерацию doc-файлов средствами PHP. К сожалению, больше на хабре ничего на эту тему я не нашел. На тот момент я разработал собственное решение.
Оно состояло в том, чтобы генерировать .docx файлы. Аргументы были следующие:

  • На дворе 2012 год, а этот формат появился аж в 2007-м
  • Генерить .docx несомненно проще, чем .doc, поскольку .docx = .zip, а .doc — бинарный файл
  • Костыль с генерацией HTML и переименованием в doc не подойдет для более-менее уважающих себя проектов
  • С помощью приведенного ниже метода мы с легкостью сгенерируем Excel, и вообще всё что угодно.

Подробности под катом.
Читать дальше →

Простой индикатор раскладки клавиатуры в курсоре на С++

Reading time2 min
Views37K
Тема отображения текущей раскладки беспокоила хабрасообщество уже не раз. Я опробовал множество существующих решений, но по разным причинам они меня не устроили. Чтобы подобрать для себя наиболее удобный вариант отображения текущей раскладки, я написал небольшое приложение на C++, которое при нажатии на левый Shift отображает язык в системном курсоре редактирования текста. Менее 100 строк кода и около 4 килобайт в скомпилированном виде — на основе этого вы можете достаточно просто реализовать свой взгляд на то, как на самом деле должна выглядеть индикация текущей раскладки.
Читать дальше →

Видеоплеер из подручных материалов

Reading time6 min
Views66K
Эта статья расскажет, как сделать видеоплеер из предметов, которые можно найти в кладовке любого айтишника. Ардуино, журнал Vogue, и дисплей от Нокиа 3310 можно оставить в покое — они нам не понадобятся. Наличие паяльника приветствуется, но можно обойтись и без него.

Судя по скорости развития технологий, лет через десять появится поколение, никогда не видевшее электронно-лучевых трубок. А между тем, история видео дисплеев начиналась с совершенно других устройств…
Читать дальше →

Самая маленькая игра в мире (58 байт)

Reading time3 min
Views55K
Для тех, кто читал статью в песочнице: добавил раздел «Можно ли сделать игру меньше?».

Прочитав историю одного байта, вспомнил свою историю.

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

Первый прототип, размером 80 байт, был готов на следующий день. (Поскольку о контроле версий тогда я даже не догадывался, то остается верить воспоминаниям). С этого момента началась моя борьба за байты. Помню, довольно быстро размер был уменьшен до 65 (или около того), дальше каждый байт давался все с большим и большим трудом. К концу лета результат был 58 байт.

Сюжет и управление


Вы несетесь по трассе на грузовике с двумя прицепами. Слева от вас разделительная полоса, справа обочина укрытая травой. На дороге встречаются люди и деревья (может ямы). Ваша задача: не сбивать людей и не врезаться в деревья (не попадать в ямы).
Управление: стрелки влево-вправо — поворот; Esc — пауза.

Скриншоты и код

MySQL Performance real life Tips and Tricks. Part 3-rd.

Reading time14 min
Views23K
Решил продолжить цикл заметок по данной тематике. В данной статье особое место хотел уделить профайлингу MySQL запросов. Описать средства, которые предоставляются MySQL для профайлинга, и что нужно делать для определения узких мест запроса.

Также, после опубликования первых двух статей я получил пару отзывов и вопросов, связанных с проектированием БД / расстановкой индексов / составлением запросов. На многие вопросы старался отвечать. С некоторыми из них поделюсь и в этой статье.

Читать дальше →

Золотые правила успешной кнопки

Reading time3 min
Views71K
Здравствуй, дорогой хабрадруг! Сегодня существуют более тысячи способов создать кнопку; чтобы понять их сущность, вам нужно лишь потратить немного времени, просмотрев работы на сайте dribbble.com. Большинство из этих примеров очень похожи друг на друга, однако время от времени попадаются и такие кнопки, на создание которых потратили чуть больше внимания, времени и сил.



Воспользовавшись замечательными параметрами CSS3, мы можем создать элегантые и стильные кнопки без особых усилий (учитывая старые браузеры, конечно). Создаете ли вы кнопку непосредственно в CSS или пользуетесь специальными инструментами для их создания, всегда нужно тщательно подумать о том, как ваша кнопка будет выглядеть в контексте веб-сайта.
Читать дальше →

Удалённое снятие информации о посещённых страницах

Reading time1 min
Views1.2K
Специалисты по безопасности обращают внимание на одну из самых привычных и естественных функций браузера: информацию о посещённых ссылках в браузере. Как известно, после посещения ссылки и перезагрузки страницы ссылка меняет цвет. Так вот, эту информацию можно очень легко снять с помощью специального скрипта. Опасность подобной атаки часто недооценивается.

Владелец сайта может легко посмотреть, какие ссылки вы уже посетили раньше. Для этого он может даже специально внедрить невидимые ссылки на странице, снимая информацию скриптом. Например, он может проверить, ходили ли вы на сайт конкурента, отметить этот факт в cookies и даже изменить для вас контент сайта соответствующим образом. Конечно же, это явное нарушение приватности. И тем более неприятно знать, что приватную информацию о вас так легко может узнать кто угодно. Разработчики Mozilla обратили внимание на такую опасность ещё в 2002 году, но не придумали, что можно сделать.

Конечно, никто не оспаривает удобство функции для самого пользователя. На самом деле, все мы давно привыкли к ней. Кроме того, владельцы сайта могут применить фантазию и использовать удалённый съём информации из чужого браузера для более качественной фильтрации своего контента. Например, можно не ставить кнопки на некоторые социальные сайты, если пользователь уже ходил по этим ссылкам. Но даже в этом случае законность подобных действий вызывает сомнения.
Читать дальше →

Промышленный шпионаж

Reading time2 min
Views7.8K
Потребовалось как-то одной фирме стырить чертежи деталей которые конкуренты вытачивали на своих ЧПУ станках. Причем не просто чертежи, а ЧПУшные программы по которым все это обрабатывается. Но сделать это было не просто — чертежи в виде файлов шли в станки через локальную сеть напрямую из офиса фирмы. В самом станке они оседали в шареных папках откуда уже их забирали операторы втюхивали в прогу обработки. К слову, на всех станках стояла Win2000, вообще современных станков на системах отличных от винды или DOS я еще не видел ни разу.
Единственный с кем удалось договориться о краже планов резки оказался оператор станка, но вот западло — стойки станков наглухо закрыты и опечатаны. Наружу торчит только монитор, мышь и клавиатура. Ну и морда PLC, но с нее ничего особо не поимеешь. До компов, чтобы сунуть туда дискетку или флешку не добраться. Как быть?

Решение оказалось очень простым — окзалось что мыша там стоит USBшная. Поэтому быстра была найдена подобная же мышь, препарирована. В чрево мыши засунули обрезки USB хаба в который воткнули флешку и, собственно, мышь. А шнур мыши пихнули на вход хаба. После мышь попинали по цеху, чтобы придать ей заводскую замоханность и загаженность. Далее комбинация была протой — подкупленный оператор выдергивал через дырку в стойке свою мышь и шел жаловаться местному IT шнику на предмет того, что он случайно мышь дернул и она выпала. Ничего не подозревающий админ, по совместительству еще и безопасник, собственным ключом открывал стойку, втыкал туда мышу, закрывал и уходил по своим делам. Дальше тривиально — в системе ВНЕЗАПНО появлялась флешка, куда в течении месяца сливались все файлы. После мышь разбиралась, а флешка уходила к конкурентам.
Потом было много воплей, разборок и поисков крайних. Утечку так и не нашли, А заряженая мышь поди до сих пор там стоит…
*****
публиукется с любезного разрешения автора — DI HALT (dihalt.ru)

Information

Rating
Does not participate
Registered
Activity