« first day (995 days earlier)      last day (2789 days later) » 

5:00 PM
 
@WallaceMaxters DB_USERNAME e DB_PASSWORD, mesmo de teste, me fazem corar. =)
 
@OnoSendai hahahaha, é o serviço do mailtrap.io
 
@WallaceMaxters Ainda assim me fazem corar
 
@OnoSendai .env jovem :D
Quem diria que teria isso em php :D
@OnoSendai Se fosse do meu g-mail, me faria "gelar"
 
Tão organizadinho seu projeto, que fofo
 
5:03 PM
@OnoSendai O que mais me assuntou foi o 123456, mesmo que em banco local
 
@OnoSendai VS é bão pra desenvolvimento web? :p
 
@renan eu adoro.
 
@Randrade local pode tudo
@Randrade e se eu te disesse que 123456 é a senha em produção?
 
Entre o VS e o Code eu prefiro o VS pela intregração com IIS e add-ons como o ReSharper
 
@OnoSendai eu ia comentar isso...
Aliás, nem usuário root eu deixo no MySQL, eu renomeio.
 
5:04 PM
@Bacco Não dá uma agoniazinha? =)
 
@OnoSendai "zinha"?
 
@OnoSendai "O cara vai invadir meu pc"
 
@Bacco Ok, uma agonia danada
 
Esses dias uma pessoa me perguntou se o computador dele tinha sido hackeado, porque o Wordpress tinha sido invadido.
Segurei os risos. Depois ainda fala que entende de TI :p
 
@WallaceMaxters a resposta é simples "sim". Sempre "sim", quando for WP + Hackeado
WP && hackeado === true
 
5:06 PM
@WallaceMaxters Não iria duvidar, afinal tem muito .php ali
 
@Randrade PHP + credenciais no arquivo de config (cc @OnoSendai)
 
@Randrade O que tem a ver o ... deixa pra lá
@Bacco esse arquivo de config não pode sair no print :D
 
Acabei de pegar um Nexus 6P pelo Google Fi depois de abusar muito do meu atual.
 
@WallaceMaxters esse arquivo de config é lido pelo PHP, ou seja, qualquer invasão acessa ele. Se vc sobe um .gif que é um PHP disfarçado, acabou de subir um "leitor de config".
 
@Bacco Bora mandar todos os e-mails do mailtrap.io que a conta free permite (se for conta paga, bora mandar spam para todos)... Condorda @WallaceMaxters?
 
5:08 PM
@Bacco só se o gif tiver um include. Impossível!
 
@WallaceMaxters não precisa, basta ler os diretórios todos e dar fopen()
se for compartilhado com outros sites, ja pega de todos.
 
@Bacco mas pra gif ser lida, o BURRO DO PROGRAMADOR tem que ter dado include nela.
O servidor não interpreta uma gif como php. Só se tiver configurado no apache
 
@WallaceMaxters não, basta acessar. Fico surpreso de vc não saber que isso é default do apache.
 
@Bacco já fiz o teste, não é verdadeira essa afirmação.
Só se der include com php.
 
@WallaceMaxters bom, então se vc tá seguro disso, beleza. O dia que invadirem seu WP talvez vc acredite.
 
5:10 PM
@Bacco As senhas de acesso aqui são configuradas como variáveis de ambiente nos servidores de produção que são encriptadas usando o thumbprint do certificado interno. Eu NUNCA vejo as passwords.
 
@Bacco Ah, tá. Mas a configuração do servidor lá, não sei como está.
 
E elas nem existem no código.
 
Enquanto isso, sugiro você entender o perigo do mime.magic, e como ele é usado.
 
@OnoSendai isso é bom
@Bacco O apache tem uma expressão regular interna, em alguma configuração, se não me engando. Algo como "\.(php|php3|phml)"
Se tiver gif, não funfa.
@Bacco estou falando dos testes que eu já fiz.
Esse mime.magic aí eu não estou ligado.
 
@WallaceMaxters eu percebi. Só pra você entender, ele serve pro sistema ignorar a extensão e olhar o conteudo. Ou seja, se estiver ligado o módulo, um arquivo é reconhecido pelo conteúdo.
 
5:13 PM
@Bacco sim, mas como não tem definição de mime, como ele vai advinhar que é php.
 
