por Sândler

Fazer varredura do HTML no PHP

junho 10, 2015 em Php por Sândler

if (preg_match_all(“#<tr[^>]*>(.*?)</tr>#is”, $html, $matches)) {
foreach ($matches[1] as $linha) {
if (preg_match_all(“#<td[^>]*>(.*?)</td>#is”, $linha, $mat)) {
foreach ($mat[1] as $col) {
// em $row está o conteúdo dos tds desta linha
var_dump($col);
}
}
}
} else {
echo ‘<h3>Nada encontrado!</h3>’;
}

por Sândler

Diferença entre Soap e Rest

abril 24, 2015 em Php, Rest, Soap por Sândler

SOAP

SOAP é um protocolo de transferência de mensagens em formato XML para uso em ambientes distribuídos. O padrão SOAP funciona como um tipo de framework que permite a interoperabilidade entre diversas plataformas com mensagens personalizadas.

Aplicando este padrão em Web Services, geralmente usa-se o WSDL para descrever a estrutura das mensagens SOAP e as ações possíveis em um endpoint.

Uma das maiores vantagens disso é que várias linguagens e ferramentas conseguem ler e gerar mensagens facilmente. Várias linguagens de programação permitem a geração de objetos de domínio, Stubs e Skeletons a partir da definição do WSDL, permitindo a comunicação remota via RPC através de chamadas a métodos remotod, inclusive com argumentos complexos, como se fossem chamadas locais.

O problema desse padrão, é que ele adiciona um overhead considerável, tanto por ser em XML quanto por adicionar muitas tags de meta-informação. Além disso, a serialização e desserialização das mensagens pode consumir um tempo considerável.

REST

REST é outro um protocolo de comunicação, baseado no protocolo de hipermídia HTTP. Porém ele não impõe restrições ao formato da mensagem, apenas no comportamento dos componentes envolvidos.

A maior vantagem do protocolo REST é sua flexibilidade. O desenvolvedor pode optar pelo formato mais adequado para as mensagens do sistema de acordo com sua necessidade específica. Os formais mais comuns são Json, XML e texto puro, mas em teoria qualquer formato pode ser usado.

Isso nos leva a outra vantagem: quase sempre Web Services que usam REST são mais “leves” e, portanto, mais rápidos.

O problema com o REST pode surgir justamente por causa de suas vantagens. Como a definição do corpo de dados fica totalmente a cargo do desenvolvedor, os problemas de interoperabilidade são mais comuns.

SOAP ou REST?

Aviso: Esta é uma opinião pragmática.

Em geral, SOAP é uma boa opção para instituições com padrões rígidos e ambientes complexos (várias plataformas e sistemas). Muitas ferramentas corporativas (como ESB) tiram vantagem do padrão e possibilitam filtrarem, enfileiramento, classificação e redirecionamento das mensagens trocadas entre sistemas.

No restante, para uso no dia-a-dia, não vejo motivos concretos para não usar REST e Json. Praticamente todas as plataformas e linguagens modernas que conheço suportam esses conceitos e a solução final é muito mais simples do que o equivalente em SOAP.

Além disso, integrações com alto volume de requisições são inviáveis em SOAP. REST é capaz de atender volume e complexidade sem dificuldades, exigindo apenas um mínimo de experiência do desenvolvedor para estabelecer e reforçar os padrões adequados.

Fonte: http://pt.stackoverflow.com/questions/11183/diferen%C3%A7as-de-tipos-de-web-service-soap-rest-xml

por Sândler

Codificação de caracteres em url (tabela conversão)

abril 24, 2015 em Html por Sândler

Codificação de caracteres em endereços URL

Quando passam variáveis em endereços URL, às vezes, é necessário codificar certos caracteres. Isto é, substituir uma caracter por seu código ASCII em formato hexadecimal. A seguir, apresentam os os caracteres que se codificam mais frequentemente:

Tabela de caracteres frequentes

Caracter Código Caracter Código Caracter Código Caracter Código
(espaço) %20 ? %3f & %26 % %25
# %23 / %2f < %3c > %3e
: %3a / %2f | %7c ; %3b

Script de conversão

Tabela completa

æ

apagar
tab
nova linha

salto de linha

espaço
!

#
$
%
&

(
)
*
+
,
-
.
/

%00
%01
%02
%03
%04
%05
%06
%07
%08
%09
%0a
%0b
%0c
%0d
%0e
%0f
%10
%11
%12
%13
%14
%15
%16
%17
%18
%19
%1a
%1b
%1c
%1d
%1e
%1f
%20
%21
%22
%23
%24
%25
%26
%27
%28
%29
%2a
%2b
%2c
%2d
%2e
%2f
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
%30
%31
%32
%33
%34
%35
%36
%37
%38
%39
%3a
%3b
%3c
%3d
%3e
%3f
%40
%41
%42
%43
%44
%45
%46
%47
%48
%49
%4a
%4b
%4c
%4d
%4e
%4f
%50
%51
%52
%53
%54
%55
%56
%57
%58
%59
%5a
%5b
%5c
%5d
%5e
%5f
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~

€


ƒ




ˆ

Š

Œ

Ž

%60
%61
%62
%63
%64
%65
%66
%67
%68
%69
%6a
%6b
%6c
%6d
%6e
%6f
%70
%71
%72
%73
%74
%75
%76
%77
%78
%79
%7a
%7b
%7c
%7d
%7e
%7f
%80
%81
%82
%83
%84
%85
%86
%87
%88
%89
%8a
%8b
%8c
%8d
%8e
%8f







˜

š

œ

ž
Ÿ

¡
¢
£

¥
|
§
¨
©
ª
«
¬
¯
®
¯
°
±
²
³

µ

·
¸
¹
º
»
¼
½
¾
¿

%90
%91
%92
%93
%94
%95
%96
%97
%98
%99
%9a
%9b
%9c
%9d
%9e
%9f
%a0
%a1
%a2
%a3
%a4
%a5
%a6
%a7
%a8
%a9
%aa
%ab
%ac
%ad
%ae
%af
%b0
%b1
%b2
%b3
%b4
%b5
%b6
%b7
%b8
%b9
%ba
%bb
%bc
%bd
%be
%bf
À
Á
Â
Ã
Ä
Å
Æ
Ç
È
É
Ê
Ë
Ì
Í
Î
Ï
Ð
Ñ
Ò
Ó
Ô
Õ
Ö

Ø
Ù
Ú
Û
Ü
Ý
Þ
ß
à
á
â
ã
ä
å
æ
ç
è
é
ê
ë
ì
í
î
ï

%c0
%c1
%c2
%c3
%c4
%c5
%c6
%c7
%c8
%c9
%ca
%cb
%cc
%cd
%ce
%cf
%d0
%d1
%d2
%d3
%d4
%d5
%d6
%d7
%d8
%d9
%da
%db
%dc
%dd
%de
%df
%e0
%e1
%e2
%e3
%e4
%e5
%e6
%e7
%e8
%e9
%ea
%eb
%ec
%ed
%ee
%ef
ð
ñ
ò
ó
ô
õ
ö
÷
ø
ù
ú
û
ü
ý
þ
ÿ
%f0
%f1
%f2
%f3
%f4
%f5
%f6
%f7
%f8
%f9
%fa
%fb
%fc
%fd
%fe
%ff
por Sândler

Adicionando as colunas direto no find tanto para tabela, belongsTo ou hasMany com bindModel

abril 7, 2015 em CakePhp por Sândler

As perguntas mais comuns é como faço para restringir a quantidade de colunas que traz na minha busca de uma tabela específica.

Exemplo de Tabelas:

Pagina – id, nome, data_cadastro
Promocao – id, id_pagina, nome, valor, data_cadastro
PromocaoConteudo – id, id_promocao, conteudo, data_cadastro

 

Então quando buscar a promoção teremos:

belongsTo = ‘Pagina’;
hasMany = ‘PromocaoConteudo’;

 

Estes exemplos abaixo, imaginamos que as tabelas já estão vinculadas na Model.

 

Trazendo tudo de tudo:
$promocoes = $this->Promocao->find(‘all’);

 

Vamos imaginar que queira somente algumas colunas de cada tabela que esteja vinculada a Promoção.

$this->Promocao->bindModel(array(‘hasMany’=>array(‘PromocaoConteudo’=>array(‘fields’=>array(‘PromocaoConteudo.conteudo’)))));
$promocoes = $this->Promocao->find(‘all’, array(‘fields’=>array(‘Promocao.nome’,’Promocao.valor’,’Pagina.nome’)));

 

Veja que quando é um BelongsTo é possível colocar nos fields do próprio find da promoção, mas quando é um HasMany, é necessário colocar com o bind como se fosse fazer o vínculo novamente.

 

 

 

por Sândler

Criando Lista (combo) no excel

março 25, 2015 em Excel por Sândler

Primeiramente selecione os itens da lista e determine o nome “combo” igual mostra a imagem abaixo:

 
Agora selecione o campo que quer que as listas apareçam.

 
Depois de selecionado vá até:
Menu Dados -> Validação de Dados -> Validação de Dados

 
Irá exibir uma janela chamada Validação de Dados onde você irá escolher na Opção Permitir a opção de “lista”.

E logo abaixo, terá a Opção Fonte, digite “=combo” que é o nome que determinou para as opções que você havia selecionado para ser sua lista OU clique no ícone do lado da Fonte para selecionar a lista caso não tenha determinado um nome (alias) os itens.

 
Dando ok e clicando em um dos campos, irá exibir ao lado do campo uma seta.

Quando clicar na seta vai exibir os campos que você determinou na primeira seleção.

 
Todos os campos selecionados no momento da inserção da validação de dados, irá exibir a seta para você poder escolher um item da lista.

 

 

por Sândler

Debug Query Cakephp via Controller e View

março 10, 2015 em CakePhp por Sândler

Podemos fazer dois tipos de Debug das queries executadas:

 

Controller –  irá retornar um array  com todas as queries que estão rodando:
Exemplo 1:
$destinos = $this->Destino->find(‘all’);
$log = $this->Destino->getDataSource()->getLog(false, false);
debug($log);

 

View  - também exibirá as queries que estão rodando, mas com visual em tabela para separar melhor o conteúdo:
Exemplo 2:

<?php echo $this->element(‘sql_dump’);?>

por Sândler

Desvincular Foreignkey (fk) model cakephp (unbindmodel)

março 9, 2015 em CakePhp, Php por Sândler

Desvinculando Foreignkey (de uma model com a outra via “unbindModel”.

 

Imaginando que na sua model “USERS” você tenha um hasMany de outras duas models chamadas “PROFILES” e “CONTACTS”.

Tendo estas informações podemos concluir que quando eu fizer uma busca de um ou mais usuários ele trará as informações do perfil e do contato.

Exemplo 1: Todos contatos / todos perfis / todos contatos

$this->User->find(‘all’);

 

Exemplo 2: Todos contatos / nenhum perfis / nenhum  contatos

$this->User->find(‘all’, array(‘recursive’=> -1));

 

Exemplo 3: Todos contatosnenhum perfis / todos contatos
Dependendo do vínculo entre as tabelas, você poderá utilizar “hasMany” ou “belongsTo” dependendo da forma que foi criada seu banco de dados.

$this->User->unbindModel(array(‘hasMany’ => array(‘Profile’)));
ou
$this->User->unbindModel(array(‘belongsTo’ => array(‘Profile’)));

$this->User->find(‘all’);

 

 

por Sândler

Cakephp – Verifica se a view element existe – view element exists

fevereiro 26, 2015 em Cake, Php por Sândler

Dependendo da versão, você poderá fazer as seguintes verificações

 

Para o CakePHP versão 2.3 você pode verificar através do método elementExists:
Exemplo:  if($this->elementExists($element)) { … }

Se for a versão 2.x você pode usar:
Exemplo:  if($this->_getElementFilename($name)) { … }

Se a versão for versão 1.3 poderá fazer via file_exists do próprio php mas com chamada direta:
Exmeplo:  if(file_exists($path . ‘elements’ . DS . $name . $ext)) { … }

por Sândler

Robots txt

fevereiro 23, 2015 em SEO por Sândler

Este exemplo abaixo mostra como utilizar o Robots.txt nos servidores

 

Site: http://www.agenciamestre.com/seo/robots-txt/
por Sândler

GitHub – Reset de commit

fevereiro 12, 2015 em github por Sândler

Este reset abaixo faz com que volte o reset básico, que seria somente o commit e não o add.
Portanto o add continua em vigor, porém você consegue fazer o commit novamente, até para poder comentar novamente!
Exemplo 1:
git reset –soft HEAD^

Este outro exemplo, já seria para voltar toda ação do commit que você fez, tanto o add quanto o comentário.
Exemplo 2:
git reset HEAD^

Caso você tenha mais que um commit e queira voltar todos, basta repetir a sua ação do exemplo2.