О ходе разработки. BORS-флуд.

Было: «Давно что-то не писал ничего по теме :)»
А вы знаете, что на форумах снова оживлён чат?
+
-
edit
 

Balancer

Администратор
★★★★★
PHP | фреймворк | BORS | CMF | программирование | Авиабаза
В общем, сейчас не о про(ж)ектах, а о текущем состоянии дел и ближайших планах.

От идеи использования глобальных ID во всей системе пришлось отказаться. Предполагается, что CMF (всё же, буду звать систему фреймворком, ибо это на сегодня не конечный продукт) будет интегрироваться с иными решениями, а у них, понятно, идентификация своя.

Поэтому назревает два выхода из ситуации, оба со своими недостатками.

Либо делать глобальные ID отдельно, прописывая в их таблицу соответствующий локальный ID и ID системы, но это, потенциально, миллионы записей. Фиг его знает, как оно с этим всем работать будет.

Второй вариант - во всех местах, где требуется хранение ID в общем виде, хранить не только этот ID, но и ID системы. Вариант более компактный, но более тяжёлый.

...

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

...

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

...

Думаю посмотреть в сторону PHP4/Resin. Говорят, что он работает до 4-х раз быстрее нативного PHP. Посмотрим.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

Balancer

Администратор
★★★★★
Делаю унифицированный и упрощённый редактор типовых страниц. Т.е. уже сделан, идёт обкатка и тестирование.

...

Частично прикола ради, частично для тестов делаю также поддержку скинов от WordPress. Хотя идеология у WordPress очень узкая и под универсальное использование он плохо подходит. А под узкую заточку - соответственно затачивать сложно :)

Какие бы ещё открытые и популярные готовые скины попробовать задействовать?
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

Balancer

Администратор
★★★★★
Ввёл сегодня поддержку подсвечивателя GeSHi по умолчанию. Оно, конечно, не столь умное, как в Colorer, но, тем не менее...

Добавлена также поддержка очередей разных хайлайтеров. Можно будет добавить ещё Text_Highlighter из PEAR, заюзать vim... И добавить ещё возможность выбора движка автору сообщения.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

Balancer

Администратор
★★★★★
BORS | PHP | программирование
Уф. В первом приближении итерационный ORM работает. Теперь можно гонять циклы по объектам не загружая их в память все разом. До кучи и в классическом варианте скорость в несколько раз поднял. Нужно только теперь хорошо продумать вопрос кеширования объектов. Ибо их кеширование — это снова память. Одно дело десяток объектов, к которым делается по тысяче обращений, другое дело — тысяча объектов, к которым обращаются по одному разу. Нужно как-то автоматизировать...

// Транслировано с juick.com
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

Balancer

Администратор
★★★★★
Balancer> // Транслировано

Всё больше тащусь с системы трансляции. Как оно само находит, куда кинуть сообщение :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

Mishka

Координатор
★★★★★
Balancer>> // Транслировано
Balancer> Всё больше тащусь с системы трансляции. Как оно само находит, куда кинуть сообщение :)

А обычная метода с выбросом объектов по количеству за период времени не подходит? Обычно работает очень хорошо. Можешь организовать двух уровневый кэш. Вытеснять во второй, пока хватает памяти, а потом оттуда большими кусками, когда не хватает.
Потерялась подпись. (С) Brab Нашедшего прошу вернуть за небольшое вознаграждение ... переслаными байтами.  3.6.7
+
-
edit
 

Balancer

Администратор
★★★★★
Mishka> Можешь организовать двух уровневый кэш. Вытеснять во второй, пока хватает памяти, а потом оттуда большими кусками, когда не хватает.

Производительность может реально упасть на чистке мусора. Нужно же вводить учёт использования объектов и грохать периодически неиспользуемое. Достаточно ресурсоёмко в рамках PHP.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

Balancer

Администратор
★★★★★
BORS | PHP | мысли | программирование | фреймворк | юниттесты
Кризис наступил в блоке обработки аплоада изображений и файлов. Старая методика, когда-то слепленная на коленке, со временем показала одни недостатки. Переписать и переделать легко, тем более, что за годы уже сформировался определённый стиль, следование которому всё сильно упрощает. Но, блин, что делать с тоннами кода уже имеющихся проектов? Тестировать аплоады во всех вариантах, нередко на боевых серверах — это тот ещё геморрой. Честное же юниттестирование аплоадов — вообще, такая фишка, к которой не понятно, как подступаться... Кризис. Вторую неделю ломаю голову...

// Транслировано с juick.com
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

Balancer

Администратор
★★★★★
PHP | программирование | тоска
Зашёл на php.ru Полистал форум. В тот, что "PHP для новичков" даже заходить не стал. Впал в глубокое уныние. Неужели это средний уровень? Что же тогда там такое новички? /me фшоке. /me начинает понимать отношение к PHP-программистам в сообществе.

// Транслировано с juick.com
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

Balancer

Администратор
★★★★★
Gearman | PHP | программирование
Круто. В PHP нет никаких проблем получить задание от Gearman'а, форкнуть на выполнение отдельную ветку и вернуться к ожиданию. Утечки памяти в форке (естественно, когда он завершится) не приводят к утечкам в системе в целом. Очень интересные конструкции можно организовывать. Пожалуй, что с форумов Авиабазы начну. Перенесу свою доморощенную систему отложенных событий на плечи Gearman'а. Удобно выходит.

// Транслировано с juick.com
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

Balancer

