FIM do Blog no WordPress!

Este é meu ultimo Post aqui!
Eu migrei todo o conteudo para meu site pessoal, vejam lá
www.fabioferreira.eng.br/dev.aspx

Publicado em Não categorizado | Deixe um comentário

Critério de elaboração de Propostas de Desenvolvimento

Passar um orçamento e prazo correto para desenvolver um sistema é quase que impossível, pois é um trabalho basicamente de previsão do futuro, onde alguém tenta imaginar todo o trabalho que será executado para se chegar a algum resultado desejado pelo cliente.

Pensei em alguns itens e critérios para ajudar a refletir sobre como criar um orçamento mais real.

Simples CRUD (Create Read Update Delete)

Comecemos pelo mais simples, há algumas telas que serão apenas para cadastros simples, ou seja Telas de Inclusão, Leitura, Alteração ou Exclusão (CRUD em inglês)

Por exemplo, cadastro de tipos, categorias, grupos, ou estruturas simples geralmente relacionando um ID (identificador) a um termo texto (ex: Código 1 => Situação Ativo)

A ideia de eu chamar de Simples CRUD é em geral dizer que estas estruturas são cadastros simples que não precisam de filtros, buscas, guias, e outros relacionamentos mais avançados, mas que logico estes cadastros mais complexos poderão sim usar estes dados.

CRUD Complexos

Algumas telas podem aparentar simples, mas quando estas se relacionam a outras tabelas, ou quando possuem muitos campos onde vários destes precisam ser tratados ou validados o trabalho fica muito mais complexo.

Ter uma biblioteca que cria campos no banco de dados de acordo com os campos da Classe de formulário facilita o trabalho, pois cada campo precisa estar sempre em 3 lugares: No Banco de Dados, na Classe (variável) e em Tela, assim se são muitos campos, o trabalho de manutenção fica complexo, e se o layout da tela é complexa, com efeitos visuais, JavaScript, iconografia, mascaras, Ajax, JQuery, e outras frescuras comuns hoje em dia, assim digamos que os fatores de dificuldades e pontos para dar problemas são incontáveis.

Filtros

Qual é a quantidade de registros que haverá em uma tabela ? é preciso ter uma estimativa de tudo que é cadastrado, tabelas com até 20 registros não precisam de filtros, no máximo alguma ordenação alfabética ou por código, mas quanto mais registros, mais números de filtros de acordo também com o numero de campos, e fazer cada filtro dá um certo trabalho leva tempo, pois para fazer alguns destes filtros é preciso antes ter um banco bem modelado se não tudo irá ficar lento, e procurar um registro se torna um processo penoso.

Validações

Tudo que entra em um sistema, teoricamente tem que estar correto, ter alguma logica coerente, e para isso muitas vezes temos que aplicar validações, como por exemplo, no campo Sexo, permitir apenas Masculino ou Feminino (sexo genético) e não a opção sexual atual da pessoa. No campo documento deve ser usado o CPF, ou o CNPJ, ou o RG, ou o Passaporte, ou qual documento, qual a regra, o que de fato usar ? e no Campo nome, pode-se cadastrar apenas o nome “João”, o sistema deve exigir um sobrenome ou não ? Quais de fato são os campos obrigatórios ?

Quanto mais campos a Validar, mas trabalho há, e quanto mais complexa for as logicas de validação, tudo irá tender para um conjuntos de longas regras que podem até entrar em conflito.

Interfaces do usuário

Estamos na moda da Web 2.0 nunca vi sistemas com tatos efeitos inúteis: Modal, Efeitos jQuery, Acordion, Animações SlideShow, em fim muitas coisas que tem um efeito visual bem legal, moderno, mas fazer isso, por mais que se tenham bibliotecas prontas, é sempre um risco que pode gerar alguns conflitos, pois o que antes poderia ser simples, agora dentro de uma tela com vários outros scripts se tornou um inferno.

LOG

Para tudo é bom ter um “Log”, uma forma para registrar alterações de registros, acesso de usuários, visitas no site, e qualquer outro evento importante.

Mas implementar LOG irá requerer consultas de acesso e históricos, e estes precisam de bons filtros, e tudo isso no fundo é uma informação útil apenas no caso de problemas sérios, mas está também ocupando espaço no banco de dados, tempo de maquina para processar, os controles, e irá ocupar muito tempo de desenvolvimento.

Ter um histórico (Log) de tudo e não usar não serve para anda, quantas pessoas acessam os relatórios de visitas do seus próprio site frequentemente para entender o que acontece, qual o horário ou dia mais visitado, qual pagina ou produto mais acessado, de onde vem as visitas, em fim é impossível falar de SEO (Search Engine Optimization) sem analisar a situação atual, alterar itens, e ver o resultado depois.

Estrutura

Aqui é a parte mais complicada, uma comparação simples é você tentar vestir suas roupas em um elefante ou em um Papagaio, em fim não irá caber! Por isso sempre digo duas coisas básicas sobre qualquer sistema:

    1. A Estrutura é o Esqueleto de um Sistema
    2. Todo Sistema é Vivo e continua Crescendo até a sua Morte

O Esqueleto de um Elefante é bem maior do que o nosso e o contrario o de um Papagaio é bem menor, o Elefante tem Tromba, é um Quadrupede, e nos Bípedes, o Papagaio tem penas, bico e asas, assim o que serve para nos não serve para outros seres.

Em um sistema é a mesma coisa a Estrutura de um Cadastro de Cliente de e-commerce é totalmente diferente da estrutura de um CRM, que é diferente da estrutura de um ERP, ou de outro sistema Financeiro, a única coisa comum seria talvez os dados básicos como Nome e código, pois todo o restante pode possuir uma relação 1:N (1 para N) ou seja um cadastro pode ter N telefones, N contatos de e-mail, N endereços, N pessoas Documentos por Tipos. Assim um erro muito comum é pegar partes de códigos e estruturas de outros sistema e readaptar só porque já está pronta.

Digo que um sistema é Vivo por dois princípios básicos da Vida: Mudança e Morte! A vida está sempre se alterando, um pessoa nasce Bebê, pequena limitada, e vai crescendo, e chega uma hora a pessoa morre! Logico que antes de morrer a maioria dá gera outra vida, que terá o mesmo ciclo. Assim eu chamo estes ciclos de “Versionamento” todo programa que é criado, continua crescendo, sofrendo ajustes, adequações constantemente, mas chega um certo momento que é necessário criar um novo programa do Zero, e dai talvez repensar em mudar o “Esqueleto” com suas estruturas bases, para que a Próxima versão possa atingir mais facilmente objetivos que a versão anterior não pode alcançar! Isto é a única forma de Evoluir um sistema! ficar remendando código e readaptando, gera sistemas mutantes onde a manutenção do sistema nunca acaba.

Versionamento

Um exemplo simples do que é versionamento são os sistemas operacionais como o  Windows, Você lembra da versão 3.1, ou do Windows 95 ? Estes sistemas operacionais foram feitos para sanarem as necessidades daquela época, para os computadores daquela época. Procure pelo Windows 8 (ops… isso mesmo nem foi lançado ainda) veja que nos primeiros vídeos de apresentação só mostra recursos “Touch-Screeen” (Interface gerenciada com a mão na tela) e toda usabilidade com internet, vídeo, fotos e redes sociais, assim teremos um novo sistema operacional para uma nova demanda de Hardwares.

Windows 8 Preview

 

O Windows Update são os pequenos ajustes e a manutenção que a Microsoft faz em seu sistema operacional de forma “gratuita” (logico que isso está embutido no preço), mas uma nova versão irá requerer um novo custo de licença, existem versões mais em conta de upgrade que valoriza a fidelidade de cliente (e logico aqui estou falando de um ambiente ideal sem pirataria)

