|
artoodetoo ↓
|
 |
|
14 Сентябрь, 2010, 07:50:37
|
НЕ ХУЕТА!
ХУЕТА!
|
с особым цинизмом
Группа: в ухо Карма: 124
Сообщений: 3805 Сила слова: 3.26
|
Подскажите как в JS красиво вывести произвольные данные (отладка) чтобы не тупо писала "object", а попыталась развернуть массив скажем. В PHP я пользую var_export или var_dump, а здесь как?
Прошу jQuery + плагины не предлагать. Что-нибудь простое.
Типа:
document.write(mydump(data));
|
|
|
|
|
Записан
|
|
|
|
|
phpdude ↓
|
 |
|
14 Сентябрь, 2010, 07:59:22 , спустя 8 минут 45 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 344
Сообщений: 20790 Сила слова: 1.65
|
artoodetoo, напиши mydump и выложи тут заодно :)
я обычно делаю console.log - от файрбага консоль и там уже просматриваю "дерево" объекта
|
|
|
|
|
Записан
|
забанен. могу забанить других, пишите в личку BEER. Helping ugly people have sex since 1862.
|
|
|
|
artoodetoo ↓
|
 |
|
14 Сентябрь, 2010, 08:00:41 , спустя 1 минуту 19 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
с особым цинизмом
Группа: в ухо Карма: 124
Сообщений: 3805 Сила слова: 3.26
|
phpdude, я то надеялся, что ты уже написал mydump() )))
|
|
|
|
|
Записан
|
|
|
|
|
phpdude ↓
|
 |
|
14 Сентябрь, 2010, 08:02:29 , спустя 1 минуту 48 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
я - ЭМО
Группа: в ухо Карма: 344
Сообщений: д-о-х-у-я! Сила слова: 1.65
|
artoodetoo, люблю когда меня спрашивают прилюдно, мог в личку спросить ))))))))))) неа не написал, думал пару раз, да обошелся firebug консолью
|
|
|
|
|
Записан
|
забанен. могу забанить других, пишите в личку BEER. Helping ugly people have sex since 1862.
|
|
|
|
artoodetoo ↓
|
 |
|
14 Сентябрь, 2010, 09:43:02 , спустя 1 час 40 минут 33 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
с особым цинизмом
Группа: в ухо Карма: 124
Сообщений: 3805 Сила слова: 3.26
|
function dump(varval, varname)
{
var text = '';
var padding = '';
if (typeof(dump.level) == 'undefined') dump.level = 0;
dump.level++;
for(var j = 1; j < dump.level; j++) padding += ' ';
text = padding;
if (typeof(varname) != 'undefined') {
text += '"' + varname + '"' + ': ';
}
if (typeof(varval) == 'object') {
text += '{\n';
for (var key in varval) {
var val = varval[key];
text += dump(val, key);
}
text += padding + '},\n';
} else {
text += '"' + varval + '"' + ',\n';
}
dump.level--;
return text;
}
|
|
|
|
|
Записан
|
|
|
|
|
mario ↓
|
 |
|
14 Сентябрь, 2010, 09:58:14 , спустя 15 минут 12 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
wazzup
Группа: Джедаи Карма: 67
Сообщений: 6162 Сила слова: 1.09
|
в мемориз! :)
А то порой заебывает консоле.лог ))) Спустя 7 секунд добавил спасибо!
|
|
|
|
|
Записан
|
|
|
|
|
artoodetoo ↓
|
 |
|
14 Сентябрь, 2010, 10:29:20 , спустя 31 минуту 6 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
с особым цинизмом
Группа: в ухо Карма: 124
Сообщений: 3805 Сила слова: 3.26
|
велосипед:
сохраняем дебугинфу в формате json
<?php
class QbApp
{
function end()
{
$time = microtime(TRUE);
$start = Qb:: get('start');
$data = array(
'request' => $_SERVER['REQUEST_METHOD'] . ':' . $_SERVER['REQUEST_URI'],
'at' => gmdate('r', $start),
'time' => $time - $start,
'log' => QbLog:: get(),
);
$fileName = dirname(__FILE__) . '/../log/' . $start . '.txt';
file_put_contents ($fileName, json_encode ($data));
}
}
Где-то в шаблоне выводится ссылка на viewdebug.php?id=xxx
а вот viewdebug.php
<?php
if (! isset($_GET['id']) || strspn($_GET['id'], '1234567890.') != strlen($_GET['id'])) {
die('Wrong id');
}
$file = './log/'. $_GET['id']. '.txt';
if (! file_exists($file)) {
die('Log not found');
}
$data = file_get_contents($file);
?>
<script type= "text/javascript">
var data = <?php echo $data ?>;
function dump (varval, varname )
{
var text = '';
var padding = '';
if (typeof (dump.level ) == 'undefined') dump.level = 0;
dump.level++;
for(var j = 1; j < dump.level; j++ ) padding += ' ';
text = padding;
if (typeof (varname ) != 'undefined') {
text += '"' + varname + '"' + ': ';
}
if (typeof (varval ) == 'object') {
text += '{\n';
for (var key in varval ) {
var val = varval [key];
text += dump (val, key);
}
text += padding + '},\n';
} else {
text += '"' + varval + '"' + ',\n';
}
dump.level--;
return text;
}
</script>
<h1>Debug info</h1>
<script type= "text/javascript">
document.write ('<b>Request</b>: ' + data ['request'] + '<br/>\n');
document.write ('<b>At</b>: ' + data ['at'] + '<br/>\n');
document.write ('<b>Exec. time</b>: ' + data ['time'] + ' sec<br/>\n');
document.write ('<h2>Log</h2><pre>' + dump (data ['log']) + '</pre>');
</script>
fullsize screenshot
результат

|
|
|
|
« Последнее редактирование: 14 Сентябрь, 2010, 10:28:33 от artoodetoo »
|
Записан
|
|
|
|
|
adw0rd ↓
|
 |
|
14 Сентябрь, 2010, 11:38:14 , спустя 1 час 8 минут 54 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
эдво
Группа: в ухо Карма: не нужна
Сообщений: 17623 Сила слова: 1.67
|
да ну нафиг, мне console.log() хватает... не люблю я лишние библиотеки встраивать
|
|
|
|
|
Записан
|
|
|
|
|
artoodetoo ↓
|
 |
|
14 Сентябрь, 2010, 12:32:36 , спустя 54 минуты 22 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
с особым цинизмом
Группа: в ухо Карма: 124
Сообщений: 3805 Сила слова: 3.26
|
хозяин барин. мне вот понадобилось
|
|
|
|
|
Записан
|
|
|
|
|
artoodetoo ↓
|
 |
|
14 Сентябрь, 2010, 12:59:33 , спустя 26 минут 57 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
с особым цинизмом
Группа: в ухо Карма: 124
Сообщений: 3805 Сила слова: 3.26
|
я js почти не трогаю, так, по крайней необходимости. в console.log мне не нравится, что эта штука везде кроме FF+FireBug будет порождать ошибку. а когда отлаживаешся, постоянно переключаешся FF->Opera->IE и по кругу. некузяво жить с ошибками
|
|
|
|
|
Записан
|
|
|
|
|
artoodetoo ↓
|
 |
|
26 Сентябрь, 2010, 10:16:25 , спустя 11 дней 21 час 16 минут 52 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
с особым цинизмом
Группа: в ухо Карма: 124
Сообщений: 3805 Сила слова: 3.26
|
UP
Захотелось мне выводить время генерации страницы и всякие логи прямо на самой странице. Получил проблему курицы и яйца: в момент рендеринга страницы я еще не обладаю всей нужной инфой.
Выручает JavaScript. Реальную инфу я могу сохранять во внешний файл в своем обработчике shutdown или в деструкторе объекта приложения, что один хрен.
А во время рендеринга мне достаточно знать id этого сеанса. Браузер за меня обратится к js с отладочной инфой и через document.write() всё отрисует.
<script type="text/javascript" src="js/dump.js"></script>
<script type="text/javascript" src="<?php echo $app->debugFile ?>"></script>
Здесь $app->debugFile имя файла с данными в формате JSON, имя включает в себя microtime() для уникальности.
И никакого AJAX не понадобилось :)
К.О. торжествуе!
|
|
|
« Последнее редактирование: 26 Сентябрь, 2010, 10:16:25 от artoodetoo »
|
Записан
|
|
|
|
|
Абырвалг ↓
|
 |
|
26 Сентябрь, 2010, 01:23:29 , спустя 3 часа 7 минут 4 секунды
|
НЕ ХУЕТА!
ХУЕТА!
|
PHP Infected, симфоеб, маконенавистник
Группа: Джедаи Карма: 80
Сообщений: 6096 Сила слова: 1.31
|
а ведь можно повесить listener на отдачу ответа классом Response
в теле handler'а, который будет обрабатывать ответ будет находиться что-то типа
str_ireplace('</body>', $toolbar . '</body>', $response->getContent());
|
|
|
|
|
Записан
|
PHP does the job since 1995 Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
|
|
|
|
artoodetoo ↓
|
 |
|
26 Сентябрь, 2010, 02:01:35 , спустя 38 минут 6 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
с особым цинизмом
Группа: в ухо Карма: 124
Сообщений: 3805 Сила слова: 3.26
|
я не понял. или ты не понял
|
|
|
|
|
Записан
|
|
|
|
|
Абырвалг ↓
|
 |
|
26 Сентябрь, 2010, 02:15:00 , спустя 13 минут 25 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
PHP Infected, симфоеб, маконенавистник
Группа: Джедаи Карма: 80
Сообщений: 6096 Сила слова: 1.31
|
Получил проблему курицы и яйца: в момент рендеринга страницы я еще не обладаю всей нужной инфой.
после рендеринга но перед отдачей ответа пользователю проходишься поиском и заменой по телу ответа и вставляешь свои логи и время генерации (я в прошлом сообщении это показал).
|
|
|
|
|
Записан
|
PHP does the job since 1995 Пожалуйста, не надо делать двойные клики по ссылкам. Это создает избыточную нагрузку на сервер
|
|
|
|
artoodetoo ↓
|
 |
|
26 Сентябрь, 2010, 02:42:40 , спустя 27 минут 40 секунд
|
НЕ ХУЕТА!
ХУЕТА!
|
с особым цинизмом
Группа: в ухо Карма: 124
Сообщений: 3805 Сила слова: 3.26
|
здесь много "если"
- да я написал "рендеринг страницы", но не факт, что я буду отдавать html. а логи желательно сохранять в любом случае
- смотря что я хочу замерить. в идеале я меряю время до exit(). в твоем случае - до конца работы шаблонизатора. это близко, но опять не факт. зависит от структуры приложения
- кто сказал что у меня есть объект response и вообще что я в явную использую буферизацию
слишком много зависимостей.
|
|
|
|
|
Записан
|
|
|
|
|