O que fazer em caso de ataque cardíaco?

November 9th, 2007
Repentinamente sente-se uma forte dor no peito, que se difunde até ao braço e, até mais acima junto à mandíbula. Mesmo que se tenha sido treinado em RCP (Ressuscitação Cardio-Pulmonar), provavelmente o instrutor do curso nunca ensinou a auto aplicar a técnica. Sem ajuda, uma pessoa na qual o coração bata incorrectamente e se comece a sentir a desmaiar, só tem 10 segundos antes de perder a consciência. Tendo em conta que a maior parte dos ataques cardíacos acontecem quando uma pessoa se encontra sozinha e não consegue pedir ajuda, o que fazer então?

Não entrar em pânico começar a tossir repetida e vigorosamente. Deve-se respirar profundamente entre cada tosse, esta deve ser profunda e prolongada, como quando se produz um forte ataque de tosse, proveniente do diafragma. Cada inalação e cada tosse devem ser repetidas de dois em dois segundos, repetidamente e sem parar, até que se consiga ajuda ou até que o coração esteja de novo a bater correctamente. As inspirações profundas levam oxigénio aos pulmões e os movimentos de contracção da tosse comprimem o coração e mantêm o sangue a circular. A pressão sobre o coração também ajuda a recuperar o ritmo cardíaco normal. Desta maneiras as vítimas de ataque cardíaco podem chegar a um hospital e sobreviver.

Hoje em dia, devido à mudança de estilo de vida, os ataques cardíacos atingem pessoas de todas as idades, mesmo as pessoas com menos de 25 ou 30 anos que não estão incluídas em grupos de risco.

JSLint

November 6th, 2007

Hoje descobri o JSLint que para quem não conhece, é uma ferramenta muito interessante para verificar a correcção de um javascript de acordo com as convenções de código. Às vezes este verificador pode parecer “picuinhas” mas é para o nosso próprio bem.

Traveler

November 6th, 2007

Conheci o Traveler através de um amigo que me disse algo do género: “É pá vê esta série que é muito boa, tem trama e intriga como gostas e são só 8 episódios vê-se rapidamente”. Quando chego ao fim do 8º episódio fiquei com a sensação - “Mas que raio de final foi este ainda existem uma data de pontas soltas…”.

Virei-me para o meu amigo e disse-lhe que não tinha gostado do final apesar da série em si ser muito boa. Foi quando ele me disse que a série deveria ser de 15 episódios e não de 8, e que tinham parado de fazer a série devido à pouca audiência que a mesma tinha. Naquela altura apeteceu-me apertar o pescoço a alguém: ao meu amigo porque me aconselha uma série que ficou a meio e a todos os “bananas” que conseguiram que uma série relativamente boa não tivesse sucesso. Está bem que tem um tema já muito utilizado, conspiração governamental e vingança contra as pessoas do sistema por terem acusado algum inocente, mas não deixa de ser uma série que nos “prende” ao ecrã e nos faz desejar saber como tudo vai terminar. Vejam lá mas é se produzem os restantes 7 episódios que faltam…

Formatar em FAT32

November 2nd, 2007

Precisei de formatar um disco em FAT32 com 500GB, quando descobri que o Windows XP não suporta a formatação de discos com mais de 32GB sem ser em NTFS. Solução:

- Start -> Run e escrever diskmgmt.msc;
-
Botão direito do rato no disco que se quer formatar e seleccionar “Criar nova partição”;
- Seleccionar “Partição Primária”;
- Escolher a dimensão máxima possível para o disco;
- Escolher uma letra para a partição;
- Escolher “Não formatar a partição”;
- Fazer download do executável fat32format ou fat32formatsrc (para quem tiver curiosidade ou medo e queira perceber o que está por trás do executável);
- Finalmente ir à linha de comandos e no path onde tiver o executável escrever, fat32format [letra do disco]:

Qualidade de vida

October 18th, 2007

Aí está uma coisa que eu acho que a maioria das pessoas actualmente abdica, cada vez mais não se aproveitam as coisas simples mas boas da vida, cada vez mais as pessoas vivem para trabalhar em vez de trabalharem para viver.

Ontem à noite estava a fazer um zapping habitual pelos canais quando apanhei o início de um filme no canal Hollywood, claro que são filmes antigos mas porque não ver pelo menos que filme era? O filme era “Despertares” (Awakenings), já há uns anos atrás o tinha visto, mas como já não me lembrava bem decidi ficar a assistir. Este filme transmite exactamente a mensagem que a vida é efémera, cada momento que dispomos deve ser aproveitado como se fosse o último, cada momento deve ser aproveitado para realizarmos coisas que nos dão prazer e nos fazem felizes.

Nobel da paz

October 15th, 2007

Não quero que este post se confunda com um post político, porque efectivamente não o é apesar de poder parecer. Al Gore prémio Nobel da paz… para mim é insultuoso, ele é simplesmente mais um frustrado que ainda não conseguiu ser presidente dos EUA e faz tudo para parecer o “menino bonito” à opinião pública. Será que ele se preocupa tanto com o ambiente como diz? Quanto a mim não, é pura estratégia de marketing. Será que a nível mundial ninguém contribuiu mais para a paz do que ele? Não me parece…

Chamada a métodos

October 11th, 2007

Com o aproximar do fim do desenvolvimento do projecto Novo Site Optimus tenho tido muito pouco tempo para fazer posts. Contudo ontem deparei com uma situação que me deixou a pensar, e que acho que à primeira vista é difícil responder correctamente, imagine-se o seguinte código:

static void Main(string[] args){  SetError(”A”);  SetError(”X”, “Y”);  SetError(”M”, “N”, “O”);  SetError(”G”, null);  SetError(”R”, null, “S”);  Console.ReadLine();}

static void SetError(string message, params object[] data){  Console.WriteLine(”Message=” + message);}

static void SetError(string code, string message, params object[] data){  Console.WriteLine(”Code=” + code + “; Message=” + message);}

Qual dos métodos será chamado em cada invocação?

Só a primeira chamada invoca o primeiro método, a segunda, terceira e quinta invocam o 2 método e a quarta dá erro de compilação porque a chamada é ambígua. Isto leva-me a dizer que a assinatura do primeiro método foi mal pensada, não devendo ter o segundo parâmetro, visto que uma chamada com dois ou mais parâmetros, vai invocar o segundo método ou no caso da quarta chamada ainda é pior provocando um erro de compilação.

Método genérico

October 2nd, 2007

O meu problema passava por ter de criar métodos com implementações iguais, só diferindo no tipo dos parâmetros recebidos, pois os objectos que eu queria passar como parâmetro eram em tudo distintos à excepção das propriedades acedidas nesses métodos. Exemplo:

Group[] groups = null;Tone[] tones = null;

GetName(contact.GroupId, groups);GetName(contact.ToneId, tones);

private string GetName(int Id, Group[] data){  foreach (Group info in data)  {       if(info.Id == Id) return info.Name;  }  return null;}

private string GetName(int Id, Tone[] data){  foreach (Tone info in data)  {       if(info.Id == Id) return info.Name;  }  return null;}

Solução 1: Criar uma interface que será implementada pelos dois objectos, e a interface terá os campos e/ou métodos que se desejem ter em comum:

Group[] groups = null;Tone[] tones = null;

GetName(contact.GroupId, groups);GetName(contact.ToneId, tones);

private string GetName(int Id, ShareInterface[] data){  foreach (ShareInterface info in data)  {       if(info.Id == Id) return info.Name;  }  return null;}

Solução 2: Esta solução foi a que utilizei para o meu caso pois a Solução 1 tem um problema, no caso dos objectos serem obtidos através de uma black box é impossível criar uma interface para ambos os objectos implementarem. A solução é a seguinte:

Group[] groups = null;Tone[] tones = null;

GetName(contact.GroupId, groups);GetName(contact.ToneId, tones);

private string GetName(int Id, object[] data){    foreach (object info in data)    {        System.Reflection.PropertyInfo prop = info.GetType().GetProperty(”Id”);        int tester = (int)prop.GetValue(info, null);        if (tester == Id)            return info.GetType().GetProperty(”Name”).ToString();    }    return null;}

.Net 3.X

September 21st, 2007

Encontrei este link que considero interessante sobre as novas funcionalidades do .NET 3.0 e 3.5. Apesar de achar que vamos ter grande evoluções (LINQ, Lambda expressions, etc), existe um sintatic sugar que não me “passa no goto” porque vai dar origem a mais “lixo” no meio do código, que pode ser facilmente evitado. Veja-se um exemplo simples:

Club club = new club();club.name = “xpto”;

A nova funcionalidade a que me refiro permite o seguinte:

Club club = new club(name = "xpto");

Aparentemente é uma boa evolução, menos linhas de código, menos chamadas ao objecto, agora porquê estou contra esta funcionalidade? Porque na minha perspectiva o que fica realmente elegante é o seguinte:

Club club = new club("xpto");

Têm é de existir construtores que possibilitem afectar os campos que se julguem necessários quando se cria o objecto.

Standards para quê?

September 17th, 2007

Estava a ler alguma documentação sobre Ajax quando reparei no seguinte parágrafo, proferido por Todd Anglin da Telerik:

“At the heart of Ajax is the ability to communicate with a web server asynchronously without taking away the user’s ability to interact with the page. The XMLHttpRequest is what makes this possible. This technology was created by Microsoft as an IE ActiveX control to support their (then) groundbreaking Outlook Web Access, but it has since been built-in natively to all modern web browsers (including IE7). In fact, if Mozilla had not had a rare “Microsoft moment” and decided not to add support for the nonstandard XMLHttpRequest to their Firefox browser, it is doubtful that Ajax would be nearly as popular as it is today.”

Conclusão: há sempre alguém que se julga acima do que já está feito e tenta fazer sempre as coisas à sua maneira, não são assim estabelecidos standards e os programadores que querem utilizar a tecnologia são obrigados a fazer código horrivelmente feio, para assim suportarem as diferentes implementações.