В предыдущем посте Свободный игровой клуб был описан процесс переход игрового клуба на свежую Убунту. Статья была воспринята хабра-сообществом с интересом. В частности было задано достаточно много вопросов. По этим вопросам я взял интервью у автора.
GloooM @GloooM
Пользователь
Вторая нормальная форма (в терминологии SQL)
4 мин
13KПоскольку первый пост уже сорвал крышу нескольким хабражителям вообще и пошатнул карму мне в частности, решил написать перевод статьи в терминах языка SQL. Будет полезно мне и, возможно, не только мне. Вообще с детских лет я стремлюсь приземлять теорию к практике с помощью различных средств, среди которых был и алкоголь, и, мне кажется бесполезно тратить время на изучение чегото, к чему нельзя придумать пример из реальной жизни.
Забавно лишь, что вся эта белиберда под катом родилась в уме Кодда еще до возникновения SQL как языка, а теперь вот в терминах SQL все подавай…
Что же такое вторая нормальная форма или 2NF? Так чтоб трехлетний ребенок действительно понял…
Для начала разберемся в целях, которые преследует нормализация. Под катом нету терминов дискретки…
Забавно лишь, что вся эта белиберда под катом родилась в уме Кодда еще до возникновения SQL как языка, а теперь вот в терминах SQL все подавай…
Что же такое вторая нормальная форма или 2NF? Так чтоб трехлетний ребенок действительно понял…
Для начала разберемся в целях, которые преследует нормализация. Под катом нету терминов дискретки…
+24
Регулярная ловушка
2 мин
3.3KДопустим, мы хотим проверить регулярным выражением, что в строке есть хотя бы одна цифра. Пишем код:
Этот код неверен.
Вам очевидно — почему? Если нет — добро пожаловать под кат!
<script>
var digits = /([0-9])+/g;
function has_digit(s) { return digits.test(s); }
</script>
Этот код неверен.
Вам очевидно — почему? Если нет — добро пожаловать под кат!
+115
Ajax загрузка данных из контейнера
1 мин
20KПеревод
Знаете ли вы, что с помощью jQuery можно загружать не только контент страницы, но и выбранного контейнера на ней? Оказывается можно и делается это следующим образом:
Данный код найдет на странице something.html контейнер с id content, возьмет его содержимое и загрузит в контейнер с id area. Но есть одно но…
$("#area").load("something.html #content");
Данный код найдет на странице something.html контейнер с id content, возьмет его содержимое и загрузит в контейнер с id area. Но есть одно но…
+41
Fugue Icons в сером
1 мин
2.3KВо многих проектах я использую известный набор иконок Fugue Icons и часто нужно создать эффект «активной\не активной» кнопки. Чтобы не перекрашивать каждый раз по иконке в серый, я перекрасил все иконки и добавил в названия файла "-gray" сохранив структуру архива.

Выкладываю архив в общее пользование, может кому пригодится.
Cкачать Fugue Icons Gray, зеркало на Яндех.Народ
Лицензия: Attribution 3.0 Unported (CC BY 3.0)
Скачать оригинальный набор Fugue Icons 3.0 можно с сайта автора или с Google Code

