О ходе разработки. 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
 
RU Balancer #29.07.2010 05:36  @Balancer#29.07.2010 05:34
+
-
edit
 

Balancer

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

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

Mishka

модератор
★★★

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

А обычная метода с выбросом объектов по количеству за период времени не подходит? Обычно работает очень хорошо. Можешь организовать двух уровневый кэш. Вытеснять во второй, пока хватает памяти, а потом оттуда большими кусками, когда не хватает.
 3.6.73.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
 

  • Balancer [18.02.2011 21:53]: Перенос в новую тему WTF-code
  • Balancer [01.03.2011 22:29]: Перенос сообщений в WTF-code
+
-
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
 

+
-
edit
 

Balancer

администратор
★★★★★
Капитально переделал внутренний API элементов форм. Внешней работы это не коснётся.

Переход от ужасных костылей статических вызовов и глобальных переменных к нормальным объектам.
 2525
+
-
edit
 

Balancer

администратор
★★★★★
Вчера затеял продолжение перевода ряда jQuery-плагинов с прямой закачки на работу с bower. Переехали select2 и typeahead. Markitup, увы, в bower пока отсутствует.

Чуть раньше перенёс markdown на использование в composer.

Продолжаю также отделение обвязки для работы с пакетами третьих сторон от bors-third-party. Фактически в bors-thord-party должны остаться только переменные, указывающие на пути к пакетам. Использование же их должно быть целиком в bors-ext.

А в перспективе нужно подумать о тупом указании на источник (composer/bower/jqpm(?)/etc).
 2525
+
-
edit
 

Balancer

администратор
★★★★★
Начал большое обновление разметки Wysibb, но на Авиабазе пока смотрится криво. Надо доработать дизайн темы, добавить актуальные тэги, реализовать на форумах поддержку того, что по дефолту выдаёт Wysibb.

И, да, пожалуй, надо отказываться от использования тэга [tr] для транслита, переведя его в эквивалент табличного <tr>.
 2525
+
-
edit
 

Balancer

администратор
★★★★★
В десятый раз собираюсь отписываться тут о ходе работ регулярно и также в 10-й раз всё откладываю нафиг... Начну с конца.

В последнее время плотно осваиваю всякие Bootstrap и AJAX примочки.

Увы, Typeahead.js нормально подружить с нужными задачами не удалось (хотя для форумов тех же может пригодиться). Но обновлённый Select2 оказался удобный. В работе его и раньше видели координаторы на Авиабазе в виде быстрого поиска по мере набора целевой темы для переноса:



Но раньше я пользовался им чисто в «коробочном варианте», а сейчас плотно принялся работать уже с JS-обвязкой. Скажем, для новой админки АвиаПорт'а слепил такой элемент форм (пока прибит гвоздями к задаче, потом сделаю универсальный — «преждевременная оптимизация — зло»):



Фишка в том, что в одном элементе можно использовать как быстрый выбор некоторых фиксированных значений кнопками (в данном примере — одна, «АвиаПорт.Ru»), так и использовать поиск с быстрым набором.

Естественно, что итоговый результат прозрачен с точки зрения пользователя фреймворка, целевая функция после отправки формы получит просто готовый id элемента.

Правда, пришлось временно отказаться от своей же идеи все assets ставить только через bower. В данный момент там устаревшая версия Select2.
 27.0.1453.11027.0.1453.110

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru