PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (6): « 1 2 3 4 [5] 6 »

> Найдено сообщений: 84
AmsTaFF Отправлено: 25 Июля, 2013 - 08:58:27 • Тема: НУжен свежий взгляд • Форум: Вопросы новичков

Ответов: 9
Просмотров: 276
Цитата:
переменная вылетает из тэгов при выводе результата

что переменная делает?
что делает эта ф-ция previous_post_link
и какой получается переменная $previous1 после применения ф-ции previous_post_link
AmsTaFF Отправлено: 24 Июля, 2013 - 14:51:45 • Тема: хочу сделать подробный дебаг, и при возможности отключать его • Форум: JavaScript & VBScript

Ответов: 14
Просмотров: 2042
DelphinPRO, именно

сейчас сделал такой простой самопис переключателя, пока его хватает:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. /**
  3.  * @type {bool}
  4.  */
  5. Cart_.DEBUG = true;
  6. Cart_.DEBUG_SECTIONS = {
  7.         SStorage: true,
  8.         Input: false,
  9.         Cart: true,
  10.         Inputs_by_type: {
  11.                 Select: false,
  12.                 Radios: true,
  13.                 Typeahead: false,
  14.                 Radio: false,
  15.                 Input: true
  16.         },
  17.         Ajax: false
  18. };
  19. /**
  20.  * @param object
  21.  * @returns {boolean}
  22.  * @function
  23.  */
  24. Cart_.IS_DBG = function(object){
  25.         if(Cart_.DEBUG){
  26.                 if(Cart_.DEBUG_SECTIONS.Input == true){
  27.                         if(object.constructor === Cart_.Inputs.Input && object instanceof Cart_.Inputs.Input && Cart_.DEBUG_SECTIONS.Inputs_by_type.Input)
  28.                                 return true;
  29.                         if(object.constructor === Cart_.Inputs.RadiosInput && object instanceof Cart_.Inputs.RadiosInput && Cart_.DEBUG_SECTIONS.Inputs_by_type.Radios)
  30.                                 return true;
  31.                 }
  32.                 if(Cart_.DEBUG_SECTIONS.Cart == true && object.constructor === Cart_.Cart && object instanceof Cart_.Cart)
  33.                         return true
  34.         }
  35.         return false;
  36. };
  37.  


