Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Zura! - Busque. Compare. Compre.

Outras ofertas

Notebook

Monitor

Impressora

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Gerador de Exceções no Horário de Verão 2008 e Além

Colaboração: Joner Cyrre Worm

Data de Publicação: 21 de setembro de 2008

Graças à sempre subestimada capacidade criativa do legislador brasileiro, ainda não temos um Horário de Verão passível de ser descrito em um par de regras nas configurações Zoneinfo.

O Decreto 6.558/2008 fixou o início e o fim do Horário de Verão para os terceiros domingos de outubro e fevereiro, respectivamente. Mas, acabou por abrir uma exceção quando o fim do H.V. concidir com o Domingo de Carnaval, que, no entender de nossos iluminados congressistas, é um feriado mais sério que o Dia de Eleição, que ficou fora. Acho que muitos concordam com Suas Excelências. Ou é porque agora estão adotando [Software Livre nas Urnas Eletrônicas http://www.tse.gov.br/sadAdmAgencia/noticiaSearch.do?acao=get&id=966324], hehehe.

Assim, após pesquisar um pouco mais sobre a dica do Braulio Junior, foi possível desenvolver um script shell para gerar todas as exceções em um conjunto finito de anos para não rompermos o Sétimo Selo Apocalíptico ao macular a Sagrada Cadência dos Foliões e Bacantes carnavalescos.

Com o uso do script, será possível acrescentar as regras de exceções ao arquivo ZIC para ser gerado de forma semelhante ao descrito na [dica do Marcelo Conti http://www.dicas-l.com.br/dicas-l/20080222.php].

Isto até que as Suas Excelências resolvam obrar mais uma pérola legislativa.

O artigo fonte está em [http://www.worm.sh/] onde pode ser obtido um script funcional desta dica, o embasamento teórico e extras (detalhe: os artigos deste site estão em inglês).

O Cálculo do Domingo de Páscoa

Semelhante à implementação do Braulio Jr, porém optei por implementar com comandos let, o que torna mais explícita a direta implementação do cálculo conforme sua fonte no artigo Computus da Wikipedia.

  Y=$1    # parametro ANO com seculo
  let 'a = Y % 19'
  let 'b = Y / 100'
  let 'c = Y % 100'
  let 'd = b / 4'
  let 'e = b % 4'
  let 'f = (b+8) / 25'
  let 'g = (b - f + 1) / 3'
  let 'h = (19 * a + b - d - g + 15) % 30'
  let 'i = c / 4'
  let 'k = c % 4'
  let 'L = (32 + 2 * e + 2 * i - h - k) % 7'
  let 'm = (a + 11 * h + 22 * L) / 451'
  let 'month = (h + L - 7 * m + 114) / 31'
  let 'day = ((h + L - 7 * m + 114) % 31) + 1'

Ao final, temos o ano ($Y), mês ($month) e o dia ($day) do Domingo de Páscoa.

Cálculo do Domingo de Carnaval

O Domingo de Carnaval ocorre 49 dias antes da Páscoa:

  • 40 dias de Quaresma.
  • 6 domingos durante a quaresma, os Domingos Pascais
  • 3 dias da Quarta de Cinzas (1º dia de Quaresma) até o Domingo de Carnaval

Optei pelo uso do comando date para subtrair os dias da data do Domingo de Páscoa:

  dayc=`date --date="$Y-$month-$day 12:00:00 utc -49 days" +"%d"`
  monthc=`date --date="$Y-$month-$day 12:00:00 utc -49 days" +"%m"`

Assim, a variável $dayc contém o dia do mês referente ao Domingo de Carnaval, e a variável $monthc contém o mês (numérico de 2 algarismos).

Leia mais sobre o comando date.

Geração da Regra de Exceção

Para a exceção, interessa apenas quando o Domingo de Carnaval ocorrer no mês de fevereiro. Além disto, deve ser o terceiro domingo do mês. Resolvi inferir qual intervalo de dias do mês este pode ocorrer:

  • Limite inferior:
  • O 1º domingo ocorre em 1º de fevereiro
  • 3º domingo ocorre dia 15
  • Limite superior:
  • O 1º domingo ocorre em 7 de fevereiro
  • 3º domingo ocorre dia 21

Se o Domingo de Carnaval ocorrer dentro deste intervalo, então haverá coincidência, devendo ser prorrogado o H.V. em mais 7 dias, ou seja: o último domingo de fevereiro.

  if [ $monthc == "02" ]; then                  # Somente Carnaval em fevereiro
   if [ $dayc -gt 14 -a $dayc -lt 22 ]; then    # menor e maior dia para 3o. domingo
  
      # Domingo de Carnaval = fim do H.V
  
      # adia para o proximo domingo
      let 'dayd = dayc +7'
  
      # gera regra Zoneinfo na STDOUT
      echo "Rule  Brazil  $Y  only -    Feb  $dayc  0:00  0  -"
   fi
  fi

A regra segue o formato descrito na manpage do comando zic e pode ser assim resumida:

  Rule    = declara a regra
  Brazil  = nome que será referenciado posteriormente na regra geral: ``Zone``
  $Y      = conterá o ano
  only    = especifica que a exceção vale apenas para o ano $Y
  -       = hifen, vá ler a documentação!
  Feb     = mês de fevereiro
  $dayc   = o dia do mês para fim do H.V.
  0:00    = a mudança ocorrerá a zero hora de domingo,
          meia-noite de sábado para ser mais preciso
  0       = haverá um deslocamento de zero horas em relação ao
          fuso-horário padrão, ou seja: acaba o H.V.
  -       = retira a letra extra do código de timezone,
          que era ``S``, mudando de BRST para BRT

Acesse o artigo sobre Horário de Verão (Daylight Saving Time) no site [http://www.worm.sh/] onde você também encontrará regras prontas até o ano de 2037, quase o suficiente para se aposentarem os coitados que agora ingressam nesta luta inglória.

Joner Cyrre Worm é desenvolvedor Perl, colaborador do CPAN, tradutor voluntário de CAcert, LPI e Cucumis, e sysadmin em um órgão público.


Solução número 1 para substituição do MS Exchange disponibiliza seu software

Fonte: Notícias Linux

Amsterdam, Holland Open Convention - 18 de Setembro de 2008 - Zarafa, a solução número um para substituir o MS Exchange, anunciou que o seu popular Groupware será Open Source.

Com o objetivo de incentivar e patrocinar a criação de uma solução Open Source de Groupware para a substituição do MS Exchange em escala "Enterprise", a Zarafa contribuirá com o core e o código-fonte completo do servidor Zarafa - conhecido pela a flexibilidade e compatibilidade MAPI de 100% - para a comunidade. Isso possibilitará maiores opções de compatibilidade, localização, acessórios e integração com outros sistemas.

Leia mais no site: http://www.noticiaslinux.com.br/nl1221791721.html

Comente: http://www.noticiaslinux.com.br/nl1221791721.html#comentarios

Veja a relação completa dos artigos de Joner Cyrre Worm

Stumble Upon Digg This Del.icio.us Twitter Recomendar este artigo a um amigo Entre em contato Formato PDF
Newsfeed RSS
Formato para impressão
StumbleUpon Digg Del.icio.us Twitter Recomendar Contato PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.03/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (404 votos)

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Criando Aplicações para Redes Sociais


Encontre imóveis, apartamentos e casas a venda no Imobilien
Saiba mais

Grupo MBS