Tag Archive: foguete


Esta é uma solução em C# para o problema PRIME 1 no SPOJ que consiste em calcular todos os números primos dentro de certos intervalos (mais info. http://spoj.pl/problems/PRIME1).Resolvi com um crivo de erastótenes levemente modificado, já com primos tabelados até 31627 (menor inteiro que é >= raiz quadrada de 1.000.000.000), já pulando os números pares e checando na tabela só até a raiz de N, para cada N no intervalo passado ao programa. Ainda há uma tentativa de paralelizar a operação, mas que não surtiu efeito no SPOJ, provavelmente o sistema deles roda a aplicação em uma CPU somente. Tentei procurar o mínimo possível na net de forma a botar a cuca pra funfar, a única coisa que utilizei da internet foi o teoreminha da raiz quadrada de N. O próximo passo será tentar acelerar o cálculo utilizando testes estatísticos de primalidade, mas para isso precisarei implementar um modulozinho de matemática de precisão arbitrária, o que já é mtos outros posts 😉 Execução no SPOJ levou 2,75 segundos e 25MB de memória. (A maior parte da memória é o runtime, gordo, que usa.)

Continue lendo

Anúncios

O .NET já tem embutido uma facilidade para compressão de dados com algoritmo Deflate e Gzip. Neste exemplo mostrarei como compactar e descompactar dados com Deflate, mas com GzipStream o processo é o mesmo.

A princípio parece complicado realizar essa compactação utilizando streams, mas na realidade é bem simples. O DeflateStream é um wrapper stream, ele envolve um outro stream que é onde os dados serão salvos; você grava os dados no DeflateStream, o DeflateStream grava compactado no stream de destino. Para descompactar, o processo é o inverso, você lê do DeflateStream, e o DeflateStream lê do stream de origem realizando a descompactação on-the-fly.

Para exemplificar o processo, deixo aqui dois métodos, um que realiza a compactação de um array de bytes através do DeflateStream e do MemoryStream, e um que faz a descompactação.

private static void CopyStream(Stream input, Stream output)
{
byte[] buffer = new byte[32768];
while (true)
{
int read = input.Read(buffer, 0, buffer.Length);
if (read <= 0) return;
output.Write(buffer, 0, read);
}
}

public static byte[] Compactar(byte[] arrayOrigem)
{
byte[] arrayComprimido;
using (MemoryStream origem = new MemoryStream(arrayOrigem, false))
{
using (MemoryStream destino = new MemoryStream())
{
using (DeflateStream compress = new DeflateStream(destino, CompressionMode.Compress))
{
CopyStream(origem, compress);
}
arrayComprimido = destino.ToArray();
}
}
return arrayComprimido;
}

public static byte[] Descompactar(byte[] arrayOrigem)
{
byte[] arrayDescomprimido;
using (MemoryStream origem = new MemoryStream(arrayOrigem, false))
{
using (MemoryStream destino = new MemoryStream())
{
using (DeflateStream decompress = new DeflateStream(origem, CompressionMode.Decompress))
{
CopyStream(decompress, destino);
}
arrayDescomprimido = destino.ToArray();
}
}
return arrayDescomprimido;
}

Pegando seu IP externo em C#

Às vezes você precisa saber qual IP sua aplicação está usando para sair para a internet, principalmente quando uma máquina tem vários IPs.
Este métodozinho foguete usa o site www.meuip.com.br para pegar seu IP de saída:

public static string PegarIPExterno()
        {
            System.Net.WebClient t = new System.Net.WebClient();
            string meuip = t.DownloadString("http://meuip.datahouse.com.br");
            return meuip
                .Substring(
                meuip.IndexOf("o Meu IP? ") + "o Meu IP? ".Length,
                meuip.IndexOf("</title>") - meuip.IndexOf("o Meu IP? ")
                - "o Meu IP? ".Length);
        }

Configurando meu Ubuntu na máquina virtual percebi que a cedilha não estava funcionando, em vez de ç ele colocava ć.

Solução foguete segundo o blog http://gpupo.com/c-cedilha-no-ubuntu-910-resolvido :

No arquivo

/usr/lib/gtk-2.0/2.10.0/immodule-files.d/libgtk2.0-0.immodules

modificar a linha abaixo, adicionando o :en no final

 "cedilla" "Cedilla" "gtk20" "/usr/share/locale" "az:ca:co:fr:gv:oc:pt:sq:tr:wa:en"

Depois, no arquivo

/etc/environment

adicionar a linha:

export GTK_IM_MODULE=cedilla

E então no arquivo

/usr/share/X11/locale/en_US.UTF-8/Compose

trocar todos os ć e Ć para ç e Ç (são três ocorrências de cada um no arquivo).

Faça logout e depois logon, e deve estar funcionando.

Echofon dropa suporte ao Linux

Update: o twitter agora não aceita mais que aplicativos utilizem autenticação básica, só via OAuth. Isso significa que a versão do echofon que funcionava no Linux agora parou de funcionar também.

 

Echofon, a famosa extensão para firefox que permite acompanhar o twitter, retirou o suporte a autenticação básica, o que significa que não vai funcionar mais em builds customizados e em plataformas “menores”, mas afirmam estar estudando uma solução para isso.

Foguete para solucionar o problema:

Baixem a última versão do Echofon que funcionou:
https://addons.mozilla.org/en-US/firefox/addon/5081/eula/88620?src=version-history%20%22

Fonte: http://itechlog.com/itechfeed/2010/09/06/echofon-shamefully-drops-firefox-for-linux/

Foguete

foguete (ê)

s. m.
1. Fig. Gambiarra, solução rápida.
2. Fig. Algo bom ou interessante.
3. Fig. Descompostura.
4. Peça pirotécnica que, subindo alto, estraleja ou verte fogos de cores.
5. Mar. Foguetão.
6. Pop. Cartucho comprido e esguio, cheio de confeitos.
7. Mad. Estrada ou caminho íngreme calcetado com seixos, em degraus, para facilitar a subida ou descida.
8. Mil. Peça pirotécnica destinada a incendiar a praça inimiga.
9. Bras. Indivíduo trêfego, irrequieto, alegre.