domingo, 5 de abril de 2020

4 anos depois de fazer PDS


Se eu fosse fazer o Cidade Ajuda HOJE e dicas de tecnologias

Ressalva: Para não ficar simplesmente no achismo, eu estou refazendo o projeto do zero.

Explorando novos horizontes, decidi recriar o projeto com outras tecnologias. Estou mexendo desde o frontend até o backend e sem medo digo que daria pra fazer o projeto em cerca de 2 meses de desenvolvimento. Para tal proeza recriei usando Django para o backend e React para o frontend. Além disso, uma coisa que mudaria é que não desenvolveria pra duas plataformas separadamente (web e mobile nativo), usaria tecnologias como PWA ou React Native, para agilizar o desenvolvimento.

Usar Django para o backend

Com Django estou conseguindo reconstruir, a parte da API (django-rest) do Cidade Ajuda, em poucos dias (sem escrever muito e nenhum SQL). Fora que ele já vem com um painel do administrador praticamente pronto. Sei que algumas pessoas podem ficar com receio de largar o Java ou C#, mas vejo que pivotar para Python e usar Django traz agilidade ao projeto.

Uso do React para o frontend

As equipes que quiserem usar o React terão o privilégio de poderem escrever de forma funcional e orientada a objetos. Fora isso, já existem várias bibliotecas que agilizam o desenvolvimento (por exemplo Material UI). Além disso, eles podem criar em forma de PWA e ter apenas um "site" que funciona igual a um app ou utilizarem react-native-web e assim poderem tanto gerar um site quanto app nativo.

Ferramentas de deploy

Um dos problemas mais chatos do GLYBIF foi eu ter feito deploy no meu computador e ter de lidar com toda a questão de domínio, criptografia e tudo mais (tive que pedir pra uma pessoa de outra equipe pra fazer isso, pois na época a NET não liberava a porta 443). Usando as tecnologias já citadas, é possível ter deploy contínuo; a Zeit possui um serviço chamado Now que é bastante usado para colocar o frontend (o githubpages também pode ser utilizado); e o Heroku pode ser usado pro backend. Ambos os serviços já geram certificados, são gratuitos e possuem integração com o github.

Erros comuns

De vez em quando vejo os projetos que estão sendo feitos e é muito interessante ver gente errando em coisa básica e é muito estranho, pois o que não falta é material na internet, nos blogs de projetos anteriores e até mesmo no Dicas Ivan. Alguns dos problemas que já vi:

  • Projetos não seguindo a estruturas de pasta determinada pelo professor;
  • Arquivos com nome v1, v2, etc;
  • Vídeos sem legenda;

