Skip to Content

iam back

Written on November 8, 2011 at 20:03 pm, by

Depois de muito pensar e muito sofrer trabalhar, retomo, ao menos um pouco as ideias por estas bandas. Tudo deve começar, ou deveria começar, a partir de um processo definido para atingir um determinado objetivo.

O projeto CAT.

Para iniciar seu desenvolvimento foi criada em conjunto com Nataniel Schling o ‘documento de visão’, pensando em todas aquelas belas loucuras que seria muito legal de ter dentro do projeto. Ele deveria ser um CMS muito bom, capaz de se integrar com diversos bancos, ser possível instalação via mouse, com tutoriais, facilidade para atualização, entre outras belas loucuras que facilitam muito o desenvolvimento de qualquer projeto web.

Todos os problemas começam no começo. Temos de definir uma estrutura, uma forma de trabalho e segui-la, da melhor forma possível afim de atingir o objetivo de maneira não tão penosa e ao mesmo tempo fácil de adicionar novas funcionalidades. Certo, depois de uma certa aula de processo é possível ver que é inviável. Impossível.

Depois de retomar estes escritos e executar uma atualização diretamente pelo painel do wordpress, percebo diretrizes que podem guiar o projeto de uma maneira mais suave ao mesmo tempo distinta das já conhecidas.

Pagination keeping the number of displayed pages

Written on March 15, 2011 at 13:07 pm, by

Paginações em geral normalmente são um saco. Uma das coisas que mais são um problema é a quantidade de páginas que pode ‘estourar’ o layout ou simplesmente ficar feio.

Solução para isso é mostrar um número determinado de páginas por vez, e manter centralizado a página atual, assim economiza-se espaço e mostra somente o número necessário de páginas.

Configurando apenas a página atual (iniciando em 1), número total de páginas e quantas páginas abrir, os limites de quais páginas visualizar é calculado:

$atual = 1;//página atual
$total = 34;//total de páginas
$visualiza = 5;//quantidade de páginas a ser exibida

$ini = 1;
$fim = $total;

 if($total > $visualiza){
if($atual <= ceil(($visualiza-1)/2)){       if($total > $visualiza){
$fim = $visualiza;
}
} else {
$ini = ($atual - ceil(($visualiza-1)/2));
$fim = $ini + ($visualiza-1);

 

 if($fim > $total){
$ini = $total - ($visualiza-1);
$fim = $total;
}
}
}

Feito os cálculos para encontrar os valores de contagem inicial e final das páginas, basta utiliza-las como, por exemplo, mostrado abaixo:

<div>
<div>
<a href=”&lt;?=($atual &gt; 1)?’url.php?p=’.($atual-1):’#';?&gt;”></a>
</div>
<div>
<? for($x=$ini;$x<=$fim;$x++){?–>
<? if($x == $atual){?>
<a style=”text-decoration: underline;” href=”&lt;?=’url.php?p=’.($x);?&gt;”>
<?=$x;?></a>
<? } else {?>
<a href=”&lt;?=’url.php?p=’.($x);?&gt;”><?=$x;?></a>
<? }?>
<? if(($x+1) <= $fim){?>
<span> | </span>
<? }?>
<? }?>
</div>
<div>
<a href=”&lt;?=($atual &lt; $total)?’url.php?p=’.($atual+1):’#';?&gt;”></a>
</div>
</div>

 

Previwer – visualizando layouts

Written on February 26, 2011 at 09:34 am, by

Nada mais comum para alguém que trabalha com html que a necessidade de visualizar um layout online. Essa simples necessidade sempre é um problema quando perdemos aquele dito arquivo ou aquele gerador de htmls que faz a troca das imagens.

Pensando nisso criei um previewer de layout em html, assim também pode ser rodado offline em praticamente qualquer computador. Utiliza apenas javascript sem adição de nada especial.

O previwer parte do pressuposto que as imagens são de extensão jpg e numeradas em ordem natural sem leading de zeros (sem completar com zeros na frente).

Basta configurar os detalhes do arquivo:

  • title // titulo
  • cor de fundo do body // #000000
  • número da imagem inicial // 1
  • número da última imagem // 7

