Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

5 Debug_HackerConsole: «хакерская» консоль, упрощающая отладку сайтов (Дмитрий Котеров)
Goto page Previous  1, 2, 3, 4  Next
Author Message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Thu Jul 13, 2006 9:46 pm (написано за 47 секунд)
   Post subject:
Reply with quote

version 1.14
  1. Теперь вставка консоли не нарушает валидность xhtml,
  2. Правильно выводятся NULL-ы в дампах.
Back to top
View user's profile Send private message Send e-mail
amikhailov
Участник форума



Joined: 11 Nov 2004
Posts: 180
Карма: 4
   поощрить/наказать

Location: Екатеринбург

PostPosted: Sun Jul 23, 2006 1:42 pm (спустя 9 дней 15 часов 56 минут; написано за 57 секунд)
   Post subject:
Reply with quote

У меня вообще fatal error выскакивает
Code (any language): скопировать код в буфер обмена
Fatal error: Cannot re-assign $this in z:\home\dating\www\core\classes\Debug.php on line 98
Версия PHP 5.1.0RC1
Как исправить фатал?
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Tue Jul 25, 2006 10:30 am (спустя 1 день 20 часов 47 минут; написано за 5 секунд)
   Post subject:
Reply with quote

Как правильно задавать вопросы: статья, обязательная к прочтению (citforum.ru/howto/smart-questions-ru.shtml)
Back to top
View user's profile Send private message Send e-mail
amikhailov
Участник форума



Joined: 11 Nov 2004
Posts: 180
Карма: 4
   поощрить/наказать

Location: Екатеринбург

PostPosted: Tue Jul 25, 2006 10:59 am (спустя 29 минут; написано за 3 минуты 34 секунды)
   Post subject:
Reply with quote

Уважаемый Дмитрий Котеров, Ваш класс, любезно предлагаемый публике для использования, не работает. Ошибку и текст оной я описал. Версия PHP также указана.
Внесу только одну поправку. Я файл Main.php переименовал в Debug.php для удобства.
Не работает функция out. Ругается на строку
Code (php): скопировать код в буфер обмена
$obj =& $this;
Какие способы решения проблемы Вы бы предложили? Все ж таки это баг в Вашем классе.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Tue Jul 25, 2006 11:17 am (спустя 17 минут; написано за 37 секунд)
   Post subject:
Reply with quote

Способ - поставить менее глючную версию PHP, а не Release Candidate.
Можете также попробовать новую версию библиотеки, хотя это вряд ли поможет...
Back to top
View user's profile Send private message Send e-mail
amikhailov
Участник форума



Joined: 11 Nov 2004
Posts: 180
Карма: 4
   поощрить/наказать

Location: Екатеринбург

PostPosted: Tue Jul 25, 2006 11:20 am (спустя 3 минуты; написано за 1 минуту 32 секунды)
   Post subject:
Reply with quote

Версия библиотеки стоит последняя. PHP сегодня обновлю, но вообще меня такая ошибка сильно удивила. Невозможность переопределить $this - это промах со стороны разработчиков PHP. Даже в 4-й версии работало нормально.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Tue Jul 25, 2006 2:26 pm (спустя 3 часа 6 минут; написано за 54 секунды)
   Post subject:
Reply with quote

Да блин. Ни при чем тут переопределение $this, да и не нужно оно в библиотеке. Это обычный баг в PHP, а то, что он такое сообщение генериирует, это уж так повезло просто.

dklab.ru/lib/Debug_HackerConsole/demo/lib/Debug/HackerConsole/Main.php - версия 1.15. У вас она? Работает в ней?
Back to top
View user's profile Send private message Send e-mail
amikhailov
Участник форума



Joined: 11 Nov 2004
Posts: 180
Карма: 4
   поощрить/наказать

Location: Екатеринбург

PostPosted: Tue Jul 25, 2006 2:27 pm (спустя 1 минуту 20 секунд; написано за 6 секунд)
   Post subject:
Reply with quote

Она самая
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Mon Sep 25, 2006 8:06 pm (спустя 2 месяца 5 часов 38 минут; написано за 37 секунд)
   Post subject:
Reply with quote

version 1.16:
- window.console replaced by window.hackerConsole because of Safari (window.console already exists in this browser)
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 388
   поощрить/наказать


PostPosted: Wed Oct 18, 2006 6:08 am (спустя 22 дня 10 часов 2 минуты; написано за 1 минуту 38 секунд)
   Post subject:
Reply with quote

Возникла такая проблема, что при использовании хостов с урлом, содержащим символ "_", консоль не сворачивается :(
example9_9.example.com
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Wed Oct 18, 2006 9:55 am (спустя 3 часа 46 минут; написано за 1 минуту 23 секунды)
   Post subject:
Reply with quote

Это происходит из-за того, что по стандарту HTTP имя хоста не может содержать знака "_". Поэтому куки для таких хостов не работают (по крайней мере, в IE). А раз так, то не запоминается и состояние консоли (свернута/развернута).

Не используйте "_" в именах хостов, иначе можете обнаружить трудноуловимые баги с куками и даже сессиями.
Back to top
View user's profile Send private message Send e-mail
nertz
Заглянувший



Joined: 18 Oct 2006
Posts: 1
Карма: 1
   поощрить/наказать


PostPosted: Thu Oct 19, 2006 1:18 am (спустя 15 часов 22 минуты; написано за 1 минуту 53 секунды)
   Post subject:
Reply with quote

Благодарю за развёрнутый ответ!
Да, именно в IE она и не сворачивалась на таком типе урлов, в то время как в FF всё прекрасно работает.

P.S.: под гостем был мой вопрос.
Back to top
View user's profile Send private message
redhummer
Guest





Карма: 388
   поощрить/наказать


PostPosted: Thu Oct 19, 2006 8:06 am (спустя 6 часов 48 минут; написано за 2 минуты 47 секунд)
   Post subject:
Reply with quote

Благодаорю за скрипт, Дмитрий. Это то, о чём мечтал, но не смел надеяться.
Три поклона вам =)

Вы не будете возражать, если я включу скрипт (разумеется с сохранением ваших копирайтов) в дистрибудив свободно-распространяемой в узком кругу самописной CMS?
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Thu Oct 19, 2006 10:46 am (спустя 2 часа 40 минут; написано за 1 минуту 14 секунд)
   Post subject:
Reply with quote

redhummer, мне кажется, лицензия LGPL, под которой распространяются все библиотеки Конструктора, не запрещает подобное использование. Разве нет?
forum.dklab.ru/viewtopic.php?t=23102
Back to top
View user's profile Send private message Send e-mail
redhummer
Заглянувший



Joined: 19 Oct 2006
Posts: 8
Карма: 2
   поощрить/наказать


PostPosted: Thu Oct 19, 2006 12:40 pm (спустя 1 час 53 минуты; написано за 5 минут 34 секунды)
   Post subject:
Reply with quote

Теперь уверен - да. Спасибо.

Кстати, (рискуя нарваться) о чистоте стандартов...
При проверке на соответствие стандарту HTML 4.0 Transitional, validator.w3.org/check# ругает:
Quote:
Error Line *** column **: document type does not allow element "SCRIPT" here.
<script type="text/javascript" language="JavaScript">//<![CDATA[
Quote:
Error Line *** column **: end tag for element "BODY" which is not open.
            top.document.writeln("<body></body>");
Немного обидно. Ведь остальной html чист.

Хотя... В принципе, всё равно "консоль" работает (в моём случае) только под админом.

Но было б идеально, если бы... =)
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Sat Oct 21, 2006 12:10 am (спустя 1 день 11 часов 29 минут; написано за 1 минуту)
   Post subject:
Reply with quote

version 1.17
- now HTML code with attached console is Valid HTML 4.01 Transitional (possibly - XHTML valid too? need to test more)

Ссылка для проверки:
validator.w3.org/check?uri=http%3A%2F%2Fdklab.ru%2Flib%2FDebug_HackerConsole%2Fdemo%2Ftest%2FDebug_HackerConsole%2Ft_html.php
Back to top
View user's profile Send private message Send e-mail
redhummer
Заглянувший



Joined: 19 Oct 2006
Posts: 8
Карма: 2
   поощрить/наказать


PostPosted: Mon Oct 23, 2006 4:23 am (спустя 2 дня 4 часа 13 минут; написано за 3 минуты 32 секунды)
   Post subject:
Reply with quote

Извините. Мне стыдно.
По собственному недосмотру в пылу азарта включал консоль вне html/body - отсюда и ругань.
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Mon Oct 23, 2006 9:50 am (спустя 5 часов 27 минут; написано за 38 секунд)
   Post subject:
Reply with quote

Нет, Вы все правильно делали - не важно, в каком месте включать консоль. :-)
Просто она и правда вставлялась после </html>, а сейчас - вставляется перед </body>.
Back to top
View user's profile Send private message Send e-mail
avgera
Заглянувший



Joined: 20 Sep 2006
Posts: 6
Карма: 0
   поощрить/наказать


PostPosted: Mon Oct 30, 2006 8:06 pm (спустя 7 дней 10 часов 15 минут; написано за 4 минуты 1 секунду)
   Post subject:
Reply with quote

Здравствуйте, Дмитрий.
Обнаружил конфликт двух Ваших библиотек, когда они работают вместе: при включенной отладочной консоли загрузка данных при помощи JsHttpRequest вызывает искличение "Error: JavaScript code generated by backend is invalid! ". При этом выдается правильный код, сформированный на сервере, плюс вот такие строчки
Code (any language): скопировать код в буфер обмена
<!-- ### HackerConsole ### --> <!-- ##################### --> <script type="text/javascript" language="JavaScript">//<![CDATA[ /** * Debug_HackerConsole_Js: JavaScript frontend for hacker console. * (C) 2005 Dmitry Koterov, http://forum.dklab.ru/users/DmitryKoterov/ * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * See http://www.gnu.org/copyleft/lesser.html * * @version 1.17 */ function Debug_HackerConsole_Js(top) { this.construct(window) } Debug_HackerConsole_Js.prototype = { top: null, div: null, height: parseInt('400'), // JS syntax OK curHeight: 0, step: 0, speedOn: 0.3, speedOff: 10, dt: 50, fontsize: 15, groups: null, scrollTimeout: null, construct: function(t) { with (this) { top = t || window; groups = {}; if (!top.document.body) { top.document.writeln("<" + "body><" + "/body>"); } with (top.document) { div = body.insertBefore(createElement('div'), body.childNodes[0]); div.className = 'hackerConsole'; with (div.style) { display = 'none'; background = 'black'; zIndex = 999999999; position = 'relative'; textAlign = 'left'; padding = '4px'; margin = '0px'; width = '100%'; maxWidth = (screen.width-30) + 'px'; height = this.height + 'px'; overflow = 'auto'; border = '1px solid black'; color = '#00EE00'; font = 'normal ' + this.fontsize + 'px "Courier new", Courier'; } var th = this; var owner = window.HTMLElement? window : body; var prevKeydown = owner.onkeydown; owner.onkeydown = function(e) { if (!e) e = window.event; if (e.ctrlKey && (e.keyCode == 192 || e.keyCode == 96)) { th.toggle(-1); return false; } if (prevKeydown) { this.__prev = prevKeydown; return this.__prev(e); } } toggle(null); } }}, toggle: function(on, onstart) { var cookName = 'hackerConsole'; if (on == null) on = Math.round(this.getCookie(cookName)); if (on < 0) on = !Math.round(this.getCookie(cookName)); if (on) { this.curHeight = 0; this.step = this.speedOn; } else { this.curHeight = this.div.style.display!='none'? this.height : 0; this.step = -this.speedOff; } var th = this; var fResizer = function() { th.div.style.display = on? '' : 'none'; th.curHeight = th.curHeight + th.height*th.step; if (th.curHeight < 0) th.curHeight = 0; if (th.curHeight > th.height) th.curHeight = th.height; th.div.style.height = (Math.round(th.curHeight)+1) + "px"; th.div.style.display = ''; if (th.curHeight <= 1) { th.div.style.display = 'none'; return; } else if (th.curHeight >= th.height) { return; } setTimeout(fResizer, th.dt); } fResizer(); this.setCookie(cookName, on? 1 : 0, '/', new Date(new Date().getTime()+3600*24*365*1000)); }, out: function(msg, title, group) { with (this) { if (!msg) return; var span = top.document.createElement('div'); span.innerHTML = msg; var container = div; if (group) { container = groups[group]; if (!container) { var groupDiv = top.document.createElement('div'); div.appendChild(groupDiv); groupDiv.style.marginBottom = "7px"; var headDiv = top.document.createElement('div'); groupDiv.appendChild(headDiv); headDiv.innerHTML = group + ":"; headDiv.style.fontWeight = "bold"; headDiv.style.fontSize = (fontsize+5)+"px"; container = top.document.createElement('div'); groupDiv.appendChild(container); container.style.marginLeft = "1em"; container.style.paddingLeft = "4px"; container.style.borderLeft = "3px double"; groups[group] = container; } } container.appendChild(span); if (scrollTimeout) clearTimeout(scrollTimeout); var d = this.div; scrollTimeout = setTimeout(function() { d.scrollTop = 10000000 }, 100); if (title != null) { span.title = title; try { span.style.cursor = "pointer"; } catch (e) {} } }}, // $C=:F8O CAB0=>2:8 7=0G5=8O cookie. setCookie: function(name, value, path, expires, domain, secure) { var curCookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires.toGMTString() : "") + ((path) ? "; path=" + path : "; path=/") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : ""); document.cookie = curCookie; }, // $C=:F8O GB5=8O 7=0G5=8O cookie. getCookie: function(name) { var prefix = name + "="; var cookieStartIndex = document.cookie.indexOf(prefix); if (cookieStartIndex == -1) return null; var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length); if (cookieEndIndex == -1) cookieEndIndex = document.cookie.length; return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex)); } } window.hackerConsole = window.hackerConsole || window.Debug_HackerConsole_Js && new window.Debug_HackerConsole_Js(); if (window.hackerConsole) setTimeout(function() { with (window.hackerConsole) { out('SELECT&nbsp;*&nbsp;FROM&nbsp;table&nbsp;WHERE&nbsp;id&nbsp;=&nbsp;1<'+'br /'+'>\n', 'at ~/file/name line 226, out', 'at c:\wwwroot\laum\modules\core\editor.class.php line 224'); out('&nbsp;&nbsp;--&nbsp;1&nbsp;ms;&nbsp;returned&nbsp;1&nbsp;row(s)<'+'br /'+'>\n', 'at ~/file/name line 226, out', 'at ~/file/name line 224'); }}, 200); //]]></script> ' when calling method: [nsIOnReadyStateChangeHandler::handleEvent]" nsresult: "0x8057001c (NS_ERROR_XPC_JS_THREW_JS_OBJECT)" location: "JS frame :: chrome://firebug/content/firebug.js :: anonymous :: line 951" data: no]
По отдельности эти библиотеки работают отлично.
Back to top
View user's profile Send private message
avgera
Заглянувший



