Things to do…

Aproveitando um gancho no blog do Guilherme Chapiewski, dei “ctrl+v ctrl+c” em um trecho do livro “The Pragmatic Programmer” que ele publicou:

Learn at least one new language every year.
Different languages solve the same problems in different ways. By learning several different approaches, you can help broaden your thinking and avoid getting stuck in a rut. Additionally, learning many languages is far easier now, thanks to the wealth of freely available software on the Internet.

Read a technical book each quarter.
Bookstores are full of technical books on interesting topics related to your current project. Once you’re in the habit, read a book a month. After you’ve mastered the technologies you’re currently using, branch out and study some that don’t relate to your project.

Read nontechnical books, too.
It is important to remember that computers are used by people—people whose needs you are trying to satisfy. Don’t forget the human side of the equation.

Take classes.
Look for interesting courses at your local community college or university, or perhaps at the next trade show that comes to town.
Participate in local user groups. Don’t just go and listen, but actively participate. Isolation can be deadly to your career; find out what people are working on outside of your company.

Experiment with different environments.
If you’ve worked only in Windows, play with Unix at home (the freely available Linux is perfect for this). If you’ve used only makefiles and an editor, try an IDE, and vice versa.

Stay current.
Subscribe to trade magazines and other journals (see page 262 for recommendations). Choose some that cover technology different from that of your current project.

Get wired. Want to know the ins and outs of a new language or other technology? Newsgroups are a great way to find out what experiences other people are having with it, the particular jargon they use, and so on. Surf the Web for papers, commercial sites, and any other sources of information you can find.

As recomendações acima parecem óbvias, mas até mesmo o óbvio precisa ser definido para ser bem seguido. A fila tem que andar…

PHP 5.3 e seu Garbage Collector

O PHP tem(ou tinha) um pequeno problema para tratar referências circulares, principalmente entre objetos. No blog do Alex Netkachov, um ZCE desconhecido da vida que as vezes posta umas coisas legais, ele fez o seguinte benchmark :


class Node {
public $parentNode;
public $childNodes = array();
function Node() {
$this->nodeValue = str_repeat('0123456789', 128);
}
}
function createRelationship() {
$parent = new Node();
$child = new Node();
$parent->childNodes[] = $child;
$child->parentNode = $parent;
}
echo 'Initial: ' . number_format(memory_get_usage(), 0, '.', ',') .
" bytes\n";
for($i = 0; $i < 10000; $i++) {
createRelationship();
}
echo 'Peak: ' . number_format(memory_get_peak_usage(), 0, '.', ',') .
" bytes\n";
echo 'End: ' . number_format(memory_get_usage(), 0, '.', ',') .
" bytes\n";

E o output disso foi:

Initial: 62,224 bytes
Peak: 34,905,216 bytes
End: 34,905,016 bytes

Muito interessante o resultado não ? 34mb para 10.000 requisições. Segundo o próprio Alex, isso seria o equivalente a “Modern systems with 1-2Gb can run 30-60 similar processes at the same time. But in shared hosting environment or when support of 100 simultaneous connections is a system requirement, such memory consumption is inadequate.”

Pois bem, um cientista da computação de algum lugar do mundo chamado David Wang escreveu um patch para o garbage collector do PHP sanando este problema com as referências circulares. Ele mesmo confessa que o PHP usa “a simple garbage collection system”, precisando de alguns improvements. Ele publicou um resumo do de suas idéias relativas a este patch e ao problema em si no news.php.net, mas eu trago abaixo uma cópia da mensagem dele:

Hello, everyone. My name is David Wang and I am one of the students
participating in Google Summer of Code this year. As you may remember,
my project is to implement a garbage collector for circular references
in PHP. As the midterm for Summer of Code is coming up, my mentor,
Derick Rethans, thought it would be a good idea if I shared my
progress with the community.

