%Q, %q, %W, %w, %x, %r, %s

Simple Ruby on Rails

%Q | %q | %W | %w | %x | %r | %s

 
%Q
This is an alternative for double-quoted strings, when you have more quote characters in a string.Instead of putting backslashes in front of them, you can easily write:

>> %Q(Joe said: "Frank said: "#{what_frank_said}"")
=> "Joe said: "Frank said: "Hello!"""

The parenthesis “()” can be replaced with any other non-alphanumeric characters and non-printing characters (pairs), so the following commands are equivalent:

>> %Q!Joe said: "Frank said: "#{what_frank_said}""!
>> %Q[Joe said: "Frank said: "#{what_frank_said}""]
>> %Q+Joe said: "Frank said: "#{what_frank_said}""+

You can use also:

>> %/Joe said: "Frank said: "#{what_frank_said}""/
=> "Joe said: "Frank said: "Hello!"""


%q
Used for single-quoted strings.The syntax is similar to %Q, but single-quoted strings are not subject to expression substitution or escape sequences.

>> %q(Joe said: 'Frank said: '#{what_frank_said} ' ') => "Joe said: 'Frank said: '\#{what_frank_said}…

View original post 137 more words

Symfony, Symfony2, PHP – прощайте

С пол года назад закончилось то время, когда я писал на PHP, использовал фреймворк Symfony, я страстно защищал свою привязанность к данным технологиям, видел в них собственное будущее и тп. Но, я перешел на написание кода на Ruby и фреймворк Ruby on Rails, теперь я понимаю, что PHP это полный отстой, в нем все очень долго приходится делать и все получается громоздким и медленным, возможно кто-то со мной не согласится, но это не мои проблемы, рельсы мне нравятся хотя иногда и встречается некая магия, которая больше походит на перловые вставки, но в целом все очень хорошо. Возможно кто-то станет говорить, что рельсы тяжелые и много требуют ресурсов, но я этого не замечаю, все работает быстро, не так как в симфони. Можно еще долго производить высер мыслей, но это мое прощание с PHP =)

Symfony 2: Controller

Использование форматов

В настоящее время веб-приложения представляют из себя большее, чем просто HTML странички. Начиная от XML для RSS фидов или веб-сервисов, и заканчивая JSON для Ajax запросов, они имеют множество различных форматов для выбора. Эти форматы полностью поддерживаются Symfony 2.

Read more of this post

symfony 2 разрешаем слешь на конце url

Решение 1: если поставить “/” на конце маршрута, например так
contact:

    pattern: /contact/
    defaults: { _controller: "WebsiteProjectBundle:Home:contact"}

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

Решение 2: /web/.htaccess:

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{HTTPS} =on
 RewriteRule ^(.+)/$ https://%{HTTP_HOST}/$1 [R=301,L]
 RewriteCond %{HTTPS} =off
 RewriteRule ^(.+)/$ http://%{HTTP_HOST}/$1 [R=301,L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*)$ app.php [QSA,L]
 #<IfModule mod_vhost_alias.c>
 # RewriteBase /
 #</IfModule>
</IfModule>

Решение 3: How to allow a “/” character in a route parameter

решения 1 и 2 скопированы с хабра

Склонение слов в PHP после цифр

Довольно частой задачей на PHP является склонение слов, которые идут после какого-либо числа, например, 1 день, 2 дня, 5 дней или 1 раз, 2 раза, 5 раз или 1 год, 2 года, 5 лет.

Read more of this post

symfony 2 логин в контроллере

получаем пользователя

$userManager = $this->get('fos_user.user_manager');
$user = $userManager->findUserById($id);

теперь залогинем его:

$providerKey = $this->container->getParameter('fos_user.firewall_name');
$token = new UsernamePasswordToken($user, null, $providerKey, $user->getRoles());
$this->container->get('security.context')->setToken($token);

Zoomify в сплывающем окне + увеличение скролом

Добавляем всплывающее окно с zoomify, увеличение скролом мышки и не показываем карту при просмотре в браузере

сам проект: http://zoomify.eddifisher.co.cc

Работа с скролом: Brandon Aaron

Определение мобильного браузера: http://detectmobilebrowsers.com

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

заменил на MobileESP – http://www.hand-interactive.com

  • все просто и понятно
  • есть доки и примеры
  • поддержка платформ: Android, Symbian S60, Windows Mobile, BlackBerry, Java J2ME, UIQ, PalmOS, and the Apple iPhone

Ссылка на githab: map project

Doctrine 2, UTF8

Открываем код. Находим файл doctrine-dbal/lib/Doctrine/DBAL/Schema/Schema.php

ищем строку “new Table“. Она там одна, код выглядит как-то так:

<?php
/**
     * Create a new table
     * 
     * @param  string $tableName
     * @return Table
     */
    publicfunction createTable($tableName)
    {
        $table=new Table($tableName);
        $this->_addTable($table);
        return$table;
    }
?>

Добавляем в конструктор объекта Table параметры:

array(),array(),array(),0,array('charset'=>'utf8','collate'=>'utf8_general_ci')

Получится что-то типа такого:

<?php
/**
     * Create a new table
     * 
     * @param  string $tableName
     * @return Table
     */
    publicfunction createTable($tableName)
    {
        $table=new Table($tableName,array(),array(),array(),0,array('charset'=>'utf8','collate'=>'utf8_general_ci'));
        $this->_addTable($table);
        return$table;
    }
?>

скопировано с: http://png-tech.blogspot.com/2011/09/utf8-doctrine-2.html

Как найти всех родителей элемента в иерархическом (древовидном) массиве

Задача: Нужно, зная ключ элемента, найти всех его родителей Read more of this post

Поменять местами элементы массива

Меняем местами элементы массива Read more of this post