Symfony 2 Joboard : Интерфейс администратора

После завершения 11 части наше приложение вполне работоспособно. Им могут пользоваться как соискатели, так работодатели. Настало время обсудить администраторскую составляющую нашего сайта. При помощи Sonata Admin Bundle мы полностью реализуем интерфейс администратора менее чем за час.

Чтобы установить последнюю версию бандла, добавьте в файл composer.json следующие строки:

"sonata-project/admin-bundle": "dev-master",
"sonata-project/doctrine-orm-admin-bundle": "dev-master"

Затем запустите команду обновления пакетов composer:

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

Symfony 2 Joboard : Тестирование форм

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

<?php

# src/App/JoboardBundle/Tests/Controller/JobControllerTest.php
// ...

public function testJobForm()
{
   $client  = static::createClient();
   $crawler = $client->request('GET', '/job/new');

   $this->assertEquals('App\JoboardBundle\Controller\JobController::newAction',      $client->getRequest()->attributes->get('_controller'));
}

Теперь воспользуемся методом selectButton() объекта $crawler для получения формы. Этот метод позволяет выбирать элементы с тегом button и поля ввода submit. После этого через метод form() этого же объекта, получим доступ к экземпляру формы:

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

Nested Set

Создание модели для хранения иерархических данных - совсем непростая задача. Что же мы подразумеваем под иерархическими данными? Представьте, что вам необходимо организовать список продуктов по категориям. Например, у вас будет несколько основных категорий: продукты, оборудование, электроника. А далее вам потребуется разбить их на подкатегории, а те в свою очередь, на более узкие категории. На бумаге всё выглядит довольно просто, а вот в таблице СУБД (система управления базами данных) дело обстоит совсем по другому. В этой статье я попробую рассказать об основной идее этой модели и когда её следует применять. Начну с объяснения более простой иерархической модели, а далее перейдём к модели вложенных множеств.

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

Создание CLI приложения на NodeJS

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

Я только что закончил работу над CLI приложением на NodeJS, sike - инструмент для оповещения пользователей через заданный интервал времени, определенное количество раз. Оповещения задаются при помощи командной строки.

Эта статья описывает процесс создания простого cli приложения, которое работает как echo. Пользователь сможет выполнить что-то в этом роде:

cli -m hello

и терминал просто выведет “hello”.

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

Как установить и использовать Redis

Redis был разработан в 2009 году и представляет собой хранилище типа ключ-значение. Следуя опыту таких NoSQL баз данных, как Cassandra, CouchDB и MongoDB, Redis позволяет хранить большой объем данных без ограничений реляционных баз данных. Также его часто сравнивают с memcache, он находит применение в качестве БД для кеширования.

Перед установкой Redis следует учесть пару нюансов. Для начала обновим пакеты apt-get:

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

Symfony 2 Joboard : Формы

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

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

Введение в REDIS-PY

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

redis-py - это библиотека на языке Python для управления NoSQL хранилищем Redis.

Для установки redis-py требуется установленный и запущенный Redis сервер . В [redis’s quickstart] вы найдете инструкцию по установке.

Чтобы установить redis-py выполните:

$ sudo pip install redis

или воспользуйтесь pip

$ sudo easy_install redis

или из исходников

$ sudo python setup.py install

Проверка

>>> import redis
>>> r = redis.StrictRedis(host='localhost', port=6379, db=0)
>>> r.set('foo', 'bar')
True
>>> r.get('foo')
'bar'
Читать далее...

Профилирование запросов в MySQL

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

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

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