Mar 30

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

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

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

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

written by fxposter \\ tags:

Mar 30

Есть желание, хотя и не сильно большое, обзавестись на день рождения (1 апреля :)) ноутом. Покупать практически со 100% вероятностью буду в Сервисе. Список ноутов, соответственно, можно посмотреть здесь.

Для начала входной вопрос - стоит ли брать более-менее производительный ноут, если дома стоит недавно купленный хороший комп? Ноут будет использоваться практически полностью для учебы/работы - C++, Java, .NET, PHP, Python и т.д. Играть буду вряд ли - так что, хорошая видеокарта желательна, но необязательна.

Пока что составил такие требования:

  • Процессор - Core2Duo
  • Память - 2GB RAM (либо купить с 1GB, а потом докупить еще, благо, память сейчас дешевая)
  • Дисплей - <= 15″
  • Цена - ~1000$

Что посоветуете, если не конкретные модели, то хотя бы марки производителей (а то от разных людей слышу разные вещи - “Acer - говно”, “HP Compaq - херня” и т.д.)?

written by fxposter \\ 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 fxposter \\ 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 fxposter \\ tags: ,

Mar 26

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

В общем, посмотрим… Завтра посмотрим. :)

PS. Сегодня, кстати, вышла вторая бета-версия Symfony 1.1, на которой я и буду тестировать всё, что я напишу. Список изменений по сравнению с Symfony 1.0 лежит здесь - достаточно занимательное чтиво.

written by fxposter \\ tags: ,

Mar 22

Кто-нибудь может посоветовать хорошую библиотеку регулярных выражений для C++. Требования (желательно, но, в принципе, не обязательно):

  • скорость
  • отсутствие (или хотя бы минимум) зависимостей от другой библиотеки
  • работа с GCC или Visual Studio 2008 (вот это очень бы хотелось, но, думаю, фиг найду)

Погуглил - нашел кучу самых разных библиотечек. Выбирать наугад не хочется, так что прошу совета у C++’ников.

written by fxposter \\ tags:

Mar 21

Собственно, возникла проблема - заказчик хочет на сайте URL’ы определенного вида. Всё бы ничего - но то, что он хочет очень сильно расходится с тем, как работает сам сайт. Так вот, задание таково - нужно написать регулярку, которая бы выдавала true на всё, не включая (account|comment|user). В принципе регулярку такую я составил: /(?!(account|comment|user))/. Проблема в том, что рутинговая система накладывает свои ограничения на регулярки, а точнее приписывает к ним слева и справа свою фигню: '#^(?:\\/(<вот сюда можно вставлять всё, что угодно>))?$#'. Вопрос таков - можно ли что-то вставить в средину последней регулярки так, чтобы она вела себя как и моя, описанная выше. Если да - подскажите, что вставлять, а нет - так нет, буду через mod_rewrite решать проблему.

written by fxposter

Mar 19

У Bolk’а появился замечательный пост на эту тему. Всем смотреть в обязательном порядке!

PS. А я как-то никогда над этим даже не задумывался…

written by fxposter \\ tags: , , ,

Mar 18

Собственно, побывал я на первой своей конференции, впечатления остались, в целом, положительные, но обо всём попорядку…
Continue reading »

written by fxposter \\ tags: ,

Mar 17

Прочел на днях книгу “Getting Real” небезызвестной компании 37signals (разработчики RubyOnRails, Basecamp и еще ряда проектов). В книге рассказывается о подходах к разработке ПО в компании, о том, что “лучше делать мало”, что “лучше быть маленькими и не стесняться этого” и так далее - пересказывать смысла нет - лучше прочтите, благо, книга небольшая (у меня после распечатывания получилось ~65 страниц).

В целом, мне понравилась и книга, и подход компании 37signals к разработке - так как я никогда в больших компаниях не работал - их подход мне очень близок и понятен. Категорически рекомендую.

PS. Существует и русский перевод

written by fxposter \\ tags: