thegoodfellas/blogset-br huggingface dataset:
O que voce quer saber? (What'd you wanna know?) http://formspring.me/davispeixoto Se voce ja trabalhou a mais de 2 meses em TI ja ouviu os termos "normalizacao de banco de dados" e "boas praticas". E provavelmente tambem ouviu a relacao das duas coisas: e uma boa pratica normalizar um banco de dados.Nao ha o que se discutir sobre isso numa primeira instancia. Sim, porque uma das tecnicas avancadas de tuning e a desnormalizacao. Aqui vamos a um exemplo pratico de como se fazer isso. Mas antes, as ressalvas:- Aprenda a normalizar um banco de dados de forma decente, nada de fazer um servico porco e querer dizer que e um padrao avancado inventado no Paquistao.- Assim como para normalizar, estude o que pode ser desnormalizado. O processo e um metodo, racional e com suas proprias regras.O exemplo.Vamos supor que voce cuide de um portal de artigos medicos, que sao publicados sempre em 4 linguas (ingles, frances, alemao e espanhol).Numa forma normalizada, voce teria um banco de dados com estrutura semelhante a:Tabela [autor]- id- nomeTabela [idioma]- id- idiomaTabela [artigo]- id- autor_idTabela [artigo_contents]- id- artigo_id- idioma_id- conteudoComo vemos acima, temos uma tabela para idioma, uma para artigo com informacoes gerais, e uma tabela com o conteudo dos artigos, indexada ao artigo e ao idioma. Essa estrutura facilita a organizacao dos conceitos uma vez que esta normalizada.Agora como saber se essa estrutura poderia ser otimizada e desnormalizada? Bem, poderiamos ter o conteudo na propria tabela artigos. Antes de prosseguir com a ideia, precisamos responder a algumas perguntas:- o numero de idiomas vai/pode mudar? quais as chances disso acontecer?- pode ser que um artigo seja publicado num numero parcial de linguas, por exemplo so em ingles e alemao?A resposta a estas perguntas e que determina se a atual estrutura do banco de dados pode ser desnormalizada ou nao.Se o numero de linguas NAO vai mudar ao longo do tempo, ou a chance disto e extremamente remota E os artigos serao todos sempre publicados em todas as linguas, entao podemos desnormalizar o banco de dados, movendo o conteudo para a tabela artigos.A nova estrutura seria semelhante a:Tabela [autor]- id- nomeTabela [artigo]- id- autor_id- conteudo_en- conteudo_de- conteudo_fr- conteudo_esMuito mais simples. A vantagem explicita desse tipo de operacao e a simplicidade na hora de escrever e rodar as queries.Antes deveria ser algo como:SELECT c.conteudo, at.nome FROM artigo_conteudo c, autor a WHERE a.id = artigo.autor_id AND ac.artigo_id = artigo.id AND ac.idioma_id = '2' AND artigo.id = 27;Agora se traduz em algo como:SELECT a.conteudo_fr, at.nome FROM artigo a, autor at WHERE at.id = a.autor_id AND artigo.id = 27;Reduzindo o numero de joins e tudo o mais. Claro, vai ser necessario refatorar parte dos codigos, mas pode valer a pena. O ideal e desnormalizar ANTES de criar o codigo, na fase de design da solucao. Assim o custo de refactor e 0.----------- keepReading Pois e, tem milhares e milhares de paginas e posts na internet com um titulo semelhante, e chegou minha hora de escrever um tambem.Depois de alguns anos de muito codigo e de muito polir eles me sinto confortavel pra fazer
provavelmente desconhece sao as funcoes para lidar com eles.array_unique, uasort, array_intersect, array_search, array_diff, array_walk... Existe um grande numero de funcoes uteis que geralmente por ignorancia sao reescritas (nem sempre da melhor forma) pelos programadores, incorrendo no caso da reinvencao da roda.PEAR, PECL e TuningAinda no tema de parar de reinventar a roda, saiba que voce pode - e deveria - consultar repositorios de codigos como o PEAR, o PECL e o PHPClasses. Existem muitas solucoes prontas na web para resolver problemas que voce tem exatamente agora. E geralmente solucoes feitas por programadores mais experientes ou mesmo por comunidades inteiras.Alem de poupar trabalho, voce pode se valer disso para aprender atraves da leitura destes codigos, e com o tempo, pode inclusive modificar estes codigos quando for usar. Adaptar as suas necessidades ou corrigir um bug.ConclusaoTodas as "dicas" que coloquei aqui se resumem a algumas nocoes nao-tao-comuns sobre boas praticas.Geralmente o que se discute quando o assunto sao boas praticas e estilo sao formas e padroes de se escrever o codigo, mas quase nunca se fala em:Aproveitar o que o sistema te oferece de forma nativaExplorar o que a linguagem tem de recursosExplorar o que ja foi feito pela comunidadeAte a proxima.----------- keepReading
um unico arquivo CSS grande.ConclusoesMedia queries sao um novo recurso muito interessante e poderoso sem sombra de duvidas. Mas do meu ponto de vista ele nao resolve perfeitamente a condicao de ter que filtrar de alguma forma informacoes do cliente. Alias, esta realidade de exibir paginas diferentes (layouts diferentes) e algo que depende do mercado de monitores, dispositivos, browsers, e nao tem como servir um conteudo unico, apenas um arquivo html e um arquivo CSS, que enquadre todas as solucoes de forma otimizada. No passado e no presente bibliotecas javascript serviram a este proposito, agora temos como fazer isso em CSS.Antes nao haviam padroes W3C para realizar este tipo de tarefa, e sempre que o assunto pende para este lado, surgem defensores fanaticos ressaltando todos os pontos ruins de uma solucao em javascript (nao e standard, e nao serve para todos os dispositivos). Apesar de ter um fundo de verdade nesta afirmacao, na pratica 99.8% do fluxo na internet vai para navegadores que contam com esta tecnologia, dai o porque deste fanatismo ser exacerbado em meu ponto de vista (que sou um standardista).Agora temos as media queries, um jeito W3C de fazer essa diferenciacao para dispositivos diferentes. No entanto, a necessidade de ter marcacoes ou regras diferentes para dispositivos diferentes continua existindo, assim como o trabalho de criar regras diferentes.O fiel da balanca, junto desta necessidade de servir conteudos/formatos diferentes, e o usuario. Se por um lado temos como servir estes conteudos, o forma de servi-los pode nao ser otimizada. Por que ter um aumento de 150% no tamanho do arquivo CSS, sendo que pode-se criar um dominio separado, e servir arquivos menores (inclusive o output HTML menor)? O que e melhor para os usuarios? E para os desenvolvedores? Sera que criar mais de uma folha de estilo e tao complicado assim, ou seria melhor para fazer manutencao?Sou a favor do uso das media queries, mas nao como solucao unica, absoluta e otima. Cada caso deve ser analisado, e outros fatores devem sim ser levados em consideracao, principalmente no que diz respeito aos usuarios.----------- keepReading
dei acima. Temos uma funcao a ser testada, uma funcao para testar que contem um datasource e um loop que verifica e imprime o resultado dos testes. Para ambientes de producao ou cujo volume de testes se torne alto o suficiente, podemos e devemos refatorar deixando as responsabilidades divididas. O esquema muito utilizado e o seguinte:-> uma funcao para obter o datasource-> uma funcao de logging, para registrar os resultados-> uma funcao que faca o papel de juntar tudo (chama a funcao, itera sobre os dados do data source e registra o resultado).Com essa estrutura fica facil manter os inputs e controlar os resultados.Voltando ao Unit Test. O Unit Test e a base dos testes dinamicos. A maioria dos bugs e encontrada aqui, porem vale ressaltar que mesmo softwares que passam pelo unit test podem conter bugs, isto porque o unit e focado na parte e nao no todo. Assim, nos testes funcionais e de integracao podem aparecer bugs novos que nao poderiam ter sido detectados antes. Esta questao passa muito mais por design e por arquitetura do que propriamente a funcionalidade especifica de um modulo, metodo ou classe.Agora um exemplo mais real e pratico de Unit Test. Vamos supor que voce tenha um processo de login no seu site. Um usuario fornece nome e senha, e voce tem uma funcao que verifica a validade e loga o usuario. Para efeitos de simplicidade:<php/*retorna TRUE se a combinacao e validaretorna FALSE se a combinacao nao e valida*/function isValidUser($username, $pass) { // codigo que checa as condicoes}?>O seu datasource (viu, se voce tiver as ferramentas/metodos certos para reutilizar, 95% do seu trabalho vai ser focar apenas nos data sources) sera mais ou menos assim:usernamepassexpecteduser1 pass1 TRUEuser1 '' FALSEuser1 invalido FALSE'' pass1 FALSEinvalidopass1 FALSEuser1 pass2 FALSE'' '' FALSEinvalidoinvalido FALSELegenda:user1 = username 1pass1 = senha correspondente ao user1'' = vazioinvalido = username/password nao existente nos registrospass2 = senha correspondente ao user2Bem, espero que o conceito e a importancia dos unit tests e da automacao tenham ficado claros neste post. Ate a proxima.----------- keepReading
Subi hoje no sourceforge uma classe que fiz a quase um ano, e que me ajudou muito.E uma classe para envio de emails no PHP, inclusive com arquivos anexados. A classe e bem simples, enxuta e muito util (senao eu nao estaria compartilhando).Duvidas? Deixe um comentario.----------- keepReading Crawler, spider, bot, entre outros nomes, sao programas que navegam na internet e indexam conteudo. Os mais famosos de longe sao os do google e do yahoo. Mas existem diversos, e o funcionamento basico deles e bem parecido (o que difere e como cada sistema organiza e classifica as paginas para mostrar nos resultados).De alguma forma eles chegam a sua pagina, seja buscando nos bancos de DNS disponiveis na internet, ou seguindo um link. E quando chegam na sua pagina, eis o que eles fazem:Primero leem sua pagina, mais especificamente, o codigo HTML da sua pagina. E antes de comecarem a analisar o que sua pagina faz ou vende, eles tentam separar os links, links internos, action de formularios... Note que eles nao leem e nao executam scripts, formatos de arquivo estranhos como PDF, imagens, nem nada do tipo.Alguns buscadores e claro tambem indexam fotos (juntamente com o atributo alt), arquivos em flash, PDFs e outros arquivos, mas isso e outro assunto. O importante e entender que eles, antes de qualquer outra coisa, tentam descobrir o quais sao as paginas dentro do seu site, e isso so pode ser feito desta forma, atraves do seu codigo HTML.Se voce possui um arquivo ou mesmo um diretorio inteiro, que nao esteja conectado a nenhuma pagina, seja atraves de um link, de um atributo src ou href, este arquivo ou diretorio nao sera magicamente descoberto pelo crawler.Bom, os crawlers do buscadores geralmente procuram informacoes sobre permissoes sobre o conteudo. Em espcial existem duas formas de bloquear um crawler decente de indexar uma determinada pagina (e os links nela contidos). A primeira forma, e mais comum, e atraves do arquivo robots.txt. A outra forma e atraves da tag meta robots, com valor "noindex" ou "nofollow", usados para nao indexar (a propria pagina) e nao seguir (os links contidos na pagina), respectivamente. Ha tambem uma terceira possibilidade, muito menos explorada, que e o uso do atributo rel="nofollow" em links, indicando ao crawler que aquele link em especial nao deve ser seguido.Recapitulando... o crawler chega na sua pagina, le o codigo HTML, procura o arquivo robots.txt, confere os links da pagina, confere se ha alguma tag meta especifica para ele, depois organiza o que ele deve seguir ou nao dentro e a partir do seu site.Ah sim, uma outra forma de um crawler indexar paginas e conteudos e atraves de outros sites. Vamos supor que voce tem uma pagina no seu site, chamada apropriadamente de secredo.html.Se voce digitar direto na barra de endereco, voce acessa essa pagina, mas a partir de todas suas outras paginas nao existe link para esta pagina. Certo, os crawlers nunca descobrirao esta pagina, de acordo com o que expliquei acima. Porem um amigo seu coloca o link desta pagina no site dele. Pronto, agora sua pagina
secreta esta pronta para ser indexada pelos crawlers.Claro que usar uma restricao no robots.txt ou uma tag meta basta para que os bons crawlers nao indexem esta pagina, afinal o autor (no caso voce) explicitamente nao quer que isso aconteca.Mas nem todos buscadores sao tao corretos (google, yahoo, bing, ask, baidu,... esses sao). Os crawlers do mal as vezes se baseiam exatamente nas restricoes para fazer descobertas e indexar conteudo. Mas isso nao e de longe motivo para alarde, afinal, a maioria desses bad crawlers nao sao famosos, nao tem visitantes, e na maioria das vezes nem mesmo cacife financeiro para sobreviver muito tempo.Bem, espero que eu tenha esclarecido como o processo de descoberta e indexacao funciona. O processo de organizacao das informacoes como eu disse, e o que e diferente entre os buscadores.Ate a proxima.----------- keepReading
o que vai ser buscado atraves da funcao to_tsquery().Qual e o mais relevante?Os recursos de full-text search permitem ir um pouco mais alem e definir um ranking sobre quais registros sao mais relevantes sobre os termos buscados. No PostgreSQL isso pode ser feito com uma query similar a seguinte:SELECT *, ts_rank_cd(postsfts, query) AS rank FROM posts, to_tsquery(' . $_GET . ') query WHERE query @@ postsfts ORDER BY rank DESC LIMIT 5;Aqui temos a funcao ts_rank_cd que faz essa funcao do ranking (alem de ja termos setado os pesos dos campos antes). E voces podem notar que estamos ordenando pelo ranking. Ou seja, essa query tras os 5 resultados mais relevantes.Para obter o mesmo efeito no MySQL podemos fazer a query da seguinte forma:SELECT *, MATCH (titulo, intro, conteudo, tags) AGAINST (". $_GET .") AS rankFROM postsWHERE MATCH (titulo, intro, conteudo, tags) AGAINST (". $_GET .")ORDER BY rank DESC LIMIT 5;ConclusaoEspero ter criado um guia rapido e pratico para que voces possam aplicar o full-text search em seus proximos trabalhos e assim obter melhores resultados. Voces codificam mais rapido, o sistema ganha em performance, e os usuarios agradecem os resultados mais precisos.Abracos e keep readin'----------- keepReading
SONETO AO STRIPTEASE O jogo sutil da provocacao...A danca majestosa que da vida Ao casal que busca uma relacao Verdadeira de amor bem definida; Aos poucos peca por peca no chao... Tua pele vai sim sendo despida... Os seios empinados... tentacao Sublime por ti a mim proferida; E encantador este teu despir... Ver as pecas aos poucos no chao cair... Ver o teu corpo nu envolto ao meu; Teu jeito sensual que me rendeu... Sempre antes do amor quero uma reprise... Quero a suave danca do striptease; 15-08-13 soneto Que rosa aos olhos meus Es tu que a lua clareia; Tao belos sao os sorrisos teus Que minha alma devaneia; Sinto o ar perfumado!E o perfume dos teus cabelos Que passa carregado Pelo vento atando elos;E um perfume doce como os teus labios... O teu que me embebeda o peito... Que ocasiona tantos desmaios Das flores no meu leito; Es tao bela minha flor A dormir no meu jardim... A suspirar de amor Como as estrelas no sem fim; Dormes no silencio da noitinha Com a face toda iluminada... Pela lua a brilhar sozinha So pra ti na madrugada;O sol sorri deitado no veu... A brisa geme e desmaia... Como o azul no ceu... Como a onda na praia!...Es um anjo de luz Com um sorriso de princesa... Com duas asas azuis Descendo o ceu da beleza;Es a flor do meu sonho! Linda flor de jasmim... Brilhando no jardim risonho Bem aqui dentro de mim; Nossos labios sao harpas majestosas;Quando se tocam formam melodiasQue ouvimos juntos das mais lindas rosas... Que afloram no passar doce dos dias;Sao perolas nas noites luminosas... Sao versos lapidados em poesias... Sao o nectar das flores mais formosas Bebidos nos jardins das fantasias;Nossos coracoes sao ninhos de amor... Sao castelos da mais virginal flor Que zelamos por toda a nossa vida; Nossas almas sao ceus lindos de anil... Sao veus que cobrem o rosto febril... Sao uma primavera colorida; O DESPERTARAcordem! O humanos prisioneiros Do medo que controla vossas mentes; Venham viver os tempos verdadeiros...Libertem-se das garras e correntes;Abandonem os votos corriqueiros Dum passado vendido aos descontentes; Venham amigos, sejam os primeiros A despertarem dos contratos doentes;Vamos juntos vencer esta batalha De luz e trevas... e viver num mundoIluminado pelos lindos seres; So a luz vive, so a luz gargalha... O resto e um vazio no profundo Mundo escuro dos morbidos prazeres; Deite que logo a lua se levanta... E das alturas mais belas do ceu Passa a te iluminar so com o veu... Com o limpido veu que tanto encanta;O meu olhar perdido na luz tanta Da noite cheia de estrelas ao leu... Sou como elas... sou so um feliz reu Que dos amores do coracao canta... E canta nessa voz doce e tranquila Uma amizade que suspira e corre Feliz pelo jardim repleto em flores;Canta feliz para as rosas em fila... Sorrindo para a noite que nao morre E nao vive menina, sem amores; O AMOR ELEVAMergulho nos teus olhos com carinho...Encontro dentro deles tanto amor;Amor que escrevo neste pergaminhoCom perfumes suaves de uma flor;Contudo,
nem toda a poesia do mundo...Pode descrever com exatidao este grande amorPois o amor que sinto e tao profundoQue agradeco todas as noites com louvor;E quando este amor toca o coracaoSorrisos eu vejo nos olhares contentesDe ambos vivenciando sonhos inocentes;Nao ha sentimento mais bonitoQue o amor verdadeiro..Este levamos para o infinitoComo algo jamais derradeiro;E tal sentimento por ti tambem sinto;Ele se faz puro e serenoNa minha alma eu pressintoUm amor grande e nao pequeno;Em parceria com a amiga Aline
Placa Love para parede medindo 25x25cm e um cartaz 'MyLove' by AndreaGuim, tamanho A4. Leia com atencao: Para participar do sorteio basta seguir estas 3 regrinhas: 1. Seguir a Provance Home&Banho OnLine clicando aqui (passe o mause na barrinha escura do lado direito da tela); 2. Seguir a loja Casa Canella clicando aqui (passe o mause na barrinha escura do lado direito da tela); 3. Preencher o formulario com atencao - clique aqui para ser direcionado ao post com formulario; O sorteio comeca, hoje, dia 30/05 e vai ate as 24:00hs do dia 12/06.O resultado sera divulgado no dia 14/06. Sorteio valido somente no Brasil!!! (Mas quem morar no exterior e tiver endereco de recebimendo aqui no BR tambem pode se inscrever!) Mais chances: Se voce quiser divulgar o sorteio no Facebook ou Twitter, ou no seu blog; ganha mais 1 (um) numero, mas tem de voltar aqui e preencher novamente o formulario colocando o link de divulgacao/compartilhamento.
- Quase um ano depois, qual foi o significado da condenacao dos reus acusados de matar Isabella para a sociedade?Ana Carolina Oliveira - Pra mim, foi um sentimento de justica feita. Ver que neste caso nao houve impunidade, ou melhor, muito pelo contrario, pois vimos a dedicacao, o profissionalismo do inicio ao fim. G1- Se existe alguma licao, qual foi a que voce aprendeu nesse periodo?Ana Carolina - Neste caso existem muitas licoes. Hoje ainda e dificil explicar exatamente, mas as feridas, seguidas do amadurecimento, tentam entrar em equilibrio.G1 - Voce chegou a dar apoio a algumas familias que tiveram seus parentes assassinados, como a mae de Mercia Nakashima. Voce pretende ajudar mais pessoas que, assim como voce, perderam alguem de modo cruel ou violento?Ana Carolina - Eu nao tenho nenhum projeto concreto como uma ONG para esse tipo de ajuda. Eu como todo e qualquer cidadao se comove com tanto casos barbaros e o descaso das pessoas pela vida humana, seja alguem da familia ou alguem de longe, mas o que estiver ao meu alcance e o que eu puder fazer pra ajudar toda e qualquer pessoa que passe por algum sofrimento como o da perda eu farei com toda certeza.G1 - Na ultima vez que concedeu uma entrevista ao G1, voce comentou que iria retomar a vida. Passa pela sua cabeca como seria voltar a ser mae, desde a gestacao ate o parto e a escolha do nome da crianca?Ana Carolina - A minha vida esta sendo retomada um dia de cada vez. Com toda certeza e se Deus permitir quero ser mae novamente. Nao sei como vai ser como isso acontecer, mas e certeza que quero realizar esse sonho novamente.G1 - Pensa em voltar a ter filhos, constituir uma nova familia, se casar ou adotar uma crianca?Ana Carolina - Esses sao uns dos meus grandes planos de vida.G1 - Qual o significado dessas tres datas para voce: dia 27 de marco (condenacao do casal Nardoni), dia 29 de marco (morte de Isabella), e dia 18 de abril (nascimento de sua filha)?Ana Carolina - Com toda certeza essas datas sao marcantes, mas eu diria que TODOS os dias sao marcantes, pois ela nao voltara NUNCA, e nao apenas em algumas datas.G1 - Quase um ano apos a sentenca do casal, porque voce acha que sua filha foi morta?Ana Carolina - Continuo com a mesma opiniao. Um ciume gerado, ou algo que tenha lembrado meu nome em algum momento seguido de discussoes.G1 - Em 2010, voce afirmou que o pai de Isabella deveria ter zelado pela filha e nao fez isso. Tem vontade de dizer algo agora aos parentes dos condenados ou ao casal?Ana Carolina - Eu penso que tudo que houve desde que tudo aconteceu ja disse TUDO. E continuo afirmando que quem deveria zelar pela vida dela seria ele.G1 - Como esta a Ana Carolina um ano apos o julgamento e condenacao dos acusados de matar sua filha?Ana Carolina - Eu diria que mais madura, mais firme. Na verdade hoje faz um ano de julgamento seguido de tres anos
da ausencia da minha filha.G1 - Sua mae tem uma tatuagem com o nome de Isabella para lembrar da neta dela. E voce, como se recorda de sua filha?Ana Carolina - Tem como esquecer um filho?Ana hoje tem 26 anos, e completa 27 no proximo dia 5. Isabella completaria 9 no proximo dia 18.Fonte: G1.