Как стать автором
Поиск
Написать публикацию
Обновить
0
MniD @MniDread⁠-⁠only

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

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

Сервис для сборки Zend Framework в один файл

Время на прочтение1 мин
Количество просмотров1.3K
Здравствуйте, уважаемые хабрачитатели!
Сей краткий пост посвящен небольшому сервису по сборке Zend Framework-a в один файл.
Зачем это делать, не раз уже писалось на хабре (например, тут), но если кому-то лень читать, я передам основной тезис: при использовании кэшера опкода (к примеру, eaccelerator) сборка фреймворка в один файл дает большой прирост производительности.
Сервис находится здесь. Кроме меня, его никто не тестировал, так что прошу сообщать о найденных багах.
На данный момент исходным материалом для сборок служит Zend Framework версии 1.10.2.
Буду рад, если кому-то это окажется полезным.

Собираем установочные пакеты из Qt проектов по-взрослому

Время на прочтение21 мин
Количество просмотров22K
Методом проб и ошибок я изобрел очередной велосипед, о котором и собираюсь рассказать Вам ниже.Речь пойдет о сборке пакетов из проектов Qt для Debian и Rpm based систем, Windows из под Ubuntu/Debian. В принципе метод весьма прост, поэтому, думаю, что при небольших изменениях он подойдет и для rpb based дистрибтивов, а для Windows систем потребуется установка cygwin.Кроме того эта тема очень мало обсуждается в интернете, хотя я бы не назвал сборку кроссплатформенных приложений в инсталяционные пакеты простой задачей.Кому будет интересен данный материал:
  • в первую очередь начинающим разработчикам Qt, которые хотят распространять свои приложения в удобном для пользователей виде;
  • разработчикам, использующих другие языки программирования (при небольших изменениях можно получить.
У меня есть уверенность в том, что все действия, описанные ниже, можно было бы сделать скриптом make, но и текущий вариант тоже неплох и имеет право на существование.Также, если Вы используете любой другой способ для автоматической сборки проектов, опишите его пожалуйста. Хотелось бы собрать в итоге как можно больше информации по этой теме.
Читать дальше →

Безопасная авторизация с передачей хешированного пароля

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

Пароль по сети передаваться не будет, поэтому используется хеширование прямо в браузере, для этого использую небольшую библиотеку JavaScript SHA-1. Почему SHA-1, а не, допустим, MD5? Считается, что SHA-1 немного надежнее, да и сама JavaScript библиотека меньше, чем аналогичная (на том же сайте) для MD5.
Читать дальше →

Фокус с HeadScript (сборка в один файл)

Время на прочтение8 мин
Количество просмотров3.2K
Если сделать так:
<?php $this->headScript()->appendFile('/js/my1.js');?>
<?php $this->headScript()->appendFile('/js/my2.js');?>
<?php $this->headScript()->captureStart() ?>
  var action = '<?php echo $this->baseUrl ?>';
<?php $this->headScript()->captureEnd() ?>

<?php echo $this->headScript(); ?>
<?php echo $this->magicHeadScript(); ?>


то вместо чего-то типа такого:
<script type="text/javascript" src="/js/my1.js"></script>
<script type="text/javascript" src="/js/my2.js"></script>
<script type="text/javascript">
  var action = '/123';
</script>

получим на выходе:
<script type="text/javascript" src="/cache/js/1b1004a203..._compressed.js"></script>

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

Управляем голосом или правильный посыл

Время на прочтение3 мин
Количество просмотров36K
Продолжаю маленькими порциями выдавать то, что знаю про скрытые резервы каждого человека.

Часто сталкиваюсь с тем, что люди не умеют управлять голосом. Даже те, кто публично выступает. Выглядит это со стороны довольно уныло: человек со сцены (из-за круглого стола переговоров, в совещательной комнате, в классе) в лучшем случае говорит кому-то одному, близкосидящему, либо вообще в никуда. От этого всем остальным становится неуютно. Они чувствуют себя лишними.

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

Как правило, из-за неумения банально управлять своими связками и глоткой (гусары!) Есть 2 типичные ошибки:

1. Стараясь сказать громко, чтобы все услышали, человек сильно напрягает связки. А что такое связки? Правильно, мышцы, которые буквально сжимают горло! Чтож мы имеем? Сильное напряжение легких, глотки, рта и… сдавленный, визгливый голос. Красиво, правда?

2. Человек старается говорить громко, но все равно посылает звук себе под нос! Как будто надо оглушить какого-то рядомсидящего слушателя. И всем как-то неловко.

Что же с этим можно сделать?
Читать дальше →

Несколько фишек для изучающих английский язык

Время на прочтение1 мин
Количество просмотров48K
1. Анонимные чаты: omegle.com, chatroulette.com
2. Сайты-помощники: kwiz.me, kimir.org, englishtips.org
3. Подкастинг: eslpod.com, effortlessenglish.com, npr.podcast.com, businessenglishpod.com,
4. Качаем фильмы/сериалы, затем субтитры к ним. Просматривать можно с замедлением в VLC плеере чтобы лучше переваривать. Еще рекомендую комик шоу, например Important Things with Demetri Martin — не пожалеете.
5. В скайпе ищем каких нибудь индусов со статусом SkypeMe и не стенсняясь знакомимся.
6. При прочтении какой-то книги или просмотра фильма неплохо бы подготовится таким образом: берем текст, устанавливаем длину слова и частоту употребления в тексте и запускаем, например, этот скрипт (PHP): pastebin.com/m7672c2a9
В итоге имеем дайджест слов большинство из которых вы уже знаете но остальные стоит подучить. И когда вы будете смотреть фильм или читать книгу вы автоматом поймете это слово.
7. Произношение слов — ставим в Google.translate режим Русский->English и в поле текста пишем английское слово — оно без перевода встанет справа вместе с флэшкой которое произносит слово. Также forvo.com, howjsay.com
8. Социальные сервисы ответов:
answers.yahoo.com, vark.com
9. Социальные сети для изучения языка:
livemocha.com, lingq.com, italki.com
10. Остальное:
nytimes.com, ecenglish.com, urbandictionary.com
allengl.narod.ru/top/phvTOP170.htm

Надеюсь каждый нашел для себя что-то полезное:)

Простой и эффективный метод отразить http DDoS от 50мбит с помощью nginx и iptables

Время на прочтение7 мин
Количество просмотров67K
Здравствуй, Хабр!
Предлагаю твоему вниманию простой и в то же время эффективный метод борьбы с http DDoS. На основе сервера Xeon 2.5GHz / 4Gb RAM / SAS можно отражать атаку примерно до 300 Мбит/с (значение получено методом экстраполяции).

Способ реализация

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

Область применения

Борьба с Http DDoS на выделенном сервере или ВПС. Максимальная возможная мощность сдерживания DDoS атаки ограничивается физическими возможностями сервера и пропускной способностью канала.

SEO под DDoS-ом

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

Стоимость и эффективность

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

Создание круговых панорам (flash)

Время на прочтение5 мин
Количество просмотров142K
Как сделать панорамное фото с трехмерным обзором


Вертеть головой — потянув мышкой, или курсорами ← →, приближение/удаление — колесиком мышки.

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

Вообще, сделать панорамное фото (в т.ч. круговую панораму) совсем не сложно.
При минимальном навыке на всё уйдет минут 10.

Перечислю всё, что нам понадобится:
Читать дальше →

Неофициальная трансляция ACM ICPC 2010 — как это было

Время на прочтение6 мин
Количество просмотров992
Пост по мотивам прошедшего в пятницу финала ACM ICPC 2010, о том, как в буквальном смысле слова «на коленке» поднять зеркало умирающей под нагрузкой странички, прикрутить к нему чат с ее обсуждением, и не загнуться от нагрузки самому :)

Пост будет интересен скорее веб-программистам, нежели олимпиадникам.

Немного статистики, конфигов nginx, полезные трюки, а также ряд граблей, которые должны быть прекрасно известны людям с опытом, но на которые многие все равно часто наступают…

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