Выкладываю архив в общее пользование, может кому пригодится.
Cкачать Fugue Icons Gray, зеркало на Яндех.Народ
Лицензия: Attribution 3.0 Unported (CC BY 3.0)
Скачать оригинальный набор Fugue Icons 3.0 можно с сайта автора или с Google Code
+41
Анализ проникновения бота через эксплоит в старых версиях phpmyadmin и рекомендации по настройкам безопасности php-хостинга
11 мин
13KИмею на администрировании несколько серверов, на которых хостятся восновном свои проекты, но кроме них ещё довольно много пришлось разместить левых сайтов — клиентов, знакомых, знакомых знакомых и т.п. За время администрирования встречались разные проблемы, поэтому настроены кое-какие мониторинги (zabbix и самописные скрипты).
И вот вчера на одном из серверов скрипт, проверяющий активные соединения, забил тревогу: постоянно висит исходящее соединение на неизвестный хост на порт 433, уже более 9 часов на момент когда я осилил прочитать почту в понедельник утром ;)
При беглом просмотре кроме этого активного соединения больше никаких аномалий и левых процессов в системе не было обнаружено, резкого роста трафика на интерфейсе тоже не обнаружено, но это меня не успокоило, поэтому пришлось выяснять подробнее.
По результатам анализа я выяснил что подобная дыра в безопасности может быть на большинстве серверов с базовыми настройками PHP, поэтому решил сделать пост на хабре чтобы обезопасить остальных владельцев серверов с хостингом от подобных случаев, а также описал способы поиска источников попадания заразы на сервер.
И вот вчера на одном из серверов скрипт, проверяющий активные соединения, забил тревогу: постоянно висит исходящее соединение на неизвестный хост на порт 433, уже более 9 часов на момент когда я осилил прочитать почту в понедельник утром ;)
При беглом просмотре кроме этого активного соединения больше никаких аномалий и левых процессов в системе не было обнаружено, резкого роста трафика на интерфейсе тоже не обнаружено, но это меня не успокоило, поэтому пришлось выяснять подробнее.
По результатам анализа я выяснил что подобная дыра в безопасности может быть на большинстве серверов с базовыми настройками PHP, поэтому решил сделать пост на хабре чтобы обезопасить остальных владельцев серверов с хостингом от подобных случаев, а также описал способы поиска источников попадания заразы на сервер.
+120
Написание web-API к своей системе
3 мин
24KДобрый день, %username%!
За последний год столкнулся с несколькими задачами по написанию SOAP/REST API к различным сервисам и вывел для себя боле-менее удобную модель. Я не претендую на фундаментальное исследование, просто хочу поделиться опытом наступания на грабли.

Для начала общие требования к default API:
За последний год столкнулся с несколькими задачами по написанию SOAP/REST API к различным сервисам и вывел для себя боле-менее удобную модель. Я не претендую на фундаментальное исследование, просто хочу поделиться опытом наступания на грабли.

Для начала общие требования к default API:
- возможность расширения
- удобный стандартизированный формат запросов
- удобный стандартизированный формат ответов
- достаточный уровень безопасности
- возврат ошибок выполнения запроса
+58
Большие потоки трафика и управление прерываниями в Linux
4 мин
65KВ этой заметке я опишу методы увеличения производительности линуксового маршрутизатора. Для меня эта тема стала актуальна, когда проходящий сетевой трафик через один линуксовый маршрутизатор стал достаточно высоким (>150 Мбит/с, > 50 Kpps). Маршрутизатор помимо роутинга еще занимается шейпированием и выступает в качестве файрволла.
+97
Nano: И всё-таки его придётся выучить [3]
1 мин
44KЗаканчиваем. Предыдущие части: [1], [2]. Комбинации для запоминания: undo/redo, поиск/замена.

В конце топика — ссылка на PDF'ку c обобщённой шпаргалкой и её исходник (на картинке скриншот редактора).
Отмена действий по-умолчанию не работает и требует запуска редактора с опцией «поддержка отмены» (да, nano по-умолчанию не поддерживает undo). Ключ командной строки -u.
nano -u sometext.
После этого начинают работать команды:
Заметим, что в справке (Ctrl-G) оно появляется тоже, только если запустить nano с опцией -u.
Если nano запущен без -u, то единственной формой undo является отмена вырезанных по
С поиском чуть лучше.

В конце топика — ссылка на PDF'ку c обобщённой шпаргалкой и её исходник (на картинке скриншот редактора).
Отмена действий по-умолчанию не работает и требует запуска редактора с опцией «поддержка отмены» (да, nano по-умолчанию не поддерживает undo). Ключ командной строки -u.
nano -u sometext.
После этого начинают работать команды:
Alt-U
— undoAlt-E
— redo.Заметим, что в справке (Ctrl-G) оно появляется тоже, только если запустить nano с опцией -u.
Если nano запущен без -u, то единственной формой undo является отмена вырезанных по
Ctrl-K
строк обратным их вставлением — Ctrl-U
.С поиском чуть лучше.
+21
Анонимное сканирование портов при помощи hping3
4 мин
38KДля реализации понадобится уверенные знания работы TCP/IP и желание понять. В результате мы получим возможность сканировать удаленную машину на открытые порты от чужого адреса по следующией схеме (картинка из мануала по nmap):


