2011-11-15
Web-версия Evernote без рекламы
Для тех, кто пользуется сервисом облачных заметок Evernote (evernote.com) есть два варианта: бесплатный аккаунт и про-версия с регулярными взносами. Понятно, что платная предоставляет определенные плюшки, но меня они совершенно не убеждают расставаться с кровно заработанными, да и пользуюсь этим сервисом не настолько активно. К тому-же, для Linux существует только веб-версия.
Как оказалось, это не всегда плохо! Как ни крути, а в интернете шила в мешке не утаить, то есть код всегда на виду. Поэтому, для тех, кто пользуется, но не хочет смотреть рекламу, сей опус.
Устанавливаем, если не установлено, и регистрируемся:
Запускаем, логинимся, наблюдаем рекламу. Правой кнопочкой на нее кликаем, и видим класс элемента с рекламой, запоминаем:
Отправляемся на WebStore за дополнением к браузеру, которое даст нам возможность выполнять свой JavaScript код на избранных страницах:
Лезем в настройки этого плагина:
И вписываем для страницы веб-версии такой вот код (наверно, можно и получше, но так зато работает):
Сохраняем, перезаходим в веб-версию. Красота!
Чтобы скопировать, приведу код в текстовом виде:
var i=setInterval(function(){
var el=$('div.GHOV4EUDAB').parent();
if(el){
el.prev().css('bottom','0px').prev().css('bottom','35px');
el.remove();
clearInterval(i);
}
},1000);
2011-09-13
С WWW => без WWW
Ситуация: на сайте есть отличия в отображении контента в зависимости от того, какой адрес в адресной строке браузера.
Задача: нужно, чтобы каждый пришедший по ссылке www.site.ru попадал на site.ru, т.е. без www.
Решение: в файл .htaccess прописываем правило:
RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [L,R=301]
Задача: нужно, чтобы каждый пришедший по ссылке www.site.ru попадал на site.ru, т.е. без www.
Решение: в файл .htaccess прописываем правило:
RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [L,R=301]
2011-08-30
MySQL : получение строк в заданном порядке
Да, понадобилось, и почему-то не сразу понял как, пришлось гуглить. Нужно сортировать строки не через ORDER BY и не абы как, а строго в заданном порядке. Оказывается, можно, и в документации об этом написано, так что "курите маны", как говорится.
SELECT id,title,description FROM article WHERE id in (1,2,3,4,5) ORDER BY find_in_set(id,'1,2,3,4,5');
SELECT id,title,description FROM article WHERE id in (1,2,3,4,5) ORDER BY find_in_set(id,'1,2,3,4,5');
2011-08-26
GIMP и ошибка при попытке создать Slice
Вообще-то я очень редко использую эту возможность. Но вот недавно стал делать для сайта а-ля модальное окно с тенью вокруг. Нарисовал в GIMP квадрат с тенью, стал резать - а вот шиш вам, ошибка.
Решается она так. Открываем с правами рута файл
gksudo gedit /usr/lib/gimp/2.0/plug-ins/py-slice.py
Находим строку, начинающуюся с "temp_image.crop" и меняем ее так:
temp_image.crop(int(right - left), int(bottom - top), int(left), int(top))
Ошибка исчезла. Она возникала в связи с передачей функции параметров типа float, в то время как она ожидала тип int.
Всё работает.
P.S. Окно кстати я доделал. Формируется на лету с помощью JavaScript, получилось вот такое:
Решается она так. Открываем с правами рута файл
gksudo gedit /usr/lib/gimp/2.0/plug-ins/py-slice.py
Находим строку, начинающуюся с "temp_image.crop" и меняем ее так:
temp_image.crop(int(right - left), int(bottom - top), int(left), int(top))
Ошибка исчезла. Она возникала в связи с передачей функции параметров типа float, в то время как она ожидала тип int.
Всё работает.
P.S. Окно кстати я доделал. Формируется на лету с помощью JavaScript, получилось вот такое:
2011-06-22
На заметку о Gmail
Несколько приятных возможностей строки поиска писем в почте Gmail
Непрочтенные письма, несколько вариантов:
is:unread
label:unread
l:unread
l:^u
Письма от адресата 'tim':
from:tim
Письма, помеченные звездочкой:
l:^t
Письма в корзине:
l:^k
Письма с темой 'hi':
subject:hi
Эти параметры поиска можно комбинировать.
Непрочтенные письма, несколько вариантов:
is:unread
label:unread
l:unread
l:^u
Письма от адресата 'tim':
from:tim
Письма, помеченные звездочкой:
l:^t
Письма в корзине:
l:^k
Письма с темой 'hi':
subject:hi
Эти параметры поиска можно комбинировать.
2011-06-10
Приложения для Android. Мой выбор. IMHO
Bible YouVersion : Библия с кучей переводов. Есть Синодальный. Бесплатная, конечно.
PowerAMP : Лучшие в мире аудиоплеер. Эквалайзер, проигрывание каталогами или по ID3-тегам, плейлисты. Есть платная версия.
Android Audio Profile : Управление профилями телефона, есть виджет. В бесплатной версии - только три профиля и реклама. В платной - много профилей и автоматическое переключение по плану.
MortPlayer Audiobooks : Чтение аудиокниг с закладками. Бесплатно.
mVideoPlayer : Проигрывание видеофайлов, поддержка субтитров многих видов.
Metronome : Метроном, как ни странно )). Юзабельна только платная версия.
Smart Keyboard : Альтернативная клавиатура. Умная, настраиваемая, со скинами, умеет брать текст для T9 из контактов. Платная.
Extended Controls : набор виджетов для управления системными настройками. Платная.
Dropbox : Доступ к своему аккаунту. Не закачивает все на телефон, только по требованию. Бесплатно.
FBReader + FBReader LitRes : Чтение электронных книг, доступ к онлайн-хранилищам, в т.ч. платным. Бесплатная.
ColorNote Notepad Notes : Заметки с виджетами, просто текст или списки задач. Несколько способов уведомления. Бесплатная.
TweetDeck : Удобное управление аккаунтами соцсетей, таких как Twitter, Faceboot, Flikr. Бесплатная.
Навител Навигатор : Опять же, навигатор. Сам по себе бесплатный, но без лицензии и карт - пустой.
ASTRO File Manager : Файл-менеджер, есть встроенный киллер процессов. бесплатный.
Manga Watcher : Лучшая для чтения комиксов. Есть платная версия без рекламы.
FruitNinja : Веселая игра - рубим фрукты вместо живых существ. Платная.
Архимаг : Archmage, кто играл в Might & Magic - поймет. Есть игра по сети.
PowerAMP : Лучшие в мире аудиоплеер. Эквалайзер, проигрывание каталогами или по ID3-тегам, плейлисты. Есть платная версия.
Android Audio Profile : Управление профилями телефона, есть виджет. В бесплатной версии - только три профиля и реклама. В платной - много профилей и автоматическое переключение по плану.
MortPlayer Audiobooks : Чтение аудиокниг с закладками. Бесплатно.
mVideoPlayer : Проигрывание видеофайлов, поддержка субтитров многих видов.
Metronome : Метроном, как ни странно )). Юзабельна только платная версия.
Smart Keyboard : Альтернативная клавиатура. Умная, настраиваемая, со скинами, умеет брать текст для T9 из контактов. Платная.
Extended Controls : набор виджетов для управления системными настройками. Платная.
Dropbox : Доступ к своему аккаунту. Не закачивает все на телефон, только по требованию. Бесплатно.
FBReader + FBReader LitRes : Чтение электронных книг, доступ к онлайн-хранилищам, в т.ч. платным. Бесплатная.
ColorNote Notepad Notes : Заметки с виджетами, просто текст или списки задач. Несколько способов уведомления. Бесплатная.
TweetDeck : Удобное управление аккаунтами соцсетей, таких как Twitter, Faceboot, Flikr. Бесплатная.
Навител Навигатор : Опять же, навигатор. Сам по себе бесплатный, но без лицензии и карт - пустой.
ASTRO File Manager : Файл-менеджер, есть встроенный киллер процессов. бесплатный.
Manga Watcher : Лучшая для чтения комиксов. Есть платная версия без рекламы.
FruitNinja : Веселая игра - рубим фрукты вместо живых существ. Платная.
Архимаг : Archmage, кто играл в Might & Magic - поймет. Есть игра по сети.
2011-05-26
Привести дела в порядок ))
Именно эту задачу предлагает решить Getting Things GNOME - что-ж, планировать свои дела в нем действительно удобно. Он похож на Tomboy, только написан на Python+GTK, и позволяет создавать записи о задачах и подзадачах, распределять мероприятия по датам, задавая длительность. Отличный хелп в комплекте.
sudo apt-get install gtg
А вот о том, чтобы держать актуальным этот список в нескольких местах одновременно - разработчик позаботился явно недостаточно. Присутствует плагин для синхронизации с RTM (Remember The Milk), но стабильности ему точно недостает. Поэтому решаем этот вопрос самостоятельно. А именно - используя Dropbox.
На одном компе, например, так:
ln -s ~/.local/share/gtg/ ~/Dropbox/gtg
А на остальных так:
mkdir ~/Dropbox/gtg
ln -s ~/Dropbox/gtg/ ~/.local/share/gtg
Только один момент: не включать GTG до того, как Dropbox синхронизирует файлы.
И все дела ^_^
sudo apt-get install gtg
А вот о том, чтобы держать актуальным этот список в нескольких местах одновременно - разработчик позаботился явно недостаточно. Присутствует плагин для синхронизации с RTM (Remember The Milk), но стабильности ему точно недостает. Поэтому решаем этот вопрос самостоятельно. А именно - используя Dropbox.
Вы все еще не пользуетесь этим замечательным сервисом? ТогдаИтак, все, что нужно - это сделать пару символьных ссылок.мы идем к вамдобро пожаловать на сайт разработчика и проникаться по просветления. Ubuntu One все еще далек от юзабельности (было несколько неприятных моментов). Dropbox же ни разу не подвел.
На одном компе, например, так:
ln -s ~/.local/share/gtg/ ~/Dropbox/gtg
А на остальных так:
mkdir ~/Dropbox/gtg
ln -s ~/Dropbox/gtg/ ~/.local/share/gtg
Только один момент: не включать GTG до того, как Dropbox синхронизирует файлы.
И все дела ^_^
Менеджер буфера обмена Parcellite
Очень удобная штука. Позволяет хранить множество версий содержимого буфера обмена. Например, скопировав текст, вставил его, и потом забил буфер другими данными. А потом понадобился этот текст. Снова искать, где он есть, и копировать?
Нет, конечно. Просто устанавливаю Parcellite (на текущий момент версии 0.9.3-1) и радуюсь туче ячеек буфера обмена.
sudo apt-get install parcellite
Нет, конечно. Просто устанавливаю Parcellite (на текущий момент версии 0.9.3-1) и радуюсь туче ячеек буфера обмена.
sudo apt-get install parcellite
2011-05-16
DeaDBeeF
Вышел финальный релиз аудиоплеера DeaDBeeF 0.5.0 - аналог Foobar2000 в Windows.
Как пишет разработчик - "... after 2 betas, 1 rc and 6 months of development :)"
Устанавливаем:
sudo add-apt-repository ppa:alexey-smirnov/deadbeef
sudo apt-get update
sudo apt-get install deadbeef
Новые плагины, нововведения и вообще молодец товарищ Алексей Яковенко. Подробнее об этом написано здесь.
P.S. Для LinuxMint: чтобы репозитарий заработал, необходимо поправить имя дистрибутива. В 11 версии оно будет 'katya', а значит в файле
/etc/apt/sources.list.d/alexey-smirnov-deadbeef-katya.list
нужно заменить слово katya на natty (для 11.04). В итоге там будет так:
deb http://ppa.launchpad.net/alexey-smirnov/deadbeef/ubuntu natty main
deb-src http://ppa.launchpad.net/alexey-smirnov/deadbeef/ubuntu natty main
Как пишет разработчик - "... after 2 betas, 1 rc and 6 months of development :)"
Устанавливаем:
sudo add-apt-repository ppa:alexey-smirnov/deadbeef
sudo apt-get update
sudo apt-get install deadbeef
Новые плагины, нововведения и вообще молодец товарищ Алексей Яковенко. Подробнее об этом написано здесь.
P.S. Для LinuxMint: чтобы репозитарий заработал, необходимо поправить имя дистрибутива. В 11 версии оно будет 'katya', а значит в файле
/etc/apt/sources.list.d/alexey-smirnov-deadbeef-katya.list
нужно заменить слово katya на natty (для 11.04). В итоге там будет так:
deb http://ppa.launchpad.net/alexey-smirnov/deadbeef/ubuntu natty main
deb-src http://ppa.launchpad.net/alexey-smirnov/deadbeef/ubuntu natty main
2011-04-19
PHP и временные зоны
Заметка для себя, чтобы не забыть.
Используя PHP столкнулся с такой закавыкой: функция date() выдает время по гринвичу. Вероятно, на сервере в настройках PHP не прописана временная зона. Раньше всегда было настроено на место размещения сервера, т.е. как правило, Москва, а тут - нет.
В результате выдает время на 4 часа меньше, чем надо. Решается использованием стандартной функции с параметром:
date_default_timezone_set('Europe/Moscow');
Полный список временных зон тут.
Используя PHP столкнулся с такой закавыкой: функция date() выдает время по гринвичу. Вероятно, на сервере в настройках PHP не прописана временная зона. Раньше всегда было настроено на место размещения сервера, т.е. как правило, Москва, а тут - нет.
В результате выдает время на 4 часа меньше, чем надо. Решается использованием стандартной функции с параметром:
date_default_timezone_set('Europe/Moscow');
Полный список временных зон тут.
2011-04-11
Библейская программа
О программе
Возможности: просмотр текстов, поиск, как обычный так и путем выделения слова и нажатия кнопки с буквой "f". Получения списка параллельных мест при клике мышью на номер стиха в основном окне. Получение текста главы по клику мышью на название книги в поле результатов поиска. Сохранение книги, главы и фразы поиска текущего сеанса.
Установка
Скачайте deb-пакет (версия 0.3.2). Версия 0.3.3 - здесь.
Текущая версия для Ubuntu11.04 - 0.3.3. В нее включены Синодальный перевод с апокрифами и перевод короля Иакова без апокрифов. Внесены незначительные, но все-же изменения.
P.S. от 6 мая 2012 г. В Ubuntu 12.04, и вообще в Unity - ругается при установке, в меню не появляется, запускается из консоли, но всё-же работает. Приношу извинения, что не развиваю.
Возможности: просмотр текстов, поиск, как обычный так и путем выделения слова и нажатия кнопки с буквой "f". Получения списка параллельных мест при клике мышью на номер стиха в основном окне. Получение текста главы по клику мышью на название книги в поле результатов поиска. Сохранение книги, главы и фразы поиска текущего сеанса.
Установка
Скачайте deb-пакет (версия 0.3.2). Версия 0.3.3 - здесь.
Текущая версия для Ubuntu11.04 - 0.3.3. В нее включены Синодальный перевод с апокрифами и перевод короля Иакова без апокрифов. Внесены незначительные, но все-же изменения.
P.S. от 6 мая 2012 г. В Ubuntu 12.04, и вообще в Unity - ругается при установке, в меню не появляется, запускается из консоли, но всё-же работает. Приношу извинения, что не развиваю.
2011-04-01
VIM: убрать подчеркивание в html-тегах ссылок
Меня это немного достало. Если описывать ссылку на нескольких строках, то все они будут подчеркнуты. Вот как можно убрать это (найдено здесь):
1) Создать каталог для синтаксиса, если еще не создан
mkdir -p ~/.vim/syntax2) Скопировать файл синтаксиса html по умолчанию в этот каталог
cp /usr/share/vim/vim72/syntax/html.vim ~/.vim/syntax/
3) Открыть файл для редактирования
vim ~/.vim/syntax/html.vim
4) Найти в нем строку
HtmlHiLink htmlLink Underlined
5) Закомментировать ее (мне не помогло) или изменить Underlined на что-то другое, например htmlBold.
Перезапускаем VIM - проблема решена.
2011-03-28
Использование Python для управления документами OpenOffice.org
# Установка библиотеки uno для python
sudo apt-get install python-uno
Запуск OpenOffice с возможностью им управлять, т.е. в "слушающем" режиме. Несколько опций:
-writer : чтобы сразу запустился Writer
-headless : если хотим запустить без GUI
sudo apt-get install python-uno
Запуск OpenOffice с возможностью им управлять, т.е. в "слушающем" режиме. Несколько опций:
-writer : чтобы сразу запустился Writer
-headless : если хотим запустить без GUI
Остальные по вкусу: -nologo -nofirststartwizard -norestore, понятно по названию.
soffice "-accept=socket,host=localhost,port=2002;urp;" -writer -headless
Если OOo запущен в режиме без GUI, выключить его можно так:
killall soffice.bin
Начинаем наш код.
import uno
local = uno.getComponentContext()
resolver = local.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", local)
context = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
# Загрузка сервисов
desktop = context.ServiceManager.createInstanceWithContext("com.sun.star.frame.Desktop", context)
# Получить текущий документ
document = desktop.getCurrentComponent()
# Создать новый документ
document = desktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, ())
# Загрузить существующий документ
document = desktop.loadComponentFromURL("file:///home/lucas/myfile.odt" ,"_blank", 0, ())
# Установить курсор
cursor = document.Text.createTextCursor()
# Добавим некий текст
document.Text.insertString(cursor, "Этот текст был добавлен в OOo путем использования python и пакета uno.", 0)
# Переносы строк: \n, отступы: \t
document.Text.insertString(cursor, "\n\n\tНовый параграф.", 0)
# Получаем свойство символа - кегль шрифта
cursor.getPropertyValue("CharHeight")
# Изменяем свойства символов: кегль и имя шрифта, его жирность
cursor.setPropertyValue("CharHeight", 20)
cursor.setPropertyValue("CharFontName", "Arial")
cursor.setPropertyValue("CharWeight", 150)
# Создаем таблицу шириной 2 колонки и высотой в 6 строк
mytable = document.createInstance("com.sun.star.text.TextTable")
mytable.initialize(6,2)
soffice "-accept=socket,host=localhost,port=2002;urp;" -writer -headless
Если OOo запущен в режиме без GUI, выключить его можно так:
killall soffice.bin
Начинаем наш код.
import uno
local = uno.getComponentContext()
resolver = local.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", local)
context = resolver.resolve("uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext")
# Загрузка сервисов
desktop = context.ServiceManager.createInstanceWithContext("com.sun.star.frame.Desktop", context)
# Получить текущий документ
document = desktop.getCurrentComponent()
# Создать новый документ
document = desktop.loadComponentFromURL("private:factory/swriter", "_blank", 0, ())
# Загрузить существующий документ
document = desktop.loadComponentFromURL("file:///home/lucas/myfile.odt" ,"_blank", 0, ())
# Установить курсор
cursor = document.Text.createTextCursor()
# Добавим некий текст
document.Text.insertString(cursor, "Этот текст был добавлен в OOo путем использования python и пакета uno.", 0)
# Переносы строк: \n, отступы: \t
document.Text.insertString(cursor, "\n\n\tНовый параграф.", 0)
# Получаем свойство символа - кегль шрифта
cursor.getPropertyValue("CharHeight")
# Изменяем свойства символов: кегль и имя шрифта, его жирность
cursor.setPropertyValue("CharHeight", 20)
cursor.setPropertyValue("CharFontName", "Arial")
cursor.setPropertyValue("CharWeight", 150)
# Создаем таблицу шириной 2 колонки и высотой в 6 строк
mytable = document.createInstance("com.sun.star.text.TextTable")
mytable.initialize(6,2)
# Вставляем таблицу в страницу
document.Text.insertTextContent(cursor, mytable, 0)
# Заполняем несколько полей
mytable.getCellByName("A1").setString("Полюшко-поле A1")
mytable.getCellByName("B2").setString("Поле, русское поле B2")
mytable.getCellByPosition(1,4).setString('А можно и так')
# Сохраняем
document.store()
# Сохраняем как новый(другой) файл
document.storeAsURL("file:///home/lucas/myfile2.odt",())
# Сохраняем как копию, и остаемся в том-же документе
document.storeToURL("file:///home/lucas/myfile2.odt",())
# Завершаем работу с документом
document.dispose()
# Поиск и замена. Работаем со строками
import string
# Создаем дескриптор поиска
search = document.createSearchDescriptor()
# Что ищем?
search.SearchString = u"Люк"
# Ищем первое найденное
found = document.findFirst( search )
# заменяем найденное и ищем дальше, пока не закончатся искомые фразы
while found:
found.String = string.replace( found.String, u"Люк", u"Люк, я твой отец" )
found = document.findNext( found.End, search)
# Некоторые возможности поиска: чувствительность к регистру или поиск слов
search.SearchCaseSensitive = True
search.SearchWords = True
# Или поиск по регулярным выражениям
search.SearchRegularExpression = True
search.SearchString = "\\<(k|s|v|z|o|u|i|a) "
# Экспорт в PDF. Придется импортировать соответствующую библиотеку
from com.sun.star.beans import PropertyValue
property = (
PropertyValue( "FilterName" , 0, "writer_pdf_Export" , 0 ),
)
document.storeToURL("file:///home/lucas/myfile2.pdf",property)
# Импорт разрывов шаблона страницы, вставка разрыва в конец документа и импорт еще одного документа из файла
from com.sun.star.style.BreakType import PAGE_BEFORE, PAGE_AFTER
cursor.gotoEnd(False)
cursor.BreakType = PAGE_BEFORE
cursor.insertDocumentFromURL("file:///home/lucas/temp.odt", ())
Оригинал статьи на английском (немного добавил от себя и кое-что изменил)
document.Text.insertTextContent(cursor, mytable, 0)
# Заполняем несколько полей
mytable.getCellByName("A1").setString("Полюшко-поле A1")
mytable.getCellByName("B2").setString("Поле, русское поле B2")
mytable.getCellByPosition(1,4).setString('А можно и так')
# Сохраняем
document.store()
# Сохраняем как новый(другой) файл
document.storeAsURL("file:///home/lucas/myfile2.odt",())
# Сохраняем как копию, и остаемся в том-же документе
document.storeToURL("file:///home/lucas/myfile2.odt",())
# Завершаем работу с документом
document.dispose()
# Поиск и замена. Работаем со строками
import string
# Создаем дескриптор поиска
search = document.createSearchDescriptor()
# Что ищем?
search.SearchString = u"Люк"
# Ищем первое найденное
found = document.findFirst( search )
# заменяем найденное и ищем дальше, пока не закончатся искомые фразы
while found:
found.String = string.replace( found.String, u"Люк", u"Люк, я твой отец" )
found = document.findNext( found.End, search)
# Некоторые возможности поиска: чувствительность к регистру или поиск слов
search.SearchCaseSensitive = True
search.SearchWords = True
# Или поиск по регулярным выражениям
search.SearchRegularExpression = True
search.SearchString = "\\<(k|s|v|z|o|u|i|a) "
# Экспорт в PDF. Придется импортировать соответствующую библиотеку
from com.sun.star.beans import PropertyValue
property = (
PropertyValue( "FilterName" , 0, "writer_pdf_Export" , 0 ),
)
document.storeToURL("file:///home/lucas/myfile2.pdf",property)
# Импорт разрывов шаблона страницы, вставка разрыва в конец документа и импорт еще одного документа из файла
from com.sun.star.style.BreakType import PAGE_BEFORE, PAGE_AFTER
cursor.gotoEnd(False)
cursor.BreakType = PAGE_BEFORE
cursor.insertDocumentFromURL("file:///home/lucas/temp.odt", ())
Оригинал статьи на английском (немного добавил от себя и кое-что изменил)
2011-03-21
Глюк IE с текстом в абсолютно спозиционированном элементе
Дано:
<div style='position:absolute; top:200px;left:100px; width:500px;'>Длинный-предлинный текст, абзаца эдак на три.</div>
Наблюдаем глюк: только в IE (проверялось в 7 и 8 версии) текст не переносится на другую строку, а растягивает div за пределы страницы.
Решение: обернуть div таблицей.
<table><tr><td><div style='position:absolute; top:200px;left:100px; width:500px;'>Длинный предлинный текст, абзаца эдак на три.</div></td></tr></table>
<div style='position:absolute; top:200px;left:100px; width:500px;'>Длинный-предлинный текст, абзаца эдак на три.</div>
Наблюдаем глюк: только в IE (проверялось в 7 и 8 версии) текст не переносится на другую строку, а растягивает div за пределы страницы.
Решение: обернуть div таблицей.
<table><tr><td><div style='position:absolute; top:200px;left:100px; width:500px;'>Длинный предлинный текст, абзаца эдак на три.</div></td></tr></table>
2011-02-22
Еще немного об оформлении
Почти два месяца ничего не писал в блог. Некогда и нечего было. Недавно увидел пример оформления, который мне понравился, и продолжая предыдущий пост, добавлю кое-что.
Во-первых, это nautilus-elementary. Добавляем источник пакетов в /etc/apt/sources.list:
deb http://ppa.launchpad.net/am-monkeyd/nautilus-elementary-ppa/ubuntu lucid main
и обновляем nautilus
Чрезвычайно настраиваемая тема - Orta:
http://skiesofazel.deviantart.com/art/Orta-184118297
И красивая рамка окошек для Emerald:
http://gnome-look.org/content/show.php/eLeKaJota?content=137640
С учетом предыдущего поста, получилось вот так:
Во-первых, это nautilus-elementary. Добавляем источник пакетов в /etc/apt/sources.list:
deb http://ppa.launchpad.net/am-monkeyd/nautilus-elementary-ppa/ubuntu lucid main
и обновляем nautilus
Чрезвычайно настраиваемая тема - Orta:
http://skiesofazel.deviantart.com/art/Orta-184118297
И красивая рамка окошек для Emerald:
http://gnome-look.org/content/show.php/eLeKaJota?content=137640
С учетом предыдущего поста, получилось вот так:
Подписаться на:
Сообщения (Atom)