Symfony 2 Joboard : Модель данных

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

Читать далее...

Symfony 2 Joboard : Спецификация проекта

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

Веб-сайт Joboard будет иметь четыре типа пользователей: Администратор (владеет и управляет веб-сайтом), пользователь (посетитель веб-сайта, ищет работу), работодатель (посетитель веб-сайта и размещает вакансии) и партнёр (имеет доступ к списку вакансий и публикует их на своем веб-сайте).

Читать далее...

Symfony 2 Joboard : Начинаем проект

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

В этой части, вы не будете писать код. Вместо этого вы будете настраивать рабочую среду разработки.

Прежде всего вам нужно проверить, что ваш компьютер имеет соотвествующее программное обеспечение для веб-разработки. В качестве операционной системы мы будем использовать Ubuntu 12. Из ПО как минимум нам потребуется веб-сервер Apache, СУБД MySQL и PHP 5.3.3 или более поздней версии. Для Windows рекомендую установить XAMPP или OpenServer, там есть все библиотеки и уже настроено окружение для разработчика. Также вместо сервера Apache вы можете использовать встроенный сервер в php 5.4 и выше, как это сделать буде тпоказано ниже.

Читать далее...

LXML: Быстрая и гибкая обработка XML и HTML в Python

  • Python
  • 4 года назад

Для обработки XML и HTML можно использовать и BeautifulSoup, но эта библиотека использует слишком много памяти и не удовлетворяют требованиям по скорости для больших файлов. Библиотека LXML очень быстро открывает и обрабатывает большие XML или HTML файлы, поэтому мы и будем рассматривать её в этой статье.

Установить её вы можете отсюда. Давайте рассмотрим работу библиотеки на примерах.

Читать далее...

Центрирование элементов по вертикали на чистом CSS

  • CSS
  • 4 года назад

До сих пор в CSS было проблемой, что он работает преимущественно вдоль одной оси. В зависимости от контекста это может быть вертикальная или горизонтальная ось. И это отлично подходит для стека блочных элементов (расположенных один за другим), например:

~~~{.css} display: block; width: 100%;


Также легко отобразить элементы вдоль горизонтальной оси используя плавающие элементы (float). Однако если вы хотите сделать элементы динамически на обе оси, то у вас будет не так много вариантов для этого. В таком случае вам придётся использовать обходные пути или способы основанные на JavaScript. Но на данный момент новая спецификация CSS column (CSS столбцы) дает нам новую надежду на достижение этой цели используя только чистый CSS. Примечательно, что CSS столбцы отдают приоритет вертикальному выравниванию перед горизонтальным.

### Горизонтальное центрирование

Горизонтальное центрирование сделать очень просто. Существует несколько способов для достижения эффекта горизонтального центрирования элементов:

### Inline-block и Inline элементы с выравниванием текста

Inline-block и Inline элементы, обрабатываются как текст - они рассчитывают свои собственные значения ширины и не реагируют на заявленную ширину, если вы не объявили их как блочные элементы (см. Далее).

~~~{.css}
display: inline; /* [или] display: inline-block; */
text-align: center;
Читать далее...

Начало работы с проектом на Django 1.6

  • Python
  • 4 года назад

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

Читать далее...

Установка Django 1.6 + Apache 2 + mod_wsgi на Ubuntu

  • Python
  • 4 года назад

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

Вы перечитали кучу мануалов, перепробовали всё на свете, но так и не получили работающее приложение. Если вы попали в такую непростую ситуацию, то эта статья расскажет вам, как установить и настроить Django 1.6 с веб-сервером Apache 2 и операционной системой Ubuntu.

Читать далее...

Использование строки в качестве Twig шаблона в Symfony2

  • PHP
  • 4 года назад

Я переключил свой предпочтительный метод на использование класса Twig_Loader_Chain. Этот метод позволяет назначить несколько загрузчиков в один экземпляр Twig_Environment, так что вы сможете прозрачно обрабатывать шаблоны из файлов или из строк. В нижней части статьи вы увидите описание этого метода.

Для того, чтобы создать twig шаблон требуется экземпляр класса Twig_Environment. Этот класс содержит метод render, который возвращает обработанный результат из twig шаблона (обычно из файла). Twig Environment использует загрузчик классов, который реализует интерфейс Twig_LoaderInterface, этот класс загружает данные из хранилища (файл, база данных) для последующего их анализа шаблонизатором. По умолчанию Symfony2 использует класс Twig_Loader_Filesystem, который загружает данные шаблонов из файлов, для того чтобы создать шаблон из строки нам нужен экземпляр Twig_Environment, который для получения данных, использует класс Twig_Loader_String. Есть несколько способов, как вы можете это сделать, самый простой способ - это создать экземпляр Twig_Environment и и в качестве загрузчика передать ему экземпляр класса Twig_Loader_String (этот код можно поместить внутри вашего контроллера):

Читать далее...