+75
Почему важен DOCTYPE и как его правильно использовать
7 мин
133KРешил проводить регулярные лекции и практические занятия со своими сотрудниками по программированию на PHP, MySQL, Javascript. А также другим технологиям необходимым для выпуска качественных сайтов. Начать решил с самого «верха», с HTML тэгов. Буду рад, любым комментариям :)
Сразу оговорюсь, что бОльшая часть информации я нашел в интернете, внизу статьи будут приведены ссылки на источники. Часть информации была переведена совместно с google translate.
Итак:
Вроде бы вы сделали все правильно, но ваш сайт почему-то не выглядит или не работает, как ожидалось, в последних версиях броузеров.
Вы написали правильный стандартный XHTML код и стандартный CSS. Вы воспользовались стандартной спецификацией для работы с DOM (Document Object Model), чтобы управлять динамическими элементами на странице. И все-таки, в броузерах, которые казалось бы сделаны с соблюдением именно этих стандартов, ваш сайт не работает. Скорей всего, ошибка кроется в неправильном заголовке DOCTYPE.
Эта небольшая статья расскажет вам о заголовках DOCTYPE, которые работают, а также объяснит практическое и теоретическое значение этого, казалось бы отвлеченного от реальности, тега.
Сразу оговорюсь, что бОльшая часть информации я нашел в интернете, внизу статьи будут приведены ссылки на источники. Часть информации была переведена совместно с google translate.
Итак:
Почему так важен DOCTYPE
Вроде бы вы сделали все правильно, но ваш сайт почему-то не выглядит или не работает, как ожидалось, в последних версиях броузеров.
Вы написали правильный стандартный XHTML код и стандартный CSS. Вы воспользовались стандартной спецификацией для работы с DOM (Document Object Model), чтобы управлять динамическими элементами на странице. И все-таки, в броузерах, которые казалось бы сделаны с соблюдением именно этих стандартов, ваш сайт не работает. Скорей всего, ошибка кроется в неправильном заголовке DOCTYPE.
Эта небольшая статья расскажет вам о заголовках DOCTYPE, которые работают, а также объяснит практическое и теоретическое значение этого, казалось бы отвлеченного от реальности, тега.
+76
Псевдографика в консоли Unix/Linux. Немного больше User Friendly чем вы могли себе позволить
14 мин
33KПривет! Бывает, хочется забыть о «скучной» консоли, разбавить ее хоть капелькой интерактива, особенно если часто приходиться делать одни и теже операции и тем более если вы пишите для облегчения своей участи скрипты. Итак, псевдографика. За мной читатель, я покажу тебе такую консоль!
+176
Ajenti — полгода спустя
2 мин
11KКазалось бы, не так давно я представлял Хабру свой проект.
Откликнулось много людей, некоторые пришли и оставили свой след в исходниках и истории коммитов, некоторые исчезли, кто-то все еще с нами.
Я хочу выразить всем им свою благодарность, потому что без них у меня вряд ли что-нибудь получилось.
А сегодня я наконец выпускаю альфа-версию проекта.
Под катом вас ждет много интересного, а сейчас дохабракатный мотивационный скриншот:

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

+238
Ну Очень Простой Планировщик Задач
2 мин
2.7KУ всех разные способы планировки и управления временем и задачами. Кто то записывает список дел на бумаге, кто то в блокноте, outlook, или использует разные сервисы.
Сегодня хочу поделиться, что буквально недавно мы запустили Планировщик Задач в Qubrit Tasks. Хотел бы поделиться со всеми тем, как это работает.
Основная Страница

Как видно, все задачи висят одним большим списком. Почему это удобнее чем обычный календарь? Потому что задачи идут в ряд и группируются по «Сегодня», «Следующие 7 Дней», «Сентябрь», «Октябрь» итд. Это на мой взгляд дает удобное представление всех задач и эх быстрый визуальный охват. Справа к каждой задачи выставляются «теги» (то есть работа, личное итд).
Сегодня хочу поделиться, что буквально недавно мы запустили Планировщик Задач в Qubrit Tasks. Хотел бы поделиться со всеми тем, как это работает.
Основная Страница