Администратор
★★★★★
admin | BORS | nginx | PHP
Сейчас в порядке эксперимента запустил (пустой) wrk.ru даже без традиционной точки входа своего фреймворка. Вся статика отдаётся напрямую, вся динамика заворачивается прямо на исполняемый модуль фреймворка в системном каталоге. Любой остальной PHP запрещён. Надеюсь, что ломать такую структуру будет особенно трудно :) Дополнительный цимес в том, что htdocs этого сайта вообще [условно] пустой и сайт непосредственно нигде не прописан, nginx сам определяет масс-виртхостовость. Думаю, нужно переводить на такую систему все свои сайты.

// Транслировано с juick.com
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

Balancer

Администратор
★★★★★
PHP | программирование | я безумный
Дошёл до именования тестовых файлов по-русски. А то, когда их потом накапливается десятками в рамках одной подкатегории и ты не помнишь даже примерно имя готового теста, то визуально очень сложно найти что-то типа «links-autosearch-news.php». Теперь у меня появились всякие «новости,привязанные-к-тэгу.php». Посмотрим, поможет ли оно :D

// Транслировано с juick.com
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

Balancer

Администратор
★★★★★
BORS | PHP | программирование | фреймворки
Сегодня по приколу попробовал выделить грубо минимальную работоспособную часть фреймворка. Бэкенд — .htsu, отсутствие дополнительного языка разметки, раздельные шаблоны тела страницы и самой страницы. В роли шаблонизатора — сам PHP. Вышло 42 файла на 280кбайт. Скорость генерации на Q9440 — 0,5 сек. на 1000 запросов в 50 потоков. Но вынос пока грязный, с основной веткой не на 100% совместим, пришлось несколько строк менять. Нужно будет унифицировать и сделать несколько штатных «готовых вариантов» — под разные бэкенды и с разным функционалом. Может, и CMS какую-нибудь сделаю… :)

// Транслировано с juick.com
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

Balancer

Администратор
★★★★★
BORS | github | PHP
Хм. Поставил hg-git и запушил свой BORS в git-hub: github.com

// Транслировано с juick.com
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

Balancer

Администратор
★★★★★
BORS | PHP
философская проблема… По-хорошему, вслед за bors-core на git-hub нужно выложить и bors-third-party. Но выкладывать тупо чужие либы смысла нет. А вот привязки к ним — да. То ли привязки из bors-third-party переносить в bors-core (но там 90% обычно в проектах не нужно), то ли организовывать третий системный уровень… Наверное, всё же, стоит перенести в bors-core :-/ Лишний уровень — лишнее чтение из каталогов при поиске файлов…

// Транслировано с juick.com
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

Balancer

Администратор
★★★★★
BORS | PHP
Приколько. Интереснее выглядит, чем hg glog :)

Это работа в разных репозиториях разных проектов с последующим сведением.
А тут — почти нотный стан :D —


// Транслировано с juick.com
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

Balancer

Администратор
★★★★★
Dwoo | PHP | программирование | шаблонизаторы
Смотрю, последняя версия — больше года назад. Оно умерло или столь совершенно? :)

// Транслировано с juick.com
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

Balancer

Администратор
★★★★★
key-value | PHP | Redis | интересно | кеширование
Включил вместо mysql-кеширования rediska. Ну, там, io-wait ниже стал, LA понизился — это понятно. Но забавно, что температура винтов на сервере мгновенно упала у одного на 3-4 градуса, у другого — на 5 :)

// Транслировано с juick.com
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

Balancer

Администратор
★★★★★
Что-то я плотно взялся за реорганизацию… За вчерашний день по всем репозиториям проекта — 31 коммит с 8 утра до 8 вечера :) И, таки да, вынес обучающие материалы (точнее их зачатки) в отдельный репозиторий. Сейчас логика такая:
  • bors-core — ядро системы (то, где раньше всё было одной кучей и откуда происходит постепенный перенос)
  • bors-ext — документация, расширения (в т.ч. всякие редко используемые классы), инструменты разного рода, от юниттестов до встроенного web-сервера, в перспективе — инсталлятор и т.п.
  • bors-tutorial — обучалки и примеры
  • bors-third-party — ну, этот и раньше был, тонна библиотек сторонних разработчиков для тех, кому лениво возиться с их выкачиванием и/или установкой вручную.


Также из всех трёх формируется (пока запускаемым вручную скриптом) bors-demo — минимальная демо-версия из компонентов всех четырёх перечисленных выше репозиториев, включая примеры и встроенный сервер. Сейчас там бОльшую часть места занимают куски из bors-third-party :D

По организации обучалок я решил немного изменить планы. Метод «программирования по мере написания README» наткнулся на серии желательных изменений в ядре и работой над функционалом встроенного Web-сервера (вчера, вот, начал обработку POST-запросов писать, оказывается, он не умеет — в принципе, уже работает). Тянуть сразу сдвоенную цепочку описание → коды под описание → коды в системе лениво, так что решил поменять формат. Сейчас буду писать полноценную, хотя и совсем примитивную блог-систему, а потом сделаю обучалку, как её писать в несколько этапов.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

Balancer

Администратор
★★★★★
На trac'е bors-core, чтобы не плодить сущностей, подключил в одну кучу bors-ext, bors-tutorial и bors-third-party. Была мысль ещё и bors-airbase туда же воткнуть, но потом решил, что идеологически будет не очень хорошо :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
+
-
edit
 

Balancer

Администратор
★★★★★
Добавлены страницы:
… чтобы понять рекурсию, нужно сперва понять рекурсию …  
Последние действия над темой

в начало страницы | новое
Поиск
Настройки
Персональное
Новости сайта
Статистика
Яндекс.Метрика



 
Сайт работает на сервере ETegro Technologies