CAT | Dicas

O LAG é uma função analÃtica do PL/SQL Oracle e tem a finalidade de retornar o registro anterior da tabela. Veja a sintaxe:
lag ( expression [, offset [, DEFAULT] ] ) OVER ( [ query_partition_clause ] order_by_clause ) |
Veja um exemplo:
SELECT ename,hiredate,sal, LAG(sal, 1, 0) OVER (ORDER BY hiredate) AS PrevSal FROM emp WHERE job = 'CLERK'; Ename Hired            SAL     PREVSAL -------- --------------- -------- ------------ SMITH 17-DEC-80  800      0 JAMES 03-DEC-81  950    800 MILLER 23-JAN-82 1300    950 ADAMS 12-JAN-83 1100   1300 |
O exemplo é bem simples e fácil de ser entendido, nele exibimos o salário (coluna SAL) e também exibimos o salário anterior (coluna PREVSAL).
Leia mais:
Em um ambiente de produção é interessante que a configuração de exibição de erros esteja em OFF no servidor PHP, pois informações acerca de um erro, seja ele ocasional ou causado propositalmente pelo usuário, pode fornecer informações importantes sobre o banco de dados utilizado, servidor Web, servidor PHP e até mesmo da sua própria aplicação.
Mas em um ambiente de desenvolvimento a exibição de erros e warnings se torna essencial para a depuração e testes do sistema, como resolver este conflito?
O ideal é não deixar os ambientes de produção e desenvolvimento divergentes para evitar surpresas desagradáveis no momento da publicação em produção, a solução fica então em configurar os scripts que estão em testes para que eles exibam os erros, veja um exemplo:
ini_set('display_errors', 1); ini_set('log_errors', 1); ini_set('error_log', dirname(__FILE__) . '/ERROS.LOG'); error_reporting(E_ALL); |
No trecho de código abaixo informamos para que o script PHP em questão exiba todos os erros e warnings e de quebra que os salve no arquivo ERROS.LOG que ficará armazenado na pasta que o script PHP.
Leia mais:
Continuando a falar de Regex vamos agora conhecer a função de alguns metacaracteres (ou alias):
| Metacaracter | Função | Exemplo |
| \ | Escape | \’ representa ‘ |
| ^ | Posição inicial da linha | ^C todas as strings que começam com C |
| $ | Posição final da linha | $o todas as strings que terminam com o |
| [] | Lista | [rot] qualquer string que contenha qualquer um dos caracteres da lista |
| {n} | Número de caracteres | {r} número de ocorrências |
| | | Alternativa | (‘eu’ | ‘você’) busca as duas alternativas |
| . | Qualquer caracter | (‘voc.’) irá retornar você ou voce |
Estas são metacaracteres básicos comuns a implementações de Regex na maioria das linguagens e também funcionais em PL/SQL, caso você queira se aprofundar poderá procurar literatura especializada sobre Regex.
Para quem já é acostumado a realizar buscas com o comando LIKE verá algumas semelhanças, porém o LIKE tem a tendência a não trazer todas as informações, por isso utilizamos constantemente o %, já Regex tem a tendência de trazer tudo, logo nós é que precisamos nos preocupar em restringir a nossa busca.
No próximo post vamos mostrar alguns exemplos práticos de como utilizar Regex no PL/SQL.
Leia mais:
Já comentei sobre o modo como o PL/SQL lida com os parâmetros enviados, ele simplesmente movimenta todo o conteúdo ao invés de apenas acessar a instancia daquele objeto (parâmetro) em memória, em consequência temos uma gradativa perda de performance quando passamos parâmetros maiores como um CLOB ou até mesmo uma PL Table.
Uma das soluções que apresentei foi definir a variável de forma global, assim tanto o objeto chamador como o objeto chamado teriam acesso a variável sem a necessidade que o conteúdo da mesmo transitasse como parâmetro, mas e se por questões técnicas não pudéssemos trabalhar desta forma?
TerÃamos então que utilizar a cláusula NOCOPY na definição dos parâmetros, isso iria instruir ao PL/SQL para não movimentar todo o conteúdo do parâmetro, o mesmo seria somente “pontuadoâ€, veja um exemplo:
Movimentando todo o conteúdo:
PROCEDURE pc_teste(varNome IN VARCHAR2) IS ... |
Apenas apontoando para o parâmetro:
PROCEDURE pc_teste(varNome IN OUT NOCOPY VARCHAR2) IS ... |
Porém é preciso tomar cuidado com alguns detalhes:
- É obrigatório o uso de parâmetros no formato IN OUT, somente IN ou somente OUT irá reportar erros de compilação;
- Parâmetros com NOCOPY não podem ser debugados o que pode dificultar no momento de detectar possÃveis bugs na sua aplicação.
Leia mais:
Ganhar dinheiro pela internet, os blogs – Parte I
Sem comentários · Post por Petter Rafael em Dicas, Diversos
Continuando a falar em formas de ganhar dinheiro pela internet, a forma mais “tradicional†e mais acessÃvel para a maioria das pessoas que querer empreender pela internet é a geração de conteúdo.
Via de regra é empregado o uso de algum sistema CMS para gerar tanto o front-end quanto a área administrativa, tirando a necessidade de investimento em desenvolvimento de software ou conhecimento técnico, para isso o ideal é a contratação de um servidor que já dê suporte para isso e o registro de um domÃnio.
Quanto as opções gratuitas não são aconselháveis, a não ser que não pretenda rentabilizar o negócio, os dois maiores problemas de uma hospedagem gratuita ou serviço gratuito são a limitação para implementar programas de rentabilização e a impossibilidade de registro de domÃnio, no caso da rentabilização fica limitado e mais complicado a conversão de trabalho em dinheiro via publicidade e no caso do registro do domÃnio além de você ter dificuldades em implementar SEO alguma outra entidade poderá registrar seu nome como um domÃnio impossibilitando seu trabalho futuro.
Para escolher o servidor o ideal é uma empresa idônea, que não somente libere seu espaço, mas que também instale (lembre-se, você não precisará de conhecimento técnico) e faça o setup e demais configurações para que o seu blog funcione corretamente.
Antes de iniciar um blog é preciso se atentar sobre os seguintes detalhes:
- Determine um tema (assunto) de preferência que você já conhece e goste;
- Procure os blogs de maior relevância sobre o mesmo tema e veja os erros e acertos (lembre-se, aprender com o erro alheio é menos dolorido e mais rápido);
- Estude a possibilidade de parcerias com empresas ou até mesmo outros blogs;
- Estude a possibilidade de expandir o blog para outras ramificações. Por exemplo, e-commerce, etc.
Com o servidor configurado, domÃnio registrado e tema escolhido procure conhecer mais pelo sistema de CMS que escolheu, atualmente o mais indicado é o WordPress mas existem muitos outros.
Quanto a parte técnica peça para a sua hospedagem disponibilizar plug-ins para o WordPress que atendam as seguintes tarefas:
- Implementação de SEO;
- Proteção de spam;
- Validador de falhas de segurança;
- Integração com redes sociais (Facebook, Google+, Twitter, etc);
- Gerenciador de tag´s;
- Gerenciador do Google Analytics;
- Gerenciador de programas de rentabilidade (veremos detalhes adiante);
Com os passos acima resolvidos o ideal é começar a agregar postagens, assim você irá se familiarizar com o sistema do CMS e verá como de fato será o seu novo trabalho, lembre-se, no inÃcio o trabalho será muito e o dinheiro pouco, mas no médio e longo prazo o trabalho continuará sendo muito mas o dinheiro tenderá a aumentar, tudo irá depender da sua dedicação e persistência.
Já com algumas postagens o ideal é que comece a explorar o mundo da rentabilização, de inÃcio o mais indicado são programas que paguem para exibir ou por clique em bannres veiculados em seu blog (daà a importância do aumento de tráfego).
No próximo post vamos explorar um pouco sobre o mundo da rentabilização para que o seu blog comece a gerar receita.
Leia mais:
Vamos supor que você precise fazer a seguinte comparação no PL/SQL:
IF varTexto || varText2 || varTexto3 = ‘teste de compara texto (string)’ THEN ..... END IF; |
É bem provável que dependendo do tamanho máximo alcançado pela concatenação das variáveis ocorra o seguinte erro:
ORA-04030: sem espaço de memória para processo durante tentativa de alocação de 16328 bytes (koh-kghu CALL ,pmuccst: adt/record) |
Embora o erro aponte para uma possÃvel falta de memória no banco de dados Oracle na verdade a concatenação dentro do IF que está causando o erro.
Uma solução mais imediatista (embora bem deselegante) seria dividir o IF com a concatenação em 3 IF´s encadeados.
Leia mais:
Tenho visto ultimamente muitas dúvidas acerca de como ganhar dinheiro trabalhando na internet e se todos estes planos e kits “infalÃveis†funcionam de fato, tenho boas e más notÃcias para todos, realmente é possÃvel ganhar um bom dinheiro operando e trabalhando exclusivamente pela internet, esta é a boa notÃcia, a má notÃcia é que não existe milagre e você terá que trabalhar muito, estudar e ter perseverança.
Começando pelos problemas, assim resolvemos tudo em primeiro lugar, estes kits para ganhar dinheiro fácil pela internet e as tais pirâmides não funcionam, aliás todo e qualquer anúncio que juntar as palavras “ganhar dinheiro fácil na internet†devem ser desconsiderados pois somente irão gerar dinheiro para quem encabeçou a ideia e começou vendendo o kit, que provavelmente irá ludibriar diversas pessoas e realmente ganhará um bom dinheiro.
No caso das pirâmides, somente os dois primeiros nÃveis irão ganhar algum dinheiro, pois chegará um nÃvel que não será mais possÃvel repassar a revenda para ninguém mais e o sistema da pirâmide irá ruir, resumindo, esquemas de pirâmide não tem sustentação financeira e estão fadados ao fracasso no médio prazo.
Assim como em outras áreas profissionais para obter bons resultados trabalhando em um home office somente pela internet irá depender da sua capacidade de inovar, aprender e criar (não necessariamente nesta ordem), quaisquer propostas fáceis e rápidas devem ser excluÃdas sumariamente pois somente te farão gastar recursos (fÃsicos e financeiros) e irão te desviar do foco.
Um dos métodos mais utilizados para empreender, ou pelo menos começar a empreender, utilizando a internet é a geração de conteúdo e utilizando programas de publicidade ou venda indireta, este é um método que ainda gera bons resultados, mas irá depender da sua capacidade de alavancar visitantes para o seu site/blog.
Este é um assunto especÃfico, iremos tratar em um próximo post, pois existe espaço e existe demanda para que pessoas possam empreender e de fato ganhar dinheiro utilizando a internet, só é preciso desmistificar histórias de ganhos enormes em pouco espaço de tempo.
Leia mais:
Vimos que a troca de contexto deve ser evitada a fim de obtermos uma melhor performance em nossas aplicações PL/SQL, porém existe uma exceção a esta regra, tudo devido a um recurso da Oracle chamado de scalar subquery caching.
Este recurso consiste na capacidade do Oracle de determinar quais registros serão sempre retornados quando executamos uma subquery dentro de uma query e desse modo armazena este conjunto de resultados em cache deixando sua reutilização muito mais rápida, assim mesmo utilizando a troca de contexto conseguimos obter uma performance superior.
Porém estes recurso deve ser utilizado com cuidado a fim de ser implementado de forma correta.
Vamos supor a seguinte query em uma tabela com mais de 1 milhão de registros:
SELECT LOWER(nome) nome, idade FROM suaTabela |
Este é um método tradicional (comum) para executar uma query, porém, utilizando em nosso benefÃcio a aplicação do scalar subquery caching temos:
SELECT (SELECT LOWER(nome) FROM dual) nome, idade FROM suaTabela |
Observem que a subquery select from dual não tem aplicação pratica alguma, somente irá impor ao Oracle a determinação do conjunto de resultados e dessa forma gerar o mecanismo de scalar subquery caching, onde iremos obter um ganho de performance em torno de 15% a 20%.
Leia mais:
O Oracle é um banco de dados que vem evoluindo a muitas décadas, na sua origem ele apenas comportava SQL, a linguagem PL/SQL foi desenvolvida posteriormente pela Oracle e foi sendo inserida e melhorada aos poucos, internamente a Oracle criou dois ambientes distintos de processamento, um para o SQL e outro para o PL/SQL, estes ambientes foram denominados como contexto.
Em um código PL/SQL, uma procedure, por exemplo, podemos utilizar tanto SQL como PL/SQL de forma conjunto, esta flexibilidade auxilia e facilita o desenvolvimento na plataforma Oracle, mas ela tem um custo e caso esta flexibilidade seja utilizada de forma leviana o custo será alto e será cobrado em forma de perda de performance.
Esta “troca†ficou conhecida como troca de contexto.
Assim fica clara que uma principais atitudes de um desenvolvedor ao querer melhorar a performance de sua aplicação é diminuir as trocas de contexto, aqui vai um detalhe interessante, todos os comandos do SQL já foram portados para o PL/SQL com exceção do comando REVERSE.
Veja um exemplo com troca de contexto e que tende a ser mais lenta:
SELECT sysdate INTO minhaVar FROM dual; |
Evitando a troca de contexto terÃamos o mesmo código acima sendo executado da seguinte forma:
minhaVar := sysdate; |
Notaram que além de evitar a troca de contexto, melhorar a performance temos um código mais legÃvel e produzido com muito menos linhas o que facilita sua manutenção no longo prazo.
Leia mais:
O problema de drop da bateria dos smartphones
1 comentário · Post por Petter Rafael em Android, Dicas, Diversos
Existe uma certa confusão quanto ao famoso problema de drop da bateria de diversos smartphones, sinceramente acredito que o problema não se resuma somente ao Android e que afeta quase que a totalidade dos modelos de smartphones vendidos atualmente, mas o problema é mais estético do que funcional.
Na realidade o problema reside em que alguns mostradores de carga da bateria dos smartphones apresentam além de uma imagem regressiva (circulo, barras, etc) o percentual de carga em números, daà fica fácil notar que em alguns casos a carga cai abruptamente, coisa de 56% para 49% e 30% para 19% são os mais clássicos.
Este problema é estético pois ele não afeta a autonomia total da carga da bateria, ela irá durar o tempo estimado total, a única coisa é o pequeno bug na informação do percentual durante o uso, mas porque isso ocorre?
Antigamente os celulares carregavam a bateria ao seu limite de carga, se por um lado tÃnhamos uma maior autonomia o desgaste prematura da bateria é acentuado, na época era pouco percebido pois os primeiros celulares duravam dias com uma única carga e mesmo com desgaste prematuro por ciclo como os ciclos eram longos a bateria durava o tempo de vida útil do aparelho, mas hoje, com cargas diárias uma bateria carregada desta forma teria a sua vida útil diminuÃda drasticamente, assim temos três cenários para o problema de carregamento da bateria:
- Carregar até o limite e diminuir a vida útil da bateria;
- Carregar normal até os 85% e depois ir diminuindo o fluxo de carga até pará-lo completamente, mesmo que o carregador esteja na tomada e a bateria nunca alcance os 100% reais, mas mesmo assim mostrar os 100% no visor do smartphone e ao retirar do carregador cair abruptamente para perto dos 95% ou 90% e equalizar a carga da bateria com o percentual exibido;
- Carregar normal até os 85% e depois ir diminuindo o fluxo de carga até pará-lo completamente, mesmo que o carregador esteja na tomada e a bateria nunca alcance os 100% reais, mas mesmo assim mostrar os 100% no visor do smartphone e ao retirar do carregador manter em 100% ou 995 e ir tentando equalizar aos poucos o exibido no mostrador do smatphone e o real de carga da bateria.
É óbvio que a melhor saÃda é a terceira opção, o problema é que ao tentar alcançar a carga real com a carga exibida estas distorções e quedas abruptas (chamadas de drop) da bateria ocorrem, no entanto elas em nada afetam a autonomia global do smartphone.
No caso do Android isso era pouco percebido pois até a versão 2.2.x o mostrador padrão exibia escalas de 5% e a partir da versão 2.3.x as escalas passaram a ser de 1%. Existem diversos métodos que se dizem eficazes em acabar com os drop de bateria, sinceramente, nenhum irá funcionar efetivamente, é uma diferença de cálculo matemático que ainda não foi por completo resolvida, o máximo que irá conseguir com estes métodos de calibração é uma ou duas cargas mais homogêneas e depois a tendência é que a situação da ocorrência de drop volte a acontecer.
Um detalhe importante, alguns métodos pedem para exaurir a carga da bateria (utilizar até o smartphone desligar), as atuais baterias de li-io não tem o efeito memória, porém são sensÃveis se forem descarregas até o final, então não façam estes métodos ou irão diminuir a vida útil da bateria.
Por enquanto a solução para os problemas de drop é serem menos cautelosos quanto a isso, simplesmente desliguem o mostrador numérico (aquele cara que fica mostrando o percentual de carga) e se concentrem no indicador de imagem, assim irão saber se o smartphone ainda tem ou não carga de bateria.



