Search
Write a publication
Pull to refresh
202
0
Максим @ort

Разработчик

Send message

Взгляд на современные системы защиты от спама веб-форм

Reading time7 min
Views12K

О чем пойдет речь


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

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

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

Node.js v0.2.4 и ожидаемые улучшения в ветке v0.3.x

Reading time2 min
Views1.6K
Прошедшие выходные могут похвастаться двумя релизами Node.js: очередной минорной версией в ветке v0.2.x и официальным релизом ветки v0.3.x.
И пусть разрабатываемая ветка всё ещё отмечена как «нестабильная», в ней ожидаются существенные улучшения производительности, переносимости и добавление новых возможностей, о которых стоит знать уже сейчас. Тем более, что эта версия уже вполне работоспособная.
Также в конце топика бонус в виде ссылок на репозитории пакетов Node.js v0.2.x и NPM (Node.js package manager).
Читать дальше →

«Spirit»: Node.js MVC Framework

Reading time13 min
Views8.2K

Привет, ребята! С этого момента я хочу начать цикл статтей с подробностями по созданию сообственного MVC фреймворка для node.js, название которому будет — Spirit.

Первая статья будет состять из четырех частей:
1. Идея и миссия фреймворка
2. Настройка сервера
3. Создание каркаса фреймворка
4. Создание продвинутого и удобного роутера

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

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

Еще раз о GPL и российских законах

Reading time7 min
Views27K
Все больше организаций в последнее время переводят свои компьютеры под свободное программное обеспечение. Это может быть «радикальный» переход на Linux или «щадящий вариант», когда компьютеры остаются под управлением Windows, но «пиратские» программы заменяются на бесплатно распространяемые. В результате организация получает возможность сэкономить на покупке лицензионного ПО и обустроить рабочее место, пригодное для выполнения основного круга «офисных» задач: редактирования текстов, работы с интернетом, отправки электронной почты, и тому подобного.

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

Сейчас мы попробуем в очередной раз на этой теме остановиться.
Читать дальше →

Реализация паттерна Observer средствами PHP 5.3

Reading time3 min
Views11K
Прочитав недавно нововведения PHP 5.3, я обратил внимание на несколько интересных особенностей, скомпоновав которые можно получить реализацию шаблона проектирования Observer, гораздо красивее, чем имеющиеся в pear и symfony, причём вся реализация займёт всего несколько строк кода.
Читать дальше →

Свободное ПО: «проверка лицензионности»

Reading time7 min
Views57K
Перед руководством организации, которая перевела свои компьютеры под управление «свободных» операционных систем, постоянно маячит угроза «проверки хозяйственной деятельности». Среди прочего, проверять она будет и лицензионность установленного на компьютерах программного обеспечения. И, разумеется, унесет весь компьютерный парк «на экспертизу», не найдя на привычном месте «лицензионной наклейки» от Windows.

О реальности такого исхода и о том, как с такими «проверками» бороться, мы сегодня и поговорим.

Реальна ли угроза?

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

extsrc.js — загружаем все скрипты асинхронно и уже после отрисовки страницы (даже с document.write)

Reading time4 min
Views21K
Хочу Вам рассказать о штуке, которую я изобрел сегодня, чтобы ускорить процесс загрузки сайтов. Все вы знаете, что <script src="..."></script> задерживает отрисовку страницы, пока не загрузится этот скрипт. Если их десятки — это может сереьезно замедлить работу сайта — в результате пользователь 20 секунд пялится на пустую (или недорисованную) страницу из-за какого-нибудь тупящего социального виджета (умножить на десяток этих виджетов).

Не правда ли было бы круто, если бы можно было сказать <script extsrc="..."></script> ("extsrc" = "грузи потом"), чтобы скрипты загружались после того как страница отрисована?

Все бы хорошо, но есть document.write… Сегодня я наконец решил его проблему — представляю extsrc.js — скрипт, который запустит все скрипты после отрисовки страницы (даже если они содержат document.write — и правильно отрисуется все).

Результат? Супер-быстрая загрузка страниц, даже если там море всяких внешних скриптов.

Использование:

Заменяем <script src="..."> на <script extsrc="...">.

Итого получается:

<script src="http://whiteposts.com/extsrc_js/extsrc.js"></script>
<script extsrc="..."></script>

все остальное под катом

MySQL в tmpfs

Reading time5 min
Views14K
Хотелось бы поделиться опытом по использованию MySQL с хранением данных в памяти, а не на диске. Это позволило нам сократить load average сервера, который из-за операций с диском стал сильно расти.



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

Знакомство с Ruby on Rails 3.0

Reading time5 min
Views17K


Добрый день, друзья. Не так давно мы с друзьями-коллегами решили поизучать Ruby on Rails – что это такое и с чем едят – для использования в будущем при разработке своих проектов.

Так как знаний по данной теме не было вообще, то и двигаться решили постепенно. При начальной установке Ruby с Rails 3.0 мы столкнулись с некоторыми трудностями, о которых в мануалах так сходу никто не упоминал. Поэтому я решил написать это небольшое руководство (которое является обобщением собственного опыта и перевода мануала на guides.rubyonrails.org/getting_started.html) по изначальной установке и настройке Ruby on Rails 3.0 для того, чтобы помочь таким же начинающим как я найти полезную информацию в одном месте и сэкономить свое время.
Читать дальше →

Как я удалённо покупал прямой московский номер

Reading time2 min
Views10K
Хочу поделиться своим опытом приобретения прямого московского номера с VoIP-клиентом.
Помню, когда-то сам искал здесь информацию об этом, но ничего подобного не нашёл.

Дело происходило этим летом, выбирал между услугами Манго и Роснет.
Остальные фирмы показались несерьёзными или просто были с высокими ценами.
Читать дальше →

Место под солнцем для нового стартапа

Reading time6 min
Views39K
Недавно мы опубликовали историю появления на свет LinguaLeo.ru. Сервис запустился в бета-версии 1 марта. Меньше чем через месяц команда разработчиков возвращается в Москву. Но нам жаль просто так уезжать с острова Ко Чанг — уж очень много было вложено в создание комфортных условий для работы. Поэтому мы хотим поделиться своими впечатлениями, каково это — вести разработку на острове в Таиланде, и в подробностях рассказать, с чем придется столкнуться тем, кто отважится на авантюру и отправится в тропики, чтобы целиком посвятить себя реализации задуманной идеи. И объявляем акцию: мы передадим наше солнечное место хорошим ребятам с новым интересным стартапом!

091 -- DSC_9057
Читать дальше →

ABBYYOnline — взгляд архитектора

Reading time10 min
Views6.7K
Сегодня мы поговорим о распределенных, гетерогенных и местами довольно серьезно и разнообразно нагруженных интернет приложениях на примере портала http://www.abbyyonline.com. Я постараюсь не углубляться в технические подробности, имеющие отношение к конкретной платформе, и, хотя основная часть описанного приложения реализована на ASP.Net MVC, возможно, данный материал заинтересует всех, имеющих отношение к веб-разработке, вне зависимости от используемого инструментария.
Читать дальше →

Юнит-тестирование и CodeCoverage для Javascript-кода

Reading time4 min
Views8.3K
В этой заметке расскажу о своем опыте юнит-тестирования JS-кода, опыте использования среды выполнения тестов js-test-driver, ее возможности code coverage и скручивании ежа с ужом, а именно данных о code coverage от js-test-driver и генератора отчетов о покрытии PHP_CodeCоverage. Расскажу и покажу как получить вот такие отчеты о покрытии кода...
Читаем дальше...

Два билета на LeWeb

Reading time1 min
Views2.3K
Мы объявляем конкурс на лучший российский стартап, который поедет в Париж представлять Россию на «LeWeb 2010» — крупнейшей европейской конференции по веб-технологиям.

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

Мы отберем несколько финалистов, потенциально наиболее интересных европейской аудитории. Все они будут приглашены 23 октября на RIW-10, где и пройдет сам конкурс – жюри из независимых экспертов выберет лучший проект. Награждение и вручение билетов состоится там же, в конце дня.

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

Шпаргалка: кеширование картинок, CSS и JS в NGINX

Reading time1 min
Views79K
Заметка для тех, кто не специалист в NGINX, а проблему нужно решить быстро.

Допустим, у вас на сервере стоит NGINX и вы хотите, чтобы вся статика кешировалась у клиента. В конфиге хоста NGINX пропишите это:

server {
listen 80;
server_name mysite.com;
...
# Задаем правила обработки статического контента (типов файлов можно поставить и больше)
location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|pdf|ppt|txt|bmp|rtf|js)$ {
root /path/to/document/root/; # Путь к корню вашего сайта
access_log off; # не пишем логи
expires 3d; # кешируем у клиента на 3 дня
}
}

Проверить можно в FireBug во вкладке NET: обновите страницу 2 раза и посмотрите код ответа. Если 200 ОК, то не работает. Если 304 Not Modified, то работает.

Неплохо ускоряет работу сайта.

Лучшие сайты 2010 года по версии TIME

Reading time19 min
Views71K


От полезного до сбивающего с толку, для игроков «по крупному» и для неизвестных личностей, TIME представляет «путеводитель» ко всему самому лучшему, что есть в интернете.
Читать дальше →

Впечатляющие анимационные эффекты

Reading time2 min
Views115K
С появлением jQuery, у веб-программистов появилась возможность создавать впечатляющие визуальные эффекты, не прибегая к использованию технологии flash. В данной статье представлено несколько ярких примеров того, каких потрясающих результатов можно достичь, используя стандартные средства браузера и свое воображение.
Читать дальше →

cut и grep или awk?

Reading time2 min
Views79K
Часто в скриптах можно встретить что-то вроде foobar|awk '{print $1}' («часто» — это действительно часто).

Такой вызов awk всего лишь вывходит первую (n-ную) колонку из вывода предыдущей команды. Но это явный оверкилл! awk — довольно мощный язык потоковой обработки данных, и применение его как простого field-separator не есть хорошо.

Для вырезания из строки указанного поля лучше использовать команду cut. Она умеет меньше, а потому проще в использовании и быстрее.

В современном линуксе обработка вызова awk куда более сложна, чем вызов cut. В дебиане, например, awk — линк на /etc/alternatives/awk, который ведёт (чаще всего) на gawk. Который почти в 10 раз больше по размеру, чем cut. Разумееся, cut загружаеся быстрее.

cut умеет вырезать не только байты, но и нужные поля (опция -f). Поле — это текст между разделителями. По-умолчанию разделитель пробел/табуляция, но он легко меняется опцией -d.

Второй подход — использовать опцию -o у grep. Эта опция выводит не всю строку, а только совпадающее с критерием поиска grep. Очевидно бесполезно при поиске точной подстроки, но очень полезно при использовании регулярных выражений.

Например,
grep -v "#" /etc/inittab |cut -f 4 -d : -s
выведет список программ, запускающихся init'ом (четвёртое поле, поля разделяются двоеточием).

Или
grep http://\\S\\+ -o /var/log/apache2/error.log
выдаст список URL'ов из файла с ошибками (первый урл в строке).

… и никакого awk.

UPD: В комментариях подсказывают ещё более интересную конструкцию без запуска внешнего файла (команда read реализуеся средствами bash'а):
foobar | (read p1 p2; echo p1)

P.S. Речь не о единичном вызове (тут нет разницы awk, grep или даже python/perl). Речь о множестве вызовов в цикле в скрипте. Все примеры сравнивайте в цикле с сотнями (лучше тысячами) вызовов.

Подключаем Wikipedia к сайту

Reading time3 min
Views35K
Сейчас практически на каждом сайте есть кнопки для перехода на сайт твитера или добавление странички в закладки. Но почему-то очень мало можно увидеть иконок Wikipedia возле фамилий великих людей или терминов.

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



Если учитывать, что только активные пользователи нажмут на кнопку «Оставить свой отзыв» и проголосуют, то наверно 33 голоса можно умножить на 10 – 100.

Разобравшись с api Wikipedia хочется предложить решение как можно немного автоматизировать добавление линков на википедию.
Читать дальше →

База изображений в любых форматах и разрешениях

Reading time3 min
Views4.5K
заказчик: Пусть аватарки пользователей у нас будут в 50×50 и 100×100, в JPEG
разработчик: Готово

заказчик: Надо переделать, чтобы аватарки были в PNG
разработчик: Сделал

заказчик: Пусть аватарки будут в GIF, 25×25 и 40×40
разработчик: Ага, проверяй
заказчик: Уже? Как ты это так быстро делаешь???
разработчик: …
Читать дальше

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity