De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
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).
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.
O Domingo de Carnaval ocorre 49 dias antes da Páscoa:
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.
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:
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.
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
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários