Author Archives: HoloCoCos - Page 25

Piadas para os mais cultos

Está triste ou quer dar umas boas risadas? Concluiu o ensino fundamental? Se formou na época que se não estudasse tomava bomba no fim do ano e tinha de repetir a série? Já leu livros que não os da Coleção Vagalume? Sabe escrever exceção sem procurar no dicionário? Aliás, já usou o dicionário alguma vez?

Se você respondeu SIM para todas essas perguntas, sugiro que leia os comentários de alguns posts do meu blog:

Digo isso, mas espero que minha filha e sua geração sejam melhores a geração atual!

Acesso negado ao gerenciar serviço no Windows

Depois do cansativo dia de ontem, quando saí do confortável mundo da progração C# e fui para o tenebroso território das permissões, autorizações, auditoria e configurações de arquivos, usuários, serviços e grupos, finalmente cheguei em uma solução para meu problema (exceção System.InvalidOperationException, com a seguinte mensagem: Não é possível abrir o serviço RoboMovimentacaoServico no computador ‘‘nome_servidor’ sendo que a InnerException foi Access is denied).

Segui o conselho do Craig Box e baixei o SubInAcl pra dar permissões no windows service, mas o que mais me ajudou foi uma página da Microsoft ensinando a conceder aos usuários direitos para gerenciar os serviços no Windows 2000, mas que também é válido para o Windows 2003.

O primeiro passo foi dar permissão total para o usuário da aplicação (sendo nome_servidor o nome do servidor, nome_usuário o nome do usuário,  nome_grupo o nome do grupo e RoboMovimentacaoServico o nome do serviço):

[code]subinacl.exe /service \\nome_servidor\RoboMovimentacaoServico /GRANT=nome_usuário[/code]

Não funcionou. Então tirei essa permissão e dei permissão pro grupo do usuário:

[code]subinacl.exe /service \\nome_servidor\RoboMovimentacaoServico /REVOKE=nome_usuário
subinacl.exe /service \\nome_servidor\RoboMovimentacaoServico /GRANT=nome_grupo[/code]

Também não funcionou, então tirei essa autorização e dei autorização para os usuários autenticados:

[code]subinacl.exe /service \\nome_servidor\RoboMovimentacaoServico /REVOKE=nome_grupo
subinacl.exe /service \\nome_servidor\RoboMovimentacaoServico /GRANT=”authenticated users”[/code]

Funcionou! Consegui iniciar, parar e ver o status do serviço RoboMovimentacaoServico no servidor de COM através da página em ASP.NET no servidor web!

O próximo passo foi tirar a autorização full e deixar apenas as que eu necessitava. Na tentativa e erro descobri que as necessárias são:

S : Query Service Status (para consultar o status do serviço)
E : Enumerate Dependent Services (para parar o serviço)
T : Start Service (para iniciar o serviço)
O : Stop Service (para parar o serviço)

Então o comando ficou assim:

[code]subinacl.exe /service \\nome_servidor\RoboMovimentacaoServico /GRANT=”authenticated users”=SETO[/code]

Isso seria o mesmo que utilizar o comando abaixo:

[code]sd.exe sdset RoboMovimentacaoServico D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;LCSWRPWP;;;AU)(A;;CCLCSWRPWPDTLOCRRC;;;PU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)[/code]

Esse comando mudaria o default (A;;U;;;AU) para (A;;LCSWRPWP;;;AU).

Em desenvolvimento não tive de alterar nada, em TI tive todo esse trampo. Em homologação, certificação e produção muito provavelmente nada poderei fazer… não sei como é a configuração dos ambientes e muito menos terei acesso para executar o SC.exe, pois o SubInAcl.exe não está instalado nesses servidores.

Amanhã tentarei conceder essas autorizações sem precisar autorizar todos os usuários autenticados.

Ícone do Google

Na segunda fiz uma procura no Google e notei uma imagem colorida, diferente, na aba do Firefox e pensei: será que peguei vírus?

Depois de umas 3 abas abertas me toquei de que era o novo ícone do Google, mais colorido e chamativo que o antigo “g” azul.

No entanto, o mais interessante disso tudo é que a idéia para a versão 2009 do favicon (esse é o termo técnico) do Google é de um brasileiro estudante de ciência da computação na Unicamp!

Parabéns André Resende!

ASP.NET, Serviço do Windows e permissões

Fiz no trabalho uma aplicação em ASP.NET (com C# no server side) que consulta o status de um Windows Service que eu havia criado, podendo pará-lo ou iniciá-lo.

Como nós temos balanceamento de carga em produção, o serviço será instalado em 4 servidores mas em apenas um deles ele será iniciado para ficar em execução. A página que criei permite escolher em qual servidor iniciar/parar o serviço, bem como ver o status em tempo real e não deixar iniciar em mais de um servidor ao mesmo tempo.

Criei os métodos abaixo pra controlar o serviço (tirei o tratamento de erro para ficar mais claro):

[code lang=”C#”]using System.ServiceProcess;

public void IniciarServico(string nomeServico, string nomeServidor)
{
ServiceController servico = new ServiceController(nomeServico, nomeServidor);
if (servico.Status == ServiceControllerStatus.Stopped)
{
servico.Start();
servico.WaitForStatus(ServiceControllerStatus.Running);
}
}

public void PararServico(string nomeServico, string nomeServidor)
{
ServiceController servico = new ServiceController(nomeServico, nomeServidor);
if (servico.CanStop)
servico.Stop();
}

public string StatusServico(string nomeServico, string nomeServidor)
{
return new ServiceController(nomeServico, nomeServidor).Status.ToString();
}[/code]

Tudo funcionou muito bem nos testes unitários e no ambiente de desenvolvimento, mas no ambiente de TI (Testes Integrados), começou a retornar exceção System.InvalidOperationException, com a seguinte mensagem: Não é possível abrir o serviço RoboMovimentacaoServico no computador ‘‘xxxxxxxxxx’ sendo que a InnerException foi Access is denied.

Pesquisando na Internet achei um problema muito semelhante ao meu, onde um tal de Charlie dá uma resposta sugerindo modificar o security descriptor (DACL) para incluir permissões de SERVICE_START, SERVICE_STOP e, opcionalmente, GENERIC_READ.

Segundo ele existem duas formas de fazer isso:

  • através de linha de comando utilizando o SC do Windows
  • criando um programa em C++ e utilizando a API SetNamedSecurityInfo

Resolvi procurar por uma solução em C# e achei no stackenbloggen… mas além de não funcionar por falta de permissão, excluiu todos os acessos ao serviço! Não conseguia iniciar, parar, ver as propriedades, desinstalar, excluir… sempre dava erro “5 – Access Denied“. Na hora pensei: f*deu!

Felizmente outro cara já havia passado por isso e deu as dicas de como redefinir uma DACL vazia em um descritor de segurança de um serviço em um computador Windows Server 2003:

  • abrir um prompt de comando no modo interativo, para ficar logado com o usuário NT AUTHORITY\SYSTEM (conta de sistema). O comando pra fazer isso é: “at 18:05 cmd.exe /interactive” (sem as aspas, onde 18:05 é a hora daqui a 1 minuto)
  • utilizar o comando “sc sdset service_name D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCDCLCSWRPWPDTLCRSDRCWDWO;;;SO)(A;;CCLCSWRPWPDTLOCRRC;;;SY)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;WD)” (sem as aspas, onde service_name é o nome do serviço)

Obs.: pro prompt abrir, tive de deixar aberta a tela de tarefas agendadas (Start -> Programs -> Accessories -> System Tools -> Scheduled Tasks).

O comando SC é meio cavernoso, então vou partir para o SubInAcl, que descobri nessa página do Craig Box.

Ele teve um problema idêntico ao meu e chegou à conclusão de que no teste unitário o serviço é controlado interativamente e pelo site o processo do IIS utiliza uma conta de usuário, que não tem acesso ao serviço. Pelo SubInAcl (assim como pelo SC) é possível incluir essa autorização, sendo que pelo SubInAcl é muuuuito mais fácil. A única desvantagem do SubInAcl é que ele não vem instalado no Windows, ao contrário do SC…

Amanhã brinco um pouco com o SC, o SubInAcl e o código em C# pra configurar esse serviço…

Update: consegui conceder o acesso utilizando tanto o SC quanto o SubInAcl.

Gasolina alcalina

Conversa no carro, indo para Minas Gerais no Natal, após de sair de casa:

  • Filha: A gente tá indo muito pra casa da vovó.
  • Pai: É verdade filha, você foi lá em outubro ne?
  • Filha: é… Vai acabar a pilha do carro!

Memória e nascimento

  • Filha: foi aqui que os carros bateram!
  • Pai: é verdade, como você tem boa memória eim? Isso aconteceu há tanto tempo… fico orgulhoso de você ter uma memória tão boa!
  • Mãe: você se lembra de quando nasceu?
  • Pai: nem tanto né filha, na época você era um bebê…
  • Filha: a médica cortou sua barriga e eu nasci!
  • Mãe: isso mesmo… se você tivesse nascido de 9 meses não precisaria de cortar minha barriga
  • Filha: mas aí eu ia ficar lá dentro!
  • Mãe: não filha, tem duas formas de nascer: cortando a barriga ou pela vulva
  • [pausa]
  • Filha: mas aí eu ia cair no vaso!

links for 2009-01-08

TV de Plasma ou LCD?

Por um bom tempo as TVs de Plasma eram as vilãs: gastavam mais energia que as LCD, tinham qualidade inferior às LCD FullHD, duravam menos e havia o temido Burn In – a tela ficava permanentemente marcada com imagem parada por muito tempo.

No entanto agora está na moda se questionar se LCD é realmente melhor que Plasma. E porque logo agora?

Até ano passado as TVs de LCD Full HD (resolução 1080p ou 1920×1200) eram comparadas com as TVs de Plasma HD (resolução 720p ou 1280×720) e a qualidade da LCD sobressaía, sem os conhecidos inconvenientes do plasma. O tempo de resposta das LCDs havia caído de 12 para 3ms, o ângulo de visão havia aumentado, bem como o contraste e o tamanho das telas. Era comum ler comparações que diziam que a TV LCD tinha “mais pixels por polegada quadrada”. É claro que tinha, comparando LCD FullHD com Plasma HD vai ter mesmo.

No entanto agora chegaram as TVs de plasma Full HD, que têm melhor qualidade de imagem que as LCD FullHD de mesmo tamanho, sendo que os pontos negativos foram minimizados. Agora a comparação ficou justa, pois tanto a TV de plasma FullHD quanto a TV de LCD FullHD, independente do tamanho, terão o mesmo número de pixels.

Primeiramente é necessário entender como funciona essas duas tecnologias.

Cada pixel (ponto) na TV de plasma é um conjunto de 3 “caixinhas” contendo gás xeônio com neon, sendo que cada “caixinha” é pintada de uma cor: vermelho, verde e azul (RGB) e elas têm a parede revestida de fósforo. Para fazer as cores, essas “caixinhas” são eletrizadas, fazendo com que o gás se aqueça até virar plasma, emitindo luz ultravioleta que “acende” o fósforo das caixinhas, produzindo cor. Cada pixel funciona como se fosse uma micro lâmpada fluosforescente colorida.

Já no LCD existe uma fonte de luz fluorescente atrás da tela de LCD, onde o cristal líquido age como se cada pixel fosse um micro espelho, deixando a luz passar no nível certo e alterando a freqüência da luz branca pra que ela tenha a cor desejada.

Nos próximos posts vou explicar as diferenças, vantagens e desvantagens de cada tecnologia.

Mico nas Casas Bahia

No sábado eu e Marcela fomos na Super Casas Bahia e compramos o há tempo desejado juicer Walita, modelo RI1858. Não o de aço inox, mas o preto, de 650 watts. Era a última unidade e conseguimos levar por incríveis R$ 479,20.

Fui dormir tarde e quando acordei no domingo a Marcela me disse que o juicer é realmente excelente, mas que não tinha vindo a escova de limpeza e fica bem difícil de limpar sem a escova.

