Postagens

Mostrando postagens com o rótulo Delphi

Entregue mais de 300 tarefas no prazo utilizando PERT/CPM

Imagem
No post anterior descobrimos como a Matriz de Dependência pode nos ajudar no processo de planejamento das tarefas. Também vimos que ela gera insumos importantíssimos para o PERT/CPM. Mas que dupla é essa, afinal? [http://www.cemeai.icmc.usp.br/images/noticias/pde_grafos_pre/grafos.jpg] PERT/CPM são duas metodologias utilizadas na gestão de projetos. Comumente utilizada em projetos mais estáticos - como na área da construção civil, por exemplo - elas ajudam a gestão a identificar pontos de atenção e a gerenciar os recursos. Principalmente o recurso tempo. Preciso dizer que estou explicando bem por cima (e apenas a parte que nos é interessante) esta metodologia. Se você pesquisar mais - ou for aluno ou aluna de engenharia de produção - vai encontrar mais material falando sobre os cálculos possíveis de serem feitos à partir dos dados extraídos desse gráfico. Médias, desvios padrões... É aqui que as suas aulas de cálculo serão bem empregadas. As duas metodologias são muito parec...

Records, memória e RTTI

Imagem
No artigo anterior eu falei um pouco sobre como os Records podem ser uma mão na roda. Mas e como a memória é gerenciada com ele? Como devo trabalhar com a Rtti? Grave bem essas perguntas! Gerenciamento de memória Um dos fatores que tornam os Records tão práticos é o fato de, ao saírem do seu escopo, são automaticamente liberados da memória. E ao se tornarem “tipos gerenciáveis” (por favor, reparem nas aspas), ficaram ainda mais poderosos. Barry Kelly fez um pequeno experimento para exemplificar este poder (clique aqui para abrir o site dele) . Um fato que me preocupou durante as pequisas que fiz, foram algumas afirmações que o gerenciamento de memória do record não era boa. Que ao ser passado por parâmetro, era feita uma “cópia do record na memória”. Isso me deixou bastante preocupado. Se eu utilizo um record como DTO, ao transitar por entre métodos (e quem pratica o clean code escreve bastante métodos), eu teria cópias e cópias de objetos pesados em memória. Mas a coisa não é...

Record, operadores e uma mão na roda!

Imagem
Record é uma das estruturas de dados mais simples, desde o pascal, que foi turbinada na Delphi language: Agora suporta propriedades, métodos e seu controle de visibilidade e… OPERATOR OVERLOADING! Vamos falar sobre Records Como eu já disse, são estruturas de dados bem simples. E com a vantagem de que é automaticamente destruída assim que se atingir o fim do escopo. O gerenciamento da memória utilizada também é rápida, uma vez que ela vai direto pro stack — que é bem mais rápida que a heap. As novidades que a Delphi Language introduziu nos records, além de expandir as possibilidades com esta estrutura, também possibilitou “resolver” um problema comum com os tipos inicializados à partir da stack. Neste setor da memória, as variáveis não são inicializadas. Portanto, você pode ter inteiros com valores aleatórios, variáveis de objeto apontando para um fragmento de memória qualquer e Records com o mesmo valor da última chamada (geralmente acontece quando o tipo de retorno da variáve...

Builder, pra quê te quero?

Imagem
Que os Padrões de Projeto (GoF) são uma mão na roda, todo mundo sabe. Mas que nunca olhou para este ou aquele padrão e perguntou “Quando é que eu vou precisar desta bomba”? Minha proposta é te ajudar a responder esta pergunta (ou não). Hoje vamos começar pela padrão Builder. Na DB1 Global Software, empresa em que trabalho, estamos participando de um jogo chamado “mestre dos códigos”. Entre as tarefas deste jogo está o uso de alguns padrões de projeto e também de teste unitários. Então em pensei: por que não usar os dois? Faço essa pequena introdução pensando nas pessoas poderiam perguntar: mas por que você não usa framework para mockar os objetos? Oras, porque eu queria usar builders! Story A proposta era criar um componente onde o cliente pudesse informar colunas, tabelas, condições, junções e etc. Ao final do processo, o componente teria de ser capaz de gerar SQL de acordo com as informações inseridas. Indo um pouco além, me propus que este componente pudesse gerar SQL pa...