[{"@context":"https:\/\/schema.org\/","@type":"BlogPosting","@id":"https:\/\/ivonascimento.com\/2015\/03\/11\/matem-os-leprechauns-ou-catalogo-de-padroes-de-debug\/#BlogPosting","mainEntityOfPage":"https:\/\/ivonascimento.com\/2015\/03\/11\/matem-os-leprechauns-ou-catalogo-de-padroes-de-debug\/","headline":"Matem os Leprechauns, ou Catalogo de Padr\u00f5es de Debug.","name":"Matem os Leprechauns, ou Catalogo de Padr\u00f5es de Debug.","description":"Debugging patterns, ou como localizar e matar os malditos leprechauns! Entre um valium(caf\u00e9 sem a\u00e7ucar) e outro, lembrei que existe...","datePublished":"2015-03-11","dateModified":"2015-03-11","author":{"@type":"Person","@id":"https:\/\/ivonascimento.com\/author\/ivonascimento\/#Person","name":"Ivo Nascimento","url":"https:\/\/ivonascimento.com\/author\/ivonascimento\/","identifier":10240028,"image":{"@type":"ImageObject","@id":"https:\/\/secure.gravatar.com\/avatar\/2305ea1f48319271d323c5e1c0aadd4cc45d10c4927dd8b3af083facb8c6f75f?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2305ea1f48319271d323c5e1c0aadd4cc45d10c4927dd8b3af083facb8c6f75f?s=96&d=identicon&r=g","height":96,"width":96}},"publisher":{"@type":"Person","name":"Ivo Nascimento"},"image":{"@type":"ImageObject","@id":"https:\/\/i0.wp.com\/ivonascimento.com\/wp-content\/uploads\/2015\/03\/leprechaun-original102611.jpg?fit=1280%2C720&ssl=1","url":"https:\/\/i0.wp.com\/ivonascimento.com\/wp-content\/uploads\/2015\/03\/leprechaun-original102611.jpg?fit=1280%2C720&ssl=1","height":720,"width":1280},"url":"https:\/\/ivonascimento.com\/2015\/03\/11\/matem-os-leprechauns-ou-catalogo-de-padroes-de-debug\/","video":{"@context":"http:\/\/schema.org\/","@type":"VideoObject","@id":"https:\/\/www.youtube.com\/watch?v=5dJznTAwLSY#VideoObject","contentUrl":"https:\/\/www.youtube.com\/watch?v=5dJznTAwLSY","name":"Simpsons - Ralph Wiggum Leprechaun 2","description":"Ralph wiggum and his leprechaun      ......\n'He speaks to me too'","thumbnailUrl":["https:\/\/i.ytimg.com\/vi\/5dJznTAwLSY\/default.jpg","https:\/\/i.ytimg.com\/vi\/5dJznTAwLSY\/mqdefault.jpg","https:\/\/i.ytimg.com\/vi\/5dJznTAwLSY\/hqdefault.jpg"],"uploadDate":"2009-03-30T07:33:51+00:00","duration":"PT9S","embedUrl":"https:\/\/www.youtube.com\/embed\/5dJznTAwLSY","publisher":{"@type":"Organization","@id":"https:\/\/www.youtube.com\/channel\/UC3JmQLH3Cbnz4QBYkJfgIHg#Organization","url":"https:\/\/www.youtube.com\/channel\/UC3JmQLH3Cbnz4QBYkJfgIHg","name":"RollingFireDragon","description":"Rolling-Fire-Dragon\n\nWelcome,\n to  my Lair ..erhm..Channel for our fire addicted brethren that just love to watch fire, things burning, cool shit, fire spinning - eating - breathing - weaponry, greatt music and ppl.\nHope you enjoy whatever you came across during your visit to my Den. \n\n\nThere will be lots more to come so \n....\u2554\u2550\u2566\u2557\u2554\u2566\u2557\u2554\u2550\u2566\u2550\u2566\u2566\u2566\u2566\u2557\u2554 \u2550\u2557..........\n....\u2551\u255a\u2563\u2551\u2551\u2551\u255a\u2563\u255a\u2563\u2554\u2563\u2554\u2563\u2551\u255a\u2563 \u2550\u2563..\n....\u2560\u2557\u2551\u255a\u255d\u2551\u2551\u2560\u2557\u2551\u255a\u2563\u2551\u2551\u2551\u2551\u2551 \u2550\u2563...........\n....\u255a\u2550\u2569\u2550\u2550\u2569\u2550\u2569\u2550\u2569\u2550\u2569\u255d\u255a\u2569\u2550\u2569 \u2550\u255d.......... \n\n\n\nPlease feel free to coment or rate anything you've seen here. Its a free country! \n.\n..\n\n.\nIm mostly going to  be uploading most of my ropedart techniques and fire performances on this channel; as well as other unrelated content.\n\n?My name is Dave and I've been playin with 'Ropedart' oh for about 3 years or so.I have a bit of wingchun kungfu behind me -comes in useful for wielding the Rope Dart.  I've also started wielding Double Meteor Hammer (or 'Meteors'), Rope-Torch and even been trying my hands at Double Rope Dart (Giant Meteors). We're going to start making some Fire Swords and even a Fire Breathing (or spraying) Shield (that's one of Ian or Ito 's creations)\n\nAgain! Enjoy!\n\nThanks for stopping by and thanks to everyone bringing out the army in the 'NewModelCircusArmy'. the fire spinnners  and to all the Drummers, musicians and martial artists out there.......You ROCK!\n.\n.\n.\n\n\nAlso displayed on this channel will be \nFire Poi - Staff  - Nun-chucks -Meteors and of course  Rope dart done by my friends which will be named in the videos.\n.\nCity:Toronto","logo":{"url":"https:\/\/yt3.ggpht.com\/ytc\/AIdro_m4nONvCEP6pkWjNitdVfXB5AGIARl4c9PrdY7vsP149w=s800-c-k-c0x00ffffff-no-rj","width":800,"height":800,"@type":"ImageObject","@id":"https:\/\/www.youtube.com\/watch?v=5dJznTAwLSY#VideoObject_publisher_logo_ImageObject"}},"potentialAction":{"@type":"SeekToAction","@id":"https:\/\/www.youtube.com\/watch?v=5dJznTAwLSY#VideoObject_potentialAction","target":"https:\/\/www.youtube.com\/watch?v=5dJznTAwLSY&t={seek_to_second_number}","startOffset-input":"required name=seek_to_second_number"},"interactionStatistic":[[{"@type":"InteractionCounter","@id":"https:\/\/www.youtube.com\/watch?v=5dJznTAwLSY#VideoObject_interactionStatistic_WatchAction","interactionType":{"@type":"WatchAction"},"userInteractionCount":165802}],{"@type":"InteractionCounter","@id":"https:\/\/www.youtube.com\/watch?v=5dJznTAwLSY#VideoObject_interactionStatistic_LikeAction","interactionType":{"@type":"LikeAction"},"userInteractionCount":260}]},"about":["texto de Bus\u00e3o"],"wordCount":852,"articleBody":"Debugging patterns, ou como localizar e matar os malditos leprechauns!Entre um valium(caf\u00e9 sem a\u00e7ucar) e outro, lembrei que existe um cat\u00e1logo de patterns para design orientado a objeto, outro para enterprise OO e mais um design pattern para refactoring e pra mim ficou claro que estudamos o como fazer, como escalar, e como evoluir, mas e como consertar? Como fica?e como consertar? Como fica?Claro que achei que estava tendo uma ideia maravilhosa, algo que faltava e etc&#8230; talvez pelo efeito do valium ou pelas hist\u00f3rias geniais sobre momentos Eureka que correm pelos sites de auto-ajuda ao lado de fotos de como perder peso em 2 semanas usando a p\u00edlula do coc\u00f4 feliz, mas n\u00e3o era o caso, ufa padr\u00f5es de debug \u00e9 um assunto com refer\u00eancias na web e at\u00e9 um verbete na Wikipedia.Mesmo assim, entre o Eureka falso e a localiza\u00e7\u00e3o do verbete na Wikipedia, deu tempo de pensar em alguns patterns para &#8220;o cat\u00e1logo maravilhoso de search\/destr\u00f3i de leprechauns&#8221; a la Dr. Seuss.Aqui vai o DRAFT(repito, o DRAFT) do primeiro deles:1o- Ponto de EntradaDefine por onde se come\u00e7a a pesquisa de um bug.Resposta curta: Ou pelo m\u00e9todo que realizou o output ou pelo que requisitou o output.Exemplo:Voc\u00ea pede a lista de usu\u00e1rios usando a tela de cliente e uma chamada para o m\u00e9todo getUsers recebe um dado da origem, n\u00famero do cliente. O sistema recupera uma lista do banco de dados segundo esse n\u00famero\/id e renderiza na tela\/sa\u00edda.Temos 3 componentes.1) quem requisitou a a\u00e7\u00e3o.Esse componente \u00e9 de interface com o usu\u00e1rio\/cliente, seja o usu\u00e1rio um cronjob ou uma pessoa utilizando o software.Muitas vezes a requisi\u00e7\u00e3o \u00e9 parametrizada e o erro pode estar nesses par\u00e2metros. Muitas vezes a requisi\u00e7\u00e3o deve seguir um protocolo espec\u00edfico(cabe\u00e7alhos http, chuncks, formato de dado, etc) e n\u00e3o est\u00e1 fazendo isso corretamente.2) quem executou a a\u00e7\u00e3o.O componente que executa a computa\u00e7\u00e3o, normalmente uma chain de componentes, com delega\u00e7\u00f5es e infer\u00eancias pr\u00f3prias.Esse componente pode ser parametrizado e o problema pode estar nos par\u00e2metros.Esse componente trafega uma mensagem na chain e essa mensagem pode estar sofrendo algum efeito colateral e sendo alterada ficando num estado inconsistente.3) o outputAquele que apresenta os dados para o cliente.Esse componente recebe informa\u00e7\u00f5es que devem ser apresentadas.Ele pode estar lidando com um tipo de dado para qual n\u00e3o est\u00e1 preparado.Estar com problemas em transforma\u00e7\u00f5es nos dados para visualiza\u00e7\u00e3o.N\u00e3o estar recebendo os dados.Solu\u00e7\u00e3o de menor custoO menor custo de solu\u00e7\u00e3o est\u00e1 quando o bug \u00e9 encontrado no componente 1 e no 3, e ocorre com frequ\u00eancia do bug estar realmente nesses dois itens, logo, eles s\u00e3o os melhores pontos de entrada para localizar um bug, ao inv\u00e9s de come\u00e7ar a pesquisa pelo algoritmo que recupera a lista, o item 2.Workflow de ataque:Primeiro verifique 1, tendo certeza de que a requisi\u00e7\u00e3o \u00e9 feita da maneira correta, depois verifique 3, tendo certeza de que o output est\u00e1 sendo realizado da maneira correta. Somente depois verifique o ponto 2.\u00c9 isso, ainda tem outros 4 padr\u00f5es de debug anotados, vou soltando eles por aqui com o tempo, mas eis a listasubir m\u00e9todo.descer m\u00e9todo.nomear valores.usar amostra.matar para ver.Por favor, tenha em mente que: sou um eterno estudante e, como todo bom estudante, procuro as melhores maneiras de saber(que as pessoas teimam em confundir com reconhecer), e que fa\u00e7o isso entre um valium e outro.obs.; meu valium n\u00e3o vem em p\u00edlulas.&#8230;e pra provar que ningu\u00e9m l\u00ea essa bodega, vou imitar o magistrado, que com sua grande eloqu\u00eancia apresentou a peti\u00e7\u00e3o da pamonha ao mundo:\u201cSenhores julgadores, espero que entendam o que fa\u00e7o nestas pequenas linhas, e que n\u00e3o seja punido por tal ato de rebeldia, mas h\u00e1 tempos os advogados vem sendo desrespeitados pelos magistrados, que sequer se d\u00e3o ao trabalho de analisar os pleitos que apresentamos. Nossas peti\u00e7\u00f5es nunca s\u00e3o lidas com a aten\u00e7\u00e3o necess\u00e1ria. A maior prova disso, ser\u00e1 demonstrada agora, pois se somos tradados como pamonhas, nada mais justo do que trazer aos autos a receita desta t\u00e3o famosa iguaria. Rale as espigas ou corte-as rente ao sabugo e passe no liquidificador, juntamente com a \u00e1gua, acrescente o coco, o a\u00e7\u00facar e mexa bem, coloque a massa na palha de milho e amarre bem, em uma panela grande ferva bem a \u00e1gua, e v\u00e1 colocando as pamonhas uma a uma ap\u00f3s a fervura completa da \u00e1gua, Importante a \u00e1gua deve estar realmente fervendo para receber as pamonhas, caso contr\u00e1rio elas v\u00e3o se desfazer. Cozinhe por mais ou menos 40 minutos, retirando as pamonhas com o aux\u00edlio de uma escumadeira.\u201dShare this:\t\t\t\tPrint (Opens in new window)\t\t\t\tPrint\t\t\tTweet\t\t\t\tShare on WhatsApp (Opens in new window)\t\t\t\tWhatsApp\t\t\t"},{"@context":"https:\/\/schema.org\/","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"2015","item":"https:\/\/ivonascimento.com\/2015\/#breadcrumbitem"},{"@type":"ListItem","position":2,"name":"03","item":"https:\/\/ivonascimento.com\/2015\/\/03\/#breadcrumbitem"},{"@type":"ListItem","position":3,"name":"11","item":"https:\/\/ivonascimento.com\/2015\/\/03\/\/11\/#breadcrumbitem"},{"@type":"ListItem","position":4,"name":"Matem os Leprechauns, ou Catalogo de Padr\u00f5es de Debug.","item":"https:\/\/ivonascimento.com\/2015\/03\/11\/matem-os-leprechauns-ou-catalogo-de-padroes-de-debug\/#breadcrumbitem"}]}]