четверг, 24 декабря 2009 г.

Java - установка сокета с таймаутом

Представим, что вы пишете программу, которая бы открывала сокет на какой-либо порт и ждала бы от него ответа. Например, у вас есть список серверов, на каждый из которых надо зайти. И вдруг какой-то из серверов выходит из строя. Если не установить таймаут на создания сокета, то ваша программа будет висеть до тех пор, пока сервер не починят. Вот для этого случая и написан этот пост.
//Установка socket используя timeout
import java.net.*;
import java.io.*;
String AddAsStr="yandex.ru"
try {
AddrAsIAdr = AddrAsIAdr.getByName(AddrAsStr);//Переводим адрес из строки в тип InetAddress
} catch (Exception e) {
System.out.println("Could not resolve IP-address");
return 1;
};
try {
socket = new Socket();
socket.setSoTimeout(1000);
socket.connect(new InetSocketAddress(AddrAsIAdr,80),1000);//открываем сокет на сервере yandex.ru на порт 80 с таймаутом 1000 миллисекунд
} catch (Exception e) {
System.out.println("Could not establish socket");
return 1;
};

Вот и все:) В случае, если IP адрес не известен или socket не откроется за 1 секунду, программа выдаст соотвествующее сообщение.
P.s. подробнее про технологию сокетов в Java рекомендую читать на официальном сайте Java Sun.

Java - как сравнить строку с регулярным выражением (regexp)

Здесь просто и кратко о том, как сравнить в Java строку с регулярным выражением. Точнее, про то, как проверить, есть ли данный регексп в строке.
Делается это так:
String regexp="a*b";//Задаем регулярное выражение
String string="aaabbb";//Задаем строку, в которой будем его искать
boolean ok = Pattern.matches(regexp,string);//сравниваем
/* Если регексп присутствует в строке, то ok будет равно true,
* если нет - то false.
* В рассмотренном случае ok= true
*/
System.out.println(b);//на экране появится true

regexp="cd";
string="dddccc";
System.out.println(b);//на экране появится false
Вот и все.
О том, из чего составляются регулярные выражения и т.п. лучше всего читать официальную документацию. Полнее и лучше, чем там, написать очень сложно.

воскресенье, 20 декабря 2009 г.

Включение звука в Debian Linux (alsa)

Этот пост всего ради одной команды, которая включает звук в Linux:
sudo aptitude install alsa-base
Alsa - это звуковая подсистема в Linux, предоставляющая приложениям возможность воспроизведения звука. В вольном изложении суть такова - какое-то приложиение, например, плеер, хочет играть музыку. Тогда он говорит Алсе - я хочу играть вот это вот, а сама Альса уже обращается непосредственно к драйверу ядра, отвечающему за звуковую карту. Таким образом, чтобы у вас работал звук, вам надо установить Alsa и проследить, чтобы в ядре были модули для вашей звуковой карты. Для наиболее распространненых видов они там есть.

суббота, 19 декабря 2009 г.

Трактат о Любви в две сотни слов

Ты любишь меня наотмашь
По дачным полынным обочинам…
(Вера Павлова)

Что есть Любовь?

Этим вопросом каждый на протяжении жизни
Задается множество раз и не находит ответа.
Нет лучше способа узнать о том, что она есть,
Чем обнаружить ее в проявлениях.

Когда человек говорит о любви, он вынужден
Говорить о ней как о не-Любви.
Это и называют «говорить о любви».
Но почему это так?

Любовь, которая может быть выражена словами –
Не есть Истинная любовь.
В стремлении проявить Истинную любовь,
Которая не может быть выражена словами, образами и мыслями,

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

Не потому ли юный Петр из 5Б дергает Надю за косу?
Не за этим ли отрок Павел пишет на стене
«Оля - сиська»?
Не оттого ли говорят «Бьет, значит любит»?

Но поскольку Бог есть Любовь,
То Петр в проявлении своей Любви
Не отличен от Бога.

Но поскольку и Павел в проявлении своей Любви
От Бога не отличен,
То и Бог не отличен от каждого из них,
Равно как и от прочих.

Вот почему говорят, что Истинная Любовь
Не отлична от не-Любви,
Подобно тому, как совершенная мудрость
Не отлична от глупости.

Это не отличие и есть Любовь.

Устанавливаем Linux Debian c USB-флешки

Предыстория:
Купил себе ноутбук, Lenovo U350 и решил поставить на него Debian в компанию к предустановленной Viste. Висту, должен признаться, оставил только для игр. Все таки играть из под Wine не совсем то:) Возник вопрос - как ставить Debian, ведь у этого нетбука нет cd-дисковода. Ответ  - с флешки.
Задача:
Создать загрузочную флешку и установить с нее дебиан.
Решение:
1) Находим компьютер с Linux на борту. Вставляем в него свою флешку.
Скачиваем вот этот файл (Предназначен для архитектуры i386, если вы хотите для какой либо другой - то файл лежит там же, только в ссылке замените i386 на название вашей, например, amd64). В нем содержится установщик, который, после того, как вы загрузитесь с флешки, позволит вам выбрать, с какого iso-образа устанавливать систему.
Для скачивания можете выполнить:
wget http://mirror.yandex.ru/debian/dists/stable/main/installer-i386/current/images/hd-media/boot.img.gz
2) Заливаем этот файл на флешку следующей командой:
zcat boot.img.gz > /dev/sdX
где sdX - это устройство флешки. Узнать ее можно, выполнив команду dmesg, предварительно воткнув флешку в USB-порт.
3) Скачиваем образ, с которого будем устанавливать Debian. Я выбрал этот. Для этого выполняем следующую команду:
wget http://mirror.yandex.ru/debian-cd/current/i386/iso-cd/debian-503-i386-CD-1.iso
Скачав, заливаем его на флешку. К сожалению, на ту, с которой мы будем грузиться, залить его не получится, так как на ней создалась файловая система, с размерами, не позволяющими залить туда образ. Конечно, можно исхитриться, и увеличить ее, но мне проще было залить ее на другую флешку, предварительно ее примонтировав:
mount /dev/sdg1 /mnt/temp
где sdg1 - это раздел на этой флешке (можете посмотреть их все с помощью команды fdisk -l), а /mnt/temp - папка, куда производится монтирование.
Копируем образ на флешку и размонтируем ее:
cp debian-503-i386-CD-1.iso /mnt/temp
Если же вы хотите использовать установку по сети, то образ для нее влезет и на первую флешку.
4) Собственно, все готово.
Вставляем первую флешку в пациента, перезгружаемся, включив в биосе загрузку с usb-key, потом, когда запустится загрузчик, вставляем вторую флешку, он находит на ней наш iso-образ, и все, вперед и с песней ставим расово-верный Debian

