Что почитать, чтобы повысить свой уровень JavaScript
От переводчика: Я думаю многие читали статью Rey Bango — What to Read to Get Up to Speed in JavaScript, но до хабра обсуждение так и не докатилось. Предлагаю закрыть этот пробел и поговорить о хороших книгах, блогах, тренингах и конференциях, посвященных в первую очередь клиентскому JavaScript и клиентской веб-разработке. Чтобы не копипастить оформляю статью в …
Горячие клавиши в Compiz (Ubuntu 10.10)
Рабочие области Ctrl + Alt + Left/Right/Up/Down arrow — перейти к рабочей области Ctrl + Alt + Shift + Left/Right arrow — перенести текущее окно в рабочую область Super + E — показать все рабочие области Управление окнами Super + W — показать все окна в рабочей области (левая кнопка мыши — выбрать окно, средняя …
Регулярные выражения — особенности
Как работает регулярное выражение (regexp): сначала оно пытается найти максимально возможное совпадение для текущей группы символов, затем посимвольно откатываясь к началу совпавшей подстроки (backtracking), в попытке найти совпадение для последующей группы символов регулярного выражения. Это верно для «жадных» (greedy) типов групп (по умолчанию, к примеру [\w]*). Если группа «ленивая» (lazy), то откатывание производится от начала …
jQuery templates (расширение jQuery, шаблонизатор)
Всё достаточно просто.
1 2 3 4 5 6 |
$.getJSON( me.options.urlMoreResults ) .success( function( Answer ) { $( '#my-tmpl' ).tmpl( Answer ); } ); |
Шаблон:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<script id="my-tmpl" type="text/x-jquery-tmpl"> <div> {{if songs}} <ul class="song-list"> {{each songs}} <li> <a class="play js-play" href="javascript:void(0);" data-song="${$value.id}"></a> </li> {{/each}} </ul> {{/if}} {{if description}} <div class="description"> <a href="${url}/about" target="_blank"> ${description} </a> </div> {{/if}} </div> </script> |
http://api.jquery.com/category/plugins/templates/ http://habrahabr.ru/blogs/jquery/112843/ http://habrahabr.ru/blogs/jquery/113672/
Новое в PHP 5.4 — трейты (traits)
Вкратце: трейт (аналог mixin в Ruby) — возможность в классе использовать функционал нескольких классов в обход традиционного наследования (по-моему, костыль, чтобы не реализовывать множественное наследование). Всё сводится к новой инструкции use внутри класса, при этом класс, функциональность которого нужно подмешивать. объявляется инструкцией trait.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
trait Singleton { public static function getInstance() { ... } } class A { use Singleton; // ... } class B extends ArrayObject { use Singleton; // ... } // Singleton method is now available for both classes A::getInstance(); B::getInstance(); |
Подробнее: New to PHP 5.4: Traits
Паттерны проектирования на PHP
http://css.dzone.com/books/practical-php-patterns
PostgreSQL — генерирование повторяющихся значений для неупорядоченных данных
Была задача: есть некоторое количество заказов, которым оказались не назначены менеджеры, есть 3 менеджера, между которыми нужно распределить эти заказы равномерно. Легче всё сделать на php или python, но задача была сделать всё при помощи SQL-запроса без хранимых процедур и желательно одним запросом.
Добавить Thunderbird и Pidgin в апплет уведомлений в Ubuntu
Replace Evolution with Thunderbird completely in Ubuntu Replacing Empathy with Pidgin in Ubuntu — тут же упоминается и приятный бонус pidgin-а: его можно использовать как клиент skype — для этого нужно всего лишь доставить плагин pidgin-skype
Планирование и учёт рабочего времени
Читаю книгу Джоэла Спольски «И снова о программировании». Книжка несколько скаучная, постоянно рекламирует свою компанию и свои продукты, но есть и интересные главы (а книга собственно и состоит из отдельных глав — записей в блоге). Интересная глава — двадцатая, «Планирование с учётом прежних результатов» (http://www.joelonsoftware.com/items/2007/10/26.html). Основная мысль — надо учитывать всё время над задачей, неважно, …
Jabber на личном домене с использованием google
Проще всего сделать так: Зарегистрировать приложение Google (там всё просто — мастер настройки). В результате создастся приложение и учётная запись администратора. Можно использовать её, а можно создать новую. После этого в jabber-клиенте нужно указать логином user@domain, сервер — talk.google.com. Вот и всё. Встречал много статей про настройку через SRV-записи, но этот способ сильно проще.