Как видно, все задачи висят одним большим списком. Почему это удобнее чем обычный календарь? Потому что задачи идут в ряд и группируются по «Сегодня», «Следующие 7 Дней», «Сентябрь», «Октябрь» итд. Это на мой взгляд дает удобное представление всех задач и эх быстрый визуальный охват. Справа к каждой задачи выставляются «теги» (то есть работа, личное итд).
+51
Навыки и работа («меня не ценят»)
4 мин
19KНаблюдал у многих, с кем я работаю, этот синдром. Даже у себя наблюдал [из-за чего с предыдущей работы ушёл]
Синдром, если в кратце, звучит так: «Меня не ценят».
Человек работает, работает, и постепенно понимает, что деньги, которые ему тут платят, не соответствуют его навыкам.
Как это выглядит? Я попробовал нарисовать схему и пояснить её:
Синдром, если в кратце, звучит так: «Меня не ценят».
Человек работает, работает, и постепенно понимает, что деньги, которые ему тут платят, не соответствуют его навыкам.
Как это выглядит? Я попробовал нарисовать схему и пояснить её:
+155
Астериск продолжает говорить по-русски!
2 мин
18KЗамечательный подарок для всех любителей мира открытых коммуникаций – вышел очередной релиз уникального русскоязычного голосового пакета для IP АТС Астериск. Более 600 фраз и слов, адаптированных для «русского уха», доступны для свободного использования!
+47
VPN-сервер на Linux — решение проблемы с MPPE и клиентами, не поддерживающими шифрование данных
4 мин
18KТак уж исторически сложилось, что связка pptpd + pppd — довольно популярное решение для раздачи интернета в локальных сетях, во многом благодаря наличию клиента pptp в windows начиная с 98 «из коробки». Более того, этот клиент поддерживает протокол шифрования MPPE который начиная с windows 2000 включен для новых соединений по умолчанию.
pppd радостно идет нам навстречу, также поддерживая этот протокол, но делает это весьма своеобразно:
pppd радостно идет нам навстречу, также поддерживая этот протокол, но делает это весьма своеобразно:
+21
Самостоятельное изучение схемотехники. Абстрактный автомат. Часть 2
5 мин
121KСтатья написана, собрана и сверстана Brotherofken. Спасибо ему огромное.
В предыдущей статье я попытался изложить все основные определения и принципы, чтобы сделать эту статью максимально понятной. Все не уместилось, так что я настоятельно советую ознакомиться с этими файлами:
Базис, Базис2, Минимизация. Далее в этой статье я оставил несколько разъясняющих пометок курсивом.
В этой статье я попробую объяснить доступным языком что такое абстрактный автомат, способы его представления. Так как теория автоматов полна математики и сложна, постараюсь писать человеческим языком, чтобы неподготовленный читатель смог понять о чём идёт речь.

В предыдущей статье я попытался изложить все основные определения и принципы, чтобы сделать эту статью максимально понятной. Все не уместилось, так что я настоятельно советую ознакомиться с этими файлами:
Базис, Базис2, Минимизация. Далее в этой статье я оставил несколько разъясняющих пометок курсивом.
В этой статье я попробую объяснить доступным языком что такое абстрактный автомат, способы его представления. Так как теория автоматов полна математики и сложна, постараюсь писать человеческим языком, чтобы неподготовленный читатель смог понять о чём идёт речь.
+70
Мечта параноика или Еще раз о шифровании
7 мин
101KВ свете последних событий с torrents.ru и активизации государственных группировокорганов по борьбе с пиратством, думаю многие задумались как же обезопасить себя или свой сервер на случай если придут нежданные «гости». Вот и мне подвернулась задача защитить локальный медиасервер от посягательств, проведя пару дней за гугленнием и чтением мануалов/howto — мне удалось это реализовать. Скажу сразу, статей по шифрованию очень много, но в основном они рассчитаны на шифрование только определенных разделов, либо устарели/содержат много ошибок.
ЦЕЛИ:
- Весь винт(винты) должны быть надежно зашифрованы
- На винтах не должно быть абсолютно никакой разбивки, так как будто это новый(или стертый) винт
- ОС должна стоять на зашифрованных разделах
- Должна быть возможность увеличения дискового пространства, путем добавления новых винтов
- Загрузка системы без ввода ключа от шифрованных данных
+169
Клонирование системного диска штатными средствами Linux за 30 секунд
2 мин
44K
Принесли мне намедни винчестер прямо в упаковке и озадачили оперативным клонированием системного диска одного из серверов. Задача, в целом довольно тривиальная, и легко выполнимая. У каждого наверняка есть методика подобного рода действиям, не знаю лучше или хуже мой подход, но поделиться, думаю, им стоит.
Вводная:
* сервер с linux
* все разделы на XFS
* загрузчик GRUB 0.97
* оригинальный диск /dev/sda, клонируем на /dev/sdb
* разделы /dev/sda[1,5-7] (общая полезная информация ~1GB)
+36
Информация
- В рейтинге
- Не участвует
- Откуда
- Тольятти, Самарская обл., Россия
- Зарегистрирован
- Активность