Jump to content
mjamado

DESAFIO: Criar um blog em menos de 500 linhas

Recommended Posts

mjamado

Então força, explica como se faz um blog em 50 linhas :)

Se conseguirem em menos de 500 (10x mais do que disseste), pago-te um copo :)

Isso cheira-me a challenge... ;)


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
mjamado

Vá lá, sem ORM... ;)

Acho que é fazível nas 500 do jpaulino. Alguém quer ir numa de mini-concurso?

- Nada de libs externas;

- Tem de ter zona de administração;

- Tem de suportar categorias e/ou tags;

- Tem de suportar comentários (mas não necessariamente administrá-los);

- Todo o HTML conta para as 500;

- CSS e JS não contam, a menos que o JS tenha funções de business logic (isto é, o JS "isento" é só para efeitos de apresentação ou de comportamento);

Challenge, anyone?


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
mjamado
...mas já que mudaram o contexto deste tópico para um concurso, sinceramente 500 linhas não é nada de extraordinário e qualquer programador, com conhecimentos médios em php faz...

Challenge accepted?

Revê as regras. Aliás, para não haver mal entendidos, é acrescentar às regras:

- Nada de várias instruções na mesma linha, excepto concatenação de strings e blocos de controlo de fluxo com apenas uma instrução (if($x==true) echo $z; é válido);

- HTML devidamente formatado e identado, excepto quando existir apenas uma coisa dentro de uma tag (<p>Texto</p> é válido, <div><img src="logo.jpg" alt="logo" /><h1>Nome do Blog</h1></div> não é válido);

pensando bem o mais correcto no concurso, sendo php, seria fazer sem javascript e sem css, apenas php e HTML; javascript e css já são add-ons que nada têm a haver com a lógica de um blog em php 👎

Têm a ver com a lógica de um blog, ponto. Sem CSS é impossível ficar decente, e sem JS é impossível usar, por exemplo, um componente rich text edit. Por isso é que assinalei que CSS e JS não não entram na contagem das linhas - é um extra, não é essencial.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
mjamado
Para que wordpress? Isso eu já fiz milhoes de vezes e não aprendi quase nada.

Muito obrigado ao taviroquai, porque ele sim percebe sobre o assunto. Eu não quero que me venham dizer para criar um blog em wordpress ou blogspot, eu quero é que me ajudem a perceber e como fazer um blog em php?

E desculpem lá se é para discutirem não vala a pena postarem neste topico, eu agradeço as pessoas como tiviroquai e ao hippyhappy, porque eles sim me tem ajudado bastante e sem confusões. Agora o resto tambem mas não é preciso estarem a fazer deste topico um concurso, so quero aprender como se faz um blog em php e quem me quiser ensinar agradeço imenso.  ;)

dianapires123, pelas dúvidas que tens colocado, estás a milhas de conseguir fazer um blog. Além disso, nota-se (e já foste chamada à atenção para isso) que não tens ética de trabalho e resolução de problemas, capacidades essenciais para um programador. Tem paciência, que um dia lá chegarás. Começa por algo mais simples.

O taviroquai está a ser extremamente optimista com esta história do blog. Um blog feito em condições terá muito, muito mais do que 500 linhas, considerando que o código obedeceria às boas práticas OOP, seria escalável e extensível, seguro e, acima de tudo, com as funcionalidades comuns de um blog.

O desafio das 500 linhas vai jogar pela janela a grande maioria das boas práticas (aliás, logo o exemplo das 50 linhas que o taviroquai deu é horrível e nada aconselhável, misturar código de controlador com a vista, bleargh).

Por isso eu postei este topico para aprender o básico de como fazer um blog. Até pode ser em 50 linhas como o tiviroquai disse. Mas eu quero aprender e quem me quiser ajudar agrdeço imenso.    :)

Ah, bom. Se é para aprenderes mal, então, realmente, continua, que já não está cá quem falou. O exemplo dado é má prática. Ponto.

Aliás, tens sido mal ajudada em várias coisas, mas tenho mais que fazer do que andar sempre a corrigir maus conselhos.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
taviroquai

O desafio das 500 linhas vai jogar pela janela a grande maioria das boas práticas (aliás, logo o exemplo das 50 linhas que o taviroquai deu é horrível e nada aconselhável, misturar código de controlador com a vista, bleargh).

Tá boa... o desafio das 500 linhas pode deitar abaixo boas práticas mas a solução com 50 já não pode e a mistura de controlador na view não presta... falando em controlador e view já estás a falar de arquitectura de software que não é imprescindivel para fazer um blog em php... considera arquitectura como um extra. Já vi que és tu que escolhes os extras...

Share this post


Link to post
Share on other sites
mjamado
Tá boa... o desafio das 500 linhas pode deitar abaixo boas práticas mas a solução com 50 já não pode e a mistura de controlador na view não presta...

