[Problema] Sincronizando um Bloco de Código

Olá, amigos

Há algumas semanas durante os meus estudos para a OCJP, me deparei com este problema que está no capítulo de Threads do livro da Kathy Sierra:

In this exercise we will attempt to synchronize a block of code. Within that block of code we will get the lock on an object, so that other threads cannot modify it while the block of code is executing. We will be creating three threads that will all attempt to manipulate the same object. Each thread will output a single letter 100 times, and then increment that letter by one. The object we will be using is StringBuffer. We could synchronize on a String object, but strings cannot be modified once they are created, so we would not be able to increment the letter without generating a new String object. The final output should have 100 As, 100Bs, and 100 Cs all in unbroken lines.

Continuar lendo [Problema] Sincronizando um Bloco de Código

Estudando para Oracle Certified Java Programmer 6

Olá amigos,

Recentemente tenho dedicado parte do meu tempo e retomado meus estudos para tirar minha primeira certificação que será a OCJP 6. Assim como boa parte de desenvolvedores Java que optam por tirá-la, eu optei por estudar pelo livro da Kathy Sierra: Certificação Sun para Programador Java 6.

Na minha opinião é um livro completo e que aborda todos os conteúdos que podem vir a ser cobrados na prova da Oracle. Usa uma linguagem bem fácil de entender, dá várias dicas de como se safar das temidas questões “pegadinha” e ainda contém ao fim de cada capítulo alguns exercícios no estilo da prova e ao fim ainda exibe as respostas explicando o porquê de cada uma delas estarem certas ou erradas.
Continuar lendo Estudando para Oracle Certified Java Programmer 6

Praticando Test Driven Development – TDD

Olá,

Depois de algum tempo sem postar nada, eis que vendo um probleminha no GUJ resolvi praticar um pouquinho de TDD e assim escrever um post sobre essa excelente metodologia.
Já li muito sobre o assunto e tenho até uma boa base teórica. O TDD é bem simples e fácil de entender, mas ainda não pratiquei muito codificando, confesso que por um pouco de preguiça, e com este probleminha foi uma boa oportunidade de praticar.

O problema que eu escolhi foi o cálculo do Número de Euller(e) usando a Série de Taylor dada por:
e = 1 + 1/1! + 1/2! + 1/3! + 1/4! + …

Onde teremos um valor de entrada n, que quanto maior ele for, mais aproximado ele será do número de Euller.

Primeiramente, para facilitar o cálculo da série, vamos implementar a função fatorial(n) que como sabe-se é calculada da seguinte forma:

fatorial(n): = 1, se n = 0;
                     = n * fatorial(n-1), se n > 0;
                     indefinida, c.c

Continuar lendo Praticando Test Driven Development – TDD

Upload de arquivo no CodeIgniter

Hallo,

Atendendo ao pedido feito em um comentário, o tema deste post será sobre como fazer upload de arquivos usando o CI.
Veremos que o CI nos fornece uma interface bem limpa e clara, que é capaz de fazer este trabalho facilmente.

Primeiramente, vamos criar o nosso formulário de envio do arquivo que desejamos.
Teremos o código a seguir:

<html>
<head>
<title>Formul&aacute;rio de Envio de Arquivo</title>
</head>
<body>
        <?php echo form_open_multipart('upload/enviar'); ?>
        <input type="file" name="arquivo" id="arquivo" size="20" />
        <br>
        <input type="submit" value="Enviar" />
</body>
</html>

A função form_open_multipart() cria um form na nossa view que suportará o upload.
Esta função adiciona um atributo multipart na tag form, que é necessário para fazermos o upload de arquivos.
Continuar lendo Upload de arquivo no CodeIgniter

Ordenando Strings acentuadas em PHP

Olá,

No meu terceiro post vou pegar o gancho do post do Bruno Vasconcelos e fazer a versão PHP para o pequeno problema da ordenação de Strings acentuadas.

Muitas vezes nos deparamos com a situação de ordenar um array de string e em muitos casos simplesmente fazemos uma chamada à função nativa sort(), passando o array que queremos ordenar como parâmetro. Ela resolve muito bem nossos problemas. Mas como toda regra tem sua exceção, esta função não está programada para ordenar palavras acentuadas.

Olhando o manual da função vemos que ela possui parâmetros opcionais, dentre eles uma flag chamada SORT_LOCALE_STRING na qual podemos configurá-la para fazer com que a função compare as strings de acordo com uma determinada lingua local. Para isso, basta utilizar a função, também nativa, setlocale() definindo-a para utilizar o padrão brasileiro.
Continuar lendo Ordenando Strings acentuadas em PHP