As you know, PHP uses reference counting as a simple garbage
collection system. One of the primary weaknesses of reference counting
systems is that objects that refer indirectly or directly to
themselves, i.e. reference cycles, are not collected. The accumulation
of unreferenced memory that is only deallocated at the end of a
request can be prohibitively expensive. The cycle collector I am
implementing directly addresses this problem.

The cycle collector is, of necessity, a type of tracing garbage
collector. However, it uses reference count information to accelerate
the collection process. Essentially, it works by removing the internal
reference counts (that is, references from an object within the cycle
to another object within the cycles )from candidate cycles. In a cycle
that can be collected, after all internal reference counts have been
removed, the reference count of all objects within the cycle should be
0. The particular algorithm that I am using is the synchronous cycle
collector described by David Bacon and V. T. Rajan in Concurrent Cycle
Collection in Reference Counted Systems (see the article for further
details). Various optimizations allow the cycle collector to be run
relatively infrequently and execute speedily when it does run.

Note that because PHP is designed to be single-threaded, a synchronous
algorithm is used which does pause program execution for cycle
collection when cycle collection becomes necessary. If a program has
no reference cycles, the cycle collector does not run at all.

The initial phase of implementation is complete, and I am currently
profiling, optimizing and trying the modified version of PHP on
various test programs in an effort to find bugs. Meanwhile, here are
some recent benchmarks.

