Friday, September 23, 2011

Comparison of float values in PHP

That surprise is not pleasant at all. Especially if you work with money.
<?php
  $a = 0.1 + 0.7;
  $b = 0.8;
  var_dump($a, $b, $a == $b); 

// float(0.8) float(0.8) bool(false) 
?>
To avoid this type of problems let's follow the advice of Richard Johnson, that was published in the April 2013 issue of Web & PHP magazine:
"Be sure you are using ints and working in the smallest non-divisible monetary value (cents or pence). Alternatively make use of the BC or GMP maths functions which can also be useful if you need to do precise decimal operations."

Sunday, September 11, 2011

What php.ini file is used by console

If you are not sure about what php.ini file is used by console, you can find out that by some methods. There is one of them. You can do it by parsing information about php, that will be displayed by php -i.
php -i | grep php\.ini
or
find / -name php.ini 

Monday, June 27, 2011

ACL - access control list

An access control list (ACL), with respect to a computer file system, is a list of permissions attached to an object. An ACL specifies which users or system processes are granted access to objects, as well as what operations are allowed on given objects. Each entry in a typical ACL specifies a subject and an operation. For instance, if a file has an ACL that contains (Alice, delete), this would give Alice permission to delete the file. (c) wikipedia There is a useful article from Symfony tutorial with good explanation http://symfony.com/doc/current/cookbook/security/acl_advanced.html

Friday, June 24, 2011

Некоторые настройки стандартного набора Symfony под Ubuntu

Некоторые установки, которые понадобились мне при настройке стандартного набора Symfony под Ubuntu.

Установка PHP Accelerator (APC)
sudo apt-get install php-apc
sudo apt-get install php5-intl
sudo service apache2 restart

Monday, May 16, 2011

Функция sprintf в PHP

Сегодня речь пойдет о функции sprintf. Она предоставляет целый спектр возможностей для форматирования текста.

Напомним основное. Таково описание функции.
string sprintf ( string format [, mixed args] )
где
$format - это некий шаблон, в который в результате выполнения функции подставляются заданные нами значения $args

Например, с помощью sprintf можно форматировать число, дополняя его нулями до нужной нам длины. Делается это так:
print(sprintf("Это %03d", 15));
Получим вывод:
Это 015
Расшифруем шаблон "Это %03d", который мы передали функции.
Все шаблоны для подстановки начинаются с символа "%".
Мы задали аргумент 15 и этим шаблоном показали функции отформатировать число так, чтобы оно состояло из 3 символов - "Это %03d".
Также, тот факт, что недостаюшие символы дополнились нулями, не случаен - мы задали это в шаблоне, написав "Это %03d".
Мы могли написать так "Это %3d", тогда недостаюшие символы дополнились бы пробелами. Потому что пробел - это значение по умолчанию.
Также значением по умолчанию является и тот факт, что дополнение нулей происходит слева.
В нашем примере мы передавали в качестве аргумента 15, т.е. значение типа integer. Символ "d" появляется в шаблоне в связи с этим. В этом случае аргумент трактуется как integer. "Это %03d". Если бы в качестве аргумента нужно было передать строку, мы бы использовали "s" вместо "d".

А вдруг нам не нужны нули, а нужен, например, символ "$"?
Тогда нам следует воспользоваться символом " ' ".
Шаблон будет выглядеть так: "%'$3d"
Получим вывод:
$15
Если мы хотим, чтобы дополнение происходило не с левой, а с правой стороны, то нужно воспользоваться символом "-"
Шаблон будет выглядеть так: "%'$-3d"
На этот раз получим вывод:
15$
Это только малая доля возможностей, предоставленных функцией sprintf, которые более подробно можно изучить конечно же в мануале ;).

Wednesday, May 11, 2011

Установка Apache, PHP и MySQL на Ubuntu.

Я ставила на Ubuntu 11.04. Без проблем поставилось, проверенный вариант.

Установка Apache

Открываем терминал, и выполняем:
sudo apt-get install apache2
Для запуска и останова Apache2 используем:
sudo invoke-rc.d apache2 start
sudo invoke-rc.d apache2 stop
После запуска Apache2 можно проверить работу сервера перейдя в браузере на страницу http://localhost

Установка PHP

Tuesday, May 3, 2011

Блоки и итераторы в Ruby

В Ruby блоки кода могут использоваться для того, чтобы создавать функции обратного вызова, а также итераторы.
Блоки кода - это то, что находится между скобками { } или do... end

Это блок:
{puts "Hi, man"}
И это тоже блок:
do
  food.buy("bread")
  bread.put
end
Итак, есть два варианта оформить блок. В чем разница?
Вообще, скобки { } более тесно связаны между собой, чем пара do/end.
Можно придерживаться стиля, когда скобки используют, чтобы оформить блок в одну строку, а пару do/end - чтобы оформить блок, который занимает больше одной строки.

Monday, April 25, 2011

Структура корневого каталога системы Ubuntu

Во-первых, корневой каталог / это папка File System.
Во-вторых, значок ~, то есть тильда, это домашняя директория пользователя.

Дальше идет не мое описание. Взято отсюда http://myubuntu.ru/faq/struktura-fajlovoj-sistemy-ubuntu/

Мне удобно, чтобы было под рукой, в связи c моим переездом на Ubuntu.

Структура файловой системы Ubuntu очень сильно отличается от структуры Windows. И у новых пользователей, на первых порах, при переходе с Windows на Ubuntu, возникает много вопросов. Рассмотрим, что хранится в том или ином каталоге.