Aplicação CRUD com PHP + CodeIgniter + MySQL

Olá,

No meu segundo post vou mostrar a vocês uma pequena aplicação CRUD usando o CI. Achei muito simples e intuitivo desenvolver esta primeira aplicação. O CI é realmente um framework com uma pequena curva de aprendizado, não senti tanta dificuldade em implementar e as poucas que tive bastou consultar a documentação e googlar alguma coisa mais específica.

Vamos ao que interessa.

Primeiro de tudo crie uma nova database no sgbd de sua preferência. No meu caso escolhi o MySQL por já vir integrado com php no xampp:

create database crud;

Após ter criado sua nova base, adicione à ela uma nova tabela que será responsável por armazenar os dados das pessoas.

CREATE TABLE `pessoa` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`nome` VARCHAR(50) NOT NULL,
`celular` VARCHAR(15) NOT NULL,
`endereco` VARCHAR(100) NULL DEFAULT NULL,
`email` VARCHAR(25) NULL DEFAULT NULL,
PRIMARY KEY (`id`)
);

Feito isto e com a configuração de seu banco de dados no arquivo application/config/database.php, vamos iniciar o desenvolvimento da aplicação. Você pode até aproveitar a aplicação que você configurou através do meu Primeiro Post.

Como sabe-se o CI é um framework MVC, se você não sabe do que se trata é bom dar uma lida a respeito antes.
Nas pastas:

  • application/models
  • application/views
  • application/controllers

Continuar lendo Aplicação CRUD com PHP + CodeIgniter + MySQL

Configurando aplicação PHP + CodeIgniter no Eclipse

Esta semana retornei ao desenvolvimento utilizando PHP e logo de cara, decidi estudar e aprender um novo framework. Quem já trabalhou com Java por algum tempo sabe as facilidades que frameworks como vraptor, jsf, spring proporcionam no desenvolvimento de aplicações. E ao mudar para outra linguagem me deparei com a falta de conhecimento que tenho em frameworks php.

Conversando com o amigo @marcosfilho88 sobre qual eu poderia aprender de início e ele me indicou o CodeIgniter. Assim, procurei pela sua documentação no site e notei que ela é bem intuitiva, fazendo o trabalho de configuração e instalação se tornar bastante trivial.

Feito isto, o próximo passo seria começar a desenvolver alguma aplicação, utilizando alguma ferramenta ide. Por ter trabalhado e utilizado o Eclipse para desenvolver em Java durante algum tempo, optei por esta poderosa ide na sua versão para PHP.

Então tendo em mãos o Eclipse, PHP(pacote xampp) e o CodeIgniter(CI) só faltava integrá-los. E é este o motivo do meu primeiro post. Veremos que é simples e espero que sirva para muitos colegas desenvolvedores que estão iniciando assim como eu.

Vamos lá!

[CRIANDO PROJETO DA APLICAÇÃO NO ECLIPSE]

  1. Ao iniciar aponte o workspace do eclipse para a pasta htdocs do xampp que você instalou.
    No meu caso C:\xampp\htdocs
  2. No eclipse no menu selecione File > New > PHP Project
  3. Em seguida digite o nome da aplicação na tela de criação do projeto e clique em Finish

Adicionando CI no projeto

Após estes passos o projeto é criado e você verá que uma nova pasta com o nome do projeto(“aplicação”) é criada dentro da pasta htdocs.

[ADICIONANDO O CI ao PROJETO CRIADO]

  1. Após feito a etapa de instalação/configuração do CodeIgniter e dentro da pasta raiz do CodeIgniter que você configurou copie todos os arquivos e diretórios que tem dentro dela e em seguida cole dentro da pasta da aplicação que você criou no passo anterior.
  2. Dê um refresh(aperte F5) no eclipse.

Feito estes passos você verá que o CI estará no seu projeto.
Agora basta acessar o endereço local http://localhost/aplicacao e você verá o CI funcionando dentro de seu projeto.

Code Igniter rodando localmente

🙂

Bem, é um post simples que serve mais como forma de iniciar minhas atividades no blog e ajudar aos iniciantes.

Ainda vou dá uma melhorada no layout do blog e aos poucos vou adicionando novos posts relacionados às atividades que venho fazendo. Acredito que os próximos posts serão direcionados mais ao PHP + CI, já que é o que eu mais tenho dedicado meu tempo atualmente.

Um abraço,