Adicionando Curtir Compartilhar Facebook Twitter

Para adicionar botão de compartilhar do twitter no seu site, basta acessar:

http://twitter.com/about/resources/tweetbutton

Lá você encontrará as opções para criar seu botão, de maneira bastante fácil, no final ele gera um código pra adicionar no seu site tipo este:



E o resultado será algo assim:

Para colocar botão de Curtir do Facebook pode usar o seguinte código PHP:


Perceba a função curPageURL() concatenada no código do iframe do facebook. Encontrei este código na Internet, neste endereço http://www.webcheatsheet.com/PHP/get_current_page_url.php

O resultado do Like Facebook será algo assim:

Encoding Codificação Retorno PagSeguro

O pagSeguro é um dos sistemas de pagamentos mais conhecidos e utilizados em e-commerces, mas sua documentação deixa a desejar um pouco, ainda assim, existem muitas boas pessoas na Web com diversos tutoriais, espero poder contribuir um pouco também. Este post já havia sido publicado no phpoo.com.br, mas estou desativando aquele e salvando aqui.

Um problema bem comum (eu imagino) é problema com codificação, que precisa ser ISO-8859-1.

Até no exemplo de página de retorno a primeira coisa que é feita no PHP é:

header('Content-Type: text/html; charset=ISO-8859-1');

Mas se você estiver com seu banco de dados em UTF-8, por exemplo, e suas páginas todas são UTF-8, primeiro você vai ter que dizer ao pagSeguro isso, o que pode ser feito adicionando essa informação na função de inicialização do pagSeguro em PHP que está disponível nos exemplos do site mesmo, a função ficá assim:

function pgs($args = array()) 
{
    if ('array'!=gettype($args)) $args=array();
    $default = array(
      'email_cobranca'  => 'seuemail@pagseguro.com.br',
      'tipo'            => 'CP',
      'moeda'           => 'BRL',
      'encoding'        => 'UTF-8',
    );
    $this->_config = $args+$default;
}

Com isso o pagSeguro sabe que você está enviando as informações no carrinho, dados do cliente e do produto em formato UTF-8, mas, quando ele te responder na página de retorno as informações virão em ISO-8859-1 igual... como resolver, depois de muita pesquisa, uma solução simples encontrei, basta fazer o seguinte:

mb_convert_encoding($_POST['CliNome'], 'UTF-8', 'ISO-8859-1,ASCII,UTF-8');

Faça isso para todos os campos String que vierem no post do pagSeguro e pronto. Campos com acentos e outros tantos serão salvos no banco de dados corretamente, sem isso, quando vinha uma cidade com nome 'Três de Maio', por exemplo, na minha base dedados MySQL estava salvando apenas 'Tr', os dados depois de qualquer acento eram perdidos.

Tem mais algumas informações úteis sobre este retorno que são abordadas pelo Dourado no site dele: http://dourado.net/2011/06/09/retorno-automatico-de-dados-do-pagseguro-em-phpmysql-com-produtos-versao-2-0/

Boa sorte pra quem for implementar!  Aproveitando o post, se você ainda não é cadastrado no PagSeguro, clique aqui ou na imagem abaixo para se cadastrar.

Agendar Backups Linux: crontab tar date

Comando tar: serve basicamente para compactar arquivos, criar backups etc.

tar -c
serve pra criar um arquivo novo

tar -p
serve para listar o conteudo

tar -x

serve para extrair um arquivo

Normalmente uma destas 3 letras é acompanhado de:
v para mostrar na tela o que esta sendo feito
f para jogar o conteudo do arquivo para um novo
j para compactar igual ao 7zip, mais nova, GZ2, muito bom
z tambem serve para compactar, mas nao tao bom...

Então, para criar arquivo novo + ver + compactar + dizer que o resultado eh um file (arquivo)

tar -cvjf nome_novo_arquivo o_q_vai_ser_compactado


Ex.: fazer um bkp de todos os dados do usuario bolivar

tar -cvjf bkp_bolivar_2011_11_11.tar.gz2 /home/bolivar/*


Agora com data e hora automática

tar -cvjf bkp_bolivar_`date +%Y_%m_%d_%H_%M`.tar.gz2 /home/bolivar/*


Para listar o conteúdo

tar -tvf bkp_bolivar_2011_11_11.tar.gz2


Para extrair o conteúdo

tar -xvf bkp_bolivar_2011_11_11.tar.gz2





comando date: pega a data do sistema

Pode-se formatar a data em diferentes formatos, Y-m-d H-M ou d/m/Y ... mas lembre-se de em nomes de arquivo nao pode usar / entre outros...

date +%y
date +%Y
date +%m
date +%d
date +%H
date +%M



Comando crontab: faz o agendamento de tarefas

Para ver o que já está agendado para executar:

crontab -l

Para editar agendamentos:

crontab -e

Provavelmente ao editar vai pedir qual editar de texto voce deseja usar, fui com o nano, opcão 2, que é mais fácil.
Configura: m h dom mon dow command
Que significa: Minuto Hora DiaDoMes Mes DiaDaSemana Comando

Para gravar um log, como temos no comando TAR o V, ele mostraria na tela o que foi feito, podemos jogar em um arquivo o bkp semanalmente, diariamente, de 15 em 15 minutos ficaria assim:

0-15-30-45 * * * * tar -cvjf /home/bolivar/bkp_bolivar_`date +%Y_%m_%d_%H_%M`.tar.gz2 /home/bolivar/* > /home/bolivar/bkpLog.txt

Comandos Unix: ps, grep, sed, cut, awk, chmod, mysql, crontab

Anotecões aula de Sistemas Operacionais, ajustadas para virar um tutorial de como criar um script para salvar logs do uso de memória e processador por determinado processo.


Uso do VI

i para escrever
:q para sair
:wq para salvar e sair
:w <nome arquivo> para salvar como

Atividades escrever script para armazenar em arquivo a cada minuto a % de CPU e qtde de memória usada por um processo.

Ver os processos e salvar no arquivo texto o resultado:

ps -faux > arquivo.txt

ps pega os processos, grep compiz busca apenas linhas com 'compiz', sed pra apagar tudo menos a linha 1, linha 2 em diante, >> add no log.txt

ps aux | grep compiz | sed '2,$ d' | cut -b 16-24 >> log.txt

cut serve pra cortar a string, -b corta bytes, pegando apenas do caracter (cada caracter é um byte) 16 ao 24

ps aux | grep compiz | sed '2,$ d' | cut -b 16-24 | awk '{print $1,";",$2}' >> log.csv

ou pode-se mudar as colunas pelo awk, pegando diretamente as corretas sem usar o cut.

ps aux | grep compiz | sed '2,$ d' | awk '{print $3,";",$4}' >> /home/bolivar/visamples/log.csv


crontab -e para adicionar o comando, dizendo pra executar a cada minuto.

* * * * * ps aux | grep compiz | sed '2,$ d' | awk '{print $3,";",$4}' >> /home/bolivar/visamples/log.csv


Agora pra salvar em um banco MySQL, crie um banco chamado logs e uma tabela chamada log com dois campos decimais, uma pra cpu e outro pra memoria. criar um script Shel log_processo_mysql.sh com o sql insert:

ps aux | grep mysql | sed '2,$ d' | awk '{print "INSERT INTO log (cpu,mem) VALUES (",$3,",",$4,");"}' > /home/bolivar/log_insert.sql

mysql -u root --password='root' -D logs < /home/bolivar/log_insert.sql

De permissao de execucao pro script

chmod +x log_processo_mysql.sh

No crontab agora ficou assim.

* * * * * /home/bolivar/log_processo_mysql.sh

Pra verificar se está funcionando, acessa o mysql:

mysql -u root --password='suasenha'

depois selecione o banco:

use logs;

e execute o select:

select * from log;

pra ver os bancos:

show databases;

pra ver as tabelas, primeiro selecione o database e depois:

show tables;

pra sair do mysql:

quit

pra sair do prompt:

exit

Anotações sobre Qualidade


QUALIDADE


Gestão pela qualidade total, cerca de 15 anos, bastante difundido atualmente.
Qualidade, objetivo e medida, nível de refugo. Em software se avalia pelo número de erros que o software contém, mas também se pode avaliar outros quesitos como performance na execução,
Definição de qualidade do ASQ: É um conjunto de atributos e características de um produto que lhe dá a habilidade de satisfazer necessidades declaradas e implícitas.
Definição da EOQC: é a totalidade dos atributos e características de um produto que lhe dá a habilidade de satisfazer ...
Definição do Juran: consiste nos ...
Definição da Enciclopédia Soviética: É o agregado de propriedades de um produto que determina a habilidade de satisfazer a habilidade para os quais foi construído.

5 abordagens

  1. Transcendental: qualidade é sinônimo de excelência inata, como: relógio Rolex; automóvel Rolls Royce, Tablet Apple, picanha maturada de gado Limousin confinado, seda legítima.
  2. Baseada no Produto: é um conjunto mensurável e preciso de características necessárias para satisfazer o cliente, como: relógio Casio, Fiat Uno, meia medicinal Kendal, cerveja Brahma.
  3. Baseada no Usuário: qualidade é a conformidade com as expectativas do consumidor, como: relógio Casio, VW Gol 1000 ou Audi, picanha macia, tecido mescla poliéster/algodão.
  4. Baseada Manufatura: qualidade de acordo com as especificações do projeto, como nylon da Dupont (dá maior rendimento nas máquinas), linha de pesca, relógio Technos, picanha de gado confinado.
  5. Baseada no Valor: qualidade definida em função do custo e preço, como: relógio pra criança (provavelmente vai durar pouco, deve custar pouco), automóvel Opala 1972 (se funcionar tá bom), camisas da loja C&A (lavou, terminou), carne moída pronta no açougue.

Qualidade é a consistente conformidade com as expectativas do cliente.
Conformidade: atende uma especificação clara.
Consistente: materiais, recursos e processos controlados para garantir sempre a especificação.
Expectativas: valor para o usuário

Percepção x Expectativa, muitas vezes fica um GAP, uma lacuna.
Quando a percepção é menor que a expectativa a qualidade percebida é pobre.
Quando as expectativas são menores que a percepção a qualidade percebida é boa.
Quando expectativa e percepção são iguais a qualidade está boa.

David Garvin

Ver artigo das oito dimensões da qualidade:
  1. Desempenho
  2. Características (adicionais)
  3. Confiabilidade (MTFF - Mean time to first failure e MTBF - Mean time between failure)
  4. Conformidade
  5. Durabilidade
  6. Assistência Técnica (MTTR – Mean time to Recovery)
  7. Estética
  8. Qualidade percebida
Não é possível atender todas estas dimensões de uma única vez, foca em algumas delas conforme a abordagem escolhida para o produto ou serviço.
Programa de qualidade: uma coisa grande, um conjunto de projetos, de ações. PGQP, PNQ...
Métodos de qualidade: uma sequencia de passos para alcançar uma meta.
Ferramentas de qualidade: uma coisa pequena pra auxiliar a melhorar a qualidade, diversos programas de qualidade usam as mesmas ferramentas.
Conceitos relacionados: Portfólio é um conjunto de projeto independentes, Programa é um conjunto de projetos relacionados entre si.

História

Shewart – 1927
Deming (trabalhou com Shewart, foi pro Japão implantar qualidade).
Juran – acho que foi junto com Deming pro Japão.
Philip Crosby, disse que: leva anos para sair da incerteza para certeza, para melhorar a qualidade. (Incerteza->Despertar->Entendimento->Sabedoria->Certeza). Fez a base para programas como CMM (Capacity Maturity Model), MPS.Br (Melhoria do Processo de Software), ...
Carnegie mellon – filadelphia – pensilvania – fazer cursos a distancia sobre Qualidade em software... open learning initiative
MIT – Open Conserware – material disponível na web – Sistemas de Informação
Stanford – Ciência da computação – Aulas de IA ocorrendo online agora...

TQM


...

Ferramentas de Qualidade

Básicas

  • Folha de Conferência (contagem)
  • Fluxograma
  • Diagrama temporal (gráfico de falhas por tempo)
  • Histograma
  • Diagrama de Pareto (ordena os dados)
  • Diagrama de Dispersão
  • Diagrama de causa e efeito (espinha de peixe, diagrama de Ishikawa)
    • Causa pode ser: máquinas, pessoas, meio ambiente, métodos, materiais


Aula passada (faltei) teve algo sobre 6 sigma, DMAIC: Define; Measure; Analyse; Improve; Control.

Sistemas de Producao - 23/11

5S - 5 sensos

Seiri - Utilizacao
Seiton - Organizacao
Seisso - Limpeza
Seiketsu - Higiene
Shitsuke - Autodisciplina

Senso de Utilizacão
 - Diferenciar o útil do inútil.
 - Em dúvida, descarte.
 - O espírito de equipe é inversamente proporcional a quantidade de ítens inúteis.

Senso de Organizacão
 - Cada coisa no seu lugar.
 - Cada lugar com a sua coisa.
 - Coisas de uso constante mais perto.

Senso de Limpeza
 - Limpe você mesmo seu posto de trabalho.
 - Escala de servico, cada um tem a sua vez de limpar.
 - Na limpeza os defeitos são percebidos enquanto pequenos.

Senso de Higiene
 - Roupa limpa.
 - Asseio pessoal, andar sempre limpo.
 - Qualidade de vida.

Senso de Autodisciplina
 - Adquirir hábitos de organizacão, limpesa e higiene.

Implatar os 5s:
 - Comeca fazendo uma limpeza geral, tirando tudo o que for inútil da organizacão.
 - Depois, de tempos em tempos, uma equipe de um setor inspeciona outro setor anotando o que está fora do lugar, sujo ou é inútil.

Programas de Qualidade
 - Premio de qualidade Japão - Deming
 - Prêmio Baldrige - americano
 - Prêmio Europeu
 - Prêmio Erhard - alemão
 - Premio Nacional de qualidade
 - Prêmio Gaúcho de qualidade - PGQP

ISO
 - Federacao mundial de entidades nacionais de normatizacão de cerca de 140 países, um de cada país.
 - Sede na Suíca, estabelecido em 1947.
 - Objetivo de facilitar o comércio, as trocas e transferências de tecnologia.

ISO 9000: Normas de Qualidade
 - Foco no cliente
 - Lideranca
 - Envolvimento das pessoas
 - Abordagem de processo
 - Abordagem sistêmica da administracão
 - Melhoramento contínuo
 - Decisões basedas em fatos
 - Relacões de mútuo benefício com fornecedores

ISO 9000 - tem termos e definicões
ISO 9001 - contém os requisitos
ISO 9004 - orientacões para cumprir a 9001

ISO 27000 - Seguranca da Informacao - termos e definicoes
ISO 27001 - Requisitos da 27000


Qualidade - Aula 2 - Statistical Process Control - Controle estatistico de processo

Process Control Charts
LSL = Limit inferior de especificacao
USL = Limite superior de especificacao
UCL = Limite superior de controle (Upper)
LCL = Limite inferior de controle (Lower)

Limite usa 6 desvio padrao
Controle usa 3 desvios padrao

Capability Process (CP) = (USL - LSL) / 6DP

Se o CP for >= 1, tem capabilidade, senão não tem.

Indice de Capabilidade (CPk) = (MÍNIMO entre USL-X2)/3DP e (X2-LSL)/3DP

X2 é a média das médias.
DP é desvio padrão ou sigma

Types of Control Charts
 - Variable: x-bar and R charts
 - Attribute: p-charts
 - Defects: c-charts

R = Range = Amplitude

Ferramentas de qualidade

 - Básicas (7)
- folha de conferencia (coletar dados)
- histograma (entender dados)
- diagrama temporal (entender dados e processo)
- diagrama de pareto (entender dados)
- diagrama de dispersao (entender dados)
- fluxograma (entender processo)
- diagrama de causa e efeito (espinha de peixe) (procurar causa)


 - Avancadas
- CEP (Controle Estatistico de Processos) (entender processo)
- 5 por quês (entender dados)
- FMEA (Failure Mode and Effect Analysis) (prevenir falhas)

Just in Time e Teoria das Restricões

ANOTAÇÕES DE SISTEMAS DE PRODUÇÃO - 28/09/2011

RND - Rede Nacinoal de Dados

ANFAVEA - Associação Nacional Fabricantes de Veículos Automotores

EDIFACT - Eletronic Data Interchange for Administration; Commerce and Transport

EDI é a troca de dados empresariais entre computadores com formato padronizado, estabelecido por ambas as partes, permitindo o processamento automático.

- História
1975 - Padrão TDCC
1979 - Criação do comitê X12 (EUA)
...
1986 ANFAVEA EDI
1989 RND
1998 GMB EDIFACT
2000 ASN é essencial
Recentemente Toyota iniciou movimento para uso do XML

Just in Time

Os japoneses antes da segunda guerra mundial era um país que gostava de brigar, tendo surrado a Rússia por um tempo. Não tinha muita qualidade e usavam métodos próprios para produção. Depois de serem derrotados na guerra os americanos tomaram conta e resolveram fazer dos japoneses aliados, mandando algumas pessoas para ensinar qualidade aos japoneses.

O Toyota queria produzir automóveis, mas viram que não podiam competir com americanos pois não conseguiam produzir em larga escala, um dia o Toyota e o Tayshi Ohno foram para os EUA e visitaram um supermercado e tiveram uma idéia para melhorar sua produção, como no Japão a matéria-prima era cara eles não podiam desperdiçar e também não podiam fazer estoque, então isso deu início ao Just in Time, altos volumes de produção com mínimo de matéria-prima, produtos em elaboração e produtos finais.

# Keiretzu é a integração de fábricas, fornecedores e montadoras através da participação em ações, exemplo, a montadora possui ações da fábrica e do fornecedor, a fábrica possui ações da montadora e do fornecedor e o fornecedor possui ações da fábrica e da montadora, assim todos se ajudam para obter mais lucros, se um vai mal todos sofrem.

JIT produz o que é necessário, quando é necessário e NADA MAIS! 

#Ditado: Matéria-prima é Ouro, trabalhou é prata, terminou é lata. Após um produto ficar pronto se não for vendido ou se ficar em estoque é prejuízo.

Just in Time é uma filosofia de administração, um conjunto de técnicas de gestão, com sistema de produção "puxado". Combate o desperdício, evidencia problemas e gargalos...

O JIT tem como método de planejamento e controle:
 - Programação puxada
 - Controle Kanban
 - Programação nivelada
 - Modelos mesclados
 -

 Eliminar os 7 Desperdícios (vai cair na prova)
1- Excesso de produção
2- Tempos de espera
3- Transporte
4- Estoques
5- Processamento
6- Movimentação, interna na fábrica
7- Por defeito de produto

Práticas Básicas de Trabalho
- Disciplina e padrões
- Flexibilidade
- Igualdade
- Autonomia: por exemplo para parar a linha de produção por programação de materiais, coleta de dados e resolução de problemas, qualquer funcionário pode parar a linha de produção, isso vem da igualdade, hoje chamado de empowerment, dar poder ao funcionário. Isto faz com o funcionário tenha que ser estudado, ser bom, por isso na Coréia cerca de 25% dos jovens cursam Engenharias, para trabalhar em fábricas isso se tornou básico.
- Desenvolvimento pessoal
- Qualidade de vida no trabalho

*Os estoques escondem problemas, as vezes há problemas mas como há estoque você não resolve/vê...

 Kanban
- Requer a determinação do número de kanbans (ou containers) necessários.

k = (demanda esperada durante o lead time + estoque de segurança) / tamanho do container = dL(1+S)/C = 5(2)(1,1)/4 = 2,75 (ou 3)
>>SEMPRE arredonde para cima!

Takt time é o período (tempo de um ciclo) necessário para sincronizar o tempo de produção à demanda. Todos os setores sabem que têm um "ritmo", que é dado pelo takt time, o tempo de cada setor é igual. Exemplo, o corte leva 3 minutos, solda 3 minutos, montagem 3 minutos... no final, a cada 3 minutos sai um produto pronto. É utilizado o mínimo múltiplo comum dos tempos de fabricação de diversos produtos para definir takttime da fábrica...

*Sobre o livro A Meta, diz que pra prova precisa saber a cor do carro do gerente que estacionou na vaga... o que aconeteceu na sexta que foram comemorar e a mulher caiu em cima...  só coisa mundana rsrsrs

Gerenciamento das Restrições na Produção - GRP
* TOC: Theory of Constraints
- TOC é um conjunto de soluções geradas pelo seus processos de racicínio, buscando elevar as restrições... 
A Meta das empresas é ganhar dinheiro. Para saber se está alcançando a meta pode-se observar o lucro (receita - custo - despesas), o retorno sobre o investimento (lucro / capital investido) e o fluxo de caixa.

Segundo a TOC precisamos conhecer o GANHO, o INVENTÁRIO e a DESPESA OPERACIONAL. Sair do "Mundo do Custo" e entrar no "Mundo do Ganho".

Para melhorar o desempenho global deve-se melhorar apenas as restrições e não toda a fábrica.

Caso: Porto de Paranagua tinha uma fila de espera grande de caminhões para carregar o navio, a Cotriguaçu que mandava os caminhões passou a receber os pedidos do porto para enviar os caminhões de acordo com a necessidade/capacidade de carregar no navio (que era a restrição), diminuindo a fila de espera (estoque produtos semiacabados)...

TOC é algo que faz sentido, recomendo a leitura de A Meta e Corrente Crítica, que são livros do autor Goldratt e falam a respeito da aplicacão da idéia em fábricas e em gerenciamento de projetos.

Instalar JDownloader no Linux

Crie/vá ao diretório onde deseja instalar, no meu caso:
cd /opt/JDownloader

Baixe o arquivo com os passos da instalacao pronto feito pela equipe do JDowloader
wget http://212.117.163.148/jd.sh

Dê permissão de execucao para o arquivo
chmod +x jd.sh

Execute para iniciar a instalacão.
sh jd.sh

Aguarde, agora o JDownloader será baixado e instalado automaticamente. Se você não é muito bom em usar a linha de comando, eu recomendo que você use este wallpaper https://picasaweb.google.com/lh/photo/EsySHUmu8eDGCxxhLlPHHg por um tempo, é um guia rápido para iniciantes no terminal.

Mais informacoes: http://www.vivaolinux.com.br/dica/Instalando-o-JDownloader-no-Linux

A Matemática é Linda

Problema? Confira este vídeo, Nature by Numbers!


Pode conferir um pouco mais sobre as fórmulas do vídeo no site da Eterea Studios que fez o vídeo.

http://www.etereaestudios.com/docs_html/nbyn_htm/about_index.htm


Configurando diretórios httpd.conf Alias Apache 2.x

Após instalar os softwares na sua máquina como Apache, PHP, MySQL e alguma IDE como Netbeans ou Eclipse, muitos tem dificuldades em alterar algumas configurações do Apache, antigamente quando aprendi configurar isso o Apache estava sei lá em qual versão e após muito tempo sem usar essa semana eu também fiquei um pouco perdido, pois o arquivo httpd.conf que eu constumava alterar estava vazio.

Bom, dei uma olhada nos outros arquivos e vi que isso foi feito apenas por questões de organização e pra evitar que nós façamos alguns charques e alterar o que não devemos alterar, basicamente este arquivo está sendo incluído dentro de outro agora.

Em resumo, você faz a mesma coisa que antigamente, pra dizer ao apache que quando você acessar "http://localhost/netbeans" ele deve pegar os arquivos lá em "/home/bolivar/NetBeansProjects/" você escreve dentro do arquivo /etc/apache2/httpd.conf o tal do Alias conforme o exemplo abaixo, precisa ser root.

Pra abrir o arquivo com root, abra o terminal.

Poder de root
sudo su

Editar arquivo no gedit
gedit /etc/apache2/httpd.conf

Agora crie o alias pelo gedit, moleza né!
Alias /netbeans/ "/home/bolivar/NetBeansProjects/"

< Directory "/home/bolivar/NetBeansProjects">
    Options Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</ Directory>

Cuidado, tira o espaço no < Directory ... e ao fechar a tag </ Directory>, tive que colocar espaço para aparecer no blog... Bom. pra que esta mudança faça efeito reinicie o Apache, os comandos são (Ubuntu/Mint):

Reiniciar
/etc/init.d/apache2 restart

Também pode desligar/ligar, dá no mesmo
/etc/init.d/apache2 stop
/etc/init.d/apache2 start

Agora ao digitar "http://localhost/netbeans" seu navegador vai exibir os diretórios com seus projetos do Netbeans.

Quando você criar um novo projeto PHP no Netbeans já configure ele pro caminho certo, na Project URL adicione após o localhost o alias/apelido que você botou no apache,, ai quando você rodar o site (F6 no NetBeans) ele já vai rodar certinho, olha o print abaixo.


Sobre o arquivo httpd.conf, se você estiver usando Windows acredito que precisa inverter as barras (/), usa contra barra (\). Qualquer coisa comentem ai.

Desarollando Software Libre com Scrum

Palestra na LatinoWare do Diego Martin Lima, Desarollando Software Libre com Scrum. Scrum é um método ágil para desenvolvimento iterativo e incremental de software, bastante conhecido mas ainda pouco utilizado, requer uma equipe de desenvolvedores experiente.

Na realidade, este (equipe experiente) é o principal ponto que todas as metodologias de desenvolvimento esquecem, se você possui uma boa equipe, qualquer metodologia servirá e o software será bom, agora se a equipe for ruim, não adianta culpar a metodologia, apesar que algumas metodologias são melhores do que outras dependendo do tamanho da equipe e do tamanho e duração do projeto. Este foi o tema de uma outra grande palestra da LatinoWare, do Fábio Akita, a Semente não Entendida de Todas as Metodologias Ágeis, que parte do pressuposto que todas as metodologias envolvem pessoas, então, este é um fator primordial. Abaixo os slides dessa outra palestra, aproveite para pensar/refletir sobre alguns pontos de engenharia de software.


Tem um vídeo no Youtube também, não cheguei a olhar, mas se for a mesma palestra vale a pena, vou olhar mais tarde... http://www.youtube.com/watch?v=wvKHU7pA02c

Bom, voltando as anotações, minha opinião é que uma das melhores coisas do SCRUM é a reunião diária, máximo 15 minutos, em pé, onde cada um fala o que fez no dia anterior, ou se não fez fala qual foi o impedimento e diz o que vai fazer no dia atual. Nessa reunião todos vão se sentir parte do grupo, todos vão saber o que cada um está fazendo e caso algum não esteja trabalhando como deve, logo a equipe vai perceber através das reuniões e pode tomar alguma atitude.

Alguns problemas comuns:

 - Começar do zero
 - Não ter informações prévias, capacidade da equipe, dificulta previsões de tempo
 - Não realizar Scrum Diário
 - Não manter corretamente gráfico burndown
 - Más adaptações da metodologia


Processo SCRUM (Wikipedia, 2011)


Durante a palestra anotei um modelo para SCRUM rapidamente, refiz no Astah UML na forma de um diagrama de atividades pra facilitar, gostaria de postar os slides originais também mas está difícil de encontrar.

Modelo que rabisquei durante a palestra...

Blogger in draft integrando Google Plus G+

Pois é pessoal, se eu entendi direito (imagem abaixo), agora seus updates do blogger podem ir para o G+ automaticamente, ou seu perfil do G+ vai substituir o do Blogger, ainda estou meio na dúvida sobre o que vai acontecer, mas vou testar. 



[EDIT] Pelo que percebi, agora quando alguém acessa/clica no link do meu perfil do Blogger vai parar o meu perfil do Google Plus, também pude escolher os blogs em que sou autor e que desejo cadastrar no G+, agora eles aparecem lá do lado do meu perfil.

Veja, ali: Contributor to ...

Bom, achei a idéia interessante, ponto pra Google. Abs

Processamento Linguagem Natural com PHP

Palestra do Ivo Nascimento na Latinoware sobre processamento de linguagem natural no PHP, isto não existe, e seu projeto de criar algo semelhante com nltk.org (Python?), no github.com/iannsp/texta, o Text Analizer.

TF-IDF: Term Frequency - Inverse Document Frequency: calcula a importância de um termo em um texto.
 - Tokenizacão: no PHP seria um explode, guarda um array
 - Normalizacao: correcão portugues, maiúsculas e minúsculas, ...
 - Stop-words: e, de, mas, o, a .... tirar palavras que não interessam
 - Aprendizado: % das palavras positivas vs negativas

#Hashtags: semântica

N-GRAM: Conjuntos de termos, tokens. Bigram, Trigram, ...
  - Análise: Filtro Bayesiano, Coef. Dice, Qui-quadrado, Coeficiente de Jaccard, coef. Relacão Pearson, Distância Euclidiana...

Last.fm e Grooveshark usam algumas dessas fórmulas matemáticas como Pearson e Dist. Euclidiana para identificar as pessoas semelhantes e sugerir as músicas que elas gostaram uma para outra.

Problemas! Homógrafos, como: Quem casa quer casa... A mesma palavra com sentidos diferentes.

Ele sugeriu o PIP, Python em PHP caso queira usar PHP com o NLTK, também ficou de levantar os slides no slideshare.net/ivonascimento, vamos aguardar.

TDD - Desenvolvimento dirigido por testes

De volta da Latinoware, agora publicar anotações, começando pela palestra assertTrue($tdd); do Alexandre Gaigalas.

Segundo a Wikipedia: Test Driven Development (TDD) ou em português Desenvolvimento dirigido por testes é uma técnica de desenvolvimento de software que baseia em um ciclo curto de repetições: Primeiramente o desenvolvedor escreve um caso de teste automatizado que define uma melhoria desejada ou uma nova funcionalidade. Então, é produzido código que possa ser validado pelo teste para posteriormente o código ser refatorado para um código sob padrões aceitáveis. Kent Beck, considerado o criador ou o 'descobridor' da técnica, declarou em 2003 que TDD encoraja designs de código simples e inspira confiança[1]. Desenvolvimento dirigido por testes é relacionado a conceitos de programação de Extreme Programming, iniciado em 1999,[2] mas recentemente tem-se criado maior interesse pela mesma em função de seus próprios ideais.[3] Através de TDD, programadores podem aplicar o conceito de melhorar e depurar código legado desenvolvido a partir de técnicas antigas.[4]

Após esta breve definição, vamos as minhas anotações. Como você faz pra testar JS ou PHP? Toda vez abre o navegador, preenche trocentos campos validando CPF, data etc e clica em enviar pra ver está funcionando? Há muita perda de tempo nisso, é muito escroto, programador gosta de programar e não gosta de perder tempo fazendo testes, então, por que não criar um software para testar o software?

Método antigo de teste: var_dump($user);
Agora: // var_dump($user);  :D

Os métodos de teste evoluíram muito nos últimos anos, Breakpoints (usava muito isso no Delphi), Watchers, ... chegando ao TDD.

PHPUnit criado por Sebastian Bergman, uma boa ferramenta.

TDD (Test) + BDD (Behavior) + CI (Integração Contínua) = :D

O TDD foi feito para os desenvolvedores, para facilitar a vida deles e melhorar muito a qualidade do software.

Cuidar com Dependency Injection, não conecta ao banco real para testar.

Abaixo os slides da palestra, veja os gráficos dos tempos sem TDD e com TDD, formas de convencer seu chefe a mudar, etc. Confira também o texto do próprio autor em http://php5.net.br/tdd

Modelo Resumo SAPS e Práticas SI e TRC

Segue abaixo modelo de Resumo exigido para o maior evento Científico da SETREM, o SAPS. Este modelo acabou de ser enviado pela coordenadora de SI (Sistemas de Informação) e TRC (Tecnologia em Redes de Computadores) para todos acadêmicos e professores dos cursos pois para o ano 2012, este será o modelo nos resumos das Práticas Profissionais, deste este semestre.
 
Este é um modelo de resumo a ser utilizado para os trabalhos da Mostra Estadual de Pesquisa e do Salão de Iniciação Científica.  Para o corpo deste documento, use fonte Arial 12 pontos, letras maiúsculas e minúsculas, espaçamento entre linhas simples e o texto deve ser justificado (apenas para melhor visualização antes da inscrição). O resumo deve conter no máximo 3.000 e no mínimo de 800 caracteres, podendo ser digitado diretamente no sistema de inscrição na internet (ou seja, esse modelo é só um rascunho de trabalho antes de fazer a inscrição) ou utilizado o recurso de editar copiar/colar de um aplicativo de texto previamente utilizado. Na parte superior do sistema de inscrição existe um campo automático que ilustra a quantidade de caracteres que ainda faltam para concluir o limite determinado. No corpo do resumo não deve haver nenhuma indicação de autoria, formação e o título. Estes dados devem ser preenchidos corretamente no sistema de inscrição, sendo esta informação considerada como oficial na divulgação dos dados de autoria e formação. A comissão organizadora do evento não é responsável por nomes de autores e orientadores digitados erroneamente ou incompletos. Caso seja necessária nova impressão ou correção de documentos por erros desta natureza será cobrado dos autores o valor correspondente a uma inscrição extra. O resumo deve procurar relatar o tema da pesquisa, os objetivos, o problema, os principais referenciais e conceitos utilizados, a metodologia, os resultados parciais ou finais da pesquisa, recomendações e a conclusão, evidenciando as contribuições que este estudo proporcionou para o crescimento do seu conhecimento ou da ciência.

Palavras chaves: resumo, formatação, orientador.

Referenciais

GÜLLICH, Roque Ismael da Costa; LOVATO, Adalberto; EVANGELISTA, Mário dos Santos. Metodologia da pesquisa - normas para apresentação de trabalhos: redação, formatação e editoração.  2 Ed. Três de Maio: SETREM, 2007.

Licenças de Produtos Gratuitas

Recebi por e-mail da Microsoft e achei importante compartilhar.....

Olá,

Você sabia que cerca de 95% das nossas licenças na área técnica são gratuitas?

Para os profissionais de desenvolvimento, temos as versões Express dos produtos: Visual Studio, SQL Server, e Visual Studio LightSwitch.

E ainda para estudantes, Web Developers ou empreendedores de Startups, a Microsoft disponibiliza não só licenças gratuitas como também programas com benefícios específicos para atender às suas necessidades.

DreamSpark WebSite Spark BizSpark Express - Grátis
Público
Estudantes
 

Web developers e Web designers
 

Empreendedores (com foco nos desenvolvedores de soluções Software as a Service (SaaS).
 

Qualquer publico.
 
Produtos Disponíveis para Download
• Visual Studio,
• SQL Server 2008,
• Windows Server 2008 R2,
• Expression,
• XNA Game Studio,
• Robotics Developer Studio 2008 R2,
• Virtual PC e muitos outros

 

• Visual Studio Professional, • Expression (Studio e Web), • SQL Server 2008 Web Edition e Web Server R2, • Windows Web Server 2008 R2
 

• Mais de 300 softwares em diferentes versões
 

• Visual Studio • SQL ServerV • Visual Studio LightSwitch
 
Pré-requisitos
Ser estudante de uma instituição cadastrada no programa, incluindo a ISIC (Carteira Mundial do Estudante), a Conta Universitária Bradesco entre outras ou pertencer a uma instituição que tenha Live@Edu.
 

Desenvolver soluções de desenvolvimento web e/ou design Company  (até 10 pessoas) ou Individual.
 

A empresa deve ter menos de 3 anos de vida, ser da iniciativa privada e ter receita anual menor que 1M USD.
 

Nenhum
 
Outros benefícios
do programa

Disponibiliza uma série de treinamentos em português e inglês, para complementar a sua formação.
 

Participação no programa por até 3 anos,
 

Visibilidade, Networking e Suporte.
 

Download da versão do produto gratuito, sem data de expiração
 
Link para o
programa

DreamSpark
 
WebSite Spark
BizSpark
 

Visual Studio
SQL Server

 

Confira na próxima edição informações sobre nosso Programa de Avaliação de Softwares.

Atenciosamente,
Equipe Audiência Técnica - Microsoft

Dica de Música: Super Mário - IDR

E ai galera, aqui na minha região tem uma banda chamada IDR, já ouviu falar? Pois é, eu também ainda não tinha escutado, mas voltando da faculdade hoje tocou na Rádio Cidade Canção e achei bastante legal! Curtam ai!


Alterar Configurações de Privacidade dos Apps Facebook

Bem, com as novidades no Facebook surgiram diversos artigos na Internet criticando e elogiando, um deles em particular me chamou a atenção, Porque a Integração do Facebook é na verdade Antissocial, entre as críticas uma das principais é as permissões que os aplicativos tem de publicar tudo que você faz na rede mundial de computadores, Internet, na sua timeline do facebook, passando inclusive o link para você dar uma olhada nos seus aplicativos, por favor, abra em uma nova aba/janela este link antes de continuar lendo, provavelmente você já está logado no face e vai carregar diretamente uma página semelhante a minha mostrada abaixo.

Aplicativos Facebook
Nesta página pode-se gerenciar as permissões que dos aplicativos, podendo excluir ele ao clicar no X bem na direita, isso é padrão e você já deveria saber, ou editar as permissões, clicando em editar ou sobre o nome do aplicativo, veja imagem abaixo.

Editando permissões

Ao clicar em editar vai exibir o que o aplicativo pode fazer, dependendo do aplicativo algumas ações são obrigatórias e, caso você não queira dar tantas permissões a única saída é Remover o aplicativo, mas outras permissões, como no exemplo acima "Publicar no Facebook em meu nome" você pode Remover.

Se não puder remover, altere a privacidade do app clicando na seta para baixo onde está escrito Público e clique em Personalizar.


Ao clicar em personalizar o Facebook vai exibir a melhor opção de todas, Somente eu! Selecione e clique em Salvar configuração.


Você também pode ocultar para algumas pessoas como seu chefe, sua namorada as publicações e deixar visível aos demais, um dia isso vai dar tilt, ou apenas exibir para pessoas específicas ou listas.

Outra maneira de alterar estas permissões é diretamente na linha do tempo (timeline) ou em configurações de privacidade, recomendo fortemente que de uma revisada nestas configurações e ative a análise das marcações e da linha do tempo que por padrão vem desativado, assim você pode moderar o que os outros colocam no seu nome.

Para tornar as alterações de privacidade FULL, ou seja, que as publicações já feitas passem a respeitar as novas configurações é necessário ainda clicar em Gerenciar a visibilidade de publicações antigas e depois clicar em Limitar publicações passadas.



Fica a dica, abraços e até a próxima.

Dica: Quadrinhos do Gus Morais

Muita gente gosta de ler revista em quadrinhos, mangás ou algo semelhante na Internet e eu não sou diferente, por isso quero indicar aqui um site muito bom que é do Gus Morais. Pra você ver o nível e relembrar de alguns fatos interessantes do tempo que a Internet engatinhava no Brasil, veja este último que ficou muito bom: Por uns bytes de memória...

Sistemas Operacionais - Discos

Disco magnético é o principal periférico de entrada e saída, sendo o periférico que mais influência na performance da máquina. Processador e memória não são considerados periféricos...

Pra escrita há uma tensão maior no cabeçote e pra ler menor... nanoamperes

Organizado em uma sequencia de trilhas que não se encostam, círculos concêntricos. Trilhas separadas por Gaps onde são gravadas informações de controle interno do HD.


Em termos físicos um HD pode ser dividido em:

- Setor: 512 bytes, unidades de tamanho fixo
- Cluster: menor unidade de alocação variando de 512bytes a 64kbytes, cluster pequeno torna o índice maior, cluster grande menor. Se usar HD pra arquivos grandes como filmes o melhor é usar cluster grande para diminuir o índice e melhorar a performance...
- Trilha: subdividida em setores
- Cilindro: conjunto das trilhas de mesmo número
- Face: lado do disco.

Formatação física: verifica setores com defeitos e monta uma tabela com setores defeiturosos que passam a ser ignorados pelo sistema, não sendo mais visível, deixa o HD menor mas evita erros de corromper arquivos etc. Eu usava um chamado MAXLLF no tempo que usava windows 98, bons tempos hehe.

A grande novidade nos últimos anos passou a usar o spin na vertical pra conseguir guardar mais informações, ocupar menos espaço, HD fica mais denso...

Métodos para localizar trilha, superfície e setor:
- LBA utiliza um único número para cada setor, setores númerados sequencialmente.
- CHS utiliza número da cabeça, cilindro e setor.

Desempenho do disco, envolve 3 tempos.
- Tempo de posicionamento, mover o cabeçote pra trilha, este é o tempo mais demorado. (seek time)
- Tempo de latência rotacional, rotacionar até o local com as informações.
- Tempo de transferência, fazer a leitura e transferir para memória.

Entrelaçamento (interleaving) serve para aumentar o desempenho, evitar latência rotacional, grava pulando alguns setores.

Escalonamento do disco é a organização das requisições de gravação buscando melhorar o desempenho. O mais fácil de implementar é o FIFO que também é um dos mais ruinzinhos em questão de performance. O algortimo de escalonamento do disco tenta minimizar o seek time, tempo de deslocamento do cabeçote.


** estou pensando em analisar este algoritmos de escalonamento de processador e HD para sistemas de produção, acho que podem auxiliar no sequenciamento etc.

RAID - conjunto de discos vistos pelo SO como um único HD.
RAID linear: 2 HDs vistos um só, um partição apenas com 2 discos, vai enchendo 1 HD, ao conseguir passa automaticamente a utilizar o outro. Não aumenta velocidade e não aumenta segurança, apenas permite aumentar discos físicos na unidade lógica.
RAID 0: Diminui a segurança e aumenta a velocidade. Ao gravar um arquivo ele grava metade em 1 HD e outra metade em outro, aumentando muito a velocidade mas, se um dos discos der pau perde tudo.
RAID 1: também chamado de espelhamento, fornece redundância dos dados aumentando muito a segurança mas perde um pouco da velocidade na gravação, na leitura deve ficar mais rápido visto que pode ler metade do arquivo em disco e outra metado no outro. Custo maior visto que dois HDs de 500 vistos pelo SO como 1 de 500.
RAID 5: precisa pelo menos 3 HDs, grava dados em 2 HDs e no terceiro apenas informações de paridade para permitir recuperar dados. Ganha velocidade por grava metade em cada disco (2 primeiros) e também aumenta segurança pela possibilidade de recuperar informações utilizando os dados de paridade. Tem a velocidade do RAID 0 e a segurança do RAID 1 com a vantagem de desperdiçar apenas 33% do espaço.
RAID 1+0: Combinação do RAID 0 com o RAID 1, precisa pelo menos 4 HDs. Primeiro aplica RAID 0 e depois faz o espelhamento, RAID 1.

RAID pode ser em Hardware (firmware) ou em software. Em hardware costuma ter melhor desempenho, a própria controladora do disco faz o processamento de cálculo de paridade, organização dos dados etc, já no software o processador faz tudo.  O RAID via hardware exige que os HDs tenham tamanho idênticos. RAID via software permite usar discos de tamanhos diferentes, mas usando partições de mesmo tamanho nos dois HDs.

Ibovespa Semanal 30/09/2011 11:53


No momento bem próximo a um suporte nos 52k, se fechar abaixo disso hoje acredito em mais quedas pra semana que vem, podendo buscar o suporte nos 48k de janeiro de 2009 e que respeitou em agosto de 2011.

Algumas frases famosas

A pior estratégia é não ter uma estratégia.

Para o sucesso é necessário ter o DEP! Disciplina, Estratégia e Paciência.

"As ações são o maior mecanismo de transferência de riqueza dos apressados aos tranquilos." (Warren Buffett)

“Não precisamos ser mais espertos que os outros; precisamos ser mais disciplinados do que os outros” Warren Buffett

A palavra "crise" em chinês é composta por dois ideogramas: o primeiro, símbolo do perigo; o segundo, da oportunidade.

"Existe apenas um lado do mercado e não é o do touro nem do urso, mas o lado certo." Jesse Livermore

"O pior erro que investidores cometem é realizar lucros muito rápido e prejuízos tarde demais." Michael Price - Mutural Shares Fund

Atenção
As informações contidas neste post são apenas estudos ou opiniões pessoais e não representam, de maneira alguma, recomendações de investimento, isentando a todos sobre qualquer responsabilidade resultante da tomada de decisão com base no conteúdo aqui apresentado. O investimento em ações é um investimento de risco e rentabilidade passada não é garantia de rentabilidade futura. Na realização de operações com derivativos existe a possibilidade de perdas superiores aos valores investidos, podendo resultar em significativas perdas patrimoniais.

Criação de um Sistema para Controle de Viagens no Delphi com Firebird Parte II

Olá pessoal, este tutorial é bem antigo e estava perdido aqui nos meus Rascunhos, acho que não tinha terminado ele, era pra ser a continuação deste que na verdade acabou sendo continuado por este. Era pra ser um passo a passo de como montar os cadastros da nossa aplicação para controle de Viagens no Delphi, mas foi feito apenas o início da parte dos menus... #FAIL mas algo sempre se aproveita, então, boa leitura.

Abra o Delphi e crie uma nova aplicação pelo menu File → New → VCL Forms Application – Delphi for Win32, o Delphi vai abrir um Form vazio pra começarmos a trabalhar, no Object Inspector vamos alterar as seguintes propriedades deste form:

Name: FrmPrincipal
Caption: Controle de Viagens
WindowState: wsMaximized

Clique dentro do form e pressione CTRL+ALT+P, digite TMainMenu e pressione ENTER. O atalho serve para começar a filtrar os componentes da Tool Palette do lado esquerdo, note que enquanto você digitava os componentes vão sendo filtrados até sobrar apenas um, com o ENTER ele foi automaticamente inserido no formulário principal.

Este componente serve para montarmos o nosso menu, de um duplo clique nele, será aberto um novo form em branco com um menu vazio selecionado, no Object Inspector vamos procurar a propriedade Caption e digitar "Arquivo", note que vai aparecer um menu "Arquivo" no formulário, clicando em Arquivo ele abre um menu suspenso para baixo onde podem ser cadastrados mais menus, selecione um espaço em branco logo abaixo de "Arquivo" no menu e preencha a propriedade Caption como "Sair", depois vá na aba Events do Object Inspector, então dê um duplo clique no evento OnClick, o Delphi vai sair do modo Design e vai para o Code, ou código, digite a seguinte instrução para fechar a aplicação quando clicado neste menu (Sair):

procedure TFRMPRINCIPAL.Sair1Click(Sender: TObject);
begin
  Close;
end;

Agora pressione F12 para voltar para o modo Design, esta é a tecla de atalho pra alterar entre Design e Code. Bom, agora você já sabe como criar mais menus e adicionar eventos para eles, crie um menu ao lado de "Arquivo" chamado de "Manutenções" e dentro dele (menu suspenso para baixo) crie os seguintes subMenus: Cidades, Pontos Turísticos, Passageiros, Guias, Veículos e Viagens. Se quiser ainda pode criar mais um menu ao lado deste para "Ajuda" sobre o sistema mas isso vai de cada um, documentar sempre é importante, se for distribuir o sistema também é importante colocar um "Sobre" com dados para contato em caso de dúvida ou coisa assim.

Bom, temos a estrutura do nosso menu pronta, agora precisamos criar os formulários de manutenção dos dados e adicionar uma instrução no evento OnClick dos menus que vai exibir este formulários, veremos isto mais adiante.

Com o início da aplicação ok vamos salvar nossa aplicação, como é a primeira vez temos que ir no menu File → Save Project As... para que seja salvo um projeto com executável e tudo o mais, caso contrário o Delphi salvará apenas o formulário o que nos trará alguns problemas mais adiante, este procedimento deve ser feito na primeira vez que vamos salvar, depois um CTRL+S serve pra nós, continuando, ao clicar em Save Project As... o Delphi abriu uma janela pedindo local e nome do arquivo da Unit1, utilize a mesma pasta que já tem o diagrama e tudo mais, renomeie para UntPrincipal e clique em Salvar, agora ele vai abrir uma nova janela para salvar o Projeto, de o nome de CONTROLEDEVIAGENS ou algo assim e clique em Salvar.

Sistemas Operacionais - Anotações de 23/09/2011

Princípios básicos de hardware

- Periférico é um dispositivo conectado a um computador de forma a possbilitar sua interação com o mundo externo.
- Os periféricos são conectados ao computador através de um componente de hardware denominado de interface.
- As interfaces são interconectadas aos barramentos internos de um computador, elemento chave na coordenação da transferência de dados.
- Interfaces se utilizam de um processador dedicado a realização e controle das operações de entrada e saída, são as controladoras.
- Driver é um software que permite/explica ao sistema operacional se comunicar com cada periférico através dos comandos das controladores.

*** O computador de verdade é o processador, todo o resto é periférico, interno ou externo, conectado de alguma forma com o processador.

Retângulos cinzas são controladores



 * Classificados como:

- Orientado a caracter: cada caracter causa uma ação no dispositivo, exemplo teclado e interface serial.
- Orientado a bloco: bloco de caracteres, exemplo disco, fitas DAT.

 * Classificados também como:

- Com usuário
- Eletrônicos
- Remotos

Os periféricos possuem características próprias como taxa de transferência de dados, complexidade de controle, unidade de transferência (caracter, bloco ou stream), representação de dados e tratamento de erros.

 * Tipo de conexão e transferência de dados

- Serial: bit a bit, uma linha de transferência
- Paralela: n x 8 bits, mais de uma linha de transferência

O sistema operacional interage com os periféricos pela controladora, escrevendo nas memórias próprias do periférico os comandos dizendo o que precisa, estas memórias são chamadas de registradores de configuração. O SO sabe quais comandos pode executar nos registradores através dos drivers.

Os registradores de configuração das controladoras recebem ordens do processador, fornecem estados de operação e fazem a leitura e escrita de dados do periférico. Registradores são vistos pelo SO como posições de memória "a parte", quando o SO vai interagir ele grava os comandos no endereço de memória do registrador. Dependendo do tipo de controladora pode fazer mapeamento em memória, com comandos iguais aos utilizados para mapear RAM, outros tem uma mapeamento de entrada e saída que utiliza alguns comandos diferentes.

 * E/S programada

É mais simples de implementar, mais leve, mas tem busy waiting, enquanto as controladoras estão ocupadas o processador fica esperando elas terminarem para então passar ao próximo tarefa.

 * E/S orientada a interrupção

Processa outras tarefas enquanto aguarda a controladora terminar sua atividade, é avisado via interrupções.

 * DMA - Acesso direto a memória

É uma maneira de diminuir o número de interrupções, fazendo isso após executar uma gama de comandos como a leitura de vários blocos em um HD, no normal faz uma interrupção a cada bloco lido.

Gerência de entrada e saída

Tem como objetivo a eficiência, generacidade é importante, esconder os detalhes do serviço de entrada e saída em camadas de baixo nível, ...

*** Os driver são instalados na camada do sistema operacional, podemos dizer que é o manual que o SO olha pra saber como usar as controladoras, e os drivers possuem direitos de execução administrativos (são inseridos no kernel) podendo causar panes nos sistemas quando mal desenvolvidos. Placas de vídeos tem alguns fabricantes alternativos que visam tirar mais das placas e lançam versões de driver não oficiais e esculhambam o sistema. O ideal é utilizar drivers homologados pelo fabricante do sistema operacional além da homologação do desenvolvedor do periférico.

 * Subsitema de entrada e saída

É aquela porção do núcleo do SO que controla a parte independente e interage com o driver de dispositivo.



Tem como funcionalidades básicas:

- Escalonamento de E/S:
- Bufferização:
- Cache:
- Spooling:
- Reserva de dispositivos:

*** Buffer armazena somente dados somente enquanto está utilizando e já libera memória, cache mantém os dados enquanto houver memória disponível, quando acaba vai liberando os dados mais antigos a medida que necessita de mais.

 * Interface de programação

- Bloqueante:
- Não bloqueante:
- Assíncrono:

... continua próxima aula ...

### Aula que vem acaba capítulo 5 e teremos uma revisão, na outra semana jé é prova. Pra prova pode levar uma folha A4 com anotações feitas a mão para consulta.

Ótimas Pescarias

Final de semana chegando, pra acabar com o stress da semana o bom é ir pescar e dar muitas risadas, segue o vídeo pra você ir entrando no clima!


Bom final de semana!

Utilizando o Solver Excel para Programação Fina

Em Sistemas de Produção estamos estudando muitas coisas bem legais, algumas realmente complexas e, por isso mesmo, bastante divertidas. Entre elas, depois de ver MRP, Plano Agregado, MRP II, agora estamos estudando Sequenciamento ou Programação Fina, que é a definição de qual a melhor sequencia de produção ou de utilização das máquinas conforme alguns critérios como tempo médio de atraso na entrega.

Bom, voltando ao assunto do título do post, pra distribuir tarefas de modo a minimizar o tempo total de execução podemos utilizar um complemento do Excel chamado Solver, para instalar clique no botão do Office bem no topo esquerdo e clique em Opções do Excel, vai abrir a seguinte janela.

Opções do Excel -> Suplementos -> Solver -> Ir

Marcou Solver, clicar em Ok e aguardar a instalação.

Bom, com o complemento instalado, ele vai aparecer na aba Dados -> Análise -> Solver. Antes de utilizarmos o Solver precisamos montar uma estrutura no Excel para resolvermos nosso problema, digamos que a matriz abaixo mostra os custos em milhares de dólares na atribuição de trabalhos aos indivíduos A, B, C e D para as tarefas 1, 2, 3 e 4 e nós queremos descobrir qual a melhor atribuição final para minimizar os custos.

Custos em milhares

Cada indivíduo vai fazer um trabalho (apenas 1 por linha) e cada trabalho deve ser feito somente uma vez (apenas 1 por coluna), essa são nossas restrições. Vamos começar por ai, crie duas matrizes novas do mesmo tamanho dessa inicial (4x4), deixe uma em branco e na outra crie as restrições conforme imagem abaixo. Para criar as restrições utilize a função do Excel SOMARPRODUTO que faz a multiplicação e adição dos valores nas linhas das matrizes selecionadas.

Crie restrições na linha e na coluna!
Após ter definido as restrições, precisa fazer isso pra usar o Solver, utilize a mesma função SOMARPRODUTO mas desta vez para nossa "função Objetivo", selecione a matriz inicial com os custos e também a que está vazia, deve ficar zero. Salve a planilha Excel.

Função objetivo, vai nos dizer o custo final
Agora vamos achar a solução para este problema com o Solver, clique em Solver na aba Dados, na janela que abrir, defina a célula de destino a célula que temos o resultado do somarProduto ao lado de "Função Objetivo" e marque "Igual a " * Mín. Nas células variáveis selecione a matriz em branco, que é onde o Solver vai preencher para nós de maneira que tenhamos o mínimo de custo.

Agora vamos configurar as restrições no Solver, para isso clique no botão "Adicionar", na janela que abrir selecione as restrições conforme figura abaixo.

Executar cada tarefa apenas uma vez e cada pessoa executar uma tarefa.
Também os valores que serão preenchidos devem ser binários, apenas 0 ou 1.

Após adicionar as restrições, clique em Opções na janela do Solver e marque a opção "Presumir modelo linear" para resolver este tipo de problema.

Dependendo do tamanho da matriz é interessante diminuir a precisão e aumentar a tolerância, as vezes vai levar muito tempo pra processar tudo ou vai travar o Excel, uma dica, salve tudo antes de executar o Solver.
Bom, Solver deve ter ficado assim:

Parâmetros do Solver
Agora basta clicar em Resolver e rezar pra não dar pau no Excel, pra mim ele ainda não conseguiu ir até o fim, mas ai clico em "Manter solução do solver" e consigo ver o que ele conseguiu fazer pra mim.


Bom, meu resultado final foi 17 milhões, veja planilha.

Resultados
Bem, pode notar que ele respeitou as restrições e conseguiu chegar a um resultado minizando os custos, fazer com apenas 4 indivíduos e 4 trabalhos eu até me arriscava fazer no olho, mas imagina fazer algo com 100 máquinas e 100 trabalhos, ai melhor usar o Solver mesmo!

Depois de ler A Meta, Corrente Crítica e estar estudando essa cadeira de Sistemas de Produção estou gostando desse tipo de sistema, acho que vale a pena desenvolver algo na área, talvez com IA, idéias pro meu TCC ano que vem, alguma sugestão?

Abraços!