пятница, 31 декабря 2010 г.

Proftpd+ClamAV - установка и настройка в Debian/Ubuntu

Установка и настройка ftp сервера ProFTPd с антивирусной проверкой (ClamAV). Используемые дистрибутивы: Debian Lenny/Squeeze и Ubuntu 10.04. Для авторизации используется пара логин и пароль.
Начнем с установки ftp сервера
  1. aptitude install proftpd-basic
на вопрос отвечаем как standalone (при запуске proftpd через inetd вы получаете экономию памяти (выбираем его, если сервером будет пользоваться малое количество людей), при запуске как standalone мы получаем большую гибкость (к примеру виртуальные хосты))
Редактируем файл /etc/shells
  1. nano /etc/shells
добавляем (если ее нет, конечно) строчку /bin/false
Создаем каталоги для хранения и закачки файлов
  1. mkdir /home/ftp/public
  2. mkdir /home/ftp/upload

И выставляем им нужные права (папка /home/ftp была создана автоматически при установке proftpd, public — только чтение, upload — чтение и запись)
  1. chmod 755 /home/ftp
  2. chmod 755 /home/public
  3. chmod 777 /home/upload

Создаём группу (ftp2) и присваиваем данной группе конкретного пользователя (userftp)
  1. ftpasswd --group --name=ftp2 --gid=50 --member=userftp --file /etc/proftpd/ftpd.group

Создаем самого пользователя
  1. ftpasswd --passwd --name=userftp --home=/home/ftp --shell=/bin/false --uid=1003 --file /etc/proftpd/ftpd.passwd
придумываем ему пароль
Собственно мы можем создавать столько пользователей, сколько нужно, но если нам нужна гибкость работы, с большим количеством пользователей — смотрим в сторону ldap.

Приступим к установке ClamAV
  1. aptitude install clamav clamav-daemon

Запускаем dpkg-reconfigure и отвечаем на вопросы
  1. dpkg-reconfigure clamav-base
не стоит запускать ClamAV на TCP порту
если нет нужды проверять на вирусы удаленные машины

Для обновления антивирусной базы данных у нас автоматически (при установке clamav) установлена утилита clamav-freshclam
Для перезапуска ClamAV выполняем
  1. /etc/init.d/clamav-daemon restart
для диагностики смотрим логи /var/log/clamav
Настраиваем ftp сервер
  1. nano /etc/proftpd/proftpd.conf

AllowOverwrite on

RequireValidShell off
AuthUserFile /etc/proftpd/ftpd.passwd
AuthGroupFile /etc/proftpd/ftpd.group

# Don't use IPv6 support by default.
UseIPv6 off

ServerName «ftp-server»
ServerType standalone
DeferWelcome on

# При возникновении у пользователей жалоб на длительную авторизацию
UseReverseDNS off
IdentLookups off

MultilineRFC2228 on
DefaultServer on
ShowSymlinks off

TimeoutNoTransfer 600
TimeoutStalled 100
TimeoutIdle 2200

DisplayChdir .message
ListOptions "-l"

TimeoutLogin 20

# Для усиления безопасности запрещаем подключаться на сервер как root

RootLogin off

# Создаём журналы
ExtendedLog /var/log/ftp.log
TransferLog /var/log/xferlog
SystemLog /var/log/syslog.log

#Еще одна, нужная для усиления безопасности, опция — запрещает заливать на сервер файлы начинающиеся с точки
DenyFilter \*.*/

#Используем файл /etc/ftpusers, в нём перечислены те пользователи, которым запрещено входить на сервер
UseFtpUsers on

#Разрешаем докачивать файлы
AllowStoreRestart on

# Задаём порт, на котором будет работать сервер, в большинстве случаев подойдет стандартный 21-ый порт
Port 21

# Против DDOS атаки
MaxInstances 8

# Сервер запускается и работает под этим пользователем и группой
User nobody
Group nogroup

Umask 022 022

MaxClients 8
MaxClientsPerHost 8
MaxClientsPerUser 8
MaxHostsPerUser 8

# Сообщение после успешного захода на сервер
AccessGrantMsg «Welcome to Server»

#Идентификатор сервера, показывается всем при заходе на сервер
ServerIdent on «Hello»

#Домашний каталог
DefaultRoot /home/ftp

#Запираем всех в домашнем каталоге, чтобы не могли просмотреть каталоги выше
DefaultRoot ~

MaxLoginAttempts 5
#VALID LOGINS
AllowUser user
DenyALL


Umask 022 022
AllowOverwrite on

# Включаем проверку антивирусом

ClamAV on

#Против DDOS атаки
MaxInstances 8

#Сервер запускается и работает под этим пользователем и группой
User nobody
Group nogroup

Umask 022 022

MaxClients 8
MaxClientsPerHost 8
MaxClientsPerUser 8
MaxHostsPerUser 8

# Сообщение после успешного захода на сервер
AccessGrantMsg «Welcome to Server»
#Идентификатор сервера, показывается всем при заходе на сервер
ServerIdent on «Hello»

Перезапускаем сервер
  1. /etc/init.d/proftpd start

Вот собственно и все.

понедельник, 27 декабря 2010 г.

Как хакер издевался над преступником, своровавшим его ПК

Хакер под ником Zoz выступил на конференции Defcon 18 с 20-минутным рассказом, как ему удалось обнаружить десктоп, украденный год назад. История действительно необычная (слайды презентации, видео (см. с 3:15)).
Zoz месяцами выслеживал, когда где-нибудь на аукционах появятся комплектующие с его серийными номерами, но безуспешно. Аккаунт в сервисе DynDNS (привязка домена к динамическому IP-адресу) тоже не подавал признаков жизни. Через 30 дней они прислали письмо, что если желаете сохранить аккаунт в режиме отсутствия активности, то нужно купить апгрейд до версии Pro. В октябре 2009 года Zoz сделал это — и удача повернулась у нему лицом.

7 мая 2010 года в аккаунте DynDNS появилась странная запись.



Zoz сделал запрос к DNS…



… после чего успешно залогинился на свой собственный компьютер по SSH.



Дальше началось самое интересное. На своём родном рабочем столе в Mac OS X он сразу обнаружил несколько новых файлов и папок. Это была игра Realm of Warfare, файлы заявление на пособие по безработице, а также кучка личных фотографий. Но этого было мало, так что пришлось поставить на машину кейлоггер.



Вскоре были получены пароли от всех сайтов, которые посещает жертва. Как оказалось, его зовут Мелвин Гузман. Интересно, что на всех сайтах у него был одинаковый пароль guzman85.





Zoz узнал много интересного о новом владельце своего компьютера, включая полное содержимое почтового ящика, фотографии его обнажённой девушки, платежи через PayPal, пароль к системе интернет-банкинга, доступ к профилю на Facebook и, самое главное, домашний адрес.



Дальнейшее было делом техники (вызов полиции всё решил).

суббота, 25 декабря 2010 г.

Skype возвращается к нормальной работе

лава Skype, Тони Бейтс, заявил о том, что большинство пользователей сети вновь
может использовать программу для общения. В час пик количество пользователей
Skype достигает 25 млн и по оценкам Бейтса 16,5 млн уже могут вернуться к
привычной деятельности. Skype удалось восстановить возможности голосовой,
текстовой и видеосвязи. С чем пока могут быть проблемы, так это с текстовыми и
видеоконференциями.

Глава компании также сообщил о том, что тем пользователям, которые зависят от
возможности общения по Skype, будет сделана некая компенсация за временные
неудобства, однако пока нет информации как именно Skype планирует это сделать.

Что касается самого сбоя, то о его причинах стало известно чуть больше.
Неполадки были вызваны ошибкой в Windows-версии Skype, из-за которой
пользователи не могли подключиться к сети. Как сообщалось ранее, некоторые
версии Skype на супернодах (компьютерах, координирующих работу в сети) начали
отключаться, вследствие чего пользователи теряли связь с собеседниками.

Сейчас в Skype находится 16,5 млн активных пользователей, хотя еще вчера их
насчитывалось всего около 1 млн.

четверг, 23 декабря 2010 г.

Визуализация эмоций в 3D-играх

image
Компания Rockstar Games, получила всемирную известность благодаря своей серии видео-игр Grand Theft Auto, в которой каждый мог на время очутиться хоть и на виртуальных, но таких близких к реальности, полных насилия улицах. В новом грядущем проекте Rockstar, LA Noire, важную роль будут играть человеческие лица. Австралийские разработчики игры, Team Bondi, использовали передовые технологии захвата изображения лиц и мимики, которые позволили перенести в виртуальное пространство широчайший диапазон тонких эмоций, сыгранных реальными актерами. В большинстве игр до этого момента, такие крупные высокодетализированные планы персонажей использовались лишь в межуровневых видеороликах, специально срежиссированных и демонстрировались для большего погружения в сюжет игры, связывая интерактивные ее части.

В LA Noire, изучение эмоций– это одна из основных особенностей геймплея, и оттого, насколько у вас получится замечать малейшие изменения на лицах виртуальных персонажей, будет зависеть развитие игры. Даже небольшие эмоции игровых персонажей могут дать вам важные ключи к разгадке преступлений, предлагаемых игрой. Вам придется смотреть на актеров и пытаться решить – не врут ли они вам. Звучит чертовски круто, а как выглядит, вы можете посмотреть на трейлере ниже. Технология Motion Capture становится все лучше и лучше, и вероятно через пару лет неестественная анимация персонажей в играх канет в лету.


Для того чтобы получить высококачественные записи лиц актеров, Team Bondi разработали удивительную систему из 32-х камер, названную Motionscan. Эти камеры работают парами, для того чтобы захватывать актера с разных углов в комнате, наполненной интенсивным белым светом, чтобы ни одна морщинка не осталась незамеченной. У австралийского подразделения Gizmodo получилось попасть на студию разработчиков игры и посмотреть как выглядит процесс съемки.

Девять серверов, принимают данные, поступающие со скоростью 300 MБ/с в буфер размером в 45 Терабайт, где происходит цифровая обработка, позволяют выдавать до 50 минут готового материала в день. Хотя актерам приходится работать, находясь внутри системы, часами. Аарон Стейтон, играющий главную роль в LA Noire, известный публике по телесериалу Madmen, провел 80 часов внутри установки Motionscan. На видео ниже вы можете увидеть как проводилась работа по захвату игры Стейтона, Джона Нобла (из «За гранью») и других американских и австралийских актеров, а также их впечатления от работы с Team Bondi и технологией Motionscan.



Джеймс Кэмерон со своим Аватаром высоко поднял планку реалистичной 3D-анимации c использованием реальных актеров и технологии motion capture. Тем не менее, Rockstar и Team Bondi удалось создать прекрасные образы с помощью их технологии Motionscan. Удивительно насколько быстро бюджеты разработки видеоигр приближаются к бюджетам голливудских фильмов! Не стоит забывать, что более дешевая и простая технология 3D motion capture ждет своего часа, и, вероятно, найдет коммерческое приложение в ближайшем будущем.

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

via SingularityHub

Call of Duty в реальной жизни

среда, 22 декабря 2010 г.

Так ты, значит, хотел быть программистом…



BY SCOTT C. REYNOLDS

Сколько ты себя помнишь, компьютеры и электроника привлекали тебя. К моменту твоего совершеннолетия ты уже верно стоял на пути профессионального программиста. Первая интернетская золотая лихорадка была в самом разгаре, и вас, нердов, повсюду величали героями Новой Экономики на обложках журналов Fast Company и Wired, и нерды гребли деньги лопатой, делая то же, что любишь делать ты.

Ты отчислился из ПТУ и начал подыскивать работу в стартапе. Потому что бросить школу и создать Что-то Великое – об этом как раз и твердили, как заклинание, великие Стив Джобс и Билл Гейтс. Компании набирали всех, кто хоть как-то понимал булевскую логику и жаждал создавать, и отчисленники из ПТУ были не прочь делать больше, получая меньше, если к зарплате давали опционы [ право получить за символическую сумму часть акций компании-работодателя, когда и если они будут в цене на рынке ].

Так что ты получил работу на сайте электронной коммерции, продающем запчасти, которые закупал у оптовиков и поставлял заказчикам. Ты попал как раз в гущу доткомовского бума, работая на компанию, которая воплощала в себя всё, чем была та эра:

  • Найти квази-легальную нишу, которая, возможно, и не существует
  • Эксплуатировать программеров, которые хотят быть на острие прогресса
  • Доход! однако недолго (необязательный пункт)
  • Продать или как-то еще распустить контору
  • Повторять сколько хочется или пока государство тобой не заинтересуется

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

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

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

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

9:00 – 10:30 Собрание рабочей группы на предмет текущих вопросов
11:00 Полуденное собрание SCRUM
12:30 – 14:00 Собрание по поводу демонстрации продукта и его архитектуры
14:00 – 15:30 Турнир по Halo 3
16:00 – 18:00 Видео чат по Skype с индусскими коллегами из Бангалора

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

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

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

В поле “Введите количество анализов:” они вбили “пять анализов”

В поле “Номер страховки: ” они ввели “у него ее нет, т.к. он нелегал”

Вместо того, чтобы нажимать кнопку “Создать запись нового пациента” они меняли информацию в одной единственной записи в базе, постоянно ее сохраняя.



Затем начались звонки из отдела продаж, с требованием объяснить, почему система такая кривая, и почему так долго писалось то, что явственно не работает.

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

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

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

(оригинал www.mcsweeneys.net/links/dreamjobs/dreamjobs5.html )

Примечание: там у автора серия про разные профессии. Ну, всё везде плохо заканчивается.

Windows Server 2003 включение автоматического входа в систему

  1. меню Пуск выберите команду Выполнить.
  2. В поле Открыть введите команду Regedt32.exe и нажмите клавишу ВВОД.
  3. Найдите в реестре следующий подраздел:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
  4. Дважды щелкните параметр DefaultUserName, введите имя пользователя и нажмите кнопку ОК.
  5. Дважды щелкните параметр DefaultPassword, введите пароль и нажмите кнопку ОК.Примечание. Если параметр DefaultPassword отсутствует, создайте его. Чтобы создать параметр, выполните указанные ниже действия.

    1. В меню Правка выберите последовательно команды Создать и Строковый параметр.
    2. Введите DefaultPassword и нажмите клавишу ВВОД.
    3. Дважды щелкните параметр DefaultPassword.
    4. В окне Изменение строкового параметра введите пароль и нажмите кнопку ОК.
    Примечание. Если значение параметра DefaultPassword не задано, система автоматически изменяет значение параметра AutoAdminLogon с 1 (true) на 0 (false), тем самым отключая автоматический вход.
  6. В меню Правка выберите последовательно команды Создать и Строковый параметр.
  7. Введите AutoAdminLogon и нажмите клавишу ВВОД.
  8. Дважды щелкните параметр AutoAdminLogon.
  9. В окне Изменение строкового параметра введите значение 1 и нажмите кнопку ОК.
  10. Закройте редактор реестра.
  11. Нажмите кнопку Пуск, выберите пункт Завершение работы и введите причину в поле Примечание.
  12. Нажмите кнопку ОК, чтобы выключить компьютер.
  13. Перезагрузите компьютер. Теперь вход в систему выполняется автоматически.

Как обжать витую пару

Выкладываю самое наглядное пособие по обжиму витой пары (картинка кликабельна)

rj 45 thumb Как обжать витую пару

воскресенье, 19 декабря 2010 г.

Юмор


Жизнь программиста

(кликабельно)
Найди Админа!

(кликабельно)

Серверная

(кликабельно)

суббота, 18 декабря 2010 г.

Поднятие WiFi в консоли

 

Подготовка

Установите пакеты wpa-supplicant и wireless-tools
Например так:
$ sudo apt-get install wpasupplicant wireless-tools
Теперь убедитесь в том, что Ваше беспроводное устройство (в данном примере это «wlan0») работает и «видит» беспроводные сети. Команда
$ iwconfig
должна выдать примерно такой результат:
ubuntu@ubuntu:~$ iwconfig
lo        no wireless extensions.

eth0      no wireless extensions.

wmaster0  no wireless extensions.

wlan0     IEEE 802.11bg  ESSID:""  
          Mode:Managed  Frequency:2.412 GHz  Access Point: Not-Associated   
          Tx-Power=27 dBm   
          Retry min limit:7   RTS thr:off   Fragment thr=2352 B   
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
а доступные сети можно посмотреть командой
$ iwlist <имя интерфейса> scan
которая должна выдать примерно такой результат:
ubuntu@ubuntu:~$ iwlist wlan0 scan

wlan0     Scan completed :
          Cell 01 - Address: 00:00:00:00:00:00
                    ESSID:"ubuntuessid"
                    Mode:Master
                    Channel:8
                    Frequency:2.447 GHz (Channel 8)
                    Quality=7/100  Signal level:-99 dBm  Noise level=-104 dBm
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
                              24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s
                              12 Mb/s; 48 Mb/s
                    Extra:tsf=0000001d57e98bf6
                    Extra: Last beacon: 388ms ago

Настройка

Редактируем /etc/network/interfaces, например так:

$ sudo gedit /etc/network/interfaces
Удаляем (или комментируем) все упоминания нашего беспроводного интерфейса и добавляем свои:
iface wlan0 inet dhcp
wpa-driver wext
wpa-ssid <имя_точки_доступа>
wpa-ap-scan 1
wpa-proto RSN
wpa-pairwise CCMP
wpa-group CCMP
wpa-key-mgmt WPA-PSK
wpa-psk  [ВАЖНО - см. Генерация ключей]
auto wlan0
Где:

Параметр Описание
iface wlan0 inet dhcp конфигурация для DHCP (для статического IP см. пример ниже)
«iface wlan0» - Имя нашего интерфейса (wlan0, eth1, rausb0, ra0, итд.)
wpa-driver Это wpa-driver для нашей карты
('wext' - общий драйвер для linux, работающий с «ndiswrapper»). Рекомендуется оставить как есть.
Другие варианты:
hostap = Host AP driver (Intersil Prism2/2.5/3)
atmel = ATMEL AT76C5XXx (USB, PCMCIA)
wext = Linux wireless extensions (generic)
madwifi = Atheros
wired = wpa_supplicant wired Ethernet driver
wpa-ssid Имя нашей точки доступа (ESSID). Без кавычек.
wpa-ap-scan Параметр вещания точкой доступа ее имени.
«1» = ESSID вещается всем.
«2» = ESSID скрыт.
wpa-proto Протокол
«RSN» = WPA(2)
«WPA» = WPA(1)
wpa-pairwise & wpa-group «CCMP» = AES-шифрователь (как часть стандарта WPA(2))
«TKIP» = TKIP-шифрователь (как часть стандарта WPA(1))
wpa-key-mgmt «WPA-PSK» = Аутентификация через ключевую фразу (см. 'Cоздание ключей')
«WPA-EAP» = Аутентификация при помощи сервера аутентификаций.
auto wlan0 Автоматическое включение wlan0 при загрузке/перезагрузке сети.

Генерация ключей

Теперь нам нужно сконвертировать нашу ключевую фразу (WPA ASCII) в hex-ключ:
$ wpa_passphrase <имя_точки_доступа> 
Результат будет примерно таким:
network={
ssid="test"
#psk="12345678"
psk=fe727aa8b64ac9b3f54c72432da14faed933ea511ecab1 5bbc6c52e7522f709a
}
hex-ключ это все символы после «psk=».

Нужно его скопировать в буфер обмена и вставить в файл /etc/network/interfaces в поле wpa-psk.
Теперь можно сохранить файл и перезагрузить сеть. Должно установиться соединение. Однако иногда этого сразу не происходит. Если это так - перезагружаем машину.

Перезапуск сети

Теперь, когда все необходимые действия выполнены можно перезапустить сеть и проверить соединение. Для этого:
$ sudo /etc/init.d/networking restart
Теперь при запуске комманды ifconfig должно отобразиться подключение eth0 с выставленными параметрами. Если подключение отображается, но параметры не такие, какие были указаны в файле /etc/network/interfaces, либо возникают любые другие ошибки, перепроверьте этот файл на наличие неточностей и опечаток и попробуйте ещё раз перезапустить сеть.

Minitybe теперь и качает

Приложение для просмотра видео с сервиса YouTube, не требующее flash-плеера, теперь может качать видео!

Как?

  • Найдите видео
  • Просматривая нужно видео  идите в меню Video и выберите пункт Download – загрузка видео началась
  • В нижнем правом углу появится кнопка-индикатор закачки. Нажмите на него. чтобы попасть в окно управления закачками
Вот так выглядят закачки в MiniTube:

Установка MiniTube

Ничего не изменилось. Как обычно используем репозиторий:
sudo add-apt-repository ppa:ferramroberto/minitube
sudo apt-get update && sudo apt-get install minitube

пятница, 17 декабря 2010 г.

Установка и настройка rTorrent + RuTorrent в Ubuntu/Debian

Одной характерной чертой rTorrent является наличие множества различных web-интерфейсов «на все вкусы» для удаленного управления. Именно об установке и настройке всего этого я и хочу рассказать на этот раз.


Устанавливаем rtorrent 
apt-get install rtorrent

После этого можно переходить к настройке rTorrent.


Создаем файл с настройками ~/.rtorrent.rc подобный этому:


# Если вы за NAT не забываем "пробросить" порты
port_range = 32001-32049

# Включаем DHT
dht = auto
# UDP порт для DHT
dht_port = 32000
# Обмен пирами
peer_exchange = yes

# Использовать ли UDP трекеры
use_udp_trackers = yes

# Директория в которую по-умолчанию будут загружаться файлы
directory = /arch/.Downloading/

# Глобальные ограничения по скорости
upload_rate = 80
download_rate = 800

# Директория для записи сессий rTorrent
session = /home/username/.rtorrent_session

# Задаем настройки для rpc управления
scgi_port = 127.0.0.1:5000
Создаем папку для хранения сессии rTorrent:
$ mkdir .rtorrent_session

web-интерфейс

Для работы web-интерфейсов, как вы уже наверняка догадались, требуется web-сервер. Это может быть как Apache, так и Lighttpd, а, вполне вероятно, и какой-либо другой. Однако, для определенности, я буду рассматривать все примеры на базе Apache. 



Установка Apache


Для установки Apache необходимо выполнить несколько простых команд. Начнем с установки самого web-сервера и необходимого для удаленного управления rTorrent модуля scgi:
# aptitude install apache2 libapache2-mod-scgi

Задаем настройки модуля в файле /etc/apache2/httpd.conf:
SCGIMount /RPC2 127.0.0.1:5000


и включаем его:
# a2enmod scgi

Далее, устанавливаем PHP:
# aptitude install php5 php5-common libapache2-mod-php5 php5-curl

и перезагружаем Apache:
# apache2ctl restart




ruTorrent


Для настройки ruTorrent скачаем последнюю версию из SVN:
# cd /var/www/
# svn checkout http://rutorrent.googlecode.com/svn/trunk/rutorrent


И зададим права доступа для web-сервера:
# chown -R www-data:www-data ./rutorrent/

Теперь чтобы открыть только что установленный ruTorrent нужно направить браузер по адресуhttp://<ваш IP адрес>/rutorrent/. И вот как он выглядит:

ruTorrent

ruTorrent

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

четверг, 16 декабря 2010 г.

В Firefox добавили поддержку формата H.264 за счет Microsoft

Mozilla не приобретала лицензию на использование кодека H.264, поэтому не может использовать его в своем браузере. Вместо этого в компании продвигают стандарт WebM, за которым стоит Google.
Поскольку Windows может проигрывать H.264, и Microsoft интегрирует этот кодек в систему, то был выпущен специальный плагин, позволяющий Firefox использовать возможности кодека в Windows 7. Аддон ищет в коде страницы HTML5 теги, отвечающие за видео и перенаправляет видеопоток в Windows Media Player плагин для проигрывания. Это даст возможность пользователям Firefox на Windows 7 и более поздних системах Microsoft, не заботиться о войне форматов.
Напомним, что в целом производители браузеров сейчас могут выбирать между H.264 и WebM. За каждым форматом стоят серьезные компании и у каждого хорошие перспективы. Очевидное преимущество WebM состоит в том, что он является полностью свободным, и за его использование не надо платить лицензионные отчисления. Козырем H.264 изначально было хорошее качество, но с учетом того, что WebM использует видеокодек VP8, который уже много месяцев дорабатывается Google, можно не сомневаться, что эта разработка также прогрессирует.

В гостях у Google

NOMOBILE.RU побывал в необычном московском офисе Google Russia.

среда, 15 декабря 2010 г.

Пропал интернет "Для чайников"!

Если вы включили компьютер, а интернета нет - не надо сразу звонить в офис и кричать на оператора. Попробуйте сначала разобраться сами, и тогда из разряда "Чайник" вы подниметесь на ступень выше - то есть "Кофейник" =)

1. Проверьте подключение кабеля. Выньте кабель из гнезда RJ45 и убедитесь, что на контактах нет зелёного налёта (окись меди). Наличие такого плохого контакта является полупроводниковой группой и создаёт сильные аномалии в сети. Устранить это можно при помощи спички и спирта (протереть, а не поджигать).

2. Проверьте правильность настройки IP адреса, маски сети и основного шлюза. Если вы нажали кнопку "исправить" - вы могли потерять сетевые настройки.

3. Проверьте связь с по внутренней петле:
ping 127.0.0.1
Еслит есть связь, то карта работает нормально, если нет связи, проверьте настройки режима работы карты. Попробуйте перейти со 100 мб\с на 10 мб\с. Если на 100 мб карте работает только режим 10 мб. Это говорит о неисправности вашей сетевой карты или сетевого кабеля до ближайщего к вам свича.

4. Проверьте связь до основного шлюза:
ping 192.168.xxx.xxx Где ххх.ххх это адрес вашего шлюза.
Если связь есть см. п. 5 Если нет - прроверьте, что питание вашего свича включено, и кабель не разрезан работниками другой сети. 

5. Проверьте связь до любого известного внешнего адреса (www.google.ru):
ping 74.125.87.147 - есть
ping www.google.ru - нет
Если связь есть, а интернет не работает - проверьте настройки DNS и перезапустите службу DNS.
Такое бывает в ХР если комп проработал не выключаясь несколько суток.

6. Если у вас стоит свой WiFi роутер - перезапустите его с выключением питания на 1-2 минуты. Из-за перегрева роутера связь может глючить и даже пропадать. Не ставьте ваш роутер на подоконник под прямые солнечные лучи и возле обогревателей.

7. Определите точку пропадания связи:
tracert www.google.ru
Если связь пропала за пределами сети вашего провайдера - наберитесь терпения, может он переходит на более скоростной канал.

8. Возможно я что-то пропустил. Но если ничего не помогло - тогда звоните и говорите, что вы проверили, что работает, а что нет. Может тогда ваша проблема решится гораздо быстрее, оператор вас не будет считать "чайником" и каждому обьяснять причину неисправности, а сразу догадается в чём проблема и исправит "на лету".

Как узнать, какой дистрибутив Linux запущен и какая сборка 32 бита или 64



