Skip to content

Instantly share code, notes, and snippets.

View danilobatistaqueiroz's full-sized avatar

Danilo Batista de Queiroz danilobatistaqueiroz

View GitHub Profile
** Using Message-Oriented Middleware, messages are transmitted from one application to
another across a network. MOM products ensure that messages are properly distributed
among applications. In addition, MOMs usually provide fault tolerance, load balancing,
scalability, and transactional support for enterprises that need to reliably exchange large
quantities of messages. **
::Centralized Architectures
::Decentralized Architectures
::JMS Messaging Models: Publish-and-Subscribe and Point-to-Point

Ágil não é uma metodologia.
Não é uma maneira específica de desenvolver software.
Não é um framework ou um processo.
Na verdade, a maioria das coisas que são comercializadas como ágeis tendem a perder o ponto de vista do que realmente é ágil.
Ágil é um conjunto de valores e princípios.
Grande parte da discussão em torno do ágil tem a ver em seguir práticas diferentes usando várias metodologias e até mesmo desenvolver com ferramentas específicas, enquanto essas coisas podem ajudar uma equipe que está tentando seguir a agilidade.
Eles são ágeis por si próprios, por exemplo, enquanto uma equipe pode achar que ter uma reunião diária de stand-up é útil, o stand-up é apenas ágil na medida em que é o resultado de uma equipe seguindo os princípios e valores ágeis.

É fácil ver que o ágil é realmente uma coleção de crenças que as equipes podem usar para tomar decisões sobre como executar bem o trabalho de desenvolvimento de software.

@danilobatistaqueiroz
danilobatistaqueiroz / xp.md
Last active September 27, 2018 02:10
XP (Extreme Programming)

XP

Em 1996 num projeto para a Chrysler Kent Beck criou a metodologia, a partir daí começou a refiná-la e em 1999 foi lançado o primeiro livro.

Principais características: TDD, Pair Programming, Continuous Integration, Continous Delivery, Daily Standing Meetings, Collective code ownership.

É uma metodologia de desenvolvimento de software.
Para equipes pequenas e médias e que irão desenvolver software com requisitos vagos e em constante mudança.

Com XP há bastante enfoque na refatoração de código, sempre objetivando o Clean Code.

Kanban vs Scrum

Scrum é uma metodologia, um framework, com práticas, regras, papéis, que você deve adotar e seguir, para moldar como a equipe conduzirá o projeto.
Já Kanban é um método, não é framework, não é metodologia, são práticas bem abstratas que apontam o que pode ser feito para melhorar o fluxo de trabalho, visualizar as filas e encontrar os gargalos e aumentar a capacidade de entrega, mas não prescreve nada, não impoe. O Kanban é adaptável ao processo atual da empresa, é evolucionário (que produz uma evolução no processo).

No Scrum se assume que as reuniões diárias de pé são essenciais (de pé vem do XP na verdade), com no máximo de 15 min de duração, isso na prática pode não ser o melhor caminho, Kanban não prescreve nada disso, apesar de que é reconhecido que uma abordagem para reuniões é essencial para a saúde de um processo.

O Scrum diz que você deve ter uma equipe multifuncional, ou seja, uma equipe com todas as competências necessárias para desenvolver uma característica completa.

De

Planning Poker:

Se tem algo em que todos nós somos péssimos é em estimar, principalmente esforço.
Sempre que se estima por horas, o projeto estimado, resultando em centenas de horas, o que acontece na prática é um verdadeiro desastre.
Tudo acontece de maneira diferente do que se imagina ao estimar, o time descobre pedras no caminho e não consegue ter o ritmo que foi previsto.

Não tente planejar tudo de uma vez, isso é um erro.

Não conseguimos ser assertivos em estimar atividades pequenas, imagina então um projeto inteiro de uma vez.
Quebre o projeto em estórias, quebre as estórias em tarefas, então estime as tarefas.

@danilobatistaqueiroz
danilobatistaqueiroz / rup_scrum.md
Last active August 7, 2018 22:33
Rup vs Scrum

Rup vs Scrum

No UP o sistema todo é documentado, 100%, e todo desenvolvido é com base nas especificações, não pode fugir do que está escrito, o sistema todo é escrito numa ferramenta de modelagem, o qual infelizmente na grande maioria das vezes, ferramentas difíceis de usarem, isso acarreta um custo alto no projeto, mas é necessário, pois o cliente não vai usar o sistema antes que se entregue, e geralmente o cliente só o usa pela primeira vez ao término do projeto, e é aí que geralmente está o maior erro de quem utiliza essa metodologia, e mesmo quem consegue adotar a iteração em todos os estágios, muitas vezes não faz de boa maneira dividindo o sistema em 2 ou 3 interações. Além de todos esses problemas, o cliente geralmente não da a devida importância nas entregas até a final, quando aí sim ele se da conta de diversos detalhes.

O que as metodologias ágeis abordam são justamente essas falhas, e como as evitar, não que UP e outras metodologias tenham em suas orientações tais más práticas, mas elas em moment

x11vnc

x11vnc does not create an extra display (or X desktop) for remote control. Instead, it uses the existing X11 display shown on the monitor of a Unix-like computer in real time, unlike other Linux alternatives such as TightVNC Server.

tightvnc offers better compression and performance options. x11vnc offers better security focus ( can be secured with SSH or SSL.) but it's known to be slower.

However, it is possible to use Xvnc or Xvfb to create a 'virtual' extra display, and have x11vnc connect to it, enabling X-11 access to headless servers.[1]

x11vnc has security features that allows the user to set an access password or to use Unix usernames and passwords. It also has options for connection via a secure SSL link. An SSL Java VNC viewer applet is provided that enables secure connections from a web browser.

@danilobatistaqueiroz
danilobatistaqueiroz / csrf.md
Created August 7, 2018 22:30
CSRF - Cross Site Request Forgeries

CSRF - Cross Site Request Forgeries

Laravel makes it easy to protect your application from cross-site request forgery (CSRF) attacks. Cross-site request forgeries are a type of malicious exploit whereby unauthorized commands are performed on behalf of an authenticated user.

Laravel automatically generates a CSRF "token" for each active user session managed by the application. This token is used to verify that the authenticated user is the one actually making the requests to the application.

Anytime you define a HTML form in your application, you should include a hidden CSRF token field in the form so that the CSRF protection middleware can validate the request. You may use the csrf_field helper to generate the token field:


@danilobatistaqueiroz
danilobatistaqueiroz / ecmascript5_class_inheritance.js
Last active August 5, 2018 04:03
ES5 classical javascript inheritance
// Shape - superclass
// x,y: location of shape's bounding rectangle
function Shape(x, y) {
this.x = x;
this.y = y;
}
// Superclass method
Shape.prototype.move = function(x, y) {
this.x += x;
@danilobatistaqueiroz
danilobatistaqueiroz / rest_essentials.md
Last active September 27, 2018 13:34
Rest API essentials

With the rise of mobile development and JavaScript frameworks, using a RESTful API is the best option to build a single interface between your data and your client.

The greatest advantage of using a set of conventions such as REST is that your API will be much easier to consume and develop around. Some endpoints are pretty straightforward and, as a result, your API will be much more easier to use and maintain

There are many ways to implement API Authentication in Laravel (one of them being Passport, a great way to implement OAuth2)

Some of the common HTTP result codes that are often used inside REST APIs are as follows:

200 - “OK”.
201 - “Created” (Used with POST).