XTRO

Участники
  • Публикации

    1042
  • Зарегистрирован

  • Посещение

  • Days Won

    59

Все публикации пользователя XTRO

  1. в начало index.php $time_start = microtime(true);require('memdbg.php');$m = new MemoryUsageInformation(true);сам класс: <?php/* спасибо автору скрипта, к сожадению мне не известному*/class MemoryUsageInformation { private $real_usage; private $statistics = array(); public function __construct($real_usage = false) { $this->real_usage = $real_usage; } public function getCurrentMemoryUsage($with_style = true) { $mem = memory_get_usage($this->real_usage); return ($with_style) ? $this->byteFormat($mem) : $mem; } public function getPeakMemoryUsage($with_style = true) { $mem = memory_get_peak_usage($this->real_usage); return ($with_style) ? $this->byteFormat($mem) : $mem; } public function setMemoryUsage($info = '') { $this->statistics[] = array('time' => time(), 'info' => $info, 'memory_usage' => $this->getCurrentMemoryUsage()); } public function printMemoryUsageInformation() { foreach ($this->statistics as $satistic) { $str = "Time: " . $satistic['time'] . " | Memory Usage: " . $satistic['memory_usage'] . " | Info: " . $satistic['info']; $str .= "\n"; } $str.= "\n\n<br />"; $str.= "Peak of memory usage: " . $this->getPeakMemoryUsage(); $str.= "\n\n<br />"; return $str; } public function setStart($info = 'Initial Memory Usage') { $this->setMemoryUsage($info); } public function setEnd($info = 'Memory Usage at the End') { $this->setMemoryUsage($info); } private function byteFormat($bytes, $unit = "", $decimals = 2) { $units = array('B' => 0, 'KB' => 1, 'MB' => 2, 'GB' => 3, 'TB' => 4, 'PB' => 5, 'EB' => 6, 'ZB' => 7, 'YB' => 8); $value = 0; if ($bytes > 0) { if (!array_key_exists($unit, $units)) { $pow = floor(log($bytes)/log(1024)); $unit = array_search($pow, $units); } $value = ($bytes/pow(1024,floor($units[$unit]))); } if (!is_numeric($decimals) || $decimals < 0) { $decimals = 2; } return sprintf('%.' . $decimals . 'f '.$unit, $value); }}для независимости добавил в main.php перед render шаблона , но по правильному надо в выход: // ************************************************// global $time_start, $m; $time_end = microtime(true); $precision = 2; $tr= 'Build time : '. intval(($time_end - $time_start)*pow(10,$precision))/pow(10,$precision).' sec'; $smarty->assign('timerender',$tr); unset($tr); $usemem= memory_get_peak_usage(); $usemem = 'Memory: '. round($usemem/1024/1024,2) . ' Mb'; $smarty->assign('usemem',$usemem); unset($usemem); $smarty->assign('pr_m',$m->printMemoryUsageInformation());// ************************************************//ну и в самом main.tpl перед </body>: <div class="dbg">{$timerender} - {$usemem} - {$pr_m}</div> можно использовать, как вариант, для замера цикла: $m = new MemoryUsageInformation(true);$m->setStart();$a = array();$m->setMemoryUsage("до цикла");for($i = 0; $i < 100000; $i++) { $a[$i] = uniqid();}$m->setMemoryUsage("после цикла");unset($a);$m->setMemoryUsage("после unset()");$m->setEnd();$m->printMemoryUsageInformation();Осталось притулить sql вывод и получится debug панелька. Хотя лучше всё организовать на уровне хелпера.
  2. в index.php перед выводом main.tpl: define('THEMEURL',$estate_folder.'/template/frontend/'.$sitebill->getConfigValue('theme'));$smarty->assign('themeurl',THEMEURL);в шаблоне путь до каталога в шаблоне получается: {$themeurl}например: <!-- CUSTOM STYLES --> <link rel="stylesheet" type="text/css" href="{$themeurl}/css/style.css" media="all"/>или до картинки в теплейте: <img src="{$themeurl}/images/green.png" />
  3. XTRO

    Новости SEO

    вроде бы более 300 было ранее?
  4. "A Collection of best front End frameworks" (Сравнительная таблица со ссылками на разрабов и гитхаб.) Статья на хабре с описанием 30 решений.
  5. это сработает, только если задача стоит индивидуальная, именно под нужды заказчика в единственном числе. А в данном случае задача строится в обратную сторону - со стороны стороннего сервиса и заказчик тут в процессе не участвует, в лучшем случае в роли тестера. Т.е. он, грубо говоря, посередине, между исполнителем и сервисом. Посему, на текущий момент времени, быть может это и единственный вариант решения, исходя из необходимости именно развития функционала системы и сопряжения со сторонними сервисами.
  6. 1) + 2) в данном методе сбора финансов- отсутствует мотивация. Участвовать будут только те, кому действительно необходимо. Метод работать будет, но не эффективно, т.к. кому не горит - проще тогда подождать. 3) а почему бы тогда не применить принцип партнёрки и комиссионных? ведь лицевые счета в sitebill есть у всех. Ну, или на худой.... , красивый блок "Меценаты проекта"
  7. 1) и зачем тогда ворд. если сразу можно в дриме? 2) и в вашем случае всё равно тогда в дриме будете очищать форматирование ворда через Команды->Исправить html-word. 3) любой визивиг редактор справляется со сложной разметкой (если она и нужна), а оформление всё равно должно быть в css.
  8. разметку из word? вы шутите? Word - текстовой процессор, имея свои стили оформления содержимого, в большЕм смысле никакого отношения не имеет к html Наоборот, эту его родную разметку надо вычищать в корне.
  9. При регистрации юзера (optional) добавить сервис gravatar
  10. тогда уж : {*$apps_pages_column*}
  11. имхо надо в select перевести, как и в других полях (типа 1 для чекбокса)
  12. 1) в классе sitebill убрать вызов одной и той же delete_uploadify_images(), но с разными арг. в двух местах. 2) get_category_breadcrumbs() и get_category_breadcrumbs_string() по сути идентичны 3) допилить бы getDebugMode() и setDebugMode()
  13. это плагин к редактору, посему в любой сущности, использующей этот редактор.
  14. XTRO

    Съехал див

    а если очистить ненужное форматирование текста, лишние стили, удалить лишние параграфы то и кол-во текста влезет поболее.
  15. воооо ...вот теперь понятно как было и куда идём, поскольку интересовала как раз непонятка в структуре модуля. я ж не местный Поскольку ушли в оффтоп, ветку можно закрыть или вообще удалить.
  16. картинки не передают эмоции Лучше от обратного на примере : Допустим есть файл: template\frontend\agency\news_list_column.tpl А что если его нет? При его отсутствии (поскольку у нас set_apps_template() ) необходимым условием является тогда наличие файла в /apps/news/site/template/news_list_column.tpl и передачи в него $template_key. Вот этот ключ {$} и не желает выводиться в tpl (в папке модуля).
  17. это я итак вижу, меня интересует сейчас не берёт и не будет (т.е. действительно хвост) или наоборот планируется новый родитель. Поскольку Object_Manager наследуется именно от sitebill, а умный IDE хошь или то подсунет или другое. Согласен, бывает как скальпелем по одному месту, но ведь есть svn для этого. А бесит откушенные 15 метров на триста объяв. Сейчас простая ситуация : function set_apps_template ( $apps_name, $theme, $template_key, $template_value ) при специальном отсутсвии вьюхи в шкуре и при наличии вьюхи в /apps/'.$apps_name.'/site/template/'.$template_value хоть убей не передаётся туда ключ. Пока хожу туда-сюда задаю себе много не нужных вопросов, типа "а зачем?". Случаем багтрекер не планируется?...форум, это хорошо, но тяжеловато для текучки.
  18. вот и я про то, что просто присутствует а лишнее - не кошерно. ковыряюсь тут ещё кой с чем, и также не могу понять зачем ветка sitebill в каталоге "r" (apps\system\lib\r\sitebill.php) и на какой тогда всё таки нацеливаться?.
  19. дык ничем методы не отличаются кроме static, зачем дублировать?
  20. по сути это интерфейс. (apps\system\lib\system\multilanguage\multilanguage.class.php) Вероятно тогда setOpt просто затерялась, т.к. есть setOptions ?
  21. для IE и firefox по F12 или встроенным или установить firebug и править стили в css.