RG-soft.com

всякое разное об этих ваших интернетах

JsRender — JavaScript шаблонизатор
Многие слышали про jQuery Templates, некоторые пользовались. Штука крайне удобная, позволяет переложить отрисовку части отображения на сторону клиента, то бишь генерировать html прямиком в браузере, что позволяет во-первых делать крайне быстрые веб-интерфейсы, а во-вторых снижает нагрузку на backend. Но недавно команда jQuery заморозила разработку jQuery Templates на неопределённый срок, чем вызвала немало вопросов в свой адрес.

Слава яйцам, что человек, занимавшийся разработкой jQuery Templates, форкнул проект и назвал его JsRender. И хоть это даже пока и не бета, но работает всё довольно стабильно. Краткий пример как этим пользоваться (у людей, знающих JavaScript проблем с пониманием возникнуть не должно):

<script id="entry" type="text/x-jquery-tmpl">
<div id="entry-{{* result += $view.itemNumber; }}">
{{=author}}
<div class="text">{{=text!}}</div>
{{#each comments}}
<div class="comment">
{{=author}} написал:
<br>
{{=comment!}}
</div>
{{/each}}
</div>
</script>

<div id="wrap"></div>

<script>
var entries = [
{ author: "user11", text: "Привет 1", comments: [
{ author: "user1", comment: "Привет 2" },
{ author: "user2", comment: "Привет 3" },
{ author: "user3", comment: "Привет 4" }
] },
{ author: "user22", text: "Пока 1", comments: [
{ author: "user4", comment: "Пока 2" },
{ author: "user5", comment: "Пока 3" },
{ author: "user6", comment: "Пока 4" }
] },
{ author: "user33", text: "Проверка", comments: [] }
];

$("#wrap").html( $("#entry").render(entries) );
</script>


Теперь по пунктам о том, что это было:
Всё, что находится в теге <script id="entry" type="text/x-jquery-tmpl"> — это шаблон. Синтаксис довольно прост для понимания: {{=author}} выводит поле author из вводных данных, {{=text!}} — поле text. Но обратите внимание на восклицательный знак после имени поля — он означает, что спецсимволы в данных не будут эскейпится, а выведутся «как есть». Полезно, если хотите вставлять куски html в шаблон. Далее код между {{#each comments}} и {{/each}} выполняется для каждого объекта, внутри множества comments, все названия полей ссылаются на эти поля. {{* result += $view.itemNumber; }} — этот тег выполняет javascript код напрямую, конкретно в этом случае к выводимому результату (result) добавляется текущий номер итерации ($view.itemNumber).

Переменная entries содержит данные, которые парсятся в шаблон. Переменная задана локально, но никто не мешает её, например стянуть AJAX запросом с backend-a.

И самая главная строчка: $("#wrap").html( $("#entry").render(entries) );,
$("#entry").render(entries) — парсит шаблон, находящийся в $("#entry"), с данными, находящимися в переменной entries. Возвращается готовый html.

Вот такая вот библиотека. Категорически рекомендую всем её пощупать. Через некоторое время, если это кого-то заинтересует, я продолжу знакомить вас с JsRender.

 
веб-программирование javascript jquery
0 коммент.
Проблема с Compiz на Debian Wheezy
Установил себе на ноутбук Debian Wheezy, Gnome 2, решил прикрутить Compiz и столкнулся с одной подлой проблемой — после авторизации в GDM загружался рабочий стол и прекращалась отрисовка. Полностью. И именно отрисовка, методом тыка удавалось создавать пустые файлы, открыть внешний хард (слышно по его работе) и даже сделать скриншот. А на экране ничего не менялось. Поэтому пишу этот «ещё один пост о том как правильно настроить Compiz на Debian».

В первую очередь, чтобы избежать дальнейшей путаницы надо убедиться, что ccsm пишет свои настройки в gconf. Для этого должен быть установлен пакет compizconfig-backend-gconf.

aptitude install compizconfig-backend-gconf


Во-вторых, само собой надо корректно установить драйвера к видео карте. Информации на этот счёт в интернете пруд пруди, подробно на этом останавливаться я не буду. В моём случае это были драйвера к Nvidia.

Далее нужно дописать нужные настройки в файле /etc/X11/xorg.conf, а это:
в Section "ServerLayout" добавить Option "AIGLX" "true"
в Section "Module" закомментировать Load "dri" и Load "dri2"
в Section "Screen" добавить Option "AddARGBGLXVisuals" "true", Option "RenderAccel" "true" и Option "AllowGLXWithComposite" "true".
в конец файла добавить секцию (если её нет):

Section "Extensions"
Option "Composite" "enable"
EndSection


Теперь что касается решения моей проблемы — она заключалась в том, что indirect rendering (AIGLX) не запускался, несмотря на настройку в xorg.conf. Слава яйцам, что есть параметр командной строки --indirect-rendering. Его-то и надо добавить к строке запуска в файле /usr/share/applications/compiz.desktop. Открываем этот файл и ищем строку, начинающуюся с Exec=, выглядит она примерно так: Exec=compiz ccp decoration --sm-client-id $DESKTOP_AUTOSTART_ID, к ней мы и добавляем параметр --indirect-rendering.

Остался последний штрих: нужно заменить оконный менеджер по-умолчанию с gnome-wm на compiz. Делается это одной командой в консоли:

gconftool-2 --set -t string /desktop/gnome/session/required_components/windowmanager compiz


Всё, перезагружаемся, compiz должен работать.

 
linux debian compiz gnome 2 nvidia desktop
0 коммент.
Релиз NetBeans IDE 7.0
На днях увидела свет новая версия, пожалуй, лучшей бесплатной IDE. Нового в этой версии:
поддержка HTML5
Поддержка Git 1.7.х
PHP Rename Refactoring
Line wrapping
и различные другие плюшки

Скачиваем здесь

 
netbeans ide php python java c++ веб-программирование базы данных
0 коммент.
Обновление MySQL до 5.1 в Debian Squeeze
При обновлении Debian с Lenny до Squeeze у некоторых из вас может возкникнуть ошибка при установке MySQL 5.1. Выглядит это дело примерно вот так:

Setting up mysql-server-5.1 (5.1.49-3) ...
Stopping MySQL database server: mysqld.
110128 17:10:57 [Note] Plugin 'FEDERATED' is disabled.
110128 17:10:57 InnoDB: Started; log sequence number 0 44233
110128 17:10:57 InnoDB: Starting shutdown...
110128 17:11:03 InnoDB: Shutdown completed; log sequence number 0 44233
Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed!
invoke-rc.d: initscript mysql, action "start" failed.
dpkg: error processing mysql-server-5.1 (--configure):
subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
mysql-server depends on mysql-server-5.1; however:
Package mysql-server-5.1 is not configured yet.
dpkg: error processing mysql-server (--configure):
dependency problems - leaving unconfigured
configured to not write apport reports
configured to not write apport reports
Errors were encountered while processing:
mysql-server-5.1
mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)


А лечится всё предельно просто: в папке /etc/mysql переименуйте текущий my.cnf в my.cnf.backup (или просто удалите), а на его место поставьте my.cnf.dpkg-dist, находящийся в этой-же папке.

 
linux debian mysql базы данных
0 коммент.