;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Fernando Calmon

Recolocar cidade e Estado na Placa Mercosul é proposta fraca e burocrática

Colaboração para o UOL, em São Paulo (SP)

08/03/2019 07h00

Não bastam os erros e recuos em relação a vários temas, como o das novas placas no padrão Mercosul. Depois de mais de 1 milhão de carros circulando, é inacreditável que Contran e Denatran acenem com outra reviravolta só para identificar município e Estado de origem.

Argumentação é muita fraca: teria sido pedido pelas polícias para facilitar a identificação. Na União Europeia circulam mais de 250 milhões de veículos e apenas o país é reconhecido por letras.

O sistema anterior de plaquetas -- ainda usado na maioria dos Estados --, com nome do município e sigla do Estado, só gerava gastos desnecessários e mais burocracia.

Nos últimos tempos, principalmente entre 2014 e 2018, os dois órgãos reguladores da segurança viária vêm tomando decisões equivocadas e até atrapalhadas por meio de resoluções que, de acordo com o Código de Trânsito Brasileiro (CTB), têm força de lei.

Fim da Multa para pedestres e ciclistas

No capítulo dos "arrependimentos", o novo presidente do Contran, Jerry Adriane Dias Rodrigues, acaba de revogar a resolução 706, de 25/10/2017, que regulamenta aplicação de multas para pedestres e ciclistas.

Está no CTB desde sua promulgação, em 23 de setembro de 1997. Mesmo bem difícil de cobrar os infratores, podia ser grande aliada por seu efeito educativo. As justificativas são inconsistentes e confusas.

Regras de CNH e multas em discussão

Está ainda em discussão a extensão da validade da CNH (Carteira Nacional de Habilitação) de cinco para dez anos. Antes se precisariam estudar as estatísticas, mas o bom senso indica como razoável a renovação aos 30 anos e 40 anos do motorista e, acima disso, voltar ao intervalo de cinco anos.

Há outra questão no campo de cogitação. Aumento do limite que implique suspensão da CNH, de 20 para 40 pontos. A possível nova referência parece razoável, no caso específico de motoristas profissionais, pois rodam muito acima da média. No caso de motoristas amadores poderia subir para 25 ou 30 pontos, por uma simples razão: o sistema atual mistura indevidamente infrações de trânsito e istrativas.

Na cidade de São Paulo, por exemplo, existe rodízio por finais de placas em dois períodos do dia (começo da manhã e fim da tarde), de segunda a sexta- feira, sem fins ambientais. O motorista recebe a mesma pontuação de uma infração comum. Combater engarrafamentos com multas é absurdo.

Existe ainda a intenção de dispensar o uso de simuladores de direção, nos Centros de Formação de Condutores. Há cerca de 7.000 deles instalados no Brasil. Em pelo menos 20 países são obrigatórios ou de uso facultativo. Completamente sem sentido desativar ou desestimular sua utilização.

Funcionam como aulas pré-práticas e cumprem papel didático importante. Ajudam, inclusive, no aspecto psicológico para parte dos alunos que têm receio ou medo de guiar um automóvel pela primeira vez.

Trata-se de raciocínio simplório considerá-los apenas como jogo de computador. Tais equipamentos simulam situações adversas e/ou perigosas em um ambiente seguro, especialmente sob condições de baixa visibilidade (à noite, com neblina ou intempéries).

Os alunos também desenvolvem primeiras noções de percepção de risco, inclusive de velocidades absoluta e relativa. Podem perceber quando devem acelerar para evitar tornar-se um estorvo no trânsito e ao mesmo tempo respeitar os limites, além de explorar aspectos de direção defensiva.

Siga o colunista

Fernando Calmon no Facebook
@fernandocalmon no Twitter
@fernandocalmonoficial no Instagram

Alta Roda

Banner Calmon - Alta Roda - Alta Roda
Imagem: Alta Roda
+ Porsche itiu que a próxima geração do Macan não será de fato 100% elétrica. Prevista para 2022, conviverá com a versão movida por motor a combustão. Trata-se de recuo sobre seu comunicado da semana ada, itido apenas depois de questionada. Não se pronunciou se fará apenas "retoques" no modelo atual. É natural clientes do Macan sentirem-se em dúvida.

+ Carlos Ghosn pagou fiança de US$ 8,9 milhões (R$ 34 milhões) à Justiça do Japão para aguardar em prisão domiciliar o julgamento das acusações sobre desvios istrativos na Nissan. Ex-executivo-chefe da aliança Renault-Nissan-Mitsubishi, ele deverá permanecer no país até o desfecho da ação. Ghosn reafirma sua inocência e espera poder provar aos juízes.

+ Station Audi Avant RS 4 é para quem quer exclusividade, sem perder substância dentro da escola alemã de alto desempenho. Exemplo: 0,7 cm mais baixo que o sedã RS 4. Com 450 cv e nada menos de 61,2 kgfm, acelera de 0 a 100 km/h em apenas 4,1 s contra 3,9 s do cupê RS 5 (mais leve, mesmo motor). Preços de coçar a cabeça: R$ 546.990 e 556.990 (cupê RS5).

+ Volkswagen T-Cross 1,4 litro, turbo, no uso diário, surpreende não apenas por acelerações fortes, mas pelo comportamento geral tanto em piso ruim quanto em boas condições. ageiros no banco de trás têm bastante espaço para as pernas e saídas de ar-condicionado. Regulagem do encosto traseiro para aumentar volume do porta-malas incomoda um pouco, em viagens mais longas.

+ Controle de funções por gestos já não é novidade. Mas que tal utilizar IA (Inteligência Artificial) para abrir a porta do carro apenas com um sorriso? Pois a Mindtronic, de Taiwan, desenvolveu exatamente isso e mais: aprender com humor e preferências do motorista para criar seu perfil individual. Daí a a sugerir atividades, paradas ou restaurantes no seu caminho.