четверг, 17 декабря 2009 г.

Google Chrome - включение синхронизации закладок

Синхронизация закладок - это крайне необходимая вещь для всех тех, кому часто приходится лазать по интернету с разных компьютеров. К примеру, нашлось свободное время на работе, нашёл какую-либо интересную статью на каком-то сайте, а прочитать не успел. Тогда надо всего лишь добавить его себе в закладки, потом придти домой, и эта ссылка будет уже и в закладках домашнего бразуера.
Насколько мне известно, синхронизация закладок в Google Chrome возможна пока только в dev-версии. Поэтому, чтобы ее включить, надо сначала сделать следующее.
Под Windows - скачать вот эту программку и запустить ее. В ней выбрать канал dev, потом пройти в Хроме так - настройки - О браузере Google Chrome - Обновить.  Если же там не будет кнопки обновить, или он не будет обновляться до версии 4 с чем-то, то попробуйте установить dev-версию, пройдя по этой ссылке. Потом перезапустить его и готово, в настройках появится кнопочка синхронизация закладок. Она синхронизирует ваши закладки с вашим google-аккаунтом. В Linux же порядок действий следующий - надо подключить репозиторий Chrome deb http://dl.google.com/linux/deb/ unstable non-free main. Тогда у вас Chrome будет сам автоматически обновляться до dev-версии, а синхронизация закладок будет работать так же, как описано для Windows чуть выше.
P.s. Если же у Вас нет Google-аккаунта или вы по каким-то причинам не хотите пользоваться способом, описанным выше, то к вашим услугам расширение Xmarks для Chrome, которое позволит синхронизировать закладки не только между бразузерами Chrome, но а также и между Mozilla FireFox, Safari и IE.

UPD: Все возможные ключи запуска можно найти здесь.

Поднятие FTP-сервера в Debian для бытовых нужд.

Предисловие.
У меня сложилась следующая ситуация. Купил себе ноутбук, включил его в домашнюю сеть, до этого состоявшую из роутера и десктопа. И сразу захотелось получить возможность качать на него фильмы, программы и т.д. из локальной сети провайдера, а именно из местного p2p. Но там для того, чтобы что-то скачать, сперва надо что-то выложить самому. Как говорится, чтобы купить что-нибудь ненужное, сперва надо продать что-нибудь ненужное. Качать же что-то из других источников было лень. Поэтому решено было слить немножко шары с десктопа под управлением Linux Debian, за которым, кстати, в этот момент сидела моя девушка (вот, кстати, ее блог). При этом мешать ей было крайне нежелательно.
Задача.
Поднять на десктопе FTP-сервер, для того, чтобы можно было быстро скачать что-то с одного компа на другой в пределах своей домашней сети.д
Решение.
1) Была скачана программа Putty, которая позволяет из под Windows заходить на Linux-компьютеры и сервера по протоколу ssh и получать доступ к консоли. (К счастью, sshd я поднял на десктопе заранее)
2) В качесте FTP-сервера был выбран proftpd. Установил я его следующим образом:
sudo aptitude install proftpd
При установке он спросит, в каком режиме надо работать - как сервер или под управлением inetd, я выбрал inetd, так как в таком режиме он будет меньше грузить систему. Правда, производительность его тоже снизится, но ведь туда буду только я ходить, а не толпы народа.
3) Была произведена его минимальная настройка. Так как он ставился не для production-целей, я особо не стал грузиться и курить мануалы, а сделал следующее:
sudo vim /etc/proftpd/proftpd.conf
Все настройки были оставлены по умолчанию, я только добавил следующее:
<Anonymous /mnt/d/Downs>
User ftp
Group nogroup
UserAlias anonymous ftp
DirFakeUser on ftp
DirFakeGroup on ftp
RequireValidShell off
MaxClients 10
<Directory *>
<Limit WRITE>
DenyAll
</Limit>
</Directory>
</Anonymous>
Вроде как все интуитивно понятно, но поясню: секция Anonymous задает параметры для анонимного доступа в директорию /mnt/d/Downs, где у меня лежит всякая вкуснятка. Аноним может входить под именем ftp, anonymous. В секции Limit мы запрещаем ему писать в этой директории.
4) Собственно, это все, осталось только выполнить reload сервера, чтобы он прочитал обновленный конфиг:
sudo /etc/init.d/proftpd reload
5) Заходим любым фтп-клиентом. Лично я использовал для этой цели свой браузер, Google Chrome. Чтобы зайти, в адресной строке надо набрать
ftp://192.168.0.153/
,
где 192.168.0.153 - это IP адрес моего десктопа.
В результате получаем следующее:

И все, берем и качаем то, что нам надо))

вторник, 15 декабря 2009 г.

Веборама - отличный бесплатный аналог Last.fm

Совершенно внезапно открыл для себя замечательный ресурс -Веборама. По сути он представляет собой бесплатный почти аналог крайне известного Last.fm. Музыка отсортирована по жанрам, можно выбрать жанр (рок, поп, рэп и т.п.), поджанр, и тогда вам будут рандомно проигрываться песни выбранного направления. Так же можно воспользоваться поиском и найти конкретно то, что вам нужно. Но самая главная фишка сервиса - подбор музыки в зависимости от настроения!

Таким образом, в каком настроении не находился бы пользователь, он всегда может слушать музыку "в тему". Собирается статистика по музыке, которую вы слушаете, какие-то альбомы  и треки можно откладывать для прослушивания на потом, если сейчас послушать некогда.
На главной странице так же отображаются популярные песни, клипы, исполнители. Есть информация о предстоящих концертах - кто, где, когда и что. Так же присутствуют сообщества, в которых можете написать свою и почитать другие рецензии на любимых исполнителей, альбомы и треки.
Должно заметить, что вся музыка на сайте загружается самими пользователями, так что бывают случаи, когда в альбоме не хватает пары песен и т.п.:) И да-да-да, все абсолютно бесплатно :))
Ну и вот вставил себе оттуда песенку своей любимой Аврил:)

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

Linux - посылаем сообщения другим пользователям через консоль

Всегда интересовался, как послать сообщения другим юзерам через консоль, так, чтоб у них это отобразилось. Сейчас наконец-то разобрался. Это очень просто, делается всего одной командой write:
write username
где username - имя пользователя, с которым вы хотите пообщаться.
Чтобы запретить другим вот так вот вламываться в вашу консоль, используйте команду mesg. C параметром y она разрешает слать вам мессаги, а с n - запрещает:
mesg n
В довесок, есть команда wall, которая шлет сообщения всем пользователям, залогиненным на этот момент:
 wall [file]
[file] - это имя файла, который выведется всем пользователям. Если его не печатать, то будет посылаться то, что вы печатает, то есть стандартный поток ввода.
Все проверено в Debian Linux.

воскресенье, 13 декабря 2009 г.

Небольшой обзор аудиопроигрывателей под Linux

На днях столкнулся с проблемой (точнее, столкнулся давно, но решать решил лишь сейчас) - мой любимый проигрыватель Amarok написан под KDE, хотя мне самому намного больше нравится использовать Gnome. Поэтому перечислю, что я пробовал, и на чем остановился:
Amarok - очень мощный плеер,  с удобной библиотекой, поиском текстов, обложек, информации об исполнителях на википедии. Глобальные хот-кеи, сворачивание в трей, поддержка многих форматов, отправка статистики на LastFM - все это в нем есть. В общем, все то, что мне нужно в нем есть. Но - под Gnome он работает совсем не так хорошо, как под KDE, и тащит с собой в зависимостях кучу всяких библиотек.


Exaile - его я попробовал после Amarok'a, вычитав в интернете, что это проигрыватель, очень похожий на Амарок, но написанный на GTK+, то есть подходящий под Gnome. Однако, когда я его поставил, во всем почувствовал какую-то урезанность и уж слишком явный закос под Amarok. Да и подтормаживал он у меня почему-то.


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


Banshee - вот на нем я и остановился. Banshee - проигрыватель на GTK+, отлично работает под Gnome и радует меня всеми теми функциями, которых я жду от приличного проигрывателя.


Ну и на последок - можно теоретически вообще какой-то определенный файл прослушать просто проигрывателем mpg123 или mpg321 - всего лишь командой "mpg123 filename.mp3":)
И да, все проигрыватели из этого списка можно установить так
sudo aptitude install amarok
Слово "amarok"  замените на имя того проигрывателя, который вам нужен:)

Linux - многопоточная скачка с сетей p2p - dc.

Протокол Direct Connect используется в пиринговых сетях типа DC++. В этих сетях пользователи могут обмениваться файлами самых разных типов. Каждый из них присоединяется к серверу-хабу, при этом расшаривает какую-то свою информацию. В хабе реализован чат и возможность посмотреть, сколько пользователей на нем и у кого что расшарено, возможен поиск. Есть самые различные клиенты для таких сетей - FlyLinkDC, StrongDC и т.д. У самого распростарненного клиента под Линукс  есть один большой недостаток - невозможна одновременная скачка одного файла с различных пользователей:( Я сумел найти только вот тут пропатченную версию linuxdcpp, поддерживающую многопоточную скачку. И то она только для архитектуры i386:(

воскресенье, 6 декабря 2009 г.

Устанавливаем калькулятор в Linux Debian

Внезапно передо мной встала задача установить калькулятор в линуксе, так как в моем Debian предустановлено его не было. Причем я искал приложение на GTK, так как у меня установлен Gnome. Google же в ответ на мои запросы выдавал всякие страшные штуковины типа вот этого или этого. Мне же хотелось получить просто аналог того самого calc, который был в windows, чтобы можно было парой щелчков перегонять числа из десятеричной системы в двоичную и т.д., а не изучать еще один режим программированя. Вот он, calc, на картинке:

Решение же нашлось в виде gcalctool - симпатично и очень похоже на виндовую реализацию:


Вот его я и решил себе поставить. Для этого надо выполнить всего лишь одну команду:
sudo aptitude install gcalctool
И все, можно наслаждаться подсчетами. Стоит заметить, что он обладает тремя режимами - простым, финансовым и научным.

Взаимодействие PHP и MySQL

В этом посте расскажу о том, как с помощью PHP осуществлять запросы к базе данных на основе MySQL. Использовать для этого будем web-сервер apache 2 с установленным модулем PHP. Все эти три компоненты практически бесплатны и распространяются под лицензией GNU. Подробнее о том, как устанавливать PHP, Apache и MySQL постараюсь написать в одной из следующих статей. Сейчас же представим, что все это уже установлено и сконфигурировано у вас дома, либо вы используете хостинг с поддержкой PHP и MySQL.
Итак, пусть у нас в MySQL есть база world, а в ней таблица people с полями name и age, где name - это имя, а age - возраст человека. И мы ставим себе целью выбрать из этой таблицы всех людей моложе 20 лет. Очевидно, для этого нам надо использовать запрос SELECT.
Начнем. Создаем в папке, которую Apache считает корневой, файл со следующим содержанием
<!DOCTYPE html>
<html>
<head>
<title>Запрос к базе данных</title>
</head>
<body>
<?
//прописываем параметры для соединения с БД
$hostname='localhost';//Имя хоста с БД MySQL, в нашем случае это localhost
$dbName='world';//Имя базы данных, которая нам нужна
$dbUser='username';//Имяпользователя MySQL
$dbPasswd='password';//Его паролт
$dblink=mysql_connect($hostname,$dbUser,$dbPasswd) or exit (3); //Соединяемся с сервером или ошибка
$db_selected=mysql_select_db($dbName,$dblink) or exit(3);//Выбираем БД world
//Подготавливаем наш запрос SELECT
$query="SELECT * FROM people WHERE people.age<20";
//Отправляем запрос в базу
$result=mysql_query($query,$dblink);
//Функция mysql_query отправляет запрос $query по указателю $dblink на базу.
//Обрабатываем результат
while ($man=mysql_fetch_array($result))
//Функция mysql_fetch_array обрабатывает результат, занося по строчке из него в ассоциативный массив $man по полям, которые называются так же, как заголовки столбцов в MySQL
{
 echo "Name = ".$man['name']." Age= ".$man['age']."<br>";//выводим каждую строчки из результата на экран
};
?>
</body>
<html>
Сохраняем этот файл как testquery.php и переходим браузером по адресу http://your_host_name/testquery.php
Все готово) Apache запускает PHP скрипт, и тот выводит нам внутри вашей веб-страницы содержимое таблицы MySQL.

понедельник, 30 ноября 2009 г.

Linux Debian (Ubuntu) - прописываем CLASSPATH для java

Как известно, CLASSPATH - это такая переменная, в которой содержатся пути, по которым компилятор и интерпретатор JAVA пытаются найти файлы и *.class для их обработки. Рассмотрим все это на примере.
Будем хранить все наши java проекты в директории /home/username/workspace. В моем случае username заменяется на alexwinner и эта директория выглядит так: /home/alexwinner/workspace. Конечно, можно было бы перемещаться в эту директорию командой cd, создавать там файлик с кодом java, например, /home/alexwinner/workspace/blabla.java, далее выполнять
javac blabla.java
затем
java blabla
и получать результат. Но что делать в случае, когда наш класс принадлежит какому-либо пакету? Например, у нас есть 2 класса в двух файлах. Первый файл - test.java:
package for_testing;
public class test{
     public static void main(String s[]){
        aga A = new aga();
        System.out.println(A.aga);
        };
};
Второй файл - aga.java, в нем будет храниться class aga:
package for_testing;
class aga{
     String aga="aga";
}
Что же мы делаем? Мы создаем папку /home/username/workspace/for_testing, причем имя этой папки должно совпадать с именем пакета, которое задается в строчке  "package for_testing;". Далее добавляем путь к папке workspace в переменную CLASSPATH:
export CLASSPATH=$CLASSPATH:/home/username/workspace/
После этого перемещаемся в папку /home/username/workspace/for_testing и компилируем наш пакет:
javac test.java
После этого остается только запустить его. Запускать можно абсолютно из любой папки, так как путь к ней содержится в глобальной переменной CLASSPATH:
java for_testing.test
и получаем результат:
aga
Стоит заметить, что путь к этой директории будет содержаться в CLASSPATH только до конца текущего сеанса. Чтобы добавить его туда перманентно, надо выполнить следующее:
echo "export CLASSPATH=$CLASSPATH:/home/username/workspace/" >>/home/username/.bashrc

пятница, 27 ноября 2009 г.

Отключение картинок в Google Chrome - How To?

Если у вас медленный интернет или не безлимитный трафик, то, возможно, вы захотите лазать по интернету с отключенной загрузкой изображений. Я тоже столкнулся с этой проблемой и первым делом полез в настройки Google Chrome. Но, к своему удивлению, не нашёл нигде даже упоминания опции "Не загружать картинки". Как же так? Неужели в таком хорошем браузере нет такой примитивной возможности?? Отвечу вам - она есть! Для того, чтобы изображения в Chrome не открывались и не загружились, забивая ваш канал, надо в строке для запуска Chrome добавить такую строчку: "--disable-images". 
На этом видео показывается, как это сделать:





Кроме того, возможно отключить javascript, java и плагины:

Отключить выполнение JavaScript: --disable-javascript
Отключить Java: --disable-java
Отключить плагины: --disable-plugins
Отключить кэширование: --disk-cache-size=1 --media-cache-size=1

четверг, 26 ноября 2009 г.

Debian Linux - Evince - просмотровщик djvu

В этом посте постараюсь написать про то, чем просматривать книги в формате djvu под операционной системой Linux (для Debian и (K)Ubuntu), то есть про djvu-reader.
Для этой цели мной был выбран Evince. Это приложение позволяет показывать и печатать файлы PostScript (PS), Encapsulated PostScript (EPS), DJVU, DVI и Portable Document Format (PDF). Из полезных фишек стоит отметить возможность поиска, копировния в буфер обмена, переход по гиперссылкам и создание закладок. Конечно, это доступно только в тех случаях, когда формат просматриваемого документа это поддерживает.
Для установки достаточно набрать
sudo aptitude install evince
И все, можно пользоваться и просматривать свои любимые книжки в djvu :)
P.s. А также надо отметить, что еще я выбрал его потому, что при его создании использовалась библиотека GTK, то есть в моем Gnome мне не придется качать и устанавливать дополнительные библиотеки типа qt.

среда, 25 ноября 2009 г.

Как открыть архив rar в Debian (Ubuntu) Linux

В Windows - WinRar &  WinZip & 7z. А что в Linux?
Столкнулся с необходимостью распаковать архив rar, находясь в Linux Debian.
Для этого решено было использовать пакет p7zip-full. Сам по себе он предоставляет возможность распаковывать архивы ZIP, CAB, ARJ, GZIP, BZIP2, TAR, CPIO, RPM and DEB, кроме того, он умеет сжимать в формате 7z на 30-50% лучше, чем в старом формате ZIP.

вторник, 17 ноября 2009 г.

Что такое маска подсети (Network mask) и для чего она нужна.

Под маской подсети (или маской подсети - это равнозначно) понимается битовая маска, позволяющая определить шлюз подсети,  к которой принадлежит опеределенный IP-адрес. Чтобы легче понять все это, попробуем рассмотреть следующий пример:
У нас есть роутер, к которому снаружи приходит определенный пакет на адрес 192.168.1.199. Роутер хочет понять, в какую из внутренних подсетей надо его отправить. Для этого он производит побитовую коньюнкцию данного ему IP-адреса и маски подсети из таблицы маршрутизации (например, 255.255.255.192). Представим их в двоичном виде:
11000000.10101000.00000001.11000111 - IP адрес места назначения
11111111.11111111.11111111.11000000 - Маска подсети
Производим коньюнкцию и получаем:
11000000.10101000.00000001.00000000 - Адрес подсети. Переводим обратно к привычному десятеричному виду и получаем 192.168.1.192. Далее, роутер проверяет свою таблицу маршрутизации и находит адрес шлюза, на который надо отправить данный пакет , исходя из его соответствия адресу сети.
Должно так же заметить, что маску возможно записать двумя способами:
1) В десятичной форме - например, 255.255.255.0
2) В двоичной  - 11111111.11111111.11111111.0000000. Но такое утверждение не совсем правильно, так как обычно используется запись вида 192.168.1.0/24, где 192.168.1.0 - это адрес сети, а 24 - количество единиц слева направо в двоичном представлении маски.

четверг, 12 ноября 2009 г.

JavaScript - GetElementById - что это такое, и как это кушать?

GetElementById - это метод объекта document  в языке JavaScript. Он предназначен для того, чтобы возвращать ссылку на какой-то элемент (element) страницы по его id.
Например, мы хотим, чтобы пользователю в определенном месте страницы выводилось время его захода на нее. Будем выводить это время в определенном теге <div> с id 'now_time':
<div id='now_time'></div>
Теперь, чтобы обратиться к этому элементу, мы должны использовать метод GetElementById вот так:
<script type="text/javascript">
//Присваиваем переменной time_element ссылку на наш div:
var time_element = document.getElementById('now_time')
//Получаем в переменную time Значение времени

  var time = new Date()
  var hours = time.getHours()
  var minutes = time.getMinutes()
  var seconds = time.getSeconds()

  if (seconds < 10) seconds = "0" + seconds
  if (minutes < 10) minutes = "0" + minutes

  var time = hours + ":" + minutes + ":" + second

  //Выводим нашу переменную в содержимом нашего тега div,
  //используя метод InnerHTML
  time_element.innerHTML = time
</script>
Вот и все, ничего сложного:)
Разумеется, метод innerHTML  я привел только для примера. Вообще говоря, с этим элементом теперь можно проделывать все, что угодно. Подробнее о элементах, их свойствах и методах можно почитать вот здесь.

понедельник, 9 ноября 2009 г.

Как создавать и использовать функции (function) в Javascript

Приведу пример создания Javascript функции, которая по щелчку на определенной области будет изменять эту самую область.
Итак, выглядит все это дело следующим образом:
1) Реализация функции

<script type="text/javascript">
function my_function(){
var elementik=document.getElementById('output')
elementik.innerHTML='aaaa';
};
</script>
2) Кусок кода HTML, тот самый элемент, который  у нас будет изменяться:

<div id="output" onclick="my_function()">
Here we will see answer..
</div>
Собственно, это все.
Теперь разберем по порядку. 
1) Тегом <script></script> мы объявляем область, в которой содержится код javascript. function my_function(){} - Этим мы говорим о том, что объявляем функцию с именем my_function, запускающуюся без параметров (об этом свидетельствуют пустые круглые скобки. В фигурных же скобках заключены операторы функции. Первой строчкой мы получаем элемент с id = 'output', второй - заменяем содержимое этого элемента на 'aaaa'.
2) Мы описываем блок с id='output' и говорим, что при клике мышкой по нему должна выполняться функция my_function. 
Подробнее все возможности функций javascript, DOMdocument и HTML постараюсь описать в следующих постах.


Hello World на C++ под Linux Debian или Ubuntu

Кратенькая инструкция по созданию приложения "Hello World" в Linux Debian.
Передо мной вдруг встал вопрос, как программировать на С++ в консоли линукса. Как это сделать в Eclipse - понятно, а вот как в консоли, я не знал.
Но, разобравшись, я понял, что ничего сложного в этом нет.
Во первых, надо установить компилятор - программа, которая из кода C++ будет делать исполняемый файл.
Для этого в терминале/консоли пишем следующее:
1) Очень важно обновить репозиторий, а то у меня из-за этого компилятор не запускался и не установился толком:
sudo aptitude update
2) Устанавливаем компилятор:
sudo aptitude install g++
3) Пишем нашу программу, скажем в vim'е:
vim test.cpp
и вводим следующее:

#include <iostream> 
int main()
{
    std::cout << "Hello, world!" << std::endl;
}
и сохраняем.
4) Компилируем:

g++ -o exetestcpp  -Wall test.cpp
где exetest.cpp - имя исполняемого файла, test.cpp - имя файла, который мы компилируем.
5) Запускаем:
./testcpp.exe
Получаем:
Hello, world!

Вот и все. Как видите, и впрямь ничего сложного.

пятница, 6 ноября 2009 г.

Как удалить ubuntu linux.

В этом посте хочу рассказать про то, как правильно и грамотно удалить Ubuntu с компьютера.  Надеюсь, Вы удаляете Убунту не потому, что решили вообще отказаться от линукса, а потому, что вас заинтересовал какой-то другой дистрибутив, например  - Gentoo Linux.
Итак, приступим. Рассмотрим два варианта - Ubuntu работоспособна и не работоспособна.
1) Удаление работоспособной Убунту. Здесь тоже 2 варианта - а) Кроме Ubuntu  у вас установлена какая-то другая операционная система, например Windows. б) Ubuntu единственная операционная система на вашем компьютере
а) Для начала нам надо загрузиться  в нее. После чего выполняем команду
sudo gedit /boot/grub/grub.cfg
и удаляем там строки, относящиеся к Ubuntu
Перезагружаемся и видим - Ubuntu пропала из списка доступных операционных систем. Считайте, вы удалили ее. Чтобы использовать место, которое она занимала, вам надо отформатровать диск, на котором она была установлена, в файловую систему NTFS. После форматирования надо будет восстановить загрузчик Windows. Сделать это можно, например, так:
-- Запустить Windows Recovery Console (Например, так, как описано на сайте Microsoft
-- Выполнить команды fixmbr и fixboot c: .
б) Если же Ubuntu единственная система, вам достаточно установить, например, Windows на ваш компьютер.

среда, 4 ноября 2009 г.

Об установке программ для Ubuntu (а так же Kubuntu) и Debian Linux

Эта запись предназначена для тех, кто не знает, откуда скачать и как установить программы для Убунту и Дебиана. В линуксе все приложениясодержатся в пакетах. Чтобы установить пакет, вам не надо самим ничего качать с интернета или вообще делать что-либо. Для установки вам достаточно лишь запустить терминал, и в нем ввести команду
sudo aptitude install imya_packeta
Только imya_packeta необходимо заменить на название пакета, который вам нужен.
К примеру, чтобы установить OpenOffice, вам всего лишь надо набрать
sudo aptitude install openoffice
После того, как пакет установится, вы сможете пользоваться нужной вам программой.
Если вы не знаете, какой именно пакет нужен, но надо всего лишь немножко погуглить. А если есть какие-то идеи по тому, как он называется, то можно выполнить команду
sudo aptitude search idea
где idea - это то слово, которое, по вашему мнению, должно быть в имени пакета. В результате этой комманды будет выведен список пакетов, соответствующих вашей идеи и их примерное описание.
Удалить же программу можно, удалив пакет, в котором она содержится. Для этого надо в терминале набрать
sudo aptitude search packet_name
где packet_name - имя пакета, который вы хотите удалить.
Ну а если же Вы не хотите пользоваться терминалом, то для ваших целей есть Synaptic - красивый графический менеджер пакетов. Пользоваться им еще проще:)

Основные команды Bash (Linux Debian - Ubuntu)

Такая маленькая шпаргалочка по самым частоиспользуемым командам командной строки Bash :)

1. Команды, предназначенные для работы с файлами и директориями.


ls /path/ - вывести содержимое директории /path/. Например, ls /home/username/ выведет все файлы и директории, содержащиеся в папке /home/username/ . Просто ls выведет содержимое текущей директории. Так же очень часто используется ls -lh  - с такими параметрами эта команда выведет содержимое и укажет его размер в "человеческом виде" - human-readable, кроме размера так же будет указаны права доступа на файл, время его редактирования и пр.


cp /path1/file1 /path2/file2 - скопировать файл file1 из директории /path1/ в директорию /path2/ и назвать его там file2. Если не указывать file2, то он будет назван так же, если не указывать path2, то он скопируется в текущую директорию. Так же замечу, что очень использовать эту команду в виде cp /home/username/file{1,2} - она подействует точно так же, как "cp /home/username/file1 /home/username/file2". 


mv /path1/file1 /path2/file2 - переместить file1 из директории /path1/ в директорию /path2/ и назвать его там file2. При использовании аналогично команде cp.


du /path/- подсчитывает место в байтах, занятое директорией, действует рекурсивно, то есть выводит место, занятое каждой  из поддиректорий, их поддиректорий и т.д. Очень удобно использовать эту команду в виде du -sh /path/ - будет выведено только место в человеческом формате, занятое директорией /path/, без вывода поддиректорий. 


df  - выводит свободное место на всех дисках, с указанием, куда смонтированы диски. Используется чаще всего в виде df -h, тогда место выводится в человеческом виде.


2. Команды, предназначенные для чтения и редактирования текстовых файлов


cat /path/file- выводит содержимое файла /path/file на экран, после чего завершает свою работу, снова становится  доступен ввод команд.


less /path/file - просмотровщик файлов. Он запускается, отображает файл. Можно перемещаться по файлу вверх/вниз, осуществлять по нему поиск и многое, многое другое.


vim /path/file  - очень мощный, гибкий, многооконный редактор файлов. Сначала он отпугивает своей непривычностью, по сравнению, например, с блокнотом, но потом уже невозможно представить своей работы без него.


3. Прочее

ps - выводит информацию об процессах, запущенных из-под пользователя, активных на данный момент. Используется в виде ps -aux, тогда она выводит все процессы.


kill uid - послать процессу сигнал. При использовании без всяких опций посылает процессу с uid сигнал TERM. Так же часто используется kill -9 uid, тогда процессу посылается сигнал KILL, который никак не может быть заблокирован, и гарантированно процесс выключается.


echo "AAA" - выведет строку AAA на стандартный поток вывода (standart output).


