Balancer: Все сообщения за 2 Октября 2013 года

 
ПнВтСрЧтПтСбВс
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

Balancer

администратор
★★★★★
В процессе работы с BORS со временем появились несколько концептуальных моментов. Их реализация несколько меняет логику работы, так что, вместе с назревшим рефакторингом, было решено сделать небольшой ребрендинг и задуматься о выходе фреймворка B2 (т.е. BORS© v2). Новый вариант будет максимально совместим со старым кодом, переход будет поэтапным, фактически, BORS будет понемногу переписываться в B2. Но в некоторых местах придётся идти на волевой отказ от совместимости. Ниже подробнее о некоторых важных отличиях, решённых и нерешённых вопросах.

В отдельных сообщениях для удобства пополнения :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  2828

Balancer

администратор
★★★★★

Цепочные операции



Это часто реально удобно и для многих разработчиков уже привычно. Зачатки цепочных операций использовались в BORS и раньше, в частности в последнем варианте формирования запросов. Напомню, классический вариант запроса массива объектов в BORS выглядит так:
code php
  1. $topic_posts = bors_find_all('forum_post', array(
  2.     'topic_id' => $this->id(),
  3.     'is_deleted' => false,
  4.     'order' => '-create_time',
  5. ));

Для того, чтобы не ломать совместимость, новый формат запроса оформлен отдельной библиотекой.

И этот же запрос в новом формате в старом BORS запишется так:
code php
  1. $topic_posts = bors_find('forum_post')
  2.     ->eq('topic_id', $this->id())
  3.     ->eq('is_deleted', false)
  4.     ->order('-create_time')
  5.     ->all();


(Основные методы см. в классе bors_core_find (кстати, как на BitBucket дать ссылку не на текущую версию файла, а на последнюю?))

Минус виден сразу — запись становится более громоздкой :) Но есть и плюсы:
— Быстрее и однозначнее осуществляется парсинг выражения
— Единый класс для возвращения как массивов, так и единичных элементов
— Гибкое управление процессом выборки (скажем, ...->debug()->...)
— Декомпозиция сложного парсера на набор простых функций
— Лёгкость расширения

и т.д.

Однако, в варианте bors_find() данная затея использовалась мало. Я использовал её лишь в паре небольших проектов. И во многом это было связано с тем, что я быстро пришёл к другой концепции, о которой — в следующем сообщении.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  2828

Balancer

администратор
★★★★★

Всё есть объект



Возьмём массив постингов выбранного топика из предыдущего сообщения. Как обычно строится работа с ним?
code php
  1. $topic_posts = bors_find_all(...);
  2. if($topic_posts)
  3.     foreach($topic_posts as $post)
  4.         ...

Или в шаблонах, в том же Smarty:
code smarty
  1. {if $topic_posts}
  2. {foreach $topic_posts as $post}
  3.         ...


Основная же идея нового подхода в том, что возвращаться будет не массив (или NULL в случае отсутствия и т.п.), а объект, содержащий итератор:
foreach(b2::find(...)->...->all() as $post)

По синтаксису не сказать, что больше упрощение или усложнение, но — унификация. Таким образом планируется использовать практически любые системные объекты. Вот практический пример. Вставка привязанного к объекту изображения. Пусть это будет картинка по умолчанию для того же топика форума. Как это делается в BORS1:
code smarty
  1. {if $this->image()}{$this->image()->thumbnail('200x150')->html_code()}{/if}

Потому что если у нас нет изображения, то ->image() возвращает NULL и попытка обратиться к методу вернёт ошибку.

Так вот, в B2 основная концепция — никакой метод не должен возвращать NULL. Только корректные для обработки значения. Так что можно сразу выкидывать условие:
code smarty
  1. {$this->image()->thumbnail('200x150')->html_code()}


Особенно это полезно при реально длинных цепочках. Например:
code smarty
  1. {if $this->cabinet()}
  2.     {if $this->cabinet()->owner()}
  3.         {if $this->cabinet()->owner()->logo()}
  4.             {$this->cabinet()->owner()->logo()->thumbnail('128x96')->html_code()}
  5.          {/if}
  6.     {/if}
  7. {/if}


Теперь же [будет] достаточно одной таблетки цепочки:
code smarty
  1. {$this->cabinet()->owner()->logo()->thumbnail('128x96')->html_code()}


