quinta-feira, 9 de maio de 2013

Xcode 4.6.2 + Montain Lion = Processo git usando 97% da CPU

Reparei que, ao iniciar o Xcode (4.6.2) no Montain Lion, a ventuinha ficava doida e o note começava a ficar lento..

Olhando nos processos, reparei em alguns processos git imortais (eu matava eles e eles voltavam) que consumiam até 97% de processamento.



Achei algumas poucas referencias na net para resolver o problema. Uma delas foi a que deu a melhor dica:

1 - Removi todos os repositórios do organizer:

2 - Removi todos os diretorios .git desses repositórios.

Após isso, reiniciei o SO, abri o Xcode novamente e tudo voltou ao normal! =)

É isso.

Marcadores: , , ,

quinta-feira, 4 de outubro de 2012

Email em Java via SMTP do GMAIL

Para enviar emails via SMTP do GMail em aplicações java, é necessário criar o certificado e importa-lo no keystore.

Bom, para importar o certificado SSL do GMail, executar:

openssl s_client -connect smtp.gmail.com:465

A saída será algo como:

Copiar do trecho 'BEGIN CERTIFICATE' até o trecho 'END CERTIFICATE' (inclusive as linhas) em um arquivo local, por exemplo, gmail.cert. O resultado desse arquivo será algo como:

nano gmail.cert

Agora importar esse arquivo para o keystore, executando o comando:

sudo keytool -import -alias smtp.gmail.com -keystore /etc/ssl/certs/java/cacerts -file gmail.cert

É isso.

Referência: https://confluence.atlassian.com/display/JIRA042/Using+Gmail+as+a+JIRA+Mail+Server

Marcadores: , , , , ,

sexta-feira, 20 de abril de 2012

iOS - Post com parametros, http header e imagem


A app que estou fazendo para iPAD, exige autenticação através de login/senha.

Estou seguindo o pattern de autenticação mobile sugerido pelo Google.

Estava querendo simplificar a forma de fazer POST nas minhas apps iOS (iphone, ipad) - que acho muito código complicado para fazer isso. Então criei a seguinte classe utilitária:
Loading ....

Para usa-la, basta:

//Example:

 NSMutableDictionary* _params = [[NSMutableDictionary alloc] init];
 [_params setValue:@"value1" forKey:@"param1"];
 [_params setValue:@"value2" forKey:@"param2"];

 NSMutableDictionary* _headers = [[NSMutableDictionary alloc] init];
 [_params setValue:@"auth_token" forKey:@"token"];

 NSMutableDictionary* _uiimages = [[NSMutableDictionary alloc] init];
 [_params setValue:_uiimage forKey:@"photo1.jpg"];

NSData* result = [HTTPUtils post:@"http://your.site/and/action/"
                                         params: _params
                                        headers: _headers
                                        images: _uiimages];

É isso.

Marcadores: , , , , ,

quarta-feira, 4 de abril de 2012

iOS5 - Estratégias de autenticação para apps

terça-feira, 6 de março de 2012