grep "string" /path/file - поиск по файлам и не только. Ищет "string" в файле /path/file и выводит строку с ней на экран. В нем есть очень важные опции -i -o -с : -i - ищет строку без учета регистра, -o - выводит только "string", -с - выводит количество строк, содержащих "string". Кроме того, очень удобно использовать grep в комбинации с другими командами, например, ps aux | grep "process_name" покажет, запущен ли на данный момент процесс с именем process_name. Необходимо заметить, что в "string" могут быть регекспы.


sudo  command - запустить комманду command с правами супер-пользователя или другого пользователя. Чаще всего используется без всяких параметров, тогда осуществляется запуск с правами супер-пользователя, например, sudo less /home/another_user/secret_document.txt. Настройки, кто эту команду может использовать и как, лежат в файле /etc/sudoers


>>,> - эти команды перенаправляют поток вывода. Например, при команде echo "AAA" >> /home/username/bbb.txt в файл bbb.txt добавится строка AAA. Если же было бы >, а не >>, то тогда весь этот файл был бы заменен этой строкой. Еще пример - grep "aaa" /home/username/file1 >> /home/username/file2 - все строчки из file1, содержащие "aaa", будут добавлены в file2.



воскресенье, 1 ноября 2009 г.

Обновление Ubuntu c 9.04 (Jaunty Jackalope) до версии 9.10 (Karmic Koala)

Только что вышла новая Убунта, 9.10. Естественно, хочется обновить свою старую убунту до новой версии. Встает вопрос - как это сделать?
Все очень просто. Есть несколько способов:

1) Обновление через сеть (рекомендуемый и самый простой способ)
а. Проходим по следующему пути - система-администрирование-менеджер обновлений.
б. Нажимаем на кнопку "Проверить обновления".
в. Если предлагается установить какие-либо обновления, то устанавливаем их, затем еще раз нажимаем на проверить.
г. Появится сообщение о том, что доступен новый релиз Убунты.
(К сожалению, нет скриншота на русском)






















д. Нажимаем на кнопку Апгрейд.
е. Следуем появляющимся на экране инструкциям.




















2) Обновление по сети для Ubuntu Servers - серверов на базе Убунты.
а. Устанавливаем update-manager-core, если он еще не установлен:






sudo apt-get install update-manager-core

 б. Запускаем инструмент для обновления:






sudo do-release-upgrade

в. Следуем появляющимся на экране инструкциям.
3) Обновление с использованием диска CD / DVD
Этот метод следует использовать в том случае, если компьютер не подключен к интернету, или качество соединения не позволяет апгрейд через сеть.
а. Вставляем диск в дисковод.
б. На экране появится сообщение, уведомляющее о возможности обновиться:









в. Нажимаем на "запустить обновление" и следуем появляющимся на экране инструкциям.
г. Если это сообщение не появляется, то выполните следующую команду, нажав Alt+F2:






gksu "sh /cdrom/cdromupgrade"

Наслаждаемся Кармической Коалой)

среда, 28 октября 2009 г.

Установка браузера Chromium под Linux Debian

Как всем известно, Chrome - это такой быстрый и красивый бразуер от компании Google.


Долгое время он был только под Windows, но сейчас появился Chromium - тот же Chrome, только Limux, в том числе даже deb пакеты.

I. Установка прямо от Google (рекомендуемое)
1) Надо скачать и установить deb-пакет отсюда. Скачиваем версию под свою архитектуру, затем выполняем следующее:
cd /директория/c/пакетом/
sudo apt-get install google-chrome-unstable_current_i386.deb
где google-chrome-unstable_current_i386.deb - ваша версия пакета 
Это действие автоматически установит Хром и добавит его репозиторий к вашему списку репозиториев. То, что он добавился, можно увидеть, выполнив
less /etc/apt/sources.list
 Если вы не хотите, чтоб он туда добавлялся, перед установкой выполните
sudo touch /etc/default/google-chrome
Готово.

Если же у вас автоматически не добавится репозиторий по какой либо причине, то можно сделать это вручную:
sudo echo "deb http://dl.google.com/linux/deb/ stable non-free main" >> /etc/apt/sources.list
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -apt-get update
Первой строчкой мы добавляем репозиторий к нашем списку репозиториев, второй скачиваем ключ для этого репозитория и добавляем этот ключ к списку ключей.

P.s.вот по этой ссылке перечислены все репозитории google, в том числе для других дистрибутивов linux. В них,кроме Хромиума, есть так же Picasa for Linux.

P.p.s. Если при запуске с помощью команды google-chrome  будут выдаваться ошибки вида
Gtk: Загружаемый модуль тем не найден в module_path: "ubuntulooks"
Gtk: Загружаемый модуль тем не найден в module_path: "pixmap",
то надо выполнить следующее:
sudo aptitude install gtk2-engines-pixbuf gtk2-engines-ubuntulooks
II. Еще один способ установки, с добавлением репозиториев вручную.
1) Добавить репозиторий Chrome к нашему списку репозиториев
sudo echo "deb http://ppa.launchpad.net/chromium-daily/ppa/ubuntu intrepid main" >> /etc/apt/sources.list
В этом примере мы подключаем репозиторий, предназначенный для Ubuntu, но в Debiane это тоже работает. Наверно, есть и репозитории чисто для Debian, но я не проверял.
2) Получаем ключ электронной подписи этого репозитория-хранилища:
sudo su — gpg --keyserver subkeys.pgp.net --recv-keys 5A9BF3BB4E5E17B5 gpg --armor --export 5A9BF3BB4E5E17B5 | apt-key add —
3) Обновляем списки доступного софта:
sudo aptitude update
4) Устанавливаем сам браузер:
 sudo aptitude install chromium-browser
5) Наслаждаемся серфингом от гугл:)

