A revolução digital está acontecendo ou já aconteceu?

Posted by Rique Costa on August 22nd, 2009

Para refletir

iThink, therefore I am from iThink on Vimeo.

Solução para os erros do BDE relacionados a memória ($210D, $2500, $2501)

Posted by Adalberto on August 17th, 2009
Abaixo uso dois erros comuns em aplicações BDE, principalmente em SOs mais novos como Windows Vista e 2008 Server.
Erro: Conflito de compartilhamento de memória (Shared memory conflict – $210D)
Problema: O BDE está tentando usar um endereco de memoria que já está em uso pelo SO ou outra aplicação.
Solução:
1) Fechar todas aplicações BDE;
2) Executar o Administrador do BDE (Adm BDE) pelo “Painel de Controle” ou procurar o arquivo BDEADMIN.EXE (Adm BDE), este arquivo, normalmente, fica em algum diretório em “\Arquivos de Programas\Borland…”.
3) Ao carregar Adm BDE clique na aba “Configuration”;
4) Há um item na árvore, no lado esquerdo da tela do Adm BDE, chamado “Configuration”. Se não estiver expandido, expanda-o;
5) Depois, expanda “System”. Abaixo do “System”, selecione “INIT”.
6) Na janela ao lado direito, procure o parâmetro chamado “SHAREDMEMLOCATION”. Mude o valor para “5BDE”.
7) Depois, clique na palavra “Object” na barra de menu da janela principal e selecione “Apply”.
8) Responda “OK” para a confirmação de “Save all edits…” (Salvar todas alterações).
Erro: Memória insuficiente para esta operação (Insufficient memory for this operation – $2501)
Problema: Sua aplicação (ou outra aplicação BDE) consumiu a memória reservada para o BDE.
Solução:
1. Fechar todas aplicações BDE;
2. Executar o Administrador do BDE (Adm BDE) pelo “Painel de Controle” ou procurar o arquivo BDEADMIN.EXE (Adm BDE), este arquivo, normalmente, fica em algum diretório em “\Arquivos de Programas\Borland…”.
3. Execute o Adm BDE e clique na aba “Configuration”.
4. Há um item na árvore, no lado esquerdo da tela do Adm BDE, chamado “Configuration”. Se não estiver expandido, expanda-o;
5. Depois, expanda “System”. Abaixo do “System”, selecione “INIT”.
6. Na janela ao lado direito, procure o parametro chamado “SHAREDMEMSIZE”. Mude o valor para 4096.
7. Depois, clique na palavra “Object” na barra de menu da janela principal e selecione “Apply”.
8. Responda “OK” para a confirmação de “Save all edits…” (Salvar todas alterações).
Agora você pode tentar iniciar a aplicação novamente. Se ainda tiver problemas para rodar a aplicação e você estiver rodando ela em Windows NT, 2000 ou superior, abaixo tem algumas instruções sobre, mas desta vez deixe a propriedade “SHAREDMEMSIZE” com 4096, e altere a propriedade “SHAREDMEMLOCATION” para “0×5BDE”.
Então aplique as alterações antes e tente rodar novamente sua aplicação. Se o mesmo erro permanecer  tente alterar a propriedade “SHAREDMEMSIZE” para 8192. Se o erro persistir, você pode tentar informar “0×6BDE” para a propriedade “SHAREDMEMLOCATION”. Se ainda assim o erro persistir, você pode tentar outro valor para a propriedade “SHAREDMEMLOCATION”, conforme o intervalo exposto abaixo.
Outros valores podem ajudar a resolver este problema, são eles: 1000, 7000, and 7F00. Se nenhum desses valores resolverem, você pode tentar 2000, 3000, 4000, etc. ou qualquer valor dentro dos intervalos especificados para cada sistema operacional:
Windows 95/98: SHAREDMEMLOCATION = 9000 to FFFF
Windows NT/2000/2003/Vista/2008: SHAREDMEMLOCATION = 1000 to 7F00

Em experiência reportadas por outros usuários foi necessário remover ou desabilitar o driver da placa de som no Windows NT/2000/2003/Vista/2008 para resolver o problema, mas nomalmente somente “realocando” o pool de memória usado pelo BDE na propriedade SHAREDMEMLOCATION já é

o suficiente.

Fala ai pessoALL!

Abaixo uso dois erros comuns em aplicações BDE, principalmente em SOs mais novos como Windows Vista e 2008 Server, para exemplificar a parametrização de memória do BDE.

Read the rest of this entry »

Cuide bem de suas ferramentas de trabalho

Posted by Rique Costa on August 17th, 2009

Estava dando uma folheada no manual do meu MacBook, e na seção “Last, but no least” encontrei pequenas dicas sobre ergonomia, algo que muitas vezes os programadores não dão muito importância.

Ao usar o teclado e o trackpad, seus ombros devem estar relaxados. O seu braço e o antebraço devem formar um ângulo pouco maior que 90 graus, com o seu pulso e sua mão quase em uma linha reta.ergonomia_teclado_certo_errado

Toque levemente o teclado ao digitar ou usar o trackpad e mantenha suas mãos e dedos relaxados. Evite rolar seus polegares sob as palmas das mãos.
manual2

Altere sempre a posição das mãos para evitar fatiga. Alguns usuários de computadores podem desenvolver desconfortos em suas mãos, pulsos ou braços após o uso intensivo sem intervalos.

Se começar a desenvolver uma dor crônica ou desconforto nas suas mãos, pulsos e ombros, consulte um médico especialista qualificado.

Antes de entrar para o mundo da informática, trabalhei por uns 3 anos em uma empresa de pagers (ou beepers). Eram 6 horas por dia de atendimento telefônico digitando as mensagens a serem enviadas. Lá aprendi sobre LER (Lesão por esforço repetitivo) e vi muita gente fazendo tratamento fisioterapêutico para curar tendinite.

Eu digitava com os pulsos suspensos, sem apoiá-los em lugar nenhum. No final do dia estava com dores nos tendões, nervos e ligamentos. Depois que comecei a apoiar os braços para digitar, minha produtividade e velocidade aumentou. Com isso, aliado a alongamentos periódicos (por exemplo, de uma em uma hora, sentado mesmo), minhas dores nos braços se foram.

shouldersEu já vi muitos programadores escreverem código de uma forma tensa, sem relaxar os ombros e os braços, com os pulsos suspensos, sem apoio.

Os pulsos devem ficar apoiados na mesa ou (melhor ainda) em um apoio ergonômico de teclado próprio.

Hoje em dia, alguns programadores ficam até 12 horas por dia na frente do computador, escrevendo código sem parar. Se você não relaxar quando está digitando, estará muito propenso a uma lesão crônica.

Algumas empresas, como a Locaweb, fornecem um programa de ginástica laboral para seus funcionários. Isso ajuda e muito, mas não adianta terminar a sessão de ginástica e voltar a sentar na frente do computador sem postura e movimentar os pulsos quando deveria movimentar somente os dedos.

Uma observação rápida: bons programadores evitam o usar o mouse, substituindo suas funções por teclas de atalho. Além de aumentar sua produtividade, ajudam na sua saúde também.

Você precisa cuidar do seu corpo: coluna, ombros, braços, pulsos, mãos, dedos. Se eles não funcionarem bem, como você irá transformar as idéias que surgem em sua mente em código?

Post retiado do blog: http://prodis.pro.br/2009/05/09/cuide-de-suas-ferramentas-de-trabalho/

Afinal, o que é twitter?

Posted by Rique Costa on August 10th, 2009

Durante os últimos dias muitas pessoas tem me perguntado, o que é twitter? Como funciona? É fácil saber o que é o twitter quando você já está nele, difícil é explicar para a pessoa que nunca esteve.

Acredito que essa curiosidade está na cabeça de muitas pessoas, pois, muitos programas de televisão, apresentadores, artistas, celebridades e etc, estão no twitter e divulgam isso a todo momento.

Bom, muitos de vocês já oviram a definição de que o twitter é um microblogging. Mas o que isso quer dizer?
Bom, a principio a definição de blog era de um diário virtual. Mas isso se modificou, hoje os blogs não são só pra falar de coisas pessoais. Existem muitos blogs técnicos (como este), blogs de notícias, políticas, filmes, fofoca etc. Entretanto para acompanhar o blog você sempre precisava acessá-lo, para verificar atualizações e novos posts. Daí surgiu os feeds, para agilizar o processo de verificar atualizações no blog.

Mas e o twiiter, onde entra nisso? Bom, se o twitter é um micro blogging, então ele tem de ser menor que o blog. O twitter é um site/aplicativo (possui uma API) que também pode ser considerado uma rede social, colaborativa. No twitter os posts são limitados a 140 caracteres, isso faz com que seja mto dinâmico, já que você não tem espaço pra enrrolação, tem que ser direto e objetivo.

“Twitter parece pátio de hospício, todos falam ao mesmo tempo e eventualmente alguém responde” por @saintbr

No orkut, por exemplo, você tem amigos. No twitter você tem seguidores. Somente os seus seguidores recebem seus posts, que são chamados de Tweets. Você também recebe posts de pessoas que citaram o seu nome. Qualquer pessoa pode seguir outra pessoa no twitter. Uma pessoa que não é cadastrada no twitter também pode ver seus posts, caso você não faça o bloqueio.

O twitter é muito popular nos EUA, e sua popularidade vem crescendo cada vez mais entre os usuários brasileiros. Para se ter uma idéia da velocidade de crescimento na internet, veja o comparativo abaixo:

Anos que que se levou para atingir uma audência de 50 milhoes de pessoas:
Rádio: 38 anos;
Televisão: 13 anos;
Internet: 4 anos;
Ipod: 3 anos;
Facebook: 2 anos;

Não encontrei nenhum dado oficial sobre o número de usuários do twitter, mas o site é relativamente novo, foi criado em 2006 e colocado em prática em 2007. Aliás, uma leitura inspiradora é a história de como o twitter foi criado.

Veja a popularidade do twitter no link da figura abaixo, retirado do site último segundo, do IG:


Clique aqui para ver o infográfico

Com a popularidade em alta, o twitter virou a menina dos olhos para as grandes empresas. Empresas como Submarino, Dell e Camiseteria tem faturado com essa nova mania.

Bom, agora que você já sabe o que é o twitter você pode se cadastrar e nos seguir:
http://www.twitter.com/riquecosta
http://www.twitter.com/betoAFL

Veja a lista de brasileiros “famosos” no twitter

OFF – Descontraindo a segunda!

Posted by Daniel Buona on July 13th, 2009

Você sabe o que é um erro de stack overflow de looping eterno??? Confira a seguir na prática

O diretor de uma empresa disse à secretária:

– Vamos viajar para o exterior por uma semana, para um Seminário. Faça os preparativos da viagem!

A secretária faz uma chamada para o marido:
- Vou viajar para o exterior com o diretor por uma semana. Se cuida,querido.

O marido liga para a amante:
- Minha mulher vai viajar para o exterior por uma semana, então nós vamos poder passar a semana juntos, meu docinho!

A amante liga para um menino a quem dá aulas particulares:
- Tenho muito trabalho, na próxima semana não precisa vir às aulas.

O menino liga para o seu avô:
- Vô, na próxima semana não tenho aulas, a minha professora estará ocupada. Vamos passar a semana juntos?!

O avô (que é o diretor da empresa) diz à secretária:
- Vou passar a próxima semana com o meu neto, então não vou participar daquele Seminário. Pode cancelar a viagem.

A secretária liga para o marido:
- O diretor da empresa mudou de idéia e acabou cancelando a viagem.

O marido liga para a amante:
- Não poderemos passar a próxima semana juntos, a viagem da minha mulher foi cancelada.

A amante liga para o menino das aulas particulares:
- Mudança de planos: esta semana vamos ter aulas como normalmente.

O menino liga para o avô:
- Vô, a minha professora disse que esta semana tenho aulas. Desculpe-me, não vai dar para fazer-lhe companhia.

O avô diz novamente à sua secretária:
- Meu neto acabou de dizer que não vai poder ficar comigo essa semana. Continue com os preparativos da viagem ao seminário!


Entendeu o que é looping eterno e que provavelmente irá gerar um erro??? rs

Microsoft Tech Day 2009 – Piracicaba

Posted by Rique Costa on July 2nd, 2009