Не важно, в какой момент возникнет пустой объект (cabinet/owner/logo) — важно, что любая операция от пустого объекта вернёт также пустой объект. И никаких исключений не возникнет.

Нужно проконтролировать, чтобы был обязательно не ноль? Легко добавить в цепочку контролирующий метод, в духе ...->assert(

Дальше »»»
… чтобы понять рекурсию, нужно сперва понять рекурсию …  2828

Balancer

администратор
★★★★★

Работа с Composer



Ну, тут всё просто и понятно. Конечная цель — разворачивание готовой к использованию системы одной командой. В Composer будут:

balancer/b2-framework — основной каркас для работы. Фактически, загружалка остальных компонентов в пригодном к использованию виде и их связывание.

balancer/b2-core — основное ядро системы. Все эти цепные функции, поиск и т.п. Тут потребуется большая работа по рефакторингу. Потому что нынешний bors-core сам по себе включает как фреймворк в целом, так и массу кода, который нужен редко. И в старом варианте может выноситься в bors-ext, а в новом — в отдельные пакеты Composer'а. Сейчас, на время разработки, b2-core тянет с собой весь bors-core. И, в общем, это будет надолго. Но цель — в разделении и рефакторинге.

balancer/b2-* в ассортименте. Конкретные пакеты/библиотеки для решения конкретных задач. В идеале установка должна быть не ручной, а на базе интерактивного инсталлятора. Указываем, что нам надо — оно и ставится через Composer.

(название не придумано) — также в планах создание на базе b2-framework готовой к использованию CMS. Развернул, запустил — и готов сайт. Да ещё, может быть, с опциональным указанием необходимых при установке компонентов (блог, форум, новости, рассылки…) Но это пока весьма дальняя перспектива, лично мне не актуальная и полезная только в смысле раскрутки фреймворка.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  2828

Balancer

администратор
★★★★★
Встроенный web-сервер в PHP-5.4

Мелочь, и реализовать не так, чтобы сложно (хотя подводные камни есть). Очень полезно для всех, кто захочет быстро пощупать фреймворк. Не потребуется ломать голову о привязке к полноценному Web-серверу. Просто запускаешь скрипт — и PHP-демон сам обрабатывает запросы. Можно открывать браузер и смотреть, что как работает.

Когда-то для этой цели служил сторонний проект Nanoserv, но в настоящее время, в связи с интеграцией Web-сервера в PHP, Nanoserv потерял смысл.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  2828
Это сообщение редактировалось 03.10.2013 в 07:06

Balancer

администратор
★★★★★

3d принтер будет печатать космические конструкции прямо на орбите

Вместо того, чтобы делать конструкции на Земле, а потом разбирать их на мелкие кусочки, чтоб упаковать в ракету-носитель, NASA-вские инженеры реализуют... // habrahabr.ru
 
… чтобы понять рекурсию, нужно сперва понять рекурсию …  2828

Balancer

администратор
★★★★★
Lamort> 2023-й год, - в продажу поступила первая модель 4D-принтера, позволяющего печатать живые организмы. ;)

Бионическое ухо напечатали на 3D-принтере

Инженеры Принстонского университета разработали бионическое ухо, содержащее чувствительную к радиоволнам антенну и живые клетки. Гидрогелевую основу органа и антенну, состоящую из сети проводящих каналов, послойно печатали при помощи 3D-принтера. Получившееся ухо заселяли культурой клеток. // lenta.ru
 
… чтобы понять рекурсию, нужно сперва понять рекурсию …  2828

Balancer

администратор
★★★★★
Iva> Сказать - ты говно или ты грешник - это осуждение. А сказать - это действие грех или так поступать нельзя - нормальная констатация факта.

Ну, вот, человек никому не говорил «ты — грешник». Просто объяснял, чем православные в его понимании отличаются от «православнутых». По твоему определению он не судил и ответ от S.I., получается, уже не в тему.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  2828

Balancer

администратор
★★★★★
Песня не новая, но мне попалась совсем недавно.



Так вот, к чему это я. Одна такая песня делает для продвижения христианства во много раз больше, чем сотня выступлений иерархов с трибун :)

Update: что-то не работает больше вставка с ВКонтакте, что ли? :-/
Update2: тогда вариант с Prostopleer.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  2828

Balancer

администратор
★★★★★
Шаов по-прежнему актуален :)


Прослушать или скачать Шаов Тимур Патриотический марш бесплатно на Простоплеер

Update: а, пардон, выше оно уже было. Но на Ютубе у меня так и не заработала, так что раньше не слышал…
… чтобы понять рекурсию, нужно сперва понять рекурсию …  2828

Balancer

администратор
★★★★★

Гравитационные ямы




Гравитационный рельеф Солнечной системы.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  2828

Balancer

администратор
★★★★★
Хм. Странно. Продавец написал, что гонконгская почта завернула посылку с аккумуляторами:

Hong Kong postal send battery prohibited! Parcel back!

The inconvenience you please forgive me!



HongKong post to hunt down the battery goods, package be returned! Please cancel the order.
 
… чтобы понять рекурсию, нужно сперва понять рекурсию …  2828

Balancer

администратор
★★★★★

Онлайн-присутствие для малого бизнеса: сайт или социальная сеть?

Несколько лет назад, во время всплеска популярности социальных сетей, многие исследователи предсказывали, что эти сервисы вскоре полностью заменят собой... // habrahabr.ru
 
… чтобы понять рекурсию, нужно сперва понять рекурсию …  2828

Balancer

администратор
★★★★★

В Бельгии трансгендер, ставший мужчиной после операции по смене пола, добился эвтаназии: "не хочу быть монстром"

Добровольный уход из жизни выбрал для себя 44-летний Натан Верхелст, который раньше был женщиной по имени Нэнси. Перед смертью он объяснил, что ни одна из хирургических процедур не оказалась удачной: "Моя новая грудь не соответствовала моим ожиданиям, а мой пенис начал отторгаться". Сменить пол Натана-Нэнси вынудило желание быть любимым родителями. // www.newsru.com
 
… чтобы понять рекурсию, нужно сперва понять рекурсию …  2828

Balancer

администратор
★★★★★

С теплом ожидаются большие проблемы

Любите ходить по квартире в майке и в трусах? Забудьте эту непозволительную роскошь – вслед за электричеством и водой правительство собирается ввести нормативы на тепло // www.utro.ru
 

Введение энергопайка вызывает споры и возражения / Экономика / Независимая газета

Граждане пытаются взять под контроль коммунальные тарифы // www.ng.ru
 
… чтобы понять рекурсию, нужно сперва понять рекурсию …  2828

Balancer

администратор
★★★★★

На иностранные названия предлагают ввести специальный налог

Единорос Евгений Федоров предлагает собирать с производителей российских товаров с зарубежными названиями сбор «за нерусскость» // izvestia.ru
 
… чтобы понять рекурсию, нужно сперва понять рекурсию …  2828

Balancer

администратор
★★★★★
Поглядел демку на Xbox. (Как я понимаю, в Steam'е DIII нет?)

Что могу сказать — очередная жертва времени. Снова предельно зажатые территории, да ещё и преимущественно линейные :-/

От оригинального Diablo ничего (ну, кроме топонимики) не осталось. Знаменитые бочки с маной и здоровьем исчезли. В общем, тот же «Hellgate: London» несравнимо более Diablo, чем Diablo III :)

Единственный потенциальный бонус — вроде бы, на Xbox можно до 4-х человек играть на одном экране. Но в демке этого нет. Как для меня — единственное, за что можно купить эту игру. В остальном как-то всё грустно :)
… чтобы понять рекурсию, нужно сперва понять рекурсию …  2828

Balancer

администратор
★★★★★
Balancer> Единственный потенциальный бонус — вроде бы, на Xbox можно до 4-х человек играть на одном экране. Но в демке этого нет.

Ха! Есть, оказывается :) Просто нужно нажать кнопку Start на втором/третьем джойстике — и готово, игрок в игре. Один дома сейчас, жена на работе, дочка в садике, так что только в общих чертах лишь оценил — но, похоже, толпой будет весело играть :)

Надо заказать в Китае 4-й джойстик, гостевой :)



А ещё, блин, как плавно оно на приставке идёт :D FPS не меньше 40..50, наверное.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  2828

Balancer

администратор
★★★★★
arkhnchul> Чего-то у них с наркотой

Видно, надо через китайскую почту заказывать. Мне буквально на днях четыре аккумулятора 18650 пришло без проблем. При чём заказывал их даже позже тех, что завернули.
… чтобы понять рекурсию, нужно сперва понять рекурсию …  2828

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