III. Еще один способ.
Установка deb- или rpm-пакета от сodeweavers вручную. Для этого надо:
1) Скачать его отсюда. Там можно выбрать версию пакета под различные архитектуры.
2) Выполнить следующее:
cd /директория/c/пакетом
dpkg -i cxchromium_0.9.0-1_i386.deb
где  cxchromium_0.9.0-1_i386.deb надо заменить на вашу версию пакета.


3) Снова наслаждаемся серфингом:)

понедельник, 26 октября 2009 г.

Debian - запись в ntfs с помощью драйвера ntfs-3g

Поставив Debian, я столкнулся с проблемой невозможности записи на диски с файловой системой ntfs. А как раз на этом винчестере у меня лежит вся-вся-вся музыка, которую  я иногда слушаю и из-под windows, поэтому конвертировать файловую систему мне не хочется. Поэтому было найдено следующее решение:
1) Устанавливаем драйвер ntfs-3g 
sudo apt-get install ntfs-3g
Через зависимости он вытянет FUSE (File system in USEspace) и еще пару библиотек.
2) Монтируем
sudo mount -t ntfs-3g /dev/УСТРОЙСТВО /mnt/КУДА_МОНТИРОВАТЬ
 Если же вы хотите. чтоб монтирование было автоматическим, то надо выполнить следующую команду:
sudo echo "/dev/УСТРОЙСТВО /mnt/КУДА_МОНТИРОВАТЬ ntfs-3g defaults 0 0" >> /etc/fstab
Она добавит в файл fstab, отвечающий за монтирование устройств при загрузке, строчку в кавычках.
Вот и все. Но вообще все-таки лучше вообще отказаться от ntfs и, тем более, fat32 и использовать современный ReiserFS :)

воскресенье, 25 октября 2009 г.

Как сделать, чтобы Nautilus в Debian выглядел как в Ubuntu

На днях поставил себе дебиан. Все ставил с нуля, и, когда установил Gnome, заметил, что Nautilus - файловый менеджер - выглядит совсем не так, как я привык к нему в Ubuntu.
Не было адресной строки, не было панели Places - Места и т.д. Немножко покопавшись, нашёл следующий способ это исправить:
Идем  Правка-Параметры-Поведение и там надо поставить галочку "Всегда открывать каталоги в бразуере".
После этого остается только открыть новый каталог, и все панельки на месте)
Мелочь, а очень удобно и приятно.

пятница, 23 октября 2009 г.

Очень хорошая статья про использование svn

Вот эта статья.
А вот здесь можно почитать про стратегии использования svn.

воскресенье, 18 октября 2009 г.

Замечательнейшая статья про jQuery

Ссылка на статью
Написано подробно, с пояснениями для каждой строчки. С такой статьей намного легче становиться понять, как jQuery работает.

Server-Status Apache, или о том, как смотреть информацию о сервере Apache2

Если вы хотите иметь возможность посмотреть на то, чем Apache занят, что с него качают, какие запросы используют и много другое, то вас должно обрадовать существование модуля mod_status . Скорее всего, этот модуль уже включен в ваш Apache, если же нет, то его надо будет установить. 

Описание всего, что можно делать с помощью XMLHTTPRequest

XMLHTTPRequest.ru

Все методы, использование, создание запросов и т.п.
Все излагается простым и понятным языком, очень понравился сайт.

суббота, 17 октября 2009 г.

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

setInterval - это такая прикольная фишка, в яваскрипте являющая собой аналог крона:)
Лично для меня она важна тем, что позволяет обновлять страничку саму по себе через определенное время.
То есть, например, есть у нас функция jfl() (сокращение от just 4 lulz:)), и эта функция, допустим, берет данные из базы через xmlhttprequest и выводит их в какой-нибудь <div>.
Так вот, пишем следующее: 
setInterval(jfl,1000)
и получаем обновление наших данных раз в секунду. Очень удобно и симпатично:)

О том, как нажатием клавиш переходить на сайт и выполнять другие действия

1)  С помощью следующей конструкции осуществляется переход на ya.ru  при нажатии клавиши s:
onkeypress="if (String.fromCharCode(event.keyCode)=='s') window.location.href='http://ya.ru'"
2) А вот этой конструкцией можно узнать код нажатой клавиши:
onkeydown="alert(event.keyCode)"
 Очевидно, что этим способом на клавишу можно навесить совершенно любую команду и функцию javascript, что доставляет:)
 

Стандарт HTML 4.01

Описание стандарта

Все-все-все по HTML4 - Это должно быть очень полезно:) Отсюда я знаю, как правильно писать что в страничках:) Все теги, все их аттрибут и так далее) И не надо пользоваться всякими html-book-ами. Хотя нет, надо все-таки, так как они позволяют сравнить, что в каком стандарте поддерживается.

Стандарт DOM2-HTML

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

Хороший, годный сайт про AJAX и JavaScript

Хороший сайт

Просто пример использования javascript


Просто калькуляторчик:)



Example:
Enter an expression:




Result:


<html>
  <head>
    <script type="text/javascript">
       function compute(f) {
        if (confirm("Are you sure?"))
          f.result.value = eval(f.expr.value)
        else
          alert("Please come back again.")
      }
      </script>
  </head>
  <body>
    <strong>Example:</strong>
    <form>
      Enter an expression:
      <input type="text" name="expr" size="10" value="2+2" /><br/>
      <input type="button" value="Calculate" onClick="compute(this.form)" /><br/>
      Result:
      <input type="text" name="result" size="10" /><br/>
    </form>
  </body>
</html>

Как сделать javascript-alert

<form> <input onclick="alert('Are you sure you want to give us the deed to your house?')" type="button" value="Confirmation Alert" /> </form>

Результат будет выглядеть вот так:

суббота, 3 октября 2009 г.

Итак, здравствуйте, дорогие блоги:)

Самое первое сообщение:) Посмотрим, как все это работает.