Leprosorium++

Некоторое время назад, примерно в мае, Jovan, Vicont и прочие веселые ребята выкатили новую версию Лепрозория и всё было замечательно, кроме отвалившихся юзерскрипт плагинов.

Я очень привык к расшринию Lepra+, которое добавляет удобную кнопочки в браузер и включает в себя различные скрипты. Первым делом я полез патчить исходники, но просидев ночь понял что гораздо проще будет написать всё заново, тем более что технологии уже ушли вперед и можно сделать расшриние сразу для всех браузеров, а не ограничивать себя Google Chrome.

leprosorium++

С выбором платформы проблем не было, еще давно когда я работал в Корпорации ГУРУ мне довелось познакомиться с платформой Kango, что занятно, её авторы тоже Леперы.

Платформа позволяет работать с внутренним api, которое транслирует необходимые вызовы к api конкретного браузера, таким образом можно в кратчайшие сроки делать расшрирения «Кнопки», но делать специфические нативные вещи становится невозможно.

Первую пригодную версию я сделал за ночь, потом еще несколько дней провел в режиме хакатона, пока фиксил баги и добавлял новые фичи, но тут нужно понимать что 99% времени ушло на адаптацию различных плагинов, а сам скелет приложения был сделан за один или два часа.

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

Всех энтузиастов приглашаю в репозиторий, а так же рекомендую познакомиться с Kango.

https://github.com/Rpsl/leprosorium/issues


browser, javascript, leprosorium      

Странности с Google Chrome

В последнее время замечаю, что Chrome периодически не правильно показывает страницу. Причем это явно не косяк верстки, а именно как будто видео карта глючит. Такое ломанное изображение, после совершения ajax действий над dom деревом, как только подводишь мышку к этому месту все становится хорошо. Компьютер его перерисовывает.

Сделать скриншот не получается, т.к. при этом все исправляется, но я попытался изобразить на картинке как это выглядит.

chrome broken

Еще иногда бывает что гифки не показываются. Для их запуска приходится щелкнуть рядом, что бы выделить гифку, тогда запускается. Проверял на разных сайтах и без расширений - без результата. Не знаю что с этим делать, на всякий случай воткнул на сайт такой код, success для ajax действий.

$('#tab_content' ).height( $('#tab_content' ).height()+1 );

Может сталкивался кто? Подскажите куда копать.


javascript, неведомая хуйня      

Gmail Show-M.-Later

Gmail Show M later

Если кратко, то эта фича позволяет создать в вашем ящике ярлыки (папки), положив письмо в которые, оно будет лежать пока не пройдет нужный срок, а потом оно снова переместится в inbox и станет не прочитанным. Мне такой штуки очень давно не хватало, т.к. часто приходят письма, на которые нужно отреагировать, но в данный момент реагировать на них возможности нету.

Есть более древние варианты в галерее скриптов, Gmail Snooze например, но они позволяют работать только с дневными интервалами и устроены таким образом, что письмо добавленное в 23:00, в 01:00 снова окажется в инбоксе. Поэтому я сначала модифицировал, а потом полностью переписал. В моей реализации, письма живут более правильной жизнью.

Испытательный срок длился две недели. Это только последней стабильной версии, до этого были еще другие реализации, пробовал использоваться Cache вместо ScriptDB, но он слишком часто терял ключи. С этой версией проблем не возникало, пару раз, было что скрипт зависал, но я забил на это дело, т.к. повторить ошибку мне не удалось.

Касательно объемов данных. Каждому пользователю google выделяется 50мб под ScriptDB, но может быть и больше, если у вас платный аккаунт. Что бы упереться в размер данных, нужно будет очень постараться, поэтому до первой проблемы, решать ее не собираюсь. Тестировал максимум на 20 активных письмах, все прошли полный цикл без ошибок. Наверно, если писем будет больше, то возможен тайм–аут. Если столкнулись с проблемой, пишите, буду исправлять.

Инструкцию и комментарии мне писать было лень, поэтому они не сильно подробные, но я постарался все расписать максимально доступно, в стиле пойди сюда — кликни тут.

Буду рад ответить на вопросы.
Буду очень рад, если появится перевод на другие языки.

https://github.com/Rpsl/Show–M–Later


gmail, javascript      

Еще немного про собеседования

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

Изначально, я хотел в этом посте написать все самые интересные вопросы и дополнить их ответами, но когда начал его писать, то понял что ответы тут не нужны. Те кому это действительно надо, сами порешают данные задачи, остальные могут просто пролистать.

Первое на что хочу обратить ваше внимание, это то, что вопросы которые задают php(?) программистам, в основной своей сути имеют довольно академический характер и в жизненных циклах проектов встречаются не часто, но тем не менее, нужно уметь решать эти задачи. Это обусловленно тем, что у работодателей нету времени и желания давать вам типичные задачи, в стиле - "Напиши класс, который будет отвечать за работу с пользователями". 99 процентов всех вопросов задаются по заготовленному листку и должны быть решены на листке бумаги. Никаких IDE, никаких гуглов, никаких ответов типа "я не помню синтаксис". Если вы настроены решительно и хотите произвести хорошее впечатление, то уделите время, что бы потренироваться и чувствовать себя уверенно.

Все вопросы можно разделить на три категории: PHP, MySQL(?), все остальное.

Любой из этих пунктов, так же делится на две части: теория и практика. Начну пожалуй с PHP. С теоретическими вопросами, в целом, не сложно. Они почти везде одинаковые: Отличия между PHP 5.2 и 5.3, основные приципы ООП. Не частый, но вопрос с подвохом - "В каких случаях использование ООП, является убыточным?". Дальнейшие вопросы на теорию, в основном, зависят от ваших ответов, и несут цель узнать на сколько хорошо вы разбираетесь в материале о котором говорили выше.

Практические вопросы, это чаще всего просьба написать некую ф-цию, которая делает какую либо хрень. Почти на каждом собеседование меня просили написать функцию которая переворачивает строку, без использования дополнительных буферов, можно попробовать схитрить и ответить что-то в стиле

function revert( $string ){ return strrev( $string ); } ?>

Но это не cамый лучший вариант ответа. Выучите алгоритм с обращением к символом строки как к объекту массива.

Очень частые задачи, на написание рекурсивных функций или на понимание работы операторов кода.

$a = 10;
echo ++$a + $a++ - ++$a + $a ;

На днях пока решал задачи, попалось интересное задание, у меня такое ни разу не спрашивали, но думаю что к такому надо быть готовым:

var_dump( 0123 == 123 );

Думаю, что на счет PHP я достаточно ясно изложил типовые вопросы, если что-то осталось не понятно, то спрашивайте в комментариях.

Теоретические вопросы про MySQL или любую другую СУБД почти всегда касаются индексов и насколько вы понимаете как их использовать, в каких случаях и на что их ставить и в каких случаях индексы могут быть вредны. Обязательно спросят про различия между версиями. Поинтересуются насколько глубоко вы знаете тонкости работы СУБД и вкурсе ли вы про то, что такое тригеры, хранимые процердуры, представления.

Практические задачи - это просьба нарисовать две таблицы с различными данными и просьба написать запрос, который покажет умеете ли вы использовать операторы HAVING, GROUP BY, ... etc. Обязательно знать разницу между JOIN запросами.

Еще часто спрашивают про верстку, про css, про javascript. Но расписывать это все не вижу смысла.


css, javascript, join, mysql, php, жизнь, работа      

WordPress — gallery shorttag highslide

Два примера, для решения одной и той же задачи.

В первом примере полный идиотизм, во втором хорошее решение. Вот теперь вопрос, почему большая часть всех CMS работает как первый пример. ?
Читать далее


blog, javascript, jquery, php, wordpress      

Обфускатор Javascript

На Хабре нашел ссылку на отличный инструмент для шифрования js от чужих глаз:

http://utf-8.jp/public/jjencode.html

Например, alert(”test”); превращается вот в такую конструкцию:

Читать далее

javascript      

jQuery + label tag

Очередной, очень маленький, но ужасно удобный trick.

Суть очень простая, он автоматически делает  одинаковый width для всех элементов \<label>.

Изначально форма выглядит примерно вот так:

before

Добавляем стиль:

label, input[type="text"]{
    float:left;
    display:block;
}
label{
    margin-right: 5px;
}
.field{
    width:100%;
    overflow:auto;
    margin:5px 0px;
}

Добавляем javascript:

$(document).ready(function() {
    var max = 0;
    $("label").each(function(){
        if ($(this).width() > max)
            max = $(this).width();
    });
    $("label").width(max);
});

И вуаля:

after


css, javascript, jquery      

Hotkeys для wordpress

В этой заметке, я расскажу как легко добавить в ваш блог поддержку hotkey's.

Hotkey - это определенное сочетание клавиш, по нажатию которых происходит определенное действие. Мы уже привыкли использовать ctrl+c/ctrl+v. Тенденции развития интернета диктуют свою моду и многие уже привыкли использовать для перехода между страницами сайта сочетание "ctrl+left" или "ctrl+right".

Для добавления этого функционала, первое что нам потребуется - плагин hotkey для библиотеки jquery.

jQuery hotkey

Теперь о том, как это сделать. У нас есть два варианта:

  • Генерировать код в самом шаблоне с помощью встроенных функций
  • Генерировать код "на лету", с помощью JS

Я выбрал второй вариант, т.к. он мне показался более правильным, во первых мы не напрягаем шаблон лишними вызовами, и главное мы уверенны что будем получать правильные ссылки. Ведь нам нужно на главной странице листать все записи, в категории листать записи категории, а внутри поста листать посты. Таким образом, всё что нам осталось, это добавить в header шаблон (скорее всего header.php) нижеприведенный код.

Читать далее

blog, javascript, php, web2.0, wordpress      

Google Picasa on your site

Уже давно, в своем твиттере, я обещал рассказать как встроить фото галерею пикасы в свой сайт.

Идея довольно простая: "Зачем изобретать велосипед, если можно использовать мотокомбайн?".

Рыская по глубинам интернета, я нашел замечательный скрипт picasaViewer. Написан он на JavaScript и является плагином для mooTools.

Настройки весьма простые: в файле picasaViewer.js указываем username пользователя, фото галереи которого хотим отображать.

picasa.png

Из плюсов стоит отметить то, что он работает почти со всем современными броузерами и не требуют серверных мощностей для выполнения.

Из минусов то, что написан он на moo и возможно, что будет конфликтовать с другими js фреймворками.

Готовый пак (с slimbox дополнением), забираем с зеркала в моем блоге.

Download: picasaview.zip

Удачного использования.


Ajax, images, javascript, mootools, photo, picasa