Hi all!
You probably know about Controller tests described in Zend Framework (ZF) manual.
There is a known problem with memory usage in Zend\Test\PHPUnit\Controller\AbstractHttpControllerTestCase. It is allocated about 10 Mb for each test in PHP 5.6 or 6 Mb in PHP 7.1.
Upgrading to the last PHP version is the first step of optimization. In that case you will save 40% of memory. Also this upgrade is required for the next optimization step.
Бложек PHP программиста
Monday, 5 June 2017
Monday, 11 November 2013
Sunday, 5 June 2011
Ссылки в PHP и foreach
Перевод записи из блога Johannes Schlüter http://schlueters.de/blog/archives/141-References-and-foreach.html
Ссылки в PHP плохие. Как я уже говорил ранее, вам стоит избегать их использования. Теперь есть ещё один вариант использования, что приводит к неожиданному поведению, использование которого я не видел в реальной жизни, но было несколько докладов об этой ошибке, и недавно друг спросил меня об этом ... вот он:
Какой результат выполнения этого кода:
Для понимания, почему это происходит давайте вернемся на шаг назад и посмотрим на то, как реализованы переменные в PHP и что такое ссылки:
Ссылки в PHP плохие. Как я уже говорил ранее, вам стоит избегать их использования. Теперь есть ещё один вариант использования, что приводит к неожиданному поведению, использование которого я не видел в реальной жизни, но было несколько докладов об этой ошибке, и недавно друг спросил меня об этом ... вот он:
Какой результат выполнения этого кода:
<?php $a = array('a', 'b', 'c', 'd'); foreach ($a as &$v) { } foreach ($a as $v) { } print_r($a); ?>Мы дважды проводим итерацию по массиву, ничего не делая. Так что в результате никаких изменений не должно быть. Правильно? - Неправильно! Актуальный результат выглядит следующим образом:
Array ( [0] => a [1] => b [2] => c [3] => c )
Для понимания, почему это происходит давайте вернемся на шаг назад и посмотрим на то, как реализованы переменные в PHP и что такое ссылки:
Wednesday, 1 June 2011
LG Optimus One (LG P500) - опыт использования
Перед этим
Начну немного из далека. Предшественником оптимуса был LG G1800. Это замечательный телефон, который был со мной лет пять или шесть (да и сейчас остается, просто в ящике лежит). За все время не было никаких проблем и поломок, вообще. Даже множественные падения на асфальт (когда он не просто падал плашмя, а отбивался как мячик несколько раз и вылетала батарея и я думал "теперь уж точно п****ц"), оставили на нём только небольшие царапины. На данный момент он в отличном состоянии и батарея держит заряд как новая, очень долго, 5-10 дней (немного раздражало когда он несколько дней мог издавать периодический звуковой сигнал, сообщая о низком заряде). Ещё интересный момент, у него адская вибрация, знакомые даже подшучивали, что ношу в кармане вибратор. В общем, тогда я приобрел за небольшую сумму качественный продукт, который оставил исключительно положительные эмоции.
Фото LG G1800 для разбавки текста
Пришло время
Если честно, LG G1800 меня полностью устраивал во всем, но я все чаще начал задумываться о том, что ходить с таким телефоном как-то не комильфо. И вот, после нового года, я серьезно задумался о покупке смартфона на базе ОС Android. Поскольку я во флагмане не нуждаюсь, да и лишних денег на понты нет, выбрал бюджетный сегмент. Немного изучив представленные на рынке смартфоны выбор пал на LG Optimus One (LG P500).
Фото LG Optimus One для разбавки текста
Обзоров этого смартфона на просторах интернета пруд пруди, поэтому я опишу проблемы с которыми столкнулся лично, ну и общее впечатление.
Начну немного из далека. Предшественником оптимуса был LG G1800. Это замечательный телефон, который был со мной лет пять или шесть (да и сейчас остается, просто в ящике лежит). За все время не было никаких проблем и поломок, вообще. Даже множественные падения на асфальт (когда он не просто падал плашмя, а отбивался как мячик несколько раз и вылетала батарея и я думал "теперь уж точно п****ц"), оставили на нём только небольшие царапины. На данный момент он в отличном состоянии и батарея держит заряд как новая, очень долго, 5-10 дней (немного раздражало когда он несколько дней мог издавать периодический звуковой сигнал, сообщая о низком заряде). Ещё интересный момент, у него адская вибрация, знакомые даже подшучивали, что ношу в кармане вибратор. В общем, тогда я приобрел за небольшую сумму качественный продукт, который оставил исключительно положительные эмоции.
Фото LG G1800 для разбавки текста
Пришло время
Если честно, LG G1800 меня полностью устраивал во всем, но я все чаще начал задумываться о том, что ходить с таким телефоном как-то не комильфо. И вот, после нового года, я серьезно задумался о покупке смартфона на базе ОС Android. Поскольку я во флагмане не нуждаюсь, да и лишних денег на понты нет, выбрал бюджетный сегмент. Немного изучив представленные на рынке смартфоны выбор пал на LG Optimus One (LG P500).
Фото LG Optimus One для разбавки текста
Обзоров этого смартфона на просторах интернета пруд пруди, поэтому я опишу проблемы с которыми столкнулся лично, ну и общее впечатление.
Tuesday, 31 May 2011
Руководство по Image_3D: Суммарно, Скачать, Ресурсы, Об авторе (части 10, 11, 12, 13 из 13)
Перевод заключительных четырех частей руководства по PEAR пакету Image_3D, оригиналы
http://www.ibm.com/developerworks/opensource/tutorials/os-php-3d/section10.html
http://www.ibm.com/developerworks/opensource/tutorials/os-php-3d/downloads.html
http://www.ibm.com/developerworks/opensource/tutorials/os-php-3d/resources.html
http://www.ibm.com/developerworks/opensource/tutorials/os-php-3d/authors.html
Суммарно
Image_3D является легким пакетом PEAR в плане настройки и использования в PHP для динамической генерации изображений. Интерфейс классов должен быть понятным для тех, кто пользовался ими в PHP 5. Вы исследовали все типы объектов включенных в пакет, в именно - источников света, цвета и преобразований. Вы также рассмотрели, как взять простые сценарии командной строки и создать более сложные приложения, а также стратегию, благодаря которой можно сделать их пригодными для использования даже в Интернете. Наконец, вы разработали простой класс, который может управлять созданием круговых диаграмм, ваш руководитель будет пускать слюни.
Не все примеры будут вам сразу же полезным или пригодным для использования. Помните, что этот пакет все еще находится в альфа-версии. Если вы найдете отсутствующую или неработающую функциональность, сообщите в список пожеланий PEAR.
http://www.ibm.com/developerworks/opensource/tutorials/os-php-3d/section10.html
http://www.ibm.com/developerworks/opensource/tutorials/os-php-3d/downloads.html
http://www.ibm.com/developerworks/opensource/tutorials/os-php-3d/resources.html
http://www.ibm.com/developerworks/opensource/tutorials/os-php-3d/authors.html
Суммарно
Image_3D является легким пакетом PEAR в плане настройки и использования в PHP для динамической генерации изображений. Интерфейс классов должен быть понятным для тех, кто пользовался ими в PHP 5. Вы исследовали все типы объектов включенных в пакет, в именно - источников света, цвета и преобразований. Вы также рассмотрели, как взять простые сценарии командной строки и создать более сложные приложения, а также стратегию, благодаря которой можно сделать их пригодными для использования даже в Интернете. Наконец, вы разработали простой класс, который может управлять созданием круговых диаграмм, ваш руководитель будет пускать слюни.
Не все примеры будут вам сразу же полезным или пригодным для использования. Помните, что этот пакет все еще находится в альфа-версии. Если вы найдете отсутствующую или неработающую функциональность, сообщите в список пожеланий PEAR.
Monday, 30 May 2011
Руководство по Image_3D: Возвращение к практическим примерам (часть 9 из 13)
Перевод девятой части руководства по PEAR пакету Image_3D, оригинал http://www.ibm.com/developerworks/opensource/tutorials/os-php-3d/section9.html
Возвращение к практическим примерам
Пока, примеры которые вы видели демонстрировали возможности этого пакета для создания 3D изображения в PHP. Кто бы мог подумать, что этот язык, который был изобретен для управления веб-страницами, может быть использован для создания таких сложных графических файлов? Ну вот все прекрасно и замечательно, но если вы не 3D волшебник или вычислительная машина, вам может быть скучно. Давайте посмотрим, как вы можете взять ваши простые объекты и сценарии командной строки и воссоздать несколько интересных примеров.
Анимация 3D изображений
Графическая библиотека GD в прошлом имела поддержку изображений в формате GIF. Из-за проблем лицензирования, поддержка GIF-изображений была удалена из GD после V1.6, хотя это было восстановлено в V2.0.28. В любом случае, Image_3D не может экспортировать анимированные GIF изображения, а PNG файлы не поддерживают анимацию.
Вместо того чтобы создавать один файл, который будет играть циклические анимации, давайте посмотрим, как вы можете взять несколько файлов для создания анимации. Вы расширите пример с кубом сфер, генерирующий 30 отдельных файлов. В результате при просмотре анимации вы увидите вращающийся куб вокруг двух осей.
Возвращение к практическим примерам
Пока, примеры которые вы видели демонстрировали возможности этого пакета для создания 3D изображения в PHP. Кто бы мог подумать, что этот язык, который был изобретен для управления веб-страницами, может быть использован для создания таких сложных графических файлов? Ну вот все прекрасно и замечательно, но если вы не 3D волшебник или вычислительная машина, вам может быть скучно. Давайте посмотрим, как вы можете взять ваши простые объекты и сценарии командной строки и воссоздать несколько интересных примеров.
Анимация 3D изображений
Графическая библиотека GD в прошлом имела поддержку изображений в формате GIF. Из-за проблем лицензирования, поддержка GIF-изображений была удалена из GD после V1.6, хотя это было восстановлено в V2.0.28. В любом случае, Image_3D не может экспортировать анимированные GIF изображения, а PNG файлы не поддерживают анимацию.
Вместо того чтобы создавать один файл, который будет играть циклические анимации, давайте посмотрим, как вы можете взять несколько файлов для создания анимации. Вы расширите пример с кубом сфер, генерирующий 30 отдельных файлов. В результате при просмотре анимации вы увидите вращающийся куб вокруг двух осей.
Sunday, 29 May 2011
Руководство по Image_3D: Дополнительные драйверы вывода (часть 8 из 13)
Перевод восьмой части руководства по PEAR пакету Image_3D, оригинал http://www.ibm.com/developerworks/opensource/tutorials/os-php-3d/section8.html
Дополнительные драйверы вывода
До сих пор все изображения, которые вы создали, использовали драйвер GD. Вы видели, что этот драйвер производит изображения в формате PNG, но в вашем распоряжении есть ещё четыре дополнительных драйвера: SVG, SVGRotate, ZBuffer, и ASCII.
Дополнительные драйверы вывода
До сих пор все изображения, которые вы создали, использовали драйвер GD. Вы видели, что этот драйвер производит изображения в формате PNG, но в вашем распоряжении есть ещё четыре дополнительных драйвера: SVG, SVGRotate, ZBuffer, и ASCII.
Saturday, 28 May 2011
Руководство по Image_3D: Пользовательские формы и поверхности (часть 7 из 13)
Перевод седьмой части руководства по PEAR пакету Image_3D, оригинал http://www.ibm.com/developerworks/opensource/tutorials/os-php-3d/section7.html
Пользовательские формы и поверхности
Существуют два объекта, которые позволяют создавать больше пользовательских объектов в Image_3D: полигоны и карты.
Создание полигонов
Предположим, что вы можете наметить 3D форму с помощью многомерных координат, вы можете поместить эти координаты вместе, чтобы построить стороны 3D объекта. Проделав некоторые тщательные расчеты, используя точки и полигоны, можно построить кубы, конусы или сферы с нуля. Но существуют простые методы для создания этих объектов.
Пользовательские формы и поверхности
Существуют два объекта, которые позволяют создавать больше пользовательских объектов в Image_3D: полигоны и карты.
Создание полигонов
Предположим, что вы можете наметить 3D форму с помощью многомерных координат, вы можете поместить эти координаты вместе, чтобы построить стороны 3D объекта. Проделав некоторые тщательные расчеты, используя точки и полигоны, можно построить кубы, конусы или сферы с нуля. Но существуют простые методы для создания этих объектов.
Friday, 27 May 2011
Руководство по Image_3D: Дополнительные объекты (часть 6 из 13)
Перевод шестой части руководства по PEAR пакету Image_3D, оригинал http://www.ibm.com/developerworks/opensource/tutorials/os-php-3d/section6.html
Дополнительные объекты
Вы уже рассмотрели много подробностей о освещении, цвете и расположении вашего конуса. Давайте вернемся к рассмотрению какие еще типы объектов могут быть созданы в Image_3D.
Кубы
Как конусы, кубы еще один простой объект для создания. Только для их создания необходимо небольшое количество полигонов и, не взирая на размер, все кубы имеют один уровень детализации. При создании куба, второй параметр для createObject() является массивом из трех значений: ширина, высота и глубина куба.
Дополнительные объекты
Вы уже рассмотрели много подробностей о освещении, цвете и расположении вашего конуса. Давайте вернемся к рассмотрению какие еще типы объектов могут быть созданы в Image_3D.
Кубы
Как конусы, кубы еще один простой объект для создания. Только для их создания необходимо небольшое количество полигонов и, не взирая на размер, все кубы имеют один уровень детализации. При создании куба, второй параметр для createObject() является массивом из трех значений: ширина, высота и глубина куба.
Thursday, 26 May 2011
Руководство по Image_3D: Изменение объектов и форм (часть 5 из 13)
Перевод пятой части руководства по PEAR пакету Image_3D, оригинал http://www.ibm.com/developerworks/opensource/tutorials/os-php-3d/section5.html
Изменение объектов и форм
Если вы когда-либо использовали инструмент преобразования в Adobe Photoshop, вы, вероятно, знакомы с его способностью перемещать, масштабировать, вращать, и наклонять элементы. Метод transform() для 3D объектов и пространств является аналогичным инструментом.
Изменение объектов и форм
Если вы когда-либо использовали инструмент преобразования в Adobe Photoshop, вы, вероятно, знакомы с его способностью перемещать, масштабировать, вращать, и наклонять элементы. Метод transform() для 3D объектов и пространств является аналогичным инструментом.
Subscribe to:
Posts (Atom)