@WallaceMaxters <?php já basta pro magic.
o magic faz exatamente isso. Ele tem um mapa do que olhar nos arquivos pra saber o que tem dentro.
claro que eu simplifiquei a explicação, mas é um dos vetores de invasão que quase todo mundo passa batido.
sabendo usar, o magic é bem legal.
Ele permite você abrir coisas sem extensão nos programas certos.
e permite setar os headers corretos pra servir via HTTP
 
@Bacco Nossa, complicado hein
@Bacco é esse mime_module?
 core_module (static)
 so_module (static)
 watchdog_module (static)
 http_module (static)
 log_config_module (static)
 logio_module (static)
 version_module (static)
 unixd_module (static)
 access_compat_module (shared)
 actions_module (shared)
 alias_module (shared)
 auth_basic_module (shared)
 authn_core_module (shared)
 authn_file_module (shared)
 authz_core_module (shared)
 authz_host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 deflate_module (shared)
 dir_module (shared)
 
@WallaceMaxters mime_magic
 
@Bacco Ok, deixa eu olhar no servidor de produção (hahahahahahaha)
 
@WallaceMaxters normalmente não é pra estar ativo
mas se estiver, sugiro desligar.
duvido que algo importante esteja dependendo dele.
 
5:17 PM
achei que voce tinha dito que era default
 
@WallaceMaxters é default em algumas distros, não significa que todas usam.
 
@Bacco tá não. Servidor é Ubuntu :|
 
e veja bem na config, pq o subsistema é do OS, e não exclusivo do apache.
 
1
Q: Resposta deletada aparecendo deve aparecer no Feed principal?

RandradeEstava olhando o feed principal de perguntas, e me deparei com essa pergunta: Até aí, tudo bem. O problema é que ao clicar no link com a frase modificada 2 horas atrás, ele me leva para a pergunta com uma âncora sem utilização. Conversando no Chat, fui informando que a pergunta foi deletada, ...

 
@Bacco olha esse recurso. Você acham mais importante preocupar com a "facilidade" ou com o "overhead"?
 
5:19 PM
@WallaceMaxters Harbour tem isso nativo
 
@Bacco chatão voce
 
metabot tá lerdo demais kkk
 
foreach( wallace in maxters )
 
perguntada 25 mins atrás
 
@Bacco mas a posição do loop tem?
 
5:20 PM
if wallace:__enumIsFirst() //abre a tabela
print wallace:__enumIndex(), wallace
 
@Bacco eu consigo fazer isso em php com um Iterator
 
if wallace:__enumIsLast() // fecha tabela
next
@WallaceMaxters sim, tem varias maneiras. só comentei dessa pq é parecida
 
@OnoSendai #MandaCodes (cc @Bacco)
 
uma coisa que eu gosto é isso, @WallaceMaxters:
foreach( wallace in maxters, bacco in baccollection DESC )
ou seja, vai avançar do começo pro fim em maxters, e do fim pro começo em baccollection
 
@Bacco fino.
 
5:23 PM
inclusive, essa de ir do fim pro começo ajuda se vc precisar deletar itens
pq ai nao zoa o loop.
 
O que aconteceu com aquele meme "Its dangeours, take this.."
 
@WallaceMaxters enjoou :P
 
@WallaceMaxters #MandaNodeJS
 
@WallaceMaxters mas daqui a uns 3 meses pode de novo
 
@Bacco tá parecendo o array_map(null, $array1, $array2) do php
 
5:25 PM
@WallaceMaxters nesse caso não tem callback nem nada, e vc pode usar o loop de maneiras diversas.
 
@OnoSendai eu to começando a gostar dessa coisa
 
@WallaceMaxters Node é maneiríssimo
 
@Bacco sim, mas tá falando do php ou do habour?
@OnoSendai e o Eletron? Fiquei de cara poder usar o js do fronte-end e, ao mesmo tempo, do backend
@OnoSendai dá pra usar o angular e chamar uma função pra salvar no SQLITE
 
@WallaceMaxters no caso do foreach não é callback, isso que eu quis dizer.
@WallaceMaxters tem uma coisa legal tambem, o __enumBase(), que retorna o array original
 
@WallaceMaxters É maravilhoso. Eu usei para criar aquele companion app para Tree of Savior
 
5:26 PM
 
@Bacco ah, tá. mas é que ue quis dizer outra coisa.
 
o que fazer nessa hora.
 
O mesmo código funciona como conteúdo local, como servidor local E como conteúdo para deploy web
 
foreach (array_map(null, $baccoCollection, $wallaceCollection, $onoCollection) as $key => $value) {}
 
@GOKUSSJ4 votei pra excluir sem escolher texto nenhum
 
5:27 PM
@Bacco tipo no python?
 
@WallaceMaxters e como é que vc inverte uma das listas?
 
Infelizmente as orientações para outro idioma so tem para perguntas
 
@WallaceMaxters Esse aqui é o projeto rodando direto do rawgit:
 
@diegofm, também fiz isso, acho que deveria ter uma opção para esse caso.
 
@OnoSendai Jogo? que bonito
 
5:28 PM
@WallaceMaxters uma coisa meio estranha em Harbour é que apesar de não poder acessar string por índice, você pode dar um foreach nela.
 
@GOKUSSJ4 nesses casos ai a gente é quem tem que comentar, mas já tinham comentado lá
 
@Bacco tipo python, porém no python dá pra acessar pelo indice
 
@WallaceMaxters Sim, o jogo original não tem um mapa iterativo assim, eu fiz um calculador de rota
 
@Bacco conhece de python?
 
@WallaceMaxters só o básico. Usei mais pra testar a PyQt no meu celular
 
5:30 PM
@Bacco O mais difícil que vi no python até agora é só o list compheresion (não sei escrever). mas o resto tá de boa
 
@WallaceMaxters tem muita linguagem que eu só usei "por cima" pq não dá tempo de ficar cavocando todas.
 
@renan depende, se vc quer trabalhar aqui a noticia é boa, rs
 
@Bacco aqui na empresa sou como um "pesquisador". O pessoal acostuma com as paradas e vai usando. Daí eu aprendo algo novo, trago pra cá, e o povo pega rapidão (daí depois pergunta "Wallace, como faz isso mesmo?"). Acaba que as coisas novas geralmente eu costumo trazer aqui para o TI
 
@WallaceMaxters cuidado pra não ensinar errado, lembre do que o tio ben falou.
 
@Bacco eu não consigo ficar repetindo um processo, quando aprendo que tem algo que o torna mais rpaído.
@Bacco eu só ensino depois de realmente aprender.
 
5:33 PM
 
@Bacco agora pra entrar no TI, é obrigatório saber usar AngularJS :D
 
@Bacco deadpool discorda :p
 
@diegofm é que ele não é sobrinho do Ben.
@diegofm Bom, e o cara vai namora uma brasileira que é alienigena, esperar o que dele.
 
@Bacco spoiler de deadpool?? :(
Eu não vi ainda
 
@diegofm não, kkkk pode ficar sossegado.
 
5:40 PM
Ufa! kkkkkkk
 
mas mesmo depois de assitir, precisa de um exercício de associações pra entender o que eu disse.
 
tenho que da um jeito de ver esses filmes "badalados" o mais rapido possivel, depois de um tempo, comentar deixa de ser spoiler kk
 
@diegofm então nem vou falar pra vc que o Leonardo DiCaprio morre no final do Titanic :P
 
@bigown o Leonardo né kkkkk
 
@Bacco exatamente ele
 
5:44 PM
Como ele ganhou o oscar se morreu?
kkkkkkkkkkkkkk :p
 
@diegofm o Jack foi no lugar dele
 
@diegofm que eu saiba esse ano deram pra um urso
a melhor interpretação de todo o filme
 
Essa associação do @bigown foi mais ou menos como a que eu fiz da alienigena brasileira.
 
@bigown depois que um filme passa na tv, deixa de ser spoiler, ainda bem que deadpool nem foi pra tv fechada ainda
 
@Bacco aquele zoeira do email, é só clicar em reset SMTP/POP que gera tudo novo :|
 
5:46 PM
@diegofm Titanic passou na TV?
 
@bigown Não é de se estranhar, o Louro José faz mais sucesso que a Ana M.B.
 
@bigown só a globo passou umas 3x
Alguns canais fechados, vira e mexe ficam repetindo quase que diariamente
 
@diegofm é que a gente não vê sessão da tarde, então fica meio alienado :P
deve ter sido uma turma da pesada aprontando altas loucuras num navio que é pura confusão :) (cc @OnoSendai)
 
É titanic e avatar, a fox repetiu avatar por 4 dias seguidos
 
@diegofm Globo é canal de TV? Não assisto
 
5:49 PM
@bigown Passou na sessão da avatarde.
 
