четверг, 28 января 2010 г.

Они, любимые, или изменение шрифта с помощью javascript

Решил сделать для себя успокаивательную страничку. Чтобы в любое время тяжелого рабочего дня можно было бы чуть чуть отдохнуть душой:)
В результате получилось следующее:

(.) (.)
Чтобы увидеть, как это реализовано, вы можете посмотреть исходный код этой страницы:) Здесь же я вкратце опишу принцип. Во-первых, задаем 2 функции javascript, increaseFontSize() и decreaseFontSize(), для увеличения и уменьшения размера шрифта. Они действуют так: 
var p = document.getElementsByTagName('shticka');
После этого в p у нас получается массив всех тегов типа "shticka". Конечно, вы можете получать список тегов по классу, или отдельно каждый тег по его id. Во-вторых, для каждого элемента из p находим размер шрифта и помещаем его в переменную s:
var s = parseInt(p[i].style.fontSize.replace("px",""));
После чего мы увеличиваем ее, например, на 4:
s+=4;
В-третьих, заменяем размер шрифта на увеличенное s:
p[i].style.fontSize = s+"px";
Вот и все готово:) Можно наслаждаться))

четверг, 21 января 2010 г.

Использование setTimout в javascript, или про то, как давать пользователям ссылку на скачивание с задержкой.

Представим, что вы хотите давать пользователям ссылку на скачивание файла с вашего сайта с какой-то задержкой, например, 30 секунд. Для этого нам понадобится написать всего одну строку на javascript и несколько на html:)
Итак, во-первых, выделим область на своем сайте, где будет выдаваться ссылка. Сделаем это с помощью HTML-тега 'div':
<div id='link'></div>
где link - это уникальный идентификатор этого тега, по которому будем обращаться к нему с помощью javascript. Далее мы пишем сам код javascript, заключая его в HTML тег 'script' :
<script>
setTimeout("document.getElementById('link').innerHTML='<a href='bla-bla.txt'>Ссылка</a>';",30000);
</script>


Что это означает - setTimout - это javascript-функция, выполняющая команды, переданные ей в первом аргументе по истечении времени, заданного во втором аргументе (в миллисекундах). document.getElementById('link') - обращаемся к элементу  документа с идентификатором, равным 'link'. Подробнее про использование getElementById вы можете почитать здесь и тут. innerHTML - переменная элемента, отвечающая за все то, что находится внутри тега. То есть в итоге, после выполнения скрипта, наш тег будет выглядеть так:
<div id='link'><a href='bla-bla.txt'>Ссылка</a></div>
Вот и всё:)

пятница, 8 января 2010 г.

Еще один бесплатный аналог lastfm

Вот и еще один бесплатный и качественный аналог lastfm - GrooveShark


Сделан он на флеше, причем дизайн невероятно удобный и интуитивно понятный. Главное предназначение - это онлайн плеер. Музыки много, в хорошем качестве. Можно добавлять ее в свою библиотку, ставить сердечки и смайлики - нравится или не нравится. В зависимости от этого в режиме радио вам будет предлагаться музыка, которая, скорее всего, вам понравится.
Интересная фишка - создание виджетов для вставки определенных песен или всего плейлиста на ваш сайт или блог. Один из них вы можете наблюдать в начале этого поста.
Кстати, для Chrome есть расширение, которое позволяет управлять музыкой, не переходя на вкладку с ГрувШарком.
В общем, слушаю с большим удовольствием. Единственное, чего нет, в отличие от LastFM - это скробблера для своего плеера.

четверг, 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Б дергает Надю за косу?
Не за этим ли отрок Павел пишет на стене
«Оля - сиська»?
Не оттого ли говорят «Бьет, значит любит»?

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

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

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

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