Skip to content

Instantly share code, notes, and snippets.

View joffilyfe's full-sized avatar

Joffily joffilyfe

  • 00:19 (UTC +01:00)
View GitHub Profile

EJB

O EJB é uma arquiterua destinada a distribuir componentes de forma resiliente, segura e escalavel. Para executar uma aplicação EJB é necessário utilizar um container EJB.

O container é responsável por controlar a segurança, o ciclo de vida e transações das aplicações.

  • Alocação de processos, controle de threads, destruição de objetos
  • Autenticação de usuários
- http://radimrehurek.com/data_science_python/
- http://material.curso-r.com/rbase/#funções
- http://www.r2d3.us/uma-introducao-visual-ao-aprendizado-de-maquina-1/
- http://r4ds.had.co.nz/index.html#
- http://blog.yhat.com/posts/r-lm-summary.html
- http://site2.aesa.pb.gov.br/aesa/sort.do?layoutCollection=0&layoutCollectionProperty=&layoutCollectionState=13&pagerPage=1
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route("/")
@app.route("/<name>")
def index(nome="Mundo"):
return render_template("index.html", name=name)
if __name__ == "__main__":

RMI

Por que usar o RMI?

No mundo da programação distribuída nós precisamos nos comunicar com outros sistemas que ficam fora da nossa fronteira de aplicação então nós precisamos nos preocupar com rede, acesso e vários outros problemas decorrentes dessa prática. Quanto utilizamos o socket nós temos o problema do trabalho diretamente com o stream de bytes, o que pode se tornar um problema pois errar é humano. Poderiamos trabalhar com RPC já que as chamadas são transparentes ao desenvolvedor, contudo no mundo java nós precisamos trabalhar diretamente com objetos.

Parte Prática

Para implementar um objeto remoto nós precisamos criar uma interface que extende a interface java.rmi.Remote, também é preciso que os métodos remotos lancem excessões do tipo java.rmi.RemoteException.

// Dono precisa implementar o serializable
public class Dono implements Serializable {
private String nome;
public Dono(String nome) {
this.nome = nome;
}
public String getNome() {
return this.nome;

Socket UDP

Quando utilizamos sockets udp nós precisamos levar em consideração quatro características muito importantes:

  • É um canal não confiável
  • Não garante entrega dos datagramas
  • Pode entregar datagramas duplicados
  • Não garante ordem de entrega dos datagramas
  • Não tem estado de conexão (escuta, estabelecida)
class Produto
attr_reader :preco, :categorias, :id, :nome
def initialize(id, nome, preco, categorias=[])
@id = id
@nome = nome
@preco = preco
@categorias = categorias
end
package Chat;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class Server extends Thread {
package Chat;
import java.io.DataInputStream;
import java.io.IOException;
import java.net.Socket;
public class MainClient {
public static void main(String[] args) throws IOException {
Client cliente1 = new Client("localhost", 7171, "Joffily");
package Chat;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.Scanner;
public class Client extends Thread {
private String ip;