(PHP) Baixar CDs completos pelo Vagalume



Saudações 

Pensando em algo dinâmico e eficiente, resolvi facilitar a vida de muitas pessoas que passam horas no Vagalume procurando nome de músicas da sua banda favorita para baixar. Pensando nisto criei um sistema em php que automaticamente procura todas as músicas de um grupo e retorna o link direto para baixar via-4Shared. Facilitando muito





Dica
Minha dica é que utilizem algum gerenciador de download para baixar todas as músicas automáticamente

É isto, espero que tenham gostado deste sisteminha!

Abraços gente

(Matematica) Explicação de XOR

XOR é um operador que utiliza como base números binários e a verificação Numero a Numero deles usando a lógica booleana disjunção exclusiva que é baseada na seguinte regra


Números iguais = 0
1 + 1 = 0
0 + 0 = 0

Números diferentes = 1
1 + 0 = 1
0 + 1 = 0

É parecido com aquele sistema que aprendendo na escola

++ = +
-- =  +

-+ = -
+- = -


Vou explicar com base no algorítimo XOR SWAP.. XOR Swap que é um algorítimo de troca de valores na memória. Basicamente quando tenho o valor 10 e o valor 5 (exemplo) o operador xor irá interpreta-los utilizando a lógica OU EXCLUSIVO (dai vem o termo XOR "exclusive or" receio)


Em XOR Swap fizemos
5 ^ 10 -> passo 1 
(5 ^ 10) ^ 5 -> passo 2
((5 ^ 10) ^ 5) ^ 10 -> passo 3
(explicarei como XOR fez isto)

Que resultando dará:
10,5 (antes era 5,10 lembra?) -> INVERTEMOS OS NÚMEROS NA MEMÓRIA 

Mas como ocorre está "mágica"? .. Agora vou explicar

A operação tem como base números binários e a comparação número a número
10 = 1010 em binário
5 = 101 e, binário
_______________________

Sendo assim vamos aos passos

PASSO 1:
Comparando número-número (eles estão na vertical em binário, preste atenção)
  1 = 1 (quando não há valores o valor é 0 logo 0 com 1 é 1)
10 = 1 
01 = 1
10 = 1
(a coluna a esquerda é o número cinco em binário a coluna da direita é o dez em binário, são 2 números binários na verical) 1111 foi o resultado

Importante: 1111 em binário é 15 por este motivo (5 ^ 10) é 15

Resultado:
5 ^ 10 logo é: 1111 sendo assim vamos para o passo 2

PASSO 2
Então fizemos (5 ^ 10) ^ 5 (sendo que 5 é 101 em bin e (5 ^ 10)  é 1111)

1   = 1  (true + false é true)
11 = 0 (true + true é false)
10 = 1  (true + false é true)
11 = 0 (true  + true é false)

(primeira coluna é o resultado do passo 1 a segunda coluna é o 5 em binário)

Resultado:
Logo ((5 ^ 10) ^ 5) é: 1010 
Importante: 1010 em bínario é 10 logo por isto  ((5 ^ 10) ^ 5) dá como resultado 10

PASSO 3
Agora vamos fazer
((5 ^ 10) ^ 5) ^ 10 

Levando em conta que (5 ^ 10) ^ 5) é 1010 em binário (10 em decimal) . Nesta etapa tem um detalhe. 

Se for ao pé da letra
(5 ^ 10) ^ 5) ^10 dará zero
Pois:
11 = 0
00 = 0
11 = 0
00 = 0

Fail? Quase.
O que acontece é que na verdade não é (5 ^ 10) ^ 5) ^10 mas sim (5 ^ 10) ^ 5) ^ VALOR DO PRIMEIRO PASSO
Porque? Porque quando fizemos o xor swap a variável X irá assumir outro valor no passo 1. LEMBRE-SE

x = 5
y = 10

x ^= y RESULTADO 15 (1 passo)
y ^= x RESULTADO 10 (2 passo)
x ^= y -> A VARIAVEL X TEM VALOR 15 NÃO 10. Logo é 15 ^ 10 

É um pega ratão e tanto, mas mesmo assim

15 = 1111 em binário
10 = 1010 em binário

11 = 0
10 = 1
11 = 0
10 = 1

0101 = 5 PERCEBERAM? X assumiu valor 5 (3 passo) e Y ficou com valor 10 (2 passo)

Assim efetuando o troque de dar swap nos valores.
XOR é usado em computador, como principal ferramenta para portas lógicas, verdadeiro e falso. Muito tempo andei procurando sobre XOR, raramente você encontra alguém explicar como realmente é feito este cálculo, isto porque 90% das pessoas apenas sabem como teoricamente funciona, mas dando para fazer um calculo, ela não faz.

Abraços

(Delphi) Form acima de tudo (sobreposição de janelas)

Já pensou em como deixar seu programa delphi por cima de todos programas? Até mesmo por cima do menu iniciar e das outras janelas ativas? Bem isto é bastante fácil, utilizando um simples truque de uma linha podemos fazer com que essa operação seja sobreposta em seu programa

Apenas coloque a seguinte função em um evento inicial de form (onShow ou onCreate do form):

SetWindowPos(Form1.handle, HWND_TOPMOST, Form1.Left, Form1.Top,Form1.Width, Form1.Height, 0);

Espero que tenham gostado. Abraços!

(Javascript) Inserir código dinamicamente

Muitas pessoas se perguntam em como inserir código javascript dinamicamente na página atual. Simpes! Podemos utilizar ajax mais eval. Para quem não sabe ajax é uma forma de se acessar outro site pegando seu conteúdo, sendo método post ou get. Enquanto eval transforma string em código e executa o mesmo.

Observe

url = "http://site com codigo js.com/js.ja";
http = (window.XMLHttpRequest) ? new window.XMLHttpRequest : new ActiveXObject("MSXML2.XMLHTTP.3.0");  // inicialziar variável
http.open("GET", url, true); // iniciar a requisição
http.onreadystatechange = function() // ao receber os dados
{
if(http.readyState == 4 && http.status == 200)
{
eval( http.responseText); // executar o código
}
}
http.send(null); // enviar requisição

Simples não é? Você pode executar o código a qualquer momento, bastando isto.

(Batch) Bloquear Sites

Ano passado criei um projeto que bloqueava sites por batchs através do famoso arquivo hosts. É feito em todo em batch, totalmente leve, eficiente e seguro!

Segue aqui o código do programa:

@echo off
echo     "_____________________________"
echo     "|           Acesse:         |"
echo     "| www.ipsbruno.blogspot.com |"
echo     "_____________________________"
pause
echo.
echo.
echo Digite a URL da Pagina a Ser Bloqueada
echo ou
echo Feche o Programa
echo.
set /p page=Digite a Pagina a ser Bloqueada :
echo.
Attrib -r -s -h %SystemRoot%\system32\drivers\etc\hosts
echo 127.0.0.1 %page% >>%SystemRoot%\system32\drivers\etc\hosts
echo Pagina %page% Bloqueada com Sucesso!
pause

Legal não é? Inclusive fiz uma demonstração aqui:

(C) Joguinho de Adivinhar Números

Muitos de vocês já pensaram. "O que faço para treinar minha programação na x linguagem", bem, na minha opinião precisamos treinar diariamente e com funções especificas, um exemplo disto é o joguinho de adivinhar números, que eu particularmente fazia muito como projeto inicial quando eu estava conhecendo a linguagem.

Observe que tem bastante condicionais, algumas variáveis e estruturas básicas para você treinar seu conhecimento.

Aqui o código que fiz logo quando aprendi C

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>

int main()
{
//Enfeites
system("title [iPs TeaM] - Campeonato Programadores - Projeto Bruno da Silva");
system("color 8f");
printf("Digite seu numero de 0 a 10 para tentar adivinhar: \n\n");
//Pegar número int escolhido = 0;
scanf("%d", &escolhido);

if(escolhido < 0 || escolhido > 10)
{
printf("Erro, deve escolher um numero entre 0 e 10 \n\n");    
return system("pause");
}
// Checar
srand (time(NULL));
int random = (rand() % 10);
if(escolhido == random)
{
printf("Parabens você conseguiu acertar o numero! \n\n");
}
else
{
printf("\n\n  Voce errou, o numero era: %d \n\n", random);
}
return system("pause");
}

(PHP) Números primos em PHP

Já pensou em como checar se um número é primo ou não? Bem, dependendo do número, pode haver padrões que definem se ele é realmente primo ou não através de simples cálculos, porém caso o número não se encaixar em tal regra necessitamos dividir várias vezes até checar se ele é primo ou não.

Assim, fiz uma função de uso bem simples, que checa com precisão se o número é primo ou não

function isPrime($iValor)
{
$iCount = 4;
if( ($iValor == 2) || ($iValor == 3) ) return true;
if( !($iValor % 2) || !($iValor % 3) || !($iValor % 4) || ($iValor == 1)) return false;
while(++$iCount <= sqrt($iValor))
if( !($iValor % $iCount) && ($iValor != $iCount) ) return false;
return true;
}


isPrime(10) caso 10 for primo retorna verdadeiro, caso não falso. Bem simples o uso não é?

(PHP) Função CHR recriada

Como prometido, eu iria colocar aqui mais funções nativas criadas do zero, conforme o artigo anterior segue o trecho de código para função chr

function chr($i) {
$chrs = array(0 => '\0',1 => ' ',2 => ' ',3 => ' ',4 => ' ',5 => ' ',6 => ' ',7 => ' ',8 => ' ',9 => ' ',10 => ' ',11 => ' ',12 => ' ',13 => ' ',14 => ' ',15 => ' ',16 => ' ',17 => ' ',18 => ' ',19 => ' ',20 => ' ',21 => ' ',22 => ' ',23 => ' ',24 => ' ',25 => ' ',26 => ' ',27 => ' ',28 => ' ',29 => ' ',30 => ' ',31 => ' ',32 => ' ',33 => '!',34 => '\"',35 => '#',36 => '$',37 => '%',38 => '&',39 => '\'',40 => '(',41 => ')',42 => '*',43 => '+',44 => ',',45 => '-',46 => '.',47 => '/',48 => '0',49 => '1',50 => '2',51 => '3',52 => '4',53 => '5',54 => '6',55 => '7',56 => '8',57 => '9',58 => ':',59 => ';',60 => '<',61 => '=',62 => '>',63 => '?',64 => '@',65 => 'A',66 => 'B',67 => 'C',68 => 'D',69 => 'E',70 => 'F',71 => 'G',72 => 'H',73 => 'I',74 => 'J',75 => 'K',76 => 'L',77 => 'M',78 => 'N',79 => 'O',80 => 'P',81 => 'Q',82 => 'R',83 => 'S',84 => 'T',85 => 'U',86 => 'V',87 => 'W',88 => 'X',89 => 'Y',90 => 'Z',91 => '[',92 => '\\',93 => ']',94 => '^',95 => '_',96 => '`',97 => 'a',98 => 'b',99 => 'c',100 => 'd',101 => 'e',102 => 'f',103 => 'g',104 => 'h',105 => 'i',106 => 'j',107 => 'k',108 => 'l',109 => 'm',110 => 'n',111 => 'o',112 => 'p',113 => 'q',114 => 'r',115 => 's',116 => 't',117 => 'u',118 => 'v',119 => 'w',120 => 'x',121 => 'y',122 => 'z',123 => '{',124 => '|',125 => '}',126 => '~',127 => '',128 => '€',129 => '',130 => '‚',131 => 'ƒ',132 => '„',133 => '…',134 => '†',135 => '‡',136 => 'ˆ',137 => '‰',138 => 'Š',139 => '‹',140 => 'Œ',141 => '',142 => 'Ž',143 => '',144 => '',145 => '‘',146 => '’',147 => '“',148 => '”',149 => '•',150 => '–',151 => '—',152 => '˜',153 => '™',154 => 'š',155 => '›',156 => 'œ',157 => '',158 => 'ž',159 => 'Ÿ',160 => ' ',161 => '¡',162 => '¢',163 => '£',164 => '¤',165 => '¥',166 => '¦',167 => '§',168 => '¨',169 => '©',170 => 'ª',171 => '«',172 => '¬',173 => '-',174 => '®',175 => '¯',176 => '°',177 => '±',178 => '²',179 => '³',180 => '´',181 => 'µ',182 => '¶',183 => '·',184 => '¸',185 => '¹',186 => 'º',187 => '»',188 => '¼',189 => '½',190 => '¾',191 => '¿',192 => 'À',193 => 'Á',194 => 'Â',195 => 'Ã',196 => 'Ä',197 => 'Å',198 => 'Æ',199 => 'Ç',200 => 'È',201 => 'É',202 => 'Ê',203 => 'Ë',204 => 'Ì',205 => 'Í',206 => 'Î',207 => 'Ï',208 => 'Ð',209 => 'Ñ',210 => 'Ò',211 => 'Ó',212 => 'Ô',213 => 'Õ',214 => 'Ö',215 => '×',216 => 'Ø',217 => 'Ù',218 => 'Ú',219 => 'Û',220 => 'Ü',221 => 'Ý',222 => 'Þ',223 => 'ß',224 => 'à',225 => 'á',226 => 'â',227 => 'ã',228 => 'ä',229 => 'å',230 => 'æ',231 => 'ç',232 => 'è',233 => 'é',234 => 'ê',235 => 'ë',236 => 'ì',237 => 'í',238 => 'î',239 => 'ï',240 => 'ð',241 => 'ñ',242 => 'ò',243 => 'ó',244 => 'ô',245 => 'õ',246 => 'ö',247 => '÷',248 => 'ø',249 => 'ù',250 => 'ú',251 => 'û',252 => 'ü',253 => 'ý',254 => 'þ',255 => 'ÿ',256 => '\0',257 => ' ',258 => ' ',259 => ' ',260 => ' ',261 => ' ',262 => ' ',263 => ' ',264 => ' ',265 => ' ',266 => ' ',267 => ' ',268 => ' ',269 => ' ',270 => ' ',271 => ' ',272 => ' ',273 => ' ',274 => ' ',275 => ' ',276 => ' ',277 => ' ',278 => ' ',279 => ' ',280 => ' ',281 => ' ',282 => ' ',283 => ' ',284 => ' ',285 => ' ',286 => ' ',287 => ' ',288 => ' ',289 => '!',290 => '\"',291 => '#',292 => '$',293 => '%',294 => '&',295 => '\'',296 => '(',297 => ')',298 => '*',299 => '+',300 => ',',301 => '-',302 => '.',303 => '/',304 => '0',305 => '1',306 => '2',307 => '3',308 => '4',309 => '5',310 => '6',311 => '7',312 => '8',313 => '9',314 => ':',315 => ';',316 => '<',317 => '=',318 => '>',319 => '?',320 => '@',321 => 'A',322 => 'B',323 => 'C',324 => 'D',325 => 'E',326 => 'F',327 => 'G',328 => 'H',329 => 'I',330 => 'J',331 => 'K',332 => 'L',333 => 'M',334 => 'N',335 => 'O',336 => 'P',337 => 'Q',338 => 'R',339 => 'S',340 => 'T',341 => 'U',342 => 'V',343 => 'W',344 => 'X',345 => 'Y',346 => 'Z',347 => '[',348 => '\\',349 => ']',350 => '^',351 => '_',352 => '`',353 => 'a',354 => 'b',355 => 'c',356 => 'd',357 => 'e',358 => 'f',359 => 'g',360 => 'h',361 => 'i',362 => 'j',363 => 'k',364 => 'l',365 => 'm',366 => 'n',367 => 'o',368 => 'p',369 => 'q',370 => 'r',371 => 's',372 => 't',373 => 'u',374 => 'v',375 => 'w',376 => 'x',377 => 'y',378 => 'z',379 => '{',380 => '|',381 => '}',382 => '~',383 => '',384 => '€',385 => '',386 => '‚',387 => 'ƒ',388 => '„',389 => '…',390 => '†',391 => '‡',392 => 'ˆ',393 => '‰',394 => 'Š',395 => '‹',396 => 'Œ',397 => '',398 => 'Ž',399 => '',400 => '',401 => '‘',402 => '’',403 => '“',404 => '”',405 => '•',406 => '–',407 => '—',408 => '˜',409 => '™',410 => 'š',411 => '›',412 => 'œ',413 => '',414 => 'ž',415 => 'Ÿ',416 => ' ',417 => '¡',418 => '¢',419 => '£',420 => '¤',421 => '¥',422 => '¦',423 => '§',424 => '¨',425 => '©',426 => 'ª',427 => '«',428 => '¬',429 => '-',430 => '®',431 => '¯',432 => '°',433 => '±',434 => '²',435 => '³',436 => '´',437 => 'µ',438 => '¶',439 => '·',440 => '¸',441 => '¹',442 => 'º',443 => '»',444 => '¼',445 => '½',446 => '¾',447 => '¿',448 => 'À',449 => 'Á',450 => 'Â',451 => 'Ã',452 => 'Ä',453 => 'Å',454 => 'Æ',455 => 'Ç',456 => 'È',457 => 'É',458 => 'Ê',459 => 'Ë',460 => 'Ì',461 => 'Í',462 => 'Î',463 => 'Ï',464 => 'Ð',465 => 'Ñ',466 => 'Ò',467 => 'Ó',468 => 'Ô',469 => 'Õ',470 => 'Ö',471 => '×',472 => 'Ø',473 => 'Ù',474 => 'Ú',475 => 'Û',476 => 'Ü',477 => 'Ý',478 => 'Þ',479 => 'ß',480 => 'à',481 => 'á',482 => 'â',483 => 'ã',484 => 'ä',485 => 'å',486 => 'æ',487 => 'ç',488 => 'è',489 => 'é',490 => 'ê',491 => 'ë',492 => 'ì',493 => 'í',494 => 'î',495 => 'ï',496 => 'ð',497 => 'ñ',498 => 'ò',499 => 'ó');
return $chrs[$i];
}

A função chr retorna um caractere a partir de um valor decimal, é bastante eficiente para quem deseja gerar strings aleatórias e outros, só depender da criatividade.

A lógica desta função, bem como a outra função ord é apenas uma array que armazena o valor do caractere x valor decimal, depois só pegar o valor da array por um destes índices retornando o que desejamos.

(PHP) Função ORD recriada

Oi gente, pensando em criar algumas funções do zero, resolvi recriar funções nativas utilizando meus próprios métodos. Primeiramente vamos começar com uma cópia fiel de ord

Para quem não sabe, em PHP a função ord é responsável por retornar o valor decimal de um caractere

Segue o trecho de código:

function ord($c) {
$ords = array('\0' =>0,' ' =>1,' ' =>2,' ' =>3,' ' =>4,' ' =>5,' ' =>6,' ' =>7,' ' =>8,' ' =>9,' ' =>10,' ' =>11,' ' =>12,' ' =>13,' ' =>14,' ' =>15,' ' =>16,' ' =>17,' ' =>18,' ' =>19,' ' =>20,' ' =>21,' ' =>22,' ' =>23,' ' =>24,' ' =>25,' ' =>26,' ' =>27,' ' =>32,'!' =>33,'\"' =>34,'#' =>35,'$' =>36,'%' =>37,'&' =>38,"'" =>39,'(' =>40,')' =>41,'*' =>42,'+' =>43,',' =>44,'-' =>45,'.' =>46,'/' =>47,'0' =>48,'1' =>49,'2' =>50,'3' =>51,'4' =>52,'5' =>53,'6' =>54,'7' =>55,'8' =>56,'9' =>57,':' =>58,';' =>59,'<' =>60,'=' =>61,'>' =>62,'?' =>63,'@' =>64,'A' =>65,'B' =>66,'C' =>67,'D' =>68,'E' =>69,'F' =>70,'G' =>71,'H' =>72,'I' =>73,'J' =>74,'K' =>75,'L' =>76,'M' =>77,'N' =>78,'O' =>79,'P' =>80,'Q' =>81,'R' =>82,'S' =>83,'T' =>84,'U' =>85,'V' =>86,'W' =>87,'X' =>88,'Y' =>89,'Z' =>90,'[' =>91,'\\' =>92,']' =>93,'^' =>94,'_' =>95,'`' =>96,'a' =>97,'b' =>98,'c' =>99,'d' =>100,'e' =>101,'f' =>102,'g' =>103,'h' =>104,'i' =>105,'j' =>106,'k' =>107,'l' =>108,'m' =>109,'n' =>110,'o' =>111,'p' =>112,'q' =>113,'r' =>114,'s' =>115,'t' =>116,'u' =>117,'v' =>118,'w' =>119,'x' =>120,'y' =>121,'z' =>122,'{' =>123,'|' =>124,'}' =>125,'~' =>126,'' =>127,'€' =>128,'' =>129,'‚' =>130,'ƒ' =>131,'„' =>132,'…' =>133,'†' =>134,'‡' =>135,'ˆ' =>136,'‰' =>137,'Š' =>138,'‹' =>139,'Œ' =>140,'' =>141,'Ž' =>142,'' =>143,'' =>144,'‘' =>145,'’' =>146,'“' =>147,'”' =>148,'•' =>149,'–' =>150,'—' =>151,'˜' =>152,'™' =>153,'š' =>154,'›' =>155,'œ' =>156,'' =>157,'ž' =>158,'Ÿ' =>159,' ' =>160,'¡' =>161,'¢' =>162,'£' =>163,'¤' =>164,'¥' =>165,'¦' =>166,'§' =>167,'¨' =>168,'©' =>169,'ª' =>170,'«' =>171,'¬' =>172,'-' =>173,'®' =>174,'¯' =>175,'°' =>176,'±' =>177,'²' =>178,'³' =>179,'´' =>180,'µ' =>181,'¶' =>182,'·' =>183,'¸' =>184,'¹' =>185,'º' =>186,'»' =>187,'¼' =>188,'½' =>189,'¾' =>190,'¿' =>191,'À' =>192,'Á' =>193,'Â' =>194,'Ã' =>195,'Ä' =>196,'Å' =>197,'Æ' =>198,'Ç' =>199,'È' =>200,'É' =>201,'Ê' =>202,'Ë' =>203,'Ì' =>204,'Í' =>205,'Î' =>206,'Ï' =>207,'Ð' =>208,'Ñ' =>209,'Ò' =>210,'Ó' =>211,'Ô' =>212,'Õ' =>213,'Ö' =>214,'×' =>215,'Ø' =>216,'Ù' =>217,'Ú' =>218,'Û' =>219,'Ü' =>220,'Ý' =>221,'Þ' =>222,'ß' =>223,'à' =>224,'á' =>225,'â' =>226,'ã' =>227,'ä' =>228,'å' =>229,'æ' =>230,'ç' =>231,'è' =>232,'é' =>233,'ê' =>234,'ë' =>235,'ì' =>236,'í' =>237,'î' =>238,'ï' =>239,'ð' =>240,'ñ' =>241,'ò' =>242,'ó' =>243,'ô' =>244,'õ' =>245,'ö' =>246,'÷' =>247,'ø' =>248,'ù' =>249,'ú' =>250,'û' =>251,'ü' =>252,'ý' =>253,'þ' =>254);
return $ords[$c];
}

Espero que tenham gostado, é bom para estudos. Vou postar outras funções que recriei da mesma forma.

Abraço

(Delphi) Separar tempo string

Como converter tempo para int? Utilizando H:M:S:MSS podemos separar os valores facilmente. Observe


            h := Strtoint(Copy(Time,00,02));
            m := Strtoint(Copy(Time,04,02));
            s := Strtoint(Copy(Time,07,02));
            l := Strtoint(Copy(Time,10,03));
     


time = tempo em string
h = horas
m = minutos
s = segundos
l = milisegundos

Simples, não é? Espero que tenham gostado. Abraços

(PHP) sizeof em arrays


Em alguns artigos atrás eu tinha explicado um pouco sobre COUNT. Mas esqueci de citar sobre uma curiosidade interessante sobre SIZEOF ..

Se você programava outra linguagem, e não sabia qual era a função de count em php, se prepare pois em php, diferente de outras linguagens a função count (normalmente utilizada) é nada mais nada menos do que a mesma função de sizeof. 

Logo, ambas retornam o valor total de indices de uma array, sem diferença de velocidade ou modo de execução.

Este caso é bastante parecido com print e echo. Ambas tem o mesmo resultado, porém uma print retorna valores, echo não. Tornado print um tanto mais lenta

Abraço

(PHP) Escape \x (hexadecimal)

Saudações

Uma forma bastante comum de deixar seu código estilo h4ckz0r é usar o escape \x para retonar caracteres ascii com valor hexadecimal. Por exemplo. Quero escrever ABC então vamos na wiki pegar o caractere em valor hexadecimal
http://pt.wikipedia.org/wiki/ASCII

Sendo :
A = 41
B = 42
C = 43

Então na string deixo da seguinte maneira

echo "\x41\x42\x43";

Imprimirá ABC. Isto porque \X indica que o valor a seguir indica um caractere no valor hexadecimal. Dica simples, mas não é muito usada. Eu paricularmente uso em casos de aspas por exemplo. Para não ter que dar \" utilizo \x22 fica muito mais elegante. O bom disto, é que está dica funciona em várias linguagens!

Espero que tenham gostado desta dica rápida.

Abraço

(PHP) Codificar String com valor inteiro

Surgiu um desafio legal na comunidade PHP para n00bs. Resolvi criar a função para participar do mesmo
Se trata de uma função para codificar uma string, em php obviamente.

Definitivamente a função que crie está correta e totalmente testada
Ao contrário de outras funções de codificação, ela é praticamente impossível  de ser burlada,
pois retorna um número inteiro do acopla todos caracteres, sendo impossível divi-los

Assim tendo que usar brute-force para pode quebra-la. Mas ai que está o problema
Esses métodos de codificar com valores finais inteiros além de serem leves e rápidos para um bruce-force
Eles retornam números iguais para várias strings.

Por exemplo:
O valor de A é 40 o valor de B 50 e o valor de C 90
Logo a string "AB" terá valor 90. Bem como a string "C" terá o valor 90, facilitando o método bruce-force

Pensando assim, resolvi definitivamente colocar um basta nisto, usando valores de forma sequencial.
Digamos assim, no meu código, ele pega o valor do loop atual, e ainda adiciona no valor inteiro, também pega o caracter anterior e adiciona no atual.
Assim tendo menos probabilidade de "AB" ser igual a "C"
Por A somára com B e posteriormente adicionará o valor do loop atual, no caso 2
Logo 50 + 40 = 90 com mais o valor das sequenciais do loop. 90 + 3 = 93 será nosso valor, contando mais com o valor B que é contado duas vezes por ele mesmo e A, teremos o valor 113 assim sendo diferente de "D"
Que abriga o valor 90, tornando este método muito seguro, apenas perdendo para hashs famosos, como md5, sha1 e até alguns que as pessoas fazem pessoalmente

Segue o código:

function codificarString($t, $l)
{
/*
* Inicializar todas as variáveis
* $r com primeiro caractere + nível
* Variável $i usada para o loop while
*
*/
$i = strlen($t);
$r = ord($t).$l;
while(--$i)
/*
* Operador ternário evita que " " seja igual a "D"
* Outras operações similares. Soma o valor para retorno
*
*/
$r += $i > 1 ? $i + (ord($t{$i}) + ord($t{$i-1})) : ord($t{$i-1});


/*
* Retornar o valor total
* Adicionado ao nível
*
*/
return ($r + $l);
}



echo "Meu texto codificado é " . codificarString("Hello World", 13);

O primeiro parametro será a string a codificar, o segundo será o nível (acrescimo a string) para codificação. EU particularmente aconselho de 11 a 33, mas isto é de sua opinião.
Espero que tenham gostado do post

(Dica) Ganhar seguidores twitter

EDITADO EM AGOSTO de 2012 Ferramenta obsoleta. Não servirá mais para uso.

(Outros) Gerador de Lista de Twitters

EDITADO EM AGOSTO de 2012 Ferramenta obsoleta. Não servirá mais para uso.

(PHP) Contar linhas arquivo

Saudações!

Existem muitas formas de contar linhas em arquivos, tanto com file_get_contents e explode tanto como file e count. É bastante simples

Segue aqui o primeiro método

count(file("texto.txt)) -1

Este código acima retorna quantas linhas tem em texto.txt de uma forma melhorada. A segunda forma é um pouco menos otimizada, mesmo assim serve como conta linhas também:

count(explode("\n", file_get_contents("texto.txt")))) - 1

O mesmo também retorna o número de linhas do arquivo texto.txt
Bastante simples. Não é? Espero que tenham gostado!

Abraços

(Outros) Acelerador de downloads Monstro

Estou criando um acelerador de downloads em delphi. Ele usa sistema de divisão de arquivos em várias threads e uma proxy brasileira boa para efetuar a conexão rápida e eficiente via servidor com cliente.


Ele ainda não está acabado, falta arrumar o contador de velocidade tanto como o de tempo logo que um depende do outro. Mesmo assim segue aqui a prévia dele e o download logo abaixo







Download do acelerador:
http://solidfiles.com/d/ed5d4fbade/download/


- Procurem usar servidores Brasileiros. Se possível. Servidores como Mediafire são bons para usar. Ele também baixa os downloads por fila, bastando colocar um link abaixo do outro.
Quando o download terminar aguarde uns 10 segundos e feche o aplicativo para poder abrir o programa! 

(PHP) Hexadecimal em imagecolorat

Saudações

Muitas pessoas tem sérios problemas ao tentar converter a cor de retorno de imagecolorat para RGB ou Hexadecimal. Isto ocorre porque imagecolorat retorna nem um nem outro, mas sim ele retorna RGB em um número inteiro.

Mas Bruno, como converter então?

Simples, usando operadores bitshifting podemos retornar a cor em RGB que por fim poderá ser facilmente convertida em hexadecimal usando str_pad.

Enfim. Segue a função que retorna a cor em hexadecimal a partir do imagecolorat


function imagecoloratToHex($int)
{ $r = ($int >> 16) & 0xFF;
$g = ($int  >> 8) & 0xFF;
$b = ($int  & 0xFF);
return "#" . str_pad(dechex($r), 2, "0", STR_PAD_LEFT).str_pad(dechex($g), 2, "0", STR_PAD_LEFT).str_pad(dechex($b), 2, "0", STR_PAD_LEFT);
}

Aqui um exemplo do uso:
$corReal = imagecoloratToHex(imagecolorat($imageResourse, $xPixel, $yPixel));

Simples. Não é?

Abraços



(PHP) Redimensionar imagem em PHP

Este código é bastante conhecido, apesar de apresentar difíceis problemas por cada versão que ele usado. Logo tornando difícil encontrar um código que preste, que redimensione imagens em php. Pensando nisto criei minha própria função, com base em muitas outras que tem por aí na internet.

Segue a função:

function redimensionaImage($originalImage, $xscale, $yscale)
{
list($width, $height) = getimagesize($originalImage);
$imageResized = imagecreatetruecolor($xscale, $yscale);
$imageTmp     = imagecreatefromjpeg ($originalImage);
imagecopyresampled($imageResized, $imageTmp, 0, 0, 0, 0, $xscale, $yscale, $width, $height);
imagejpeg($imageResized, $originalImage, 100);
return $imageResized;


O uso é bem simples
$im  = redimensionaImage("face.jpeg", 40, 40);

40 e 40 são os  novos tamanhos
"face.jpeg" é o arquivo a modificar
Ele retorna também o resource da nova imagem, na variável $im, assim podendo usar para outras coisas.

É isto gente. Espero que gostem.

(Outros) Remover Extensão em URL .htacess

Saudações =)

Uma coisa legal do .htacess é que podermos manipular facilmente o modo de acesso ao nosso site. Uma dica bastante simples é podermos utilizar urls sem a extensão da página. Que eu particularmente acho bastante profissional.

Mas chega de papo, segue o seguinte trecho que você deve colocar no arquivo .htacess na pasta do seu servidor


RewriteEngine on
RewriteRule ^(.*)/$ $1.php

O código indica que toda vez que encontrar uma url do tipo

www.seusite.com/pagina/

Irá apontar como a url

www.seusite.com/pagina.php

Tudo isto sem que o usuário se quer adivinhe. Pois no navegador aponta a url /pagina/ enquanto a url real é a pagina.php, caso você utilize arquivos ASP ou outros a regra é a mesma, bastante modificar a extensão .php para a que você utiliza

É uma boa forma de encurtar a url. Acreditem!

Abraços

(PHP) Pegar extensão de arquivo

Uma forma bastante conhecida e prática de pegar o arquivo é dando explode na string e pegando a ultima parte da array. Mas paraí, mas se o arquivo não tiver extensão? Bem, dai pode não retornar a extensão corretamente. Pensando nisto, basta utilizarmos o seguinte código


$ext = end(explode(".", $arquivoNome));
$ext = isset($ext) ? $ext : ".extensaopadrao";

extensaopadrao Será nossa extensão padrão caso o arquivo não tiver alguma extensão. Extremamente simples, não é?

É isto gente. Espero que tenham gostado