<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Lorem ipsum sit dolor amet. Hello World. White and Nerdy. That’s what you will find here.
pedrohfranceschi@gmail.com</description><title>Pedro Franceschi</title><generator>Tumblr (3.0; @pedrofranceschi)</generator><link>http://pedrofranceschi.com/</link><item><title>Projeto novo: Quasar</title><description>&lt;p&gt;Nos últimos dois meses estive trabalhando em quase total segredo num projeto novo para iPads jailbroken. Mais precisamente, estava trabalhando no meu maior projeto (até o momento) para iOS.&lt;/p&gt;
&lt;p&gt;Ele se chama Quasar e é um gerenciador de janelas para iPad. É isso mesmo: com ele você pode rodar suas aplicações em janelas, assim como fazemos num sistema operacional de Desktop! É possível redimensionar, mover, fechar e colocar em full-screen uma janela.&lt;/p&gt;
&lt;p&gt;É muito mais fácil vê-lo em ação do que tentar ficar descrevendo-o, então aqui segue uma vídeo-demonstração:&lt;/p&gt;
&lt;p&gt;&lt;iframe frameborder="0" height="315" src="http://www.youtube.com/embed/7cYWha8YFi8" width="560"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;E algumas screenshots dele rodando:&lt;/p&gt;
&lt;div align="center"&gt;
&lt;p&gt;&lt;a href="http://img99.imageshack.us/img99/4938/img0029y.png" target="_blank"&gt;&lt;img height="384" src="http://img99.imageshack.us/img99/4938/img0029y.png" width="512"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://img94.imageshack.us/img94/7621/img0030jy.png" target="_blank"&gt;&lt;img height="384" src="http://img94.imageshack.us/img94/7621/img0030jy.png" width="512"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;O Quasar está disponível na Cydia Store por US$9.99, compra lá! :)&lt;/p&gt;</description><link>http://pedrofranceschi.com/post/21983522915</link><guid>http://pedrofranceschi.com/post/21983522915</guid><pubDate>Sat, 28 Apr 2012 12:18:03 -0400</pubDate><category>Projeto novo</category><category>quasar</category><category>jailbreak</category><category>cydia store</category></item><item><title>Inter-process communication in iOS.</title><description>&lt;p&gt;Almost any modern operating system has a kernel-based inter-process communication (IPC) interface. That&amp;#8217;s not different in Apple&amp;#8217;s iOS. IPCing is useful when tweaking around, mainly to integrate SpringBoard and other processes that are running simultaneously.&lt;/p&gt;
&lt;p&gt;Fortunately, Apple provides &lt;em&gt;CPDistributedMessagingCenter&lt;/em&gt;, that is a high-level wrapper to Darwin&amp;#8217;s kernel-based IPC. It is a private wrapper that acts behind the scenes of a big part of iOS.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;CPDistributedMessagingCenter&lt;/em&gt; works with a server/client interface. The server receives calls for a registered notification, and the client sends the notifications with an optional userInfo &lt;em&gt;NSDictionary&lt;/em&gt;. Here are some examples:&lt;/p&gt;
&lt;p&gt;Client (send notifications):&lt;/p&gt;
&lt;div class="gist"&gt;&lt;a href="https://gist.github.com/2322190"&gt;https://gist.github.com/2322190&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Server (receive notifications):&lt;/p&gt;
&lt;div class="gist"&gt;&lt;a href="https://gist.github.com/2322157"&gt;https://gist.github.com/2322157&lt;/a&gt;&lt;/div&gt;</description><link>http://pedrofranceschi.com/post/20604197112</link><guid>http://pedrofranceschi.com/post/20604197112</guid><pubDate>Fri, 06 Apr 2012 15:25:43 -0400</pubDate><category>technical</category><category>objective-c</category><category>tweaking</category></item><item><title>Siri em Português no iPhone 4S</title><description>&lt;p&gt;&lt;img height="480" src="http://p.twimg.com/Ah7L5cwCAAAda3m.jpg:large" width="320"/&gt;&lt;/p&gt;
&lt;p&gt;Então a Apple lançou o Siri, o fantástico assistente de voz do iPhone 4S, mas mais uma vez esqueceu dos brasileiros. Conversando com alguns amigos, inclusive gringos, sobre a viabilidade de fazer um port do Siri para Português, a maioria achou que seria difícil, ou até impossível, visto que a Apple colocou bastante protocolos de comunicação em cima do Siri, para garantir a velocidade nos reconhecimentos. E muitos desses protocolos são privados.&lt;/p&gt;
&lt;p&gt;Até que na terça-feira a noite, me veio uma idéia. O aplicativo Dragon Dictation, da Nuance, faz reconhecimento de voz, e muito bem feito, por sinal, do Português brasiliero. Por que então não temos o Siri na nossa língua? Talvez devido a uma questão burocrática, talvez devido a falta de agilidade da Apple Brasil, talvez ambos.&lt;/p&gt;
&lt;p&gt;Então surgiu a questão: como fazer o Siri detectar áudio em Português, usando como base o reconhecimento de voz do Dragon Dictation?&lt;/p&gt;
&lt;p&gt;Todo o trabalho do Siri em Português foi feito usando o &lt;a href="https://github.com/plamoni/SiriProxy"&gt;SiriProxy&lt;/a&gt;, excelente proxy para o Siri desenvolvido pelo usuário &lt;strong&gt;plamoni&lt;/strong&gt;, em Ruby, que redireciona todo o tráfego dos servidores do Siri para o seu computador, permitindo assim, modificá-lo. Mas antes de tudo, precisava conseguir transformar o áudio que o Siri envia para os servidores da Apple em um arquivo de áudio convencional.&lt;/p&gt;
&lt;p&gt;Descobri que o áudio é enviado utilizando diversos codecs diferentes para otimizar o tamanho. Consegui transformar todos os bytes enviados para a Apple num arquivo de áudio, mas faltava um comando do ffmpeg ainda para poder torná-lo audível. Com a ajuda do &lt;a href="http://twitter.com/micaelsilva"&gt;Micael Silva&lt;/a&gt;, mestre do ffmpeg ( :P ), consegui fazer isso, e aqui ficam meus agradecimentos a ele! :)&lt;/p&gt;
&lt;p&gt;Com o arquivo de áudio que o Siri envia para o servidor, &amp;#8220;só&amp;#8221; faltava reconhecer o conteúdo dele. Para isso, precisava reverter a API do Dragon Dictation. Liguei o Wireshark, mas devido ao HTTPS utilizado na comunicação, ele não me ajudou muito. Até que o&lt;a href="http://twitter.com/amagus"&gt;@amagus&lt;/a&gt; me deu a idéia de decompilar a API do Dragon Dictation em Java e entender o protocolo, e aqui ficam meus agradecimentos a ele também por essa ideia! :)&lt;/p&gt;
&lt;p&gt;Porém, mesmo entendendo a comunicação, ainda passei uma madrugada com problemas de reconhecimento por parte da Nuance. Faltava um certificado de segurança, único para cada aparelho. Mas no final, consegui obter a resposta do significado do áudio.&lt;/p&gt;
&lt;p&gt;Com isso, bastava traduzir o áudio para inglês, regravá-lo em inglês, e enviar para a Apple. Mas ainda assim, nem sempre o áudio regravado em inglês, com a API de Text-&amp;gt;Speech do Mac OS X, tinha um conteúdo aceitável pela Nuance (muitas vezes o áudio era incompreensível para o reconhecimento de voz).&lt;/p&gt;
&lt;p&gt;Então foi necessário usar um pouco de matemática para isso. Primeiro eu gravava o áudio em inglês usando várias variáveis diferentes (velocidade, pitch, etc). Depois, rodava um algoritmo que eu bolei, baseado nas anotações abaixo, para comparar os padrões e calcular quais deles são estatisticamente mais confiáveis.&lt;/p&gt;
&lt;p&gt;Basicamente, o algoritmo pega o sinal de áudio, aplica a &lt;a href="http://pt.wikipedia.org/wiki/Transformada_de_Fourier"&gt;Transformada de Fourier&lt;/a&gt;, faz uma ordenação progressiva das &lt;a href="http://pt.wikipedia.org/wiki/S%C3%A9rie_harm%C3%B4nica_(m%C3%BAsica)"&gt;séries harmônicas&lt;/a&gt; e compara dois sinais utilizando o método da &lt;a href="http://en.wikipedia.org/wiki/Cosine_similarity"&gt;similaridade do cosseno em dimensão-N&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img height="768" src="http://p.twimg.com/AhOp3_CCEAAdEGn.jpg:large" width="1024"/&gt;&lt;/p&gt;
&lt;p&gt;Sabendo o áudio mais confiável, bastava enviar o novo áudio, agora gravado em inglês, para a Apple, e enviar o resultado para o aparelho, simulando uma requisição normal do Siri.&lt;/p&gt;
&lt;p&gt;O resultado é esse:&lt;/p&gt;
&lt;p&gt;&lt;iframe frameborder="0" height="315" src="http://www.youtube.com/embed/jMMN5keGNXU" width="560"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;O hack, no momento, não tem como ser disponibilizado para o público por questões técnicas. Existem umas 10 integrações com diferentes APIs e modelos matemáticos para obter esse resultado, e é muito difícil encontrar uma forma de disponibilizar isso no momento.&lt;/p&gt;
&lt;p&gt;Porém, assim que o Jailbreak do iPhone 4S estiver disponível, trabalharei arduamente para fazer o Siri em Português brasileiro funcionar no iPhone 4S, não dependendo assim da Apple para isso! :)&lt;/p&gt;</description><link>http://pedrofranceschi.com/post/15040124592</link><guid>http://pedrofranceschi.com/post/15040124592</guid><pubDate>Fri, 30 Dec 2011 15:03:00 -0500</pubDate><category>siri</category><category>iphone 4s</category><category>projeto</category><category>Projeto novo</category></item><item><title>Projeto novo: FaceTrash</title><description>&lt;p&gt;De uns tempos pra cá o Facebook vem se tornando mais uma filial do &lt;a href="http://9gag.com/"&gt;9gag.com&lt;/a&gt; do que uma rede social. As pessoas só postam memes engraçadinhos, piadinhas e coisas do gênero. E isso vem irritando muita gente que acredita que o Facebook é uma rede social. Ponto. Se eu quero ver rage comics, entro no 9gag, se eu quero saber como estão meus amigos, entro no Facebook. E essa diferença tem cada vez mais sumido.&lt;/p&gt;
&lt;p&gt;Inspirado pelo &lt;a href="http://hbdia.com/wordpress/retardados/esculhambacao-no-facebook/"&gt;post&lt;/a&gt; de sucesso que o amigo &lt;a href="http://www.twitter.com/izzynobre"&gt;Izzy Nobre&lt;/a&gt; fez no &lt;a href="http://hbdia.com/"&gt;Hoje é Um Bom Dia&lt;/a&gt;, resolvi deixar de ficar sentado assistindo a tudo isso e resolvi fazer alguma coisa. E foi no que eu trabalhei na última madrugada: o FaceTrash.&lt;/p&gt;
&lt;p&gt;O FaceTrash é um bookmarklet em Javascript que se acopla a interface web do Facebook e elimina grande parte dos posts envolvendo rage comics, 9gag, Jo Suado, Risos no Face, Melhores do Mundo e afins. Dessa forma, você pode focar no que interessa: os seus amigos.&lt;/p&gt;
&lt;p&gt;O algoritmo por trás dele procura por padrões nos nomes dos usuários e no conteúdo dos posts. Depois de encontrar esses possíveis posts detestáveis, o script pergunta se o usuário quer excluí-los da página, marcando os posts em vermelho. Então é possível confirmar a ação, removendo os posts da sua página, ou então cancelá-la, fazendo voltar ao Facebook normal.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://www.picvalley.net/u/2037/96342568212669562621322787269YoYgFM07dJti0Dicubxh.PNG"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img height="545" src="http://img37.imageshack.us/img37/4640/capturadetela20111201s2.png" width="725"/&gt;&lt;/p&gt;
&lt;p&gt;Para instalar o FaceTrash no seu browser, basta arrastar o link abaixo para o menu de bookmarklets.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="javascript:var%20ft%20=%20document.createElement(%27script%27);ft.type%20=%20%27text/javascript%27;ft.src%20=%20%27http://iblogeek.com/facetrash/facetrash.js%27;document.body.appendChild(ft);"&gt;FaceTrash&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Aproveite e ajude a combater essa praga do Facebook ensinando aos seus amigos como limpar o Facebook também.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Observações:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;O FaceTrash não coleta nenhum tipo de conteúdo do seu Facebook. Ele roda somente no seu browser, e nada sai dele.&lt;/li&gt;
&lt;li&gt;Ele não é perfeito. É impossível de detectar certos tipos de conteúdo (como por exemplo uma rage comic que o usuário faz o upload da imagem, logo, não tem nenhum padrão de número de shares/conteúdo)&lt;/li&gt;
&lt;li&gt;O FaceTrash é melhorado o tempo todo. O script foi desenvolvido de forma que possa ser atualizado remotamente, de forma que a medida que eu encontrar novas formas de bloquear conteúdos indesejáveis, a sua &amp;#8220;instalação&amp;#8221; do FaceTrash já vai conter essa melhoria sem que você faça nada :)&lt;/li&gt;
&lt;/ul&gt;</description><link>http://pedrofranceschi.com/post/13607436635</link><guid>http://pedrofranceschi.com/post/13607436635</guid><pubDate>Thu, 01 Dec 2011 18:13:00 -0500</pubDate><category>projeto</category><category>Projeto novo</category><category>facetrash</category><category>facebook</category></item><item><title>Projeto novo: PhyScroll</title><description>&lt;p&gt;Nas últimas semanas desenvolvi um novo projeto para o iPhone, iPod touch e iPad chamado PhyScroll. O PhyScroll é um tweak para iOS que permite ao usuário dar scroll em qualquer aplicativo usando o acelerômetro do aparelho (inclinando-o) ou através dos botões de volume.&lt;/p&gt;
&lt;p&gt;É complicado fazer uma descrição exata de como ele funciona, então nada melhor do que uma vídeo-demonstração:&lt;/p&gt;
&lt;p&gt;&lt;iframe frameborder="0" height="360" src="http://www.youtube.com/embed/gjfA2TfePPs" width="640"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;O PhyScroll está disponível na Cydia Store por US$1,99. Compra lá! :)&lt;/p&gt;</description><link>http://pedrofranceschi.com/post/13253367294</link><guid>http://pedrofranceschi.com/post/13253367294</guid><pubDate>Thu, 24 Nov 2011 09:53:14 -0500</pubDate><category>projeto</category><category>projeto novo</category><category>physcroll</category></item><item><title>Projeto novo: iUsers</title><description>&lt;p&gt;Um grande problema que os usuários de iPad enfrentam é a falta de um sistema multi-usuários nele. O iOS não suporta nativamente esse tipo de coisa, por razões que a Apple não especifica.&lt;/p&gt;
&lt;p&gt;Entretanto, durante os últimos meses, procurei criar uma solução multi-usuários para o iPad. O resultado você pode ver no vídeo abaixo:&lt;/p&gt;
&lt;p&gt;&lt;iframe width="640" height="390" src="http://www.youtube.com/embed/Tq8sjcOdAsc" frameborder="0"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;O sistema funciona efetuando cópias de arquivos do Filesystem do iOS, além de algumas modificações internas do sistema para manter os dados internos dos aplicativos nativos e os baixados da App Store.&lt;/p&gt;
&lt;p&gt;O que é mantido para cada usuário são os dados de aplicativos e as preferências do iPad. O que não é mantido são arquivos como músicas e vídeos sincronizados pelo iTunes, mas estou trabalhando num update para que isso seja suportado.&lt;/p&gt;
&lt;p&gt;Para quem quiser testar, adicione o repositório (source) &lt;a href="http://cydia.iblogeek.com/"&gt;http://cydia.iblogeek.com/&lt;/a&gt; enquanto o pessoal que gerencia o Cydia não libera o pacote oficialmente para que todos o tenham sem precisar adicionar nenhum source.&lt;/p&gt;
&lt;p&gt;Espero que gostem.&lt;/p&gt;</description><link>http://pedrofranceschi.com/post/7616118126</link><guid>http://pedrofranceschi.com/post/7616118126</guid><pubDate>Thu, 14 Jul 2011 11:59:42 -0400</pubDate></item><item><title>PhySwitch na Cydia Store!</title><description>&lt;p&gt;O &lt;a href="http://pedrofranceschi.com/post/5001940511/projeto-novo-physwitch"&gt;meu projeto novo&lt;/a&gt; (PhySwitch) já está disponível na Cydia Store por US$1.99! Ele funciona em iPhones (3G/3GS/4) e iPod touches (2g, 3g e 4g) no Firmware 4.0 ou superior.&lt;/p&gt;
&lt;p&gt;Confira a vídeo demonstração abaixo:&lt;/p&gt;
&lt;p&gt;&lt;iframe width="640" height="390" src="http://www.youtube.com/embed/lYWAmKJOesU" frameborder="0"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;Compra lá! :)&lt;/p&gt;</description><link>http://pedrofranceschi.com/post/5118998233</link><guid>http://pedrofranceschi.com/post/5118998233</guid><pubDate>Sun, 01 May 2011 21:28:38 -0400</pubDate><category>physwitch</category><category>cydia store</category><category>iphone</category><category>jailbreak</category></item><item><title>Projeto novo: PhySwitch</title><description>&lt;p&gt;Quinta-feira passada comecei o desenvolvimento de um projeto chamado PhySwitch. Achei que seria uma boa ideia ter uma forma rápida de trocar entre vários aplicativos abertos no iPhone. Usar o touchscreen é uma boa ideia, mas ainda acho meio&amp;#8230; digamos&amp;#8230; lento.&lt;/p&gt;
&lt;p&gt;A minha ideia surgiu quando olhei para os botões de volume. Por que não usá-los como uma forma rápida e prática de mudar de aplicativo no iOS? Então eu comecei a desenvolver essa solução.&lt;/p&gt;
&lt;p&gt;Ontem a noite tinha um protótipo razoavelmente funcional. Passei o dia inteiro hoje fora de casa e aproveitei para ir testando a minha solução e anotando os seus bugs. Cheguei em casa hoje e consertei tudo e agora parece que já tenho uma versão funcional.&lt;/p&gt;
&lt;p&gt;Gravei esse vídeo para demonstrar para vocês como ficou:&lt;/p&gt;
&lt;p&gt;&lt;iframe title="YouTube video player" width="640" height="390" src="http://www.youtube.com/embed/lYWAmKJOesU" frameborder="0"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p&gt;O PhySwitch já foi enviado para a Cydia Store e custará US$1.99. Peço que não o pirateiem. A única forma de remunerar o meu trabalho (que não foi pouco, diga-se :P) é simplesmente comprando o tweak legalmente. Além disso, você terá acesso a futuras atualizações, com novas features e implementações :)&lt;/p&gt;
&lt;p&gt;Bom, o objetivo desse post é explicar, basicamente, como funciona o PhySwitch. Como todo tweak, ele modifica uma função do sistema. Para ativar a tela em que os aplicativos abertos são mostrados, eu usei o LibActivator, ou seja, nas Settings do iPhone, você pode escolher como o PhySwitch será aberto. Existem umas 20 possibilidades, como apertar os dois botões de volume ao mesmo tempo ou segurar o botão home por 3 segundos.&lt;/p&gt;
&lt;p&gt;Quando se está dentro da tela de seleção de aplicativo, apertando o botão de volume o aplicativo selecionado mudará para o de cima (ou o de baixo) com uma transição. Vendo o vídeo acima fica mais fácil de entender.&lt;/p&gt;
&lt;p&gt;A ação do botão de volume é modificada somente dentro da tela de seleção de aplicativo do PhySwitch. Fora dela, o volume funciona normalmente, ou seja, nada mudará na sua utilização padrão do iOS. Você só ganhará uma feature (que é muito prática, por sinal).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;[geek mode on] &lt;/strong&gt;Essa modificação da ação padrão do botão de volume é feita hackeando um callback interno do SpringBoard. Assim que o callback é chamado, mandamos uma IPC (Inter-Process Communication) para um outro processo, que roda em um nível mais alto do sistema, notificando-o de que o botão de volume foi pressionado. A partir daí, o processo rodando em um nível mais alto decide a ação a ser tomada (animar o deslizamento da tela para cima ou para baixo, etc), de acordo com a circunstância em que o mesmo é chamado. &lt;strong&gt;[geek mode off]&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A tela em que aparecem os aplicativos abertos é jogada em cima do SpringBoard com um hack bem simples. Para fechá-la, basta apertar o botão Home ou executar a mesma ação configurada com o LibActivator para abrí-la.&lt;/p&gt;
&lt;p&gt;Esse é o básico do projeto, e é o que eu posso revelar enquanto ele ainda não está disponível na Cydia Store. O PhySwitch deve estar &lt;strong&gt;disponível na Cydia Store amanhã a noite&lt;/strong&gt;, então fiquem ligados (eu também anunciarei &lt;a href="http://twitter.com/pedroh96"&gt;no meu Twitter&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;No futuro, pretendo lançar atualizações do PhySwitch com novas features, visando sempre tornar a experiência do usuário a melhor possível. Além disso, dêem sugestões, elas serão sempre muito bem vindas.&lt;/p&gt;
&lt;p&gt;Qualquer dúvida, os comentários estão aí! :)&lt;/p&gt;</description><link>http://pedrofranceschi.com/post/5001940511</link><guid>http://pedrofranceschi.com/post/5001940511</guid><pubDate>Wed, 27 Apr 2011 22:30:13 -0400</pubDate></item><item><title>Designers: I want YOU for my new project!</title><description>&lt;p&gt;Acredito que muitos de vocês que me acompanham no Twitter saibam que eu tenho &lt;strike&gt;uma porrada de&lt;/strike&gt; alguns projetos pessoais. No momento, estou trabalhando num projeto interessante e que tem grandes possibilidades de sucesso.&lt;/p&gt;
&lt;p&gt;Sobre o projeto em si, posso adiantar que é um potencial concorrente a uma ferramenta que é praticamente única no mundo do Jailbreak e que todos os aparelhos jailbrokens tem. Tire suas próprias conclusões sobre o que é o projeto. :P&lt;/p&gt;
&lt;p&gt;Acontece que desenvolvimento não é nada sem uma interface gráfica decente. E é por isso que eu estou escrevendo esse post: &lt;strong&gt;estou a procura de designers para fazerem a parte gráfica do meu projeto novo de iOS&lt;/strong&gt;. Já tenho todos os wireframes prontos. Só preciso de alguém que crie a interface real, de preferência com uma palheta de cores/texturas interessantes.&lt;/p&gt;
&lt;p&gt;Quem tiver interesse, mande o portfolio para &lt;a href="mailto:pedrohfranceschi@gmail.com"&gt;pedrohfranceschi@gmail.com&lt;/a&gt; e eu darei uma resposta oficial.&lt;/p&gt;
&lt;p&gt;Obrigado.&lt;/p&gt;</description><link>http://pedrofranceschi.com/post/4795545539</link><guid>http://pedrofranceschi.com/post/4795545539</guid><pubDate>Wed, 20 Apr 2011 22:54:29 -0400</pubDate><category>projeto novo</category><category>projeto</category><category>design</category><category>iphone</category><category>jailbreak</category></item><item><title>Como perdi a minha madrugada de domingo</title><description>&lt;p&gt;Na madrugada de domingo aconteceu uma das coisas que me deixaram mais putos no mês inteiro. Nesse post, vou relatar minha &lt;strike&gt;filha-da-putice&lt;/strike&gt; raiva a vocês, ok? s/s/ctz&lt;/p&gt;
&lt;p&gt;Sábado a noite cheguei em casa, fui pro Mac, abri o Textmate, botei Daft Punk e AC/DC pra tocar e fui escrever umas linhas de Objective C para o projeto novo (em outro post explico). Tudo normal até aí.&lt;/p&gt;
&lt;p&gt;Deu umas 5 da manhã e eu já tava cansado pra cacete e resolvi (tentar) ir dormir. Eu tenho insônia tensa (sou um pouquinho agitado), então quando eu falo que estou indo dormir, você tem a probabilidade de 1 para 357 de acertar que em meia hora eu estarei dormindo.&lt;/p&gt;
&lt;p&gt;Botei o iPad do lado da cama e fui dormir. Uns 15 minutos depois que deitei, o iPhone começa a tocar. Era o meu sistema de alertas de hostname fora do ar. Quando essa porra toca de noite, um servidor caiu (e o meu coração acelera um pouco).&lt;/p&gt;
&lt;p&gt;Mais cedo nesse mesmo dia, um amigo meu (que tem um blog meio&amp;#8230; grande) que eu monitoro o servidor me avisou que ia fazer uma mudança de MySQL. Era só mudar no Settings do Wordpress para o endereço novo do SQL e já era. Nem me preocupei.&lt;/p&gt;
&lt;p&gt;Acontece que ele é meio n00bz, e acabou pedindo para o pessoal do data center da máquina dedicada fazer a instalação do MySQL na própria máquina. Antigamente, ele tinha um SQL externo em outro IP que era acessado pelo Wordpress, e agora ele queria colocar tudo na mesma máquina (não sei o porquê, mas era o que ele queria :P ).&lt;/p&gt;
&lt;p&gt;10 minutos depois do chamado aberto, me vem o &lt;strong&gt;MACACO TREINADO&lt;/strong&gt; do data center e instala a &lt;strong&gt;porra&lt;/strong&gt; do MySQL &lt;strong&gt;POR CIMA de TODA a instalação em produção&lt;/strong&gt;, OU SEJA, todos os serviços que tinham SQL naquela máquina pararam.&lt;/p&gt;
&lt;p&gt;Emputeci em exatos 42 milésimos de segundo. Na boa, fiquei louco. Ele mandou tudo pro espaço e deve ter pensado algo como:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Porra&amp;#8230; Fim de expediente, madrugada no fim, se der merda nessa instalação aqui, essa pica não vai ser mais minha. O gerente quando chegar que resolva.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;O negócio era que a máquina tinha o MySQL em esquema de master/slave (tipo um cluster) para dividir a carga. Ele mandou 4 configurações de bancos de dados para o espaço e ainda detonou todo o esquema de balanceamento de carga.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Gotta love macacos treinados do suporte técnico da [INSIRA NOME DA EMPRESA DE HOSPEDAGEM DO SERVIDOR AQUI].&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Aí pra baixar o stress que eu já tava, resolvi pegar os meus dois 38 e partir para a escola públi&amp;#8230; OH WAIT! Esse não sou eu! :P&lt;/p&gt;
&lt;p&gt;Fiquei até as 8 da manhã copiando dados do backup das tabelas e voltando para a versão antiga do driver do MySQL server. O pior era que como um dos sites hospedados é gringo, tava mais ou menos no horário de pico dele, então os acessos caíram muito, além do que toda hora que eu subia o Nginx para testar alguma coisa, recebia umas 10 requisições tomando &lt;em&gt;Error establishing a database connection&lt;/em&gt; na cara&amp;#8230;&lt;/p&gt;
&lt;p&gt;Depois da merda consertada, a solução foi fácil: desabilitei o acesso root com senha e agora só loga com certificado RSA. No banco de dados, não tem mais acesso externo, só do IP do servidor pode acessá-lo.&lt;/p&gt;
&lt;p&gt;Moral da história: não tenha senha de root/não dê a senha de root para aquele &amp;#8220;admin&amp;#8221; n00bz que a passará para o suporte do data center. :P&lt;/p&gt;</description><link>http://pedrofranceschi.com/post/4735254728</link><guid>http://pedrofranceschi.com/post/4735254728</guid><pubDate>Mon, 18 Apr 2011 21:52:53 -0400</pubDate><category>servidor</category><category>offline</category><category>mysql</category><category>madrugada</category></item><item><title>Back in Black!</title><description>&lt;p&gt;Olá,&lt;/p&gt;
&lt;p&gt;Depois de quase dois anos parado, estou voltando a ativa na blogosfera com esse blog. Pretendo falar de tudo que eu gosto (Ruby, Node.js, Objective C, tecnologia e geek stuff no geral) com uma certa frequência. Adicione no seu RSS e aguarde pelo (re) início!&lt;/p&gt;
&lt;p&gt;Abraços,&lt;/p&gt;
&lt;p&gt;Pedro Franceschi&lt;/p&gt;</description><link>http://pedrofranceschi.com/post/4723609376</link><guid>http://pedrofranceschi.com/post/4723609376</guid><pubDate>Mon, 18 Apr 2011 14:44:14 -0400</pubDate><category>back in black</category><category>começo</category><category>inicio</category></item><item><title>JavaROFL</title><description>&lt;p&gt;Como me fazer passar mal de rir:&lt;/p&gt;
&lt;p&gt;Java 4-Ever trailler:&lt;/p&gt;

&lt;p&gt;
&lt;object width="640" height="385"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/RHnP5zWTWqc?fs=1&amp;amp;hl=pt_BR"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/RHnP5zWTWqc?fs=1&amp;amp;hl=pt_BR" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;
E Lady Java:&lt;/p&gt;
&lt;p&gt;
&lt;object width="640" height="385"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/Mk3qkQROb_k?fs=1&amp;amp;hl=pt_BR"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/Mk3qkQROb_k?fs=1&amp;amp;hl=pt_BR" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;De nada por te fazer passar mal de rir.&lt;/p&gt;</description><link>http://pedrofranceschi.com/post/1094622187</link><guid>http://pedrofranceschi.com/post/1094622187</guid><pubDate>Thu, 09 Sep 2010 21:21:00 -0400</pubDate></item><item><title>O que aconteceu com o petróleo do Golfo do México (versão White House)</title><description>&lt;p&gt;Quando me mostraram isso hoje, mais cedo, eu não acreditei no que estava vendo. Porra, todo mundo sabe que o governo americano mente &lt;strike&gt;pra caralho&lt;/strike&gt; um pouco, mas dizer isso, é sacanagem com a população (pule para 0:58):&lt;/p&gt;
&lt;p&gt;
&lt;object height="340" width="560"&gt;
&lt;param value="http://www.youtube.com/v/AaFEHs0Y-lk&amp;amp;hl=pt_BR&amp;amp;fs=1" name="movie"&gt;&lt;param value="true" name="allowFullScreen"&gt;&lt;param value="always" name="allowscriptaccess"&gt;&lt;embed height="340" width="560" allowfullscreen="true" allowscriptaccess="always" type="application/x-shockwave-flash" src="http://www.youtube.com/v/AaFEHs0Y-lk&amp;amp;hl=pt_BR&amp;amp;fs=1"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;Eu tive que assistir o vídeo 3 vezes para entender que ela não tava de sacanagem com a minha cara, e que a explicação dos investigadores era que o petróleo havia sido, em sua grande parte, &lt;strong&gt;evaporado&lt;/strong&gt; ou queimado.&lt;/p&gt;
&lt;p&gt;Eu pergunto: desde QUANDO o petróleo evapora no mar? Atenção: eu não estou dizendo que não se possa evaporar o petróleo, até porque é totalmente possível, com altas temperaturas e uma destilação fracionária. O que eu quero dizer, é que ela disse que a parada evaporou &lt;strong&gt;no mar&lt;/strong&gt;, ou seja, em condições normais de temperatura e pressão. Por falar em temperatura, acho que esqueceram que o ponto de ebulição da água é de 100ºC, e o do petróleo, de 360ºC a 600ºC. Acho que as leis da física, nem alguns milhões de obaminhas consegue quebrar. &lt;/p&gt;
&lt;p&gt;Todo mundo aprende na escola que água e óleo não se misturam. Em 1:47, ela diz que mais ou menos 25% do petróleo ou evaporou ou se &lt;strong&gt;dissolveu na água do mar&lt;/strong&gt;. É sério. Assista o vídeo.&lt;/p&gt;
&lt;p&gt;Pelo visto, a única coisa que evaporou foi o bom senso do governo norte-americano e a capacidade de inventar besteiras que parte da população acredita por desinformação ou desatenção.&lt;/p&gt;
&lt;p&gt;LOLWUT!&lt;/p&gt;</description><link>http://pedrofranceschi.com/post/939328591</link><guid>http://pedrofranceschi.com/post/939328591</guid><pubDate>Wed, 11 Aug 2010 19:43:00 -0400</pubDate></item><item><title>JustinBiebernização</title><description>&lt;p&gt;&lt;strong&gt;DISCLAIMER: Tudo que eu vou falar aqui é sobre o que EU penso. Se você gostar, ótimo, se não gostou, foda-se.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Ah, Justin Bieber!.. Quantas vezes essa porra não trendeou lá no &lt;a href="http://www.twitter.com/"&gt;site do passarinho&lt;/a&gt;? Eu diria que o termo &amp;#8220;Justin Bieber&amp;#8221; (ou Bustin Jieber, como quiserem), é um dos termos mais tweetados do ano. E isso é incrível. Em todos os aspectos.&lt;/p&gt;
&lt;p&gt;Pessoalmente, eu não tenho nada contra o Justin Bieber. Mas o que me deixa impressionado é o número de pessoas que são fags loucamente assumidas do cara. Mas até aí tudo bem, né? As pessoas só gostam dele.&lt;/p&gt;
&lt;p&gt;Mas o que é bizarro, é o pessoal que 9&amp;#160;em cada 10 tweets é uma menção ao @justinbieber, respondendo em portoinglês o último tweet do &lt;strike&gt;cantor&lt;/strike&gt; cara. Eu não posso afirmar nada, mas mesmo eu não conhecendo-o, digo que ele é ocupado pra caramba e NÃO vai ler a sua aberração da gramática portuguesa/inglesa. Seu esforço, além de ser inútil, não é único entre os seus 4 milhões de seguidores, acredite.&lt;/p&gt;
&lt;p&gt;O que eu digo, é que as pessoas perdem o bom senso tentando puxar saco de um astro &lt;strike&gt;da música&lt;/strike&gt; que é passageiro, ou você realmente acha que Justin Bieber vai ser pop pra sempre?&lt;/p&gt;
&lt;p&gt;A prova viva de que Justin Bieber vai ser extinto numa velocidade proporcional a forma como ele virou pop, é o High School Musical. Muita gente gostava do negócio, floodava o Twitter alucinadamente com mensagens &amp;#8220;&amp;lt;3 HSM&amp;#8221;, e agora eu te pergunto: &lt;strong&gt;QUANDO&lt;/strong&gt; foi a última vez que você ouviu falar em High School Musical?&lt;/p&gt;
&lt;p&gt;Tudo é passageiro, assim como o Justin Bieber. Isso me faz pensar no que vai ser desse garoto daqui a um ano, ou menos. Essa não é a primeira nem última vez que um pop entra/sai de moda, e tenho certeza que Justin Bieber vai se despopularizar tão rapidamente quanto como popularizou-se.&lt;/p&gt;
&lt;p&gt;Vá fazer outra coisa. Está no tédio? Não mande mensagens em portoinglês para @justinbieber, a troco de nada. Aprenda a programar, escreva uma música, leia um livro. Assim você ganha muito mais, e nunca ficará no tédio, ou seu dinheiro de volta! :P&lt;/p&gt;
&lt;p&gt;Daqui a um ano, eu vou ler isso rindo.&lt;/p&gt;</description><link>http://pedrofranceschi.com/post/894802861</link><guid>http://pedrofranceschi.com/post/894802861</guid><pubDate>Mon, 02 Aug 2010 17:33:00 -0400</pubDate></item><item><title>NerdBoard: esteja a par de tudo que acontece na web</title><description>&lt;p&gt;Comprei no meio do ano passado um kit de eletrônica chamado &lt;a href="http://www.Nerdkits.com/"&gt;NerdKits&lt;/a&gt;. Ele vem com um ATMEGA168, um LCD, e outros componentes. Embora salgado, escolhi esse conjunto porque vem com um LCD e uma biblioteca fácil para interagir com o mesmo, de 4x20 colunas (o tamanho é excelente).&lt;/p&gt;
&lt;p&gt;Eu tenho um Netbook com Hackint0sh que fica parado (porque em casa uso muito mais o iMac), então resolvi usá-lo junto com o ATMEGA168, para criar algo útil e funcional.&lt;/p&gt;
&lt;p&gt;Como um geek assumido, faço questão de estar sempre a par de tudo que está acontecendo no Twitter/Feeds/etc., e acho que foi esse um dos principais motivos para me fazer criar o NerdBoard: saber de tudo que rola na web.&lt;/p&gt;
&lt;p&gt;Na teoria, o NerdBoard teria um LCD, ligado ao ATMEGA168, com alguns LEDs indicadores de status, junto com um piezoeletric (como se fala isso em português) para emitir alguns sons simples, para sinalizar que algo aconteceu/foi atualizado.&lt;/p&gt;
&lt;p&gt;O esquema (mostrando somente o bruto do hardware, sem detalhes dos circuitos :P ) é algo mais ou menos assim:&lt;/p&gt;
&lt;p&gt;&lt;img height="537" width="496" alt="Esquema do NerdBoard" src="http://img409.imageshack.us/img409/8787/nerdboard.png" align="middle"/&gt;&lt;/p&gt;
&lt;p&gt;Dizem que uma imagem vale mais que mil palavras, e um vídeo, então? :P Esse vídeo mostra o funcionamento do NerdBoard:&lt;/p&gt;
&lt;p&gt;
&lt;object width="640" height="385"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/Fd4TD-N6jIo&amp;amp;hl=pt_BR&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/Fd4TD-N6jIo&amp;amp;hl=pt_BR&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Embora simples, bastante gente perguntou no Twitter alguns detalhes técnicos, como as linguagens de programação que usei, o circuito de hardware, e tinha gente até querendo comprar um NerdBoard, mas infelizmente, não posso vender isso porque nem tempo eu tenho para montar os circuitos, etc.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;O código do ATMEGA168 é feito em C e Assembly, o controle remoto pelo iPhone é feito em Objective C/Cocoa Touch, e a parte de atualizar o display e buscar as informações de Twitter/Feed na web, em Ruby. Também tenho uma interface web local feita em Ruby on Rails, que acabei não mostrando no vídeo para não ficar muito longo. A comunicação do iPhone com o Netbook é feita via Sockets criptografados (SHA1 + SSL).&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Estou trabalhando em mais projetos de Hardware + Software (assim como a Apple :P), um passatempo muito divertido. Mesmo. &lt;/p&gt;
&lt;p&gt;Em breve, mais novidades! :)&lt;/p&gt;</description><link>http://pedrofranceschi.com/post/873386831</link><guid>http://pedrofranceschi.com/post/873386831</guid><pubDate>Wed, 28 Jul 2010 22:59:33 -0400</pubDate></item><item><title>"Espere nada, e não consiga nada. Espere alguma coisa, e talvez você tenha sorte."</title><description>“Espere nada, e não consiga nada. Espere alguma coisa, e talvez você tenha sorte.”</description><link>http://pedrofranceschi.com/post/873113044</link><guid>http://pedrofranceschi.com/post/873113044</guid><pubDate>Wed, 28 Jul 2010 21:40:00 -0400</pubDate></item><item><title>All your bases are belong to us</title><description>&lt;p&gt;Hello world. Parece que você está lendo o meu tumblr. Aqui vou postar o que eu bem entender, quando eu bem entender, de onde eu bem entender. Também não vou ter frequência nos posts. Sinta-se em casa :)&lt;/p&gt;</description><link>http://pedrofranceschi.com/post/873104683</link><guid>http://pedrofranceschi.com/post/873104683</guid><pubDate>Wed, 28 Jul 2010 21:37:00 -0400</pubDate><category>hello world</category><category>first post</category></item></channel></rss>

