Как стать автором
Обновить
7
0
Nikolay Korvatovskiy @null

web developer

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

как способ изучения Английского

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

Поделюсь теми, на которые подписан я:

Читать дальше →
Всего голосов 100: ↑91 и ↓9 +82
Комментарии 108

Удаленная установка ОС

Время на прочтение 3 мин
Количество просмотров 110K
Существует несколько способов установки операционной системы на компьютеры без оптических приводов. Самый простой — использование внешнего привода. Более трудоемкий — создание загрузочной флешки. Пожалуй, наименее распространенный — удаленная установка по локальной сети. Далее речь пойдет об установке Windows XP. По локальной сети.

Процесс установки предполагает следующее:
— подготовка дистрибутива;
— настройка DHCP и TFTP серверов;
— подготовка службы BINL.

Читать дальше →
Всего голосов 62: ↑54 и ↓8 +46
Комментарии 31

Набор PHP-функции для создания user-friendly интерфейса на русском языке

Время на прочтение 7 мин
Количество просмотров 1.3K
Почти в каждом своем проекте я использую набор функций, которые делают сайт чуточку приятнее для глаза и удобнее для восприятия. Эти функции я частично позаимствовал в разных местах и частично написал сам. Наверняка, многие используют подобные, но я решил все же поделиться — возможно, кому-то они будут полезны.

Они умеют склонять существительные по числовому признаку, выводить дату с нормальными русскими названиями месяцев и выводить дату в удобочитаемом человекопонятном виде (вчера, позавчера, 2 дня 3 часа и 2 минуты назад, через 1 год и 2 месяца и т.д.).

Использовать их можно примерно так:
<acrnonym title="<?php print r_date($timestamp'j M Y в H:i'false); ?>"><?php print human_date($timestamp2false);?></acronym>
<acrnonym title="<?php print r_date($timestamp'j M Y в H:i'); ?>"><?php print human_date($timestamp);?></acronym>


Это вернет примерно такой результат:
<acrnonym title="2 января 2009 в 23:39">1 день назад</acronym>
<acrnonym title="2 января в 23:39">Вчера</acronym>

(Хабр обрезает тег <acronym>)

И вот так:
<?php
$count 
10;
printf('%d %s'$countdeclension($count, array('комментарий''комментария''комментариев')));
?>


Это вернет:
10 комментариев

Читать дальше →
Всего голосов 59: ↑49 и ↓10 +39
Комментарии 26

Сделай сам: любимые персонажи из бумаги

Время на прочтение 2 мин
Количество просмотров 3.8K
Привет всем Хабралюдям!
Сегодня я хочу поделиться с сообществом одним очень затягивающим и увлекательным способом убить свободное время и просто отвлечься.

Читать дальше →
Всего голосов 217: ↑199 и ↓18 +181
Комментарии 125

Еще десять маленьких программ, с которыми уютно

Время на прочтение 4 мин
Количество просмотров 13K
Всем привет.
В этом посте я опишу несколько маленьких и удобных windows-программ, к тому же абсолютно бесплатных. Предыдущий пост вызвал бурную дискуссию, в результате которой, как водится, родилась истина :)
Итак, этот пост — дань благодарному хабрасообществу — в комментариях по крупицам собрались полезные программки, о которых, возможно, мы бы никогда и не услышали. Заранее извинюсь перед людьми, которые предлагали свои программы, не вошедшие в этот обзор — в каментах было много утилит, так или иначе дублирующих функции друг друга, и опробовать их все, сравнить и разложить по полочкам — задача для википедии. :)
Ну что ж, от слов к делу.

01) Сворачиваем окно в заголовок и не только — куча возможностей в обмен на 90 килобайт
02) Сворачиваем окно в трей правым кликом по «крестику»
03) Создаем виртуальные рабочие столы — теперь с помощью бесплатной программы
04) Двигаем кнопки окон на панели задач как табы в браузере
05) Клейкие листочки на рабочем столе — когда не хочется заносить в ToDo
06) Мини-консоль для быстрого запуска программ по алиасам
07) Мгновенный поиск по компьютеру — программа-индексатор жесткого диска
08) Копируем текст откуда угодно, даже из рисунков
09) создаем хранилище заметок с вложениями посредством быстрой и бесплатной программы
10) управляем буфером обмена — теперь можно запомнить больше!

Поподробней...
Всего голосов 132: ↑117 и ↓15 +102
Комментарии 122

100 OpenSource инструментов для Web-мастера.

Время на прочтение 7 мин
Количество просмотров 14K
В этой статье, опубликованной позавчера на DesignVitality, авторы приводят 100 инструментов для Вэб-мастера, включающих программы для дизайнера с открытым кодом, открытые шаблоны и ресурсы.


Лучшие порталы с открытыми шаблонами сайтов


В сети есть множество бесплатных шаблонов, но искать подходящий часто может быть очень долго, поэтому мы предлагаем вам посетить сначала следующие четыре портала:
Читать дальше →
Всего голосов 56: ↑51 и ↓5 +46
Комментарии 42

Поиск — это просто

Время на прочтение 3 мин
Количество просмотров 3.5K
Google, конечно, ищет хорошо, но корпоративные ресурсы вывешивать на открытый доступ нельзя, покупать google-mini с его ограничениями тоже не вариант. А поиск по базе внушительных размеров(4 гигабайта текстов, по которым и необходим поиск) надо. А если добаить к поиску по тексту еще и поиск по каким-то параметрам, то тут и google-mini не поможет и совсем страшно становится.

Но не стоит паниковать! На помощь нам приходит Sphinx — поисковый движок с открытым исходным кодом, который можно прикрутить практически к чему угодно не прилагая особых усилий

Читать дальше →
Всего голосов 93: ↑90 и ↓3 +87
Комментарии 124

Как узнать, какая музыка играет

Время на прочтение 1 мин
Количество просмотров 173K
Вчера возникла довольно распространённая проблема: есть музыка, но неизвестно, кто исполнитель и как называется песня. Есть несколько способов решения:
  • Если песня играла по радио, то достаточно было запомнить радиостанцию (и то необязательно) и время. А затем надо зайти на сайт moskva.fm и найти по этим параметрам необходимую песню. Причём можно прослушать отрывок радиоэфира и убедиться, что мы нашли то, что нам необходимо. Этим способом можно воспользоваться не только в Москве, но, например, и у нас в Ярославле: очень много радиостанций, вещающих московский эфир.
  • Если же это музыкальный файл на компьютере, то можно воспользоваться сервисом MusicBrainz и специальной программой MusicBrainz Tagger.
  • Если же это неподписанный CD-диск, то стоит воспользоваться базой freedb.org и любой совместимой с этой базой программой (например, CDex).

Но что делать, если это музыка в видеоклипе (фильме) или музыка, записанная на старом носителе. Да и мало ли какие бывают случаи. А ведь решение есть!

Читать далее →
Всего голосов 80: ↑75 и ↓5 +70
Комментарии 80

Случай с доктором Лестером

Время на прочтение 7 мин
Количество просмотров 901
Игры, так же как и все прочее, имеют свой срок жизни. Они рождаются, живут, стареют и умирают. Но есть среди них те, что переступают грань обыденности. Они, как доподлинные произведения искусства, находятся вне времени и пространства.

Когда в 1993 году я впервые познакомился с Another World, то тут же ошибся. Увидев вначале игры логотип Delphine Software, я решил, что она была сделана многочисленным коллективом компании. Тогда мне в голову не могло придти, что это авторский проект, созданный одним единственным человеком по имени Эрик Шайи.

15 лет спустя мне в руки попал диск с фильмом, где я впервые увидел его.

Another World
Читать дальше →
Всего голосов 54: ↑53 и ↓1 +52
Комментарии 110

Prince of Persia (1989) & XBox 360 (2007)

Время на прочтение 1 мин
Количество просмотров 1.1K
Ubisoft в начале лета выпустит интересный проект «Prince of Persia Classic» для консоли XBox 360. Эту игру нельзя будет назвать очередным «Принцем Персии», так как базироваться она будет на классической схеме уровней первой версии игры образца 1989 года.

Как будет выглядеть Prince of Persia через 18 лет после создания вы можете видеть в ролике:
Всего голосов 28: ↑24 и ↓4 +20
Комментарии 64

Multi-user режим для Terminal Server в Windows XP x64

Время на прочтение 6 мин
Количество просмотров 17K
На волне недавнего апгрейда, довелось мне столкнуться с неприятным ограничением Windows XP x64 на количество одновременно подключенных через Remote Desktop пользователей. А именно, в каждый момент времени работать с компьютером может не более одного пользователя. При соединении через RDP, локальный пользователь отключается; при локальном входе в систему — отключается удалённый. Досадно, учитывая, что ресурсов машины с лихвой хватило бы на несколько клиентов.

Насколько мне известно, проблема эта присуща всем десктопным (не-серверным) вариантам Windows. Для 32-битной версии Windows XP существует решение в виде патча TS-Free, который заменяет несколько системных библиотек на более старые, зато неограниченные, версии. Для 64-битных же систем решение обычно сводится либо к переходу на серверный вариант ОС (соответственно, немалые затраты), либо к использованию сторонних программ типа WinConnect Server VS (впрочем, WinXP x64 всё равно не поддерживается). Я уже успел отчаяться, когда в одном голландском блоге случайно набрёл на статью "Windows XP x64 Terminal Server patch". В отличие от TS-Free, на которого ругаются все антивирусы, в этой статье автор подробно описывает какие байты меняются и зачем, так что читатель может самостоятельно убедиться в безопасности патча.
Ниже — вольный перевод статьи.
Читать дальше →
Всего голосов 37: ↑27 и ↓10 +17
Комментарии 75

Контролируемое кэширование страниц в nginx

Время на прочтение 3 мин
Количество просмотров 36K
Введение

Как известно, nginx умеет кешировать ответ сервера, и выдавать его по запросу вместо обращения к бэкенду, экономя тем самым ресурсы сервера. Скорость отдачи таких закешированных страниц иногда поражает, ради таких скоростей иногда не жалко переносить на javascript многие функции сайта только для того, чтобы иметь возможность закешировать ещё 1 страницу целиком (Например, вынести отрисовку плашки с авторизацией юзера на js, чтобы иметь возможность кешировать страницу, которая идентична для всех пользователей, за исключением этой самой плашки).

