Многие из читателей хабра регулярно слушают разные подкасты, этот полезный вид времяпрепровождения можно сделать ещё более полезным, если слушать подкасты на английском.
Nikolay Korvatovskiy @null
web developer
Удаленная установка ОС
3 мин
111KТуториал
Существует несколько способов установки операционной системы на компьютеры без оптических приводов. Самый простой — использование внешнего привода. Более трудоемкий — создание загрузочной флешки. Пожалуй, наименее распространенный — удаленная установка по локальной сети. Далее речь пойдет об установке Windows XP. По локальной сети.
Процесс установки предполагает следующее:
— подготовка дистрибутива;
— настройка DHCP и TFTP серверов;
— подготовка службы BINL.
Процесс установки предполагает следующее:
— подготовка дистрибутива;
— настройка DHCP и TFTP серверов;
— подготовка службы BINL.
+46
Набор PHP-функции для создания user-friendly интерфейса на русском языке
7 мин
1.4KПочти в каждом своем проекте я использую набор функций, которые делают сайт чуточку приятнее для глаза и удобнее для восприятия. Эти функции я частично позаимствовал в разных местах и частично написал сам. Наверняка, многие используют подобные, но я решил все же поделиться — возможно, кому-то они будут полезны.
Они умеют склонять существительные по числовому признаку, выводить дату с нормальными русскими названиями месяцев и выводить дату в удобочитаемом человекопонятном виде (вчера, позавчера, 2 дня 3 часа и 2 минуты назад, через 1 год и 2 месяца и т.д.).
Использовать их можно примерно так:
Это вернет примерно такой результат:
(Хабр обрезает тег <acronym>)
И вот так:
Это вернет:
Они умеют склонять существительные по числовому признаку, выводить дату с нормальными русскими названиями месяцев и выводить дату в удобочитаемом человекопонятном виде (вчера, позавчера, 2 дня 3 часа и 2 минуты назад, через 1 год и 2 месяца и т.д.).
Использовать их можно примерно так:
<acrnonym title="<?php print r_date($timestamp, 'j M Y в H:i', false); ?>"><?php print human_date($timestamp, 2, false);?></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', $count, declension($count, array('комментарий', 'комментария', 'комментариев')));
?>
Это вернет:
10 комментариев
+39
Сделай сам: любимые персонажи из бумаги
2 мин
3.9KПривет всем Хабралюдям!
Сегодня я хочу поделиться с сообществом одним очень затягивающим и увлекательным способом убить свободное время и просто отвлечься.
Сегодня я хочу поделиться с сообществом одним очень затягивающим и увлекательным способом убить свободное время и просто отвлечься.
+181
Еще десять маленьких программ, с которыми уютно
4 мин
14KВсем привет.
В этом посте я опишу несколько маленьких и удобных windows-программ, к тому же абсолютно бесплатных. Предыдущий пост вызвал бурную дискуссию, в результате которой, как водится, родилась истина :)
Итак, этот пост — дань благодарному хабрасообществу — в комментариях по крупицам собрались полезные программки, о которых, возможно, мы бы никогда и не услышали. Заранее извинюсь перед людьми, которые предлагали свои программы, не вошедшие в этот обзор — в каментах было много утилит, так или иначе дублирующих функции друг друга, и опробовать их все, сравнить и разложить по полочкам — задача для википедии. :)
Ну что ж, от слов к делу.
01) Сворачиваем окно в заголовок и не только — куча возможностей в обмен на 90 килобайт
02) Сворачиваем окно в трей правым кликом по «крестику»
03) Создаем виртуальные рабочие столы — теперь с помощью бесплатной программы
04) Двигаем кнопки окон на панели задач как табы в браузере
05) Клейкие листочки на рабочем столе — когда не хочется заносить в ToDo
06) Мини-консоль для быстрого запуска программ по алиасам
07) Мгновенный поиск по компьютеру — программа-индексатор жесткого диска
08) Копируем текст откуда угодно, даже из рисунков
09) создаем хранилище заметок с вложениями посредством быстрой и бесплатной программы
10) управляем буфером обмена — теперь можно запомнить больше!
В этом посте я опишу несколько маленьких и удобных windows-программ, к тому же абсолютно бесплатных. Предыдущий пост вызвал бурную дискуссию, в результате которой, как водится, родилась истина :)
Итак, этот пост — дань благодарному хабрасообществу — в комментариях по крупицам собрались полезные программки, о которых, возможно, мы бы никогда и не услышали. Заранее извинюсь перед людьми, которые предлагали свои программы, не вошедшие в этот обзор — в каментах было много утилит, так или иначе дублирующих функции друг друга, и опробовать их все, сравнить и разложить по полочкам — задача для википедии. :)
Ну что ж, от слов к делу.
01) Сворачиваем окно в заголовок и не только — куча возможностей в обмен на 90 килобайт
02) Сворачиваем окно в трей правым кликом по «крестику»
03) Создаем виртуальные рабочие столы — теперь с помощью бесплатной программы
04) Двигаем кнопки окон на панели задач как табы в браузере
05) Клейкие листочки на рабочем столе — когда не хочется заносить в ToDo
06) Мини-консоль для быстрого запуска программ по алиасам
07) Мгновенный поиск по компьютеру — программа-индексатор жесткого диска
08) Копируем текст откуда угодно, даже из рисунков
09) создаем хранилище заметок с вложениями посредством быстрой и бесплатной программы
10) управляем буфером обмена — теперь можно запомнить больше!
+102
100 OpenSource инструментов для Web-мастера.
7 мин
14KПеревод
В этой статье, опубликованной позавчера на DesignVitality, авторы приводят 100 инструментов для Вэб-мастера, включающих программы для дизайнера с открытым кодом, открытые шаблоны и ресурсы.
В сети есть множество бесплатных шаблонов, но искать подходящий часто может быть очень долго, поэтому мы предлагаем вам посетить сначала следующие четыре портала:
Лучшие порталы с открытыми шаблонами сайтов
В сети есть множество бесплатных шаблонов, но искать подходящий часто может быть очень долго, поэтому мы предлагаем вам посетить сначала следующие четыре портала:
+46
Поиск — это просто
3 мин
3.7KGoogle, конечно, ищет хорошо, но корпоративные ресурсы вывешивать на открытый доступ нельзя, покупать google-mini с его ограничениями тоже не вариант. А поиск по базе внушительных размеров(4 гигабайта текстов, по которым и необходим поиск) надо. А если добаить к поиску по тексту еще и поиск по каким-то параметрам, то тут и google-mini не поможет и совсем страшно становится.
Но не стоит паниковать! На помощь нам приходит Sphinx — поисковый движок с открытым исходным кодом, который можно прикрутить практически к чему угодно не прилагая особых усилий
Но не стоит паниковать! На помощь нам приходит Sphinx — поисковый движок с открытым исходным кодом, который можно прикрутить практически к чему угодно не прилагая особых усилий
+87
Как узнать, какая музыка играет
1 мин
173KВчера возникла довольно распространённая проблема: есть музыка, но неизвестно, кто исполнитель и как называется песня. Есть несколько способов решения:
Но что делать, если это музыка в видеоклипе (фильме) или музыка, записанная на старом носителе. Да и мало ли какие бывают случаи. А ведь решение есть!
Читать далее →
- Если песня играла по радио, то достаточно было запомнить радиостанцию (и то необязательно) и время. А затем надо зайти на сайт moskva.fm и найти по этим параметрам необходимую песню. Причём можно прослушать отрывок радиоэфира и убедиться, что мы нашли то, что нам необходимо. Этим способом можно воспользоваться не только в Москве, но, например, и у нас в Ярославле: очень много радиостанций, вещающих московский эфир.
- Если же это музыкальный файл на компьютере, то можно воспользоваться сервисом MusicBrainz и специальной программой MusicBrainz Tagger.
- Если же это неподписанный CD-диск, то стоит воспользоваться базой freedb.org и любой совместимой с этой базой программой (например, CDex).
Но что делать, если это музыка в видеоклипе (фильме) или музыка, записанная на старом носителе. Да и мало ли какие бывают случаи. А ведь решение есть!
Читать далее →
+70
Случай с доктором Лестером
7 мин
934Игры, так же как и все прочее, имеют свой срок жизни. Они рождаются, живут, стареют и умирают. Но есть среди них те, что переступают грань обыденности. Они, как доподлинные произведения искусства, находятся вне времени и пространства.
Когда в 1993 году я впервые познакомился с Another World, то тут же ошибся. Увидев вначале игры логотип Delphine Software, я решил, что она была сделана многочисленным коллективом компании. Тогда мне в голову не могло придти, что это авторский проект, созданный одним единственным человеком по имени Эрик Шайи.
15 лет спустя мне в руки попал диск с фильмом, где я впервые увидел его.
Когда в 1993 году я впервые познакомился с Another World, то тут же ошибся. Увидев вначале игры логотип Delphine Software, я решил, что она была сделана многочисленным коллективом компании. Тогда мне в голову не могло придти, что это авторский проект, созданный одним единственным человеком по имени Эрик Шайи.
15 лет спустя мне в руки попал диск с фильмом, где я впервые увидел его.
+52
Prince of Persia (1989) & XBox 360 (2007)
1 мин
1.2KUbisoft в начале лета выпустит интересный проект «Prince of Persia Classic» для консоли XBox 360. Эту игру нельзя будет назвать очередным «Принцем Персии», так как базироваться она будет на классической схеме уровней первой версии игры образца 1989 года.
Как будет выглядеть Prince of Persia через 18 лет после создания вы можете видеть в ролике:
Как будет выглядеть Prince of Persia через 18 лет после создания вы можете видеть в ролике:
+20
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, на которого ругаются все антивирусы, в этой статье автор подробно описывает какие байты меняются и зачем, так что читатель может самостоятельно убедиться в безопасности патча.
Ниже — вольный перевод статьи.
Насколько мне известно, проблема эта присуща всем десктопным (не-серверным) вариантам Windows. Для 32-битной версии Windows XP существует решение в виде патча TS-Free, который заменяет несколько системных библиотек на более старые, зато неограниченные, версии. Для 64-битных же систем решение обычно сводится либо к переходу на серверный вариант ОС (соответственно, немалые затраты), либо к использованию сторонних программ типа WinConnect Server VS (впрочем, WinXP x64 всё равно не поддерживается). Я уже успел отчаяться, когда в одном голландском блоге случайно набрёл на статью "Windows XP x64 Terminal Server patch". В отличие от TS-Free, на которого ругаются все антивирусы, в этой статье автор подробно описывает какие байты меняются и зачем, так что читатель может самостоятельно убедиться в безопасности патча.
Ниже — вольный перевод статьи.
+17
Контролируемое кэширование страниц в nginx
3 мин
37KВведение
Как известно, nginx умеет кешировать ответ сервера, и выдавать его по запросу вместо обращения к бэкенду, экономя тем самым ресурсы сервера. Скорость отдачи таких закешированных страниц иногда поражает, ради таких скоростей иногда не жалко переносить на javascript многие функции сайта только для того, чтобы иметь возможность закешировать ещё 1 страницу целиком (Например, вынести отрисовку плашки с авторизацией юзера на js, чтобы иметь возможность кешировать страницу, которая идентична для всех пользователей, за исключением этой самой плашки).
Я много раз использовал возможность кэширование nginxом страниц, и натыкался на пару неудобных для себя вещей:
- Можно легко закешировать вообще все страницы, но для динамических сайтов или для сайтов с авторизацией нужно ли это?
- Можно закешировать отдельно несколько url, вида /album/*, но не переписывать же конфиг nginx каждый раз при появлении новых разделов сайта?
+47
Злые фишинг картинки
2 мин
8.4KПравильно люди говорят: «Все новое — это хорошо забытое старое»
Возможность встраивания удалённых ресурсов (например картинок с других сайтов) на страницу своего сайта — очень плохая практика. Которая может в определённый момент привести к довольно серьёзным последствиям для сайта. Еще 10 лет назад, я с удивлением читал о том, что такое возможно. И вот прошло 10 лет, ничего не изменилось, и похоже на то, что это вряд ли когда то изменится.
Детали под катом
+78
Обновление FreeBSD от и до
7 мин
89KКак часто бывает, зацепив одну, на первый взгляд, маленькую тему, с желанием быстро все узнать и все настроить, приходится закапываться в дремучие дебри и читать не одну статью и/или мануал. Так и получилось у меня в этот раз. Изначально было желание просто узнать, как обновлять порты (или исходные тексты портов) чтоб при желании, устанавливать не устаревшее ПО, но пришлось закопаться немного по глубже.
Эта статья предназначена только для новичков во FreeBSD, опытные профи тут вообще ни чего нового, думаю, для себя не найдут. По этому, если вы на «ты» с этой системой, можете смело пропускать дальнейший текст.
Информации на эту тему хватает, но из 6-10 заметок и статей я взял, так скажем, лучшие наработки и опыт, и записал их в одну, с ссылками на более полные статьи, так что при желании можно получить более подробную информацию по каждому пункту.
Содержание статьи:
1) Выбор ПО для обновления исходных текстов.
2) Процесс обновления исходных текстов системы и портов.
3) Обновление системы(ядро и мир).
4) Обновление портов при помощи pkg_*, portupgrade, portdowngrade.
5) Заключение
6) Дополнительная литература.
Эта статья предназначена только для новичков во FreeBSD, опытные профи тут вообще ни чего нового, думаю, для себя не найдут. По этому, если вы на «ты» с этой системой, можете смело пропускать дальнейший текст.
Информации на эту тему хватает, но из 6-10 заметок и статей я взял, так скажем, лучшие наработки и опыт, и записал их в одну, с ссылками на более полные статьи, так что при желании можно получить более подробную информацию по каждому пункту.
Содержание статьи:
1) Выбор ПО для обновления исходных текстов.
2) Процесс обновления исходных текстов системы и портов.
3) Обновление системы(ядро и мир).
4) Обновление портов при помощи pkg_*, portupgrade, portdowngrade.
5) Заключение
6) Дополнительная литература.
+35
Сервер на стероидах: 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. Минусы оптимизации
+361
8 полезных регэкспов с наглядным разбором
2 мин
273KО мощи и гибкости регулярных выражений написано много, и их использование давно уже является стандартом для различного рода операций над текстом. Пожалуй, чаще всего регэкспы работают при валидации вводимых данных — здесь им практически нет альтернативы, если не считать громоздкий циклический разбор с кучей неочевидных проверок. Начнём с самого простого:
По сути, слово с дефисами.
Паттерн: /^[a-z0-9-]+$/
1. Часть ЧПУ (человекопонятный URL)
По сути, слово с дефисами.
Паттерн: /^[a-z0-9-]+$/
+88
Кеширование FastCGI-запросов в nginx
2 мин
28KДоброе утро, Хабр!
В данной статье я приведу пример конфигурации nginx для кеширования FastCGI-запросов. При желании его можно использовать его для защиты от хабраэффекта, частично от DDoS'а и, как вариант, для облегчения жизни сервера с высокой нагрузкой.
В данной статье я приведу пример конфигурации nginx для кеширования FastCGI-запросов. При желании его можно использовать его для защиты от хабраэффекта, частично от DDoS'а и, как вариант, для облегчения жизни сервера с высокой нагрузкой.
+25
Подводные камни при использовании кэширования в nginx
10 мин
57KВ 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 секунд вполне достаточно).
В этой статье: а) подводные камни при полностраничном кэшировании; б) кэширование с ротацией; в) создание динамического «окна» в закэшированной странице.
Я буду предполагать, что вы используете связку nginx+fastcgi_php. Если вы применяете nginx+apache+mod_php, просто замените имена директив с fastcgi_cache* на proxy_cache*
Если выбирать, кэшировать ли страницу на стороне PHP или на стороне nginx, я выбираю nginx. Во-первых, это позволяет отдавать 5-10 тыс. запросов в секунду без каких-либо сложностей и без умных разговоров о «высокой нагрузке». Во-вторых, nginx самостоятельно следит за размером кэша и чистит его как при устаревании, так и при вытеснении нечасто используемых данных.
Кэширование всей страницы целиком
Если на вашем сайте главная страница хоть и генерируется динамически, но меняется достаточно редко, можно сильно снизить нагрузку на сервер, закэшировав ее в nginx. При высокой посещаемости даже кэширование на короткий срок (5 минут и меньше) уже дает огромный прирост в производительности, ведь кэш работает очень быстро. Даже закэшировав страницу всего на 30 секунд, вы все равно добьетесь значительной разгрузки сервера, сохранив при этом динамичность обновления данных (во многих случаях обновления раз в 30 секунд вполне достаточно).
+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
Я лично ставил всё это дело на 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
+25
этот удивительный tabindex
1 мин
18KМногие веб-разработчики часто забывают или совсем не используют параметр tabindex, который определяет последовательность перехода между полями при нажатии на клавишу «Tab». Таким образом, при переходе из одного поля в другое прощелкиваются еще несколько элементов, что рано или поздно начинает уничтожать нервные клетки пользователей.
+66
Информация
- В рейтинге
- Не участвует
- Откуда
- Россия
- Зарегистрирован
- Активность