Grandeza

Quanto maior, mas complexo, e quanto mais complexo, mais pessoas devem estar envolvidas, não da para fazer um sistema grande sozinho, sem discutir ideias, estrutura, e estas discussões levam tempo, e tempo é dinheiro que que patrocina um sistema que será grande tem que ter muito dinheiro para continuar patrocinando o desenvolvimento até o fim.

Componentização

Pense na expressão abaixo, e calcule o resultado:

Equação 1) 8 + 32 + 24 + 16 = ?

Agora veja se é mais fácil desta forma:

Equação 2)  8 x (1+4+3+2) = ?

Basicamente eu decompus  da Equação 1 o numero 8, e gerei uma nova equação mais simples, deixando o numero 8 em evidencia, matemática elementar.

Fazer isso em programação é possível também, mas reque muita criatividade e habilidade, criar componentes que facilitem e simplifiquem problemas complexos é o que torna um sistema de Fato “Robusto” e ao mesmo simples, pois a parte Consonantizada estará fora da Equação ( no nosso exemplo será o numero 8 ) e a equação entre os parênteses se torna fácil de fazer de cabeça.

Modularidade

Você já abriu um Computador ? Sabe trocar a Memoria, Processador, ou o disco Rígido, ou o Teclado, Mouse, etc ? Cada um destes itens são uma parte de um todo, e que pode ser trocado facilmente ou não, mas pode ser trocado!

Modularidade é poder dividir um sistema grande em partes, e podemos manipular cada uma destas partes isoladamente, e até poder trocar por um melhor e mais completo, sem interferir nas demais partes.

Na pratica estas são as famosas DLL, cada arquivo tem uma função especifica, e um depende do outro de forma que em alguns casos podemos apenas focar no desenvolvimento de uma nova versão de uma dada DLL, como ocorre muito nas atualizações do Windows, ou seja, tudo é picadinho, todo problema pode ser um problema isolado com uma solução simples, mas estruturar um sistema desta forma não é simples.

Focar em Modularidade e Versionamento é focar em manutenção e continuidade, ideal para um sistema operacional, mas nem sempre para qualquer tipo de sistema.

Robustez

Conhece um sistema com um índice de erro de menos de 0.1% ? e ainda os poucos erros que surgem nesta estatística são erros de rede, e-mail ou outros gerados por usuários ou fatores aleatórios ? Este é o Produto Certo! Um sistema totalmente Componentizado e Modular, que permite ser totalmente customizado.

Um sistema Robusto, é um sistema que é por si forte, integro, sem problemas ou erros básicos.

Logico que é normal que surjam uma leva nova de erros logo apos implementar um novo recurso, mas depois, tudo volta a ser como era, solido rodando direitinho como um relógio.

Publicado em Não categorizado | Deixe um comentário

HTML5 – SVG & Editores

http://www.impactro.com.br/teste-svg.htm

O que você vê acima ? Se estiver vendo um texto, escrito em curva, com um circulo no meio, você está vendo um novo recurso de HTML5 feito pelas novas TAG de <SVG> (Scalable Vector Graphics).

Há poucos sites que usam estes recursos, pois muitos usuários ainda usam browsers antigos que não suportam o HTML5 ou os elementos SVG.

Infelizmente não há muitos sites com tutoriais, ou editores onde é possível desenhar vetorialmente, criar animações e ao fim ter o código pronto, mas já é possível ver algumas coisas bem interessantes

Tutoriais e Exemplos Editores SVG

Para SEO o interessante de usar estes recursos e a possibilidade de ter indexado nos buscadores os “textos das imagens”, e links dentro dos objetos SVG que parecem ser “imagens”, mas são objetos vetoriais.

Também com o SVG do HTML5, e alguns novos recursos do CSS3 é possível criar fundos com gradientes e perspectivas para deixar um site mais bonito e modernos, sem sobrecarregar o site com diversas imagens pesadas e muito código HTML.

Estou tentado usar estes conceitos isto no meu site novo, e as possibilidades são inúmeras!

Publicado em Computadores e Internet, Não categorizado | Deixe um comentário

ATOM Publish – Configurando o IIS

Para integrar um CMS usando protocolo ATOM por meio de um programa .ashx, ou .axd, é necessário habilitar no IIS o verbo PUT usado na alteração de conteúdo, alem dos verbos padrão POST, GET, isso pode ser feito acessando o painel de gerenciamento do IIS como no tutorial abaixo, ou criando a configurações correta no Web.Config

Configurando pelo IIS 7 Manager

Vá no site em questão e procure por “Hander Mappings

IIS-Atom1

Aqui serão mostradas todos os programas que estão associados a uma específica extensão, no nosso caso o .ASHX

IIS-Atom2

Clique com o botão direito do mouse, e edite as propriedades

IIS-Atom3

Note que ira ser exibido a DLL “ISAPI” utilizada, procure o ultimo botão que cuida das restrições de acesso “Request Restrictions…

IIS-Atom4-old

Na segunda “aba” (guia) veja que por padrão são aceitos os verbos GET, HEAD, POST, DEBUG, simplesmente, habilite “ALL verbs

IIS-Atom4

E por fim, clique em “OK”… “OK”…

Configurando pelo Web.Config

A alteração acima irá incluir estas linhas abaixo no Web.Config, ou seja se você adicionar as linhas abaixo terá o esmo efeito

<system.webServer>

      <handlers>
          <remove name="SimpleHandlerFactory-ISAPI-2.0" />
          <remove name="SimpleHandlerFactory-ISAPI-2.0-64" />
          <add name="SimpleHandlerFactory-ISAPI-2.0-64" path="*.ashx" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
          <add name="SimpleHandlerFactory-ISAPI-2.0" path="*.ashx" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
      </handlers>

</system.webServer>

Publicado em Não categorizado | Deixe um comentário

Novos Sites da Impactro – Planejamento

Procuro sempre estar de olho e tudo o que acontece ao meu redor, nas áreas de ASP.Net, Engenharia de Software, Legalização, Administração, Finanças, HTML, CSS, jQuery, SQL, SEO, SEM, e até nos meus raros passa tempos como jogos de Wii que me divirto com minha família, e também me preocupo com alimento espiritual pois “nem só de pão viverá” o homem” (Lucas 4:4), diante de tudo, tenho muitas coisas publicadas, muitos domínios, e quero unificar tudo isso em um único ambiente Produto Certo, e deixar de usar meus sites apenas como área de testes, e sem hipocrisia, deixar de ter “Casa de Ferro Espeto de Pau”

Tenho 3 Blogs

Tenho dois sites Produtos Certo, um pessoal abandonado (www.fabioferreira.eng.br), e outro como empresa com vários domínios redirecionados para 5 ambientes e que virou um monstro de bagunça, pois vários serviços como hospedagem, e venda direta que não estou mais trabalhando.

A nova estrutura será composta de 7 ambientes com layouts totalmente diferente por CSS , com uma própria estrutura de meus, mas todos padronizados e estruturados com o melhor que conheço de SEO On-Page.

Inicialmente a estrutura que estou criando será:

Domínio Nome Foco
impactro.com.br
impactro.com
impactro Institucional
Artigos
Blog Impactro
impactrohost.com.br
impactrohost.com
Hosting Tutoriais sobre hospedagem
boletoasp.com.br
superboleto.com.br
Componentes Venda de componentes
produtocerto.com.br
produtocerto.com
Produto Certo Informações sobre dos recursos do Produto Certo e link dos revendedores
webmarketing-seo.com.br SEO Tutoriais, e dicas de SEO
fabioferreira.eng.br Programador Curriculum e Artigos
Blog Técnico
impactro.net Cristão Artigos
Blog Espiritual

E quero fazer isso sem Design! usando apenas código CSS 3, HTML 5, SVG e o mínimo possível de imagens, além dos logotipos, logico! Assim serão sites, belos, rápidos, leves, e altamente indexados!

Até Hoje o Produto Certo não tinha suporte para ser um Blog, mas o que e um Blog do que algumas noticias, na sequencia ?

A parte de Sessões equivale aos Departamentos do Shop, mas no Site não foi finalizado, e quero transformas as Sessões em uma suborganizarão para o Ambiente e com isso Criar conteúdo de Blog podendo ser Artigos ou Noticias.

Depois de tudo organizado terei que reaproveitar os antigos links, e ai pretendo fazer uma ferramenta de gestão de redirecionamentos 301

Em julho quero estar no AdWords, por meio de API integrada ao modulo de Site, fazendo que o números de cliques por valor seja o mais alto possível com o melhor aproveitamento.

Ou seja muito trabalho, bancados por mim mesmo, mas creio que vale a pena, pois vou aprender muito e depois todos os clientes Produto Certo poderão usufruir das novas ferramentas, e poderei melhorar depois outros sites, gerando mais visitas, vendas, e consequentemente mais dinheiro com menos esforço, ou seja, Qualidade de Vida!

Que Deus me ajude!

Publicado em Não categorizado | Deixe um comentário

Atom Publishing – API – Windows Live Writer

Em fim, terminei a implantação do Atom para integrar o Windos Live Writer (WLW) com o meu CMS Produto Certo, foram duas semanas de muito trabalho, cerca de 100 horas de dedicação total, lendo, pesquisando, garimpando, analisando vários códigos “prontos”, programando, testando… mas não teve como fugi da leitura teórica das RFC.

Se não me engano a primeira vez que vi o Live Writer, foia a cerca de um ano em uma palestra de SEO, onde foi mostrado Plugis para o WordPress, e esta integração que muito me interessou, afinal, se o WordPress faz, e é código aberto, é só eu fazer igual.

Mas vi que ne tudo é tão simples, o WordPress, usa chamadas específicas de acordo com a sua estrutura, e este código serve apenas para o Live Writer, então optei por um padrão mais aberto, que pudesse ser implantado para outros editores que não fosse o Live Writer

Agora posso dizer que “conhecendo” os principais detalhes técnicos da comunicação entre o ASP.Net e o Live Writer usando o Atom, ainda falta alguns detalhes e ajustes, como a detecção de temas (layout), mas nesta primeira etapa não é importante isso.

A próxima  etapa é integrar com várias partes do Produto Certo, a critério de testes fiz apenas uma breve integração com Conteúdo, Artigos e Noticias, mas pretendo criar Menus de páginas, campanhas de Mailings, Configurar Modelos e outros itens HTML disponíveis no sistema, mas sem pressa, primeiro quero rever a parte de segurança e possíveis problemas que quero ajustar.

Algumas boas referencias:

Embora a lista acima aparenta ter muita referencia a maioria deles ou são soluções muito complexas para ser implementadas junto com o meu CMS, ou são ideias muito simplistas e teóricas, ou API compatível apenas com o WLW (Windows Live Writer)

A pergunta agora depois de todos este trabalho é vender ou não vender, eis a questão ? Mas é provável que este seja o meu primeiro trabalho open-source para a comunidade ASP.Net, pois se eu fosse vender seria muito caro, e eu gostaria que mais pessoas usassem o Atom e outros editores baseados neste protocolo, e quem sabe, outros programadores possam contribuir com ideias e mais funcionalidades.

Publicado em Não categorizado | 1 Comentário

Provinha do GDD 2010

Pela primeira vez fui ao GDD, eu não sabia que tinha quer ser feita uma provinha online (QUIZ), mas foi muito legal e divertido resolver as questões, que ao final copiei para guardar de recordação, veja abaixo:

Questão A

O que o seguinte programa (dado na forma de pseucódigo) imprime?
x = 2
y = 5
se y > 8 então
   y = y * 2
caso contrário,
   x = x * 2
imprime (x + y)

Resposta: 9

 
Questão B

Quantas vezes o trecho de pseudocódigo seguinte imprime ‘oi’? (obs: na nossa pseudo-linguagem, o laço inclui os extremos, ou seja, 1 até 4 significa 1, 2, 3, 4.)
para i = 1 até 9
   se i != 3, então
      para j = 1 até 6
         imprime ‘oi’

Resposta: 48

Questão C

Entre 1067 and 3627 (inclusive), quantos números são pares e também divisíveis por 7? (Dica: você pode escrever um programa para ajudar no cálculo)
Resposta: 183
 
 
Questão D

Daniela é uma pessoa muito supersticiosa. Para ela, um número é sortudo se ele contém o dígito 2 mas não o dígito 7. Então, na opinião dela, quantos números sortudos existem entre 18644 e 33087, incluindo os extremos?
 
Resposta: 7995
 
 
Questão E

Na pacata vila campestre de Ponteironuloville, todos os telefones têm 6 dígitos. A companhia telefônica estabelece as seguintes regras sobre os números:
•    Não pode haver dois dígitos consecutivos idênticos, porque isso é chato;
•    A soma dos dígitos tem que ser par, porque isso é legal;
•    O último dígito não pode ser igual ao primeiro, porque isso dá azar.
Então, dadas essas regras perfeitamente razoáveis, bem projetadas e maduras, quantos números de telefone na lista abaixo são válidos?
213752 216732 221063 221545 225583 229133 230648 233222 236043 237330 239636 240138 242123 246224 249183 252936 254711 257200 257607 261424 263814 266794 268649 273050 275001 277606 278997 283331 287104 287953 289137 291591 292559 292946 295180 295566 297529 300400 304707 306931 310638 313595 318449 319021 322082 323796 326266 326880 327249 329914 334392 334575 336723 336734 338808 343269 346040 350113 353631 357154 361633 361891 364889 365746 365749 366426 369156 369444 369689 372896 374983 375223 379163 380712 385640 386777 388599 389450 390178 392943 394742 395921 398644 398832 401149 402219 405364 408088 412901 417683 422267 424767 426613 430474 433910 435054 440052 444630 447852 449116 453865 457631 461750 462985 463328 466458 469601 473108 476773 477956 481991 482422 486195 488359 489209 489388 491928 496569 496964 497901 500877 502386 502715 507617 512526 512827 513796 518232 521455 524277 528496 529345 531231 531766 535067 535183 536593 537360 539055 540582 543708 547492 550779 551595 556493 558807 559102 562050 564962 569677 570945 575447 579937 580112 580680 582458 583012 585395 586244 587393 590483 593112 593894 594293 597525 598184 600455 600953 601523 605761 608618 609198 610141 610536 612636 615233 618314 622752 626345 626632 628889 629457 629643 633673 637656 641136 644176 644973 647617 652218 657143 659902 662224 666265 668010 672480 672695 676868 677125 678315

Resposta: 39
 
Fim das Questões
Você chegou ao final da prova. Estamos prontos para enviar as respostas para o servidor. Uma vez que as respostas forem enviadas, não será mais possível revisá-las. Caso deseje alterar alguma de suas respostas, por favor faça-a agora.
Quando estiver pronto para enviar suas respostas, clique no botão ‘Enviar’ abaixo.
….

Muito legal né ?
Faço parte do GTUG-SP e outros participantes também publicaram em outras linguagens vejam: http://www.dieblinkenlights.com/blog_pt/a-provinha-do-google-developer-day

Publicado em Não categorizado | Deixe um comentário