@bigown eu tb não mais, é bloqueado no decodificador lá de casa
 
@diegofm o pessoal do firewall aí ta indo longe hein :)
 
0
Q: BB Token no Ubuntu

Luiz RossiOlá, estou tentando usar o BB Token (Token do Banco do Brasil para pessoa jurídica) no Ubuntu 16.04 e não tem jeito de ler, alguém conseguiu usar? Ele não lê de jeito nenhum!

 
@Bacco kkkkkkkkkkkkkkkkkkkkkkkk
 
5:50 PM
Zueira never ends
 
Galera vcs acham que Certificação ITIL compensa pra quem quer seguir na area de governança?
 
@Math essa é pra vc - e no meta ainda kkkk
 
Essa ai é pra ser migrada, nem vou votar pra fechar
 
Estamos discutindo agora qualidade de ensino de programação em português vs inglês. Dificilmente encontra-se bons tutoriais em portugues
 
@Bacco falando em firewall, to achando que andaram lendo minhas reclamações aqui, porque removeram um tanto de bloqueio, inclusive imagens o imgur
Tudo que vocês mandam aqui, eu vejo agora :D
 
5:52 PM
@diegofm migrada pra onde? É pra ser fechada, isso sim :)
 
@Bacco Deve ter um gerador de Chamadas de Sessão da Tarde em algum lugar
 
@diegofm é o log do sonicwall da empresa, o TI tá de olho.
 
@Bacco se continuarem desbloqueando os sites com base no que eu reclamo, eu nem ligo de ficarem de olho :p
 
Pouca gente sabe que o "Deadpool" já foi o Hannibal King no Blade III, que essencialmente era a mesma coisa, um herói "boca suja" e cheio de tiradas zoando todo mundo.
Aliás, tem muita gente "conhecida" nos filmes do Blade, inclusive o "Daryl" de Walking Dead / Death Stranding
 
@Bacco rsrs
 
6:03 PM
@Math desistiu do PoGo?
 
@diegofm tava cansado de ficar andando com o tablet por aí
mas meu celular estragou na quarta feira, daí comprei um mais novo, talvez eu anime um pouco qnd ele chegar, vamo ver
mas com ctz aquele hype todo ja foi
 
ah q isso
 
Se continuar nesse ritmo, pode renomear pra Pokemon Gone
 
Tão pra lançar um recurso que pode da uma animada, pokebuddy
alias, alguem me explica como esses caras conseguem descobrir nomes de classes e interfaces dentro do jogo, se um APK é criptografado?
 
@diegofm criptografado? não é só "zipado"?
 
6:07 PM
@Bacco bom, no android studio tinha um recurso lá que "embaralhava" o código
 
@diegofm ah, pode rolar uma ofuscaçãozinha de fato
mas se o aparelho lê, uma ferramenta tb lê
eu dei uma resposta sobre isso certa vez.
 
@Bacco isso! a palavra certa é essa, ofuscado, não criptografado kkk
 
5
Q: Como fazer engenharia reversa de um aplicativo android?

Pedro RangelComo a partir de um aplicativo android na extensão .apk, obter as classes, layouts, bibliotecas etc, ou seja, realizar a engenharia reversa? Obs: utilizei o 7-zip como o Bacco aconselhou e resultou na seguinte pasta de arquivos: As classes aparecem nessa extensão .dex e resources na extensão ...

 
Mas a ofuscação troca nomes e tudo mais, os caras descobriram exatamente o nome das classes
@Bacco mas acho jdgui não reverte o proguard, que é usado no android(ou era ao menos)
 
@diegofm teria que ser uma ferramenta especifica nesses casos.
isso geralmente é uma corrida entre ferramentas de "ocultação" e "quebra".
 
6:10 PM
kkkkk destrincharam o app inteiro
 
@Bacco
você sabe o motivo de alguns pacote que contem as classes não abrem atras do jd-gui. — Pedro Rangel Oct 4 '14 at 22:30
Pergunta ou afirmação?
 
@WallaceMaxters é pergunta. QUando eu vi fazia tanto tempo já, que no fim não respondi
 
@Bacco eu sempre costumo olhar a interrogação no final
 
teria que pesquisar como tá atualmente
 
Alguns zoam que a tag do PHP abre com interrogação porque é uma linguagem meio duvidosa
 
