Oferta Nacional - 234x60

Problema ‘mochila’ por programação dinâmica

Como resolver o problema ‘mochila’ usando programação dinâmica.

Parte da disciplina Algoritmos e Estruturas de Dados 2, do curso de Ciência da Computação, da UERJ.

O Problema:

Dada uma mochila com capacidade M e t ítens com peso w[i] cada, verificar se existe uma combinação de itens que preencha exatamente a mochila.

Exemplo:

Dado o conjunto de ítens {7, 3, 5, 9, 15}, é possível preencher exatamente mochilas com capacidades 25 e 27, mas não é possível preencher mochila com capacidade 26.

Implementação em HTML e Javascript, animado, no link: http://www.idealmind.com.br/exemplos/mochila.html?w=4,7,11,5,17&d=0&m=37.

Posts Relacionados:

  • Nenhum

Como gerar códigos aleatórios com PHP

Uma função muito simples que permite a geração de códigos e cupons aleatórios em php.

Você poderá escolher um prefixo, o número de caractere do código/cupom, e a quantidade de códigos/cupons que você quer gerar.

O código PHP:


<?php

// Gerador de código

$prefixo = "EP3";
$tamanho = 10;
$qtd = 50;
$c = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ";

for($i = 0; $i<$qtd; $i++)
{
 $cod = $prefixo;
 for( $j = 0; $j< ( $tamanho - strlen($prefixo) ); $j++)
 {
 $cod .= $c{mt_rand(0,35)};
 }
 echo "$cod<br />";
}

?>

Posts Relacionados:

  • Nenhum

Como instalar um certificado SSL no ambiente de desenvolvimento

Neste post vou mostrar os passos para criar um certificado SSL no seu ambiente de desenvolvimento.

Lembrando que o certificado é auto-gerado, e não tem uma validade real, mas serve para testes SSL.

Primeiro vamos gerar a private key:

$ mkdir /home/wellington/ssl
$ cd /home/wellington/ssl
$~/ssl$ openssl genrsa -des3 -out mi.local.key 2048
Generating RSA private key, 2048 bit long modulus
..+++
…+++
e is 65537 (0×10001)
Enter pass phrase for mi.local.key:
140279113451168:error:28069065:lib(40):UI_set_result:result too small:ui_lib.c:869:You must type in 4 to 8191 characters
Enter pass phrase for mi.local.key:
Verifying – Enter pass phrase for mi.local.key:
$~/ssl$

E aqui estará a private key:

$~/ssl$ cat mi.local.key
—–BEGIN RSA PRIVATE KEY—–
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,2A220E0CBEE2B581

UsKsXLByIhH+nk5wXDmwfd6qCchDpptljc+b3Yqw8m2W+IqHbsqRrrEIhaTBd7WI
+A2BSU2eemFp6KgbqDhnvNbRx7Uu73ifVY6VdEkYzdJFf9JJzeGOgv2ATfWG6F9H
PFQ0rrbbHmsrKwtVb55sCJuyLK9IU4cJD6IlEbTeykbyDZDGQqEMcxdMCpARDhHH
/2gjFDtGSG/evQGPPEejuBLfZ592Wl244zMPQxpXlcy6xJ8V4ALwdmABMHgFAxSp
/5v/+JGtdnB3lXZJIeBnlR/YRDzsRJ3IYsC1i4ydFZXpt+jFpuHAT0gOUArqdyxV
YMbepwsj0ejCYfkVCKsD9harhNKTBRAgRXi1l8jDjDk6fdI4IptvJXhc2+d4qJkz
t4+qPeToedrnfAEiIPWXSMD/T5JONpHKpnjCqqEoVg0Jw4kGioZln7vXgzNE+ZrK
nkZ6WGhbkTO8SI5DUnXmrMrpUhHEsnQBYf6IZeN/mcyxamseYX0Pv6rxCBAahdFn
97v50leHPkvxxrGeJhtqw/OGE5yzlgPhzHd16SHResAGbdY6niLFpJJiV3A8/LOr
QONsioge2ULKqA6F3OGIDcOxZHLMAbhv5Im+FTeDzyjNYELk0YKDCzC3xxR1u79z
wvRmUusYrIp0PXJ4PvXLA7EQNaJqoscyXpl49dDNjIuc6ymXvwVM7ZG7TyGLksqH
0KylWdZSRG2hmZTacwoRVcfHbIq9ilJiKOhYAeGEsB6EHruXBnln79sshXdn6X63
RdIDZAuLGXxJFKnADPMC+WaynOFUQaVW45g67AoHLpkmcf4+UQNkkytNOT1pU7Je
hwq4dDOt5S4dBJgunwzFm2QYDGmZ1wCCMplvLyTMJ3NZlWqv0YctOjkx4NGenqCO
Xy8LqBQ9CcVv98Fn3ShgQ3BbHXc1hmP9uudOjXguU//PPgnYrZZXKxyHMPyD3PlT
zomAKqNEpU3EMR68Jyd0/X8pX4sno0b4wnSzjLkW9OCpqUUvdsCl8JT3aGasYqdV
CL3ShKYJyKcDE8NF2oOxt/ePuFyUfTZ2kMFgjAnb28lrwnQ8ql7PzVHF4L1jnU5l
+BHlm5Q8ybgMPyPRCTxp8h1UufVGLI4XBO1s9KLIYabzGybHUJVfIpafhouhIKeq
v3El7veG4NQRUC2J1x+Sty1/DH0pOJr35limhXpuIdZGbKLpmSPTscZwsDAX2oYs
HP8Yxwx2zrIO4g/cOPHsOlpUQIh2N9YCN26IqR7kMslc5T6vSuG/MCOquzG80AAC
ele//3yMNgyFrrW51egDJiwa5aFcQomZls4n7mlfaS33YWJ6vkD6ScXkODtETJPF
jcV4X/dS8o8Z0a4IODLFqN0eOA5XFJEVlUuFNP1WjindgcFlavFIAL6irfIJmrBo
cMtRZW5ZV43ZOoWJpwCrJTVaT/5WbpKul3Ztw4LkyDmGHalbbRO8YSFkaurJocKM
h0vKe871M0Desj0sypXUPONUU3aziIu+ZN3vf96pR++IZoIbxt/uOa0e7nwzEBcR
DZ6FHhO0cBwUDifrTe1KY/Q8TD/2ExEAq2k55JHD1GAWAqZkY3FWZA==
—–END RSA PRIVATE KEY—–
wellington@wribeiro-laptop:~/ssl$

Agora vamos gerar a CSR, que será utilizada como base para a autenticação do certificado:

wellington@wribeiro-laptop:~/ssl$ openssl req -new -key mi.local.key -out mi.local.csr
Enter pass phrase for mi.local.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [AU]:BR
State or Province Name (full name) [Some-State]:Rio de Janeiro
Locality Name (eg, city) []:Rio de Janeiro
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Idealmind Solucoes LTDA
Organizational Unit Name (eg, section) []:Idealmind
Common Name (e.g. server FQDN or YOUR name) []:mi.local
Email Address []:admin@email.com

Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
wellington@wribeiro-laptop:~/ssl$ ls
mi.local.csr mi.local.key

E finalmente, vamos gerar o certificado:

wellington@wribeiro-laptop:~/ssl$ openssl x509 -req -days 365 -in mi.local.csr -signkey mi.local.key -out mi.local.crt
Signature ok
subject=/C=BR/ST=Rio de Janeiro/L=Rio de Janeiro/O=Idealmind Solucoes LTDA/OU=Idealmind/CN=mi.local/emailAddress=admin@email.com
Getting Private key
Enter pass phrase for mi.local.key:
wellington@wribeiro-laptop:~/ssl$ ls
mi.local.crt mi.local.csr mi.local.key

O seu certificado:

wellington@wribeiro-laptop:~/ssl$ cat mi.local.crt
—–BEGIN CERTIFICATE—–
MIIDzjCCArYCCQDeZgcZnVW7fjANBgkqhkiG9w0BAQUFADCBqDELMAkGA1UEBhMC
QlIxFzAVBgNVBAgMDlJpbyBkZSBKYW5laXJvMRcwFQYDVQQHDA5SaW8gZGUgSmFu
ZWlybzEgMB4GA1UECgwXSWRlYWxtaW5kIFNvbHVjb2VzIExUREExEjAQBgNVBAsM
CUlkZWFsbWluZDERMA8GA1UEAwwIbWkubG9jYWwxHjAcBgkqhkiG9w0BCQEWD2Fk
bWluQGVtYWlsLmNvbTAeFw0xMjA3MTkyMzE4MzRaFw0xMzA3MTkyMzE4MzRaMIGo
MQswCQYDVQQGEwJCUjEXMBUGA1UECAwOUmlvIGRlIEphbmVpcm8xFzAVBgNVBAcM
DlJpbyBkZSBKYW5laXJvMSAwHgYDVQQKDBdJZGVhbG1pbmQgU29sdWNvZXMgTFRE
QTESMBAGA1UECwwJSWRlYWxtaW5kMREwDwYDVQQDDAhtaS5sb2NhbDEeMBwGCSqG
SIb3DQEJARYPYWRtaW5AZW1haWwuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAzwki80Q4GHnhAYE8v2hfWGT9cWcO5aX+Say9Q3+F/Qt/eEtYcXff
O19RiCL057m5YHSFNk5sjNqqtVYBEcrzgO3MGNbbQRGwBKlpNJ2pKMuyJ7h2oRec
D/aZMclAamEPbWXYaR1v8d+3UeBoisrDCNdjo7MUfSAJfe2jIPTHUTgYudFPqGDE
wJ7Wx2t43Ellsj9fwpWtQI2Xm8aIrtj8v9qX2Np+Wloy7SDeyV0WD/7lUsvRLnXK
FntHkIQ60v+JB6JnaiIdz8+grK1xj0DF3SJfSI3FkeuGIBPjLqYZ8etmCeUFHiHW
hOvwecJ1QOGhuUbLGODeCkEs/Ny8EfKwvQIDAQABMA0GCSqGSIb3DQEBBQUAA4IB
AQBBdXCP2qAj0xiIfnU6/ypwxYqEQyya/a178MM9MPxyr2mLfRZ3S6RwG1f/x7IC
Y3Wo0eXDXZ94oqtYi1bR3BR3bPf/gY9AkT1kGw/+6nGrkAkT5Qj/x7ziI7UL2T4h
ka4Pvsk/02X6Dv5BSEAYXeIFbNHvzE3XTDMM8hZNW3ZYgHiHRC9n6GMuRcdn6Wx3
TkwCFepHD6GJzj7wjcyqjqZnAWALX8wf3qnYlJ/IuuJuNTCH+FYEx2MYYQMOKAhq
7BGE1YYY8xAOrx30sOw6VK3Xq+YPDwm+3X+jSoJyBX3bjeGeZEb7qG5VOOIUXrYM
oeT1P/8UfzJPnmZj4vWfdwrx
—–END CERTIFICATE—–
wellington@wribeiro-laptop:~/ssl$

Vamos então editar o VirtualHost

wellington@wribeiro-laptop:~/ssl$ cd /etc/apache2/sites-enabled/
wellington@wribeiro-laptop:/etc/apache2/sites-enabled$ ls
000-default
wellington@wribeiro-laptop:/etc/apache2/sites-enabled$ sudo vim 000-default

<VirtualHost *:80 *:443>
ServerName mi.local
DocumentRoot /var/www/mi/public_html
<IfModule mod_ssl.c>
SSlEngine on
SSLCertificateFile /home/wellington/ssl/mi.local.crt
SSLCertificateKeyFile /home/wellington/ssl/mi.local.key
</IfModule>
</VirtualHost>

Então reinicialize o Apache para que as configurações tomem efeito.

wellington@wribeiro-laptop:/etc/apache2/sites-enabled$ sudo /etc/init.d/apache2 restart
* Restarting web server apache2 apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName
… waiting apache2: Could not reliably determine the server’s fully qualified domain name, using 127.0.1.1 for ServerName
Apache needs to decrypt your SSL Keys for mi.local:443 (RSA)
Please enter passphrase: [ OK ]
wellington@wribeiro-laptop:/etc/apache2/sites-enabled$

Nota: talvez o seu apache não se inicialize sozinho, pois ele vai requisitar a senha do private key gerado. Neste caso, para inicializar o apache, rode sudo /etc/init.d/apache start

 

Posts Relacionados:

  • Nenhum
Categories: geral Tags:

How to execute python script from php and show output on browser

In this post I will show you how to execute a python script via php, and show the terminal output, in real time, on the browser.

You’ll be able to pass parameters from php to python.

First of all, to show the output on the browser, is realtime, you will need that PHP running in server module mode, not on CGI.

To check it, just run php_info().

We will use basically popen php function (http://br.php.net/manual/pt_BR/function.popen.php) to do it.

The code:


<?php

$param1 = "first";
$param2 = "second";
$param3 = "third";

$command = "python /home/wellington/python_script_example.py";
$command .= " $param1 $param2 $param3 2>&1";

header('Content-Type: text/html; charset=utf-8');
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
echo "<style type='text/css'>
 body{
 background:#000;
 color: #7FFF00;
 font-family:'Lucida Console',sans-serif !important;
 font-size: 12px;
 }
 </style>";

$pid = popen( $command,"r");

echo "<body><pre>";
while( !feof( $pid ) )
{
 echo fread($pid, 256);
 flush();
 ob_flush();
 echo "<script>window.scrollTo(0,99999);</script>";
 usleep(100000);
}
pclose($pid);

echo "</pre><script>window.scrollTo(0,99999);</script>";
echo "<br /><br />Script finalizado<br /><br />";
?>

And now, the Python script:


#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Script Python Example
import time
import sys

print "Initializing Python Script"

print "The passed arguments are ", sys.argv

print "Writing lines to a file"

ifile = open( "/tmp/testfile", "w+")
for i in range(0,100):
 ifile.write( "One of the lines of the file\n" )
 print "Printing line ",i," to /tmp/testfile"

ifile.close()

print "Reading and printing lines of /tmp/testfile"
ifile = open( "/tmp/testfile", "r")
for line in ifile:
 print line
ifile.close()
print "End of Python Script"

Posts Relacionados:

Categories: php Tags: , ,

Rio de Janeiro 2016 – cidade olímpica, caos total

Esse é o país da copa, na cidade Olímpica.

O metrô é ônibus, pega engarrafamento, e não tem integração com ônibus ‘normais’. O trem do metrô é lotado de pessoas sem educação. Até para sair do metrô é difícil.

Na Central do Brasil, filas imensas para venda de passagens caras, para depois esperar, em plataformas lotadas, por trens velhos que custam a aparecer e, quando aparecem, custam a sair, esperando lotar como latas de sardinhas.

Desistir do trem e tentar pegar ônibus? Somente se você quiser pegar engarrafamento, sem saber se ainda terá o desprazer de, depois de esperar um tempão por um ônibus, fazer sinal, ele ameaçar parar, você correr atrás dele, e depois ter a sensação de humilhação quando ele acelerar e deixar você e mais um monte de pessoas a ver ‘ônibus’.

Então volte para a Central do Brasil mesmo, pois é melhor enfrentar a fila gigante do trem, do que ficar no terminal rodoviário a mercê de mendingos drogados e ladrões.

Quando se sentir com menos risco de ser assaltado, escreva um texto como este, de indignação. Fotos? Poste quando chegar em casa, por que a operadora do seu celular provavelmente estará sem sinal.

Posts Relacionados:

  • Nenhum
Categories: geral Tags:

How to use string as array in MySQL and work with

In this post I will show you how to use a string array in mysql.

Mysql does not have the type Array in its procedural language. The technique developed here allows you to use the mysql array through a function, and this function can also return a string as Array.

The idea is simple: you must have a separator in the string, which is responsible for separating the data. Thus, the function will act similar to php function explode (), but it will never return an Array type. However, you can work with data inside the function, including being able to call other procedures or functions within the same. You can store data array and sql it, and work with.

Vamos ao código/The Code:


delimiter |

create function str_in_array( split_index varchar(10), arr_str varchar(200), compares varchar(20) )
  returns boolean
  begin
  declare resp boolean default 0;
  declare arr_data varchar(20);

  -- While the string is not empty
  while( length( arr_str ) > 0  ) do

  -- if the split index is in the string
  if( locate( split_index, arr_str ) ) then

      -- get the last data in the string
    set arr_data = ( select substring_index(arr_str, split_index, -1) );

    -- remove the last data in the string
    set arr_str = ( select
      replace(arr_str,
        concat(split_index,
          substring_index(arr_str, split_index, -1)
        )
      ,'')
    );
  --  if the split index is not in the string
  else
    -- get the unique data in the string
    set arr_data = arr_str;
    -- empties the string
    set arr_str = '';
  end if;

  /* HERE YOU DO SOMETHING WITH THE DATA */

  -- in this trivial example, it returns if a string is in the array
  if arr_data = compares then
    set resp = 1;
  end if;

  /* END OF YOUR CODE */
 end while;

return resp;
end
|

delimiter ;

Another example
In this example, we will use a string as array, that will pass some dates, and the function will compare with another date, and checks if there is one date in the array greate than one given.


delimiter |
create function incrementarDado( split_index varchar(10), small_date DATETIME, arr_dates varchar(200) )
  returns boolean
 begin
  declare resp boolean default 0;
  declare current datetime;

  -- while the array is not empty and it dont find a biggest date in the array
  while( length( arr_dates ) > 0 and resp = 0 ) do

    -- if it finds the split_index in the string arr_dates
    if( locate( split_index, arr_dates ) ) then

      -- Set the current date with the value of the last element in the array
      set current = ( select substring_index(arr_dates, split_index, -1) );

      -- removes the last value
      set arr_dates = ( select
                    replace(arr_dates,
                      concat(split_index,
                        substring_index(arr_dates, split_index, -1)
                      )
                    ,'')
                );
    else
      -- if it dont locate de split index

      -- set the current as the unique value in the array
      set current = arr_dates;

      -- empties the array
      set arr_dates = '';
    end if;

    -- Checks if current date is biggest then small_date
    set resp = ( select if( cast( current as DATETIME ) > small_date, 1, 0 ) );

  end while;

    -- returns if it found a date in the array biggest then small_date
   return resp;
end
|

delimiter ;

You can call the function in this way:

select incrementarDado( '|', now(), '2012-02-04|2011-10-08|2013-12-11' );

It’s very usefull!

Here is another posts that have people seeking this functional procedure:

http://www.easywayserver.com/forum/viewtopic.php?t=8
http://forums.devarticles.com/mysql-development-50/arrays-in-mysql-85353.html
http://stackoverflow.com/questions/4650238/split-a-mysql-string-from-group-concat-into-an-array-like-expression-list
http://stackoverflow.com/questions/3405724/how-to-store-data-in-array-in-mysql-function-or-procedure

Posts Relacionados:

  • Nenhum

[RESOLVIDO] Skype – libXss.so.1: cannot open shared object file

Tive o seguinte problema com o skype depois de atualizar a minha versão do ubuntu:
error while loading shared libraries: libXss.so.1: cannot open shared object file: No such file or directory

Basta rodar no terminal:


sudo apt-get install libxss1:i386 libdbus-1-3:i386 libqt4-core:i386 libqt4-gui:i386

Pronto! O Seu skype voltará a funcionar novamente ;)

Encontrei a solução aqui: http://www.pauljoyceuk.com/codex/2011/skype-error-loading-shared-library-libxss-so-1/

Posts Relacionados:

  • Nenhum

Cálculo das probabilidades

Todas as vezes que se estudam fenômeos de observação, cumpre-se distinguir o próprio fenômeno e o modelo matemático que melhor o explique.

Os fenômenos estudados pela Estatística são fenômenos cujos resultados, mesmo em condições normais de experimentação variam de uma observação para outra.

Para a explicação desses fenômenos – fenômenos aleatórios – adota-se um modelo matemático probabilístico. Nesse caso, o modelo utilizado será o CÁLCULO DAS PROBABILIDADES.

3.1 – Experimento aleatório

Todo experimento que, repetido em condições idênticas, pode apresentar diferente resultados, recebe o nome de experimento aleatório. A variabilidade de resultados deve-se ao acaso.

A fim de se entender melhor a caracterização desses experimentos, convém observar o que há de comum nos seguntes experimentos:

E1: Retirar uma carta de um baralho de 52 cartas e observar o seu naipe.
E2: Jogar uma moeda 10 vezes e observar o número de coroas obtidas.
E3: Retirar com ou sem reposição, bolas de uma urna que contém 5 bolas brancas e seis pretas.
E4: Jogar um dado e observar o número mostrado na face de cima.
E5: Contar o número de peças defeituosas da produção diária da máquina A.

A análise desses experimentos revela:

a) Cada experimento poderá ser repetido indefinidamente sob as mesmas condições.
b) Não se conhece um particular valor do evento “a priori”, porém, pode-se descrever todos os possíveis resultados – as possibilidades.
c) Quando um experimento for repetido um grande número de vezes surgirá uma regularidade, isto é, haverá uma estabilidade da fração f = r/n (frequência relativa) onde n é o numero de repetições, e r o número de sucessos obtidos.

3.2 – Espaço Amostral

Para cada experimento aleatório E, define-se espaço amostral o conjunto de todos os resultados possíveis desse experimento.

Consideremos um experimento aleatório. O conjunto de todos os possíveis resultados desse experimento é chamado espaço amostral e indicado por Ω (letra grega Ômega).

Indicaremos o número de elementos de uma espaço amostral por n(Ω).

Exemplo 1
a) E = Jogar um dado e observar o número mostrado na face de cima: Ω = {1,2,3,4,5,6}
b) E = Jogar duas moedas e observar os resultados: Ω = {(C,C), (C,K), (K,C), (K,K)} onde C = cara e K = coroa.

Exemplo 2
Lançamos uma moeda honesta e observamos a face voltada para cima: Ω = {K,C}, onde C = cara e K = coroa. => n(Ω) = 2.

Exemplo 3
Uma urna contém 5 bolas vermelhas e 4 brancas. Duas bolas são retiradas, ao acaso, sucessivamente e sem reposição. Observamos a sequência das cores das bolsa sorteadas.
O espaço amostral é dado por Ω = {(V,V), (V,B), (B,V), (B,B)} => n(Ω) = 4. Cada par é um dos postos do espaço amostral Ω.

3.3 – Evento

Evento é um conjunto de resultados do experimento, em termos de conjuntos, é um subconjunto de Ω. Em particular, Ω e Ø (conjunto vazio) são eventos. Ω é dito o evento certo e Ø o evento impossível.

Usando as operações em conjunto, podemos formar novos eventos:

A ∪ B – é o evento que ocorre se A ocorre ou B ocorre ou ambos ocorrem.
A ∩ B – é o evento que ocorre se A e B ocorrem.
Ā – é o evento que ocorre se A não ocorre.

Exemplo 1
Seja o experimento E: jogar três moedas e observar os resultados: Ω = {(c,c,c), (c,c,k), (c,k,c), (k,c,c), (k,k,k), (k,k,c), (k,c,k), (c,k,k)}
Sejam os eventos

E1: ocorrer pelo menos duas caras. Então, E1 = {(c,c,c),(c,c,k), (c,k,c), (k,c,c)}
E2: lançar um dado e observar o número de cima. Então, E2 = Ω = {1, 2, 3, 4, 5, 6} é um evento certo.
E3: ocorrência de número maior que 8.
E3 = Ø é um evento impossível.
E4: ocorrer múltiplo de 2. Então E4 = {2, 4, 6}; observe que E4 ⊂ Ω.
E5: ocorrer número ímpar. Então E5 = {1, 3, 5}; observe que E5 ⊂ Ω.

3.4 – Probabilidade de um Evento

Agora podemos quantificar o grau de confiança de qualquer evento.
Atribuímos a cada evento um número obtido da soma das imagens de cada um de seus elementos na relação de freqüência.

Exemplo
O experimento consiste em extrair uma bola do interior de uma caixa e observar sua cor. Há um total de nove bolas na caixa: duas brancas, três vermelhas e quatro pretas. Qual será a probabilidade de tirar uma bola que não seja preta?

O espaço amostral é: Ω = {vermelha, branca, preta} ou {V, B, P}
O evento “tirar uma bola de cor diferente do preto”, A = {B,V}, consta de dois elementos.

Temos as seguintes relações de frequência, ou probabilidade, para cada cor:
(B) branca = 2/9
(V) vermelha = 3/9
(P) preta = 4/9

Então a probabilidade do evento A, indicado por p(A) é:

p(A) = p(B) + p(V) = 2/9 + 3/9 = 5/9

Em alguns experimentos aleatórios, cada um dos resultados (eventos elementares) tem a mesma freqüência relativa esperada.
Este é o caso de lançar uma moeda ou um dado e comprovar o resultado. Dizemos, então que o espaço amostral é equiprovável, e que sua probabilidade é uniforme.

Posts Relacionados:

  • Nenhum
Categories: Ciência da computação Tags:

Intalando MySQL Workbench no Debian 6 Squeeze

Eu precisei instalar o MySQL Workbech no Debian, baixando diretamente do site do MySQL Gui Tools, porém estava danco um monte de erros de dependências.

Pesquisei por vários tutoriais na net para ver se encontrava uma solução, pois estava dando erro específico com dois pacotes que não consegui instalar: libatkmm-1.6-1 e libgdk-pixbuf2.0-0.

Desisti então de procurar como instalar os pacotes, pois estava tendo erros no ./configure e make install.

Encontrei este tutorial: http://www.robo47.net/blog/193-Installing-Mysql-Workbench-5.2.11-from-source-on-Debian-6.0-Squeeze, e o trasncrevo traduzido aqui.

Os passos são simples:

Faça o Download dos arquivos fontes ~ 14 MB
extraia
instale ~ 30mb dos pacotes via apt-get ou aptitude
rode autogen
make && make install
inicie o workbench

Talves demore um pouco, num notebook mais lento (p4 mobile 1,73 ghz) o comando autogen demorou 10 minutos, o comando make levou cerca de 60 minutes e o comando make install mais 4 minutos, mas se você mesmo já compilou o mysql-server, você sabe… a instalação do mysql leva um bom tempo :)

Segue em detalhes, bastando copiar e colar:

$ wget ftp://ftp.gwdg.de/pub/misc/mysql/Downloads/MySQLGUITools/mysql-workbench-oss-5.2.11.tar.gz
$ tar -xzf mysql-workbench-oss-5.2.11.tar.gz
$ cd mysql-workbench-oss-5.2.11
$ apt-get install libzip-dev libzip1 libxml2-dev libsigc++-2.0-dev libcairomm-1.0-dev libglibmm-2.4-dev libpangomm-1.4-dev libglade2-dev libaudiofile-dev libavahi-client-dev libavahi-common-dev libavahi-glib-dev libbonobo2-dev libdbus-1-dev libesd0-dev libgconf2-dev libgcrypt11-dev libgnomevfs2-dev libgnutls-dev libgpg-error-dev libpopt-dev libselinux1-dev libsepol1-dev libtasn1-3-dev libsqlite3-dev libboost1.40-dev  libmysqlclient-dev libmysqld-dev uuid-dev liblua5.1-0-dev libncurses5-dev libreadline-dev libreadline6-dev libfribidi-dev libgl1-mesa-dev libglc-dev libglc0 libglu1-mesa-dev mesa-common-dev libpcre3-dev libpcrecpp0 python-paramiko
$ ./autogen.sh --prefix=/usr/bin
$ make
$ make install
$ /usr/bin/mysql-workbench

Caso de erro na instalação, siga as dicas no blog http://www.robo47.net/blog/193-Installing-Mysql-Workbench-5.2.11-from-source-on-Debian-6.0-Squeeze

Posts Relacionados:

  • Nenhum
Categories: geral Tags:

Como criar string alfanumérica aleatória no MySQL

Para criar uma string alfanumérica aleatória no MySQL basta usar

select left(upper( convert( md5( rand() ) using utf8 )),8);

Isso gera uma string aleatória de 8 caracteres, alfanumérica, em upper case (todas as letras em maiúsculo).

Para retirar a opção de maiúsculo, basta retirar a função upper(); e no casso de quere tudo em minúsculo, basta substituí-la pela função lower().

Para aumentar ou diminuir a quantidade de caracteres, basta alterar o número 8 na consulta para o número desejado, lembrando que por se tratar de um hash md5, a string é limitada a 32 caracteres.

Caso você queira usar um sufixo ou um prefixo, basta usar a função concat(), dessa forma:

-- Prefixo
select concat('MG1',left(upper( convert( md5( rand() ) using utf8 )),5));

-- Sufixo
concat(left(upper( convert( md5( rand() ) using utf8 )),5)),'MG1');

Para acrescentar várias linhas com códigos aleatórios, você pode criar uma função que faça isso, usando um for ou while (veja como criar funções no MySQL aqui).

Related Posts Plugin for WordPress, Blogger...

Posts Relacionados:

  • Nenhum
SEO Powered by Platinum SEO from Techblissonline