Joined: 20 Sep 2006
Posts: 6
Карма: 0
   поощрить/наказать


PostPosted: Mon Oct 30, 2006 8:09 pm (спустя 2 минуты; написано за 1 минуту 21 секунду)
   Post subject:
Reply with quote

Забыл добавить: версии библиотек HackerConsole 1.17, JsHttpRequest 4.14, браузер Mozilla FireFox 1.5.0.7.
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Mon Oct 30, 2006 10:34 pm (спустя 2 часа 25 минут; написано за 1 минуту 8 секунд)
   Post subject:
Reply with quote

Нужен URL для воспроизведения проблемы, а еще лучше - тестовый скрипт, который ее воспроизводит. По идее, если консоль подключается ПОСЛЕ JsHttpRequest, ошибок быть не должно (а вот если до, тогда, конечно, будут ошибки: консоль же "думает", что работает с html-кодом, а не с JavaScript-контентом).
Back to top
View user's profile Send private message Send e-mail
redhummer
Заглянувший



Joined: 19 Oct 2006
Posts: 8
Карма: 2
   поощрить/наказать


PostPosted: Tue Oct 31, 2006 10:12 am (спустя 11 часов 38 минут; написано за 3 минуты 1 секунду)
   Post subject:
Reply with quote

Консоль включается перед JsHttpRequest:

IE 6 - нормально;
Opera 9.01 - консоль работает, JsHttpRequest - нет;
Mozilla 1.0.7 - консоль работает, JsHttpRequest - нет.
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Tue Oct 31, 2006 10:40 am (спустя 27 минут; написано за 2 минуты 8 секунд)
   Post subject:
Reply with quote

Не стоит этого делать. Консоль можно присоединять только к HTML-страницам, НЕ к результату аякс-запроса.

Впрочем, возможно, в JsHttpRequest и стоит сделать поддержку консоли, но это требует отдельной работы и должно реализовываться совсем другими методами, чем вывод консоли сейчас. Я пока не вижу, как это вообще можно сделать без нарушения автономности библиотеки.
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Sun Nov 05, 2006 4:17 pm (спустя 5 дней 5 часов 36 минут; написано за 30 секунд)
   Post subject:
Reply with quote

version 1.18:
- были проблемы с выводом символа \ в консоль; исправлено.
Back to top
View user's profile Send private message Send e-mail
2tl
Заглянувший



Joined: 25 Dec 2006
Posts: 1
Карма: 0
   поощрить/наказать


PostPosted: Mon Dec 25, 2006 9:37 pm (спустя 1 месяц 20 дней 5 часов 20 минут; написано за 1 минуту 18 секунд)
   Post subject: ошибка в firefox при включенном модуле firebug
Reply with quote

при в ключенном модуле firebug хакерская консоль не открывается, firebug показывает следующее сообщение об ошибке:
out is not defined
(no name)()proj (line 165)
[Break on this error] out('kkhh<br />\n', 'at ~/proj/index.php line 43, debug', 'message');
при выключенном firebugе все работает нормально
Back to top
View user's profile Send private message
Константин Жинько [tIT]
Сотрудник «Лаборатории»



Joined: 12 Jun 2004
Posts: 2264
Карма: 106
   поощрить/наказать

Location: Москва

PostPosted: Tue Dec 26, 2006 12:46 am (спустя 3 часа 8 минут; написано за 42 секунды)
   Post subject:
Reply with quote

Поставил последний firebug на последний firefox с последней консолью. У меня лично все работает:


HackerConsole_FireBug.gif
 Description:
 Filesize:  25.28 KB
 Viewed:  64161 Time(s)

HackerConsole_FireBug.gif


Back to top
View user's profile Send private message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Mon Feb 05, 2007 2:16 pm (спустя 1 месяц 10 дней 13 часов 30 минут; написано за 35 секунд)
   Post subject:
Reply with quote

а можно сделать так, чтобы и стандартные пхпшные ошибки выводились в неё, а не вперемежку с HTML?
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Mon Feb 05, 2007 3:24 pm (спустя 1 час 8 минут; написано за 1 минуту 16 секунд)
   Post subject:
Reply with quote

Можно. См. php.net/set_error_handler

Правда, фатальные ошибки через set_error_handler не поймать, для этого можно использовать только ob_start с последующим поиском текста ошибки в выходном буфере. Это уже значительно сложнее.

На практике и то, и другое, правда, мало помогает.
Back to top
View user's profile Send private message Send e-mail
pav
Участник форума



Joined: 12 Mar 2003
Posts: 203
Карма: 4
   поощрить/наказать

Location: Россия / г.Северодвинск

PostPosted: Fri Feb 16, 2007 12:37 pm (спустя 10 дней 21 час 12 минут; написано за 1 минуту 35 секунд)
   Post subject:
Reply with quote

Появился аналог библиотеки выполненный в виде расширения к ФФ и пакета pear. FirePHP (www.firephp.org/)
Back to top
View user's profile Send private message Send e-mail
Антон Макаренко
Участник форума



Joined: 05 Feb 2004
Posts: 374
Карма: 31
   поощрить/наказать

Location: Киев

PostPosted: Wed Feb 28, 2007 12:59 pm (спустя 12 дней 21 минуту; написано за 1 минуту 33 секунды)
   Post subject:
Reply with quote

FF 2.0.0.2
Также "out is not defined"


fb_jshc.gif
 Description:
также не работает
 Filesize:  21.31 KB
 Viewed:  62768 Time(s)

fb_jshc.gif


Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Wed Feb 28, 2007 3:37 pm (спустя 2 часа 38 минут; написано за 7 секунд)
   Post subject:
Reply with quote

В какой строке-то хоть?
Back to top
View user's profile Send private message Send e-mail
TeXHaPb
Guest





Карма: 388
   поощрить/наказать


PostPosted: Thu Mar 15, 2007 1:07 pm (спустя 14 дней 21 час 29 минут; написано за 1 минуту 9 секунд)
   Post subject: Проблема.
Reply with quote

Не работает без изменений с cakePHP. А хотелось бы отладочную информацию при DEBUG_LEVEL > 0 сыпать в консоль.
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Fri Mar 16, 2007 4:54 pm (спустя 1 день 3 часа 47 минут; написано за 39 секунд)
   Post subject:
Reply with quote

Почему не работает? Что пишет? Может, Вы не в том месте инициализируете консоль? Нужно это делать ПОСЛЕ того, как был назначен обработчик gzip-сжатия (к примеру).
Back to top
View user's profile Send private message Send e-mail
Антон Макаренко
Участник форума



