Postagens

Mostrando postagens com o rótulo programação

Postagem em destaque

Huguinho e Zezinho surfando com granizo

Imagem
Certa vez, em outubro de 2023, Huguinho e seu amigo Zezinho foram surfar no final da tarde. O vento estava forte e a chuva, constante. Quando chegaram perto da praia, mal conseguiam segurar suas pranchas. O mar estava bem mexido, e ainda tiveram que andar cerca de 1 km até o pico. Quando estavam se aproximando, começou a cair granizo! Dava para ouvir claramente o barulho das pedras contra as pranchas. Eles se abrigaram embaixo do posto avançado dos salva-vidas, mas não adiantou muito. Ficaram olhando o mar — que estava bem agitado e quebrando bem longe — e perceberam que estava difícil passar a arrebentação. Como o granizo não parava, decidiram entrar assim mesmo. Logo que entraram no mar, o granizo cessou, mas aí começou o verdadeiro desafio: passar a arrebentação. Depois de levar várias séries na cabeça e quase sem forças, finalmente conseguiram. E começaram os raios! Quando estavam quase decidindo sair por causa deles, os raios pararam. Ufa! É algo estranho: você está lá, só você (c...

Upload com PHP+JQUERY em AJAX e na mesma página

Se você já perdeu horas procurando um código em PHP que funcionasse para fazer o upload de imagens mas que fizesse isso com AJAX e ainda por cima na mesma página, espero que esse post te ajude! Crie uma pasta para armazenar as imagens que aqui chamo de upload. Copie e cole o código abaixo (testado com XAMPP localmente): <?php if(isset($_FILES['file']['name'])){    /* Pega o nome do arquivo*/    $filename = $_FILES['file']['name'];    /* Local onde sera salvo o arquivo*/    $location = "upload/".$filename;    $imageFileType = pathinfo($location,PATHINFO_EXTENSION);    $imageFileType = strtolower($imageFileType);    /* Extensoes validas */    $valid_extensions = array("jpg","jpeg","png");    /* Checa a extensao do arquivo */    if(in_array(strtolower($imageFileType), $valid_extensions)) {       /* Faz o upload */       move_uploaded_file($_FILES['file']['...

Arrays: elementos repetidos e número de ocorrências (em Java)

Resolvi fazer, em Java, o mesmo algoritmo mostrado em Arrays: elementos repetidos e número de ocorrências . Assim é possível comparar os dois códigos e talvez ajude a escolher uma linguagem de programação ou pelo menos mostrar as principais diferenças entre elas. Entre as duas (C++ e Java) acho que a versão feita em Java ficou mais clara. package teste; import java.util.ArrayList; public class Run { public static void main(String[] args) { ArrayTeste at = new ArrayTeste(); at.start(); } } // classe que contem o valor do número e a quantidade de ocorrências class Number { int value; int count; public Number(int x, int y){ value = x; count = y; } } // classe principal class ArrayTeste{ void start(){ // array de entrada int a[] = {5, 3, 5, 1, 1, 1, 2, 1}; int i, j; boolean found; ArrayList<number> lista = new ArrayList<number>(); // percorre o array de entrada for(i=0; i<a.length; i++){ // seta c...

Parâmetro não documentado no CFEXECUTE

Esse post é bem específico para desenvolvedores Coldfusion, mas como é um parâmetro não documentado acho que é importante. Oficialmente, a tag CFEXECUTE possui a seguinte sintaxe: O retorno do comando é dado pelos atributos outputFile ou variable . O problema é que somente as saídas do stdout são direcionadas para esses atributos. Caso você precise do stderr a solução é redirecionar o stderr para o stdout . Como sempre, deixei o melhor para o final. Ou você pode usar o parâmetro não documentado do CFEXECUTE, errorVariable , que retorna o... stderr ! A sintaxe é erroVariable = "error variable name". Para endender mais sobre os operadores de redirecionamento, sugiro o texto da Microsoft.

Linguagem de programação, qual usar?

Atualizado às 12:30. Às vezes, me perguntam qual linguagem de programação deve-se usar. Sempre respondo que todas (ou muitas), pois depende do que você quer desenvolver. Se você perguntar para um desenvolvedor Java, ele vai falar que Java é melhor; se perguntar para um desenvolvedor C#, o C# é melhor, é lógico. O mesmo ocorre com todas as outras linguagens de programação. Portanto, não existe uma resposta mágica. Mas (sempre há um "mas"), podemos mostrar quais são as melhores e/ou mais utilizadas. No Google Code Jam , que c onheci através do site do Daniel Quadros (ele tem mais paciência que eu e explica detalhadamente cada problema da competição, vale a pena dar uma olhada), milhares dos melhores programadores do mundo tentam avançar pelas várias etapas da competição, e já que são os melhores é de supor que as linguagens por eles utilizadas também sejam as melhores. No terceiro round do GCJ 2011, as linguagens mais utilizadas foram: C++, com 49% Java, com 21% Python...

Arrays: elementos repetidos e número de ocorrências

Problema: dado um determinado array, como contar quais os elementos repetidos e o número de ocorrências de cada elemento? Existem diversas maneiras de se conseguir isso, até porque algumas linguagens possuem uma extensa biblioteca para utilização com arrays. Mas, para treinar um pouco, vou mostrar uma solução em C++. O código já está comentado. #include <stdio.h> #include <string.h> #include <iostream> using namespace std; // estrutura que contem o valor do número e a quantidade de ocorrências struct number { int value; int count; }; // tamanho definido arbitrariarmente (para facilitar o exemplo) #define MAX 8 // array de entrada int a[MAX] = {5, 3, 5, 1, 1, 1, 2, 1}; // array com estrutura do número number n[MAX]; int used = -1; int found = 0; const int NUL = -1; int main(){ int i, j; // inicializa array for(i=0; i<MAX; i++){ n[i].value = NUL; n[i].count = NUL; } for(i=0; i<MAX; i++){ found = 0; for(j=0; j...

Quadrado Mágico - Parte 1

Irei publicar uma série de postagens sobre algoritmos para resolução dos Quadrados Mágicos . A postagem de hoje é bem simples e tem algumas limitações (por exemplo, só aceita quadrados de grau 3). Mas minha intenção é justamente essa: pegar o algoritmo e ir tornando-o mais complexo e mais genérico. No futuro, tentarei adaptar esse algoritmo para resolução de outro quebra-cabeças que gosto muito: SUDOKU. Mas vamos ao que interessa, que é o código do programa. Desenvolvi em Delphi, mas ele é simples e facilmente adaptável a outras linguagens: {$APPTYPE CONSOLE} program qm; uses SysUtils, Windows, Dialogs, Math, Forms; const GRAU = 3; // Grau do quadrado GRAU2 = GRAU*GRAU; // Total de elementos do quadrado TOTAL = (((1 + GRAU2) * GRAU2) div 2) div GRAU; // Soma total a ser alcançada type TAQuad = array[1..GRAU2] of integer; // Tipo Quadrado var q: TAQuad; limite: int64; // -------------------------------------------------------- // Mostra...

Removendo caracteres especiais de uma string

Algumas vezes precisamos remover alguns caracteres especiais de uma string. A maneira mais fácil de fazermos isso é utilizando as expressões regulares. Seu uso não é nenhum bicho de 7 cabeças. Segue aqui, um exemplo em ColdFusion. texto = 'Somente_Numeros e Letras 123456*'; retorno = reReplace(texto, '[^[:digit:][:alpha:]]', '', 'all'); // resultado: SomenteNumeroseLetras123456

Visualizando código fonte com SyntaxHighlighter

Já havia visto em vários blogs, o código de alguns programas bem formatado, com realce de cores, etc. Resolvi ir atrás e descobri que foram feitos utilizando a biblioteca SyntaxHighlighter . Se você quiser utilizá-lo em seu blog siga o roteiro abaixo. 1. Entre em Layout > Editar HTML e insira o seguinte código logo acima da tag </HEAD> : <link href="http://alexgorbatchev.com/pub/sh/2.1.364/styles/shCore.css" rel="stylesheet" type="text/css"> <link href="http://alexgorbatchev.com/pub/sh/2.1.364/styles/shThemeDefault.css" rel="stylesheet" type="text/css"> <script src="http://alexgorbatchev.com/pub/sh/2.1.364/scripts/shCore.js" type="text/javascript"> <script src='http://alexgorbatchev.com/pub/sh/2.1.364/scripts/shBrushCpp.js' type='text/javascript'/> <script src='http://alexgorbatchev.com/pub/sh/2.1.364/scripts/shBrushJava.js' type='t...

Lista de serviços do Windows

Esses dias fiz algumas alterações na inicialização de alguns serviços do Windows e depois não lembrava mais quais eu tinha habilitado/desabilitado. Para resolver esse problema, fiz um pequeno programa em Delphi que salva o status de inicialização de todos os serviços. Depois de compilá-lo, basta executar diretamente no Prompt de Comando. program SaveSvc; {$APPTYPE CONSOLE} uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Registry; var reg : TRegistry; list: TStringList; arq: text; i, n: integer; nomeArquivo: string; begin if paramstr(1) '' then nomeArquivo := paramstr(1) else nomeArquivo := 'services.reg'; // cria a lista, vazia, em memória list := TStringList.Create; // cria o registro reg := TRegistry.Create; // localização da chave reg.RootKey := HKEY_LOCAL_MACHINE; // abre a chave dos serviços reg.OpenKeyReadOnly('\SYSTEM\CurrentControlSet\Services') ; // popula a lista com todos os serviços reg.GetKeyNames...