Показаны сообщения с ярлыком dev. Показать все сообщения
Показаны сообщения с ярлыком dev. Показать все сообщения

пятница, 1 ноября 2013 г.

Автозаполнение полей autocomplete="off"

Для каждого текстового поля, которое вы создаёте, на автомате прикидывайте, будет ли пользователю польза от автозаполнения в этом поле. Если нет, то отключайте. 

Кстати, автозаполнение по умолчанию можно отключить для всей формы,
используя <form autocomplete="off">, а затем при необходимости включить для отдельных полей.

Отблагодарить можно через форму справа "Donate" ... )

To reward you via the form on the right "Donate" ... )

:)

суббота, 7 сентября 2013 г.

Zend Framework 2, create table, unsigned colum, modify class

<?php
/**
 * Zend Framework (http://framework.zend.com/)
 *
 * @link      http://github.com/zendframework/zf2 for the canonical source repository
 * @copyright Copyright (c) 2005-2013 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd New BSD License
 */

namespace Zend\Db\Sql\Ddl\Column;

class Column implements ColumnInterface
{
    /**
     * @var null|string|int
     */
    protected $default = null;

    /**
     * @var bool
     */
    protected $isNullable = false;

    /**
     * @var bool
     */
    protected $isUnsigned = false;

    /**
     * @var string
     */
    protected $name = null;

    /**
     * @var array
     */
    protected $options = array();

    /**
     * @var string
     */
    protected $specification = '%s %s';

    /**
     * @var string
     */
    protected $type = 'INTEGER';

    /**
     * @param null|string $name
     */
    public function __construct($name = null)
    {
        (!$name) ?: $this->setName($name);
    }

    /**
     * @param  string $name
     * @return self
     */
    public function setName($name)
    {
        $this->name = $name;
        return $this;
    }

    /**
     * @return null|string
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * @param  bool $nullable
     * @return self
     */
    public function setNullable($nullable)
    {
        $this->isNullable = (bool) $nullable;
        return $this;
    }

    /**
     * @return bool
     */
    public function isNullable()
    {
        return $this->isNullable;
    }

    /**
     * @param  null|string|int $default
     * @return self
     */
    public function setDefault($default)
    {
        $this->default = $default;
        return $this;
    }

    /**
     * @return null|string|int
     */
    public function getDefault()
    {
        return $this->default;
    }

    /**
     * @param  array $options
     * @return self
     */
    public function setOptions(array $options)
    {
        $this->options = $options;
        return $this;
    }

    /**
     * @param  string $name
     * @param  string $value
     * @return self
     */
    public function setOption($name, $value)
    {
        $this->options[$name] = $value;
        return $this;
    }

    /**
     * @return array
     */
    public function getOptions()
    {
        return $this->options;
    }


    public function setUnsigned($unsigned)
    {
        $this->isUnsigned = (bool) $unsigned;
        return $this;
    }

    /**
     * @return array
     */
    public function getExpressionData()
    {
        $spec = $this->specification;

        $params   = array();
        $params[] = $this->name;
        $params[] = $this->type;

        $types = array(self::TYPE_IDENTIFIER, self::TYPE_LITERAL);

        if ($this->isUnsigned) {
            $params[1] .= ' unsigned';
        }

        if (!$this->isNullable) {
            $params[1] .= ' NOT NULL';
        }

        if ($this->default !== null) {
            $spec    .= ' DEFAULT %s';
            $params[] = $this->default;
            $types[]  = self::TYPE_VALUE;
        }

        return array(array(
            $spec,
            $params,
            $types,
        ));
    }
}

Отблагодарить можно через форму справа "Donate" ... )

To reward you via the form on the right "Donate" ... )

:)

четверг, 4 апреля 2013 г.

Eclipse «Contacting Software Sites» has encountered a problem "Cannot assign requested address: connect"