Joined: 05 Feb 2004
Posts: 374
Карма: 31
   поощрить/наказать

Location: Киев

PostPosted: Thu Mar 22, 2007 1:49 pm (спустя 5 дней 20 часов 55 минут; написано за 3 минуты 35 секунд)
   Post subject:
Reply with quote

Дмитрий Котеров
Только что скачал последнюю версию - баг с фаербагом (: исчез (forum.dklab.ru/viewtopic.php?p=130624#130624)

Еще маленькая проблема:
если в CSS определено такое правило:
Code (css): скопировать код в буфер обмена
* {
        font-family:"MS Sans Serif", "Arial", sans-serif;
}
то содержимое консоли теряет моноширинный шрифт.

Правда, если в том же CSS прописать:
Code (css): скопировать код в буфер обмена
div.hackerConsole * {
        font-family:monospace!important;
}
то помогает
Back to top
View user's profile Send private message Send e-mail
foxx
Участник форума



Joined: 16 Jul 2006
Posts: 60
Карма: 2
   поощрить/наказать

Location: Россия, Кемерово

PostPosted: Tue Apr 03, 2007 1:56 am (спустя 11 дней 12 часов 6 минут; написано за 6 минут 20 секунд)
   Post subject:
Reply with quote

Подскажите, плз - у меня консоль замечательно работает за одним маленьким исключением: вместо правильного имени файла и номера сроки в контекст выводится Generic.php, 480 строка. Приведу коды (дополнительные функции для DebugHC и DBSimple).
DBSimple:
Code (php): скопировать код в буфер обмена
function hclog($DB,$sql){
        call_user_func (www.php.net/call_user_func)(array (www.php.net/array)('Debug_HackerConsole_Main', 'out'), $sql,'Queryes');
}
$DB->setLogger('hclog');
DebugHC:
Code (php): скопировать код в буфер обмена
function Debug($v,$group="message",$tip=null,$color=null){
        call_user_func (www.php.net/call_user_func)(array (www.php.net/array)('Debug_HackerConsole_Main', 'out'), $v,$group,$tip,$color);
}
Функция Debug в процессе работы нареканий не вызывает, выводит верный контекст. Функция hclog выводит в контексте Generic.php, 480 строка.
В чем суть проблемы - я вроде понимаю, ведь в контексте действительно находится $this->_logQuery($query).
Самый главный вопрос: можно ли как-то исправить ситуацию? Может как-то увеличить глубину трассировки?
Back to top
View user's profile Send private message
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Tue Apr 03, 2007 6:15 pm (спустя 16 часов 19 минут; написано за 36 секунд)
   Post subject:
Reply with quote

Не понял вопроса. Опишите, пожалуйста, подробнее, что именно не работает и как должно быть. Между функциями hclog и Debug вроде как нет никакой связи...
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Tue Apr 03, 2007 6:16 pm (спустя 1 минуту 3 секунды; написано за 46 секунд)
   Post subject:
Reply with quote

Кстати, вот так универсальнее:
Code (php): скопировать код в буфер обмена
function Debug() {
    $args = func_get_args (www.php.net/func_get_args)();
    call_user_func_array (www.php.net/call_user_func_array)(array (www.php.net/array)('Debug_HackerConsole_Main', 'out'), $args);
}
Back to top
View user's profile Send private message Send e-mail
Guest






Карма: 388
   поощрить/наказать


PostPosted: Tue Apr 03, 2007 6:53 pm (спустя 36 минут; написано за 16 минут 34 секунды)
   Post subject:
Reply with quote

Да, корявенько описАл, пардоньте... Суть дела такова: пользую Ваши библиотеки Консоль и DBSimple (памятник Вам, Дмитрий, мраморный за них ;) ). В консоль логируются запросы к БД. Сделал все как у Вас в мануале написано - методом setLogger консоли устанавливается логгер для запросов (функция hclog). Также, консоль использую для вывода значений переменных функцией Debug. Так вот: при использовании функции Debug при выводе значений переменных контекст выводится верный - и файл и номер сроки. А вот функция hclog выводит в контексте "... Generic.php, 480 строка" (т.к. на этой строке находится метод _logQuery($query) библиотеки DBSimple, который вызывает функцию hclog).
Теперь попробую примерчик привести:
Code (php): скопировать код в буфер обмена
(файл lib.php)
// подключение консоли
include_once('debughc/main.php');
new Debug_HackerConsole_Main(true);
function Debug($v,$group="message",$tip=null,$color=null)
{
        call_user_func (www.php.net/call_user_func)(array (www.php.net/array)('Debug_HackerConsole_Main', 'out'), $v,$group,$tip,$color);
}

// подключение dbsimple
function hclog($DB,$sql){
        call_user_func (www.php.net/call_user_func)(array (www.php.net/array)('Debug_HackerConsole_Main', 'out'), $sql,'Queryes');
}
include_once('dbsimple/mysql.php');
$dsn = $_db['type']."://" . $_db['user'] . ":" . $_db['pass'] . "@" . $_db['host'] . "/" . $_db['base'];
if(!$DB = DbSimple_Generic::connect($dsn)){
        die (www.php.net/die)('Wrong DB connection!');
}
$DB->setLogger('hclog');
// подключения библиотек окончены, открываем следующий файл в котором происходит дальнейшая обработка

(файл index.php)
$a='lorem ipsum...';
Debug($a);
// в данном случае все нормально, в контексте будет выведено "index.php, строка 2"

$s=$DB->select('SELECT * FROM table);
Debug($s);
/* здесь функция Debug опять выводит все правильно, а вот установленный для dbsimple логгер (hclog) выведет "... Generic.php, 480 строка", хотя хотелось бы увидеть здесь "... index.php, строка 5" */
... вот и как тут быть? Заранее благодарю за дельный совет, а за
Дмитрий Котеров wrote:
Кстати, вот так универсальнее: Код (php): скопировать код в буфер обмена
function Debug() {
    $args = func_get_args();
    call_user_func_array(array('Debug_HackerConsole_Main', 'out'), $args);
}
благодарю по факту, спасибо!
Back to top
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Wed Apr 04, 2007 12:25 am (спустя 5 часов 31 минуту; написано за 49 секунд)
   Post subject:
Reply with quote

А... Ну так
Code (php): скопировать код в буфер обмена
    /**
     * Function for DbSimple SQL debugging.
     */

    function _dbsimpleQueryLogger($db, $sql, $caller)
    {
        $color = null;
        if (!preg_match (www.php.net/preg_match)('/^\s*--/', $sql)) {
            $sql = $this->_removeSpacePrefixes($sql);
        } else {
            $color = '#00AA00';
        }
        $sql = $sql . ";";
        if ($this->config->FRAMEWORK_DEBUG) {
            $tip = $caller? ("at ".@$caller['file'].' line '.@$caller['line']) : '';
            $this->console($sql, "SQL", $color, $tip);
        }
    }
Logger-у же третьим параметром передается caller, его и надо использовать...
Back to top
View user's profile Send private message Send e-mail
foxx
Участник форума



Joined: 16 Jul 2006
Posts: 60
Карма: 2
   поощрить/наказать

Location: Россия, Кемерово

PostPosted: Tue Apr 10, 2007 3:03 am (спустя 6 дней 2 часа 38 минут)
   Post subject:
Reply with quote

Дима, подскажите плз как правильно подключить? Смотрю на Ваш код и чую - ОНО!
Пробовал так:
указанную функцию сделал дополнительным методом для класса консоли,
сделал новый метод логгером для DBSimple (
Code (php): скопировать код в буфер обмена
$DB->setLogger(call_user_func (www.php.net/call_user_func)(array (www.php.net/array)('Debug_HackerConsole_Main','_dbsimpleQueryLogger',$DB,$sql,$caller)));
)
а пых ругается на отсутствие переменных Undefined variable: $sql $caller.
Опять же заранее благодарю.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Goto page Previous  1, 2, 3, 4  Next
Page 3 of 4    Email to a Friend.
Post a reply
Username
Subject
Господа спамеры и оптимизаторы!

Вы можете даже и не пытаться вставлять в текст поста ссылки - они все равно автоматически удаляются (вернее, тэги <a> заменяются на тэги <u>).

Но если не поверите и все же попытаетесь - как только увидите, что все безрезультатно, удалите свой пост, пожалуйста. Модераторы тоже люди, нехорошо, если они погрязнут в тоннах спама.
     

Disable BBCode in this post
Disable Smilies in this post
    HTML is OFF
BBCode is ON
Smilies are ON
You cannot post new topics in this forum. You can reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML