<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7434859151131098607</id><updated>2011-11-27T16:09:34.341-08:00</updated><category term='Outros'/><category term='Exemplos'/><category term='SymbianOS'/><category term='Básico'/><category term='Series60'/><title type='text'>Series60 Brasil</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://s60brasil.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://s60brasil.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Leonardo Soares</name><uri>http://www.blogger.com/profile/06153622222644660581</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-Sy-6jE346PI/Tpj1lnP8DyI/AAAAAAAAAMk/vjlVq3jrePs/s1600/49295_100000128181504_8056829_n.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7434859151131098607.post-2457678854989195264</id><published>2008-10-14T14:49:00.000-07:00</published><updated>2008-10-14T15:31:19.157-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Outros'/><category scheme='http://www.blogger.com/atom/ns#' term='SymbianOS'/><title type='text'>Utilizando acelerômetro para estabelecer conexões bluetooth seguras</title><content type='html'>Pesquisadores ingleses desenvolveram uma técnica para se estabelecer conexões bluetooth seguras utilizando o acelerômetro encontrado em alguns aparelhos celulares. A técnica consiste em chacoalhar os aparelhos que desejam se conectar de forma igual, os dados produzidos pelos acelerômetros são comparados e caso sigam o mesmo padrão a conexão é estabelecida.&lt;br /&gt;&lt;br /&gt;Um vídeo demonstrando a técnica pode ser visto em:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=ktJC0S4_X58"&gt;http://www.youtube.com/watch?v=ktJC0S4_X58&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mais informações podem ser encontradas em:&lt;br /&gt;&lt;br /&gt;http://technology.newscientist.com/article/dn12912&lt;br /&gt;http://eis.comp.lancs.ac.uk/fileadmin/eis/publication/2007-ShakeImp.pdf&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7434859151131098607-2457678854989195264?l=s60brasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s60brasil.blogspot.com/feeds/2457678854989195264/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7434859151131098607&amp;postID=2457678854989195264' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/2457678854989195264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/2457678854989195264'/><link rel='alternate' type='text/html' href='http://s60brasil.blogspot.com/2008/10/utilizando-acelermetro-para-estabelecer.html' title='Utilizando acelerômetro para estabelecer conexões bluetooth seguras'/><author><name>Leonardo Soares</name><uri>http://www.blogger.com/profile/06153622222644660581</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-Sy-6jE346PI/Tpj1lnP8DyI/AAAAAAAAAMk/vjlVq3jrePs/s1600/49295_100000128181504_8056829_n.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7434859151131098607.post-62905438833072400</id><published>2008-10-03T14:29:00.000-07:00</published><updated>2008-10-09T18:42:47.057-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SymbianOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Series60'/><title type='text'>De volta a ativa... com novidades!</title><content type='html'>Passado algum tempo sem postar devido a falta de tempo por conta de projetos na faculdade e pessoais, resolvi finalmente reativar o blog. Mesmo não estando presente no blog, neste tempo que fiquei ausente continuei trabalhando com a Series60, mais precisamente com OpenGL ES e PythonS60 (em um futuro próximo irei postar informações interessantes sobre os dois).&lt;br /&gt;&lt;br /&gt;O retorno do blog coincide com o anúncio do tão esperado Nokia 5800 XpressMusic. Como anúnciado pelos mais variados sites de notícias, ontem, quinta-feira (02/10/2008) a Nokia entrou na briga com a Apple (fabricante do iPhone) ao anunciar o lançamento de seu serviço digital de músicas, o "Comes with music" (que chega para competir com o iTunes) e  o smartphone Nokia 5800 XpressMusic (que de certa forma será um concorrente ao iPhone). Por enquanto não irei me pronunciar a respeito destes lançamentos, irei esperar sua chegada ao mercado e alguns reviews para ter uma opnição mais concreta, mas acredito que esteja surgindo um novo segmento de trabalho da Nokia.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://oglobo.globo.com/fotos/2008/10/02/02_MHB_tec_nokia5800.jpg"&gt;&lt;img style="cursor: pointer; width: 320px;" src="http://oglobo.globo.com/fotos/2008/10/02/02_MHB_tec_nokia5800.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Nokia 5800 XpressMusic&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;A parte do lançamento do Nokia 5800 foi anunciado a nova versão da Series60. Isto sim foi o que mais chamou a atenção. O Series60 5º edição é baseado no Symbian OS 9.4, que possui melhoras em seu gerenciamento de memória, devido principalmente a utilização da paginação de memória (introduzida no Symbian 9.3). Um ponto a enfatizar é a interface com usuário, aparentemente optimizada para resoluções maiores e entrada de dados através de toque, o que me leva a deduzir que uma série de smartphones touchscreen estão para serem lançados brevemente.&lt;br /&gt;&lt;br /&gt;Outro destaque ficou por conta da introdução da biblioteca Open C++, finalmente vemos um suporte as APIs padrões do C++ como STL e Boost. Fica a questão, seria este o primeiro passo para padronização do Symbian C++? Bem... veremos :).&lt;br /&gt;&lt;br /&gt;Por fim, vale lembrar que o Nokia 5800 XpressMusic não é o primeiro dispositivo touchscreen da Nokia, que já trabalha a algum tempo com internet tablets touch-screen, apesar destes representarem outro segmento de mercado. Me parece que a Nokia demorou um pouco a entrar no mercado de smartphone touchscreens, diferente de outras empresas como LG, HTC, etc. Resta agora esperar e ver como o mercado irá reagir.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7434859151131098607-62905438833072400?l=s60brasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s60brasil.blogspot.com/feeds/62905438833072400/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7434859151131098607&amp;postID=62905438833072400' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/62905438833072400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/62905438833072400'/><link rel='alternate' type='text/html' href='http://s60brasil.blogspot.com/2008/10/de-volta-ativa-com-novidades.html' title='De volta a ativa... com novidades!'/><author><name>Leonardo Soares</name><uri>http://www.blogger.com/profile/06153622222644660581</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-Sy-6jE346PI/Tpj1lnP8DyI/AAAAAAAAAMk/vjlVq3jrePs/s1600/49295_100000128181504_8056829_n.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7434859151131098607.post-4520200429965937531</id><published>2007-10-08T10:38:00.000-07:00</published><updated>2007-10-08T11:49:08.777-07:00</updated><title type='text'>Recuperando um ponteiro para class Document</title><content type='html'>Muitas vezes quando utilizamos o padrão &lt;i&gt;Model-View-Controller&lt;/i&gt; (que espero falar aqui no futuro) , precisamos acessar dados contidos na nossa classe Document. &lt;p&gt;Para fazer isto precisamos de um &lt;b&gt;ponteiro&lt;/b&gt; que aponte para o objeto desta classe. Podemos recuperar esta referência através de um método da classe &lt;b&gt;CEikAppUi&lt;/b&gt; chamado Document(). Este método retorna um ponteiro genérico do tipo CEikDocument. Para poder utilizar os métodos da nossa classe document precisaremos da um &lt;b&gt;cast&lt;/b&gt; da &lt;b&gt;classe base&lt;/b&gt; CEikDocument para a nossa classe CMeuDocumento (por exemplo). &lt;/p&gt;&lt;p&gt;Para ilustrar melhor a relação entre as classes aqui está um &lt;b&gt;diagrama de classes&lt;/b&gt;. Para a nossa classe Document temos:&lt;/p&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vr_Pklhri54/Rwp5RTrjbvI/AAAAAAAAAFA/w07IrVT1yYU/s1600-h/diagramaumldocument.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_vr_Pklhri54/Rwp5RTrjbvI/AAAAAAAAAFA/w07IrVT1yYU/s320/diagramaumldocument.JPG" alt="" id="BLOGGER_PHOTO_ID_5119037264707677938" border="0" /&gt;&lt;/a&gt;Não está explicíto, mas por estas classes começarem com a letra C, sabemos que são &lt;b&gt;derivadas&lt;/b&gt; de CBase.&lt;/p&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Recuperando a referência da nossa classe Document dentro de AppUi&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Classes AppUi são em geral derivadas de &lt;b&gt;CAknAppUi&lt;/b&gt; (caso não implemente views) ou &lt;b&gt;CAknViewAppUi&lt;/b&gt; (caso a aplicação trabalhe com views). Na relação de hierarquia elas &lt;b&gt;herdam&lt;/b&gt; o método Document() de CEikAppUi. Considerando que você precise do ponteiro para Document &lt;b&gt;dentro&lt;/b&gt; de sua classe &lt;b&gt;AppUi&lt;/b&gt;, basta apenas chamar o método Document(), dando o devido cast.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;Exemplo:&lt;/span&gt;&lt;br /&gt;&lt;pre class="cpp"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;// Cast para da classe base para a classe filho.&lt;/span&gt;&lt;br /&gt;CMeuDocumento* documento = static_cast&lt;cmeudocument*&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;Document&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;// Chamando um método qualquer.&lt;/span&gt;&lt;br /&gt;documento-&gt;MinhaFuncao&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;;&lt;/cmeudocument*&gt;&lt;/span&gt;&lt;/pre&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vr_Pklhri54/Rwp6hjrjbwI/AAAAAAAAAFI/jsUqtv3cE_c/s1600-h/diagramaumlappui.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_vr_Pklhri54/Rwp6hjrjbwI/AAAAAAAAAFI/jsUqtv3cE_c/s320/diagramaumlappui.JPG" alt="" id="BLOGGER_PHOTO_ID_5119038643392179970" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Recuperando a referência para a nossa classe document dentro do container&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Classes derivadas de CCoeControl possuem um &lt;b&gt;atributo membro iCoeEnv&lt;/b&gt;, que é um ponteiro do tipo CCoeEnv. Esta classe possui um método AppUi() que retorna um ponteiro do tipo &lt;b&gt;CCoeAppUi&lt;/b&gt;, iremos utilizar este ponteiro para chamar o método Document() de CEikAppUi. Como vemos no diagrama de classes ao lado, CCoeAppUi não possui o método Document() implementado (ele está implementado em CEikAppUi , filha de CCoeAppUi), tereremos então quer dar um cast para a classe AppUi de nossa aplicação para poder acessar este método.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Exemplo:&lt;/span&gt;&lt;br /&gt;&lt;pre class="cpp"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;// Conversão do tipo CCoeAppUi para CMeuAppUi.&lt;/span&gt;&lt;br /&gt;CMeuAppUi* appUi = static_cast&lt;cmeuappui*&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;iCoeEnv-&gt;AppUi&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;// Conversão do tipo CEikDocument para CMeuDocumento.&lt;/span&gt;&lt;br /&gt;CMeuDocumento* documento = static_cast&lt;cmeudocumento*&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;appUi-&gt;Document&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;// Chamando um método qualquer.&lt;/span&gt;&lt;br /&gt;documento-&gt;MinhaFuncao&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;;&lt;/pre&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Referências&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Developing Series 60 Applications: A Guide for Symbian OS C++ Developers (cap. 4)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7434859151131098607-4520200429965937531?l=s60brasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s60brasil.blogspot.com/feeds/4520200429965937531/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7434859151131098607&amp;postID=4520200429965937531' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/4520200429965937531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/4520200429965937531'/><link rel='alternate' type='text/html' href='http://s60brasil.blogspot.com/2007/10/recuperando-um-ponteiro-para-class.html' title='Recuperando um ponteiro para class Document'/><author><name>Leonardo Soares</name><uri>http://www.blogger.com/profile/06153622222644660581</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-Sy-6jE346PI/Tpj1lnP8DyI/AAAAAAAAAMk/vjlVq3jrePs/s1600/49295_100000128181504_8056829_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_vr_Pklhri54/Rwp5RTrjbvI/AAAAAAAAAFA/w07IrVT1yYU/s72-c/diagramaumldocument.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7434859151131098607.post-1814875062176037128</id><published>2007-10-03T08:36:00.000-07:00</published><updated>2007-10-03T11:06:15.399-07:00</updated><title type='text'>Utilizando classes Singleton no SymbianOS</title><content type='html'>Sigleton é um padrão de projeto definido no Livro &lt;cite style="font-style: normal;"&gt;&lt;i&gt;Design Patterns&lt;/i&gt;: Elements of Reusable Object-Oriented Software. Este padrão diz que para uma determinada classe apenas uma única instância deve existir por todo o programa.&lt;br /&gt;&lt;br /&gt;Em C++ padrão a forma mais simples de se criar uma classe Singleton é utilizar um ponteiro estático e um método estático. Em SymbianOS isto funciona para EXE mas não para DLL*. Pois este ponteiro estático é considerado como um &lt;/cite&gt;&lt;cite style="font-style: normal;"&gt;&lt;a href="http://wiki.forum.nokia.com/index.php/Writeable_Static_Data"&gt;Writable Static Data&lt;/a&gt; (variável global que existe durante toda a vida do processo), e isto não é permitido para DLLs.&lt;/cite&gt;&lt;br /&gt;&lt;cite style="font-style: normal;"&gt;&lt;br /&gt;Para fazer a criação de singletons temos duas possibilidades, utilizar a classe base CCoeStatic , ou utilizar Thread Local Storage (TLS). Até o momento nunca utilizei TLS então irei focar na utilização da classe CCoeStatic. A principal desvantagem na utilização de CCoeStatic é que você não pode utiliza-lo em aplicações baseadas em console (sem User Interface).&lt;br /&gt;&lt;br /&gt;A lógica utilizada será bem parecida com o singleton em C++ padrão, a diferença é que não iremos utilizar um ponteiro estático. Iremos precisar criar um UID único para a classe (único dentro da aplicação), ele será utilizado para identificar de qual classe iremos obter a instância, caso esteja trabalhando com várias classes Singleton.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Arquivo: ExemploSingleton.h&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt; * Exemplo de criação de classes Singleton utilizando CCoeStatic.&lt;br /&gt; * Autor: Leonardo Soares e Silva&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;#include &lt;coemain.h&gt; // Cabeçalho de CCoeStatic.&lt;br /&gt;&lt;br /&gt;class CExemploSingleton : public CCoeStatic&lt;br /&gt;{&lt;br /&gt;   public:&lt;br /&gt;       /* Retorna uma instância desta classe.&lt;br /&gt;         * Na primeira vez que este método for chamado ele fará a criação da instância.&lt;br /&gt;         * Em chamadas subsequentes será retornada esta instância.&lt;br /&gt;         */&lt;br /&gt;       static CExemploSingleton* InstanceL();&lt;br /&gt;       ~CExemploSingleton();&lt;br /&gt;   private:&lt;br /&gt;       /* Construtor precisa ser privado para evitar que outras classes a instancie diretamente.*/&lt;br /&gt;       CExemploSingleton();&lt;br /&gt;       /* Construtor de segunda-fase caso precise realizar alguma operação que possa abandonar */&lt;br /&gt;       void ConstructL();&lt;br /&gt;};&lt;br /&gt;&lt;/coemain.h&gt;&lt;/cite&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Arquivo: ExemploSingleton.cpp&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;#include "ExemploSingleton.h"&lt;br /&gt;&lt;br /&gt;/* UID definido para a classe CExemploSingleton.&lt;br /&gt;* Este UID precisa ser único para esta classe dentro da aplicação.&lt;br /&gt;*/&lt;br /&gt;const TUid KUidClasseSingleton = { 1 };&lt;br /&gt;&lt;br /&gt;/* Construção da classe.&lt;br /&gt;* Passamos para CCoeStatic a UID da classe e prioridade de destruição da instância.&lt;br /&gt;*/&lt;br /&gt;CExemploSingleton::CExemploSingleton() : CCoeStatic( KUidClasseSingleton, EDefaultDestructionPriority )&lt;br /&gt;{&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;CExemploSingleton::~CExemploSingleton()&lt;br /&gt;{&lt;br /&gt;   // Não implementado.&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;CExemploSingleton* CExemploSingleton::InstanceL()&lt;br /&gt;{&lt;br /&gt;   CExemploSingleton* instancia = static_cast&lt;cexemplosingleton*&gt;&lt;br /&gt;                     ( CCoeEnv::Static( KUidClasseSingleton ) );&lt;br /&gt;   /* Somente entrará neste if na primeira chamada a InstanceL();&lt;br /&gt;    * Chamadas subsequentes a este método retornarâo esta instância.&lt;br /&gt;    */&lt;br /&gt;   if( !instancia )&lt;br /&gt;   {&lt;br /&gt;       instancia = new (ELeave) CExemploSingleton();&lt;br /&gt;       /* Adiciona o ponteiro ao CleanupStack para garatir que está referência não será perdida caso ConstructL abandone.*/&lt;br /&gt;       CleanupStack::PushL( instancia );&lt;br /&gt;       /* Chamada ao construtor de segunda-fase */&lt;br /&gt;       instacia-&gt;ConstructL();&lt;br /&gt;       /* Após chamar métodos que possam abandonar , liberar da pilha */&lt;br /&gt;       CleanupStack::Pop( instancia );&lt;br /&gt;   }  &lt;br /&gt; &lt;br /&gt;   return instancia;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void CExemploSingleton::ConstructL();&lt;br /&gt;{&lt;br /&gt;   // Não implementado&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;O código por si só é bastante fácil de compreender. Como disse anteriormente basta fazer chamadas ao método InstanceL() para receber a referência da classe Singleton. Na primeira chamada será alocado o ponteiro e nas outras será apenas retornado a instância. Algo que vale ressaltar é a construção da classe:&lt;br /&gt;&lt;br /&gt;CExemploSingleton::CExemploSingleton() : CCoeStatic( KUidClasseSingleton, EDefaultDestructionPriority )&lt;br /&gt;{&lt;br /&gt; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Passamos através do contrutor para CCoeStatic dois argumentos. Uma das definições do construtor de CCoeStatic é:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;CCoeStatic(TUid aUid, TInt aDestructionPriority, TScope aScope=EThread);&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Onde:&lt;br /&gt;&lt;br /&gt;aUid = Uid da classe singleton.&lt;br /&gt;aDestructionPriority = Define com que prioridade a instância será destruída. Quanto maior este valor , mais cedo o objeto será destruído. Valores positivos fazem com que o objeto seja destruído antes de CCoeAppUi enquanto valores negativos fazem com que o objeto seja destruído após CCoeAppUi.&lt;br /&gt;aScope = Define para quem o objeto estará  acessível. Por definição é para o Thread da aplicação.&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;* = A partir da versão 8.1 passou a ser suportado.&lt;br /&gt; &lt;code&gt;&lt;/code&gt;&lt;/cexemplosingleton*&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7434859151131098607-1814875062176037128?l=s60brasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s60brasil.blogspot.com/feeds/1814875062176037128/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7434859151131098607&amp;postID=1814875062176037128' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/1814875062176037128'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/1814875062176037128'/><link rel='alternate' type='text/html' href='http://s60brasil.blogspot.com/2007/10/utilizando-classes-singleton-no.html' title='Utilizando classes Singleton no SymbianOS'/><author><name>Leonardo Soares</name><uri>http://www.blogger.com/profile/06153622222644660581</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-Sy-6jE346PI/Tpj1lnP8DyI/AAAAAAAAAMk/vjlVq3jrePs/s1600/49295_100000128181504_8056829_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7434859151131098607.post-2163435007242722747</id><published>2007-08-04T17:13:00.000-07:00</published><updated>2007-08-15T07:12:41.683-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SymbianOS'/><title type='text'>Tipos básicos em Symbian</title><content type='html'>&lt;span style="font-family:lucida grande;"&gt;&lt;/span&gt;&lt;code&gt;&lt;span style=";font-family:georgia;font-size:130%;"  &gt;&lt;/span&gt;&lt;span&gt;Opa, antes de começar a falar sobre tipos de variáveis em SymbianOS preciso explicar o porquê estou ausente do blog. Primeiro por que estava de férias e no tempo livre estava engajado em um projeto pessoal de desenvolvimento de um pequeno jogo clone do snake da Nokia (concluído, depois posto o source, funciona legal no emulador mas não funcionou no meu N95 e não tive tempo de verificar o porquê até por que não poderei depura-lo on-device já que minha versão do Carbide é a express), segundo que com as aulas começando e com retorno do projeto fiquei sem tempo de postar mas vou tentar sempre que possível postar algo interessante aqui.&lt;br /&gt;&lt;br /&gt;Ok, vamos ao que interessa...&lt;br /&gt;&lt;br /&gt;Se você não conhece os tipos básicos utilizados em SymbianOS considere a leitura do artigo &lt;a href="http://wiki.forum.nokia.com/index.php/Tipos_b%C3%A1sicos"&gt;Tipos Básicos&lt;/a&gt; no Nokia Wiki. Estas mudanças TInt, TUint, TReal, etc são apenas typedefs dos tipos padrões de C/C++ mas devem ser utilizados pois é assim que o compilador irá interpretá-los. O que gostaria de dizer neste post se refere mais a eficiência na programação.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Tipos Inteiros&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sintaxe:&lt;br /&gt;&lt;br /&gt;typedef signed int TInt;&lt;br /&gt;&lt;br /&gt;O SymbianOS permite que programadores utilizem tipos inteiros de 8, 16, 32 ou 64 bits, porém segundo o próprio site www.symbian.com é recomendável a utilização do tipo TInt sempre que possível. Isto pode ser explicado por motivos simples, o SymbianOS trabalha em cima da arquitetura ARM e nessa arquitetura o tamanho da palavra é de 32bits. Quando você utiliza inteiros (TInt16 e TInt32) com tamanho menor que esta palavra ela terá que ser então "modificada" para o tamanho da palavra que a arquitetura utiliza&lt;br /&gt;&lt;br /&gt;Nota: TInt8 na verdade é um typedef do tipo char e TInt32 é um typedef do tipo long int.&lt;br /&gt;&lt;br /&gt;Por isso a utilização de inteiros com tamanhos definidos deve ser utilizada quando a precisão no tamanho dos dados é necessária, em outros casos aconselha-se utilizar TInt.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Tipos flutuantes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;O uso de tipos flutuantes deve ser evitado sempre que possível pois a maioria dos dispositivos em que o SymbianOS trabalha não dá suporte a operações de ponto flutuantes em hardware, ficando assim sua performance comprometida seriamente.&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7434859151131098607-2163435007242722747?l=s60brasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s60brasil.blogspot.com/feeds/2163435007242722747/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7434859151131098607&amp;postID=2163435007242722747' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/2163435007242722747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/2163435007242722747'/><link rel='alternate' type='text/html' href='http://s60brasil.blogspot.com/2007/08/tipos-bsicos-em-symbian.html' title='Tipos básicos em Symbian'/><author><name>Leonardo Soares</name><uri>http://www.blogger.com/profile/06153622222644660581</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-Sy-6jE346PI/Tpj1lnP8DyI/AAAAAAAAAMk/vjlVq3jrePs/s1600/49295_100000128181504_8056829_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7434859151131098607.post-6462880161479537936</id><published>2007-07-02T13:51:00.000-07:00</published><updated>2007-07-02T14:37:12.979-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Básico'/><title type='text'>Gerência de memória e recursos</title><content type='html'>Bem, seria meio redundante eu postar os mesmos artigos que já postei na Nokia Wiki aqui. Então para evitar isto e para criar o costume de se utilizar a Wiki resolvi fazer algumas referências aqui a artigos encontrados lá. Como o sistema de busca dele não é um dos melhores às vezes você não encontra tudo que procura, talvez isso possa ajudar.&lt;br /&gt;&lt;br /&gt;O post de hoje será em relação a gerência de memória e recursos. Quando se programa para um dispositivo que possui tantos recursos limitados como um celular é preciso ter cuidado para não disperdiçar nada. A um tempo atrás os celulares eram reduzidos apenas a capacidade de realizar e receber chamadas. Hoje celulares como o N93, N95, N800 apresentam recursos como aceleração 3D e processadores mais robustos como o ARM11 que opera a 300MHZ mas mesmo assim ainda são muito limitados.&lt;br /&gt;&lt;br /&gt;Começando por este &lt;a href="http://wiki.forum.nokia.com/index.php/Ger%C3%AAncia_de_mem%C3%B3ria"&gt;artigo&lt;/a&gt; onde é arbodado os conceitos básicos de stack , heap, exceções (abandonos ou leaves em Symbian), pilha de limpeza entre outros. Gostaria de dar ênfase para a construção em duas fases e para pilha de limpeza.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.forum.nokia.com/index.php/Pilha_de_limpeza_-_Cleanup_Stack"&gt;Pilha de limpeza&lt;/a&gt; e &lt;a href="http://wiki.forum.nokia.com/index.php/Construtor_em_2_fases"&gt;Construção em duas fases&lt;/a&gt; são melhores abordados nesses links.&lt;br /&gt;&lt;br /&gt;Para finalizar, algumas regras na gestão de recursos que procuram minimizar estes desperdícios podem ser encontras neste &lt;a href="http://wiki.forum.nokia.com/index.php/Brechas_na_mem%C3%B3ria"&gt;link&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="http://wiki.forum.nokia.com/index.php/Construtor_em_2_fases"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7434859151131098607-6462880161479537936?l=s60brasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s60brasil.blogspot.com/feeds/6462880161479537936/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7434859151131098607&amp;postID=6462880161479537936' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/6462880161479537936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/6462880161479537936'/><link rel='alternate' type='text/html' href='http://s60brasil.blogspot.com/2007/07/gerncia-de-memria-e-recursos.html' title='Gerência de memória e recursos'/><author><name>Leonardo Soares</name><uri>http://www.blogger.com/profile/06153622222644660581</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-Sy-6jE346PI/Tpj1lnP8DyI/AAAAAAAAAMk/vjlVq3jrePs/s1600/49295_100000128181504_8056829_n.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7434859151131098607.post-6488165764821138154</id><published>2007-07-01T18:30:00.000-07:00</published><updated>2007-07-01T18:38:39.149-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Básico'/><title type='text'>Códigos de erros</title><content type='html'>Ao ocorrer um erro durante a execução de uma aplicação é exibido o porquê deste erro ter acontecido. Podemos chamar isto de "Códigos de erros" e conhecê-los é importante para solucioná-los. Escrevi este artigo para o Nokia Wiki PT comentando sobre cada um dos erros e como corrigí-los e apesar de ainda incompleto cobre os erros mais comuns, caso conheça mais erros não esqueça de contribuir! ;)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.forum.nokia.com/index.php/C%C3%B3digos_de_erros"&gt;Link para o artigo aqui!&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Caso queira verificar a lista completa de erros ela pode ser encontrada na documentação do SDK do Symbian, &lt;a href="http://www.symbian.com/developer/techlib/v70sdocs/doc_source/reference/SystemPanics/index.html"&gt;link aqui!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7434859151131098607-6488165764821138154?l=s60brasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s60brasil.blogspot.com/feeds/6488165764821138154/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7434859151131098607&amp;postID=6488165764821138154' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/6488165764821138154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/6488165764821138154'/><link rel='alternate' type='text/html' href='http://s60brasil.blogspot.com/2007/07/cdigos-de-erros.html' title='Códigos de erros'/><author><name>Leonardo Soares</name><uri>http://www.blogger.com/profile/06153622222644660581</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-Sy-6jE346PI/Tpj1lnP8DyI/AAAAAAAAAMk/vjlVq3jrePs/s1600/49295_100000128181504_8056829_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7434859151131098607.post-6341585054686167104</id><published>2007-06-25T07:41:00.000-07:00</published><updated>2007-06-25T14:18:33.885-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Básico'/><title type='text'>Iniciando o desenvolvimento de  aplicações para Symbian.</title><content type='html'>Este artigo: &lt;a href="http://wiki.forum.nokia.com/index.php/Comen%C3%A7ando_a_programar_para_dispositivos_m%C3%B3veis" title="Començando a programar para dispositivos móveis"&gt;Començando a programar para dispositivos móveis&lt;/a&gt; resume de forma clara e objetiva como iniciar o desenvolvimento de aplicações para Symbian. Não apenas fazendo a introdução nas possibilidades de programação para Symbian mas aborda quais são os conhecimentos necessários para isso, dando uma visão geral desde lógica de programação até os passos necessários para "meter a mão na massa". São referenciado também alguns cursos de universidades sobre estes temas e também contem uma seção que fala sobre alguns materiais para leitura, como sites, livros, forums, etc.&lt;br /&gt;&lt;br /&gt;Com certeza uma boa pedida!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7434859151131098607-6341585054686167104?l=s60brasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s60brasil.blogspot.com/feeds/6341585054686167104/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7434859151131098607&amp;postID=6341585054686167104' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/6341585054686167104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/6341585054686167104'/><link rel='alternate' type='text/html' href='http://s60brasil.blogspot.com/2007/06/iniciando-o-desenvolvimento-de-aplicaes.html' title='Iniciando o desenvolvimento de  aplicações para Symbian.'/><author><name>Leonardo Soares</name><uri>http://www.blogger.com/profile/06153622222644660581</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-Sy-6jE346PI/Tpj1lnP8DyI/AAAAAAAAAMk/vjlVq3jrePs/s1600/49295_100000128181504_8056829_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7434859151131098607.post-7362411028476188553</id><published>2007-06-20T17:14:00.000-07:00</published><updated>2007-06-20T19:00:12.652-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Básico'/><title type='text'>Trabalhando com Bitmaps</title><content type='html'>Esse foi um dos meus maiores problemas quando comecei a programar em Symbian. Como usar bitmaps em minhas aplicações?! A falta de material didático dificulta para qualquer pessoa mas nada que um pouco de leitura e pesquisa não resolva.&lt;br /&gt;&lt;br /&gt;O SymbianOS não utiliza o formato nativo de Bitmaps por questões de recursos, é preciso convertê-los para &lt;span style="font-weight: bold;"&gt;multibitmaps (.mbm)&lt;/span&gt;. Até onde sei existem duas formas de realizar a conversão, uma é através do arquivo de projeto (.mmp) e a outra é utilizando um aplicativo que vem com o Kit SDK do Symbian chamado de &lt;span style="font-weight: bold;"&gt;bmconv&lt;/span&gt;. Ao converter um bitmap são gerado dois arquivos, o .mbm e um .mbg, nesse .mbg fica a enumeração com os IDs das imagens, escrevi mais detalhadamente sobre como realizar essa conversão no wiki da nokia e você pode ler &lt;a href="http://wiki.forum.nokia.com/index.php/Convertendo_bitmaps_para_utilizar_no_symbian"&gt;aqui!&lt;/a&gt;. Não entrarei em detalhes aqui pois todas essas informações estão na wiki!&lt;br /&gt;&lt;br /&gt;Para utilizar bitmaps é preciso criar uma instância da classe CFbsBitmaps e carregar o bitmap. Mais informações sobre essa classe podem ser encontradas &lt;a href="http://www.symbian.com/Developer/techlib/v70sdocs/doc_source/reference/cpp/Bitmaps/CFbsBitmapClass.html"&gt;aqui!&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PS&lt;/span&gt;: é preciso incluir o cabeçalho fbs.h,  linkar a biblioteca fbscli.lib e incluir o arquivo .mbg referente aos bitmaps.&lt;br /&gt;&lt;br /&gt;Após criar uma instância CFbsBitmap é preciso alocar memória para ela e então carregar a imagem, isto pode ser feito no ConstructL() do AppView da aplicação. ex.:&lt;br /&gt;&lt;br /&gt;//alocando memória utilizando o operador new sobrecarregado&lt;br /&gt;iBitmap = new (ELeave) CFbsBitmap;&lt;br /&gt;iBitmap-&gt;Load(_L("\\Apps\\imagem.mbm"), EMbmImagemTeste);&lt;br /&gt;&lt;br /&gt;Dentro da função Draw iremos usar a função BitBlt(&lt;code&gt;const TPoint &amp;aPos, const CFbsBitmap *aDevice)&lt;/code&gt; da classe CWindowGc para exibir a imagem para o usuário ex.:&lt;br /&gt;&lt;br /&gt;//exibe o bitmap na origem&lt;br /&gt;gc.BitBlt(TPoint(0,0), iBitmap);&lt;br /&gt;&lt;br /&gt;Você pode também utilizar a função DrawBitmap que associa o bitmap a um retângulo. ex.:&lt;br /&gt;&lt;br /&gt;TRect retangulo(Tsize(40,40), TPoint(0,0);&lt;br /&gt;gc.DrawBitmap(retangulo, iBitmap);&lt;br /&gt;&lt;br /&gt;Pronto, procurei ser o mais objetivo possível por que isso não é difícil, meu principal problema foi a ocorrência de erros por não ter linkado a bilioteca fbscli.lib (na versão 1.1 do Carbide era um pouco mais complicado), mas fora isso não tive problemas. Você pode encontrar um exemplo pronto na wiki da nokia. Link &lt;a href="http://wiki.forum.nokia.com/index.php/Utilizar_bitmaps_em_suas_aplica%C3%A7%C3%B5es"&gt;aqui!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7434859151131098607-7362411028476188553?l=s60brasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s60brasil.blogspot.com/feeds/7362411028476188553/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7434859151131098607&amp;postID=7362411028476188553' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/7362411028476188553'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/7362411028476188553'/><link rel='alternate' type='text/html' href='http://s60brasil.blogspot.com/2007/06/trabalhando-com-bitmaps.html' title='Trabalhando com Bitmaps'/><author><name>Leonardo Soares</name><uri>http://www.blogger.com/profile/06153622222644660581</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-Sy-6jE346PI/Tpj1lnP8DyI/AAAAAAAAAMk/vjlVq3jrePs/s1600/49295_100000128181504_8056829_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7434859151131098607.post-3567156943855050900</id><published>2007-06-18T09:49:00.000-07:00</published><updated>2007-06-23T10:25:25.351-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Exemplos'/><title type='text'>Gerando números aleatórios</title><content type='html'>Ontem estava programando e tive a necessidade de gerar uma sequência de números aleatórios. Logo pensei no srand ou então em criar minha própria função para isso. Para não re-inventar a roda resolvi dar uma pesquisada sobre a existência da função rand para Symbian e a encontrei na biblioteca de funções matemáticas E32Math.h (inclusive vale a pena checar o documento sobre as funções dessa biblioteca &lt;a href="http://www.symbian.com/developer/techlib/v70sdocs/doc_source/reference/cpp/mathsservices/MathClass.html"&gt;Link aqui!&lt;/a&gt;), de fato encontrei outra função rand, na verdade as dos &lt;a href="http://www.symbian.com/developer/techlib/v8.1adocs/doc_source/reference/reference-cpp/N102CE/randFunction.html"&gt;padrões C&lt;/a&gt; , mas preferi fazer uso da biblioteca matemática.&lt;br /&gt;&lt;br /&gt;Para quem já utilizou essa função no C/C++ sabe que a melhor forma de se gerar um número aleatório é baseado na hora do sistema, em Symbian não será diferente. Iremos utilizar a classe TTime para pegar a hora do sistema, essa hora será convertida para um inteiro64 e então passada como argumento na função Math::Rand(&lt;code&gt;TInt64&amp; aSeed&lt;/code&gt;); Para gerar vários números aleatórios basta fazer várias chamadas a essa função e passando como argumento sempre o mesmo Seed. Você não deve mudar isto! Vamos ao exemplo:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;== MinhaApliacacaoAppView.h ==&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="color: rgb(102, 0, 0); font-weight: bold;"&gt;class&lt;/span&gt; CMinhaAplicacaoAppView : &lt;span style="color: rgb(102, 0, 0); font-weight: bold;"&gt;public&lt;/span&gt; CCoeControl&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;         &lt;span style="color: rgb(102, 0, 0); font-weight: bold;"&gt;    private:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;                       &lt;span style="color: rgb(0, 153, 0);"&gt;    //inteiro que será utilizado para gerar os números aleatórios&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;                      &lt;span style="color: rgb(51, 102, 255);"&gt;    TInt64&lt;/span&gt; iSeed;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;         &lt;span style="color: rgb(102, 0, 0); font-weight: bold;"&gt;    public:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;                      &lt;span style="color: rgb(51, 51, 255);"&gt;    TInt&lt;/span&gt; GerarNumeroAleatorio();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;};&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;== MinhaApliacacaoAppView.cpp==&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;span style="color: rgb(102, 0, 0);"&gt;#include&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;"MinhaApliacacaoAppView.h"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;#include  &lt;span style="color: rgb(51, 51, 255);"&gt;E32Math.h&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 51, 255);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);"&gt;//(OBS: adicione &lt; &gt; entre E32Math.h , o blog não me permite fazer isto)&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;e32math.h&gt;&lt;/e32math.h&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;&lt;e32math.h&gt;&lt;/e32math.h&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;&lt;span style="color: rgb(153, 51, 0); font-weight: bold;"&gt;void&lt;/span&gt; CMinhaApliacaoAppView::&lt;span style="color: rgb(51, 255, 255);"&gt;ConstructL&lt;/span&gt;()&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;{&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;        &lt;span style="color: rgb(0, 153, 0);"&gt;    //instancia da classe TTime&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;        &lt;span style="color: rgb(51, 51, 255);"&gt;    TTime&lt;/span&gt; tempo;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;        &lt;span style="color: rgb(0, 153, 0);"&gt;    //Recebendo a hora do sistema&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;    tempo.HomeTime();&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;      &lt;span style="color: rgb(0, 153, 0);"&gt;    //Convertendo para inteiro&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;    iSeed = tempo.Int64();&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:100%;"  &gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre class="cpp"  style="font-family:arial;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;TInt&lt;/span&gt; CMinhaApliacacaoAppView::&lt;span style="color: rgb(0, 238, 255);"&gt;GerarNumeroAleatorio&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt; //Gerando número aleatorio de 0 à 100&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt; TInt&lt;/span&gt; numeroAleatorio = Math::&lt;span style="color: rgb(0, 0, 221);"&gt;Rand&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;iSeed&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;%&lt;span style="color: rgb(0, 0, 221);"&gt;101&lt;/span&gt;;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255); font-weight: bold;"&gt; return&lt;/span&gt; numeroAleatorio;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;Ehhhhhh, ok está sem identação mas é que não existe um padrão para postar código de programação aqui! (pelo menos não que eu conheça)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7434859151131098607-3567156943855050900?l=s60brasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s60brasil.blogspot.com/feeds/3567156943855050900/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7434859151131098607&amp;postID=3567156943855050900' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/3567156943855050900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/3567156943855050900'/><link rel='alternate' type='text/html' href='http://s60brasil.blogspot.com/2007/06/gerando-nmeros-aleatrios.html' title='Gerando números aleatórios'/><author><name>Leonardo Soares</name><uri>http://www.blogger.com/profile/06153622222644660581</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-Sy-6jE346PI/Tpj1lnP8DyI/AAAAAAAAAMk/vjlVq3jrePs/s1600/49295_100000128181504_8056829_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7434859151131098607.post-5683688421895365802</id><published>2007-06-10T10:28:00.000-07:00</published><updated>2007-06-18T07:44:56.757-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SymbianOS'/><title type='text'>Possibilidades de desenvolvimento para Symbian</title><content type='html'>Do C++ ao Flashlite, passando por Lua, Perl, Python, JavaME entre outros. Essas são as possibilidades de desenvolvimento para Symbian*. Cada uma com suas vantagens, Python e FlashLite vem ganhando um espaço cada vez maior principalmente do JavaMe. Por sua popularidade o FlashLite (que realmente aplica o conceito de "Write once, run anywhere") promete ganhar cada vez mais espaço nesse mercado de dispositivos móveis. Seja por sua facilidade de programação, grande quantidade de APIS prontas ou pelo número crescente de programadores. Python também se apresenta como uma alternativa robusta, com acesso a diversos dispositivos do celular como bluetooth, infra-vermelho, câmera etc, e ainda com a vantagem de poder se programar direto no celular. No outro extremo encontramos o Symbian C/C++ que sem dúvidas é a linguagem mais poderosa atualmente, possui acesso a vários (praticamente todos) os dispositivos do celular, diversas APIs já prontas, sem contar que seu desempenho é bastante superior se comparado ao JavaME. Apesar de ser mais complexa que as outras suas vantagens superam estes problemas.&lt;br /&gt;&lt;br /&gt;Mas então qual linguagen utilizar? Como em qualquer sistema operacional isto depende das necessidades do projeto, para jogos menos complexos eu iria de FlashLite, pela sua portabilidade  e pela sua facilidade de desenvolvimento. Para aplicações mais robustas eu iria de Pyhton ou Symbian C/C++. Na minha opnião depende também qual público alvo deseja-se atingir, não podemos esquecer que praticamente todos os aparelhos móveis (de smartphones a celulares mais simples) rodam aplicações Java. Então como disse anteriormente, tudo depende das necessidades do projeto.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;* - Depende da versão do Symbian, por exemplo, lua está dispônivel apenas a partir da S60 2º edição.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7434859151131098607-5683688421895365802?l=s60brasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s60brasil.blogspot.com/feeds/5683688421895365802/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7434859151131098607&amp;postID=5683688421895365802' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/5683688421895365802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/5683688421895365802'/><link rel='alternate' type='text/html' href='http://s60brasil.blogspot.com/2007/06/possibilidades-de-desenvolvimento-para.html' title='Possibilidades de desenvolvimento para Symbian'/><author><name>Leonardo Soares</name><uri>http://www.blogger.com/profile/06153622222644660581</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-Sy-6jE346PI/Tpj1lnP8DyI/AAAAAAAAAMk/vjlVq3jrePs/s1600/49295_100000128181504_8056829_n.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7434859151131098607.post-4522489542851241687</id><published>2007-06-08T11:37:00.000-07:00</published><updated>2007-06-18T07:45:40.205-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Básico'/><category scheme='http://www.blogger.com/atom/ns#' term='SymbianOS'/><category scheme='http://www.blogger.com/atom/ns#' term='Series60'/><title type='text'>Desenvolvendo para Symbian C++</title><content type='html'>O Symbian C++ foi baseado nos padrões C/C++, porém foram feitas algumas mudanças para optmizar o código para um dispostivo com recursos limitados como o smartphone. Algumas mudanças podem ser encontradas nos tipos das variáveis, forma na qual as exceções são tratadas entre outras. Criarei em breve um post para tratar com mais calma sobre assunto. O desenvolvimento de aplicações para Symbian C++ pode ser feito no Carbide C++,  MetroWerks CodeWarrior ou Visual Studio .NET. Irei entrar em detalhes apenas sobe o Carbide C++ por ser uma IDE gratuíta.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Carbide C++:&lt;/span&gt; Foi desenvolvido pela Nokia e baseado no Eclipse , ofecere uma IDE e compilador necessários para o desenvolvimento de aplicações em Symbian C++. Sua versão express é gratuíta e suficiente para estudos e/ou desenvolvimento de aplicações menores.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Downloads necessários:&lt;/span&gt; &lt;a href="http://forum.nokia.com/main/resources/tools_and_sdks/carbide_cpp/index.html"&gt;Carbide C++ 1.2&lt;/a&gt; , &lt;a href="http://downloads.activestate.com/ActivePerl/Windows/5.6/ActivePerl-5.6.1.635-MSWin32-x86.msi"&gt;Active Perl5.6&lt;/a&gt; (Precisa ser o 5.6, outras versões podem não funcionar), &lt;a href="http://www.forum.nokia.com/info/sw.nokia.com/id/4a7149a5-95a5-4726-913a-3c6f21eb65a5/S60-SDK-0616-3.0-mr.html"&gt;SDK para desenvolvimento&lt;/a&gt; (faça o download da SDK referente a qual plataforma você vai desenvolver, s603rd , s602nd ou s601st).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Atenção:&lt;/span&gt; Se você usa WindowsXP é aconselhável que se instale o SP2.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Atenção 2:&lt;/span&gt; Não consegui rodar o emulador do carbide antes de instalar o drive da minha Geforce, o drive padrão do windows não funcionou. Caso seu emulador abra e feche logo em seguida talvez seja peciso atualizar o drive da sua placa de vídeo para o drive original.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;1) Passo&lt;/span&gt; - Faça a instalação do Active Perl, use o diretório padrão.&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;2) Passo&lt;/span&gt; - Instale a SDK (lembre-se o diretório não pode conter espaços, utilize &lt;span style="font-weight: bold;"&gt;_&lt;/span&gt; ao invés).&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;3) Passo&lt;/span&gt; - Instale o Carbide C++. Após instalar basta ir em File-&gt;New-&gt;Projetct... , escolha Symbian Os e então escolha qual template você vai programar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7434859151131098607-4522489542851241687?l=s60brasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s60brasil.blogspot.com/feeds/4522489542851241687/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7434859151131098607&amp;postID=4522489542851241687' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/4522489542851241687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/4522489542851241687'/><link rel='alternate' type='text/html' href='http://s60brasil.blogspot.com/2007/06/desenvolvendo-para-symbian-c.html' title='Desenvolvendo para Symbian C++'/><author><name>Leonardo Soares</name><uri>http://www.blogger.com/profile/06153622222644660581</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-Sy-6jE346PI/Tpj1lnP8DyI/AAAAAAAAAMk/vjlVq3jrePs/s1600/49295_100000128181504_8056829_n.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7434859151131098607.post-1418814772169437141</id><published>2007-06-06T16:02:00.000-07:00</published><updated>2007-06-18T07:45:57.583-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Outros'/><title type='text'>May contributions contest e Wiki Contributor of the Month</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vr_Pklhri54/RmcN6nTMfuI/AAAAAAAAAAM/AtRj6Zjx2gU/s1600-h/N95.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_vr_Pklhri54/RmcN6nTMfuI/AAAAAAAAAAM/AtRj6Zjx2gU/s320/N95.jpg" alt="" id="BLOGGER_PHOTO_ID_5073038805889220322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;A Nokia valoriza muito aquelas pessoas que procuram ajudar novos desenvolvedores. Seja no Forum ou no Nokia-Wiki, e durante o mês de maio realizou uma competição para escolher cinco pessoas que mais contriburiram para o crescimento do Wiki, seja com artigos, exemplos de códigos, "how-to" , etc. Os vencedores ganhariam nada mais nada menos que um smartphone N95 (Para quem não conhece, este é o mais novo lançamento da Nokia, e contêm funções como GPS, VoIP, WI-FI, Câmera 5MP entre outras muitas funções), para minha surpresa, ontem recebi a notícia que fui um dos escolhidos assim como também ganhei o prêmio de Wiki Contributor of the month, que premia aqueles  que contribuiram para o cresimento da Wiki durante o mês. Fiquei muito surpreso, a algum tempo atrás havia resolvido criar e traduzir alguns artigos para o português, o objetivo principal era de criar conteúdo em português para Symbian (já que não existe), então a medida que ia me aprofundando nos meus estudos eu ia criando artigos (isso também me ajudou pois fixava o conteúdo). Juntamente com a notícia do prêmio, tive a felicidade de ver o lançamento da versão &lt;a href="http://wiki.forum.nokia.com/index.php/Category:Lang-PT"&gt;Português do Nokia-Wiki&lt;/a&gt; , por esses reconhecimentos fui indicado para o Forum Nokia Champions que destaca os desenvolvedores por suas contribuições, assim como uma série de outros bônus.&lt;br /&gt;&lt;br /&gt;Até o momento a wiki conta com 39 artigos, indo do básico até o intermediário, conta com artigos desde como instalar o kit de desenvolvimento para S603rd até gerência de logs. Espero que esses artigos sejam úteis e ajudem novos desenvolvedores, procurei focar pontos onde tive os maiores problemas ou que eram de mais difícil aprendizado. Não se esqueçam de fazer as suas contribuições, pois a base de tudo é a cooperatividade.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7434859151131098607-1418814772169437141?l=s60brasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s60brasil.blogspot.com/feeds/1418814772169437141/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7434859151131098607&amp;postID=1418814772169437141' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/1418814772169437141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/1418814772169437141'/><link rel='alternate' type='text/html' href='http://s60brasil.blogspot.com/2007/06/may-contributions-contest-e-wiki.html' title='May contributions contest e Wiki Contributor of the Month'/><author><name>Leonardo Soares</name><uri>http://www.blogger.com/profile/06153622222644660581</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-Sy-6jE346PI/Tpj1lnP8DyI/AAAAAAAAAMk/vjlVq3jrePs/s1600/49295_100000128181504_8056829_n.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_vr_Pklhri54/RmcN6nTMfuI/AAAAAAAAAAM/AtRj6Zjx2gU/s72-c/N95.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7434859151131098607.post-4067624719673040962</id><published>2007-06-06T16:00:00.000-07:00</published><updated>2007-06-18T07:46:09.678-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Outros'/><title type='text'>Primeira mensagem.</title><content type='html'>Como primeira mensagem, vou falar um pouco sobre os motivos para a criação deste blog. A comunidade de desenvolvedores para Series60 no Brasil é mínima assim como o conteúdo em português (smartphone não é tão popular como em países da europa, asia e américa do norte), então resolvi dar minha contribuição. Pensei primeiramente em criar um portal com um forum em portuguÊs mas recebi a notícia de que o Forum da nokia em breve lançará uma seção para desenvolvedores que falam português, então resolvi criar este blog para postar novidades sobre S60 assim como algumas dicas/tutoriais a medidada que eu for me aprofundando nos estudos. Atualmente estou fazendo parte de um grupo de pesquisa na minha faculdade relacioado ao desenvolvimento e pesquisa de aplicativos para dispositivos móveis, mais precisamente para SmartPhones utilizando Symbian C++. Orientados pela professora Cledja Rolim &lt;a href="http://www.cefet-al.br/"&gt;(Cefet-Al)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7434859151131098607-4067624719673040962?l=s60brasil.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://s60brasil.blogspot.com/feeds/4067624719673040962/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7434859151131098607&amp;postID=4067624719673040962' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/4067624719673040962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7434859151131098607/posts/default/4067624719673040962'/><link rel='alternate' type='text/html' href='http://s60brasil.blogspot.com/2007/06/primeira-mensagem.html' title='Primeira mensagem.'/><author><name>Leonardo Soares</name><uri>http://www.blogger.com/profile/06153622222644660581</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://1.bp.blogspot.com/-Sy-6jE346PI/Tpj1lnP8DyI/AAAAAAAAAMk/vjlVq3jrePs/s1600/49295_100000128181504_8056829_n.jpg'/></author><thr:total>1</thr:total></entry></feed>