Сегодня столкнулся с очередной проблемой, которая как-всегда подкралась незаметно из-за угла. Дело обстояло следующим образом. После скачивания Eclipse Indigo 3.7 и запуска его в JVM 7 я обычно ставлю плагины, которые облегчают программирование, например подсветку синтаксиса в окне редактора, или авто дополнение кода JavaScript и т.п. После того, как я зашел в установку программ (Help ->Install New Software…) появилось сообщение «Problem Occurred»
Вот текст того, что написано при нажатии Details:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Some sites could not be found.  See the error log for more detail.
Cannot assign requested address: connect
Cannot assign requested address: connect
Unable to read repository at http://andrei.gmxhome.de/eclipse/site.xml.
Cannot assign requested address: connect
Cannot assign requested address: connect
Cannot assign requested address: connect
Cannot assign requested address: connect
Cannot assign requested address: connect
Cannot assign requested address: connect
Само окно с ошибкой представлено на скриншоте:
Ошибка загрузки сайтов обновленийАналогичное сообщение о том, что Eclipse не может найти сайты с обновлениями, получаем и при добавлении какого-нибудь Update сайта для установки дополнений в Eclipse.
Решение проблемы оказалось как-всегда не тривиальным, но легким. Для этого необходимо открыть файл настроек Eclipse — eclipse.ini и вставить в конец него следующую строку:
1
-Djava.net.preferIPv4Stack=true
Из-за чего собственно проблема? Да из-за того, что попытки достучатся до сайта обновлений происходили по протоколу IPv6, а он у провайдера не поддерживается, поэтому мы принудительно заставляем использовать протокол IPv4.
Теперь после сохранения настроек и перезапуска Eclipse — никаких ошибок об отсутствующем сайте обновлений мы не получим.

Отблагодарить можно через форму справа "Donate" ... )

To reward you via the form on the right "Donate" ... )

:)

пятница, 1 марта 2013 г.

Все размеры изображений в Facebook


Отблагодарить можно через форму справа "Donate" ... )

To reward you via the form on the right "Donate" ... )

:)

понедельник, 12 ноября 2012 г.

Для чего нужен jQuery.fn

Каждый кто сталкивался с написанием собственных плагинов на jQuery задавал вопрос — "В чем различие между объявлением функций через jQuery и jQuery.fn?".

Для того, чтобы ответить на поставленный вопрос приведу два примера.

Пример 1.

jQuery
.sayHello = function() {
  alert
('Привет! Найдено ' + this.length + 'элементов' );
}

$
('div').sayHello(); // ничего не происходит


Пример 2.

jQuery
.fn.sayHello = function() {
  alert
('Привет! Найдено ' + this.length + 'элементов' );
}

$
('div').sayHello(); // Выводит "Привет! найдено ХХ элементов", где ХХ - это количество найденных элементов на странице


Если запустить первый пример, то произойдет одно из двух событий — браузер выдаст ошибку (например, если у Вас установлен FireBug) либо не выдаст ничего. А если запустить второй пример, то на экране появится сообщение о количестве найденных элементов.

Прежде чем делать какие-либо выводы, приведу еще один пример:


jQuery
.sayHello = function(elem) {
  alert
('Привет! Найдено ' + elem.length + 'элементов' );
}

jQuery
.sayHello($('div'));


В данном примере, будет выдано сообщение о количестве найденных объектов. 

Думаю теперь у нас достаточно информации, чтобы сделать некоторые выводы:

Вывод 1: Если задать функцию через jQuery.fn, то она будет работать с элементами найденными через функцию $(). Контекст этой функции будет содержать выбранные элементы;

Вывод 2: Если задать функцию через jQuery, то к ней можно обратиться только через глобальный объект jQuery. В таком случае контекст функции будет указывать на глобальный объект window.

Таким образом, если нужно написать плагин, который будет работать только с выбранными объектами, то нужно его создавать в jQuery.fn, а если нам неважно какие элементы страницы были выбраны, то лучше создавать функцию черезjQuery.

Отблагодарить можно через форму справа "Donate" ... )

To reward you via the form on the right "Donate" ... )

:)

друзья )

Сохраняйте и делитесь желаниями, и не забывайте о важных датах! парсинг центр