6:16 PM
@WallaceMaxters Se ao menos o pessoal usasse :)
@WallaceMaxters é simbólico, ela começa com uma interrogação, e termina em interrogação.
 
@Bacco "termina" de vez enquanto. Eu não fecho meus arquivos php com ?>
@Bacco estou curioso pra saber o que é esse tal de firebase
 
@WallaceMaxters se não precisar misturar com código, não precisa mesmo. Acho que o PSR fala pra nao fechar tb né?
 
@Bacco Sim. Pois, como o autoload dá um include, o programador cabeçudo pode sem querer fazer um "?>\n\n". Daí ia dar problema de output header
 
@WallaceMaxters sim, é uma proteção contra relaxo, na verdade. Os caras apelidam isso de "newbie coding style"
evita quebrar header, evita espaço sobrando no HTML enviado etc
 
@Bacco É até bom isso. Em uma lib grande, você vai ter ums 65 arquivos. imagina quantas classes vc teria que procurar pra resolver o problema
 
6:24 PM
@WallaceMaxters sim. Quem presta atenção não teria nenhum problema fechando, mas quando vc pega código de terceiros, precisa ficar revisando.
 
@Bacco quando eu usei sistema de views, fiz uma parada para evitar esse espaço sem querer. Mas não sei se é bom ou ruim não deixar o programador não saber do erro.
$conteudo = ltrim(ob_get_clean());
@Bacco Quando vejo lib que fecha com ?>, eu já procuro outra. já penso "Ih, é coisa velha"
 
@WallaceMaxters O fato é que quase todo código que usa ob_ está errado. Se no seu caso é REALMENTE necessário, precisa de uma boa justificativa. Quase sempre eu vejo usarem pra remendar erro de outro lugar.
 
@Bacco "quase". pois num sistema de templates eu uso para poder fazer "view slotes"
 
@WallaceMaxters eu acho que é um péssimo uso. Falta de arquitetura.
MAS
pode ser que seu sistema seja uma exceção, e tenha uma boa razão.
 
<body><?= $this->fetch('content') ?></body>

<?php $this->section('content') ?>
<div>Olá mundo</div>

<?php $this->stopSection() ?>
 
6:27 PM
digo isso pelo seguinte, praticamente tudo que manipula buffer pode ser feito com string normal com menos custo.
 
@Bacco eu uso pelo fato de a view poder ser retornada para uma string.
$minha_view = View::create('blablagla')->render();

vou_mandar_esse_treco_por_email($minha_view);
 
@WallaceMaxters e qual seria o problema de usar uma variável normal?
eu acho que o erro, se é pra usar assim, é o render dar echo.
 
@Bacco como você renderizaria um código html gerado por php inteiro para uma string, sem ob_start. O php não tem outra solução.
 
@WallaceMaxters é só não usar echo né???
 
@Bacco O render não dá echo.
 
6:29 PM
@WallaceMaxters e pra que o ob_ entao?
se nao tem echo/print/fecha php, nao vai pro ob_
 
@Bacco Mas include vai, jovem. Por isso preciso usar.
 
@WallaceMaxters isso, falta de arquitetura;
 
