Oi pessoal, estou publicando um dos exercícios da prova de Estrutura de Dados sobre listas dinâmicas que fiz em parceria com meu amigo Thiago Castello que é fera em linguagem C.
segue o código.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
 
 
#include <stdio.h> //carrega as bibliotecas
#include <stdlib.h>
 
//declaracao da lista
struct No{
        int valor;
        struct No * prox;
       };
 
struct No * Lista;
 
int main (void){
  Lista = NULL;
  int opcao;
  int x;
 
  do {
   printf ("nn Digite a opcao desejada:");
   printf ("n 1-inserir ");
   printf ("n 2-remover ");
   printf ("n 3-buscar ");
   printf ("n 4-Sair do programa nn");
   scanf ("%d", &opcao);
 
   switch (opcao){
 
     case 1:
           {
             printf ("nDigite o preco: ");
             scanf ("%d", &x);
 
             struct No * aux= (struct No *) malloc (sizeof (struct No));
             aux -> valor = x;
             aux-> prox = Lista;
             Lista =aux;
             printf ("n preco adicionado!n");
             break;
             }
 
    case 2: //remover
             {
               printf ("npreco a ser removido");
               scanf ("%d", &x);
               struct No * aux;
               struct No * ant;
 
               aux = Lista;
               ant = NULL;
               while (aux != NULL){
                     if (aux->valor == x){
 
                       if (aux == Lista)
                       {
                          Lista = aux->prox;
 
                       }
                       else{
                            ant->prox= aux-> prox;
                           }
                       printf ("nRemovido com sucesso!");
                       break;
                     }
                     else{
                           ant = aux;
                           aux = aux ->prox;
                         }
               }
 
             }
             break;
    case 3 : //buscar
                {
              int vlbusca;
             printf("digite o valor da busca:");
             scanf("%d",&vlbusca);
 
 
               struct No * aux;
               aux= Lista;
               while (aux != NULL)
               {
                   if(aux->valor == vlbusca)
                   { printf ("n o valor existe:", vlbusca);
 
                   } else {
                          printf ("n o valor nao existe:", vlbusca);
                          }
 
                  aux = aux -> prox;
 
               }
 
               break;
                }
 
 
    case 4: {
        break;
 
           }
   } //fim do switch
  } while (opcao != 4); //sair do programa
}

Para implementar editar e criar o executavel indico o programa Dev-C++ que pode sei baixado atraves de um dos links abaixo.
http://www.baixaki.com.br/download/dev-c-.htm
http://www.bloodshed.net/devcpp.html
O Dev-C++ é gratuito e de código aberto

Projeto Service manager

01 Introdução – http://blog.fabianobento.com.br/2011/09/projeto-service-manager/
02 Padrões para o projeto e especificações – http://blog.fabianobento.com.br/2011/09/projeto-service-manager-padroes-para-projeto-especificacoes/

Padrões para Nomenclatura em um banco de dados
1. INTRODUÇÃO

O objetivo deste documento é prover informações para formalizar a nomenclatura dos objetos de banco de dados, bem como apresentar regras para sua utilização evitando assim o hábito de existir diferentes nomenclaturas dentro da aplicação.
O documento apresenta os objetos de banco de dados com três itens:
Sintaxe, regras e exemplo. Isto para facilitar o entendimento do desenvolvedor.

2. BANCO DE DADOS

O nome do banco de dados deverá identificar o negócio que está sendo automatizado ou deverá refletir a sigla da aplicação.

Sintaxe:

{[a.. z]} _ xxxxxx , onde:

xxxxxx – indica o nome da aplicação que o banco de dados irá atender.
Para o nome da aplicação utilizar tudo em minúsculo com no máximo 25 caracteres de ‘a’ a ‘z’.

3. TABELAS

Exemplos:

tb_ordem_servico – Tabela de ordens de serviços
tb_pessoa – Tabela de pessoa física
tb_cliente – Tabela de clientes.

4. NOME DAS COLUNAS

Identificação Descrição do atributo Tipo de dado utilizado
NM Nome de coluna que irá armazenar valores “string”, ou seja, caracteres.(utilizar para nome próprio) String
NR Nome de coluna que irá armazenar valores numéricos inteiros, para conteúdos significativos. Numérico
IE INDICAR SITUAÇÕES ESPECIAIS, 

Nome de coluna que irá armazenar valores numéricos inteiros, utilizado em um dicionário de dados (Domínio)

Ex. 0 Aberto, 1 Fechado, 3 Cancelado

Numérico/String
DS Nome de coluna que irá armazenar valores “string”, ou seja, caracteres que são descritivos. String (caracteres)
DT Nome de coluna que irá armazenar valores do tipo data Data
HR Nome da coluna que irá armazenar valores do tipo hora Hora
VL Nome de coluna que irá armazenar valores numéricos, ou seja, números que podem possuir casas decimais Numérico
CD Nome de coluna que irá armazenar valores numéricos inteiros, utilizado em atributos falsos. Numérico
ST Nome de coluna que irá armazenar valores do tipo caracteres com conteúdo pré-estabelecido. Ex. Coluna ST_Cliente pode ter seu conteúdo como sendo “A” ou “I” e nenhum outro valor a não ser esses estipulados String
SG Nome de coluna que irá armazenar siglas, EX. Coluna SG_ESTADO pode ter seu conteúdo como sendo as siglas de estados, SP, MG, GO, SC. String

Regras:

– Para siglas utilizar todas as letras em maiúsculo;
– Usar palavras no singular e sem acentuação;
– Usar nome que identifique e individualize o dado dentro da tabela;
– Dar nomes distintos para dados distintos;
– Utilizar o nome sempre no singular;
– Sempre acrescentar comentário sobre a informação da coluna

Exemplos:

Cd_pessoa – código da pessoa
nm_pessoa – nome da pessoa
dt_nascimento – data de nascimento
vl_salario – valor do salário

As informações da padronizção do banco de dados foram criadas a partir de estudos e pesquisas em outros sistemas e na internet.

Projeto Service manager

01 Introdução – http://blog.fabianobento.com.br/2011/09/projeto-service-manager/

Antes de iniciarmos as tarefas e criação da documentação decidimos criar padrões para o desenvolvimento para facilitar o trabalho entre os integrantes do grupo.

Fizemos uma discussão para definirmos um padrão para o projeto, layout das telas, idioma de desenvolvimento e algumas outras estruturas.

O resultado final ficou da seguinte maneira;

Idioma de desenvolvimento
(Inset, update, delete)
Ex.: InsereCliente
EX.: InsertCliente
Atualiza <-> Update
Apaga <-> Delete

Ficou definido a utilização no idioma português.

Layout das telas
Ficou definido que as telas serão compostas por campo de busca, opção de inserir novos cadastros, e lista de alguns registros com opção de edição a partir da lista.

A partir desta discussão sugeri uma padronização para nomenclatura do banco de dados, que deverá ser minha próxima publicação.

Link para o artigo:

http://blog.fabianobento.com.br/2011/09/padroes-para-nomenclatura-em-um-banco-de-dados/

Projeto Service manager

Iniciamos um trabalho no curso de SI, que será a apresentação do projeto de um sistema WEB funcionando, nosso grupo é composto por cinco integrantes; Adilson, Aldovrando, Eu(Fabiano), Heitor e Henrique. O tema definido pelo grupo foi o desenvolvimento de um Sistema de Gestão de Ordens de Serviços e Vendas.
Vou tentar publicar toda semana a documentação que estamos fazendo baseando nos estudos que vimos ao decorrer do Curso.

Discutimos sobre as tecnologias que iríamos usar, lembrando que o projeto deverá ser desenvolvido para WEB para funcionar em plataforma Windows ou Linux no padrão MVC(http://pt.wikipedia.org/wiki/MVC).
Linguagens da discussão; Java, PHP, .Net e Adobe Flex (AS – ActionScript)
Banco de dados: Oracle, MySQL

As tecnologias que escolhemos no final da discussão para usar no projeto são:

Linguagem: PHP / MySQL (ainda em discusão para usar Flex no visual)
Banco de Dados: MySQL

 

A próxima etapa será definir os padrões para o projeto e especificação dos use cases.

 

As regras de negócio definem como o seu negócio funciona.

Regras do Negócio são declarações sobre a forma da empresa fazer negócio. Elas refletem políticas do negócio. Organizações têm políticas para satisfazer os objetivos do negócio,satisfazer clientes, fazer bom uso dos recursos, e obedecer às leis ou convenções gerais do negócio. Regras do Negócio tornam-se requisitos, ou seja, podem ser implementados em um sistema de software como uma forma de requisitos de software desse sistema. Representam um importante conceito dentro do processo de definição de requisitos para sistemas de informação e devem ser vistas como uma declaração genérica sobre a organização.

As regras de negócio definem como o seu negócio funciona, podem abranger diversos assuntos como suas políticas, interesses, objetivos, compromissos éticos e sociais, obrigações contratuais, decisões estratégicas, leis e regulamentações entre outros.

Como o próprio nome define, a regra de negócio se aplica diretamente ao desenvolvimento de determinada plataforma de software voltada para um sistema de informação. É a regra de negócio que especifica as particularidades das funcionalidades a serem desenvolvidas.

No processo de desenvolvimento de qualquer sistema, a regra de negócio visa detalhar as funcionalidades particulares do software. Com isso facilita por parte dos programadores o desenvolvimento de métodos de tratamento de exceções, particularidades que o sistema possa executar e o mais importante, limitar ações fora do processo normal de funcionamento de um sistema específico.
(texto tirado do site: Wikipédia, a enciclopédia livre.)
http://pt.wikipedia.org/wiki/Regras_de_neg%C3%B3cio

Regras de Estímulo e Resposta
Esse tipo de regra de negócio afeta o fluxo de trabalho de um caso de uso de negócios e pode ser rastreada nos casos de uso de negócios aos quais se aplica. É possível mostrar um caminho condicional ou alternativo através do fluxo de trabalho. Se as ações envolvidas são menos significativas, talvez seja suficiente deixar a avaliação da regra de negócio ser incluída em um estado de atividade.

Regras de Restrição de Operação
Esse tipo de regra de negócio geralmente é convertida em precondições e pós-condições de um fluxo de trabalho ou em um caminho condicional ou alternativo em um fluxo de trabalho. Ele também pode ser uma meta de desempenho ou alguma outra regra não comportamental que deve ser rastreado nos casos de uso de negócios aos quais ela se aplica.

Regras de Restrição de Estrutura
Esse tipo de regra de negócio afeta as relações entre instâncias de entidades de negócios. Elas são expressas pela existência de uma associação entre duas entidades de negócios; às vezes como uma multiplicidade na associação.

Regras de Dedução
Geralmente, as regras de dedução parecem semelhantes aos tipos de regra de estímulo e resposta, de restrição de operação ou de restrição de estrutura; a diferença é a existência de algumas etapas que precisam ser atingidas para chegar à conclusão. A regra implica um método que precisa ser refletido em um estado de atividade do fluxo de trabalho e eventualmente em uma operação em um trabalhador de negócio ou entidade de negócios.

Regras de Cálculo
As regras de cálculo são diferentes das regras de dedução; a diferença é que o método é mais formal e semelhante a um algoritmo. Assim como as regras de dedução, esse método precisa ser rastreado em uma atividade no fluxo de trabalho e eventualmente em uma operação em um trabalhador de negócio ou uma entidade de negócios.

informações tiradas do site
http://www.wthreex.com/rup/process/modguide/md_brule.htm

OCR é um acrónimo para o inglês Optical Character Recognition, é uma tecnologia para reconhecer caracteres a partir de um arquivo de imagem ou mapa de bits sejam eles escaneados, escritos a mão, datilografados ou impressos. Dessa forma, através do OCR é possível obter um arquivo de texto editável por um computador.

http://pt.wikipedia.org/wiki/Reconhecimento_%C3%B3tico_de_caracteres

E ai galerinha, beleza!!

Resolvi criar esta categoria para escrever um pouco sobre GED, Gestão Eletrônica de Documentos ou Gerenciamento Eletrônico de Documentos, e também um pouco de OCR, Reconhecimento Ótico de Caracteres.

A idéia para esta categoria é mostrar o que é, como funciona e as funcionalidades que estão disponiveis, abaixo estou postando dois links que vou usar como referencia para o primeiro artigo.

OCR – http://www.free-ocr.com – converte o texto na imagem em arquivo de texto,  e tem suporte para arquivos das seguintes extensões: PDF, JPG, GIF, TIFF ou BMP.

GED – https://www.knowledgetree.com – Sistema de gestão eletrônica de documentos online, disponivel para testar por 14 dias.

até breve, abraços.

O Ministério do Trabalho e Emprego (MTE) prorrogou para 1º de setembro de 2011 o prazo para as empresas adequarem o registro eletrônico de ponto à Portaria 1510. A data limite era terça-feira, 1º de março. Outra novidade publicada no Diário Oficial da União nesta segunda (31) é a Portaria 373, que possibilita a adoção de sistemas alternativos de controle de jornada de trabalho pelos empregadores.

A Portaria 373 estabelece que deve haver autorização por convenção ou acordo coletivo de trabalho para a utilização destes sistemas. Ela determina ainda que não devem ser admitidas restrições à marcação do ponto, marcação automática, exigência de autorização prévia para marcação de sobrejornada e a alteração ou eliminação dos dados registrados pelo empregado.

Cerca de 700 mil empresas em todo Brasil utilizam sistema de ponto eletrônico e menos da metade delas compraram o novo equipamento de registro eletrônico de ponto, informou o MTE. O ministro Carlos Lupi ressaltou que “a nova portaria não irá prejudicar essas empresas, só ampliar as possibilidades de negociação”.

Fonte: Senior Sistemas
LINK: http://www.senior.com.br/prazo-para-adequacao-a-portaria-1510-e-prorrogado-para-1%C2%BA-de-setembro/

 

Razões para investir em Asterisk por Mário Santana

Ainda existem muitos paradigmas em relação aos softwares livres (Open Source) e quando se fala em investimentos,

Asterisk

Asterisk

seja para uma empresa ou para um autônomo, a primeira coisa que se pergunta é: “O que eu ganho com isto?”. No ramo de Voip não é diferente, podemos listar alguns benefícios bem evidentes:

Read More →

Navegando na internet encontrei este artigo que mostra como otimizar o armazenamento do IP como inteiro, e alertar para o uso inadequado de tipos de dados.
O artigo é bem simples e fácil de entender.

====== post original ======
Neste artigo explicarei qual a principal vantagem de armazenarmos endereços IP com o tipo de dados “inteiro” ao invés do tradicional “char/varchar”. E isto pode servir de exemplo para outros campos/colunas. Para que você possa entender melhor vamos criar uma tabela simples de forma que possamos armazenar algum endereço IP utilizando o tipo CHAR.

mysql&gt; CREATE DATABASE exemplo;
mysql&gt; USE exemplo;
 
mysql&gt; CREATE TABLE log
           (
            id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
            usuario CHAR(30),
            visitas INT,
            ip CHAR(15)
           );

Vamos inserir alguns registros nesta tabela.

mysql&gt; INSERT INTO log VALUES(null, 'douglas', 10, '192.168.10.10');
mysql&gt; INSERT INTO log VALUES(null, 'luciana', 10, '200.213.162.161');
mysql&gt; INSERT INTO log VALUES(null, 'alberto', 10, '213.187.0.1');

Bem, por enquanto temos três registros em nossa tabela, começaremos nossa primeira análise.

[Leia Mais]

Read More →