Jan 20 10

Parsing de IP utilizando PHP+REGEX

escrito por João Pedro Pereira

No meio de época exames/frequências e muito trabalho arranjei um bocado de tempo para colocar aqui o último snippet que escrevi para fazer parsing de um ficheiro que contém uma lista de IP’s e portas onde correm serviços de proxy.
Isto porque ando a experimentar configurações mais avançadas em ferramentas como o proxychains que nas suas configurações exigem um esquema especifico para proxys.

Syntax necessária: http ip porta
Syntax do ficheiro: ip:porta

Snippet

$url = 'http://blackhatbootcamp.net/proxies/data/ultimate_proxies.txt';

	preg_match_all('/[0-9]{1,3}+\.[0-9]{1,3}+\.[0-9]{1,3}+\.[0-9]{1,3}+\:[0-9]{2}/', file_get_contents($url), $matches); 

	$size=sizeof($matches[0]);
	foreach($matches as $var) {
		for($i=0; $i< $size; $i++)
			echo preg_replace('/(\d{1,3}).(\d{1,3}).(\d{1,3}).(\d{1,3}):(\d{2})/', "http $1.$2.$3.$4 $5<br/>", $var[$i]);
	}

Sei que python e PERL têm uma grande capacidade de utilização de REGEX, se andarem por aí conhecedores do assunto podem partilhar os snippets aqui ;)

Jan 16 10

EasterEgg – Windows “God Mode” Console

escrito por João Pedro Pereira

Foi descoberto um Easter Egg no Windows 7 e no Windows Vista 32-bit a que se chamou de “God Mode console” (GMC).

O porquê deste nome? Porque facilita a tarefa a qualquer administrador de sistemas fazer a configuração e manutenção de um computador com instalada uma das versões afectadas. Pois coloca numa só “pasta” a possibilidade de alterar todas as definições do Windows sem ser necessário andar a navegar em dezenas de menus como acontece nos painéis de administração do Windows Vista e Windows Seven. É tudo directo, e não passa de uma janela do explorer contendo uma listagem completa de todas as páginas do painel de controlo.
Segundo foi relatado o GMC não mostra as configurações “escondidas” / “secretas”, a melhor maneira de alterar essas configurações continua a ser executar ncpa.cpl no menu iniciar onde permite procurar programas e ficheiros.

Como entrar em “God Mode”

  1. Criar uma pasta no computador ou num dispositivo de armazenamento amovível se pretender utilizar em mais que um computador
  2. Dar o nome de xpto.{ED7BA470-8E54-465E-825C-99712043E01C} onde xpto pode ser um nome qualquer.

Sistemas Operativos em que Funciona

  • Windows 7 x64
  • Windows 7 x86
  • Vista x86
  • Windows Server 2008 R2 Standard Edition
  • Windows Server 2008 x86

Também funciona em Vista x64 mas necessita de algumas alterações para que o explorer não crashar.

UPDATE

Encontrei uma lista de mais algumas maneiras de criar atalhos para ferramentas especificas relativas a administração em windows:

Printers: {2227A280-3AEA-1069-A2DE-08002B30309D}
Control panel: {305CA226-D286-468e-B848-2B2E8E697B74}
Dial-up networking: {992CFFA0-F557-101A-88EC-00DD010CCC48}
Scheduled tasks: {D6277990-4C6A-11CF-8D87-00AA0060F5BF}
Folder options: {6DFD7C5C-2451-11d3-A299-00C04F8EF6AF}
Dial-Up Networking: {992CFFA0-F557-101A-88EC-00DD010CCC48}
Scheduled tasks: {D6277990-4C6A-11CF-8D87-00AA0060F5BF}
Taskbar and startmenu: {0DF44EAA-FF21-4412-828E-260A8728E7F1}
Microsoft FTP folder {63da6ec0-2e98-11cf-8d82-444553540000}
Temporary Internet files {7BD29E00-76C1-11CF-9DD0-00A0C9034933}
ActiveX Cache folder {88C6C381-2E85-11D0-94DE-444553540000
Subscriptions folder {F5175861-2688-11d0-9C5E-00AA00A45957}
History {FF393560-C2A7-11CF-BFF4-444553540000}

Jan 7 10

Trabalhando com jQuery e MooTools ao mesmo tempo

escrito por João Pedro Pereira

jQuery & MooToolsHoje estava a melhorar a área de administração para o portal de um cliente que será brevemente lançado, e deparei-me com o problema… Tinha um plugin desenvolvido em jQuery e outro em MooTools que queria ver integrado na mesma página.

Explicação do Porquê do Erro Acontecer

O símbolo ‘$’ é usado como objecto pela jQuery e também pela MooTools, logo existe interferência.

Se chamarmos primeiro a jQuery ela vai correr e criar um objecto chamado ‘$’ com as funções especificas para jQuery, de seguida, chamamos a MooTools que vai criar o seu o objecto também chamado ‘$’ com as funções especificas da MooTools.

A Solução

Depois de alguma pesquisa consegui solucionar o problema e ter os dois a funcionar correctamente no mesmo local, apesar da solução mais vista: jQuery.noConflict(); não funcionar no meu caso.

A solução passou por pegar nos ficheiros de funções jQuery e alterar todos os ‘$’ para ‘jQuery’, porque é a mesma coisa chamar uma função através do objecto ‘$’ quer através do objecto ‘jQuery’, pois o objecto ‘$’ é apenas um shortcut para ‘jQuery’.

Depois a ordem que utilizei para chamar as bibliotecas em si foi a jQuery primeiro e de seguida a MooTools.

Jan 7 10

Maior Edificio do Mundo 828 metros – Inauguração do Burj Khalifa

escrito por João Pedro Pereira

O Maior Edifício do Mundo fica no Dubai e foi inaugurado dia 4 de Janeiro de 2009.

A altura oficial da torre, baptizada de Burj Khalifa, é de 828 metros.

“Mohamed Alabbar, Presidente do Conselho da Emaar Properties, disse que a torre representa um símbolo de esperança para o mundo árabe e um brilhante exemplo da realização humana.”

Simplesmente impressionante a inauguração deste edifício, está belíssima e de uma coordenação dos vários constituintes, som, água, luz e fogo de artificio fenomenal.

Impressionante não concordam?

Dec 29 09

Configurar SSH para Diferentes Usernames

escrito por João Pedro Pereira

Neste post o serão abordadas ligações por SSH, Secure Shell ou SSH que é além de um programa, um protocolo de rede que permite a ligação a outra máquina. Possui as mesmas funcionalidades do telnet, no entanto, tem a vantagem de ter a ligação encriptada. E é hoje uma ferramenta utilizada diariamente por SysAdmins (administradores de sistemas) ou por qualquer pessoa que tenha a necessidade de se ligar a um computador remotamente.

How SSH works

Esta dica é especialmente importante para aqueles que utilizam a linha de comandos em sistemas Linux e não aplicações como o Putty, por exemplo.

Para aqueles que precisam de se ligar por SSH a máquinas com diferentes credenciais, existe uma alternativa ao

$ ssh -l joaopedropereira maquina.dominio.com

Podemos configurar o SSH para que para cada domínio determine diferentes credenciais e configurações.

Exemplo Ficheiro: ~/.ssh/config (pode ser necessário criar)

Host *.fe.up.pt
User login_feup

Host 192.168.1.150
Compression Yes
User login_deskop

Host *.remote.shell.com
User  xpto

Existem imensas opções para configurar a ligação, só é preciso dar uma vista de olhos aos man files
ssh_config, por exemplo:

$ man ssh_config

Para mim é extremamente útil isto. Espero que a dica seja útil para vocês ;)

Dec 27 09

Criar Servidor Rapidamente com Python e SimpleHTTPServer

escrito por João Pedro Pereira

Alguma vez tiveram a necessidade de disponibilizar conteúdo de uma máquina urgentemente através de HTTP, mas não tinham a mínima vontade de estar a configurar um servidor ?

Eu tive este Natal… Felizmente tinha o python instalado na minha máquina e por isso o assunto foi resolvido facilmente utilizando o módulo SimpleHTTPServer.

$ python -m SimpleHTTPServer 8888

O que este comando vai fazer é criar um servidor no vosso endereço de IP na porta 8888 (podem escolher a porta que quiserem desde que não esteja já ocupada). E a pasta que vai ser o vosso root do servidor é a pasta em que executam o comando.

Se quiserem criar um servidor para a pasta das vossas musicas:

~$ cd Music/
~/Music$ python -m SimpleHTTPServer 8888

É porreiro, não é?

Dec 9 09

SAPO Codebits 2009 – Reviewed

escrito por João Pedro Pereira

Nos dias 3, 4 e 5 de Dezembro realizou-se o SAPO Codebits 2009, depois de ter estado presente na edição de 2008 posso dizer que este ano quase tudo esteve melhor que o ano passado e que excedeu completamente as minhas expectativas.

Foi sem dúvida uma excelente experiência, não só pelo evento em si mas por outros factores que existiram devido ao evento. A partida do Porto deu-se dia 3 de Dezembro da FEUP (Faculdade de Engenharia da Universidade do Porto) na companhia de cerca de 30 estudantes do MIEIC (Mestrado Integrado em Engenharia Informática e Computação), que mostraram ser uma excelente companhia, sempre com boa disposição e simpatia.

SAPO Codebits 2009 Logo

Chegando ao local do evento, este ano foi escolhida a Cordoaria Nacional junto ao Tejo, o “check in” foi super rápido e as meninas que o fizeram foram muito simpáticas situaram-me logo no edifício e indicaram o que existia e onde se encontrava.

Passados uns minutos já estava eu sentado numa mesa a ver os brindes que os patrocinadores tinham oferecido.

Uma bolsa de transporte para laptops oficial SAPO Codebits, uma USB Lamp oferecida pela Microsoft, equipamento para dormir mais descansado da PT Inovação (venda para os olhos, tampões para os ouvidos, umas meias e ainda uma escova e pasta para lavar os dentes), adorei também a ideia de entregarem uma folha com badges, tendo já quitado o meu computador portátil com alguns… Ri-me quando vi que tinham entregue um read-me impresso que por acaso foi muito útil, e as tshirts este ano estão fantásticas.

SAPO Codebits 2009 Entrance

Depois de uma volta pelo recinto gostei do que vi, as instalações estavam bem melhores este ano, a área para descanso estava muito bem conseguida, havia muito espaço, não faltavam mesas, nem beanbags, havia mais alternativas à pizza, muitas bebidas, notou-se um grande esforço por parte da organização para atender às queixas do ano anterior relativamente ao espaço e às refeições.

Este ano também não notei a confusão do ano passado nas horas das refeições, não tendo esperado mais do que 3/4min para ter o que queria nas horas de mais movimento.

Talks

SAPO Codebits Main Stage

Dia 1

Pelas 14h começaram as talks e para esta hora eu escolhi Think before you develop! — Kai Seidler

O Kai Seidler nesta talk esteve a analisar várias arquitecturas de servidor, e web services em geral, mostrou também os prós e os contra de linguagens de WebDevelopment como PHP, Python, JavaScript, ASP.NET, Perl, etc. bem como de vários SGBD’s como MySQL, SQLite e Oracle. No fim abordou vertical e horizontal scaling.

Foi uma talk muito inconstante pois o orador esteve muito nervoso, esteve com vários problemas no remote control, mas na minha opinião conseguiu transmitir bem a mensagem e pegou bem nos tópicos que se propôs abordar.

Info Oficial: http://codebits.eu/intra/s/session/82

Ás 15h assisti a HTML5 JavaScript APIs — Remy Sharp

O Remy Sharp conseguiu interagir muito bem com o público criando uma boa dinâmica, abordou o tema de uma forma muito inteligente e divertida.

A nova especificação do HTML tinha sido um assunto que até então não me tinha despertado grande curiosidade, mas com esta talk fiquei mesmo interessado em analisar mais a fundo as novidades desta especificação pois pareceu-me que vai trazer muito de bom à internet e aos WebDevelopers.

Info Oficial: http://codebits.eu/intra/s/session/60

Pelas 16h deixei o Main Stage para assistir no Stage 2 a Introducing Ajax.org Platform 3.0 — Mike de Boer que foi sem dúvida a única talk que não gostei de facto. Pareceu-me pouco preparada. Não consegui ficar até ao fim, depois de uns 20min sem ter dito basicamente nada, desisti e fui-me embora.

Info Oficial: http://codebits.eu/intra/s/session/84

Ás 17h voltei para o Main Stage para assistir a uma das melhores talks a abordar JavaScript OOP, JavaScript: From Birth to Closure — Robert Nyman

Adorei esta talk, super organizada, muito divertida, com conteúdo que notei a maioria das pessoas não ter conhecimento tendo estado super atentas ao que o orador estava a referir, e muito bem explicada com exemplos caricatos com o Ben Afflleck.

Quem segue o meu blog sabe que já escrevi sobre este assunto e que tenho uma grande paixão por JavaScript (post 1, post 2).

Info Oficial: http://codebits.eu/intra/s/session/87

Ás 18h mudei-me novamente para o Stage 2 onde um aluno da FEUP, Diogo Junior, ia dar uma talk sobre Programar para Android — Diogo Dias Júnior

Achei que o Diogo esteve muito bem na sua talk deixando “água na boca” do público o que levou a uma enchente de programas para plataformas móveis Android como projectos do concurso de programação! Parabéns ao Diogo.

Podem ver o vídeo da talk no link que segue abaixo.

Info Oficial: http://codebits.eu/intra/s/session/76

Para terminar as talks no primeiro dia assisti à apresentação da Widget Platform – tear the Web apart and assemble the pieces together — José Rodrigues da Mata Fernandes

A apresentação em si não foi nada de mais no entanto achei interessante a widget platform da SAPO, não por ser algo de inovador, que não é, mas pela feature que é em si.

Info Oficial: http://codebits.eu/intra/s/session/81

O resto da noite foi passada a ver os stands dos parceiros do Codebits a ver o que tinham para mostrar, tive também a oportunidade de falar com o Mitch Altman, que me reconheceu da edição do ano passado sem eu ter ido falar com ele até, espantoso! Tive também a oportunidade de conviver com conhecidos da comunidade Portugal-a-Programar.

No fim da noite no Codebits pernoitei no Lisbon Lounge Hostel, uma nova experiência pois nunca tinha ficado alojado num estabelecimento do género. Mas antes a viagem foi feita de eléctrico, ao tempo que já não andava de eléctrico, e claro o pessoal da FEUP conseguiu tornar aquilo hora de ponta pois o eléctrico ia completamente cheio! E fomos desde o Hospital Egas Moniz até à Rua Augusta em que nos aventuramos na procura do Lisbon Lounge Hostel que em 30 pessoas nenhuma se lembrou de ver qual a rua ao certo, nem qual o percurso desde o eléctrico. Mas lá conseguimos chegar inteiros…

Rua Augusta

Relativamente ao Lisbon Lounge Hostel, bem, adorei o conceito! Um ambiente muito relaxado, o pessoal “à vontade” como se estivesse em casa, tudo muito simples, mas bem organizado e asseado. Aqui tive a sorte de encontrar um casal Australiano que estava a visitar a Europa, muito simpáticos, e que me contaram um pouco da viagem. Achei muito porreiro os quartos serem mistos e ninguém ter problemas com a situação.

Dia 2

Depois de uma noite bem dormida, de um pequeno almoço que não foi pizza nem chocolates e de volta ao Codebits comecei as talks com o Mitch Altman às 10h, Make A Living Doing What You Love: How to Bring Your Project From Idea To Reality — Mitch Altman.

Uma excelente talk abordando todo um processo, uma história de vida que permitiu tirar vários ensinamentos e várias lições para o presente e o futuro e toda a talk baseou-se em algo que hoje em dia é complicado para muitas pessoas, que tal como o título da talk diz, viver uma vida fazendo o que amamos! Simplesmente fantástica!

Info Oficial: http://codebits.eu/intra/s/session/95

Como o Brian LeRoux não apareceu para a talk das 11h apenas às 12h voltei a assistir uma talk: Crash Course in Brain Surgery — Bruno Morisson.

Mas wtf? Brain Surgery? Que raio tem isso a ver com o Codebits? Bem, Brain Surgery que significa Brain -> Aplicação,  Surgery -> Segurança. Esta foi uma talk sobre um tema que não se vê muito no Codebits, a segurança, fala-se muito de aplicações web mas falha-se a parte da segurança que é, no caso do WebDevelopment, um ponto essencial.

Esta talk foi muito descritiva, nomeou várias flaws, vários métodos de explorar vulnerabilidades e seus tipos, e depois focou-se mais em alguns aspectos. Não foi uma talk que me trouxe muito de novo mas uma talk que deu para relembrar alguns pontos que já não estudava há algum tempo como Business Logic Flaws, pois XSS, SQL Injection, Code Injection, Privilege Escalation, etc. são temas com que trabalho no dia-a-dia.

Só tenho uma coisa a apontar ao Bruno, ele disse demasiadas vezes “Eu não sou developer por isso não sei x, y ou z” acho que se desculpou demasiado, mas são pontos de vista e modos de estar em público, cada um tem o seu obviamente.

Info Oficial: http://codebits.eu/intra/s/session/70

Mais tarde assisti a uma talk do José Castro relativamente às entrevistas de emprego na SAPO, foi uma talk muito interessante que me mostraram uma realidade com a qual nunca me tinha deparado pessoalmente e que me fez bem ganhar um pouco de consciência acerca do assunto. Gostei muito.

O resto do dia foi passado a ajudar em programas, a conhecer pessoas, e a tentar trazer um beanbag para casa, posso dizer que hoje escrevo este post em cima de um beanbag com a etiqueta do codebits e a condizer com as cores do meu quarto.

SAPO Codebits

Com o fim da tarde a aproximar-se começou a chegar a hora da despedida e de ir para a Estação de Sta. Apolónia para voltar no Alfa Pendular das 20h30 para o Porto.

No entanto, assisti ainda a uma outra talk através do stream e participei na votação! Pelo que consegui perceber pelos comentários que vi no twitter acho que tive mais facilidade em votar estando em casa do que os participantes do Codebits que estavam no local…

A viagem de volta

Uma viagem que prometia um longo sono tornou-se numa viagem muito interessante e produtiva devido à companhia que tive. Ao meu lado um estranho meteu conversa por ver os meus apontamentos de álgebra e lá começamos a falar sobre, inicialmente, matemática, o ensino, os alunos de hoje e o insucesso escolar, pensei eu que seria um professor ligado à matemática, mas não era médico, a conversa passou também por xadrez, física quântica, a personalidade das pessoas, as forças dentro de cada um, psicologia, o ser humano, etc. um homem de uma cultura formidável. Esse senhor chama-se Rui Caldevilla. Foi uma óptima viagem de regresso.

O Beanbag

Eu não fiquei até ao ultimo dia, que era quando podíamos trazer embora os beanbag’s aka puff’s para casa. Durante a tarde do segundo dia insisti com a organização através do twitter, ou do blog do codebits, mas nada. No entanto parece que fui suficientemente chato, eu e mais uns colegas da FEUP, que durante a noite (em que eu já não estive), andou o José Castro à nossa procura para nos calar dando-nos os voucher para trazermos os beanbag’s, como já lá não estava o Tiago Boldt, fez-me o grande favor de me trazer um para mim.

SAPO Codebits Beanbag's

Conclusão

Este post foi escrito (editado) 5 dias depois do meu ultimo dia no Codebits com um significado muito simples, foi um evento 5 estrelas.

O SAPO Codebits 2009 foi sem dúvida uma óptima experiência, e venha a edição 2010, cá espero por ela!

Fotos Retiradas de http://www.flickr.com/photos/tags/codebits

Dec 1 09

Google Wave e SAPO Codebits 2009

escrito por João Pedro Pereira

Ultimamente o tempo para postar não tem sido muito, no entanto, dentro de uma semana espero que essa tendência mude e tenha mais tempo livre que me permita continuar a deixar aqui o meu pequeno contributo para o repositório de conhecimento em Português na Internet.

Este post hoje será para dar algumas informações…

SAPO Codebits 2009

Anfitrião: SAPO
Início: quinta-feira, 3 de Dezembro de 2009 às 12:30
Fim: Sábado, 5 de Dezembro de 2009 às 21:00
Local: Cordoaria Nacional
Rua: Avenida da Índia
Cidade/Localidade: Lisbon, Portugal
Descrição
SAPO Codebits is an international programming contest for the Web targeted at talented programmers. The goal is to promote creativity and innovation in a very relaxed and informal environment. 3 days non-stop with presentations, lightning talks, workshops, quizzes, rockband contests, electronics and hacks, for those who love the Internet and have a passion for code.

Mais em: http://codebits.eu/

Relativamente ao SAPO Codebits 2009 no qual eu vou estar presente, apresento aqui as talks às quais tenciono assistir:

# Think before you develop! (Main Stage, day 3, 14:00)
# Distributed programming and data consistency (Stage A, day 3, 15:00)
# Introducing Ajax.org Platform 3.0 (Stage B, day 3, 16:00)
# JavaScript: From Birth to Closure (Main Stage, day 3, 17:00)
# Schema maintenance, migration, and synchronization in MySQL (Main Stage, day 3, 18:00)
# Widget Platform – tear the Web apart and assemble the pieces together (Stage A, day 3, 19:00)
# Make A Living Doing What You Love: How to Bring Your Project From Idea To Reality (Stage C, day 4, 10:00)
# The State of JavaScript on Mobile Devices (Stage C, day 4, 11:00)
# Crash Course in Brain Surgery (Stage A, day 4, 12:00)

Se alguém quiser partilhar as talks a que quer assistir e as opiniões sobre algumas delas agradeço :) .

Google Wave

Outra informação que tenho para dar é que possuo 28 convites para o Google Wave, quem quiser que deixe um comentário que eu envio para o e-mail.

“About Google Wave

Google Wave is an online tool for real-time communication and collaboration. A wave can be both a conversation
and a document where people can discuss and work together using richly formatted text, photos, videos, maps, and more.
What is a wave?

A wave is equal parts conversation and document. People can communicate and work together with richly formatted text, photos, videos, maps, and more.

A wave is shared. Any participant can reply anywhere in the message, edit the content and add participants at any point in the process. Then playback lets anyone rewind the wave to see who said what and when.

A wave is live. With live transmission as you type, participants on a wave can have faster conversations, see edits and interact with extensions in real-time.”

Fonte: http://wave.google.com/help/wave/about.html

Nov 26 09

Entender Apontadores em C

escrito por João Pedro Pereira

Antes de mais o que é um apontador em português corrente? É algo que aponta para alguma coisa, certo? Ok… Então vejamos este exemplo:

O que é o ponteiro de um relógio? É o que aponta para as horas, minutos ou segundos. Em programação é muito semelhante temos as variáveis e o ponteiro vai apontar para o local da memória onde elas se encontram armazenadas que veremos mais à frente chamar-se de endereço da memória.

Arquitectura

“Ponteiros são uma abstracção da capacidade de endereçamento fornecidas pelas arquitecturas modernas. Em termos simples, um endereço de memória é definido para cada unidade de memória no sistema, no qual a unidade é tipicamente um byte ou um char, o que em termos práticos transforma toda a memória num grande vector. Logo, a partir de um endereço, é possível obter o valor armazenado na memória correspondente a esse endereço.”

Fonte: Wikipedia

Resumidamente: O ponteiro é uma variável como qualquer variável mas que armazena um endereço de uma outra variável.

Variáveis e Memória

Explicação de Memória

Quando declaramos int i=2450; estamos a indicar ao compilador para reservar um espaço na memória para poder armazenar valores do tipo inteiro, com o número de bits associado a este para cada compilador e/ou arquitectura. Simultaneamente é atribuído o valor 2450 à variável i, o que significa que no endereço de memória associado à variável i é armazenado o valor 2450.

Apontadores e Memoria Nota: este gráfico não está relacionado com o anterior apesar do valor de i ser o mesmo.

Declarar apontadores

Antes de começar com a declaração de apontadores quero alertar para um erro muito comum quer em programadores novatos quer em programadores mais experientes, nunca se deve usar um ponteiro sem antes inicializa-lo pois ele estará a tentar aceder a um valor da memória desconhecido e dará erro “Segmentation Fault“.

Declarar um apontador é muito simples:

int *ap  ;        /* declara um ponteiro para um inteiro */

A instrução anterior indica que ap é um apontador do tipo inteiro. Por outras palavras, ap é uma variável cujo valor é um endereço de uma variável do tipo int.
Existem dois operadores unários que são utilizados com os ponteiros.
Um é o operador (*) através dele é possível obter o valor do endereço de memória do ponteiro, o outro é o operador (&) que permite obter o endereço de memória.
De forma mais simples:

  • & significa “endereço de”;
  • * significa “conteúdo do endereço para onde aponta”.
*ap = 33;  /* atribui o valor 33 à variável que está contida no ponteiro */

Exemplos de Operações com Ponteiros

#include<stdio .h>
main()  {
int a=33;
int *ap=&a; // &a, devolve o endereço de memória de uma variável
printf("Valor a: %d\n", a);
printf("Endereço a: %d\n", &a);
printf("Valor apontador: %d\n", ap);
printf("Endereço apontador: %d\n", &ap);
printf("Valor na memória apontada pelo apontador: %d\n", *ap);
}</stdio>
int *ap1, *ap2;
ap1 = ap2; /* isto fará com que ap1 aponte para o mesmo endereço que ap2 logo usar ap1 é o mesmo que usar ap2 */
int *ap1, *ap2;
*p1 = *p2;/* altera o valor apontado por ap1 para o apontado por ap2 */
int *ap;
(*ap)++; /* incrementa o valor armazenado no endereço para o qual ap aponta*/
int *ap;
ap++; /* se temos um ponteiro para um inteiro e o incrementamos, ele passa a apontar para o próximo inteiro */

Resumindo e Concluindo

  • Uma variável tem sempre um endereço e um valor;
  • Um apontador é uma variável cujo valor é o endereço de uma outra variável;
  • Se a for uma variável então &a é o endereço de a;
  • Se ap for um apontador, *ap é o valor que é indicado por ap;

Qualquer dúvida ou sugestão sintam-se à vontade em comentar, a perguntar é que se pode evoluir, não ficando com as dúvidas só para nós sem serem esclarecidas!

Deixo-vos com um vídeo do Binky a explicar apontadores, penso que será mais interessante e divertido…

Nov 18 09

Ubuntu 9.10 – Karmic Koala

escrito por João Pedro Pereira

O Ubuntu 9.10 já ai está à algum tempo e eu decidi fazer o upgrade pois estava ainda com a versão 8.04 LTS do Ubuntu, e 14 (catorze) dias depois de instalar na minha máquina o Ubuntu 9.10 – Karmic Koala (instalada dia 4 de Novembro de 2009) vou deixar aqui a minha opinião sobre ele, tal como prometido: http://tr.im/Ff89 .

910-header

O gestor de arranque System-V foi substituído pelo Upstart, o USplash foi substituído pelo XSplash, o que tornou o boot mais rápido. O reboot já não demora tanto como antigamente, desligando o computador completamente em cerca de 3 segundos, o que é óptimo para os utilizadores de computadores portáteis.

O Karmic Koala, traz a versão do Kernel Linux 2.6.31, e o sistema de ficheiros ext4 está agora disponível por omissão.

O Ubuntu é uma das primeiras distribuições a incluir o Gnome 2.28, que proporciona notórias melhorias no ambiente gráfico. O gdm foi também totalmente rescrito, tornando o ambiente de login muito mais acessível e intuitivo. Ao sistema de notificações foram introduzidas melhorias significativas.

Está também mais seguro, o AppArmor foi também melhorado, tendo agora a integração com a Libvirt. achou interessante? Clique aqui para ler mais…