Я много раз использовал возможность кэширование nginxом страниц, и натыкался на пару неудобных для себя вещей:
  • Можно легко закешировать вообще все страницы, но для динамических сайтов или для сайтов с авторизацией нужно ли это?
  • Можно закешировать отдельно несколько url, вида /album/*, но не переписывать же конфиг nginx каждый раз при появлении новых разделов сайта?

Читать дальше →
Всего голосов 51: ↑49 и ↓2 +47
Комментарии 27

Злые фишинг картинки

Время на прочтение 2 мин
Количество просмотров 7.9K
Правильно люди говорят: «Все новое — это хорошо забытое старое»

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

Детали под катом
Читать дальше →
Всего голосов 114: ↑96 и ↓18 +78
Комментарии 65

Обновление FreeBSD от и до

Время на прочтение 7 мин
Количество просмотров 89K
Как часто бывает, зацепив одну, на первый взгляд, маленькую тему, с желанием быстро все узнать и все настроить, приходится закапываться в дремучие дебри и читать не одну статью и/или мануал. Так и получилось у меня в этот раз. Изначально было желание просто узнать, как обновлять порты (или исходные тексты портов) чтоб при желании, устанавливать не устаревшее ПО, но пришлось закопаться немного по глубже.
Эта статья предназначена только для новичков во FreeBSD, опытные профи тут вообще ни чего нового, думаю, для себя не найдут. По этому, если вы на «ты» с этой системой, можете смело пропускать дальнейший текст.
Информации на эту тему хватает, но из 6-10 заметок и статей я взял, так скажем, лучшие наработки и опыт, и записал их в одну, с ссылками на более полные статьи, так что при желании можно получить более подробную информацию по каждому пункту.
Содержание статьи:
1) Выбор ПО для обновления исходных текстов.
2) Процесс обновления исходных текстов системы и портов.
3) Обновление системы(ядро и мир).
4) Обновление портов при помощи pkg_*, portupgrade, portdowngrade.
5) Заключение
6) Дополнительная литература.
Читать дальше →
Всего голосов 45: ↑40 и ↓5 +35
Комментарии 22

Сервер на стероидах: FreeBSD, nginx, MySQL, PostgreSQL, PHP и многое другое

Время на прочтение 16 мин
Количество просмотров 40K
Нравится мне эта картинка, у меня, вот никогда такие красивые графики в какти не получались =(

Введение


С момента написания мной предыдущей статьи по оптимизации этой связки прошло довольно много времени. Тот многострадальный Pentium 4 c 512Мб памяти, обслуживающий одновременно до тысячи человек на форуме и до 150,000 пиров на трекере уже давно покоится на какой-нить немецкой, свалке, а клуб сменил уже не один сервер. Всё сказанное в ней всё ещё остаётся актуальным, однако есть вещи которые стоит добавить.
Статья большая, так что будет поделена на логические блоки:

0. Зачем вообще что-то оптимизировать?
  
1. Оптимизация ОС (FreeBSD)
  1.1 Переход на 7.х 
  1.2 Переход на 7.2
  1.3 Переход на amd64
  1.4 Разгрузка сетевой подсистемы
  1.5 FreeBSD и большое кол-во файлов
  1.6 Softupdates, gjournal и mount options
  
2. Оптимизация фронтенда (nginx)
  2.1 Accept Filters
  2.2 Кеширование
  2.3 AIO
  
3. Оптимизация бэкенда
  3.1 APC
  3.1.1 APC locking
  3.1.2 APC hints
  3.1.3 APC fragmentation
  3.2 PHP 5.3
  
4. Оптимизация базы данных
  4.1 MySQL 
  4.1.1 Переход на 5.1
  4.1.2 Переход на InnoDB
  4.1.3 Встроеный кеш MySQL - Query Cache
  4.1.4 Индексы
  
4.2 PostgreSQL
  4.2.1 Индексы
  4.2.2 pgBouncer и другие.
  4.2.3 pgFouine
  
4.3 Разгрузка базы данных
  4.3.1 SphinxQL
  4.3.2 Не-RDBMS хранилище
  4.4 Кодировки
  4.5 Асинхронность
  
Приложение. Мелочи.
  1. SSHGuard или альтернатива.
  2. xtrabackup
  3. Перенос почты на другой хост
  4. Интеграция со сторонним ПО
  5. Мониторинг
  
 6. Минусы оптимизации

Кому что-нибудь из этого списка интересно, жмём сюда...
Всего голосов 375: ↑368 и ↓7 +361
Комментарии 105

8 полезных регэкспов с наглядным разбором

Время на прочтение 2 мин
Количество просмотров 272K
О мощи и гибкости регулярных выражений написано много, и их использование давно уже является стандартом для различного рода операций над текстом. Пожалуй, чаще всего регэкспы работают при валидации вводимых данных — здесь им практически нет альтернативы, если не считать громоздкий циклический разбор с кучей неочевидных проверок. Начнём с самого простого:

1. Часть ЧПУ (человекопонятный URL)


По сути, слово с дефисами.

Паттерн: /^[a-z0-9-]+$/
short_url

Примеры посерьёзнее
Всего голосов 176: ↑132 и ↓44 +88
Комментарии 119

Кеширование FastCGI-запросов в nginx

Время на прочтение 2 мин
Количество просмотров 28K
Доброе утро, Хабр!

В данной статье я приведу пример конфигурации nginx для кеширования FastCGI-запросов. При желании его можно использовать его для защиты от хабраэффекта, частично от DDoS'а и, как вариант, для облегчения жизни сервера с высокой нагрузкой.
Читать дальше →
Всего голосов 31: ↑28 и ↓3 +25
Комментарии 27

Подводные камни при использовании кэширования в nginx

Время на прочтение 10 мин
Количество просмотров 56K
В web-сервер и reverse-proxy nginx встроены очень мощные возможности по кэшированию HTTP-ответов. Однако в ряде случаев документации и примеров не хватает, в результате не все получается так легко и просто, как хотелось бы. Например, мои конфиги nginx-а местами написаны кровью. Этой статьей я попробую немного улучшить ситуацию.

В этой статье: а) подводные камни при полностраничном кэшировании; б) кэширование с ротацией; в) создание динамического «окна» в закэшированной странице.

Я буду предполагать, что вы используете связку nginx+fastcgi_php. Если вы применяете nginx+apache+mod_php, просто замените имена директив с fastcgi_cache* на proxy_cache*

Если выбирать, кэшировать ли страницу на стороне PHP или на стороне nginx, я выбираю nginx. Во-первых, это позволяет отдавать 5-10 тыс. запросов в секунду без каких-либо сложностей и без умных разговоров о «высокой нагрузке». Во-вторых, nginx самостоятельно следит за размером кэша и чистит его как при устаревании, так и при вытеснении нечасто используемых данных.

Кэширование всей страницы целиком


Если на вашем сайте главная страница хоть и генерируется динамически, но меняется достаточно редко, можно сильно снизить нагрузку на сервер, закэшировав ее в nginx. При высокой посещаемости даже кэширование на короткий срок (5 минут и меньше) уже дает огромный прирост в производительности, ведь кэш работает очень быстро. Даже закэшировав страницу всего на 30 секунд, вы все равно добьетесь значительной разгрузки сервера, сохранив при этом динамичность обновления данных (во многих случаях обновления раз в 30 секунд вполне достаточно).
Читать дальше →
Всего голосов 91: ↑87 и ↓4 +83
Комментарии 83

Использование snort для блокирования атак скрипт-киддисов

Время на прочтение 3 мин
Количество просмотров 13K
Данная статья не претендует на полноту описания системы snort, а всего лишь предлагает пользователю готовое решение для защиты своего сервера от маленьких шаловливых ручек.
Я лично ставил всё это дело на OpenBSD, но от смены системы суть не меняется.

Лирическое отступление

snort (http://snort.org) — система обнаружения атак (NIDS) для сетей ipv4 на базе libpcap. Сам по себе — обычный tcpdump. Но к нему можно создавать правила, по которым он будет блокировать вредный траффик и создавать события безопасности (alert).
У меня стоит связка snort-сенсоров, связанных между собой через коллектор на базе дописанного prelude (http://prelude-ids.org). Все правила написаны собственноручно.
Результаты (по статистике работы за 4 месяца):
Ложных срабатываний — около 2% (средний траффик — 120 мбит/сек).
Блокировок за день — около 15.
Количество пропущенных атак — 0 (после внедрения системы безопасности ни один сервер не был взломан. Под защитой стоят хостинг и VDS).
В дополнение дописаны модули автоабьюса по базе данных RIPE и блокировки траффика на корневой циске.

Итак, имеем:
Некий сервер с установленным на нём snort-inline (в случае *BSD устанавливается из портов, в случае Linux'а — из исходников с указанием опции --enable-inline).
Для начала настраиваем сам snort (для вашей ОС пути могут отличаться — смотрите дефолтный конфиг). /etc/snort/snort.conf
конфигурация
Всего голосов 33: ↑29 и ↓4 +25
Комментарии 39

этот удивительный tabindex

Время на прочтение 1 мин
Количество просмотров 18K
Многие веб-разработчики часто забывают или совсем не используют параметр tabindex, который определяет последовательность перехода между полями при нажатии на клавишу «Tab». Таким образом, при переходе из одного поля в другое прощелкиваются еще несколько элементов, что рано или поздно начинает уничтожать нервные клетки пользователей.

image

Читать дальше →
Всего голосов 156: ↑111 и ↓45 +66
Комментарии 88

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность