kron0s
|
|
|
progg.ru
|
4
proggs |
Tuesday, August 10, 2010 4:46:25 PM GMT
Tuesday, August 10, 2010 10:05:15 AM GMT
Я - большой фанат CodeIgniter, но хотя, этот фреймворк очень хорош собой даже "из коробки", до начала разработки приложения на нем, я всегда добавляю в него несколько библиотек. Одна из них - класс для работы с ACL. Раньше я использовал в своих проектах простой класс, написанный мною, но не так давно решил перейти на довольно функциональный класс из фреймворка Zend (и встроить его в CodeIgniter, само собой). И теперь хочу поделиться этим опытом с моими читателями. »»»
|
|
4
proggs |
Tuesday, August 10, 2010 4:46:25 PM GMT
Tuesday, August 10, 2010 10:01:14 AM GMT
Возможно вы знаете, что PHPExcel можно легко расширить, добавив поддержку новых форматов чтения и записи. Класс PHPExcel - это ядро библиотеки для работы с таблицами, а реализации интерфейсов IReader и IWriter используются для работы с файлами.
В настоящее время, PHPExcel поддерживает Excel2007, Excel5 (Excel 97+), CSV, HTML и PDF. Но в нем нет поддержки таблиц Google Docs! Это легко можно исправить, используя комбинацию следующих технологий: »»»
|
|
3
proggs |
Thursday, July 29, 2010 3:25:32 AM GMT
Wednesday, July 28, 2010 8:06:51 PM GMT
Во многих компаниях принято размещать бизнес-логику в файле Excel. Её создают аналитики и пользователи, которые хотят автоматизировать хотя бы часть их работы с Excel. Эта же бизнес-логика в Excel зачастую дублируется в приложении (на сайте) и ее надо поддерживать уже сразу в двух местах: в фале Excel и на сайте. Тут есть неплохой выход - использовать PHPExcel для выполнения скриптов из Excel-файла, без дублирования их в коде сайта. »»»
|
|
4
proggs |
Monday, July 26, 2010 5:45:01 PM GMT
Monday, July 26, 2010 3:29:25 AM GMT
Несколько недель назад мне пришлось работать с файлами Excel в формате BIFF8 (Excel 97), т.к. заказчик не согласен был на экспорт данных в CSV. SpreadsheetExcelWriter вместе с SpreadsheetExcelReader очень хорошо помогали мне раньше, но только с BIFF5. Поддержка таблиц BIFF8 долгое время была большой проблемой. поэтому я стал искать альтернативы.
После недолгих поисков, я наткнулся на PHPExcel, который поддерживает множество форматов чтения и записи с помощью одного API. Он распространяется по GNU Lesser Ge... »»»
|
|
3
proggs |
Friday, July 23, 2010 5:01:33 AM GMT
Thursday, July 22, 2010 11:43:04 AM GMT
TWIG - Гибкий, быстрый и безопасный шаблонизатор для PHP
Вышла новая версия 0.9.8 »»»
|
|
5
proggs |
Friday, July 23, 2010 9:16:30 AM GMT
Thursday, July 22, 2010 11:22:46 AM GMT
Ах, инлайновые блоки, такие ненадежные и такие заманчивые в использовании, обещающие много, но дающие мало :) Сколько раз я получал PSD файлы с галереями и чуть не плакал...
В нормальном состоянии, такой тип макета - просто сказка. Фиксированная высота, фиксированная ширина, float:left и вот оно - счастье! Но, дизайн должен отображать текст разной длинны, а это значит что один из блоков все разорвет. »»»
|
|
2
proggs |
Tuesday, June 15, 2010 7:48:34 AM GMT
Monday, June 14, 2010 2:43:03 PM GMT
Основные изменения:
изменен синтаксис тэгов set, include и extends
добавлен тэг sandbox
добавлено динамическое наследование шаблонов
и еще немного по мелочи :) »»»
|
|
6
proggs |
Thursday, June 10, 2010 1:19:40 PM GMT
Monday, June 07, 2010 8:13:35 PM GMT
Анонимные функции часто используются в современных языках программирования, они популярны в Ruby, Javascript и Python. А в PHP до версии 5.3 не было истинно анонимных функций. Хотя для начинающих программистов сложно найти им применение, их использование это очень элегантное решение некоторых практических задач. »»»
|
|
4
proggs |
Thursday, June 03, 2010 2:38:59 AM GMT
Wednesday, June 02, 2010 2:12:28 PM GMT
Twig это современный шаблонизатор для PHP
Быстрый: Twig компилирует шаблоны в оптимизированный PHP код. Использование памяти по сравнению с обычным PHP кодом сведено к минимуму.
Безопасный: Twig имеет режим "песочницы" для оценки "ненадежного" кода в шаблонах. Это позволяет использовать Twig в приложениях, где пользователи могут менять содержимое шаблонов.
Гибкий: Twig использует гибко настраиваемые лексический и грамматический анализаторы. Это позволяет разработчику определять свои теги и фильтры, создав... »»»
|
|
6
proggs |
Thursday, March 11, 2010 6:47:04 PM GMT
Tuesday, March 09, 2010 10:14:05 AM GMT
При печати веб-страницы с тегом select на ней, выпадающий список будет выглядеть так же как и на экране.
Конечно, в таком виде он совершенно не нужен и бесполезен. Он может даже скрывать совершенно необходимые детали, важные для понимания того, что напечатано (например, набор параметров продукта). »»»
|
|
6
proggs |
Friday, February 19, 2010 6:29:54 PM GMT
Wednesday, February 17, 2010 6:47:03 AM GMT
Один из клиентов, для которого я делал магазин, с довольно большим количеством продукции, захотел разделить их на сайте по своим особым признакам. У каждого продукта эти признаки свои. Какой-то может быть со скидкой, какой-то иметь "специальную" цену, какой-то быть и вообще бесплатным. Первоначально задумывались специальные страницы для скидок. Но после обсуждения, было решено, что посетителю сайта нет дела до того, почему продукт распродается со скидкой, и разбиение списка с продуктами на разные страницы м... »»»
|
|
9
proggs |
Thursday, February 11, 2010 3:02:47 AM GMT
Friday, February 05, 2010 10:35:08 AM GMT
Файл конфигурации Apache .htaccess (расшифровывается как hypertext access) может быть мощным инструментом для веб-разработчика, если использовать его должным образом. Он может находиться в любой папке вашего сервера и может быть легко изменен в любом текстовом редакторе. В этой статье я расскажу о 20 тонкостях использования .htaccess. »»»
|
|
7
proggs |
Thursday, January 21, 2010 7:31:43 PM GMT
Thursday, January 21, 2010 7:42:21 AM GMT
Раньше я использовал для создания форм в Django не самый лучший способ, но, надеюсь, то как я делаю их теперь - гораздо правильнее.
Решение заключается в использовании type(). Если вы так и делаете, думаю вы не найдете здесь ничего нового. Если же вы возитесь с 'self.fields["name"]' в ваших формах - читайте дальше.
Рассмотрим на примере: сделаем систему опросов. Пусть это будет что-то на подобии игры "Кто хочет стать миллионером?". Т.е. у вас есть вопрос и 4 ответа. Итак две модели... »»»
|
|
6
proggs |
Friday, January 22, 2010 12:52:38 AM GMT
Thursday, January 21, 2010 6:20:37 AM GMT
Форматирование кода на языке Go в SciTe »»»
|
|
9
proggs |
Sunday, January 17, 2010 8:18:19 AM GMT
Thursday, January 14, 2010 9:03:48 AM GMT
В JavaScript ключевое слово this может быть очень коварно. Эта происходит из-за разного поведения функций в зависимости от способа их вызова. Что? Функции можно вызывать по-разному? Ага! Есть 4 основных способа вызова функций. Посмотрим, как работает каждый, и как они обходятся с this.
Вызов метода
Вызов функции
Вызов конструктора
Вызов через apply »»»
|
|
5
proggs |
Tuesday, January 12, 2010 2:20:21 PM GMT
Tuesday, January 12, 2010 6:06:28 AM GMT
Просматривая код многих PHP приложений, я замечаю, что функция method_exists() часто используется неуместно, и думаю, что стоит написать об этом пару слов.
Вот типичный пример того, о чем пойдет речь:
if(method_exists($object,'SomeMethod'))
{
$object->SomeMethod($this,TRUE);
} »»»
|
|
5
proggs |
Monday, January 11, 2010 1:51:49 PM GMT
Saturday, January 09, 2010 7:23:21 AM GMT
Многие функции (и методы) в проекте очень часто возвращают одни и те же значения при тех же аргументах, например: математические функции, функции, возвращающие данные из базы данных и др. »»»
|
|
7
proggs |
Thursday, January 07, 2010 11:06:04 AM GMT
Sunday, January 03, 2010 11:33:17 PM GMT
Слоган Nike очень четко описывает то, о чем я хочу поговорить в этой статье: модульное тестирование. В глубине души каждый знает, какие есть выгоды от модульного тестирования кода. Модульное тестирование согреет вам душу, когда вы будете ложиться спать, зная что изменения сделанные вами, не сломали ничего написанного раньше. Оно сделает вас счастливыми и даст вам спокойствие :)
Тем не менее, многие (включая меня) до сих пор не используют модульное тестирование кода. Этому есть несколько объяснений, но сейч... »»»
|
|
9
proggs |
Monday, January 04, 2010 4:03:08 PM GMT
Wednesday, December 30, 2009 8:17:36 AM GMT
Как многие из вас знают, PHP не поддерживает множественное наследование. То есть у производного класса может быть только один родительский. Но с помощью "магической" функции __call() его можно cэмулировать. Пример ниже - это расширенный паттерн примесь (mixin). Он также позволяет вызывать защищенные и скрытые методы из базовых классов... »»»
|
|
9
proggs |
Monday, December 21, 2009 5:14:05 PM GMT
Sunday, December 20, 2009 12:34:53 PM GMT
В последнем своём проекте я исследовал Django. мне нравиться расширять Models методами, которые можно бы было вызывать из контроллера в Django, как я привык делать в своем фреймворке на php. В php это делалось просто - вы могли просто писать несколько новых функций в классе. В Django это чуть-чуть сложнее. Итак, что я изучил.Модели
Во-первых, модели. Вы можете писать новые методы в определе... »»»
|





