Новые книги

Эта книга посвящена теории колорита в живописи. Но возможна ли вообще такая теория? Чувство цвета едва ли не самое субъективное из человеческих чувств. О чем здесь можно говорить и спорить?

Ответим так. Изучать нужно не только объективное, изучать нужно и субъективное и даже субъективнейшее. Человеческие чувства отражают объективный мир, и сама их субъективность воспитана, создана объективным ходом развития общества. И что бы ни говорили скептики и невежды, уже существует научная теория восприятия цвета, существует и развивается в научных спорах.

Научная теория восприятия цвета существует. Она нужна. Но нужна ли и возможна ли теория колорита, теория живописи и вообще теория искусства — этой «субъективнейшей» области человеческой практики, теория проявлений редкого таланта?

Мне приходилось слышать возражения вроде следующего.

Мы понимаем, что теория машин и механизмов нужна. На основе этой теории можно построить хорошие машины. Но разве возможно на основе теории живописи написать хорошие картины, и в частности на основе теории колорита найти яркие цветовые решения? Это дело таланта. Теория искусства, по мысли подобных скептиков, — бессмысленная затея.

Ответим так. Представление о связи теории и практики у подобных скептиков наивно. Существуют теории языка и теории отдельных языковых форм — фонетика, морфология, синтаксис. Но никому не приходит в голову, что задача теории языка — создавать новые языки. Кстати сказать, — к стыду работников изофронта — существуют теория литературы, поэтика и теория музыки, которые также не создают эталонов для хороших повестей, поэм и симфоний и не ставят себе подобных нелепых задач.

Теория языка нужна для обучения языку, для того, чтобы охранять чистоту и помогать правильному и гибкому использованию его форм, для того чтобы легче усваивать структуру и оттенки чужих языков. Разве теория живописи, и в частности теория колорита, не может помочь решению аналогичных практических задач? Отрицание связи между наукой и художественной практикой противоречит традициям русского передового искусства. К. С. Станиславский, формулируя понятия сценического искусства, выражал сожаление, что психология не дала в руки актеру этих понятий. Он сознавал — в противоположность снобам от искусства — несовершенство своих попыток говорить о законах сцены и упрекал ученых в отсутствии нужной теории 1.

Так говорил еще Станиславский. Что же должны сказать мы, в наши дни?

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

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

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

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

Читая книгу «Ваш интернет-магазин от А до Я», вы с головой погрузитесь в увлекательный мир электронной коммерции, сможете значительно повысить эффективность бизнеса интернет-магазина, либо создать новый, сделав всё правильно с первого раза.

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

Работа с Переменным Количеством Аргументов/Необязательных Параметров

Работа с Переменным Количеством Аргументов/Необязательных Параметров

Учебник РНР
НазадГлава 33. Приём аргументов Вперёд

Работа с переменным количеством аргументов/необязательных параметров

Если предполагается, что ваша функция принимает переменное количество аргументов, то рассматриваемые здесь примеры кода могут послужит более или менее оптимальным решением. Вы должны создать строку, вызывающую zend_get_parameters_ex(), для каждого возможного количества аргументов, что часто бывает не лучшим решением.

В таком случае вы можете использовать функцию zend_get_parameters_array_ex(), которая принимает количество запрашиваемых параметров и массив для их хранения:

zval **parameter_array[4];

/* получить количество аргументов */
argument_count = ZEND_NUM_ARGS();

/* посмотреть, удовлетворяет ли минимальному запросу (2 аргумента) */
/* и максимальному количеству (4 аргумента) */
if(argument_count < 2 || argument_count > 5)
    WRONG_PARAM_COUNT;

/* количество аргументов корректно, теперь запрашиваем их */
if(zend_get_parameters_array_ex(argument_count, parameter_array) != SUCCESS)
    WRONG_PARAM_COUNT;

Сначала проверяется, находится ли количество аргументов в пределах требуемого диапазона. После этого zend_get_parameters_array_ex() используется для заполнения parameter_array правильными указателями на значения аргументов.

Очень удачный способ можно найти в коде, работающем с fsockopen() , находящемся в ext/standard/fsock.c, как показано в Листинге 9.7. Не волнуйтесь, если вы ещё не знаете всех функций, использованных в этом исходнике; мы кратко остановимся на них.

Рисунок 33-2. Листинг 9.7. PHP-реализация переменного количества аргументов в fsockopen()
pval **args[5];
int *sock=emalloc(sizeof(int));
int *sockp;
int arg_count=ARG_COUNT(ht);
int socketd = -1;
unsigned char udp = 0;
struct timeval timeout = { 60, 0 };
unsigned short portno;
unsigned long conv;
char *key = NULL;
FLS_FETCH();

if (arg_count > 5 || arg_count < 2 || zend_get_parameters_array_ex(arg_count,args)==FAILURE) {
    CLOSE_SOCK(1);
    WRONG_PARAM_COUNT;
}

switch(arg_count) {
    case 5:
        convert_to_double_ex(args[4]);
        conv = (unsigned long) (Z_DVAL_P(args[4]) * 1000000.0);
        timeout.tv_sec = conv / 1000000;
        timeout.tv_usec = conv % 1000000;
        /* fall-through */
    case 4:
       if (!PZVAL_IS_REF(*args[3])) {
        php_error(E_WARNING,"error string argument to fsockopen not passed by reference");
       }
        pval_copy_constructor(*args[3]);
        ZVAL_EMPTY_STRING(*args[3]);
        /* fall-through */
    case 3:
        if (!PZVAL_IS_REF(*args[2])) {
            php_error(E_WARNING,"error argument to fsockopen not passed by reference");
            return;
        }
        ZVAL_LONG(*args[2], 0);
        break;
}

convert_to_string_ex(args[0]);
convert_to_long_ex(args[1]);
portno = (unsigned short) Z_LVAL_P(args[1]);

key = emalloc(Z_STRLEN_P(args[0]) + 10);

fsockopen() принимает два, три, четыре или пять аргументов. После обязательного объявления переменных эта функция проверяет корректность диапазона аргументов. Затем она использует механизм fall-through в операторе switch() для работы со всеми аргументами. Оператор switch() начинается с максимального количества передаваемых аргументов (пять). После этого она автоматически проходит case четырёх передаваемых аргументов, затем трёх, пропуская обязательное ключевое слово break на всех этапах. После обработки последнего case функция выходит из оператора switch() и выполняет минимальный необходимый процессинг, если функция вызвана с двумя аргументами.

Этот многоступенчатый процесс позволяет обрабатывать переменное количество аргументов.


Назад Оглавление Вперёд
Старый способ получения аргументов (не рекомендуется) Вверх Доступ к аргументам