в классе такой код:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. /**
  3.          * @public
  4.          * @param id
  5.          * @param qty
  6.          */
  7.         self.add = function (id, qty) {
  8.                 if(Cart_.IS_DBG(self)){
  9.                         self.checkForDebugInited();
  10.                         console.log(self.withPrefix('::add: производим добавление нового товара'));
  11.                 }
  12.                 self._add(id,qty);
  13.         };
  14.         /**
  15.          *
  16.          * @param id
  17.          * @param qty
  18.          * @private
  19.          */
  20.         self._add = function (id, qty) {
  21.                 if (typeof qty == 'object')
  22.                         qty = qty.val();
  23.                 if (!qty)
  24.                         qty = 1;
  25.           ....
  26.  


в дальнейшем покопаю в сторону включения и отключения групп логов в console
AmsTaFF Отправлено: 24 Июля, 2013 - 14:18:14 • Тема: хочу сделать подробный дебаг, и при возможности отключать его • Форум: JavaScript & VBScript

Ответов: 14
Просмотров: 2042
esterio, если бы код был свой, такого изврата мне не пришлось бы делать.

Пришлось перейти на другой способ (т.к. реализовать то, что хотел раньше можно только танцами с бубном и извратом страшным), хоть и немного громоздкий.

делаю ф-ции add и _add, в _add - весь функционал , а в add, всякие debug'и и прочий мусор неинтересный... (я не знаю как такой способ называется)
AmsTaFF Отправлено: 24 Июля, 2013 - 08:48:24 • Тема: хочу сделать подробный дебаг, и при возможности отключать его • Форум: JavaScript & VBScript

Ответов: 14
Просмотров: 2042
эххх... ладно, может быть я неправильное решение принял. Но вот представьте что у вас есть асинхронное приложение из 3к строчек. Где присутствует много эвентов, названия методов и свойств "неговорящие" (например методы val, set, setValue делают практически одно и то же) + производится загрузка данных из БД или кэша LocalStorage + присутствует большое кол-во багов (например баг, когда данные грузятся 4-5 раз (хоть и из кэша, но 4-5 раз!)).

и, я думаю что у всех возникнет желание взять под контроль эту программу и знать что происходит. Но, если просто написать везде console.log, то записи засрут console, из-за этого необходимо как-то их фильтровать. (и добавлю, что экземпляров класса A - 20+, а B - 6)

в чем я не прав?
AmsTaFF Отправлено: 23 Июля, 2013 - 17:06:09 • Тема: хочу сделать подробный дебаг, и при возможности отключать его • Форум: JavaScript & VBScript

Ответов: 14
Просмотров: 2042
скажем так, у меня нет необходимости пошагово изучать работу программы, или где-то её останавливать, чтобы посмотреть на окружение, есть необходимость знать что произошло при том или ином клике и очень подробно знать, какой обработчик эвента запустился, когда пришли данные от сервера, и когда они были на него посланы и с какими данными
AmsTaFF Отправлено: 23 Июля, 2013 - 16:57:22 • Тема: хочу сделать подробный дебаг, и при возможности отключать его • Форум: JavaScript & VBScript

Ответов: 14
Просмотров: 2042
я и так пользуюсь и firebug'ом, и вывожу console.log.
но проблема в том, что выводить приходится много и багов, которые надо исправить, много. И мне необходима ф-ция включения/отключения дебага каких-то классов.

задача заключается в том, чтобы видеть что происходит в программе, как она отработала, какие данные загрузила,какие значения отправила, какие эвенты запустила, а потом отключить часть из этой информации. Если просто в методах прописать console.log'и, то консоль будет засорена, а при ещё одном баге, снова придеться писать дебаговую информацию
AmsTaFF Отправлено: 23 Июля, 2013 - 16:40:54 • Тема: хочу сделать подробный дебаг, и при возможности отключать его • Форум: JavaScript & VBScript

Ответов: 14
Просмотров: 2042
хочу иметь возможность включать-отключать дебаговую информацию по вызовам методов и прочее. Мне приходится так делать, т.к. досталась программа полностью асинхронная, написанная абсолютно несведущим человеком. Сейчас там происходит хаос, и мне просто необходимо знать что происходит, но засорять код я не хочу.

как я сделал сейчас:
есть класс A, и есть класс B наследник от A
наследование сделано этой ф-цией http://javascript[dot]ru/tutorial/ob[dot][dot][dot]-funkciya-extend

так же сделаны классы Adbg и Bdbg, которые наследуются от A и B соответственно.
я создал фабрику, которая при значении true в переменной DEBUG, выдает вместо A - Adbg, а вместо B - Bdbg.

Все хорошо и замечательно, пока не захочешь использовать методы из Adbg в Bdbg. В случае Bdbg получается так:
A<-B<-Bdbg

т.е. было бы изумительно, если A превратилась в Adbg

плюсы моего решения таковы, что основной код вообще не знает что его дебажут и сам он чистенький и остается понятным (классы A и B), а в классах для дебага (Adbg, Bdbg) есть только всякие логи и прочая инфа.

вопрос, есть ли ещё какие решения имеющие такой же или похожий плюс? или как проще заменить A на Adbg (в примере чуть выше)

(так же добавлю, что декоратор тут не поможет, т.к. открытых методов у меня 1-2, и ещё очень много закрытых, открывать закрытые неохота (я понимаю что в js такого понятия нету, но так проще держать все в порядке))
AmsTaFF Отправлено: 10 Июля, 2013 - 11:05:15 • Тема: расширение DOMElement • Форум: XML и его обработка

Ответов: 2
Просмотров: 1524
esterio, уже не смогу попробовать так, уже сделал по-другому

не знаю как точно работает DOM, но из-за нехватки времени и специфичности TextContainer, сделал так:
PHP:
скопировать код в буфер обмена
  1. public function setTextContainer(TextContainer $text_container){
  2.                 $this->setBelongsTo($text_container->getName());
  3.                 return $this;
  4.         }
  5.         public function getTextContainer(){ return TextContainerRegistry::get($this->getBelongsTo()); }


PHP:
скопировать код в буфер обмена
  1. Class TextContainerRegistry
  2. {
  3.         /**
  4.          * @var TextContainer[]
  5.          */
  6.         static private $registry = array();
  7.  
  8.         /**
  9.          * @param $name
  10.          * @return TextContainer
  11.          */
  12.         static public function get($name){ return self::$registry[$name]; }
  13.         static public function add(TextContainer $text_container){ self::$registry[$text_container->getName()] = $text_container; }
  14. }


пришлось выкрутиться так, но зато сохранил интерфейс работы с элементом
AmsTaFF Отправлено: 09 Июля, 2013 - 09:56:42 • Тема: расширение DOMElement • Форум: XML и его обработка

Ответов: 2
Просмотров: 1524
Для библиотеки DOM можно изменить некоторые классы, например так:
PHP:
скопировать код в буфер обмена
  1. $this->document = new DOMDocument('1.0');
  2. $this->document->registerNodeClass('DOMElement', 'BannerElement2');
  3. $this->document->loadXML($xml_string);
  4. $this->document->formatOutput = true;
  5. $this->dom_banner = $this->document->getElementsByTagName(ComplexBannerConstants::XML_ELEM_BANNER)->item(0);


класс BannerElement2 определен так:
PHP:
скопировать код в буфер обмена
  1. Class BannerElement2 extends DOMElement {
  2.         /** @var  TextContainer */
  3.         private $text_container=null;
  4. ...
  5.         public function setTextContainer(TextContainer $text_container){
  6.                 $this->text_container = $text_container;
  7.                 $this->setBelongsTo($text_container->getName());
  8.                 return $this;
  9.         }
  10.         public function getTextContainer(){ return $this->text_container; }


Но, при такой реализации, если пройтись по детям и задать им контейнер, а потом, при втором проходе запросить этот контейнер, то он окажется null
PHP:
скопировать код в буфер обмена
  1.         public function run(){
  2.                 ....
  3.                 for($i=0;$i<$this->dom_banner->childNodes->length;$i++){
  4.                         /** @var BannerElement2 $el */
  5.                         $el = $this->dom_banner->childNodes->item($i);
  6.                         $el->setTextContainer(new TextContainer('test',20));
  7.                 }
  8.                 for($i=0;$i<$this->dom_banner->childNodes->length;$i++){
  9.                         /** @var BannerElement2 $el */
  10.                         $el = $this->dom_banner->childNodes->item($i);
  11.                         var_dump($el->getTextContainer());
  12.                 }
  13.                 ...
  14.  
  15.                 return $this;
  16.         }


Возможно ли как-нибудь сохранять этот объект в элементе?
AmsTaFF Отправлено: 19 Июня, 2013 - 14:49:14 • Тема: Удаление нескольких символов с начала или с конца • Форум: Вопросы новичков

Ответов: 4
Просмотров: 213
если такой ip будет всегда, используй strpos чтобы определеить где находится в строке двоеточие, а потом substr с 0 до результата strpos, а потом с strpos до конца

+-1 к результату strpos'a добавишь сам
AmsTaFF Отправлено: 19 Июня, 2013 - 10:51:11 • Тема: Здраствуйте! Помогите с массиво в php • Форум: Вопросы новичков

Ответов: 4
Просмотров: 192
блин банальная рекуррентная фунцкия, создай ф-цию, типа:
PHP:
скопировать код в буфер обмена
  1.  
  2. function go($data){
  3.     foreach($data as $k => $v){
  4.         if(is_array($v) ) {
  5.             go($v);
  6.         } else {
  7.             echo $k." -> ".$v;
  8.         }
  9.     }
  10. }
  11.  


а дальше можешь редактировать вывод как захочешь
AmsTaFF Отправлено: 19 Июня, 2013 - 10:47:04 • Тема: Скрытая ссылка • Форум: Если скрипт не работает

Ответов: 17
Просмотров: 4944
взломали что ли? Если не ошибаюсь, то "скрытая ссылка" имеется ввиду ссылка, которую на странице не видно, но которая есть в исходном коде в явном виде )

ищи всяческие лишние вещи у себя в исходном коде, там какой-нибудь js, php или вообще css )
AmsTaFF Отправлено: 19 Июня, 2013 - 08:43:33 • Тема: PDO • Форум: Вопросы новичков

Ответов: 3
Просмотров: 169
а вывод всяческих ошибок, вплоть до нотисов включен? не вылетают никакие исключения?)
AmsTaFF Отправлено: 18 Июня, 2013 - 16:49:25 • Тема: Пара простых триггеров для MySql • Форум: Вопросы новичков

Ответов: 5
Просмотров: 195
sanchez812 пишет:
AmsTaFF пишет:
а внешние ключи, не? по-моему они как-раз для этого и созданы

Не разобрался, как их через phpmyadmin устанавливать, да и могут ли они быть null?


насчет phpmyadmin'a не знаю как (не приходилось делать), null быть могут
Для использования внешних ключей необходимо, чтобы таблица была на движке InnoDB, и ещё несколько заморочек, с которыми лучше ознакомиться в документации и статьях разных.

на английском пишется так "foreign key"
AmsTaFF Отправлено: 18 Июня, 2013 - 11:15:49 • Тема: Пара простых триггеров для MySql • Форум: Вопросы новичков

Ответов: 5
Просмотров: 195
а внешние ключи, не? по-моему они как-раз для этого и созданы

Страниц (6): « 1 2 3 4 [5] 6 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB