O Projeto Jornalismo Interativo surgiu como protótipo do Trabalho de Conclusão do Curso de Ciências da computação na Feevale. O trabalho fala sobre classificação automática de textos utilizando algoritmos de aprendisado supervisionado de máquina para a construção de um classificador. O trabalho está a disposição no link: Download PDF. E o Prostótipo no link: www.jornalismointerativo.com.br.
Como esse site tem hoje (4/8) poucos acessos, decidi fazer um Plano de negócio para transformar a aplicação em algo mais comercial. Para isso foram estudados 2 arquivos didáticos de como elaborar um plano de negócio, o primeiro é o do Sebrae Download PDF e o segundo foi desenvolvido pelo Professor Dailton Felipine e distribuido pelo site Lebooks.com.br Download PDF.
para isso vou usar uma tabela simples: DROP TABLE IF EXISTS `teste`;CREATE TABLE `teste` ( `id` int(9) NOT NULL AUTO_INCREMENT, `nome` varchar(45) NOT NULL, `valor` float(9,2) NOT NULL, `total` float(9,2) NOT NULL, `data` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
Tem-se o código php abaixo onde AUTOCOMMIT=0 indica que o commit será feito de maneira manual e o START TRANSACTION que indica o início da transação; então são executadas algumas inserções e alterações e aparece o primeiro COMMIT, depois aparece um ROLLBACK que desfaz todas as alterações até o primeiro COMMIT. Utilizar a estrutura de transações é muito importante quando se pretende manter a integridade de um determinado processo, e não deixar algum processo efetuado pela metade sem que possa começa-lo novamente.
<?php
?>
Objetivos específicos
• Estudar técnicas de aprendizagem de máquina;
• Estudar métodos de classificação de texto;
• Estudar o framework Weka;
• Definir um domínio jornalístico;
• Desenvolver protótipo que classifique textos dentro do domínio definido;
• Desenvolver protótipo que e auxilie na tomada de decisão na construção de textos dentro do domínio definido;
• Avaliar protótipo desenvolvido;
Trabalho final: Download PDF
Site desenvolvido como protótipo: www.jornalismointerativo.com.br
1) Separar as palavras
2) Tirar as STOP WORDs (achar lista de stop words em português)
3) TF (term frequence) – relação de frequencia por documento.
4) DF (document frequence) – relação de quantos documentos aparecem cada palavra.
5) TFiDF (achar algorítimo que cálcula esse valor)
6) Seleciona os 10 mais frequentes (Ponto de corte)
7) criar a tabela: documentos/termos e ditar a frequencia.
8.) Montar um arquivo de entrada para treino. Processamos esse arquivo no WEka
9) Usamos o j48 para número limitado de palavras ou SVM para uma frequencia inlimitada.
10) Esse processamento vai gerar o classificador que pode ser testado usando o Weka – Process – Open File – Classify.
Triggers
Triggers são blocos de código (PL/SQL, Transact-SQL, …) armazenados dentro do banco de dados, que são executados automaticamente pelo banco toda vez que uma instrução SQL (evento DML) for aplicada para uma tabela específica.
Aplicações das triggers:
Dicas e precauções:
Em síntese, triggers são usadas para realizar tarefas relacionadas com validações, restrições de acesso, rotinas de segurança e consistência de dados, etc. Desta forma, estes controles deixam de ser executados pela aplicação e passam a ser executados pelas triggers em determinadas situações, tais como:
Quando você for criar uma Trigger deverá definir:
A Sintaxe para criação de uma Trigger é a seguinte:
CREATE OR REPLACE TRIGGER nome_trigger
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
ON { NOME_TABELA }
FOR EACH ROW
BEGIN
Bloco de código PL/SQL
END;
|
Exemplo 1: CREATE OR REPLACE TRIGGER OPERACAO_AUDIT AFTER INSERT ON OPERACAO FOR EACH ROW BEGIN INSERT INTO AUDITORIA VALUES (SYSDATE, ‘REGISTRO INSERIDO NA TABELA OPERACAO’, ‘NOME_USUARIO’); END; |
Exemplo 2: CREATE OR REPLACE TRIGGER CONTA_TESTE AFTER UPDATE OF LIMITE ON CONTA FOR EACH ROW BEGIN RAISE_APPLICATION_ERROR(-20500, ‘Não é possível alterar’); END; |
Pseudo registros :Old e :New
Ao trabalharmos com as Triggers de nível de linha (FOR EACH ROW), utilizamos estes dois pseudo registros, eles servem para fazer as comparações das colunas velhas (
ld ) com as novas ( :new ), são muito utilizadas para fazer Update nas colunas.
Exemplo 1: CREATE OR REPLACE TRIGGER OPERACAO_AUDIT AFTER UPDATE ON FUNCIONARIO FOR EACH ROW BEGIN INSERT INTO REG_ALT_SALARIO (DATA, USUARIO, SALARIO_ANT, SAL_ATUAL) VALUES (SYSDATE, ‘NOME_USUARIO’, :OLD.SALARIO, :NEW.SALARIO); END; |
Predicados Condicionais
Está parte das Triggers é bem interessante, pois dentro do corpo das Triggers abrigam três predicados importantes para a utilização de múltiplas instruções DML, são os INSERTING (inserindo), UPDATING (atualizando) e DELETING (excluindo), esses predicados possuem valores lógicos e são iniciados no momento de disparo da Trigger.
Alguns comandos importantes:
Desabilitando e habilitando uma Trigger específica
ALTER TRIGGER nome_da_trigger DISABLE; ALTER TRIGGER nome_da_trigger ENABLE;
Desabilitando e Habilitando todas as Triggers de uma tabela
ALTER TABLE nome_tabela DISABLE ALL TRIGGERS; ALTER TABLE nome_tabela ENABLE ALL TRIGGERS;
Compilando uma Trigger
ALTER TRIGGER nome_da_trigger COMPILE:
Eliminando uma Trigger
DROP TRIGGER nome_trigger;
Verificar no dicionário de dados as triggers do usuário
SELECT object_name, object_type FROM user_objects WHERE object_type = 'TRIGGER';
Obtendo detalhes das triggers
DESC USER_TRIGGERS Exercícios: 1. Criar uma trigger, chamada atualiza_saldo, para atualizar o saldo da conta corrente toda vez que ser efetuada uma operação (tabela OPERACAO) relacionada à conta. 2. Criar uma trigger, chamada testa_limite, para verificar se o saldo da conta após uma determinada operação de débito não ficará menor que o limite da conta. 3. Criar uma trigger, chamada bloqueia_operacao, que proíba que sejam efetuadas operações de alteração e exclusão na tabela de OPERACAO.
Introdução:
Estou a meses pensando em fazer uma espécie de jornal colaborativo onde as pessoas se cadastram e postam notícias, básico, como qualquer aplicativo na web onde os usuários gerem conteúdo. Só que eu sinto a necessidade de agregar valor as pessoas e as notícias. Criar critérios de qualidade para uma notícia e de alguma forma gratificar as pessoas.
Tenho a intenção de tornar o site uma referência na qualificação de pessoas da comunicação. Que as pessoas coloquem em seus currículos, sou top 23 do site banco de notícias, e se sintam honradas de ter conseguido esse reconhecimento.
Como vincular valor ao texto?
O produto final são os textos, criando valor aos textos as pessoas terão valor. Mas o foco fica na informação. No gerar informação com qualidade. Então entramos no grande desafio, como vincular valor ao texto?
Num primeiro momento eu pensei em criar uma pontuação por tempo de visita em cada notícia e contabilizar, somando com o número de acessos, comentários e indicações. É interessante, mas eu não consigo visualizar a recompensa ideal para os usuários. Não sei se eles apenas tendo uma pontuação alta, irão agregar valor.
Então eu pensei em uma segunda opção. As notícias são investimentos como na bolsa de valores e cada usuário pode ter sua notícia valorizando ou desvalorizando. Com o lucro das notícias os usuários poderão comprar links em notícias mais valorisadas e com isso, aumentar os seus acessos e valorizar cada vez mais. Lidar com dinheiro virtual é uma coisa que as pessoas se apegam bastante, elas vinculam esse aspécto a vida cotídiana delas, pois se elas podem render dinheiro virtual com uma notícia em um site, porque elas não podem gerar dinheiro real em um jornal de verdade?
Valorização das notícias:
A cada acesso, valoriza 1 centavo.
A cada comentário 10 centavos.
A cada dia sem nenhum acesso: - 10 centavos.
Custos:
Escopo:
Qualidade:
Trabalho:
Outros
Vou dar algumas dicas diante das dificuldades que tive para fazer a nfe.
Primeiros passos:
1) Adquirir o certificado digital PJ – A1
2) Tendo o arquivo, exporte ele com a chave privada.
3) Configure o servidor apache com ssl(https)
4) Instale a biblioteca CURL no PHP
5) Baixe os arquivos da NFePHP – http://www.nfephp.org/
6) Configure seu ambiente (pasta config), coloque seu certificado pfx na pasta certs e montar seus scripts para usar as libs do projeto.
7) Uma boa dica, é ja entrar no grupo http://groups.google.com.br/group/nfephp para tirar dúvidas e contribuir com o pessoal.
8.) Valide seus XLM no site http://www.sefaz.rs.gov.br/NFE/NFE-VAL.aspx
Parte 1:
Parte 2:
Parte 3: