Postagem em destaque

WSL: Backup e Restauração

Imagem
Às vezes você tem um drive mais rápido (SSD) que o outro (HD). É o meu caso: meu drive C, é um SSD de 256 GB e meu drive D, é um HD de 512 GB. Um é pequeno e rápido; outro é grande e lento.  Meu drive C, por ser pequeno, acabou ficando sem espaço. Então fui pesquisar por grandes arquivos (usei o excelente TreeSize Free para isso) e descobri um tal de ext4.vhdx que tinha 29 GB. Esse arquivo é a imagem do disco do WSL no Windows e é normal ficar grande. O problema é que mesmo você apagando arquivos ele não diminui. E quando você usa o Docker, a situação se agrava rapidamente. Então, descobri uma maneira de compactar esse arquivo/disco. É um comentário da KarolineWss numa issue do WSL. Funciona maravilhosamente bem. Tanto que consegui diminuir praticamente pela metade o arquivo.  Mas para fazer isso, claro, pesquisei como fazer backup (e restauração). Esse artigo é sobre isso. E com um bônus, esse o arquivo fica numa localização meio complicada para humanos, mas fazendo um backup e uma

Padrão nos resultados da Mega-Sena

Você sabia quem em 58% dos resultados da Mega-Sena, um número vai se repetir do resultado anterior? Então, espere um concurso que não repita nenhum número do concurso anterior e escolha um número para repetir! #ficadica

Apesar de parecer brincadeira, isso é sério. Ainda mais se você escolher o quarto número (em ordem crescente), que é o que mais repete.

Para quem tem curiosidade aqui está o download do programa, código fonte e arquivo de resultados. E abaixo o código fonte do programa em C++.

#include <iostream>
#include <string>
#include <fstream>
#include <vector>
#include <stdio.h>
#include <stdlib.h>

using namespace std;

#define rep(i, n) for (int i(0), _n(n); i < _n; ++i)

int main() {
string lido = "";

int a[] = {0,0,0,0,0,0}, b[] = {0,0,0,0,0,0}, c[] = {0,0,0,0,0,0}, p[] = {0,0,0,0,0,0};
int l = 0, pos = 0, linha = 0;
int total = 0;

// abre o arquivo
ifstream infile("resultados.txt", ios::in);

// le a primeira linha
linha++;
getline(infile, lido);
rep(i,6){
pos = lido.find(',', 0);
a[i] = atoi(lido.substr(0, pos).c_str());
lido = lido.substr(pos + 1, 20);
}

// le a proxima linha, enquanto nao terminar o arquivo
while (!infile.eof()) {
linha++;
getline(infile, lido);
rep(i,6){
pos = lido.find(',', 0);
b[i] = atoi(lido.substr(0, pos).c_str());
lido = lido.substr(pos + 1, 20);
}

// compara as duas últimas linhas
rep(i, 6)
rep(j, 6)
if (a[i] == b[j]) c[j] = b[j];

// totaliza os resultados iguais
rep(i, 6){
if (c[i] != 0) {
total++;
p[i]++;
}
c[i] = 0;
}

// limpa o resultado e prepara a próxima consulta
rep(i,6){
a[i] = b[i];
b[i] = 0;
}
}

cout << "Linhas lidas: " << linha << endl;
cout << "Numeros repetidos: " << total << endl;
cout << "Repeticoes por posicao: " << endl;
rep(i,6){
cout << "#" << i+1 << ": " << p[i] << endl;
}

// fecha o arquivo
infile.close();

cin.get();
return 0;
}


Comentários

Postagens mais visitadas deste blog

Netflix não mostra ícone de streaming

Google Hacking

FTP não funciona no PHP