QUnit. Тестирование javascript кода

Время на прочтение5 мин
Количество просмотров64K
Наткнулся вчера на этот инструмент и не смог пройти мимо, провел ночь за написанием тестов, а теперь хочу поделиться находкой. QUnit — это библиотека от разработчиков jQuery, позволяющая писать unit-тесты для кода на javascript. Удобна в использовании, ничего лишнего, осваивается за 20 минут, выгода от применения — колоссальная.

Самым нетерпеливым сразу ссылки:
Официальная документация на сайте jquery: docs.jquery.com/QUnit
Реальные примеры тестов (для модулей jquery): view.jquery.com/trunk/jquery/test/unit
Руководство для начинающих (англ): www.swift-lizard.com/2009/11/24/test-driven-development-with-jquery-qunit
Система распределенного тестирования (гениально и просто): testswarm.com

Под катом информация о преимуществах юнит-тестирования применительно к js и разбор возможностей библиотеки на примерах.
Читать дальше →

SVG-Edit — рисуем в онлайн, рисуем в офлайн

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


Встречаем новую версию (2.4) открытого векторного редактора SVG-edit.

SVG-Edit

Это действительно быстрый, основанный на веб-технологиях, векторный редактор, использующий только JS, HTML, CSS и SVG.

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

К чему слова, пробуем!

Фишки под катом

Море волнуется раз ..., или Капча 4D

Время на прочтение2 мин
Количество просмотров4.1K
Как то я уже писал топик про каптчу 3D
Дай карму! :)
А вчера решил слегка переделать, добавить рюшечек и еще одно измерение.
Долго сказка пишется, да быстро дело делается, рушил сделал и вот наваял гиперкуб Капчу 4D.
А посмотреть что получилось можно здесь

peeep.us — ссылки на закрытые страницы

Время на прочтение1 мин
Количество просмотров5.5K
Привет, Хабр!

Хочу сообщить тебе, что как-то ночью я, большой ненавистник сервисов сокращения ссылок, и сам запустил свою сокращалку. Но не простую, а с изюминкой.

Суть сервиса в том, что вместе с самой ссылкой peeep.us хранит содержимое страницы с точки зрения пользователя, который создавал ссылку. Это дает возможность опубликовать или дать другу ссылку на страничку, обычно недоступную для просмотра извне. Например, можно показать другу классный пост на Лепре или личное сообщение вконтакте. А еще его можно использовать просто как хранитель состояния сайта. По пииипнутой ссылке будет всегда доступно содержимое страницы на момент времени, когда она была создана (вместе с удаленными коммантариями, например). Это как кеш Google или archive.org, только по требованию.

Вот как это выглядит: прекрасный пост Артема Шитова. Видна лепра?

Чтобы просто сохранить состояние страницы нужно ввести адрес на peeep.us и кликнуть submit. А если нужно сделать ссылку на закрытую страницу, придется воспользоваться букмарклетом, который есть там же. Букмарклет скачает текст страницы XMLHttpRequest'ом, а затем отправит куда надо. Все, вроде бы, несложно.

Кстати, сам сервис работает на Google AppEngine, то есть потенциально закроется или заддосится только вместе с гуглом целиком ;). А если кому интересно, откуда такое тупое название, так это от слова peep — подглядывать [в замочную скважину].

Небольшой demo клиент vkontakte на QML

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

Недавно я уже рассказывал о новом языке разметки, теперь же мне хотелось бы показать небольшой пример того, что можно с помощью этих инструментов сделать. В качестве демонстрации я решил написать крошечный клиент для популярной в рунете сети vkontakte.
Данный клиент взаимодействует с контактом через userapi, умеет отображать список пользователей, принимать и отправлять сообщения, отображать пользователей, от которых есть непрочитанные сообщения, а также искать нужных людей среди френдленты по имени и фамилии: в общем самый минимум, хотя делает он это весьма красиво.
Примечателен клиент тем, что здесь нет ни единой строчки на C++, всё сделано средствами qml и javascript.
Несколько скриншотов и ссылки для скачивания

