понедельник, 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 постараюсь описать в следующих постах.