O desafio das 500 linhas enquanto desafio para programadores experientes, pode. O exemplo das 50 linhas enquanto ajuda a uma pessoa que está a aprender devia era ser sumariamente apagado.

falando em controlador e view já estás a falar de arquitectura de software que não é imprescindivel para fazer um blog em php... considera arquitectura como um extra. Já vi que és tu que escolhes os extras...

Considera arquitectura como um extra? Sério? Num fórum de programação, considera a arquitectura como um extra? Eh pá, isso é ultrajante.

Olha, dianapires123, continua a aprender com o taviroquai - pode ser que um dia arranjes trabalho como... caixa no supermercado.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
taviroquai

O desafio das 500 linhas enquanto desafio para programadores experientes, pode. O exemplo das 50 linhas enquanto ajuda a uma pessoa que está a aprender devia era ser sumariamente apagado.

Considera arquitectura como um extra? Sério? Num fórum de programação, considera a arquitectura como um extra? Eh pá, isso é ultrajante.

Apagadas deviam ser as respostas a indicar o wordpress como solução para aprender a fazer um blog em php... mjamado, abre os olhos... o topico é sobre ensinar a fazer um mini blog, não tem nada de concurso, nem MVC, nem a tua rica ajuda, que foi ZERO... nem para uma caixa de supermercado serve  ;)

Share this post


Link to post
Share on other sites
jpaulino

@taviroquai,

Eu sei o que o código que mostraste faz, mas isso é básico, básico, básico. Não tem validação nenhuma, não autenticação, etc, etc. Fazer algo como deve ser dá algum trabalho e até pode ser feito em menos de 500 linhas, mas é muito mais do que mostraste (e não estou a colocar em causa se sabes ou não) ;)

Usar wordpress É uma boa opção, especialmente porque não foi indicado que queria fazer algo de raiz mas sim colocar um blog num site.


Pessoal, vejam as linhas gerais do desafio (que acho interessante), mas caso começem com ataques pessoais, o tópico será bloqueado.

Share this post


Link to post
Share on other sites
mjamado

Apagadas deviam ser as respostas a indicar o wordpress como solução para aprender a fazer um blog em php... mjamado, abre os olhos... o topico é sobre ensinar a fazer um mini blog, não tem nada de concurso, nem MVC, nem a tua rica ajuda, que foi ZERO... nem para uma caixa de supermercado serve  ;)

Um mini-blog, ou um mini-outra-porcaria-qualquer tem de obedecer às boas práticas de programação. Especialmente quando se está a começar, essas boas práticas devem ser inculcadas e explicadas o quanto antes. Um sistema de arquitectura aplicacional, seja MVC, HMVC, MVP, MVVM, PAC ou outro qualquer, é absolutamente imprescindível.

A minha rica ajuda, como tu dizes, está reservada para o meu tempo disponível e para pessoas que efectivamente a merecem: pessoas que exibem vontade de aprender convenientemente, pessoas que fazem uma reles pesquisa no Google ou nas documentações oficiais, ou até mesmo no fórum, antes de fazerem perguntas básicas. Não é para script-kiddies.

O que tu fizeste (mas não és, nem de longe, nem de perto, caso único) foi um mau serviço à pessoa que pediu ajuda, foi um mau serviço à imagem desta comunidade e é um mau serviço à programação em geral.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
taviroquai

500 linhas... quem manda, manda...  😡

Quem define as regras? Façam uma poll com vários items que serviram para escolher as regras onde todos possam participar e escolher as regras... inclusivé, não tem que ser 500 linhas... podem ser 200... isso sim é um desafio!

Share this post


Link to post
Share on other sites
jpaulino

Quem define as regras? Façam uma poll com vários items que serviram para escolher as regras onde todos possam participar e escolher as regras... inclusivé, não tem que ser 500 linhas... podem ser 200... isso sim é um desafio!

Concordo mas 500 linhas foi um número lançado para o ar (por ser 10 vezes mais). É definir os requisitos base e quanto menos linhas, melhor.;)

Eu um desafio interessante, que permite mostrar diferentes abordagens e partilhar conhecimento.

Força com isto! :)

Share this post


Link to post
Share on other sites
mjamado

Só para avisar que não me esqueci disto.

Estou a fazer tudo correctamente - é estritamente orientado a objectos, não dá erros de qualquer espécie (nem warnings, o que obriga a confirmar se cada variável existe com o isset), implementa o paradigma MVC totalmente e é seguro contra SQLi (XSS é outro bicho e, provavelmente, só escaparei os comentários).

Tem como funcionalidades posts, categorias, comentários, o controlo de utilizadores (acesso à administração para inserção, edição e eliminação de mais utilizadores, posts e categorias, apenas eliminação de comentários).

Tive que implementar de raiz uma mini-ORM com funcionalidades reduzidas, para poupar nas linhas.

Não me parece que consiga ficar abaixo das 500 linhas. Neste momento, como estou a escrever todo o código-fonte altamente comentado, com o meu estilo de notação (uma chaveta de abertura nunca fica na mesma linha da instrução correspondente, deixo linhas em branco entre blocos não directamente relaccionados, etc.), não consigo ter a noção das linhas reais em que já vou. Depois, tenho que fazer uma versão sem comentários, sem linhas em branco, com notação inline, etc., para ver as linhas totais.

Os modelos já estão todos, os controladores de administração também; faltam várias vistas, e o front-end todo (sim, perdi uma enormidade de tempo a criar e a testar a ORM). Talvez no próximo fim-de-semana tenha tempo de acabar esta brincadeira.

Quando acabar coloco as duas versões no GitHub. Eventualmente, se houver interesse, pode-se traduzir todos os comentários para português (estão em inglês).


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
taviroquai

Tive que implementar de raiz uma mini-ORM com funcionalidades reduzidas, para poupar nas linhas.

Só MySql... imagino...

Não me parece que consiga ficar abaixo das 500 linhas.

Pudera... vais acabar com uma framework que deve dar para fazer mais do que um simples blog... Fat Fat Fat!

Quando acabar coloco as duas versões no GitHub.

Nice!

Quanto mais se aumenta a abstração, mais linhas de código são necessárias... e com tanta abstração deixa de ser um blog e passa a ser um monstro!

Share this post


Link to post
Share on other sites
mjamado
Só MySql... imagino...

Na realidade, deverá dar para vários outros motores sem grandes alterações, devido ao uso correcto do PDO. Alguma afinação nos pedaços de query poderá ser necessária.

Pudera... vais acabar com uma framework que deve dar para fazer mais do que um simples blog... Fat Fat Fat!

Não me parece. Eventualmente, podes pegar na ORM e fazer modelos que a usem para outros efeitos, mas nada de extraordinário, que a ORM não está preparada, nem era esse o objectivo, para lidar com coisas muito complexas.

E duma ORM a uma framework vai uma grande distância. Eventualmente, juntando a ORM, o paginador e o MVC router, ficas com uma nano-framework expansível.

Quanto mais se aumenta a abstração, mais linhas de código são necessárias... e com tanta abstração deixa de ser um blog e passa a ser um monstro!

Na realidade, não. É simples aplicação do conceito DRY (don't repeat yourself). Se eu tivesse que andar a abrir e a fechar conexões à BD e escrever queries em cada modelo, ia acabar por ocupar mais.

E respeita boas práticas, que é mais do que se pode dizer de muito código que anda para aí, logo a começar por várias plataformas de blog disponíveis...


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
ruimcosta

Boas,

Por acaso ando a acompanhar este tópico e estou curioso pelo final.

mjamado: Ando a investigar OOP e MVC e estou curioso para dissecar o teu projecto.


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
pwseo

mjamado, estou curioso para ver o teu blog quando terminares.

Há já algum tempo tentei fazer uma mini-framework MVC para um projecto semelhante de mini-blog, mas com a falta de tempo acabou por ficar parado. Agora quero ver como é a abordagem de alguém que percebe do assunto.

Bom trabalho!

Share this post


Link to post
Share on other sites
taviroquai

Estive a criar uma class ORM, com recurso a PDO, e está-me a ocupar 136 linhas (com espaços)... grande parte do nojo de código deve-se à manipulação de parametros... e não cria tabelas, apenas faz load, save e delete.

Dá para fazer coisas como... (código de testes):


$db = new ORM(pdo_dsn, pdo_user, pdo_pass);

$user = (object) array('nome' => 'Admin', 'username' => 'admin', 'password' => Utils::encrypt('admin'));
$user->_dbtable = 'utilizador';
$result = $db->save($user, 'nome,username,password');

$users = $db->load('utilizador', array('username' => 'admin'));
if (empty($users)) die('Sem utilizadores');
$admin = $users[0];

$tags = $db->load('tag', array('tag' => 'tag1', 'id' => array(1, 2))); 

$categorias = $db->load('categoria');
if (empty($categorias)) die('sem categorias');
$categoria = $categorias[0];

$artigos = $db->load('artigo');
if (!empty($artigos)) die('sem artigos');
$artigo = $artigos[0];

$artigo->categoria_id = $categoria->id;
$db->save($artigo, 'categoria_id');

Agora se se criar modelos é mais uma dose... estimo que cada modelo possa ter entre 50 a 150 linhas... são pelo menos 4 modelos por isso já vai estoirar  :(

Talvez removendo as linhas em branco se consiga uma redução de 8%...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.