May 06

Давно ничего не писал - как-то не о чем… Праздники, работа, учеба… Единственное, что реально интересно из этого списка - это работа, но… к сожалению, как раз она и “способствует” отсутствию статей в этом блоге - её много и на блог времени просто не остается… А написать, к счастью, есть о чем. :)

Сегодня речь пойдет о так называемых dialog widget’ах (периодически, слышу, что их также называют js-popup’ами). Недавно понадобилось реализовать такой функционал в моём “рабочем” проекте и стал вопрос об использовании существующих решений.

В проекте я использую jQuery и, соответственно, выбирал системку, которая базировалась бы на нем. Всё началось с Thickbox’а, который я довольно долгое время и использовал, но… Кое-что мне в нем не нравилось изначально:

  • Минимум настроек
  • Отличие от большинства плагинов jQuery
  • Отсутствие развития (последняя версия вышла в августе 2007-го года и зависела еще от jQuery 1.1x, хотя и с 1.2 тоже работала нормально)

… в итоге эти недостатки привели ко вполне логичному концу - я не мог реализовать 2 разных “диалога” на одной странице не “вторгаясь” в сам код Thickbox’а, причем застрял на мелочи - удиалогов должны были различаться бэкграунды - у одного он должен был быть полностью залит определенным цветом, а второй должен был быть полупрозрачным. Причем в первом случае сделать фон непрозрачным мне пришлось через CSS, хотя гораздо логичнее было бы предоставить эту возможность самой функции создания диалога.

В общем, после недолгих поисков на свет был извлечен молодой, но очень быстро развивающийся
проект “окошек” на jQuery, о котором я сегодня и хочу рассказать - это nyroModal. Проекту еще нет и месяца, но основная функциональность там уже реализована (а как по мне - так больше и не нужно), и что самое главное - им очень удобно пользоваться.

Подробное описание (а также демонтрацию возможностей nyroModal) можно посмотреть на странице самого проекта, а я здесь приведу лишь несколько примеров использования.

Самый простой способ, при котором даже не нужно лезть в JavaScript - это присвоение ссылкам класса nyroModal:

<a href="demo.html" class="nyroModal">Ajax</a>

Эта ссылка откроет вам файл demo.html в “окошке”.

<a href="demo.html#demo" class="nyroModal">Ajax</a>

Эта - сделает почти то же самое, только в окошке будет только инфа из блока с id == “test” из файла demo.html.

<a href="#demo" class="nyroModal">No Ajax!</a>

А здесь у нас в окно попадет содержимое блока с id == “test” из текущей страницы.

Если же нужны какие-то дополнительные параметры (значения или callback-функции), то здесь уже без “ручного” JavaScript’а не обойтись:

<a href="#demo" id="no-ajax">No Ajax!</a>
<script type="text/javascript">
$('#no-ajax').nyroModal({
  bgColor: '#FFFFFF',
  showBackground: function(elts, settings, callback) {
    // elts.bg.css({opacity:0}).fadeTo(500, 0.75, callback);
    callback();
  },
  hideBackground: function(elts, settings, callback) {
    // elts.bg.fadeOut(300, callback);
    callback();
  }
})
</script>

Таким образом мы заменим цвет фона на белый + уберем прозрачность и анимацию при появлении/исчезновении фона.

На этом, наверное, будем прощаться. Если остались вопросы - обращайтесь. :)

written by FX Poster \\ tags: , , ,

Apr 20

Сегодня мы с Мишей разговорились в ICQ. Разговор получился ОЧЕНЬ длинный и офигительно интересный. Читаем под катом:
Continue reading »

written by FX Poster \\ tags: , , , ,

Apr 19

Никогда не использовал CMS’ки при разработке сайтов. И не смотрел на них никогда. Всегда пользовался фреймворками, библиотеками, либо сам всё писал (да, был маленький, глупый). Сейчас вот стал задумываться над этим фактом. Посему назрел вопрос, который я хочу задать своим читателям - стоит ли изучать какую-либо CMS на PHP (на данный момент, я бы выбрал, скорее всего, Drupal) или “ну это всё нафиг”?  Если бы у меня была куча времени - вопрос бы не стоял, а так - стоит ли оно того?

PS. Одна из причин, по которой хочется посмотреть на Drupal - мне интересно, как такой очень некрасивый, на мой взгляд, код можно поддерживать, развивать и т.д. :)

written by FX Poster \\ tags: ,

Apr 19

Прошла выставка… Никто практически ничего про неё не написал, по крайней мере из тех, кого я читаю сейчас - написал только Юра Артюх. Больше никаких отчетов я не видел, хотя может и пропустил что-то. Надеюсь, кстати, на следующей неделе пересечься всё-таки с человеком, который там был, послушать впечатления.

Пока же - вот здесь выложены видеозаписи выступлений с конференции (не все, но посмотреть есть на что). Выступления, как по мне, очень интересные. Особенно (естественно!) хочется отметить выступление о моей любимой Symfony.

PS. Что-то не везет мне с ноутами. Заказал у знакомых HP Compaq 6720s. Обещали привезти сегодня до 12-ти из Киева. Приезжаю в час в магазин - “машина Автолюкса (служба доставки) сломалась по дороге, ноута пока нет”. 

written by FX Poster \\ tags: ,

Apr 11

lrrr анонсировал открытия очередного digg-клона, в этот раз посвященного, как можно прочесть выше функциональным (и не только) языкам программирования:

Тем временем мы с Сёмкой организовали тут недодигг для программистов, утилизировав под это его давно пустовавший домен defun.ru

Основная тема — новости и ссылки о функциональном программировании, разных альтернативных и перспективных языках, ну и про computer science вообще. Ключевые слова — хаскель, erlang, lisp, smalltalk, ocaml. Ruby, groovy и питон туда тоже отлично впишутся.Сервис находится в состоянии лямбда-тестирования ©, так что некоторое время все еще будет несколько глючить и тормозить, так что баг репортам мы будем рады -> пишите на lrrr@defun.ru или semka@defun.ru.

Там за-defun-ено уже довольно много ссылок, так что не медлим, а идем на сайт и читаем, читаем, читаем!

PS. На данный момент сайт несколько… эммм… лежит. Видать, много пользователей привлекли. :) 

written by FX Poster

Apr 10

В последнее время всё больше стал замечать, что хороших, интересных блогов, пишущих про то, что мне интересно, практически нет. Практически нет статей, описывающих всякие новые технологии разработки, проектирование, в которых присутствуют интересные и полезные примеры по client-side программированию в web. Интересных для меня заметок по PHP я не видел уже фиг знает сколько…

Складывается впечатление, что в рунете могут только и делать что:

  • переводить западные интересные материалы - интересно, полезно, но обидно, что наши о таком не пишут.
  • копипастить документацию к различным фреймворкам, в основном - PHP, JS. Ну, или приводить свои примеры… которые почему-то 1 в 1 похожи на документационные.
  • выдавать хиленькие статейки о том - “вау, я тут попробовал <вставьте свой название>! офигительная штука!”. Каюсь, я сам в эту категорию попадаю.

Так же не радует зацикленность русскоязычных web-программистов на своих велосипедах - да вы посмотрите, каждый третий юзает “своё”, “потому что круто” и “мне не нужны чужие ошибки”. Своё, в основном, оказывается, полнейшей фигней… Еще не нравиться, что из-за появления всяких фреймворков, многие теперь считают себя крутыми программистами - пишут “сайты”, даже не понимая, как оно внутри работает. Особенно это касается применения JS-фреймворков - о том, как работают event’ы в JS знают единицы (я, кстати, сам недавно только узнал, но я учусь)… и так далее…

PS. Извиняюсь… Наболело…

PPS. Вот чем мне нравиться C++ - там, если не знаешь, то не повыёбуешься повыделываешься, как с PHP…

written by FX Poster

Apr 08

Что бы вы предпочли - datepicker или 3 select’а для дня, месяца и года?

У нас на проекте мнения разделились, потому решил устроить опрос…

written by FX Poster

Mar 30

Собственно, в понедельник дочитал я эту книгу… Читается, как и “Getting Real” очень легко - никаких тебе сложных формул или примеров с кодами - практически обычная художественная литература с огромным уклоном в IT.  :) Всем, кто хоть как-то касается IT - практически must read, остальным - по желанию.

В книге освещаются довольно интересные вопросы как по технологиям программирования (в частности, .NET), так и советы по устройству распорядка своего рабочего дня, как рекомендации о том, как выбирать сотрудников себе на фирму, так и рассказы о Unicode и “законе дырявых абстракций”. Кстати, все (или практически все) рассказы из этой книги были сначала опубликованы на блоге Джоела, который я тоже советую читать всем, кто “хочет знать больше”.

PS. Линуксоидам читать обязательно! Почему - увидите. :) 

PPS. В этой книге некоторые вещи подаются в представлении, абсолютно ортогональном тому, про которое рассказывает “Getting Real“. И если вы после прочтения обоих книг впадете в ступор - я вас предупредил! ;)

written by FX Poster \\ tags:

Mar 29

Собственно, продолжим начатое

Сегодня мы займемся установкой Symfony на ваш компьютер. Первым делом идем на офсайт и смотрим страницу, описывающую процесс установки! Несмотря на наличие этой страницы, мне всё же задают вопросы - “как ставить”, “какой способ установки выбрать” - судя по всему, такая статья лишней не будет.

Существует 3 основных способа установки Symfony на ваш компьютер:

  1. Скачать архив
  2. Установить из SVN
  3. Установить через PEAR

Установка путем скачивания архива

Скачиваем архив (symfony 1.1 beta 2) с официального сайта, и распаковываем в любую директорию (не обязательно в php’шный include_path). После чего фреймворком уже можно пользоваться. Но есть неудобства - для того, чтобы пользоваться консольными командами - прийдется каждый раз прописывать в консоли путь к файлу “symfony.bat” (или “symfony”, в зависимости от того - пользуетесь вы ОС на основе *nix или Windows), этот файл находится в ./data/bin. Для того, чтобы убрать этот недостаток:

  • под Windows - пропишите путь к “symfony.bat” в переменную PATH (помочь вам сделать это может Google).
  • под *nix - запустите “sudo ln -s /<путь к директории, куда вы распаковали архив>/data/bin/symfony /usr/bin/symfony”

После этого можете пользоваться в консоли командами типа “symfony init-project” и т.д.

Плюсы: простота - кроме скачивания и распаковывания архива ничего не нужно делать; если на компьютере, на который вы собираетесь устанавливать Symfony, нет интернета - достаточно просто принести архив на этот компьютер.

Минусы: отсутствие автоматизации - для обновления Symfony прийдется самостоятельно повторять процедуру.

Установка из SVN

Если вы не знакомы с SVN - лучше выберите первый вариант. Процедуру прописывания путей к ./data/bin/symfony прийдется повторять и здесь. Для установки - перейдите в директорию, куда хотите установить symfony и введите:

svn checkout http://svn.symfony-project.com/branches/1.1

в *nix-ОС, либо проделайте подобную процедуру (checkout) через TortoiseSVN под Windows - объяснять не буду - у TortoiseSVN интуитивно-понятный интерфейс.

Плюсы: можно удобно обновляться до самой последней версии с помощью возможностей SVN; если на компьютере, на который вы собираетесь устанавливать Symfony, нет интернета - достаточно просто принести директорию, куда вы “установили” Symfony на этот компьютер.

Минусы: в SVN может находится не совсем стабильная версия (стабильные версии хранятся в http://svn.symfony-project.com/tags/); способ сложнее для тех, кто не умеет работать с SVN.

Установка через PEAR

Если у вас не установлен PEAR - тогда вам пора обратится к Google.

Установка очень проста (перевод доки с офсайта):

Введите в коммандной строке:

$ pear channel-discover pear.symfony-project.com

Для установки стабильного релиза (на данный момент это 1.0.12), введите:

$ pear install symfony/symfony

Для установки бета-версии (на данный момент - 1.1 beta 2, т.е. то, что нам нужно), введите:

$ pear install symfony/symfony-beta

Для обновления Symfony воспользуйтесь следующими командами:

$ pear upgrade symfony/symfony

или

$ pear upgrade symfony/symfony-beta

Плюсы: очень простая установка, а также отсутствие производить махинации с переменной PATH/символическими ссылками; очень удобное и простое обновление.

Минусы: проблемы с установкой на компьютерах без интернета (я не зря это пишу, такие вопросы уже были).

Есть и еще один способ:

Установка sandbox’а

Sandbox - это “пустое” приложение Symfony вместе с самим фреймворком. Скачать его можно отсюда. Архив распаковываем (!!!) в директорию сервера, например: localhost у вас настроен на директорию c:\www\. Вы распаковали архив в директорию c:\www\test\ таким образом, что директория web у вас содержится в c:\www\test\web\. После этого запускаем сервер и заходим на адрес http://localhost/test/web/ и видим начальную страничку, сгенерированную Symfony.

Я сам в случае с Symfony 1.1 воспользуюсь именно sandbox’ом.

Ссылки:

  • У Макса появилась отличнейшая статья о том, что сейчас наблюдается в рунете с блогами с SMO. Знать бы, как с этим бороться…
  • Тем, кто использует Propel в Symfony -появился отличный плагин, упрощающий написание запросов через Criteria - sfPropelFinder.

written by FX Poster \\ tags: ,

Mar 27

Ну что ж, начнем повествование…

В Symfony 1.1, в отличии от предыдущей версии, полностью изменилась работа с формами (а также еще очень многими вещами, которых, я надеюсь, я коснусь позже) - вместо кучи кода, разбросанного по многим местам (которым, впрочем, вполне удобно пользоваться благодаря достаточно удобным view helper‘ам) появилось достаточно красиво спроектированная ОО-система, собирающая логику работы с формами в одном месте.

На That’s Quality не зря назвали серию постов “Forms, Widgets and Validators” - работа с формами предполагает знания именно об этих трех компонентах, которые объединены под общим названием Form Framework:

  • Forms - компонент отвечает за логику работы формы, не зацикливаясь на её внешнем виде.
  • Widgets - собственно, классы, представляющие собой графические элементы формы. Здесь определяется то, как форма будет выглядеть внешне.
  • Validators - компонент, отвечающий за проверку правильности введенных значений в форму.

На самом деле, насколько я понял из кода Symfony, эти три компонента всё же довольно сильно связаны между собой и вряд ли вам захочется использовать каждый из них по отдельности, но в общем они составляют довольно целостную структуру.

Как же это с этим всем великолепием работать, спросите вы? Ответы будут в следующих статьях, а пока же просто приведу пример использования формы.

Создаем саму форму в контроллере:

class userActions extends sfActions
{
  public function executeIndex()
  {
    $this->form = new RegisterForm();
  }
}

И выводим её во View:

<form method="post" action="<?php echo url_for('user/index') ?>">

<table cellspacing="0" cellpadding="0">
  <?php echo $form ?>
</table>

<div class="submit">
  <input type="submit" value="Submit" />
</div>

</form>

Что это еще за RegisterForm? Узнаете завтра, а пока что советую вспомнить, о чем я писал в статье про формы в Symfony 1.0. Вспомнили? Теперь стало понятно название RegisterForm? :)

written by FX Poster \\ tags: ,