Поддержка HTML5 и CSS3 в Opera — это шутка? Неужели так сложно нормально повернуть input, textarea и button?
Все любят круги (в основном script.aculo.us). Но у этих кругов ширина и высота указана в пикселях. Че за говно?
Думал, что нельзя сделать круги без указания размеров в пикселях? Можно.
Мы будем использовать небольшой jQuery-трюк: будем устанавливать ширину, равную высоте.
wh = $('.circle').css('height'); $('.circle').css({ width: wh });
И CSS:
.circle { text-align: center; border-radius: 9000em; -webkit-border-radius: 9000em; -moz-border-radius: 9000em; font: normal normal bold 4em Helvetica; background: black; color: lime; }
Тестируем здесь. Отлично, можно увеличивать и уменьшать — все работает при разных размерах шрифта.
Но остались две проблемы: изменение размера шрифта на лету и увеличение/уменьшение перед загрузкой страницы. Первую проблему решим замечательным плагином jQEm. Засунем трюк в функцию и будем вызывать ее по событию emchange.
function yaycircles () { wh = $('.circle').css('height'); $('.circle').css({ width: wh }); } yaycircles(); $('.circle').bind('emchange', function () { yaycircles(); });
Теперь все круто. Я не знаю, как справиться со второй проблемой, но не думаю, что кто-то увеличивает перед открытием страницы.
P.S. К сожалению, jQEm срабатывает при сильном уменьшении страницы (когда еще видны маленькие несглаженные шрифты). Виноват браузер, да :) Поэтому круг не круглый при таком уменьшении на втором примере. Но вы знаете тех, кто на лету меняет размер шрифта? Поэтому я советую использовать первый пример.
Я тут недавно поставил на нетбук Ubuntu 10.04 beta, все красиво. Решил еще настроить Conky — это такой системный монитор, который кроме собственно мониторинга системы умеет более 9000 вещей.
Например, получать информацию о герое из Godville — этот скрипт я написал еще больше года назад. Так, для развлечения. А для познания можно использовать Krosswordr API.
Конфиг и скрипты лежат в неправильной VCS. Если нужно больше информации из Годвилля, можно заменить godville.xslt на этот.
CSS-сетки (CSS grid systems) - это же фиксированная разметка! Размеры элементов в пикселях - как 2002! Я не могу увеличить страницу и просто читать - нужно прокручивать. Не могу уменьшить окно и просто читать - нужно прокручивать. Зачем?
Я представляю вам альтернативу... Invisible CSS framework!
Я пользовался масштабируемой версткой довольно долго, и решил отделить основу. Не повторяй себя (Don't Repeat Yourself), да?
<aside class="sideleft"> My cool sidebar. </aside> <section class="withls"> <!-- that means "with left sidebar" --> Lorem ipsum dolor sit amet... </section>
В Invisible есть сброс (CSS reset), настройки шрифтов, основные margin'ы, 50/50 и стандартный 2/3-колоночный макет (layout не совсем «макет», но слова лучше я не нашел. разметка?). Он модульный и написан на CleverCSS, а собирается pake.
Качать здесь, пользуйтесь на здоровье - public domain. А еще можно забрать исходники из Bazaar'а ( bzr branch lp:invisible ) и собрать самому - например, с меньшим количеством модулей (для сборки нужны clevercss и cssutils).
P.S. по поводу того, что текст выглядит как перевод - он и есть перевод. я сначала пишу на английском.Я таки изобрел make. Да, тот самый, которым собирают программы. Make, cmake, rake, а теперь Pake.
Фишка в том, что Pakefile'ы пишутся на YAML. Это действительно простой и приятный язык, не зря же Google использует его для описания приложений в App Engine (:
Например, очень простой Pakefile:
default:
python:
print 'Hell-o-world'
shell:
uname -aИли очень сложный:
vars:
flags: -a
uname:
shell:
uname %{flags}
default:
target: unameДокументация расположена на pake.myfreeweb.ru, сам проект на Launchpad, а всякие пузомерки - на Ohloh. bzr branch lp:pake и вперед ;)
Ох, кажется, я сделал свой первый jQuery-плагин =)
Он называется JACG: Just Another Corners&Gradients (просто еще одни углы и градиенты), и он просто работает.
Фишка в том, что он старается быть как можно более нативным и использовать самые лучшие технологии, доступные на запущенном браузере (например, в Opera <= 10.10 используется SVG-градиент и на нем же уголки, а в 10.50 - SVG-градиент и CSS-уголки. CSS-уголки и градиенты на Firefox >= 3.6, CSS-уголки и градиенты картинкой - тоже мое приложение - на 3.5 и ниже). Код появился в моих личных проектах. Когда я стал его использовать сразу в двух, решил сделать плагином, а не копипастом.
Оно все размещено в проекте на Launchpad - код, багтрекер и все такое. А еще есть страничка на jQuery, там можно скачать плагин и проголосовать за него. Но качать лучше Bazaar'ом, чтобы потом обновлять удобно было и вообще, VCS же. bzr branch lp:jacg
Не секрет, что в разработке Django-приложений нет ничего особенного. Точнее, не требуется ничего лишнего. Django - это Python. Значит, нужен текстовый редактор и консоль. И конечно же браузер - но это уже для тестирования. Но для того, чтобы писать было удобно, нужно IDE. Или продвинутый редактор. Emacs - очень продвинутый редактор ;)
Вот так выглядит мой Emacs - ничего лишнего, все нужное. Проверка синтаксиса делается с помощью Flymake + pyflakes (или pylint, pychecker), но не это главное. То, о чем я хочу рассказать - это сниппеты. Как? Легко.
Yasnippet - это оно. Ставить надо полную версию, а не bundle, который в одном файле. Но там же нету сниппетов для Django! Не вопрос - я все сделал. bzr branch lp:django-mode, читаем README, делаем и наслаждаемся. В комплекте еще режим для шаблонов и функции для вставки i18n тегов (C-c C-t в питоновом коде "_(%выделенное%)", в html-шаблонах "{% trans "%выделенное%" %}").
А можно еще скачать мой конфиг (Yasnippet в комплекте же). Короче, чтобы меньше всего париться и получить готовый IDE:
sudo port install tidy # или apt-get, если на Debian/Ubuntu. У меня OS X ;) sudo pip install pyflakes # easy_install - уныл, но тоже работает cd ~/Dropbox bzr branch lp:django-mode bzr branch lp:~lol2fast4u/+junk/emacs-dir emacs echo "(add-to-list 'load-path \"~/Dropbox/emacs\") (load-file \"~/Dropbox/emacs/config.el\")" > ~/.emacs
Первую команду, кстати, можно пропустить.
Допустим, нам нужно использовать один скрипт для нескольких страниц (а это делать нужно, ибо экономия HTTP-запросов. по поводу того, что "качать только что надо сейчас" - ну все равно же кеш). Как определить разные действия в зависимости он страниц?
Да очень просто.
html:<head> ... <meta name="internal" content="mainpage" /> </head>
if (window.rel == 'mainpage') { $('#sidebar').removeClass('noJs').slideDown(); } else if (window.rel == 'comments') { $('.comment').addClass('js'); }
Но самая фишка в том, что умеют шаблоны Django ;) в index.djhtml:
<head> ... <meta name="internal" content="{% block pagerel %}unknown{% endblock %}" /> {# For Javascripts, etc. #} </head>
И в наследующих шаблонах ставим все как надо. Например, post.djhtml: {% block pagerel %}blogpost{% endblock %}
Вот и все!Git - одна из самых известных распределенных систем контроля версий (DVCS), изначально созданная для разработчиков ядра Linux. Из-за последнего, она работает на патчах. Патчи, патчи, везде патчи.
В централизованных VCS каждый contributor (как бы перевести нормально??) присылал патч одному из committer'ов, который применял его вручную. Git создавался для облегчения всего этого.
А DVCS создавались для борьбы с патчами. Именно так, да. Любой пользователь создает свою ветку или форк, работает в ней как хочет, а когда все готово - создает merge directive (или pull request), то есть просит объединить ветки. Скажете, что в Git/GitHub так можно? Да, через жопу, но можно, но пользователи Git все равно патчи патчат.
Но самое главное, что бесит в Git - он работает только по одной модели (shared working tree, "общее рабочее дерево"). То есть в папке есть одно рабочее дерево и можно переключаться между ветками командой switch. Такая модель использования придает скорости и занимает меньше места на диске. Но в то же время она абсолютно неудобна в использовании. Вывод? Только для больших проектов.
В Mercurial то же самое, но слегка проще. А вот в Bazaar такой способ работы сильно опционален. rebase - вообще плагин (: Directory is a branch - это очень правильная идеология. Потому что с ее помощью можно сделать то же shared WT, только каждую ветку можно будет просто посмотреть файловым менеджером (не залезая в .скрытые_папки), а можно работать с простыми ветками, если проект небольшой. Вот так вот.
Вышло. С новой офигенной системой колонок и прочими плюшками.