Configurando diretórios httpd.conf Alias Apache 2.x

Após instalar os softwares na sua máquina como Apache, PHP, MySQL e alguma IDE como Netbeans ou Eclipse, muitos tem dificuldades em alterar algumas configurações do Apache, antigamente quando aprendi configurar isso o Apache estava sei lá em qual versão e após muito tempo sem usar essa semana eu também fiquei um pouco perdido, pois o arquivo httpd.conf que eu constumava alterar estava vazio.

Bom, dei uma olhada nos outros arquivos e vi que isso foi feito apenas por questões de organização e pra evitar que nós façamos alguns charques e alterar o que não devemos alterar, basicamente este arquivo está sendo incluído dentro de outro agora.

Em resumo, você faz a mesma coisa que antigamente, pra dizer ao apache que quando você acessar "http://localhost/netbeans" ele deve pegar os arquivos lá em "/home/bolivar/NetBeansProjects/" você escreve dentro do arquivo /etc/apache2/httpd.conf o tal do Alias conforme o exemplo abaixo, precisa ser root.

Pra abrir o arquivo com root, abra o terminal.

Poder de root
sudo su

Editar arquivo no gedit
gedit /etc/apache2/httpd.conf

Agora crie o alias pelo gedit, moleza né!
Alias /netbeans/ "/home/bolivar/NetBeansProjects/"

< Directory "/home/bolivar/NetBeansProjects">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</ Directory>

Cuidado, tira o espaço no < Directory ... e ao fechar a tag </ Directory>, tive que colocar espaço para aparecer no blog... Bom. pra que esta mudança faça efeito reinicie o Apache, os comandos são (Ubuntu/Mint):

Reiniciar
/etc/init.d/apache2 restart

Também pode desligar/ligar, dá no mesmo
/etc/init.d/apache2 stop
/etc/init.d/apache2 start

Agora ao digitar "http://localhost/netbeans" seu navegador vai exibir os diretórios com seus projetos do Netbeans.

Quando você criar um novo projeto PHP no Netbeans já configure ele pro caminho certo, na Project URL adicione após o localhost o alias/apelido que você botou no apache,, ai quando você rodar o site (F6 no NetBeans) ele já vai rodar certinho, olha o print abaixo.


Sobre o arquivo httpd.conf, se você estiver usando Windows acredito que precisa inverter as barras (/), usa contra barra (\). Qualquer coisa comentem ai.

Desarollando Software Libre com Scrum

Palestra na LatinoWare do Diego Martin Lima, Desarollando Software Libre com Scrum. Scrum é um método ágil para desenvolvimento iterativo e incremental de software, bastante conhecido mas ainda pouco utilizado, requer uma equipe de desenvolvedores experiente.

Na realidade, este (equipe experiente) é o principal ponto que todas as metodologias de desenvolvimento esquecem, se você possui uma boa equipe, qualquer metodologia servirá e o software será bom, agora se a equipe for ruim, não adianta culpar a metodologia, apesar que algumas metodologias são melhores do que outras dependendo do tamanho da equipe e do tamanho e duração do projeto. Este foi o tema de uma outra grande palestra da LatinoWare, do Fábio Akita, a Semente não Entendida de Todas as Metodologias Ágeis, que parte do pressuposto que todas as metodologias envolvem pessoas, então, este é um fator primordial. Abaixo os slides dessa outra palestra, aproveite para pensar/refletir sobre alguns pontos de engenharia de software.


Tem um vídeo no Youtube também, não cheguei a olhar, mas se for a mesma palestra vale a pena, vou olhar mais tarde... http://www.youtube.com/watch?v=wvKHU7pA02c

Bom, voltando as anotações, minha opinião é que uma das melhores coisas do SCRUM é a reunião diária, máximo 15 minutos, em pé, onde cada um fala o que fez no dia anterior, ou se não fez fala qual foi o impedimento e diz o que vai fazer no dia atual. Nessa reunião todos vão se sentir parte do grupo, todos vão saber o que cada um está fazendo e caso algum não esteja trabalhando como deve, logo a equipe vai perceber através das reuniões e pode tomar alguma atitude.

Alguns problemas comuns:

 - Começar do zero
 - Não ter informações prévias, capacidade da equipe, dificulta previsões de tempo
 - Não realizar Scrum Diário
 - Não manter corretamente gráfico burndown
 - Más adaptações da metodologia


Processo SCRUM (Wikipedia, 2011)


Durante a palestra anotei um modelo para SCRUM rapidamente, refiz no Astah UML na forma de um diagrama de atividades pra facilitar, gostaria de postar os slides originais também mas está difícil de encontrar.

Modelo que rabisquei durante a palestra...

Processamento Linguagem Natural com PHP

Palestra do Ivo Nascimento na Latinoware sobre processamento de linguagem natural no PHP, isto não existe, e seu projeto de criar algo semelhante com nltk.org (Python?), no github.com/iannsp/texta, o Text Analizer.

TF-IDF: Term Frequency - Inverse Document Frequency: calcula a importância de um termo em um texto.
 - Tokenizacão: no PHP seria um explode, guarda um array
 - Normalizacao: correcão portugues, maiúsculas e minúsculas, ...
 - Stop-words: e, de, mas, o, a .... tirar palavras que não interessam
 - Aprendizado: % das palavras positivas vs negativas

#Hashtags: semântica

N-GRAM: Conjuntos de termos, tokens. Bigram, Trigram, ...
  - Análise: Filtro Bayesiano, Coef. Dice, Qui-quadrado, Coeficiente de Jaccard, coef. Relacão Pearson, Distância Euclidiana...

Last.fm e Grooveshark usam algumas dessas fórmulas matemáticas como Pearson e Dist. Euclidiana para identificar as pessoas semelhantes e sugerir as músicas que elas gostaram uma para outra.

Problemas! Homógrafos, como: Quem casa quer casa... A mesma palavra com sentidos diferentes.

Ele sugeriu o PIP, Python em PHP caso queira usar PHP com o NLTK, também ficou de levantar os slides no slideshare.net/ivonascimento, vamos aguardar.

TDD - Desenvolvimento dirigido por testes

De volta da Latinoware, agora publicar anotações, começando pela palestra assertTrue($tdd); do Alexandre Gaigalas.

Segundo a Wikipedia: Test Driven Development (TDD) ou em português Desenvolvimento dirigido por testes é uma técnica de desenvolvimento de software que baseia em um ciclo curto de repetições: Primeiramente o desenvolvedor escreve um caso de teste automatizado que define uma melhoria desejada ou uma nova funcionalidade. Então, é produzido código que possa ser validado pelo teste para posteriormente o código ser refatorado para um código sob padrões aceitáveis. Kent Beck, considerado o criador ou o 'descobridor' da técnica, declarou em 2003 que TDD encoraja designs de código simples e inspira confiança[1]. Desenvolvimento dirigido por testes é relacionado a conceitos de programação de Extreme Programming, iniciado em 1999,[2] mas recentemente tem-se criado maior interesse pela mesma em função de seus próprios ideais.[3] Através de TDD, programadores podem aplicar o conceito de melhorar e depurar código legado desenvolvido a partir de técnicas antigas.[4]

Após esta breve definição, vamos as minhas anotações. Como você faz pra testar JS ou PHP? Toda vez abre o navegador, preenche trocentos campos validando CPF, data etc e clica em enviar pra ver está funcionando? Há muita perda de tempo nisso, é muito escroto, programador gosta de programar e não gosta de perder tempo fazendo testes, então, por que não criar um software para testar o software?

Método antigo de teste: var_dump($user);
Agora: // var_dump($user);  :D

Os métodos de teste evoluíram muito nos últimos anos, Breakpoints (usava muito isso no Delphi), Watchers, ... chegando ao TDD.

PHPUnit criado por Sebastian Bergman, uma boa ferramenta.

TDD (Test) + BDD (Behavior) + CI (Integração Contínua) = :D

O TDD foi feito para os desenvolvedores, para facilitar a vida deles e melhorar muito a qualidade do software.

Cuidar com Dependency Injection, não conecta ao banco real para testar.

Abaixo os slides da palestra, veja os gráficos dos tempos sem TDD e com TDD, formas de convencer seu chefe a mudar, etc. Confira também o texto do próprio autor em http://php5.net.br/tdd