Python
como escrever em um arquivo, ler, apagar e atualizar um arquivo

Usando o paradigma proceudural, este trabalho consiste em realizar uma aplicação Agenda de Contatos, que mantém suas informações em um arquivo chamado agenda.agd.
Essa agenda permite operações através de menu, para adicionar, excluir, editar ou enviar email para um contato, alem de listar contatos.

A operacao listar contatos permite uma serie de filtros que podem ser utilizados:
listar contatos com um determinado sobrenome,
listar contatos que residem numa determinada cidade
listar contatos que tenham um e-mail com um determinado domínio.
Cada contato é definido pela seguinte estrutura:
   Nome: primeiro nome e sobrenome;
   Endereco: Rua, número, complemento, bairro e cidade.
   Telefone: DDD e número
   E-mail: endereço contendo domínio.
Caso o arquivo não exista no diretório do programa, o arquivo deverá ser criado de forma automática.

Obs: lembrando com sempre que python considera a tabulação como divisor de conteúdo então muita anteção, estamos partindo do ponto que você já saiba configurar o ambiente Python futuramente vou colocar algumas detalhes e links sobre isso.



'''
Created on 14/06/2012
@author: Evandro, Diego, Luis
'''
#biblioteca para envio de email
import smtplib
import string



if __name__ == '__main__':
   pass
   # pega  o acao que usuario deseja realizar
   acao = raw_input("Digite o acao que voce deseja realizar"+
                    "\n 1 - Adicionar contato"+
                    "\n 2 - Excluir contato "+
                    "\n 3 - Editar contato "+
                    "\n 4 - Enviar e-mail"+
                    "\n 5 - Listar contatos "+
                    "\n 0 - Para Sair")
   
   while(acao != "0"):
   
       # acao == "1"  Adicionar contato
       if(acao == "1"):
           # pega  o nome do usuario e escreve no arquivo com limitador
           nome = raw_input("Digite o nome: ")     
           escrever = open("agendas.agd","a")
           escrever.write(nome+";")
           escrever.close()
           # pega  o endereco do usuario e escreve no arquivo com limitador
           endereco = raw_input("Digite o endereco: ")
           escrever = open("agendas.agd","a")
           escrever.write(endereco+";")
           escrever.close()   
           # pega  o email do usuario e escreve no arquivo com limitador
           email = raw_input("Digite o email: ")
           escrever = open("agendas.agd","a")
           escrever.write(email+";")
           escrever.close()
           # pega  o telefone do usuario e escreve no arquivo com limitador
           telefone = raw_input("Digite o telefone: ")
           escrever = open("agendas.agd","a")
           escrever.write(telefone+"\n")
           escrever.close()
           
           print("Ok, contato "+nome+" cadastrado")
       
       # acao == "2"  Excluir contato    
       if(acao == "2"):
           # contador tem uma funcao importante de contar linhas
           count = 0
           # pega  o nome do contato para apagar
           nome_apagar = raw_input("Digite o nome do contato para apagar ")
           # pega  o arquivo le e joga em um array dividido por linhas
           arquivo = open("agendas.agd","r")             
           linhas  = arquivo.read()        
           arraycontato   = string.split(linhas,"\n")
           
           '''print 'Conta nro de linhas =' + str(len(arraycontato))'''
           # limpa arquivo
           escrever = open("agendas.agd","w")
           escrever.write("")
           escrever.close()    
           #itera contato apartir de arraycontato para pegar separado detalhes do contado    
           for contato in arraycontato:  
               
               #separa detalhes do contato                 
               detalhecontato  = string.split(contato,";")   
               #compara detalhe do primeiro detalhe do contato que eh nome
               # pra verificar se eh igual ao nome a apagar      
               # se for igual ele nao insere  no arquvo novo que esta sendo gerado
               if(detalhecontato[0] == nome_apagar):
           
                   count = count + 1
                   
               else:
                   #insere contato no arquivo, quando nao cair na regra nome a apagar igual ao primeiro detalhe do contato        
                   escrever = open("agendas.agd","a")
                   escrever.write(arraycontato[count]+"\n")
                   escrever.close()     
   
                   print arraycontato[count]
                   count = count + 1
                   
       if(acao == "3"):
           # contador tem uma funcao importante de contar linhas
           count = 0
           # pega  o nome do contato para Editar
           nome_editar = raw_input("Digite o nome do contato para Editar ")
           # pega  o arquivo le e joga em um array dividido por linhas
           arquivo = open("agendas.agd","r")             
           linhas  = arquivo.read()        
           arraycontato   = string.split(linhas,"\n")
           #limpa o arquivo       
           limpar = open("agendas.agd","w")
           limpar.write("")
           limpar.close()
           #itera contato apartir de arraycontato para pegar separado detalhes do contado    
           for contato in arraycontato:  
               
               #separa detalhes do contato                          
               detalhecontato  = string.split(contato,";")   
               #compara detalhe do primeiro detalhe do contato que eh nome
               # pra verificar se eh igual ao nome a apagar      
               # se for igual ele nao insere  no arquvo novo que esta sendo gerado         
               if(detalhecontato[0] == nome_editar):
                   #altera o conteudo do contato desejado
                   detalhecontato[0] = raw_input("Nome do contato "+detalhecontato[0]+" Editar ? Se desejar escreva novo nome, se nao escreva o atual")
                   detalhecontato[1] = raw_input("Endreco do contato "+detalhecontato[1]+" Editar ? Se desejar escreva novo endereco, se nao escreva o atual")
                   detalhecontato[2] = raw_input("Email do contato "+detalhecontato[2]+" Editar ? Se desejar escreva novo email, se nao escreva o atual")
                   detalhecontato[3] = raw_input("Telefone do contato "+detalhecontato[3]+" Editar ? Se desejar escreva novo telefone, se nao escreva o atual")
                                 
                   # atribui novos valores ao contato escolhido
                   arraycontato[count] = detalhecontato[0]+";"+detalhecontato[1]+";"+detalhecontato[2]+";"+detalhecontato[3]
               
               #insere contato no arquivo   
               escrever = open("agendas.agd","a")
               escrever.write(arraycontato[count]+"\n")
               escrever.close()     
   
               print arraycontato[count]
               count = count + 1
   
       if(acao == "4"):
           # pega  o nome do contato para enviar email           
           nome_enviaremail = raw_input("Digite o nome do contato para enviar email ")
           # pega  o arquivo le e joga em um array dividido por linhas
           arquivo = open("agendas.agd","r")             
           linhas  = arquivo.read()
                  
           arraycontato   = string.split(linhas,"\n")
           
           for contato in arraycontato:  
                            
               detalhecontato  = string.split(contato,";")   
                        
               if(detalhecontato[0] == nome_enviaremail):
        
                   SMTP_SERVER = 'smtp.gmail.com'
                   SMTP_PORT = 587
                    
                   sender = 'dfpsg3@gmail.com'
                   recipient = detalhecontato[2]
                   subject = 'Python Contato'
                   body = 'Ola '+detalhecontato[0]
                   body = ""+body+"\n"+ str(raw_input("Digite sua mensagem para o contato "+detalhecontato[0]))
                   
                    
                   "Sends an e-mail to the specified recipient."
                    
                   body = "" + body + ""
                    
                   headers = ["From: " + sender,
                              "Subject: " + subject,
                              "To: " + recipient,
                              "MIME-Version: 1.0",
                              "Content-Type: text/html"]
                   headers = "\r\n".join(headers)
                    
                   session = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
                    
                   session.ehlo()
                   session.starttls()
                   session.ehlo
                   session.login(sender, "suasenha")
                    
                   session.sendmail(sender,"dfpsg3@gmail.com", headers + "\r\n\r\n" + body)
                   session.sendmail(sender,recipient, headers + "\r\n\r\n" + body)
                   print "De:"+sender
                   print "Para:"+recipient
                   print "Cabecalho: "+headers
                   print "Corpo: \n"+body
                   session.quit()
                   
       if(acao == "5"):
                   
           arquivo = open("agendas.agd","r")
           linhas = arquivo.read()
           print linhas
   
           sobrenome = raw_input("Digite o sobrenome ")
           arquivo = open("agendas.agd","r")             
           linhas  = arquivo.read()        
           arraycontato   = string.split(linhas,"\n")
           
           for contato in arraycontato:  
                            
               detalhecontato  = string.split(contato,";")
               detalhenome   = string.split(detalhecontato[0]," ")
               contnome = len(detalhenome)-1
                        
               if(detalhenome[contnome] == sobrenome):
                   
                   print contato
                   
           cidade_pes = raw_input("Digite a Cidade ")
           arquivo = open("agendas.agd","r")             
           linhas  = arquivo.read()        
           arraycontato = string.split(linhas,"\n")
           
           for contato in arraycontato:  
               
               if(contato != ""):  
                          
                   detalhecontato  = string.split(contato,";")
                   detalhenome   = string.split(detalhecontato[1],",")
                   contnome = len(detalhenome)-1
                  
                                            
                   if(detalhenome[4] == cidade_pes):
                       
                       print contato
       
       
           email_pes = raw_input("Digite o final do Email ")
           arquivo = open("agendas.agd","r")             
           linhas  = arquivo.read()        
           arraycontato = string.split(linhas,"\n")
           
           for contato in arraycontato:  
               
               if(contato != ""):  
                          
                   detalhecontato  = string.split(contato,";")
                   detalhenome   = string.split(detalhecontato[2],"@")
                   contnome = len(detalhenome)-1
                  
                                            
                   if(detalhenome[1] == email_pes):
                       
                       print contato

       # pega  o acao que usuario deseja realizar
       acao = raw_input("\n Digite o acao que voce deseja realizar"+
                    "\n 1 - Adicionar contato"+
                    "\n 2 - Excluir contato "+
                    "\n 3 - Editar contato "+
                    "\n 4 - Enviar e-mail"+
                    "\n 5 - Listar contatos "
                    "\n 0 - Para Sair")

SOA - Arquitetura Orientada a Serviços


O Último artigo que li sobre SOA, Arquitetura Orientada a serviços, abriu minha mente para entendimento de algumas questões e gostaria de compartilhar,
com vocês através desta ferramenta.

Service Oriented Architecture


Primeiro vamos analisar esta sigla SOA, em inglês Service Oriented Architecture em português arquitetura orientada a serviços,
E como o próprio nome diz o desafio de SOA, no meu pensamento as primeiras palavras que penso são arquitetar, planejar, elaborar ou até projetar
Orientado; pensando, guiado a serviços; tudo que gera algum tipo lucro para empresa ou algum tipo de despensa extraído de seus processos ele é resultado
Final de uma tarefa ou pelo menos deveria ser.

Não é um umproduto, nem vem pronto


Objetivo deste documento é somente refletir sobre o assunto. Para realização do SOA é necessário é criar o pensamento empresarial (Pensamento de todos os colaboradores do grupo) atrelado as tecnologias existem no mercado, com o pensamento visualizando sempre o serviço prestado ou adotado.
Sabemos que hoje em dia essa tarefa não é fácil, a maioria das empresas de hoje e possivelmente do futuro irá trabalhar com vários sistemas para
O controle de todas as tarefas que são realizadas pelo grupo empresarial, isso se torna uma tarefa cada vez mais difícil para seu gestor conseguir
Analisar a corporação como um todo.