Demo

About comments

Written on February 15, 2011 at 22:41 pm, by

Nada mais comum em qualquer cursinho besta de qualquer tipo de programação dizer que comentários são importantes. É bacana tu comentar o teu código para facilitar a compreensão afim de colaborar com o futuro daquilo que desenvolveu.

Comentário de uma linha em php: //
Comentário de linhas múltiplas, iniciam em /*, finaliza em */

Certo, antes de iniciar a respeito do comentário, vamos dar uma palinha sobre boas e simples práticas de programação, seja qual for a linguagem, é a base  de qualquer linguagem com um mínimo de organização.
Tendo em vista que se entende o conceito de orientação a objeto, vamos para o principal. Nomes de qualquer coisa devem estar bem definidos. O nome pode ser algo como MultiplicadorDeTempoPorDinheiroPorClasse, mas que fique claro do que se trata, antes isso que uma variável Aux ou pior, Azul. É importante explicar explicitamente do que se trata logo no nome de cada coisa, é legal ser objetivo, entretanto nem sempre é possível, paciência.
Tendo nomes bons, quase tudo se explica e é necessário realmente pouca coisa além disso para explicar o que estará sendo feito.

A organização do código. Não existe nada que defina nada, então, melhor tu criar vergonha na cara e definir algo! Operações de banco de dados vão para um lado, programação direta em html, em outro. Isto mantém a legibilidade do código ao mesmo tempo que facilita na hora de encontrar as coisas. Se é um problema de diagramação, deve estar nos componentes html, se é uma consulta com erro de retorno, ou é filtro ou é banco de dados, dessa forma tu centraliza melhor o problema e não corre o risco de arrumar a coisa errada no lugar errado.

Comentando aqui: variável de listagem de itens do carrinho é instanciada.
Lixo! falta de vergonha! Provavelmente você já viu algum tipo de comentário esdrúxulo por aí. Aquilo ali vem logo antes de você ver um array de itens sendo declarado. Mas tchê! Se é uma declaração de itens, pra que diabos repetir em português o que está se dizendo em programação? Esse tipo de comentário inútil e burro não presta pra nada além de aumentar o arquivo e te fazer rolar mais na página até encontrar o que precisa.

Comentários são muito bons, mas devem ser muito bem utilizados.
Se você está fazendo um cálculo foda, uma média exponencial, algo fora do comum e que nem o nome de suas variáveis nem os métodos explique, então é legal por algum comentário. Fora isso, talvez fosse bacana comentar sobre os tipos de retorno de uma função (no caso do php, é possível retornar qualquer coisa sempre), em casos que se especifica o retorno, isso é desnecessário, então deixe de ser burro e aprenda a ler programação.

Um bom comentário é aquele que faz diferença ao ser lido/ouvido

PHP Root path

Written on February 9, 2011 at 00:46 am, by

(aos desenvolvedores sem saco: rolem até o final da página para encontrar o código)

Uma das necessidades mais básicas quando se cria qualquer aplicação web, é identificar adequadamente onde está a raiz do site, sendo url e também raminho absoluto dentro do servidor. Após alguma pesquisa encontrei algumas formas interessantes de fazer isso utilizando principalmente a variável $_SERVER.

  • Uma bastante utilizada (aparentemente) é usar $_SERVER['DOCUMENT_ROOT'], que lhe da precisamente a raiz do servidor, a partir de qual pasta o seu site opera. Nesta vemos de cara um problema. Criei uma pasta de teste e dentro dela, uma subpasta. Não necessariamente meu site irá iniciar sempre na raiz do servidor. Isto é comum em hotsites, sites temporários ou pequenos sistemas que desejam funcionar com base num caminho mais específico.
  • Outra forma é o index $_SERVER['SCRIPT_NAME']. Este lhe da o caminho até o arquivo pai atual. Isto significa que é possível encontrar o endereço do arquivo que iniciou a execução, entretanto pode ser um problema quando se utiliza um arquivo include. A chamada $_SERVER['SCRIPT_NAME'] retornará o caminho do arquivo pai, tornando impossível a definição de um caminho raiz padrão, visto que podemos iniciar a execução de diferentes arquivos.
  • Uma ‘solução’ semelhante é utilizar $_SERVER['PHP_SELF'], funciona como a SCRIPT_NAME, aliás, nem fui atrás pra saber a diferença, testei com includes e funciona exatamente igual. Logo, não serve de solução

Enfim, várias opções que encontrei foram partindo do mesma idéia, sempre utilizando a variável $_SERVER. Uma outra que achei meio absurda comentava de todo arquivo ter o root, e a partir de uma variável global, encontrar o caminho relativo para a raiz do site. De toda forma, complicada e não resolvia.

Acabo, por fim, chegando a seguinte solução:

str_replace('\\', '/', dirname(__FILE__))

A constante __FILE__, retorna o caminho absoluto do arquivo atual, mesmo ele sendo chamado via include. Então, com base nele tu podes ‘calcular’ a raiz de seu site.
Por exemplo, tenho um site de teste dentro de algumas pastas dentro da raiz do servidor, utilizando __FILE__ é possível definir o que retirar, ou o que fazer, visto que tu sabe qual arquivo está incluindo ou em que arquivo está.

$root_path = str_replace('/2/inc/'.basename(__FILE__),'',str_replace('\\', '/', __FILE__)).'/';
echo($root_path);
//C:/inetpub/wwwroot/teste/

O trecho acima encontra-se dentro de um arquivo de include, este arquivo é comum a todo o site e seu caminho até a raiz é conhecido, dessa forma é possível utilizar o replace para encontrar o caminho raiz.

Para encontrar o root path, ou caminho raiz do site, recomendo então utilizar:

global $root_path;
$root_path = str_replace('\\', '/', dirname(__FILE__));

//ou

define('root_path',str_replace('/2/inc','',str_replace('\\', '/', dirname(__FILE__))).'/');
echo(root_path);
//C:/inetpub/wwwroot/teste/

Brainstorm

Written on February 8, 2011 at 22:30 pm, by

Nada melhor dentro de uma empresa que funcionários pró-ativos. São eles que encontram os problemas e por natureza buscam soluções, é aquele tipo de gente que gosta do trabalho e se sente realizado quando vê as coisas acontecendo e se tornando realidade, dando resultado. Ouso dizer que a realização pessoal vem antes de qualquer outra coisa, isto acaba por definir  as atitudes deste tipo de pessoa.

Pelo pouco que andei nas empresas e o nível de experiência profissional que tenho, vejo que nenhuma empresa está de fato aberta a dar completo auxílio a estas mentes inquietas. Muitas esquecem de dar um suporte adequado, estão sempre abertas a e-mails e conversas nos corredores, entretanto, uma coisa é comentar, outra é por em prática e ver a coisa acontecer. Vejo a necessidade de uma espécie de sistema de colaboratividade, onde seja possível fazer o manejo adequado de idéias, sejam elas de todo tipo e todo o projeto.

Pensei não em um mural para reclamações, nem mesmo um fórum para postagens, mas um pequeno sistema onde qualquer usuário poderia expor suas idéias. As classificariam entre níveis de negócio, ou estágios de processo. Seria aberto uma rápida votação para todos os usuários darem seu aval, a favor, contra ou indiferente. Depois da rápida votação, que deve ser automatizada e obrigatória para todo usuário, o sistema deve listar uma nova idéia a vista para uma equipe responsável por decidir a respeito da idéia e dar uma resposta. A resolução se dará através de uma interatividade entre a equipe de avaliação e a pessoa responsável pela idéia. Ao final, ambas as partes devem dar um OK, sinalizando que a solução ou acordo foi encontrado e entendido por ambas as partes.

Podemos ver idéias idiotas, eventualmente coisas obvias, talvez até mesmo coisas incríveis e que valham muito a pena, inclusive monetariamente.

Mas o mais importante dessa besteira toda, é não apenas organizar as idéias, é escrevê-las com a intenção de analisar uma a uma e buscar uma resolução. Muitas pessoas ficam extremamente frustradas ao verem suas idéias pelos ares e nada sólido acontecer. Muitas vezes falta tempo para aplicação, ou talvez não seja aplicável em certas situações, talvez até não seja de interesse da empresa, contudo o fato de deixar tudo isso sem resposta é o que pode gerar uma certa agonia de garganta entalada.

Toda idéia pertinente à atividade proposta, deve ser ouvida dentro de uma equipe

Pense numa equipe como uma pequena empresa, ou um grupo de amigos trabalhando juntos para chegar em um objetivo, seja ele qual for. As idéias pertinentes as tarefas desenvolvidas sempre devem ser ouvidas por todos, mesmo sendo um líder dando a idéia, antes de sair do papel, a idéia deve ser discutida pelo grupo. Uma simples leitura do que foi proposto com um OK de cada um, deve ser válido.

Bem vindos à internet

Written on February 7, 2011 at 23:24 pm, by

Depois de anos com prática em javascript, algum pouco tempo trabalhando em assembly, então c depois c++… as coisas simplesmente mudam, se alteram, melhoram, evoluem. Nos anos que se passaram com internet discada, tudo se resumia a pequenos aglomerados de sites que eram conhecidos, poucos acessos, pouca troca de idéia e por consequência pouca construção coletiva.

Após alguns anos, depois de muito bater na tecla de que as coisas originais/velhas são melhores/mais rápidas e mais seguras quando feitas do zero, finalmente venho aqui admitir que estamos, aliás, já passamos, em uma nova era da internet, onde a contribuição mútua de idéias e a velocidade em que trabalhamos está mudando o mundo, principalmente o nosso, profissionais de TI.
Toda empresa ou profissional que se preze, que tem uma visão de futuro pouco além do dinheiro que ganha atualmente sabe, ou deveria saber,  que a atualização constante e atividade contínua são elementos básicos para a sobrevivência do mercado de trabalho.

Comecemos então com o exemplo que me fez cair de boca no chão e sangrar o nariz até doer as orelhas.

Javascript/JQuery

Fui designado para produzir uma espécie de álbum de fotos, tudo deveria ser carregado dinamicamente, loader em cada imagem, imagens podendo ser exibidas em diversos tamanhos, tanto miniaturas quanto as ampliadas. Acredito que levei dois dias de trabalho talvez três para ajustar tudo e deixar redondinho. Utilizei javascript, uma pequena biblioteca que foi criada por alguns caras e foi sendo passada de geração em geração de programadores dentro da empresa. A biblioteca era de fato muito boa, simples, tinha tudo que precisava e era fácil de usar, afinal de contas, não adicionava tanta coisa assim, ainda tratava-se de uma estrutura quase procedural de se trabalhar com js. Nada de errado, ela fazia o que tinha que fazer e supria nossas necessidades.

Meses depois em outro mundo, conheço a maravilha de trabalhar com JQuery. Eis que aprendo a utilizar, descobri as facilidades, as novidades, as possibilidades! Com o passar do tempo vejo que o mundo inteiro se mostrou colaborativo, as coisas agora são copiadas sem problemas (nem todas, claro), uns dão dicas aos outros trocando experiências, constroem trabalhos juntos sem nunca saber que se ajudaram, as coisas vão crescendo, as versões aumentando, é incrível ver as coisas que hoje são feitas dessa forma.

Cortando um pouco as coisas, tudo se resume:

Colaboratividade, comunidades, grupos de pessoas possivelmente anônimas que contribuem e compartilham conhecimento/tecnologia

Obviamente vemos o surgimento de ratos, daqueles que apenas copiam, trocam nomes, daqueles que não produzem, não acrescentam nada, são usuários da tecnologia, meros usuários.

Sei, não é novidade, muita gente já faz isso em tudo que é lugar… entretanto, a pouco me dei conta dessas coisas, estou começando a mudar a forma com que trabalho afim de aprender mais com o que já foi feito e montando meus próprios protótipos/projetos também.
Comecei aqui, wordpress… vamos ver no que essa tal de internet vai dar.