E evitar esses problemas é simples, basta imprimir os critérios que tem no site, grifar o que é relevante ( sim eu fiz isso na época e eram cerca de 6/7 páginas). E no repositório da equipe tem diversos scripts para automatizar as coisas. Além disso fiz um projeto para poder gerar o Gource de modo visual (https://github.com/LorhanSohaky/GourceGUI)


Obs: Um erro que cometíamos até a presente publicação era a utilização de usuário genérico. Foi extremamente difícil encontrar as credencias do e-mail da equipe, para que fosse possível fazer esta publicação.

Coisas que levo pra vida depois de PDS

Apesar de acharmos que algumas coisas não utilizaremos mais, muitas coisas podem ser utilizadas. E eu passei por isso na prática, não acredito que hoje uso LaTeX!

LaTeX

Mesmo depois de passada a matéria utilizo LaTeX, pois me trouxe muita facilidade. Ao entrar na faculdade tive de fazer alguns trabalhos no padrão ABNT, desde de relatórios até artigos científicos. A experiência que tive em PDS me tirou da estaca zero, assim tendo menos dificuldades do que as pessoas que nunca tinham visto isto; e outra coisa que foi de extrema ajuda foi o template que o Ivan disponibilizou, pude adaptar para usar nos meus trabalhos atuais.

Graças ao LaTeX, hoje tenho um currículo escrito em LaTeX e que está num controle de versão, ou seja, tenho um currículo em que só preciso me preocupar com o conteúdo e tenho o benefício dele estar versionado.

Fora isso, já fiz apresentações usando-o também e pode de grande ajuda, pois já estará em PDF e poderá colocar comentários (que nem no Powerpoint).

Controle de versão

Depois de ver os benefícios do controle de versão, não consigo ficar sem ele, uso em trabalhos da faculdade, projetos pessoais, currículo, guardar alguns códigos, etc;

Documentação

Os repositórios possuem boas documentações, já revisitei alguns deles pra me darem uma "visão" de como escrever sobre determinado tópico.

Hábito de leitura de coisas técnicas

 Antes preferia ver vídeos sobre determinado assunto, mas de PDS, comecei a ler mais documentações e atigos do que assistir vídeos. Um hábito que me ajudou muito na época em que estava fazendo essa matéria era ler a documentação do POSTGRES durante o trajeto de casa até o IFSP e isso me foi de grande ajuda, pois relembrei algumas coisas de banco de dados, mas principalmente em lidar com operações geométricas, como verificar se um ponto está dentro de um polígono.

"Know how"

Graças a tantos erros e acertos cometidos, hoje eu sei bastante do que fazer, do que não fazer e como fazer. Alguns exemplo disso são:
  • Como gerar certificado (HTTPS) para um site;
  • Como ter meu próprio servidor disponível na internet;
  • Não desistir na primeira dificuldade;
  • Acesso remoto;
  • Tratamento de erros;

E isso só foi possível graças ao fato do Ivan não dar a resposta de imediato e deixar você quebrar a cabeça por alguns dias.

Gource

Esse software é muito útil para ver o progresso de um projeto e tenho um caso prático disso;  estava numa empresa júnior e durante um período a minha equipe estava desmotivada, pois por mais que estivéssemos fazendo várias mudanças no produto, parecia pouca coisa; então foi aí que me veio a ideia de gerar um vídeo do gource para mostrar o tanto que evoluímos e foi notório o sorriso nos  rostos da equipe.

Linux 

Na época apanhei bastante para o Linux (cheguei a formatar meu computador 3 vezes), mas hoje não largo ele. Não entrarei no mérito de falar o motivo de usar Linux, mas alguns pontos que podem ser levados em consideração:
  • Diversas empresas na área de TI usam Linux pela facilidade (as máquinas da minha faculdade também usam Linux);
  • Diversos tutoriais e artigos são feitos focados no Linux;
  • Quando estava usando Windows, meu computador não aguentava rodar o NetBeans e o servidor do projeto, já com Linux já consegui rodar o NetBeans com o servidor; e rodar o Android Studio com Emulador Android.

Aproveitem essa matéria para experimentarem coisas novas! Não se limitem!

terça-feira, 6 de dezembro de 2016

Como ir bem em PDS?

Para ir "bem" em PDS é simples, dedique-se, evite "perder" tempo e siga os requisitos do site do Ivan (http://dicas.ivanfm.com/aulas/pds). Isso que falei até aqui foi muito vago, então, além disso vou deixar alguns conselhos do que utilizar e fazer.

Para o primeiro bimestre

Não tenham medo de perguntar algo aos professores, eles NÃO mordem. Dependendo do que vocês irão perguntar, eles não vão dar a resposta direto, mas vão dar uma noção do que vocês devem procurar. Além do mais, eles também são os clientes.
    No primeiro dia os professores irão falar das metodologias de desenvolvimento, como Scrum. Vocês não precisam seguir se conseguirem manter uma boa organização, mas recomendamos que utilizem o Scrum, lembrando que os sprints devem ser pequenos. Como aplicar o Scrum na prática (http://www.devmedia.com.br/como-aplicar-o-scrum-em-seus-projetos/33996).
Após o primeiro dia de aula já definam a equipe, definam quem será o gerente, criem o blog e o canal no YouTube, em seguida, informem aos professores o nome da equipe, os integrantes, link do canal e do blog. E lembrem-se de fazer uma publicação sobre a primeira semana, caso contrário perderão nota.
Façam reuniões constantemente para saber o desenvolvimento do projeto e o que pode mudar na divisão de tarefa.
Definam o mais rápido possível qual será o projeto, pois assim terão mais tempo para o desenvolver. Lembrando que o tema do projeto deve ser aprovado pelos professores antes de ser desenvolvido. Se interessarem-se pelo projeto da nossa equipe (equipe: GLYBIF, projeto: Cidade Ajuda), ficaremos felizes em ver o resultado.
A análise dos projetos anteriores pode ajudar vocês a decidirem o projeto, lembrando que os dois que vocês escolherem terão de fazer uma análise sobre eles. Mas tomem cuidado com o que vocês irão encontrar, pois pode ter coisas erradas, que logicamente não devem ser seguidas.
Para terem uma noção do que deve ter na documentação ou apresentação vejam sempre a versão mais recente.
Uma das melhores documentação da nossa sala foi a da equipe Robson, deem uma olhada. E o melhor código da sala acreditamos que seja o da nossa equipe (GLYBIF). O código por possuir análise estática, documentação do código (JavaDoc) e testes unitários, isso ao menos no site do Cidade Ajuda; a documentação por conta de estar bem completa e até foi elogiada pelos professores na apresentação dos ajustes. Obs: olhem a documentação do quarto bimestre e o código baixe o mais recente.
Não esqueçam de fazer o estudo de mercado no início do projeto, ou seja, depois de definir o projeto ou logo após a apresentação inicial.
Estudem um pouco sobre como funciona o controle de versão SVN - que é o utilizado pela escola. Ele é bem simples, então um simples estudo pode ajudar a não fazer bobagem. No Windows utilizamos TortoiseSVN e no Linux utilizamos RapidSVN.
Caso estejam com medo/receio de enviar algo para o repositório, vocês podem criar um repositório SVN no próprio computador de vocês, procure no Google para saber mais.
    Sempre mandem as atualizações feitas (tanto na documentação como na programação) para o repositório. Não estamos dizendo que devem dar commits a cada linha, mas para que vocês tenham sempre o mais atualizado no repositório, para não ocorrer de integrantes da equipe estarem utilizando/modificando a versão desatualizada.
NÃO utilizem programas como Tortoise ou RapidSVN para enviar arquivos relacionados à programação. Utilizem a própria IDE (ambiente de desenvolvimento integrado), como o NetBeans para site/servidor ou o Android Studio para aplicativo móvel, pois assim evitarão de enviar arquivos indesejados (arquivos temporários).
Gerar o vídeo no Gource é fácil, consulte a documentação dele que está no GitHub (https://github.com/acaudwell/Gource/wiki) para entender seu funcionamento. Obs: Na documentação recomendam usar programas de captura de tela, como o Fraps, mas NÃO recomendamos. Utilizem a biblioteca ffmpeg para gerar o vídeo em MP4, CASO SE INTERESSEM EM TER ALGO FACILITADO, no nosso repositório, na pasta Vídeo, tem todo um código que gera o vídeo no Gource sem complicação, tem até um leia-me explicando como funciona e o que modificar; o único "problema" é que talvez ao gerar o Gource com o script  destinado ao Windows dê problema de codificação - execute o script que vocês entenderão do estamos falando. Como o vídeo no Gource deve possuir legenda, o membro da equipe, Lorhan Sohaky, desenvolveu um algoritmo em linguagem C que pega o texto dos commits e  os “transformam” em legendas. Obs: isso está na pasta Vídeo do repositório (olhe o LEIA-ME) e no GitHub dele (https://github.com/LorhanSohaky/LegendaAutomatica).
Caso o projeto tenha banco de dados vocês pode utilizar o programa brModelo para gerar o MER e o site DRAW.IO para gerar o DER.
Vocês podem utilizar o Google Drive para organizar algumas coisas e sincronizar o DER feito pelo DRAW com o seu drive.
O cronograma deve ser feito pelo gerente no começo do ano e no decorrer do ano deve enviar os cronogramas preenchidos. Vale lembrar que deve ter cronograma bimestral e um cronograma geral (ano inteiro).

Para o segundo bimestre

    Não demorem a fazer a documentação, caso contrário, no terceiro bimestre  terão de virar algumas noites para entregar uma documentação minimamente apresentável.
Para a documentação utilizem o LaTeX, com ele vocês podem fazer toda a documentação seguindo as normas ABNT sem problemas, pois precisam apenas se preocupar com o conteúdo e o LaTeX cuida do restante. Então, NÃO utilizem programas como o Microsoft Word ou LibreOffice Writer para fazer os textos, já que neles vocês podem acidentalmente desconfigurar o texto, ou seja, utilizar eles (mesmo que seja por conta de já entenderem como funcionam) só vai dar mais trabalho, pois provavelmente na apresentação do 3° bimestre vão reclamar da formatação - olhem as documentações de 2015, algumas possuem problemas de formatação. Existe um site em que várias pessoas podem editar o arquivo (documentação) ao mesmo tempo, chama-se Overleaf, o único problema é que a versão gratuita desse site tem um limite de tamanho do arquivo, ou seja, se a documentação ficar muito extensa pode ser que não consiga adicionar mais coisa, nesse caso você pode utilizar o programa TexMaker, este não tem limite, mas também não é possível fazer com que várias pessoas editem o texto simultaneamente. Vocês até podem utilizar esta ferramenta (LaTeX) para fazer a proposta inicial (documento+apresentação), o que será visto com bons olhos pelos professores.  Curso LaTeX: https://www.youtube.com/playlist?list=PLa_2246N48_p9ndUHlO255uvKtSR8mshE; opinião de uma pessoa do meio cientifico sobre a utilização do LaTeX: https://www.youtube.com/watch?v=3WWXjuvhQ8Y.
Se o projeto envolver o desenvolvimento de um aplicativo para Android, tomem cuidado para não enviar arquivos temporários para o repositório, para isso não acontecer, basta editar um arquivo chamado .gitignore - no repositório do GLYBIF, no diretório "Projeto/CidadeAjuda" está o nosso aplicativo para Android, então podem tomar como exemplo.
Para aqueles que querem programar para Android, mas não tem ideia de como começar, tem um canal no Youtube com várias dicas, o nome dele é Thiengo Calopsita (https://www.youtube.com/user/thiengoCalopsita/playlists). Só não vão ficar apenas assistindo sem praticar, senão estarão apenas assistindo e não aprendendo.
    Utilizem o TODO (do inglês to do) como lembrete do que vocês têm de arrumar, assim não tem como esquecer de editar aquele trecho, pois as IDEs indicam onde tem um TODO, acreditamos que os editores de LaTeX tenham esta funcionalidade também.
    Se possível migrem para o Linux, ou seja, LARGUE o Windows. No Linux vocês conseguirão instalar mais facilmente os programas necessários (como Subversion, Gource e StatSVN) e um desempenho melhor. O pessoal que utilizou o Android Studio no Windows teve dificuldade para instalar, problemas para renomear pacotes e alguns erros. O Lorhan recomenda o uso do Xubuntu, mas vocês podem utilizar outros sistemas; o Ivan provavelmente irá falar para vocês utilizarem Linux, mais especificamente o Federa, pois é o que ele utiliza/gosta. É sério, torna-se MUITO mais fácil de gerenciar o projeto (não só a parte de programação, mas tudo de modo geral). Recomendamos que vejam o canal Diolinux caso tenham interesse no Linux (https://www.youtube.com/user/Diolinux/videos).
    Se vocês estiverem muito apegados ao seu sistema operacional fraco de baixo nível e performance (A.K.A Windows), ou precisarem de alguma coisa que está em sua máquina pessoal, utilizem o TeamViewer. É uma ferramenta que será muito útil ao decorrer do ano, poupando bastante tempo, e principalmente não será necessário instalar o Android Studio todos os dias em que tiverem aula de PDS.
    Documentem o código, pois será um dos itens avaliados pelos professores e facilita a compreensão do código. Podem tomar como exemplo o site Cidade Ajuda.
    Aproveitem as férias para se dedicarem ao projeto, para não terem de passar dias sem dormir para entregar o projeto.
    Façam as métricas todo final de mês, caso contrário terão um pouco mais de trabalho, já que terão de descobrir o número do último commit de um determinado mês e fazer checkout.

Para o terceiro bimestre

    Conosco ocorreu a demissão de um integrante da equipe. Vale lembrar que isso não é uma regra, pois em anos anteriores os professores sortearam quais membros sairiam da equipe e até teve vezes em que nenhum membro trocou de equipe.
    No 3° bimestre terá a entrega da documentação e a entrega da preview do aplicativo (documentação impressa e o aplicativo em um CD) para os professores. Fizemos um script, SOMENTE para Linux, que baixa os vídeos do YouTube, baixa o repositório (ckeckout), gera o StatSVN e organiza os arquivos - o código está localizado no diretório “ArquivosDeControle/CD”. Quanto a documentação, imprimam com pelo menos 3 dias de antecedência para não ter imprevistos.
Tentem criar o CD antes da data de entrega, dizemos isso, pois a nossa equipe deixou para fazer no dia e foi algo insano.
    Na apresentação do 3° bimestre os professores deram mais enfoque a documentação e a usabilidade da aplicação, ou seja, se seu código não estiver muito bom não preocupam-se tanto.
    Para saber se sua documentação está "boa" para a entrega do 3° bimestre, você pode tomar como base que a sua documentação deverá conter cerca de 100 páginas.
    Se vocês utilizaram o LaTeX para a documentação, vocês também pode utilizá-lo para fazer a apresentação - os professores vão gostar se vocês utilizarem.
    Tenha um PLANO B para apresentação, ou seja, tenham os arquivos e aplicativo em mais de um dispositivo (pen drive e celular), além disso, caso a aplicação necessite de internet, gravem um vídeo demonstrativo da aplicação.
    Provavelmente os professores já recomendaram isso, mas vale lembrar. Todos os integrantes devem ter uma noção do que está escrito na documentação, então aproveitem isso para fazer um revisão dela para corrigir possíveis erros, como de ortografia. Mostrem a documentação a outra(s) pessoa(s) para que vocês possam saber se a documentação está boa, visto que uma das cópias da documentação será entregue a um professor que não conhece nada do projeto.
Deem MUITA atenção a análise dos outros projetos, pois não basta analisar a apresentação, mas também o código e a documentação. Então, não deixem para fazer em cima da hora. A análise dos outros projetos feitas pela nossa sala não estão completas, então não baseiem-se fielmente à elas.
Deem MUITA atenção ao que os professores falaram na apresentação (sugerimos até que gravem em áudio se os professores deixarem) e a análise que as outras equipes fizeram do projeto de vocês, pois isso irá influenciar nas modificações do quarto bimestre.
Na documentação, na parte das reuniões falem o que foi discutido e o resultado. Não utilizem o Wikipédia como fonte, pois mesmo que ela explique algo corretamente, ainda é superficial. Então, vocês podem pegar as fontes bibliográficas do Wikipédia e estudar sobre o assunto. Quando colocarem QRCode, coloquem a URL em baixo. Utilizem referência do tipo “conforme Imagem 1” e não “conforme imagem abaixo”. Talvez as partes mais complicadas (para o desenvolvedor/documentador) sejam o manual técnico e os casos de uso.
Tomem cuidado com as métricas, deem preferência em utilizar métrica acumulativa, ou seja, se em Janeiro foram criadas 5 classes e em Fevereiro mais 3, não coloque que em Fevereiro tinham 3 classes, mas sim 8 (5+3) classes.
As análises estatística e diagrama de classe podem ser feitas com plugins na própria IDE, ou seja, não é necessário ser desenhista para fazer o diagrama de classes. Assim, em poucos minutos vocês conseguem gerá-las. Para análise estática utilizamos FindBugs e para diagrama de classes com easyUML.
Se precisarem de DNS, vocês pode utilizar o que é fornecido gratuitamente pelo NoIp (https://www.noip.com/).
    Podem utilizar o Firebase como banco de dados destinado a aplicativos Android, já que possui uma fácil implementação para utilizar no Android.
Caso precisem de um certificado SSL para o site (caso seja desenvolvido um site), vocês podem utilizar o servidor web Nginx - que por padrão roda na porta 80 - e o programa de certificação Let's Encrypt. Lembrando que o programa de certificação só certifica os sites que possuem DNS e que estão rodando na porta 80.

Para o quarto bimestre

    Não se esqueçam de fazer o vídeo final, que deve ter no máximo 10 minutos. Preparem-se para apresentar o projeto para os professores e um convidado. Imprimam uma cópia da documentação e gravem o CD - como ocorreu no terceiro bimestre -, entregue estes itens na data de entrega final.
Se vocês seguiram as dicas dadas até aqui, não terão muitos problemas, então agora é corrigir os erros, fazer as melhorias sugeridas pelos professores e pelas outras equipes, entregar uma única cópia da documentação final impressa, apresentar as modificações e agora só resta - como diz nosso professor André Cipoli - “correr para o abraço da galera”!

Por: Lorhan Sohaky

quarta-feira, 23 de novembro de 2016

Trigésima Sexta Semana

Ao longo dessa semana tanto a nossa equipe quanto as outras, corrigiram os erros que ainda persistiam na documentação e na aplicação. Com o intuito de entregar o projeto com o menor número de problemas possíveis.

Por: Gabriel Marques

terça-feira, 15 de novembro de 2016

Trigésima Quinta Semana

  Durante a semana a equipe, que apresentou no dia 4/11 o projeto para os professores, dedicou-se a continuar nas correções dos erros para a entrega final.

Por: Beatriz Morais

quarta-feira, 2 de novembro de 2016

Trigésima Quarta Semana

   Durante essa semana os integrantes da equipe continuaram com suas atividades nas correções dos erros na documentação e no aplicativo.

  • Beatriz Morais - Cronograma e correção de erros
  • Felipe Silva - Correção de erros na documentação
  • Gabriel Almeida - Correção de erros na documentação
  • Lorhan Sohaky - Modificou o banco de dados e o site 
  • Marco Antonio - Continuou a modificar o aplicativo
  • Yuuta Nakamura - Desenvolveu ícones

Por: Beatriz Morais

sexta-feira, 28 de outubro de 2016

Trigésima Terceira Semana

   Durante essa semana a equipe se dedicou na continuação da correção dos erros e modificações que os professores sugeriram, a separação se manteve parecida com as das outras semanas.

Por: Beatriz Morais

sábado, 15 de outubro de 2016

Trigésima Segunda Semana

   Durante essa semana a equipe se dedicou a arrumar os erros e a fazer algumas modificações sugeridas pelos professores e pelas outras equipes após a apresentação. Assim, as tarefas realizadas nesta semana foram:


  • Beatriz Morais - Ajudou a corrigir erros contidos na documentação;
  • Felipe Silva - Corrigiu a documentação;
  • Gabriel Almeida - Corrigiu a documentação;
  • Lorhan Sohaky - Modificou o banco de dados e o site;
  • Marco Antonio - Começou a desenvolver o passo a passo para explicar o funcionamento do aplicativo móvel.



Por: Lorhan Sohaky