Install / Uninstall .NET Windows Service [C#]

This example shows how to install and uninstall a .NET windows service.

Install service using InstallUtil.exe To install or uninstall windows service (which was created using .NET Framework) use utility InstallUtil.exe. This tool can be found in the following path (use appropriate framework version number).

C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil.exe

To install .NET service run command similar to this (specify full path to your service).

InstallUtil.exe "c:\myservice.exe"

To uninstall .NET service use the same command with parameter /u.

InstallUtil.exe /u "c:\myservice.exe"

Fonte: http://www.csharp-examples.net/install-net-service/

Marcadores: , , ,

quarta-feira, 8 de fevereiro de 2012

Intellij11 - SVN Disconnect

No eclipse, a função de disconectar o projeto do SVN é uma opção padrão quando se instala o plugin do SVN.

Mas no Intellij11 não. =\

Felizmente, há um plugin para isso: SVN Disconnect


É só instalar o plugin que estará disponível a opção "SVN Disconnect" no menu VCS.


Mas cuidado: Eu precisava que ele desconectasse do SVN apenas um determinado módulo do projeto. Mas ele desconectou todos os módulos do projeto. =\

É isso.

Marcadores: , , , ,

quarta-feira, 18 de março de 2009

Estou começando a desenvolver! Socorro!

Desenvolver aplicações (seja para web, desktop, mobile etc.), exige uma certa disciplina.

Listo algumas inteligências que acho interessante todo desenvolvedor cultivar.
. Não acho que sejam obrigatórias, mas certamente são muito desejáveis.

Seja autodidata
A maioria das coisas de desenvolvimento q vc vai aprender, será só! Não tem jeito! Lendo algo aqui, conhecendo algo alí, analisando algum algoritmo acolá, etc. Leia desde as bíblias da sua linguagem preferida, a revistas técnicas, blogs, posts em fóruns, artigos etc. e ponha tudo em prática! Mesmo que seja só para acompanhar os exemplos dados! Isso é importante pois facilita a fixação. E, mesmo que vc não decore akela instrução nakele instante, quando vc precisar, existe uma possibilidade maior de vc lembrar que existe algo parecido com o que vc precisa.. Daew basta procurar! ;D "Autodidatismo" deve estar no sangue! (nossa, inventei outra palavra! hauah) :D

Seja curioso


Eu acho que um sentimento interessante em um desenvolvedor é esse de "mas como diabos isso funciona?" Querer ir no fundo! A nossa área é enoooorme, e possibilita muitas e muitas oportunidades! De maneira e formas que vc nem imagina! Nem eu! E isso é uma das belezas da coisa. Mesmo tendo alguns anos de experiência na área, eu posso dizer que eu descubro uma coisa totalmente nova TODOS os dias. E se eu não descubro, é porque eu não procurei, pq, com certeza há algo totalmente novo ali, escondidinho, pronto para ser descoberto. E tem mais: sabe o seu colega que também está aprendendo? Pois é, provavelmente ele já sabe disso! Por isso corra! Não, võe! Ah! E USE O GOOGLE!! É fácil, rápido, simples e com certeza tem o que vc está procurando. Mas aprenda a usar o Google corretamente (isso é importante!). Não adianta perguntar para ele "Onde está a minha alma gêmea!" que ele não vai lhe responder.. (pelo menos não por enquanto! rs..) Não é atoa que ele é o "Pai dos programadores".

Seja insatisfeito


Essa qualidade eu acho muito importante! Mesmo que vc faça algo que vc sabe que está bom e que vc superou as suas próprias espectativas, esteja certo que há uma maneira melhor ou menos onerosa, ou mais otimizada de fazer a mesma coisa! Busque saber (mesmo que não aplique) como é essa maneira! O nosso ramo evolui muito rápido, e o que vc aprende hoje, talvez vc tenha que largar amanhã e aprender outra coisa totalmente diferente. Sendo insatisfeito vc sairá na frente, pois estará sempre se reciclando e aprendendo coisas novas.

Seja humilde


Para mim, uma das piores atitudes que uma pessoa pode tomar, é pensar que sabe tudo! Uma dica: ninguem sabe de tudo! Não trate as pessoas de forma diferente porque ela usa tal tênis, veste tal roupa ou usa determinada técnologia. Eu sentia bastante isso da comunidade Java quanto eu programava em .NET! Hoje, programo Java, entendo todos os argumentos e concordo com a maioria, mesmo assim não é motivo para beltrano olhar siclano de cima para baixo! Somos todos iguais! ;)

Participe da comunidade


Sim, existe uma comunidade na área que vc quer atuar! Se é java, tem o GUJ, o JavaFree, o SouJava e muitas outras. Se é .NET tem o MSDN, o ALT.NET outras tantas.. e por ai vai com Ruby, Python e todas. E é uma ótima idéia ficar antenado nessas comunidades. Vc saberá das novidades, das tendências, do mercado, terá ajuda para suas dúvidas, poderá ajudar nas dúvidas dos outros, compartilhará e agregará conhecimento. Há muitos casos de pessoas na nossa área que se consagraram em comunidades e hoje são referências no mercado! Participe dos fóruns! Leia as notícias! Frequente os eventos! Acesse os sites! Leia os blogs! Logo vc verá o quanto a sua mente abrirá em tão pouco tempo. =D

Seja geek


Pois é, desenvolvimento é no computador! E o que vc fizer pode provavelmente será pro computador, ou pro celular, ou iPod, ou pra geladeira, ou até para uma caneta! Vc tem que gostar desses trecos! Vai ser no computador que vc vai passar a maior parte do seu dia. Imagine vc ficar a maior parte do seu dia preso em algo que vc não suporta? =/

Leia em Inglês

Hoje não há mais desculpas! As informações estão espalhadas na web. Porém, mesmo tendo bastante informação sobre a nossa área em portugues (muitas vezes mal traduzidas), a grande e esmagadora maioria está em Ingles (não, não tenho nenhuma fonte confiável sobre isso. Mas faça um teste: busque no google por "OpenSocial" e depois filtre para "Só páginas em portugues" e note a diferença entre os resultados.. =/). Esse é pré-requisito!

Não se feche em mundinhos!


Hoje eu programo em Java. Java, por sí só, já é um assunto "polvo" com tentaculos e tentaculos que tende a só aumentar mais e mais!! Cada dia que passa, eu tenho a impressão que sei menos! Mesmo assim, eu entendo que Java não é para sempre. Patterns são para sempre. Estrutura de Dados é para sempre. Orientação a Objetos é para sempre. (Bem, se não são para sempre - e realmente não devem ser - acho que tem uma vida útil muito maior que "só" a linguagem Java. rs..). Então, sim, estude a fundo a sua linguagem preferida. Isso fará com que vc utilize todo o poder dessa ferramenta, poupe tempo, esforço e tudo mais! Mas tenha em mente que um dia, ela pode "ficar fora de moda". Porém assuntos abstratos, estruturais e
conceituais vc poderá portar para qualquer outra linguagem no futuro. Um bom Pattern pode ser aplicado em Java, JavaScript, C#, VB, e até em Cobol! XD

Não se apegue (tanto) a IDE'sEssas ferramentinhas de produtividade realmente nos ajudam bastante! Mas não são as IDE que desenvolvem, somos nós! Elas apenas tentam - e as vezes conseguem - nos ajudar a fazer o que nós queremos fazer! Procure se abstrair um pouco delas! Isso nos ajuda a ir mais afundo nos nossos conhecimentos. Não as despreze! Como disse, elas nos ajudam! Mas saiba que existe mundo sem elas... ;D

Não re-invente a roda e estude os conceitos

Sabe, esse problema que vc quer resolver? Pois é, esse mesmo! Certamente alguem já passou por ele. E digo mais: alguem já passou por ele e já bolou uma maneira muito bacana de resolve-lo! Portanto antes de implementar uma idéia genial, pesquise, estude, pergunte! Não é para limar a sua criatividade, não. Mas para alguns problemas, já há algumas receitinhas de bolo prontinhas, que são tão utilizadas e já foram testadas tantas e tantas vezes, que com certeza dará certo. Fora o fato de gerar um vocabulário único entre os desenvolvedores. Ah, e estude profundamente sobre POG's (para aprender como algo NÃO deve ser feito! rs..)

Mude

Todos mudam. O tempo todo! É normal! Melhor: é desejável! Não tenha "aquela velha opinião formada sobre tudo"! Nem se conforme com "verdades absolutas"! Em um caso, determinado conceito pode ser aceito/desejável/aplicável e em outro caso talvez seja melhor utilizar um outro conceito. E o primeiro não necessariamente desmerece o segundo. Aceite isso! Não há bala de pratas no nosso ramo! É tudo uma questão de necessidade. ;D

Tentei abstrair o máximo possível de plataforma, linguagem, etc... Também não é um manifesto fechado! Ajude a incrementa-lo contribuindo com as suas sugestões!! =D

É isso.

Algumas referências interessantes:
http://www.guiadohardware.net/comunidade/aprender-programar/723510/

Marcadores: ,