Nginx + серверный Javascript

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

… или как перейти с PHP + JavaScript на JavaScript + JavaScript


Идея реализовать проект на сервер-сайд JavaScript была уже давно. Проблема была в отсутствии подходящего серверного программного обеспечения. Существующие открытые проекты не устраивали по разным причинам. Устанавливать дополнительный модуль для Apache было не самой хорошей идеей, потому что производительность и оптимизация использования памяти при этом были бы не на высоте. С помощью jslibs можно настроить FastCGI, но очень не хотелось оставлять ни малейших шансов «502 Bad Gateway», проект ngx_http_js_module так и остался в зачаточной стадии, а ngxv8 недостаточно развит для реализации реальных приложений. Поэтому я решил сделать собственную реализацию серверного javascript. Причем постараться сразу запрограммировать всю базовую функциональность, чтобы можно было ее тестировать в условиях, близких к реальности.

В качестве основного веб-сервера было решено использовать nginx, в качестве «движка» javascript — TraceMonkey (javascript-движок из Mozilla Firefox, бывший SpiderMonkey), и написать модуль для nginx, который бы их «склеил». Ничего сложного, на первый взгляд, но очень хотелось иметь определенную функциональность (и это получилось!), чтобы можно было нормально работать дальше. Большинство идей заимствованы, кстати, из PHP.
  • Корректная работа в multi-thread условиях
  • Возможность выполнять скрипт, указанный в URL, а не настраивать отдельно скрипт-обработчик и функцию-обработчик для каждого location
  • Возможность вызывать include(), sleep(), alert() из скрипта, использовать __FILE__ и __LINE__
  • Ограничение памяти, выделяемой каждому скрипту, и времени работы скрипта
  • Защита открываемых скриптом файлов, указав в настройках список разрешенных папок. Примерно как open_basedir в PHP
  • Автоматический разбор данных запроса (параметров GET, POST, и, конечно же, cookies), чтобы не писать обработку данных на javascript
  • Поддержка запросов application/x-www-form-urlencoded и multipart/form-data
  • Поддержка basic-авторизации
  • Работа с базами данных (в первую очередь, MySQL и SQLite)
  • Работа с файловой системой: чтение и запись файлов, проверка существования файлов, и т.п.
  • Кэширование байт-кода скриптов, как, например, в eAccelerator
Плюс некоторые другие возможности (инструменты для шаблонизации, для создания конфигурационных файлов, и т.п.), но их в основной список я не включил — их позволяют сделать языковые возможности TraceMonkey.

От слов — к делу! Как скомпилировать и настроить, как протестировать и сравнить...

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

Рекомендации друзей для социальных сетей

Время на прочтение2 мин
Количество просмотров1.8K
Не давно писал как можно рекомендовать товар в Интернет-магазинах или других местах, используя информацию о пользователе. Сейчас хочу показать алгоритм, который позволяет рекомендовать друзей, например в социальных сетях.

Первый шаг, представим информацию о пользователя в интервальной шкале и рекомендуем пользователю друзей используя коэффициент корреляции Пирсона, который будет измеряет степень линейной зависимости между двумя интервальными переменными. Например, у нас есть 4 пользователя: Дима, Анна, Петя и Саша. Мы знаем о них информацию, которую представляем в виде чисел в массиве (интересы, блоги, возраст и т.д.)
Читать дальше →

Страничка для счастливых обладателей IE6

Время на прочтение1 мин
Количество просмотров6.1K
Наконец-то и я решился… Все новые проекты отныне будут иметь спец-страницу для Internet Explorer 6.

Изучив аналогичные решения в Интернете, решил создать свою страничку. Русский текст наскреб понемногу с разных проектов и отредактировал на свой вкус. Дизайн осознанно и намерено использовал майкрософтовский, чтобы хоть как-то повысить планку доверия для тех несчастных, что до сих пор сидят на IE6. Надеюсь, меня за это не осудят, тем более сделано это исключительно для многострадальных клиентов Майкрософта.
Читать дальше →

19 необщеизвестных приёмов

Время на прочтение5 мин
Количество просмотров2.1K
Заметка не новая, но я уверен, что и сейчас не все знают всё нижеперечисленное (Здесь и далее курсив переводчика).

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

Замер скорости в контроллерах — это очень просто. Используйте метод benchmark в любой модели.
Читать дальше →

Список полезных инструментов для php разработчика

Время на прочтение10 мин
Количество просмотров150K
PHP один из самых широко используемых языков для создания вебсайтов. PHP фреймворки, такие как Zend, CakePHP, CodeIgniter и т.д и open source классы и библиотеки упростили разработку.
Независимо от того, являетесь ли вы опытным разработчиком или новичком, инструменты, которые вы используете, имеют прямое влияние на вашу продуктивность. Здесь собран список действительно полезных утилит и расширений для PHP разработчиков, которые помогут ускорить разработку, и улучшит итоговое качество кода.
Читать дальше →

Realplexor: производительный Comet-сервер с API для PHP и Javascript (realtime)

Время на прочтение5 мин
Количество просмотров21K
Dklab Realplexor — это Comet-сервер, позволяющий держать одновремено сотни тысяч долгоживущих открытых HTTP-соединений с браузерами пользователей. JavaScript-код, запущенный в браузере, подписывается на один или несколько каналов Realplexor-а и вешает обработчик на поступление данных. Сервер может в любой момент записать сообщение в один из таких каналов, и оно будет моментально передано всем подписчикам (хоть одному, хоть тысяче), в режиме реального времени и с минимальной нагрузкой для сервера.

Хотя идейным вдохновителем Realplexor-а был предыдущий проект, dklab_multiplexor, код Realplexor-а не имеет с ним практически ничего общего. Поэтому я и решил сменить название. Несопоставимы также возможности продуктов (см. ниже), да и размер кода увеличился в 7 раз.

Realtime-направление сейчас довольно активно развивается на Западе, и в нем особенно выделяется продукт Tornado — событийно-ориентированный веб-сервер на языке Python. Правда, Tornado — это не столько Comet-сервер, сколько инструмент, с помощью которого можно запрограммировать «в том числе» и Comet-сервер. Ключевые слова: Comet, Push Server, Long polling, JavaScript, XMLHttpRequest.

Главные преимущества Realplexor-а:
  • простота использования: наличие API для JavaScript, API для PHP (в будущем — и для других языков);
  • простота конфигурирования;
  • широкий функционал (либо отстутствующий, либо недоступный напрямую в аналогах).

Лучше один раз увидеть...


Я сделал отдельную онлайн-песочницу, чтобы продемонстрировать функционал нового Realplexor-а и то, для чего вообще нужны Comet-серверы (кстати, это физически тот же самый демон Realplexor-а, что использует мой новый стартап РуТвит). Песочница реализует что-то типа многоканального чата: зайдя, вы получите как будто бы 2 независимых «браузера», запущенных на разных компьютерах.
  • Верхний «браузер» отображает каналы — в них моментально появляются новые сообщения, как только кто-то их туда отправляет на стороне сервера. Конечно же, эту страницу могут просматривать одновременно сотни тысяч пользователей, и они все будут видеть одно и то же (реализовано с использованием Realplexor JavaScript API). Можно «на лету» добавлять новые каналы (подписка) или скрывать уже имеющиеся (отписка).
  • Нижний браузер содержит формы, позволяющие добавлять сообщение в произвольный канал, указав его имя. Форма AJAX-ом отправляется на сервер, и уже там PHP-скрипт записывает в Realplexor полученный текст через PHP API. (И да, так можно чатиться.)
По умолчанию на странице открыто 3 канала с именами Alpha, Beta и RuTvit. Но, конечно, вы можете закрыть эти каналы и открыть новые. Вот, например, страница с единственным открытым каналом по имени Habrahabr: http://rutvit.ru/realplexor/demo?ids=Habrahabr.



Песочница демонстрирует следующие функции Realplexor-а:
Читать дальше →

Информация

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