Иногда случается работать с системой, про которую вы ничего не знаете.
/etc/*release

Чтобы понять, какой же дистрибутив Linux используется, попробуйте выполнить следующую команду в консоли:
cat /etc/*release 

Например, в случае Ubuntu вы увидите в ответ что-нибудь вроде этого:
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=10.10
DISTRIB_CODENAME=maverick
DISTRIB_DESCRIPTION="Ubuntu 10.10"

Это определение переменных с названием дистрибутива (Ubuntu), его версией (10.10), кодовым названием релиза («Maverick») и описанием («Ubuntu 10.10»).
Для Ubuntu и других дистрибутивов, удовлетворяющих стандарту LSB, искомый файл на самом деле будет называться /etc/lsb-release. А вот, например, у CentOS он называется /etc/redhat-release, и ответ выглядит, например, так:
CentOS release 5.5 (Final) 

/etc/*version
У некоторых дистрибутивов подобного файла может не существовать. В таком случае попробуйте воспользоваться командой:
cat /etc/*version 

Звездочка перед «version» здесь стоит, поскольку у разных дистрибутивов этот файл может называться по-разному, но будет заканчиваться на «version» (по аналогии с /etc/*release, /etc/lsb-release, /etc/redhat-release). Например, в случае той же Ubuntu (и других основанных на Debian GNU/Linux дистрибутивах) мы увидим:
squeeze/sid 

Это кодовое имя релиза Debian (6.0 «Squeeze», ветвь sid), используемого в основе дистрибутива.
/etc/issue

У некоторых дистрибутивов в файловой системе есть еще один «идентифицирующий» дистрибутив файл — /etc/issue. Пример для всё той же Ubuntu:
cat /etc/issue
Ubuntu 10.10 \n \l 
 
И узнать архитектуру сборки запущенного в данный момент дистрибутива GNU/Linux очень просто. Нужно выполнить следующую команду:
$ uname -m
 
Вот примеры возможного вывода команды:
  • x86 — x86-совместимый, 32-разрядный;
  • x86_64 — x86-совместимый, 64-разрядный;
  • armel — ARM.

Настройка сети в linux из консоли.



Часто приходится настраивать сеть на удалённых машинах через конфигурационные файлы. Начинающему линуксоиду всегда не хватает достаточно знания и понимания как “оно” работает.


На примере дистрибутива Ubuntu
.
Конфигурационный файл настройки сети находится тут: /etc/network/interfaces

Опишем 2 вида настройки сети:
1. DHCP интерфейс eth0;
2. Статическая привязка адреса по интерфейсу eth1.

Открываем и конфигурационный файл:
$sudo nano /etc/network/interfaces

В нём будут наши 2 интерфейса и третий – lo – лупбэк. Его не трогаем.
 
#Loopback интерфейс
auto lo
iface lo inet loopback

#DHCP интерфейс
auto eth0
iface eth0 inet dhcp
 
#Статический инетфейс
auto eth1
iface eth1 inet static
address 192.168.150.200
netmask 255.255.255.0
network 192.168.150.99
gateway 192.168.150.99

Ну, думаю, всё крайне понятно. Чтобы применить изменённые настройки, нужно перегрузить сеть:
$sudo /etc/init.d/networking restart

DNS сервера в Линуксе настраиваются не вместе с сетью. Адреса серверов лежат в файле /etc/resolv.conf

Открываем его:
$sudo nano /etc/resolv.conf

И там в следующем синтаксисе вводим нужные сервера:
nameserver 8.8.8.8   
 
Естесственно, цифры ставим свои. 8.8.8.8 можно не менять, т.к. это публичный сервер имён Гугла.

понедельник, 13 декабря 2010 г.

FOSS 2010 в Харькове

FOSSUA_POSTER_IMAGE
Оргкомитет имеет приятную возможность пригласить Вас на студенческую конференцию «Free and Open Source Software 2010″, которая состоится 15-16 декабря 2010 года в г. Харькове на базе ХГТУСА.
Цель конференции заключается в обмене информацией о состоянии и перспективах развития бесплатного программного обеспечение и программного обеспечения с открытым исходным кодом, а также в обобщении и систематизации результатов и опыта внедрения бесплатного программного обеспечения на предприятиях и в организациях, популяризации бесплатного
программного обеспечения среди молодежи / студентов.
Участники конференции могут выбрать и заказать запись бесплатного программного обеспечения на собственные CD и DVD диски.
Вопросы, которые выносятся на конференцию:
• бесплатное прикладное программное обеспечение и прикладное программное обеспечение с отрытым исходным кодом;
• бесплатное серверное программное обеспечение и серверное программное обеспечение с открытым исходным кодом;
• бесплатные сервисы;
• лицензирование и правовые аспекты использования бесплатного программного обеспечения.
Затраты на питание, проживание и проезд участники конференции несут самостоятельно.
Для участия в конференции необходимо: до 26 ноября 2010 г. заполнить анкету участника и прислать статью по электронной почте: fastinetserver@gmail.com, или по почте в 2-х экземплярах, CD/DVD диск с материалами в формате «.odt» (OpenOffice.org).
После рассмотрения оргкомитетом заявок, участникам конференции будут разосланы официальные приглашения.
  
Контакты

Овечко Константин Александрович
Тел: (057) 706-20-49

Адрес оргкомитета:
УКРАИНА, 61070, Харьков, ул. Сумская,40, главный корпус ХГТУСА, ком. 616 ,
т. (057) 706-20-49,

E-mail: info@fossua.org.
Детали на сайтах:
http://fossua.org
http://www.kmit.110mb.com







Реклама Chrome OS

Как и положено, сразу после старта бета-тестирования Chrome OS на YouTube появился рекламный ролик, который показывает преимущества новой операционной системы. В частности, во главу угла в нем поставлена возможность хранить все данные в «облаке» Google и при необходимости восстанавливать их. Посмотрите ролик, там есть невероятные примеры того, как человек может сломать ноутбук.

Итоги 2010 года от Google

Видео, в котором Google демонстрирует главные события уходящего года.

пятница, 10 декабря 2010 г.

В Firefox 4 и Opera 11 будет заблокирована поддержка протокола WebSockets

Разработчики Firefox и Opera приняли решение отключить поддержку протокола WebSockets, входящего в число спецификаций группы HTML5. Протокол WebSockets уже реализован в браузерах на базе движка WebKit, таких как Chrome/Chromium и Safari, и является одной из наиболее ожидаемых новинок Firefox 4 и Opera 11, так как позволяет решить проблему с организацией двустороннего обмена данными между web-приложением и сервером. Образно говоря, WebSockets является своеобразным аналогом TCP для Web и позволяет в произвольном порядке инициировать отправку данных от сервера к web-приложению, а не только от web-приложения к серверу.
Для аутентификации и обеспечения безопасности передачи данных в Web Sockets используются стандартные механизмы браузера. Сам протокол не использует сырые TCP-соединения, но и не работает поверх HTTP. Тем не менее соединение поддерживается в рамках единого с HTTP канала передачи данных, по которому не передается лишних HTTP заголовков, а соединение постоянно держится открытым. Установив WebSocket соединение между сервером и клиентом, разработчик может отправить данные из web-браузера выполнив метод send() и получить отправленные со стороны сервера данные через установку специального обработчика событий.
Причина блокирования протокола в Firefox и Opera связана с недавно обнаруженной уязвимостью в дизайне протокола WebSockets, открывающую возможность подмены содержимого кэша на работающих в прозрачном режиме прокси-серверах, путем выполнения определенной последовательности операций с использованием WebSockets (используя механизм HTTP Upgrade можно на этапе установки соединения передать порцию данных, которую прокси-cервер воспримет как HTTP-запрос/ответ). Применив представленную технику атаки, исследователи смогли инициировать в кэше прокси-сервера подмену JavaScript-блока сервиса Google Analytics. При открытии другими пользователями сайтов, обращающихся к данному счетчику, вместо оригинального JavaScript-кода, выдавался прокэшированный код экспериментаторов.
Вернуть поддержку WebSockets в Firefox и Opera планируется как только в протокол будут внесены соответствующие изменения (рекомендовано для согласования соединения вместо механизма HTTP Upgrade использовать метод CONNECT). Остается надеяться, что обновление спецификации WebSockets состоится раньше, чем будет произведена финальная заморозка кода Firefox 4 перед релизом (если исправления не будут внесены до релиза, то разработчики Mozilla готовы в последующем активировать WebSockets в рамках одного из корректирующих обновлений). Старая реализация WebSockets несмотря на отключение по умолчанию остается в составе Firefox и доступна для ручной активации через "about:config".

Установка нативный uTorrent Linux


Я буду использовать Ubuntu 13.10 x64
Для установки uTorrent для Linux который пока работает лишь в качестве сервера c web - интерфейсом но не обладает GUI. Вам необходимо скачать архив, распаковать его и запустить «utserver».

 
tar xvf utorrent-server-3.3-ubuntu-13.04-x86_64-30235.tar.gz //распаковываем
cd utorrent-server-alpha-v3_3/ //переходим в директорию 
chmod +x utserver // даём право на выполнение
./utserver // запускаем
 
После запуска сервера, открываем браузер, и переходим по адресу: http://localhost:8080/gui/

Login: admin
Password: пустое поле

Далее заходим в настройки и меняем логин/пароль.

Полюбуемся на скриншоты:
 
 

uTorrent

Вся конфигурация uTorrent сложена в файле utserver.conf, которого нет, его нужно создать в директории сервера и вписать туда ваши настройки, типа:

ut_webui_port 8080
dir_active /home/user/
dir_torrent_files /home/user/torrent
bind_port 37455

 
Или использовать web - интерфейс и поменять все настройки в нем.

Более подробно в файле uTorrent_Server.html или uTorrent_Server.pdf.

Восстановление GRUB в Ubuntu 10.X



Удалось мне немного поломать граб, что и следовало ожидать — появилась проблема:
error: unknown filesystem
grub rescue >

Решение

Вводим команду ls и наблюдаем следующее:
(hd0) (hd0,2) (hd0,3) (hd0,5) (hd0,6)
А теперь set:
prefix=(hd0,6)/boot/grub
root=(hd0,6)

Так как мы сместились на 1 раздел, то сетим на один меньше:
set prefix=(hd0,5)/boot/grub
set root=(hd0,5)

Теперь смотрим доступные моды и подгрузим необходимые нам:
ls /boot/grub
insmod /boot/grub/linux.mod
insmod /boot/grub/normal.mod
Моды можно подгружать и так:
insmod normal
Теперь вбиваем команду normal и попадаем в меню загрузки граба:
normal

После того как вы попадете в систему, выполните:
sudo upgrade-from-grub-legacy

четверг, 9 декабря 2010 г.

Макеты американских городов из компьютерного хлама


Итальянский художник Франко Реккья (Franco Recchia) создал небольшую коллекцию макетов городских пейзажей, основными компонентами которых стали разнообразные детали компьютерных комплектующих. Автор сумел максимально точно передать не только форму, но и цвет воссозданых ним объектов.





Источник: Agora Gallery  

Распространение Интернета в мире

Cпециалисты BBC News подготовили интересную интерактивную иллюстрацию распространения доступа к всемирной сети с 1998 по 2010 год. Перемещаться по годам можно с помощью ползунка в нижней части.

Роботы вчера и сегодня

Современный мир практически уже невозможно представить без роботов. Они собирают автомобили, помогают по дому, есть андроиды, киборги и много-много разновидностей этих особей. Представляем вам ролик, в котором мы постарались отразить основные типы роботов. Некоторые из них уже мелькали на Хабре, а вот некоторых вы наверняка увидите впервые.

Установка программ в ubuntu через консоль


Система управления пакетами в Ubuntu основана на Debian и использует утилиты dpkg и apt. Программы в Ubuntu как и в Debian хранятся в пакетах вида .deb. Обычно программы инсталлируются через интернет, предварительно скачивая их с репозиториев. Скачанные файлы не удаляются после установки и хранятся в каталоге /var/cache/apt/archives. При необходимости их можно удалить командой apt-get clean или apt-get autoclean.

DPKG
dpkg -i программа  Устанавливает либо обновляет пакет который был установлен ранее.
dpkg -r программа  Деинсталлирует уже установленную программу но сохраняет файлы конфигурации программы.
dpkg -l  Отображает список уже установленных пакетов программ.
dpkg -l | grep driver  Отображает список установленных программ в названии которых есть слово “driver”.
dpkg -s программа  Показывает информацию по этой программе.
dpkg -P  Удаляет установленную программу вместе с файлом конфигурации.

APT
apt-get install программа  Установка программы. Можно устанавливать сразу несколько программ. Выглядеть это будет так: apt-get install программа программа программа программа программа программа
apt-get update  Проверяет, есть ли на репозиториях обновления для установленных программ. Список репозиториев находится в файле /etc/apt/sources.list
apt-cdrom install программа  Устанавливает либо обновляет пакет с cdrom
apt-get upgrade  Обновляет уже установленные программы.
apt-get remove программа  Деинсталлирует установленную программу.
apt-get purge программа  Удаляет установленный пакет и файлы конфигурации.
apt-get autoremove  Удаляет пакеты, от которых не зависят другие пакеты.
apt-get check  Находит конфликтующие пакеты и поломанные зависимости в пакетах программ.
apt-get -f install  Исправляет найденные поломанные зависимости.
apt-cache search программа Поиск программы в кэше.
apt-cache show программа Показывает информацию и описание пакета программы.
apt-cache showpkg программа Покажет зависимости пакета программы.
apt-cache depends программа Отображает в виде списка зависимые пакеты программ нужные для работы выбранной программы

Опции APT:
apt-get -h  Справка
apt-get -d  Скачивает программу но не устанавливает ее.
apt-get -s  Ничего не делает. Имитирует выполнение команды (например имитация удаления программы)
apt-get -y Если программа задает вопросы эта опция отвечает Yes на все вопросы. Вопросы не выводит в консоль.
apt-get -f  Продолжить действие, даже если проверка целостности пакета прошла неудачно.
apt-get -u  Вдобавок ко всему покажет список обновленных пакетов.

Переименование сетевого интерфейса в Linux



Часто бывает при замене сетевой карты она начинает определятся не как все привыкли по порядку c eth0.
Если вы хотите изменить название интерфейса с eth1 на eth0 либо еще как то, необходимо найти файл в /etc/udev/rules.d/ в имене файла присутствует название persistent-net.rules (в Ubuntu называется 70-persistent-net.rules). Открываем, видим что привязка идет к МАК адресу сетевого адаптера, чтоб изменить название достаточно в конце строки с необходимым адаптером изменить название, например, eth1 меняем на eth0. Сохраняем, перезагружаемся. Все карты видны, как нам нужно.

суббота, 4 декабря 2010 г.

HTML5: да придет спаситель!



Компания Google практически не занимается разработкой десктопных приложений. Ребята, безусловно, могли бы, но делать это незачем. Уже сейчас в вебе можно разрабатывать приложения, которые успешно выполняются в рамках браузера. А каждый день появляются все новые и новые технологии, которые, наконец, позволят нам из пресловутой веб-странички сделать мощное приложение, по возможностям ничуть не уступающее десктопным программам. Многие из этих технологий разрабатываются в рамках работы над стандартом HTML5.
Интернет устарел, и об этом все знают! Сначала думали, что все обойдется, но когда в Сети появились толпы людей, которых не интересовали скучные технические отчеты и документация, это стало очевидно. Сеть требовала красоты и функциональности: изображений, анимации, видео и аудио. Чтобы показать на странице все, что взбредет в голову дизайнера, напрягаться приходится и разработчикам браузеров, и составителям стандартов. Постепенно из обычного формата разметки текста HTML превращался в довольно сложный стандарт, на базе которого делали привычные нам страницы интернет-магазинов, банковские системы, онлайн-игры и порносайты. Но возможностей стандарта HTML4 уже мало, а если уж говорить совсем на чистоту, то стандарт устарел уже в момент его создания. Первыми фишку потребностей народа просекли в Macromedia, давно купленной гигантом Adobe, которые выпустили сначала Shockwave, а потом и Flash. Flash дал то, что всем так хотелось – видео, звук и анимацию, возможности программировать графику и создавать более-менее реальные приложения. Для особо одаренных была реализована возможность объединить JavaScript и Flash (замечу, очень по-уродливому и ненадежно), таким образом дополняя упущения разработчиков браузера. Видео заполонило мир, YouTube, Facebook и ВКонтакте стали самыми популярными сайтами. Во многом благодаря флешу, потому что без видео и приложений это были бы намного более унылые ресурсы.

Упущенные возможности

Но разработчики стандарта HTML тоже поняли свое упущение и решили: надо дать народу новый стандарт, чтобы все делали свое дело, не уходя из обычной платформы браузера во всякие Flash/Silverlight/JavaFX. Дополнительный плагин для отображения страницы — это уже по определению плохо. Пользователям это нужно ставить, обновлять, мириться с дополнительными тормозами. А сам браузер из основного окна в мир Сети стал ненужной прослойкой для запуска приложения на Flash’е или Silverlight’е. Сети срочно потребовался новый стандарт взамен устаревшего HTML4. Его и придумали, незатейливо обозвав HTML5. Это уже не только и не столько язык для разметки страниц и их форматирования, сколько руководство для разработчиков браузеров, какие возможности они должны предоставлять странице и выполняемому там коду. При этом вторгаясь совсем не в область разметки, поручили браузеру дать невиданные возможности скриптам. Отныне работа с видео и звуком, 2D- и 3D-графикой, анимацией, эффектами, сетью на низком уровне – все это должно быть доступным в обычном JavaScript.
Основная задача нового стандарта — расширение стандарта разметки веб-страниц для того, чтобы создавать красивые и функциональные сайты стало легче и проще. HTML5 развивается в двух направлениях. Первое — это расширение языка HTML для внедрения новых возможностей, которые раньше делались через грязные хаки и при помощи сплава CSS и JavaScript. В основном это всякие визуальные штучки вроде скругленных уголков, элементы ввода (веб-формы) и прочие украшательства. Второе — добавление в веб новых возможностей с таким расчетом, чтобы веб-приложение имело все те же возможности, что и обычное десктопное приложение, при этом от пользователя требовался бы только браузер без всяких плагинов или дополнительных приблуд. Самый лучший этому пример – воспроизведение видео (привет, YouTube). Сейчас надо на JavaScript и Flash написать плеер, организовать далеко не тривиальную серверную часть, обеспечить все стандартные возможности (проигрывание, остановку, прогрессивную загрузку и т.п.). Морока еще та. HTML5 тебе говорит, что это все не нужно – пусть браузер этим занимается, а ты просто вставь новый тег

В чем сила HTML5, брат?

Раньше веб-странички содержали или обычный текст, пусть и с форматированием, или же заранее подготовленные изображения в растровых форматах JPEG/GIF/PNG, изредка приправленные анимацией. Flash с его векторной природой и динамическим рисованием сделал просто революцию – стало возможно генерировать анимацию прямо на лету, реагируя на действия пользователя, масштабировать ее и накладывать различные эффекты. Обычный HTML был лишен такого счастья и мог оперировать только символами и объектами документа, но не отдельными графическими примитивами вроде линий или точек. Ну что ж, теперь это все в прошлом. Canvas – это одна из самых ожидаемых и мощных возможностей в HTML5. Как выглядит работа с графикой теперь? Ты просто создаешь специальный тег, внутри которого, в указанном прямоугольнике, имеешь возможность работать напрямую с пикселями и графическими примитивами вроде фигур, линий, окружностей и т.п. И все это доступно для управления программным способом через JavaScript. Если ты пробовал программировать еще в DOS или интересовался, как делают игры, то должен представлять, какие чувства вызывает необходимость рисовать по пикселям и выводить каждую линию. Но раньше-то и этого не было. Если разработчики вовремя подсуетятся и выпустят развитые библиотеки для рисования, можно сказать, что Flash, наконец-то, обречен. Простейший пример использования canvas:
function draw()
{
    var canvas = document.getElementById("canvas");
    if (canvas.getContext) {
        var ctx = canvas.getContext("2d");
        ctx.fillStyle = "rgb(200,0,0)";
        ctx.fillRect (10, 10, 55, 50);
        ctx.fillStyle = "rgba(0, 0, 200, 0.5)";
        ctx.fillRect (30, 30, 55, 50);
    }
}
<body onload="draw();">
<canvas id="canvas" width="150" height="150">canvas>
body>

Canvas, конечно, не такой уж и новый или уникальный. Давно есть возможность рисовать, используя разные ухищрения, вроде специального языка VML в браузерах от Microsoft или свободных форматов SVG в Mozilla или Safari. Но годится это разве что для рисования графиков, для которых не требуется много ресурсов. Canvas — совсем другое дело. Производители браузеров заявили, что уже умеют оптимизировать такие операции, передавая их на графическую карту. Теперь браузер будет кушать не только память и процессор, но и GPU. В последних версиях Google Chrome и IE 9beta для ускорения работы с графикой в элементе canvas используется аппаратная поддержка и DirectX API.

Как попробовать HTML5?

Не буду скрывать – HTML5 как стандарта еще нет, многие части его противоречивые и сырые. Производители браузеров думают по-разному, реализовывают то, что хотят, и как сами считают нужным. Мол, нет еще стандарта, поэтому сиди, юзер, молчи в тряпочку и жди, пока мы все сделаем! И ждать этого вашего HTML5 годами. Но если ты разработчик, или просто решил похвастаться, то вот тебе пара кратких рецептов, как добавить поддержку HTML5-фич на свою страницу уже сейчас, не дожидаясь поддержки от браузера. Конечно, это все костыли – где-то эмулируется через Flash, где-то через сторонние библиотеки или CSS, но зато уже сейчас и во всех браузерах.
Для начала нужно сверстать страницы по всем правилам, а чтобы можно было использовать новые элементы разметки, и браузеры без их поддержки не ругались, лучше всего сразу применить готовый шаблон – HTML5 Boilerplate, который содержит в себе множество уже готовых фиксов и заменителей для браузеров без нативной поддержки нового стандарта.
Если хочешь проверить, что поддерживает браузер пользователя, то тебе пригодится библиотека Modernizr, которая тестирует браузер на поддержку множества разных фич и выдает это в виде API или просто как свойства элемента body. Заметь, что скрипт только тестирует наличие или отсутствие поддержки, а не эмулирует недостающий функционал.
Для выводов простой векторной графики и рисования можно применить Raphael, созданный, кстати, нашим программистом. Библиотека может работать как с SVG, так и с VML, и скрывает от тебя все внутренности рисования. А заменить canvas поможет разработка от гугла – exCanvas, с которой даже тупой IE7 сможет рисовать все, что ты ему прикажешь.
Хранить данные можно при помощи Sessionstorage (единственный из скриптов, который честно эмулирует все WebStorage API) или более знакомого нам jStore (плагин к jQuery), который хотя и использует свой API, но что поделать.
Хочешь воспроизводить видео и построить второй Youtube (ладно, чего уж там, Porntube тоже сойдет) – можешь использовать плеер Video for Everybody, который добавляет поддержку тега
Всякие рюшечки в формы добавить? Легко при помощи библиотеки WebForms2, работающей во всех браузерах.
WebSocket – самая бедная часть, потому как полноценно ее эмулирует только один проект. Разработка web-sockets-js использует небольшую JS-обертку над Flash’ем. На сегодня это лучшее решение, умеющее проходить даже через разные умные и не очень прокси и файерволы.
Для обмена сообщениями между разными фреймами, в том числе и с разных доменов подойдет библиотека easyXDM.
Если очень захотелось уже сейчас использовать новую модель селекторов или же другие фичи из CSS 3, здесь на помощь придет selectivizr и css3pie, добавляющий свойства скругления уголков блоков и прочие радости жизни.

Что имеешь, не хранишь, загружая – плачешь

Если ты пробовал делать что-нибудь сложнее домашней странички, наверняка сталкивался с ситуацией, когда на стороне клиента необходимо сохранить какую-то информацию, чтобы сто раз не гонять ее по сети с сервера. Раньше единственным вариантом было просто тупо загнать ее в JavaScript-переменную, но она жила лишь то время, пока страница была открыта в браузере. Закрыл страницу – и все безвозвратно исчезало. Если клиент возвратился на сайт, то все приходилось загружать сначала, даже если ничего не изменилось. Cookies с задачей хранения данных не справлялись, и единственное, что могли предложить – хранение идентификатора, который тебе приходилось уже привязывать на сервере к данным пользователя. Да и много ли можно сохранить в 4 Кб (а именно столько можно хранить в одной "печеньке")? К тому же они посылаются на сервер с каждым HTTP-запросом, что непомерно раздувает сетевой трафик.
Новая фишка – WebStorage или DOM Storage – призвана разгрузить приложение, перенося часть данных на клиентскую сторону. Например, если у тебя есть онлайн-магазин, то данные о самых популярных товарах можно хранить сразу у клиента, лишь периодически его обновляя (и чем больше данных, тем заметнее выигрыш). Разработчики получают единый механизм доступа к данным, независимость хранилища от сайта, стойкость не только к закрытию вкладки или окна браузера, но и к полной перезагрузке компьютера. Сколько данных можно так хранить? По спецификации объем данных не ограничивается, но на деле IE разрешает до 10 Мб на домен, в Firefox чуть скромнее – до 5 Мб. Неожиданно, но в деле реализации спецификации хранилища Microsoft реально впереди всех остальных браузеров, так как реализует не только рекомендованные спецификации, но и увеличивает лимиты, добавляет полезные свойства. Например, IE8 – единственный, кто может сообщить, сколько же памяти реально занято данными, другие браузеры этого и близко не умеют. По спецификации хранилищ может быть два – session, когда данные актуальные только для текущей вкладки (но при этом можно уходить на другие сайты, данные сохраняются), и local – уже настоящее постоянное хранилище, привязанное к домену, где оно было создано (для поддоменов будут свои хранилища).
Работать с хранилищами данных проще простого – это, по сути, модная нынче NoSQL база данных. Можно положить (set), получить (get) и удалить (remove) значение переменной, данные при этом могут быть любыми, главное, чтобы это были строки или приводимые к ним форматы. Можно также удалить все (clear) и узнать объем (length). Работа с хранилищем осуществляется так же, как и с обычным хешем в JavaScript. Например, сохраним список друзей пользователя:
window.localStorage[myfriend] = JSON.stringify([{name:”Вася”,email:vasja@xakep.ru”},
{name:Alex”, email:aleks@xakep.ru”}]);

На самом деле для реально крутых приложений этого недостаточно. Об этом хорошо знают и понимают в W3C, поэтому хранению данных уделено столь большое место в текущей спецификации HTML5. Так, на радость разработчиками, кроме простого (и тупого) хранения строк, пусть и постоянного, можно надеяться и на Web SQL Database – попытку предоставить в распоряжение скрипту свою собственную полноценную SQL базу данных (обычно это SQLite).

Интернет? Нет, оффлайн!

Раньше работать с сайтами было можно, даже не имея доступа в Cеть: открыл себе нужные страницы и читай, хоть на весь день, отключившись от модема. С сегодняшними интерактивными сайтами такое уже не получится. Для многих действий понадобиться устойчивая связь с сервером проекта, ведь ты хочешь мгновенно видеть, что твои друзья делают рядом. Но ведь случается, что интернет просто отрубается, верно? Раньше браузер мог даже не заметить кратковременных отключений, максимум это грозило тем, что не отправляются формы. Современному же приложению в браузере надо точно знать, есть у него выход в инет или нет. И, как опытный разработчик, могу тебе сказать: узнать это не так уж и просто. Для облегчения этой задачи в HTML5 появились новые события – offline/online, которые оповещают твою программу о перебоях в соединении. Это здорово помогает, например, при написании текстов – если нет интернета, то вместо отправки заполненной формы на сервер достаточно воспользоваться одним из предложенных хранилищ данных (DOM Storage) и сохранить в него все, что ты так кропотливо набивал, а уже потом, когда появиться доступ в Сеть, отправить это на сервер. Многие сервисы работы с документами или почтой нуждаются в таком уже сейчас, и им приходится всячески извращаться, чтобы узнать то, что в HTML5 будет доступно одной строкой!
document.body.addEventListener("offline",
function ()
{

alert(‘Чувак, звони провайдеру, твоя сетка упала!’));
},
false);

Но что делать, если твой сайт может прекрасно жить и без инета, лишь бы были те несколько файлов, без которых ну просто никак не обойтись? И это решается. Достаточно использовать application cache или offline resource. Это механизм, когда ты в специальном файлике (манифесте) описываешь ссылки на все нужные странице файлы, необходимые для того, чтобы работать без связи с сервером. Они автоматически будут загружены и заботливо сохранены браузером, чтобы быть наготове на случай обрыва связи. В отличие от настроек кэширования, это работает более гарантированно, и браузер не может пропустить указанный файл — все они в обязательном порядке будут заблаговременно загружены и сохранены. Уже сейчас это можно попробовать в Firefox 3.5 и выше.

Web Workers – солнце светит, рабы пашут

В инете просто куча сайтов, на которые заходишь и понимаешь, что можно выбросить в топку твой 4-х ядерный камень и 8 Гб оперативки – все это сжирает один сайт! Причиной тормозов часто является Flash, но не он один. Разработчики знают: JavaScript в браузере не предназначен для серьезных вычислений. Только в последних версиях браузеры научились выделять скрипты в отдельные потоки (первым это взял на вооружение Chrome, что позволило ему назваться самым быстрым браузером на планете). Тем не менее, в рамках страницы все скрипты работают в одном потоке, даже если процессор может выполнять их несколько одновременно. Асинхронным, то есть исполняющимся параллельно был и есть только один специальный системный объект XMLHTTPRequest, который может делать запросы на сервер, не прерывая основную работу. Но что же делать, если сегодня ты уже хочешь не просто загружать фото на свою страничку, а требуешь возможности ее обработать, создавать коллажи или фотожабы, да и просто убрать красные глаза? И все это на той же страничке, без необходимости отправлять фото на сервер.
Приближая возможности веба к обычным приложениям, следовало развязать руки разработчикам, дав возможность загрузить клиентскую машину по максимуму. Так появилась спецификация WebWorkers, впервые реализованная "в коде" еще Google Gears. По сути, это возможность выделить некоторый участок кода (набор функций), которые будут исполняться в отдельном фоновом потоке, никак не мешая обработке основной страницы, не тормозя отрисовку DOM-дерева и другие операции. Конечно, воркеры имеют множество ограничений (чтобы не наглели). Они не могут обращаться к переменным основной страницы или к DOM-дереву страницы, не видят ее переменные. Разрешена только загрузка с удаленных узлов и общение с родительским процессом, где они были созданы через механизм обмена сообщениями (обычными строками или JSON-данными). Простой пример:
var worker = new Worker("my_xaking_script.js");
worker.onmessage = function(event)
{
    alert(‘Computing finished, result: ‘ + event.data)
};
worker.postMessage("5");

В воркере (файл my_xaking_script.js) может быть любой код JS, не взаимодействующий с DOM, а чтобы он мог общаться с внешним миром, достаточно объявить обработчик события onmessage, который срабатывает, когда воркеру посылают данные для обработки. Результат возвращается через вызов метода postMessage, который связывает код с основной страницей.
Можно смело возлагать на такой скрипт трудоемкие расчеты, например, в стратегических или RPG-играх, фоторедакторах и там, где раньше едва справлялся Flash или просто тупо вис браузер. Спецификация воркеров вышла на удивление простой и гибкой, да так, что многие серверные приложения взяли ее на вооружения, реализуя таким образом многопоточность (например, серверный JavaScript NodeJS). Плагины для Firefox, которые также могут быть написаны на чистом JS, могут использовать WebWorker для вынесения ресурсоемких обработок в другой поток. Для иллюстрации практической пользы от воркеров, легендарный JavaScript-гуру Джон Резиг, создатель jQuery, портировал из C на JavaScript алгоритм поиска коллизий в SHA-1 хеше (в рамках конкурса, организованного Ruby-хостером Engine Yard). Сам код ты сможешь найти на нашем DVD, но прирост скорости от использования многопоточности в разных браузерах составил от двух до пяти раз. А это, как мне кажется, очень даже отличный результат.

А может, хватит?

Ты думаешь, на этом нововведения в HTML5 закончились? Нет, там еще много чего припасено. Например, сейчас во всех браузерах перетаскивание чего-либо мышью (Drag-n-Drop) приводит к ощутимым тормозам. Особенно этим славится IE (а где ж он не тормозит-то?), поэтому все сложные веб-сайты с большим количеством информации работают в страничном интерфейсе, не пытаясь наследовать десктоп с таскающимися окнами. Разработчики HTML5 обещают, что Drag-n-Drop будет нативный и ускоряться браузером, поэтому даже с огромным DOM-деревом и кучей CSS-стилей все будет летать. Вдобавок появится возможность таскать не только элементы в пределах окна, но и немного выйти за область браузера, разрешив загружать файлы прямым перетаскиванием прямо с рабочего стола или из другого приложения. Это уже сейчас можно попробовать в Google Chrome, приложив аттач к письму Gmail с помощью Drag’n’Drop’а. Вообще, в спецификации обсуждается предоставление большей свободы в плане работы с локальными данными, например, FileReaderAPI, который позволит коду напрямую читать файлы с диска юзера (конечно, не все и не везде). И хотя начальные варианты поддержки уже появились в последних сборках Firefox, это API до конца не обрело свое место в стандарте.
О революционном решении добавить, наконец, в веб то, чего всегда не хватало – нативную поддержку WebSockets (двусторонней постоянной связи с сервером, почти настоящие TCP-сокеты), мы уже рассказывали подробнее в прошлых номерах (статья "Реал-тайм в Вебе"). На сегодня это одна из самых обсуждаемых фич, которая уже реализована в последних релизах браузера (кроме злосчастного IE9). И пусть редакции стандарта на WebSockets могут изменяться и быть порой несовместимыми между собой, дырявыми в плане безопасности – без сомнения именно они будут главным локомотивом движения веб-сайтов в сторону приложений.
В истории Сети с середины 90-х годов пытались добавить настоящую 3D-графику на сайты. Разрабатывались специальные языки (вроде уже умершего VRML), создавались плагины и библиотеки, начиная от полностью новых (Blink 3D, Wildtangent) и заканчивая расширениями привычных апплетов Java (Java3D) и Flash. Ничего не пошло, пока не решили – а зачем вообще что-то придумывать, если все уже придумано (и украдено) до нас? На том и решили. За основу взяли индустриальный стандарт OpenGL (его особенно обожает легендарный Джон Кармайк, создатель Doom и Quake) и портировали с некоторыми изменениями его API прямиком в JavaScript. Так на свет появилась технология WebGL, которая сейчас лучше всего поддерживается Chrome. Здесь, как и в canvas-элементе, есть где разгуляться видеокарте: обещается, что графика будет ускорена по полной программе. Однако эта часть еще не входит в спецификацию и развивается сторонними компаниями. Но уже одно обещание единого графического API для работы с настоящим честным 3D и на любимом JavaScript – это подвиг! А как применить – это мы уже сами придумаем; будем писать игры, выводить классные графики и диаграммы, рисовать карты. Для игр, кстати, уже сделали и развивают честный игровой движок CopperLicht.

Как жить дальше?

HTML5 – это определенно будущее интернета. Технологии, которые входят в этот стандарт, позволяют с легкостью делать на веб-страницах то, что раньше было доступно только суровым C++ программистам на десктопах. Сразу все, конечно, на голову не свалится, новые возможности постепенно внедряются в браузеры. Но не стоит думать, что раз стандарт в далеком будущем, то ничего из его возможностей нельзя использовать сейчас. Многие браузеры поддерживают новшества HTML5, но вот только одна засада – каждый норовит реализовать это по-своему.

WWW

Лучший сайт, где собраны разные примеры, учебники и исходники всех фич HTML5:
www.html5rocks.com
3D графика с помощью WebGL:
learningwebgl.com/blog
Поддержка HTML5 и CSS 3 в разных браузерах:
www.findmebyip.com/litmus
Таблица тегов в HTML5:
www.w3schools.com/html5/html5_reference.asp
Введение в WebWorkers:
webo.in/articles/all/2009/25-computing-with-web-workers

Источник: http://www.xakep.ru/post/54126/