Some aspects of the eZ Components (http://ez.no/ezcomponents,
available from SVN with the instructions here:
http://ez.no/community/articles/an_introduction_to_ez_components/installation)
testing suite use reference cycles heavily. The Template test uses
circular references the most frequently, the Graph test also uses
circular references, albeit less heavily.

On the Graph test, maximum memory usage with unmodified PHP was 133.9
MB with an execution time of 8 seconds.
On the Graph test, maximum memory usage with gc was 51.6 MB with an
execution time of 9 seconds.
On the Template test, maxmium memory usage with unmodified PHP was 1.5
GB with an execution time of 30 seconds.
On the Template test, maxmium memory usage with gc was 67.3 MB with an
execution time of 1 minute.
On the whole suite of tests (which includes the Graph and Template
tests), execution time with unmodified PHP was 12:03. With cycle
collection, it was 12:43.
These tests were conducted on my dual core AMD X2 4400+ desktop with
./configure --with-gd --with-jpeg-dir --with-zlib. As you can see,
there is the classic time vs. memory trade-off.

My project is currently being hosted on the xdebug CVS. You can get
the latest version with the following commands:

cvs -d :pserver:srmread@cvs.xdebug.org:/repository login
CVS password: srmread
cvs -d :pserver:srmread@cvs.xdebug.org:/repository co circular
Note that I'm implementing my project on top of a CVS version of PHP
5.2 that is a couple of weeks old. However, the cycle collector can be
ported into other versions of PHP fairly easily as it does not affect
the existing Zend engine code too much.

If anyone has any questions, I'll be more than happy to answer them!

Regards,

Yiduo (David) Wang

Fico feliz por essa melhoria, pois é uma pequena alteração que faz muita diferença. Só espero que não tenha seus efeitos colaterais…

CSS Reset

Hoje estava conversando com um colega aqui na 3Jane sobre a técnica de “zerar” as diferenças entre a renderização de estilos entre os browsers para apartir de então começar a escrever as folhas de estilo.

Claro que isso não funciona sempre, mas já facilita bastante o começo e manutenção da camada de interface com o usuário. A tal técnica tem o nome sugestivo de CSS Reset. Acontece que dando uma olhada rápida na web, você acaba encontrando “n” pessoas dizendo ter a galinha dos ovos de ouro, inclusive a própria Yahoo através da YUI Library.

Depois de procurar um pouco, achei o blog Perishable Press, com uma lista de vários desses CSS Resets e alguns comentários. O link segue abaixo :

http://perishablepress.com/press/2007/10/23/a-killer-collection-of-global-css-reset-styles/

Vlw Pessoal!

Experimentando o Slackware 12

Ola pessoal, saindo um pouco das linhas de codigo, decidi conversar com vocês um pouco sobre um mito que o Linux, em especial o Slackware, é um SO  quase impossível de ser operado de tão complexo. Com isso vou descrever minhas experiências com o Slackware 12.1 – a versão mais recente.

Lembrando que esse post não é mais um daqueles “Instalando o Slackware passo-a-passo”. Existem inumeros destes na internet  e no final do post eu colocarei alguns deles.

 

Qual é a dificuldade em se trabalhar no Linux ?

Por que alguns profissionais de TI teimam em migrar para o Linux com a desculpa deste SO ser extremamente complexo ? Isso não é real. Há quase 2 anos atrás eu decidi ir de cabeca para o Linux. Para isso, em um momento kamikaze, tirei por completo o Windows do meu pc doméstico e deixei na época apenas com o Suse 10.

Após a configuração e instalação através de um setup completamente grafico e intuitivo, cai direto no KDE ( que é um dos principais gerenciadores de janelas do Linux ), com todos os hardwares do meu PC configurados e funcionando. Em uma prévia comparação (sadia) com o Windows, até a versão XP ( que foi a ultima que eu mexi), o Linux se mostrou mais facil de se instalar que o MS Win. For a o fato de que a instalação do Linux já deixa seu computador com pacote de programas para Escritório, gravação de CD, programas para Design entre outros.

A única coisa que tive que fazer foi configurar o Linux para abrir conexão a internet via um modem adsl que eu tinha. Para isso foi só eu dar um adsl-setup no modo console para configurar tudo. Depois, para abrir efetivamente a conexão, foi soh dar um adsl-start ( que mas tarde aprendi a como colocar no startup do pinguim). Em outra comparação com o Windows, na época que eu ainda não tinha roteado o meu modem, tinha que instalar um CD com os drivers do Modem e ums aplicativos de gerenciamento de conexão. E como eu sempre perdia o CD, sempre estava em apuros. Depois que roteei meu modem adsl era só plugar o cabo de rede no pc que eu ja estava na internet em qualquer um dos sistemas operacionais.

Minha primeira experiência real com o Linux havia sido bastante satisfatória e, ao contrário do que muitos me falavam, não tive problema algum com o pinguim.

 Grande (?) dificuldade : Wireless no Laptop.

O tempo passou e com muito esforço vendendo produtos de Herbalife, Foreverliving e lendo anuncios no pc que me retornam 0.001 centavo de dolar, eu consegui comprar meu laptop. Era (e ainda é) um HP DV5020, um modelo hoje ja fora de linha.

Acontece que ele veio com uma placa wireless chamada Broadcom 4318, mas conhecida no mundo Linux como uma das BCM 43XX . Pois é, como a fabricante decicidiu insistentemente não querer que o pessoal do mundo *nix utilizasse sua placa em seus pcs, ela não desenvolveu nenhum driver para nossa plataforma e nem disponibilizou seu codigo fonte para que um dos nosso gênios podesse recompila-los.

Na época, a unica solução que tive disponível foi utilizar uma técnica do Linux que utiliza o driver do Windows no Linux através de um pequeno emulador chamado ndiswrapper ( http://ndiswrapper.sourceforge.net/joomla/) .

Como eu já tinha ouvido falar bem do Ubuntu em laptops e um amigo ja o tinha baixado, decidi experimentá-lo. E gostei muito do que vi. Utilizar o ndiswrrapper nele era uma questão de alguns cliques. Como o Ubuntu só vem com um CD de instalação, tive que baixar da internet alguns programas que eu precisava, mas nada alarmante. O tempo passou, eu migrei para o Ubuntu 7.10 – até então a atual versão. Era tudo felicidade.

Confesso que até o Ubuntu 7.10 eu nunca havia precisado muito do console. Fazia uma coisa o outra só para tentar aprender, porém, ainda tinha um certo medo da tela preta.

 Por que Slackware ?

A ignorância me irrita e por isso eu me sentia incomodado em ter uma janela bonitinha com um passo-a-passo misterioso sempre a mão para todos os meus problemas. Não estou falando mal do Ubuntu ou Suse ( inclusive sào as distros que eu aconselho a qualquer um que esteja entrando no mundo Linux ) mas eu queria aprender mais sobre o Linux em si, sem tentadores GUI que me façam a pular fases de aprendizados. Seguindo o conselho do pessoal aqui da 3Jane, decidi instalar o Slackware.

 Minha primeira impressão.

Peguei o DVD da ultima versão, e instalei. Setup não era tão grafico, porém, de fácil entendimento mesmo para quem não tinha buscado maiores informações sobre ele. A instalação foi rapida e indolor.

O computador deu um reboot. Após eu selecionar o Slackware no gerenciador de boot ( Lilo ),  ele comecou a carregar o SO. Já carregado, eis que surge a tela preta e um cursor piscando na tela pedido o login e senha. Loguei, apareceram algumas poucas informações e voltei para o cursor piscando, agora não mais pedindo um usuário, mas sim esperando algum comando. É neste pondo que alguém pensa: “O Slackware é isso ? Nada de interfaces gráficas, janelas ou algo parecido ?”.

Calma. O Slack antes de tudo é um SO voltado para o que você pede, e não para o que alguém acha que você iria pedir. Ele tem sim um gerenciador de janelas ( na verdade ele ja vem com vários ). Se quiser entrar em um gerenciador, tente o comando startx . Ele inicia o Window Manager padrão. Se você quiser ver a lista de WM instalados para experimentar outros, antes de iniciar o modo grafico, digite xwmconfig no terminal – ira aparecer todos os WMs disponíveis, escolha o seu e tecle enter. Depois inicie o modo grafico com o startx e teste seu novo WM.

 Coisas que fiz. 

Criando a conta de usuario.

Primeira coisa a ser feita em qualquer sistema operacional descente é separar as contas de root ( administrador ) e de usuarios ou serviços. A conta de root só deve ser utilizada para configuração do SO. As demais contas que cubram as outras necessidades.

 E a minha placa wireless ?

Se lembra que eu disse que tive um problema com minha placa wireless por causa da falta de driver para Linux ? Nesta última versão do kernel do Linux ( 2.6.24.xx), os gênios do pinguim construiram um driver para minha Wireless com 100% de suporte, através de engenharia reversa. Verdadeiros artistas. O driver ficou tão bom que incluiram o modulo no kernel.

Logo não preciso configurar nem ficar emulando um driver de outra plataforma no meu Slack ( ou em qualquer outra distro com as ultimas versões do kernel Linux).

Se você utilizar o KDE, notará que ele vem com uma série de ferramentas administrativas. Cheque se as interfaces de rede wireless estão ativas e então execute o kwifi para entrar em alguma rede wireless. E obvio que dá para fazer isso em modo texto. Provavelmente ficará assim:

ifconfig eth1 up

iwconfig eth1 essid minharedewireless key [1] 0000000000

dhclient eth1

 

Onde eth1 será a sua interface de rede, minharedewireless é o nome da sua rede e 000000000 é a senha ( se a rede for protegida ). A ultima linha eu preciso porque meu modem adsl esta roteado, e portando preciso que ele forneça IP para a minha placa wireless. Claro que isso pode variar de rede pra rede, por isso, se você quiser algo mais instântaneo faça pelo KDE.

 

Placa de video e o Xorg.conf

Como meu note tem uma placa de video ATI, tive que abrir o xorg.conf ( /etc/X11/xorg.conf ) e alterar o drive para ati. Isso mesmo, não é necessario baixar o driver, instalar ou configura-lo. Só alterar o xorg.conf e ser feliz. O xorg.conf tem vários parâmetros de configuração de hardware como placa de video, monitor, layout de teclado, mouse e afins. Fique tranquilo pois se você não quiser alterar este arquivo na mão, o KDE tem ferramenta para alterar quase tudo do xorg.conf.

Lembre sempre de fazer backup desde arquivo, porque sempre antes de iniciar seu Window Manager, o X ira consultar o xorg.conf . Se alguma coisa estiver errada, simplesmente você não tera as janelas coloridas ..rs.

Caso você tenha feito alguma besteira e não tenha backup deste arquivo ( que vergonha ), digite xorgconfig  no console e siga o passo-a-passo para criar um xorg.conf novinho em folha.

Habilitando o som. 

Notou que não sai som pelas suas caixas de som ? Pois é, em 99% dos casos isso não significa que o Slack não detectou seu dispositivo de hardware, mas sim que o ALSA ( que é o gerenciador de som) não foi configurado. Basta digitar o comando alsaconf no console e seguir o passo-a-passo do configurador.

Que tal experimentar ? 

Quer experimentar sem instala-lo diretamente na sua máquina ? Instale um gerenciador de maquinas virtuais e teste-o. Eu indico o VirtualBox que é leve, livre e funciona bem tanto no Linux quanto no Mac e Windows. No final do documento esta o link desta ferramenta.

Considerações Finais 

Talvez você esteja se perguntando se vale mesmo migrar para o Slackware. Como eu disse, no meu caso valeu. Primeiro porque estou tendo que aprender um pouco mais sobre o comportamento do Linux para fazer algumas coisas que nas outras distros era só clicar e ver acontecer. Com isso ganho infinitamente mais poder sobre meu SO. ÓBVIO que da pra você  fazer as coisas nas outras distros de maneira mais “underground”. Mas se você SÓ poder fazer do jeito certo é bem melhor.

 Outro grande motivo é o ganho de performance. O Slackware incomparávelmente mais rápido do que as outras distros que ja mexi. E procurando alguns benchmarks na web confimei minha teoria.

Bom esse foi um resumão da minha experiência com o Slackware e dos motivos que me levaram a migrar para ele. Se tiver alguma dúvida, poste na parte de comentários que eu tentarei ajuda-lo.

Links 

Slackware – Site oficial – http://www.slackware.org/

Site em português com dicas para Slackware – http://www.slackware-brasil.com.br/web_site/

Virtual Box – gerenciador de máquinas virtuais-  http://www.virtualbox.org/

Não conhece o conceito de virtualização ?  http://www.dx7lab.com/virtualizacao

  

Sites com passo a passo para instalação do Slackware 12 

1 – Video-aula da instalação do Slackware 12 – http://tuxtoriais.wordpress.com/2007/10/14/como-instalar-o-slackware-12/ 

2 – Outro site com o passo-a-passo - http://jrjuniorsp.wordpress.com/2008/02/27/instalando-o-linux-slackware-12-passo-a-passo/ 

3 – Instalação e Pós-Instalação do Slackware 12 ( http://www.howtoforge.com/the_perfect_desktop_slackware12 )

 

Agradecimentos 

Eu não caí de para-quedas por completo no Slackware. Existiram duas pessoas aqui da 3Jane que me deram algumas dicas : Rafael Santos e Rafael Dx7 ( http://www.dx7lab.com ).

 

Profissional sim, mas, aonde ?

 Semana passada surgiu um debate aqui na 3Jane sobre um problema encontrado por muitas equipes quando se encontra um profissional ‘super-star’ .

Se você esta acostumado a ler o blog do Phillip Calçado já de ter deparado com o termo ‘super-star’, que é como ele se refere aos programadores que dominam as ferramentas com que trabalham e por isso têm alguma visibilidade no mercado.

 É bem provável que alguns dos leitores deste blog trabalham ou já trabalharam em equipes que tiveram a entrada de um super-star. Ae surge a pergunta: aonde você é um bom profissional ? Na empresa em que trabalhou ou no mercado, de uma forma mais ampla ?

 Existem alguns profissionais que são bons nas empresas ‘incubadoras’ onde eles foram formados. Dominavam todas as regras de negócio, eram verdadeiros dbas-desenvolvedores-gerentes-selecionadores de currículos plênos. Como o dono aqui da empresa costuma dizer, se o cara for atropelado pelo caminhão do leite a empresa tem que parar ( embora ele esqueça que no Brasil não temos caminhão do leite).

 É normal para qualquer um que já ocupou uma posição desta ( muito comum em empresas pequenas ) se sentir deslocado ao mudar de empresa. Quando saí da antiga empresa onde trabalhava para vir para a 3Jane me senti assim também. Mas o importante é entedermos que quando estamos em uma empresa nova, estamos lidando com novas regras de negócio, com novas pessoas ( e mentalidades ) e com provavelmente novas tecnologias.

 Não é incomum vermos alguns destes profissionais ‘super-stars’ tentando impor suas formas de trabalhar, criticando tudo e colocando sempre suas formas de pensar e trabalhar como as ideias. Mas a coisa não é bem assim. Como o Rafael DX7 disse durante a nossa conversa aqui na empresa ‘esses profissionais costumam lançar suas incapacidades nas pessoas ou rotinas a sua volta’.

 Sempre podemos otimizar os processos em nosso ambiente de trabalho – afinal de contas, é assim que nos destacamos. Mas nunca devemos nos esquecer que os processos são formados por pessoas, e que elas são a parte mais importante do sistema. Se essas pessoas não enxergarem que você esta ali para acrescentar, é melhor você repensar seus conceitos ou procurar o telefone da antiga empresa onde trabalhava.

Não mude o escopo dos seus objetos

Imaginemos a seguinte situação : você seguindo o modelo de classes criado para o projeto X, cria uma classe de usuários. Lá você tem todo o cuidado para definir os Gets e Sets, colocar seus atributos com seus devidos modificadores de acesso, cria todos os seus métodos e tudo fica perfeito, respeitando os mais elegantes padrões de programação.  Logo após, você usa essa classe para, por exemplo, fazer uma busca pelo usuário de ID 7. Talvez a busca fique assim:

$usuario = new User();

$usuario->setId(7);

$usuarioDesejado  = $usuario->selectUser();
 

Ok, tudo ok. Mas…. e se de repente você digita o nome do atributo de maneira errada, como por exemplo seid .  O PHP vai retornar um erro, correto ? Errado. Ele não retorna erro algum. Ele não retorna nada. Na verdade, ele cria um atributo em tempo de execução chamado, neste exemplo, seid. Isso é um problema.

Claro que você, assim como eu, só alteraria o escopo de um objeto em tempo de execução por um enorme engano. Faria alguns testes, descobriria o erro e todos ficam felizes ( hipotéticamente ). Porém, existem alguns programadores que não pensam assim. Pensam que se a linguagem permite, tem que usar. Logo, aproveitam a festa pra fazer uma zona com seu objeto. Começam a criar atributos alterando o design original da sua classe.

Não faça isso. Em pouco tempo o projeto se tornará em uma bola de neve, onde não se tem controle nenhum sobre o comportamento do seu código. Use a cabeça.

Por hoje é só pessoal.

PHP 5.3 Features

O sr. Ilia Alshanetsky ( ufa!)  andou liberando no blog dele um pdf com as features do PHP 5.3. Coloquei no Rapidshare e o link segue abaixo:

http://rapidshare.com/files/131456385/php53.pdf.html

A principais mudanças ao meu ver serão:

  • Feature complete implementation of namespaces
  • Overall Improvement 5-15%
  • Introduced __DIR__ magic constant indicating the directory where the script is located
  • ?: Operator : Allows quick retrieval of a values and/or expressions
  • __callStatic() : __call() equivalent, but for static methods

Existem outras importantes modificações, entre elas no php.ini, PDO, E_DEPRECATED ( novo error mode)  e no Garbage Collector. Vamos ver no que dá…

Separando os meninos dos homens

Lendo o artigo do Jim Plush, acredito que ele acertou me cheio em listar os principais conhecimentos que um profissional PHP deva ter. Desde que entrei pra 3Jane, já participei de algumas etapas no processo de seleção dos cadidatos para vaga de desenvolvedor PHP, e sempre os candidatos tem certos problemas com coisas elementares. Logo se você estive aprendendo e quer um “mapa do tesouro”, acredito que os itens do Jim resumem tudo: 

PHP5 vs PHP4
You should at least three major features that separate PHP5 from PHP4

Networks
You should be able to do some basic socket programming or at least understand how you would connect to other machines

OOP
You should have a deep understanding of OOP and be able to answer simple questions like how private and protected methods differ. You should understand the following concepts(not really critical you use all of them but at least know why you would need them)

* interfaces
* constructors
* private, public, protected
* inheritance 
* polymorphism
* static methods


Database
You should know what a normalized database is, you should understand primary and foreign keys, 

Design Patterns
You shouldn’t say “huh?” when I mention design patterns. Again, not critical you use that many, but important you understand why they’re helpful and know at least a couple.

Source Control
You should be well versed in at least one major source control system (ZIP FILES IN TEMP DIRECTORIES DON’T COUNT!). bonus points for being able to name at least one reason cvs is a pain in the ass.

Unit Testing
You should understand what unit testing is, and why it’s important (bonus points for test driven design, knowing how to unit test javascript, or how to use selenium).

Part of the Community
I should be able to find all sorts of good things on google that you’re doing with php or web technologies, It generally is a red flag when I google you and nothing comes up(bonus points for having a project of your own or contributing to one).

Javascript Skills
You should know the methods use to manipulate the DOM (appendChild, removeChild, nextSibling, etc…), you should know how to create your own classes in JS (FORM VALIDATION IS 1999), bonus points for being able to show how to make a private variable in javascript.

CSS Skills
You should know the box model inside and out, understand css selectors and how to use inheritance

Passion for Improvement
I want you love what you do and not be looking for a bare minimum, what’s the least I can do to get out of here at 5 job. You should be looking to build your skill sets and become more valuable.


Fonte: http://www.litfuel.net/plush/?postid=166

Confesso que embora os itens sejam poucos, eles são bastante vastos e é impossível dominar todos de uma hora pra outra. E não somente isso, muitas vezes faltam livros técnicos voltados para nossa plataforma, o que nos obriga a procurar por materiais em outras linguagems, como em Java por exemplo. Aqui no Brasil, algumas vezes o PHP tem uma imagem de “menos enterprise” que outras plataformas de desenvolvimento web, muito por culpa do mercado que ele tem maior participação. Vamos estudar pra mudar isso!

I-Scrum

A notícia não é tão nova, mas fica registrada aqui: I-Scrum, uma comunidade social que foca debates sobre desenvolvimento ágeis. A idéia parece ser ótima, só espero que não vire um orkut pra nerds.

http://i-scrum.ning.com/

Segundo eles, agora temos um lugar certo para falarmos sobre “Scrum, XP e outras coisas relacionadas a desenvolvimento ágil”.  

Desenvolvimento Web e Segurança

Continuando na onda dos slideshows, hoje estava lendo um sobre segurança na web em aplicações PHP. Aborda o básico de forma direta.  Fala sobre Data Input, XSS, SQL Injection, Code Injection, alguma coisa sobre sessão e um pouquinho sobre servidores compartilhados. Seus autores são Anish e Mudha – não faço a mínima ideia de quem sejam…

PHP Object Model

Mais um slide show… Desta vez é de um desenvolvedor chamado Sebastian Bergmann, um dos desenvolvedores do PHPUnit. Ele da um resumão da implementação da OOP no PHP.