@Bacco include no html( ou num php que manda algo para fora
 
@WallaceMaxters é, falta de arquitetura...
 
@Bacco problema de arquitetura do php?
 
6:31 PM
@WallaceMaxters não, da aplicação.
Agora, se vc falar que usou isso como contorno
 
@Bacco toda aplicação php, que usa views, faz assim.
 
de uma coisa de terceiros que dá echo,
fazer o que.
@WallaceMaxters eu sei, programador PHP é terrivel pra copiar coisa ruim.
 
@Bacco então. O problema de arquitetura é da aplicação?
 
@WallaceMaxters no meu ver, ou é problema da aplicação, ou remendo pra contornar problema de terceiros.
 
@Bacco ob_start?
 
6:32 PM
no segundo caso, eu entendo que é um uso justo, pq nao tem o que fazer.
 
é usado também pra sistemas de cache
 
@WallaceMaxters é, pq ai é feito pra vc nao mexer na aplicação que originalmente nao foi projetada pra isso. Ai nao tem como fugir.
 
@Bacco Não é isso que eu estou falando.
 
@WallaceMaxters eu sei o que vc tá falando, só acho que é um uso pobre do ob_start
mas se vc usa pq é prático, não acho que está errado.
Não é uma "critica" a você escolher esse caminho
 
@Bacco como vc faria um cache de uma página php, para transformá-la em html puro, sem ob_start?
 
6:34 PM
@WallaceMaxters eu faço cache de um monte de coisa. Só não mando pra tela.
 
@Bacco a questão é que quero ver vc dar a solução melhor. Talvez realmente eu possa ter aprendido um caminho errado, mas eu não vejo nada no php ainda pra resolver esse problema.
 
@WallaceMaxters quando eu faço um template, por exemplo, eu leio ele como arquivo, e não como include.
só aí já veio em string.
 
@Bacco Mas qual é a diferença disso para o OB_START? Ele vai ler como string
@Bacco por exemplo, como você faria isso sem ob_start (em php é claro)
<?php $this->extend('layout_principal') ?>
<?php $this->section('content') ?>
<div>My name is Jonh</div>

<?php $this->endsection() ?>
Estender um layout principal, para poder reutilizá-lo
 
@WallaceMaxters se o layout for feito como eu falei, igualzinho.
pq ele nunca vai mandar nada pro ob_ mesmo.
 
@Bacco Vc não reutilizaria?
 
6:38 PM
acho que vc nao entendeu. Se fizer o layout sem mandar coisa pro output
não precisa de ob_
e funciona tudo igual.
 
@Bacco tá, mas a questão é: Eu preciso dessa view também para enviar e-mails. Como eu ia mandar um e-mail, montado por um layout php, sem ob_start retornado a string.
 
Se é pra usar o layout em string, é só não mandar nada pra "tela".
 
@Bacco mas como...
 
@WallaceMaxters mas o que eu tou falando só gera string. Se vai mandar pra tela ou pro email é a mesma coisa.
 
@Bacco tá, eu acho que eu sei do que está falando. File_Get_contents, trata os dados, envia para tela com um echo.
é isso?
 
6:39 PM
@WallaceMaxters foi só um exemplo, mas é mais ou menos isso.
 
@Bacco a minha ideia do ob_start foi pra reduzir um passo nessa operação.
Preciso processar php e html juntos.
 
@WallaceMaxters mas é um passo a mais. vc mandou pro buffer, travou ele, e manda pra string.
o que eu tou dizendo é pra já mandar direto pra string.
 
então pra mim, é mais fácil:

function render($file){
ob_start(); include $file; return ob_get_clean();
}
 
São passos a menos.
 
@Bacco aí você teria que dar um Eval para processar a string com file_get_contents, né.
 
6:41 PM
@WallaceMaxters é fácil pq o include manda pra tela, fio.
olha do meu jeito:
include $file;
pronto.
 
A diferença é que o método render não retornaria o conteúdo numa string, e sim só a impressão.
 
se o $file tá mandando pra uma variável, nao precisa mais nada.
 
@Bacco é como se estivéssemos comparando file_get_contents com readfile. usos diferentes.
 
só de incluir, tá feito.
vou dar um exemplo bem pobre, mas só pra vc entender melhor.
 
readfile lê e imprime. file_get_contents retorna o conteúdo para uma string. (é disso que eu preciso)
 
6:43 PM
imagine se vc pegar seu sistema todo
TODINHO
e tirar tudo que é echo
e trocar por $super_html_maxters .=
 
@Bacco nosso Deus! Santa gambiarra
 
@WallaceMaxters é, definitivamente, eu desisto.
 
@Bacco Eu entendi seu raciocínio. Realmente, as arquiteturas são bem diferentes. Não sei se seriam um problema como você disse, mas são diferentes.
 
se isso é gambiarra, mas simular com ob_start é normal, beleza.
 
@Bacco Mas vamos lá...
 
6:46 PM
e isso pq eu avisei que era um exemplo pobre...
 
<div><?= $teste ?></div>

Como salvar isso na string...
EOT? kkkkkk
 
HEREDOC ainda é melhor do que ob_start no meu ver.
e fica mais curto.
 
@Bacco mas como separar as lógicas?
@Bacco o guilhermeNascimento diisse que conseguiu fazer sem include.
 
@WallaceMaxters da mesma forma. se é só template, basta ler como arquivo.
 
@Bacco Mas é um template PHP... Ler como arquivo só vai retornar string...
 
6:47 PM
Se é exibição na tela, troque o echo por wallace->echo( )
@WallaceMaxters se é um template com PHP
 
@Bacco isso é trabalho do Http\Response. Daí eu passo a view como parâmetro.
 
qual o problema de usar <<< ?
por exemplo
<? wallace->templateAdd( <<<FIM
HTML com variaveis
FIM;
 
@Bacco e a view parent?
 
@WallaceMaxters a lógica é a mesma, tou só dando exemplos variados.
é claro que se for usar igual em tudo fica estranho
 
Sim, eu estou interessado na explicação, por isso estou perguntando :p
 
6:50 PM
mas da mesma forma,
tem hora que vc usa echo, tem hora que vc usa "%interpolacao de variavel",
e no caso do que eu tou dizendo, teria que ver como é melhor pra cada caso.
 
@Bacco ah, você está falando de um template engine...
 
O que eu quis dizer, resumindo, é que vc tem maneiras de fazer sem ob_ muito limpas
MAS a aplicação tem que ter sido projetada pensando nisso.
E é ai que eu falo da arquitetura.
Se vc tentar pegar uma aplicação baseada em output e usar o que eu tou falando, vai ficar nojento mesmo.
 
@Bacco Não, não. Pior que no meu caso, dependendo, dá pra fazer como você falou sim. To visualizando aqui na minha mente...
 
Mas se vc fizer a aplicação pensando diferente, nao fica feio.
 
@Bacco @Bacco meu único problema nesse caso é que eu quis usar o PHP como template engine. Então, pra "parsear" esse PHP no template, ou eu encapsulo a saída com OB_START (realmente é uma gambiarra pensar nisso), ou usar EVAL (pior ainda, não acha?)
@Bacco estou falando da forma como fiz.
<div><?= $bacoo ?></div>
Veja que o PHP ali é real!
 
6:53 PM
Resumo do resumo: ob_ é uma saída para o jeito que as coisas são feitas normalmente. Não sugeriria nunca você mudar isso numa aplicação que ja usa coisa pronta de monte. MAS, se for fazer algo do zero, que vá ser usado para reaproveitamento, eu acho que se fizer pensando em gerenciar seu buffer internamente, fica mais limpo.
@WallaceMaxters sim, vc ta partindo de algo que foi feito do jeito usual. Realmente teria que refazer essa parte.
Do jeito que eu falei, teria que ser feito o template PHP diferente mesmo.
 
@Bacco é que realmente eu prefiro usar o php na view, do que ter que pensar em fazer uma template engine complexa, que vai me fazer usar mil regex...
@Bacco @Bacco ou...
eval('?>' . file_get_contents('php/view-file.php');
 
eval não, fique com ob_ kkkk
 
O Laravel 3 fazia assim...
@Bacco o jeito que o Laravel 4 faz o include é até interessante, se não tivesse o ob_start.
 
@WallaceMaxters eu acho que se é pra usar eval, eu prefiro o ob_
o eval acaba custando um pouco mais.
 
@Bacco o Blade não parseia e manda pra tela direto. Ele parseia, salva um PHP "compilado", e dá um include nesse php. Na próxima requisição, não precisa parsear de novo.
 
6:56 PM
@WallaceMaxters isso eu faço numa situação aqui.
 
@Bacco O eval custa sua reputação como programador.
 
A cliente edita os dados, o cache é um html gerado. O cliente acessa o HTML pronto, acho que é um dos melhores caches do mundo.
 
@Bacco Ah, isso que eu ia te falar.
 
só que em página que muda informação em coisa de minutos
compensa dinamico.
É que esse realmente era um caso BEM especifico, de alteração em mais de mês.
Detalhe: se for usar rota e mais um monte de coisa, não compensa tanto.
Esse html gerado é pra um site com navegação quase toda estática.
 
@Bacco não lembro muito mais o exemplo que via, mas era tipo assim:
<?php

if (file_exists('cache.html')) {
    include 'cache.html';
    exit;
}

ob_start();
?>
todo o <!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>

</body>
</html>

<?php file_put_contents('cache.html', ob_get_clean()) ?>
 
6:58 PM
isso eu faço com imagem.
if !existe thumbnail or datadaimagem!= datadothumbnail
gera novo thumbnail
 
@Bacco você desenvolve pra web?
 
@WallaceMaxters menos do que pra desktop.
 
@Bacco tenho um sistema de thumb em php também :D. Uso o Gregwar, que por sua vez, usa o GD
 

« first day (995 days earlier)      last day (2789 days later) »