integra sistemas diferentes


Mas podemos começar tratar todos os sistemas pensando em serviços e integrando estes serviços com ajuda de ferramentas tecnológicas, é possível esse pensamento com desenvolvimento. Um bom exemplo de uma das ferramentas que ajuda a compreender melhor o SOA são os Web Services, o objetivo do web service é comunicação entre sistemas distintos podendo fazer troca de informações para ambos de forma a estabelecer um contato com aplicações, um exemplo mais direto é temos um sistema de vendas web em PHP de produtos e outro sistema de suporte técnico em Java desktop as informações de venda podem ser comunicadas através de uma web service podendo ser utilizadas pelo suporte para ajuda as clientes sem de uma intervenção humana.

Esse exemplo pode aplicado a outro pensamento de um serviço interno da empresa podendo ser integrações feitas com sistemas para que coordenador tenha essa visão completa da organização.

Ferramenta JProfiler

Como utilizar a ferramenta Jprofiler uma ferramenta de profile

Objetivo desta ferramenta é auxiliar o programador na verificação de problemas.
Ajuda a descobrir memory leaks ou melhor vazamentos de memoria da sua aplicação.

Monitoramento de aplicação pelo Jprofiler direto pelo eclipse em sua maquina
Existem algumas maneiras de utilizar o JProfiler uma a mais fácil é você rodar uma aplicação sua pelo eclipse de depois chamar seu Jprofiler para verificar os possíveis problemas e desempenho da sua aplicação.

Monitoramento Remoto Jprofiler
Você pode monitorar sua aplicação em seu servidor e averiguar qualquer problema de memory leaks.



Engenharia de Software vs Software Artesanal

Forma artesanal como da na cabeça de uma idéia sair codificando até encontrar a solução, essa é maneira primitiva de desenvolver software.

Para que utilização da Engenharia de Software, se os erros de hoje em dia sãos os mesmos erros de quarenta anos atrás, essa uma questão de se pensar.

Proposta de serviço

Bom depois de longos dois anos na minha empresa atual Equipatech chegou o momento de iniciar um novo ciclo na área que tenho escolhido para estudar e aprender mais de desenvolvimento de software, essa nova experiencia lida com java e php espero postar idéias futuras e aprimoramentos meus como profissional,
Trocando a estabilidade por um desafio capaz de proporcionar crescimento profissional e experiencia no ramo.

Desafio final em Sistemas Operacionais

Desenvolva um software de gerenciamento de memoria contígua. Este programa deverá gerar processos de tamanho aleatório entre 1 e 5 cada um dos processos criados deveáa ter um nome ou um identificador. Estes processos deverão ser carregados na memória principal (tamanho de memória igual a 30 unidades), a medida que os processos são criados estes devem ser alocados na memória seguindo as técnicas de alocação contigua best-fist ou worst-fit ou firs-fit.
O programa deverá ser capaz de ser interrompido no meio de sua execução para análise da memoria principal.Todos os processos criados deverão ser armazenados sequencialmente em um arquivo texto chamado processos.txt. A medida que a memória estiver cheia deverá ser feito o swap out do processo mais antigo. Este processo deverá ser armazenado em um segundo arquivo chamado swapout.txt.

Já estou com boa parte do projeto em andamento, em seguida devemos chegar a uma conclusão a e vou postar aqui.

Estrutura do Sistema Operacional IOS.


A estrutura do IOS é dividida nessas 4 camadas segundo a própria Apple, e conforme a imagem ao lado mostrando uma hierarquia das camadas, Cocoa Touch seria a camada de mais alto nível e e Core OS seria a camada de mais baixo nível, ou seja conforme a figura quanto mais abaixo na camada, maior deve ser a dificuldade em desenvolver e de se compreender.
Ao contrario da figura vou começar pela base do sistema.

Core OS (Núcleo do sistema operacional)

– OS X Kernel, Sockets, Segurança,
Gerenciamento de Energia , Certificados, Sistema de Arquivos.

Core Services (Serviços oferecidos pelo sistema)

– Como SQLite, Acesso a Arquivos, Preferências, Livro de Endereços, Rede.

Media – (serviços de mídia IOS)

– Como OpenAL, Gravação e Mixagem de Áudio, Núcleo de Animação, Leitor de PDF, OpenGL ES e Quartz.

Cocoa Touch

– Multi-touch eventos e controle, Acelerômetro, Camera, Alertas, Pickers, Sistema de Localização, é basicamente as interações com o usuário.

Linguagem para desenvolvimento dos aplicativos para IOS é Objetive C, que foi uma linguagem derivada das linguagens Smalltalk e C.
Infelizmente ainda não existem plataformas seguras e gratuitas para desenvolvimento nos sistemas operacionais Windows então você deve possuir um Macintosh, para poder programar você deve se associar a apple pagando uma anuidade, ou desenvolver somente para aparelhos já desbloqueados através do jailbrake.
A IDE mais utilizada é Xcode, as ferramentas Xcode fornece o básico de edição, compilação e ambiente de depuração de seu código. Xcode prevê também o ponto de lançamento para testar seus aplicativos em um dispositivo IOS, e no IOS Simulator, uma plataforma que imita o ambiente do IOS de base, que é executado no seu computador Macintosh local.Qualquer dúvida fico a disposição.

JEDI (Java Education and Development Initiative), iniciativa para desenvolvimento e educação JAVA a distância.


JEDI (Java Education and Development Initiative), iniciativa para desenvolvimento e educação JAVA a distância.
aqui o link para inscricoes no maior site de
educação da linguagem JAVA trata tudo muito bem disponibiliza video-aulas apostilas de todo conteudo tratam exemplos utilizando a plataforma netbeans exelente pra quem sabe um pouco esta desatualizado e querendo a voltar a programar aew vai o link do
curso gratuito de JAVA:

http://www.dfjug.org/DFJUG/jedi/index.jsp


Jogo em Java - Jogo da velha

Amigos da tecnologia recentemente terminei um projeto o projeto anteriormente falado em java
estou disponibilizando o link para donwload. O projeto consiste em um Jogo em JAVA, o jogo da velha para dois jogadores existem algumas coisas a serem corrigidas e alguns detalhes que nao foram colocados mas da uma uma boa ideia para implementar utilizando o raciocineo logico.

Cuidados com bateria de notebook


Os amigos amantes dos seus nootbook's devem ter muito cuidado com primeira peça que na maioria das vezes você terá de substituir sera a bateria do seu notebooks, tirando as exceções é claro atensão deve ser redobrada na hora de comprar uma bateria no sentido de que a maioria dos notebooks trabalha com as tensões 14.8 volts, 11.1 volts, 10.8 volts. Antes de adquirir sua bateria substituta você deve cuidar tensão tensão da sua original. Outro ponto a ser acrescentado é que existem muitas baterias que duram mais que originais isso é muito bom, mas por vezes baterias de longa duração podem ter seu tamanho maior que original mudando assim consequentemente mundado a estética do seu notebook. Outro detalhe que faz um grande diferença é que existem inumeras baterias parecidas (por isso não se guia apenas por design ou desenho da bateria igual igual). As baterias de notebook são produtos frágeis e não devem ser expostas ao sol, e devem ser armazenas em locais onde há circulação do ar.

Projeto de JAVA Jogo da velha

Projetando em java um jogo da velha em brave vamos disponibilizar o contéudo para gurizada se maravilhar com que é um início brilhante espero que seja. assim que estiver pronto vou postar aqui sugestões idéias estão abertas achou algum jogo da velha em java para nos alizarmos juntos nos mande para dfpsg3@gmail.com, dúvidas sugestões perguntas implementações aprendizado em conjunto, em java, html para apredizado, c , c++ entre em contato forte abraço até mais.

Compatibilidade Baterias - Battery compatibility

Para todo usuário de produtos que possuem aparelhos, que utilizem algum tipo de bateria é bom estar atento as seguintes informações informações descritas no produto após algumas palavras como REPLACE, MODEL, part number(P/A), o modelo do aparelho do cliente descrito no produto que utiliza a bateria com essas informações e alguns sites confiáveis é possível comprar qualquer bateria com melhor probabilidade acerto.

Infelizmente existem muitos produtos compatíveis que não servem para modelos de aparelhos muitos parecidos ultimamente as empresas fabricantes dos aparelhos que utilizam baterias, criam barreiras para os produtos chamados compatíveis não serem mais utilizados para monopolizar o mercado.

Existem muios sites que ajudam em pesquisas para baterias, o negócio é correr atráz e localizar as informações necessárias para evitar possíveis transtornos.

JAVA Estudo

Um grande desafio para quem inicia, é dificuldade também é criada quando o programador vem de outras linguagens estruturadas, já que orientação a objeto tem um outro conceito.

Eu como programador java tenho dificuldade em seguir os padrões JAVA, devivo ao fato de que vim de um linguagem estruturada concentrada "C" e "C++", claro que se tratando de parametros funções e lógica de programação isso ajudou muito.

Por isso estou postando aqui algumas idéias para me ajudar, e ajudar os outros de um pouco de tudo que eu faço.


Diego Filipe Pedro Santos