Sábado dia (27/06/2009) fomos até Piracicaba para participar do MS Tech Day.

O evento tinha uma grade muito interessante quando nos inscrevemos, mas ao longo do tempo a grade foi sendo alterada, sem haver qualquer notificação no site. Ficamos sabendo das alterações somente na apresentação das palestras.

Algumas palestras foram alteradas, outras excluídas e outras simplesmente jogadas ao vento. Logo no começo do evento alguém pegou o microfone e já avisou que poderiam ocorrer falhas (neste momento eles ja tinham falhado mas ninguém sabia ainda).

Logo no credenciamento recebia-se a instrução para que quem fosse participar das palestras de desenvolvimento deveria ficar na sala vermelha. Se fosse participar das palestras sobre infra deveria ir pra sala verde.

Algumas pessoas da sala verde reclamaram bastante, pois as palestras da parte da manhã só aconteceram na sala Vermelha, e na sala verde recebiam um streaming de audio/video. Reclamaram pois a qualidade do video não era das melhores.

Depois da apresentação do modelo do evento alguns palestrantes tiveram que “rebolar” para entreter a platéia por aproximadamente 20 minutos, pois o coffe break (?) ainda não estava pronto.

Após o coffe break tivemos uma palestra sobre a plataforma Azure, o palestrante dominava o assunto e a palestra foi boa. Logo em seguida nos foi apresentado alguns métodos de desenvolvimento com o VS2010 para Azure.

Após essa palestra teve um intervalo para o almoço, quando voltamos já estava rolando a palestra sobre o Project. Essa palestra também foi legal, porém muito rápida! Muitos palestrantes reclamaram de tempo, porém o evento acabou bem antes da programação que estava no site.

Alguns palestrantes tiveram que “cobrir buracos”, já que alguns palestrantes convidados simplesmente não foram ao evento. A palestra sobre Ajax e JQuery não existiu. Teve uma pequena demonstração do VS2010 e uma introdução sobre o Team Foundation. Além disso ainda teve uma palestra de um fabricante de painéis para o VS.

Depois do coffe break da tarde o volume de pessoas caiu drasticamente.

Resumindo: O evento foi realmente muito mal organizado. Das palestras que aconteceram tivemos muitas ruins e só algumas boas, isso do ponto de vista de desenvolvimento. Os brindes sorteados foram excelentes! Sorteram um SQL Server 2008, VS 2005, Team Foundation, Camisetas, bonés entre outros…

Alguns comentários sobre o Evento:

“Muito desorganizado em relação a horários e grades.
Conteúdo das palestras muito fraco e superficial.
Deu a impressão que alguns palestrantes estavam brincando.”
Daniel Buona

Organização fraca e conteúdo pobre na maioria das palestras
Luiz Henrique Rocha e Costa

Este foi o 1º evento MS Techday realizado pelos organizadores de Piracicaba, por esse motivo ocorreram diversos problemas neste âmbito, que prejudicaram muito as palestras de desenvolvimento.

Nas palestras de desenvolvimento faltaram 2 palestrantes, como eram 4 palestras, isso contribuiu muito para o evento deixar a desejar. Além disso a palestra sobre MS Project foi prejudicada pelo fato de não disponibilizarem acesso à internet.

O que foi valido, pelo que conversei com todos, foram as palestras de infra-estrutura (só o Rafa participou) e as palestras sobre Cloud Computing (computação nas nuvens) e Windows Azure (SO para gerenciamento do Cloud Computing), que participamos.

Com isso foi agregado conteúdo sobre novas tecnologias como Windows 7 e Server 2008, em infra, e desenvolvimento em Cloud Computing e a estrutura/funcionamento do Windows Azure.
Beto Lima

Veja um video sobre uma palestra de infra (O pessoal disse que foi bem interessante) :
<a href="http://video.msn.com/?mkt=en-us&#038;playlist=videoByUuids:uuids:0426b37b-50e7-4d76-8cd9-b91fff3078b2&#038;showPlaylist=true" onclick="javascript:pageTracker._trackPageview('/outbound/article/video.msn.com');" target="_new" title="Microsoft TechDay 2009">Video: Microsoft TechDay 2009</a>
.

Você também estava lá? Deixe um comentários e conte-nos o que achou.

Vamos deixar a web mais rápida!

Posted by Rique Costa on June 25th, 2009

O Google liberou uma série de artigos do tipo howto explicando como aumentar a velocidade do seu website.

Acredito que fizeram isso para tentar “ensinar” a grande quantidade de pessoas que se utilizam de suas APIS.

Talvez isso já esteja indomodando, já que deve gerar uma lentidão absurda nos serviços do google.

Pensando (acredito eu) o google resolveu montar uma página de boas práticas para a programação de sites.

São diversos artigos como:

  1. Dicas de CSS, usando várioas declarações no CSS;
  2. Como funciona a compactação gzip;
  3. HTTP Caching;
  4. Melhorando a performance do seu website com Page Speed;
  5. Dicas de performance no PHP;
  6. Otimizando gráficos web;
  7. e muitos outros...

Clique aqui e veja todos os artigos!

Além desses artigos eu ainda recomendo o as extensões para o firefox: FireBug e também o WebDeveloper.

Aproveite!

Acesse já o site e vamos deixar a web mais rápida!

Programação poliglota

Posted by Rique Costa on June 19th, 2009

Li ontem um artigo chamado Polyglote Programming do Neal Ford, autor do “The Productive Programmer” comentado pelo Erich aqui no TecBlog.

Esse artigo, publicado numa antologia de artigos de funcionários da ThoughtWorks, fala sobre a necessidade de saber programar em várias linguagens não só para saber usar a linguagem mais apropriada para cada sistema mas também, dentro de um único sistema, saber usar a linguagem mais apropriada para a tarefa a ser resolvida.

De uma certa forma, o desenvolvimento de sistemas web já é poliglota, pois precisamos saber SQL, javascript, XML, HTML e alguma linguagem (Ruby, PHP, Java, etc.) para unir tudo. Mas a idéia do Neal Ford é ir além e usar as plataformas poliglotas (JVM, C#) para desenvolver cada pedaço de código com a linguagem mais apropriada para o que aquele pedaço de código precisa resolver.

Um exemplo que ele cita é a leitura de arquivos, que pode ser bastante trabalhosa em Java:

package com.nealford.polyglot.linenumbers;

import java.io.*;
import static java.lang.System.*;

public class LineNumbers {
  public LineNumbers(String path) {
    File file = new File(path);
    LineNumberReader reader = null;
    try {
      reader = new LineNumberReader(new FileReader(file));
      while (reader.ready()) {
        out.println(reader.getLineNumber() + ":"
          + reader.readLine());
      }
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      try {
        reader.close();
      } catch (IOException ignored) {
      }
    }
  }

  public static void main(String[] args) {
    new LineNumbers(args[0]);
  }
}

Mas que em Groovy, que roda em JVM, ficaria:

def number=0
new File (args[0]).eachLine { line ->
  number++
  println "$number: $line"
}

Outro exemplo é um pedaço de código tirado do projeto Apache Commons para determinar em Java quando um string é vazio:

public static boolean isBlank(String str) {
  int strLen;
  if (str == null || (strLen = str.length()) == 0) {
    return true;
  }
  for (int i = 0; i < strLen; i++) {
    if ((Character.isWhitespace(str.charAt(i)) == false)) {
      return false;
    }
  }
  return true;
}

Usando Jruby teríamos:

class String
  def blank?
    empty? || strip.empty?
  end
end

E os testes para comprovar que está tudo certo:

require "test/unit"
require "blankness"

class BlankTest < Test::Unit::TestCase
  def test_blank
    assert "".blank?
    assert " ".blank?
    assert nil.to_s.blank?
    assert ! "x".blank?
  end
end

Outra dica que ele dá é usar uma linguagem funcional (Haskell, Scala, F#) para resolver a dificuldade que linguagens imperativas como Java e C# tem em lidar com threading:

class SafeArray{
  private final Object[] _arr;
  private final int _begin;
  private final int _len;
  public SafeArray(Object[] arr, int len){
    _arr = arr;
    _begin = begin;
    _len = len;
  }

  public Object at(int i){
    if(i < 0 || i >= _len){
      throw new ArrayIndexOutOfBoundsException(i);
    }
    return _arr[_begin + i];
  }
  public int getLength(){
    return _len;
  }
}

A mesma funcionalidade em Jaskell, a implementação de Haskell para JVM:

newSafeArray arr begin len = {
  length = len;
  at i = if i < begin || i >= len then
    throw $ ArrayIndexOutOfBoundsException.new[i]
  else
    arr[begin + i];
}

E o último exemplo do artigo compara construção de testes com JMock, para testar a interação entre uma classe Order com uma classe Warehouse:

package com.nealford.conf.jmock.warehouse;

import org.jmock.Mock;
import org.jmock.MockObjectTestCase;

public class OrderInteractionTester extends MockObjectTestCase {
  private static String TALISKER = "Talisker" ;

  public void testFillingRemovesInventoryIfInStock() {
    //setup - data
    Order order = new OrderImpl(TALISKER, 50);
    Mock warehouseMock = new Mock(Warehouse.class);

    //setup - expectations
    warehouseMock.expects(once()).method("hasInventory" )
      .with(eq(TALISKER),eq(50))
      .will(returnValue(true));
    warehouseMock.expects(once()).method("remove" )
      .with(eq(TALISKER), eq(50))
      .after("hasInventory" );

    //exercise
    order.fill((Warehouse) warehouseMock.proxy());

    //verify
    warehouseMock.verify();
    assertTrue(order.isFilled());
  }
}

E com JRuby:

require 'test/unit'
require 'rubygems'
require 'mocha'

require "java"
require "Warehouse.jar"
%w(OrderImpl Order Warehouse WarehouseImpl).each { |f|
  include_class "com.nealford.conf.jmock.warehouse.#{f}"
}

class OrderInteractionTest < Test::Unit::TestCase
  TALISKER = "Talisker"

  def test_filling_removes_inventory_if_in_stock
    order = OrderImpl.new(TALISKER, 50)
    warehouse = Warehouse.new
    warehouse.stubs(:hasInventory).with(TALISKER, 50).returns(true)
    warehouse.stubs(:remove).with(TALISKER, 50)
    order.fill(warehouse)
    assert order.is_filled
  end
end

Para terminar esse post, aqui vai um link para um vídeo do Neal Ford explicando o conceito de programação poliglota:

http://www.nofluffjuststuff.com/media.jsp?id=28

*Post retirado do blog Tecnologia da Internet da locaweb

Vem aí o Firefox 3.5

Posted by Rique Costa on June 10th, 2009

Rediscover the web

Fique ligado no lançamento…

Erro no SQL Server Management 2008 ao acessar base do SQL Server 2000

Posted by Rique Costa on June 9th, 2009

Já algum tempo que eu estava tendo esse problema, ao acessar uma base do SQL Server 2000 com o SQL Server Management 2008 dava este problema:

Falha ao recuperar dados para essa solicitação. (Microsoft.SqlServer.Management.Sdk.Sfc)
Server user ‘xyz’ is not a valid user in database ‘e-Pocurement_A’. (Microsoft SQL Server, Erro: 916)

Ocorreu uma exceção ao executar um lote ou uma instrução Transact-SQL. (Microsoft.SqlServer.ConnectionInfo)

The server principal “xz” is not able to access the database “kk” under the current security context. (.Net SqlClient Data Provider)

A Microsoft confirma o erro para outros produtos além do SQL Server Management 2008 listados abaixo

Outros softwares afetados:

  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Workgroup
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 Express with Advanced Services
  • Microsoft SQL Server 2008 Reporting Services

PS: Este problema também pode acontecer se não for um usuário do grupo Sysadmins.

Para solucionar o problema:

  1. Para contornar este problema, siga estes passos:
  2. Feche a mensagem de erro.
  3. Pressione F7 para abrir o painel de detalhes do Explorador do objeto .
  4. Clique os cabeçalhos da coluna com o botão direito do mouse e desmarque a coluna Agrupamento.
  5. Clique com o botão direito do mouse no nó de bases de dados e, em seguida, clique em Atualizar .

Agora tudo deverá voltar ao normal ;)


Copyright © 2007 AFL Sistemas. All rights reserved.