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.

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!