Na segunda-feira liguei no SAC das Casas Bahia, me transferiram para o responsável pelas Casas Bahia no Anhembi, que me instruiu a ir lá entre 10:00 e 22:00, até o dia 11 de Janeiro, falar com o gerente da área de eletrodomésticos pra trocar o produto, pois não tinha como apenas pegar uma escova de outro produto… Fui lá e… não tinha nada além de de um estacionamento fechado e operários desmontando armações de ferro e carregando caminhões. Sábado tinha sido o último dia da Super Casas Bahia!

Na terça liguei novamente no SAC e dessa vez a atendente pediu para eu ir no mesmo dia em qualquer Casas Bahia, pois era o último dia pra trocar o produto. Pedi o número do protocolo, ela perguntou em qual Casas Bahia que eu iria, disse que mandaria uma notificação ou algo do gênero para a loja informando que eu iria lá pegar a escova de limpeza do juicer.

Chegando em casa peguei a nota fiscal, a garantia extendida, o juicer e fomos para as Casas Bahia do Shopping D.

Falei com o assistente técnico Marcelo, que disse que era só eu ir na sessão de eletrodomésticos e pedir pra trocar.

Chegando lá a atendente pediu a nota e foi falar com o gerente dela e voltou dizendo que o gerente disse que não poderia trocar, que eu teria de voltar no dia seguinte e falar com o Marcelo, que havia acabado de ir embora. Informei que já havia falado com o Marcelo e que ele havia autorizado e fui falar com o Diego, gerente dela.

Ele me informou que não poderia trocar pois o produto era peça de mostruário, que eu estava ciente disso e que o produto foi vendido “no estado”. Eu contestei, disse que foi mesmo o último item mas não era de mostruário, comprei fechado na caixa e tudo mais. Ele me mostrou isso tudo na nota e foi então que entendi como consegui o desconto de R$ 269,80 no valor da centrífuga…

Ainda bem que nessa hora a Marcela estava em uma loja de calçados… pois eu com toda minha paciência de mineiro estava educadamente argumentando que havia sido enganado, que comprei uma peça de mostruário sem saber que era de mostruário e que paguei quase 25% do valor do produto em uma garantia estendida que não servia pra nada pois o produto foi vendido “no estado”. A Marcela teria rodado a baiana e falado horrores das Casas Bahia, do genrente, do vendedor, da atendente, do assistente técnico e de quem mais estivesse pela loja.

Não sei se foi o lance da garantia estendida ou de ter dito que havia sigo enganado, mas o Diego disse que eu não poderia trocar, mas poderia pegar a escova de limpeza. Poxa, era exatamente isso que eu queria, a escova de limpeza! Me mandou então ir no setor de pacote e pedir uma.

Fui lá e pedi, o atendente foi no estoque e voltou com uma caixa fechada do juicer. Abrimos e cadê a escova? Não tinha! Peguei o manual, folhei e realmente não vem com escova de limpeza!!!! Na hora pensei: ainda bem que a Marcela não até aqui! Ainda bem que ela foi comprar um sapato pra nossa filha!

Pedi milhões de desculpas, agredeci e fui encontrar a Marcela… com o juicer sem a maldita escova de limpeza!

Algumas conclusões:

  • que atendimento terrível tem o SAC das Casas Bahia! De cada 10 tentativas de ligar lá, 6 davam ocupado, 3 caiam depois de 3 minutos ouvindo música e só 1 era atendida
  • que mancada do SAC de me mandar para a Super Casas Bahia após o termino da mesma!
  • durante o tempo aguardando ser atendido, ouvi que o Teleatendimento Casas Bahia recebe uma média de 15.000 ligações por dia!! Sugerem até entrar em contato por e-mail, no sac@casasbahia.com.br. Entrei em contato pelo e-mail acima na própria segunda feira e até hoje não tive resposta, ou seja, não funciona

Vou tentar cancelar a garantia estendida. No contrato diz que eu posso cancelá-la, mas se para resolver um problema inexistente eu tive de falar diversas pessoas e ninguém sabia realmente o que fazer, creio que será bem complicado. Prefiro cancelar agora a ter dor de cabeça daqui a um ano, se precisar de utilizá-la.

Dados da indústria automobilística

Achei na Wikipedia uma listagem de todas as fabricas automobilísticas do mundo, listadas por grupos e ordenadas por vendas.

Achei diversos fatos curiosos:

  • tirando a Lamborghini, que é da Volks, todas as outras indústricas italianas são da Fiat
  • a única indústria brasileira é a Troller, que hoje é da Ford
  • Porche é a 38a em volume de vendas e é uma grande acionista da Volkswagen, 3a
  • existem apenas 10 países com grupos automobilísticos (Japão, Estados Unidos, Alemanha, França, Itália, Coreia do Sul, Russia, China, Índia e Suécia)
  • além desses 10 países, outros 7 também têm marcas nacionais que hoje estão nas mãos das multinacionais acima (Austrália – Holden, República Tcheca – Škoda, Brasil – Troller, Romênia – Dacia, Espanha – Hispano, Holanda – DAF)

Obs.: incluindo apenas as grandes marcas, pois existem muito mais, como as brasileiras Agrale, Bugre, Cobracar, Lobini, entre outras, com volume muito baixo de vendas. Essa lista tem todas (em holandês).

Pérolas de criança

Depois que a Lavínia voltou do fim de semana na casa dos avôs:

  • Filha: Mãe, o vovô disse que os pequenos obedecem os grandes…
  • Mãe: E onde você está nessa história?
  • Filha: Eu sou obedaçante!

E na casa da avó, em Minas Gerais:

  • Filha: Nossa mãe, tem formiga no mel, vou pedir pra vovó não comprar mais mel com formiga!

links for 2009-01-03

Acessórios para o Wii

Agora que eu tenho um Nintendo Wii, com a guitarra do Guitar Hero e a balança do Wii Fit está na hora de comprar os acessórios.

Comprá-los aqui no Brasil em loja ou em site é bem puxado, pois os preços são bem caros. As melhores opções são:

  • Deal Extreme (381 produtos) – site de Hong Kong com produtos chineses e frete grátis para o mundo todo. O preço final é imbatível! O pagamento tem de ser feito por PayPal.
  • Mercado Livre (274 produtos) – site brasileiro, onde existe um comércio informal de produtos, com preços muito competitivos, quase iguais aos do Deal Extreme. Muita coisa vem do Paraguay ou da China.
  • eBay (14.336 produtos) – semelhante ao Mercado Livre, só que nos Estados Unidos (e outros países), com preços melhores e uma inimaginavel quantidade de produtos, só que o frete geralmente é caro, isso quando o vendedor manda pro Brasil! A melhor forma de saber quanto fica o frete para o Brasil é no “Sort By” escolherr “Price + Shipping: lowst first” e selecionar “Brazil – BRA” na caixa que se abre. O pagamento também é por PayPal.

Já tenho alguns produtos em mente:

Na terça feira já comprei 2 conjuntos de 4 pilhas AA recarregáveis da GP, pois cada controle usa 2 pilhas e a balança usa 4 pilhas.

2008 em números

O Velho é o site que eu mais leio e, copiando descaradamente o velhote, vou disponibilizar as mesmas métricas que ele, para o período de 1/1/2008 a 30/12/2008:

  • 1.393.984 visitas (praticamente 1,4 milhões de visitantes)
  • 1.241.727 visitantes únicos, sendo que 88,38% destes nunca haviam estado aqui antes
  • 2.404.681 de páginas vistas
  • Browsers:
    • IE: 84,46% (91,13% em 2007)
    • Firefox: 14,56% (8,29% em 2007)
    • Chrome: 0,31% (0% em 2007)
    • Opera: 0,29% (0,24% em 2007)
  • Sistema Operacional:
    • Windows: 98,71% (98,88% em 2007)
    • Linux: 1,04% (0,92% em 2007)
    • Mac: 0,21% (0,26% em 2007)
  • Referências (como chegam no site)
    • Direta: 1,25%
    • Outros sites: 2,26%
    • Ferramentas de busca: 96,48%

Agradeço a todos que aqui vieram, que contribuiram, comentaram, descobriram como fazer algo ou compartilharam seu ponto de vista.

Que 2009 seja um ano com o dobro das visitas!

Como acessar internet wi-fi pelo Wii

Eu tenho um roteador wireless D-Link DI-524 revisão G1 e não estava conseguindo fazer o Nintendo Wii acessar a internet por ele. Ocorria o erro 52030, mas consegui resolver (solução no último parágrafo).

O roteador wi-fi estava com o firmware 3.00 (Tools -> Firmware), segurança WPA2-PSK(AES) habilitada no canal 6 (Home -> Wireless), com DHCP habilitado nas configurações padrões (Home -> DHCP), sem segurança por MAC Address (Advanced -> Filter -> MAC Filters), com TX Rates “Auto” (Advanced -> Performance), MTU 1500 (Home -> Wan) e modo wireless misto (Advanced -> Performance).

O Wii detectava a rede sem fio normalmente, mas o teste de conexão dava pau. Quando ia em Wii Options -> Wii Settings -> Internet -> Connection Settings -> Connection 1 | Wireless -> Change Settings -> MTU Value ele estava em 0.

Eu estava determinado a fazer a Internet funcionar no Wii com segurança WPA2 (que é atualmente a mais avançada) e com DHCP (que é o mais prático – o roteador determina um IP dinamicamente para os computadores, sem necessidade de configurá-los). Então procurei muito no Google e achei diversas pessoas com esse problema de conexão, mas nenhuma solução atendia meus requisitos. As soluções que encontrei foram:

  • trocar o canal de 6 para 1 ou 11, baixar o transmit & receive, incluir o IP no DMZ, deixar de usar o DHCP e configurar manualmente um IP no Wii – aqui
  • atualizar o firmware do roteador e mudar o TX Rates de 54 para 1 – aqui
  • desabilitar o DHCP, configurar gateway e máscara de rede, deixando IP fixo no Wii – aqui
  • mudar o canal para 1 ou 11 no roteador e o MTU de 0 para 1500 no Wii, para ficar igual ao roteador – aqui
  • desabilitar o DHCP e configurar o IP manualmente no Wii – aqui
  • trocar o roteador (Linksys 802.11B) – aqui
  • fazer o upgrade do firmware, configurar SuperG sem Turbo e mudar para canal 11 (DLink 624) – aqui
  • incluir o MAC do Wii no Network Filter (DIR-655) – aqui
  • incluir um Guest Zone no roteador (DIR-655) – aqui
  • deitar o Wii

Depois de ler todas as sugestões acima, mudei o canal no roteador para “1” e nada. Mudei o TX para “1” e o notebook parou de acessar a Internet, voltei o TX para “Auto” e o note voltou a funcionar. Alterei o MTU Value no Wii para 1500 e nada. Voltei para 0 e nada. Atualizei o firmware do roteador para 3.11 e nada. Alterei o MTU Value no Wii de 0 para 1500 novamente e tchanãn, funcionou!

Update: no canal 1 o notebook ficou com uma Internet terrível, então voltei para o canal 6 e melhorou. No Wii a conexão ficou até mais rápida com o roteador no canal 6. No canal 11 também ficou boa.

Portanto, como fazer o Wii acessar a Internet através de um roteador wifi D-Link 524:

  1. alterar no roteador o canal para 1 (Home -> Wireless)
  2. atualizar o firmware para a última versão (Tools -> Firmware) – baixar aqui
  3. alterar no Wii o MTU Value para 1500 (Wii Options -> Wii Settings -> Internet -> Connection Settings -> Connection 1 | Wireless -> Change Settings -> MTU Value)

Algumas considerações:

  • para acessar a configuração do roteador, é só acessar http://192.168.0.1/ pelo computador. O login é “admin” e a senha padrão é “admin” ou vazia
  • se o SSID broadcast (Advanced -> Performance) estiver desabilitado no roteador, será necessário informar as configurações da rede manualmente no Wii ou ativar temporariamente para o Wii detectar a rede
  • se o filtro de MAC Address estiver ativo no roteador (só permitindo os MACs cadastrados), terá de incluir o MAC do Wii, que pode ser consultado em Wii Options -> Wii Settings -> Internet -> Console Settings
  • para saber se o sinal no Wii está bom, insale o gratuito NetStumbler. Quanto mais próximo de -100db, melhor o sinal. Aqui em casa fica em torno de -44db. Também dá pra saber qual canal fica melhor: 1, 6 ou 11, de acordo com o número de outros roteadores perto com o mesmo canal.