O mistério da data de modificação de arquivos

Faz um tempo achei um programa útil no site da Microsoft, chamado SyncToy, pra sincronizar arquivos entre dois diretórios. Legal, resolvi usar ele pra manter as cópias das músicas que eu baixei da internet, e também pra sincronizar outros arquivos.

Mas enquanto ele funcionava bem pra outros arquivos, pra músicas ele se perdia e me dizia que eu deveria sobrescrever certas músicas. Mas como? Eu não alterei elas,  são as mesmas que eu baixei e já deviam estar sincronizadas! Mas a data dos arquivos havia mudado realmente. Por quê? Eu desconfiava que fosse o Windows Media Player, mas não sabia o que estava acontecendo.

Nessas horas é que é bom saber programar (pra fazer um programinha útil pra mim mesmo, hehe). Baixei umas MP3 novas, escrevi um programinha pra monitorar as datas dos arquivos, deixei ele rodando, fiz a sincronia (nenhum aviso do programa) e comecei a ouvir as músicas. Aí então o programa começou a me avisar de alterações em músicas que eu tinha acabado de ouvir… E o Windows Media Player estava alterando mesmo as MP3! Fiz um diff e, sei lá, parece que ele reordena umas tags e grava alguma informação de nivelamento de volume; talvez seja isso (ou pode ser a classifação de 1 a 5 estrelas que ele põe). Bom, as alterações não estavam no meio do arquivo, então parece que não foi desta vez que a Microsoft resolveu adicionar mensagens subliminares nas minhas músicas. Pelo menos isso! :-D

Palavras pesquisadas na internet que fazem as pessoas chegarem aqui

Bom, como qualquer um administrando seu blog, eu olho nas estatísticas pra ver que palavras foram usadas em mecanismos de busca para que as pessoas entrassem no meu blog.

De vez em quando aparecem algumas coisas interessantes, como: “blog de gente se explicando” (o que passava na cabeça da pessoa que procurou isso???), muitas coisas sobre passagem de parâmetros (espero ter mais ajudado do que atrapalhado esse pessoal), “a evolução da linguagem” (se for linguagem humana, acho que não encontraram nada aqui, hehehe), “de onde vem o tri legal” (diz a lenda que é de algum tricampeonato, da seleção ou de um time gaúcho) e “o que são intervalos abertos e fechados” (ah, o cara deve ter entendido, apesar de eu não explicar exatamente isso, hehehe).

Bom, era só isso que eu queria contar hoje. :-p

Gauchês (e mineirês) – Parte 2

Continuando a lista de gauchismos, com algumas coisas menos conhecidas, e até inesperadas!! É isso que acontece quando alguém se muda de cidade pra ir à faculdade…

  • Ãããhã: Tem alguma coisa engraçada no “ãhã” gaúcho, não sei bem o que é. Pelo que o Renato disse, é o costume de falar mais alto o primeiro ã em vez do segundo (não é sempre que a gente faz isso, mas que acontece, acontece!)
  • Lomba: Esse aqui é mais portoalegrês do que gauchês. Quando eu cheguei em Porto Alegre, ainda bem que uma propaganda na TV fez o favor de explicar (ou melhor, de chamar atenção ao fato, mas sem explicar, hehehe). Estava um cara com uma camiseta do Inter, seguindo as instruções de um amigo pra chegar ao encontro (de colorados, supostamente). Ele devia passar a lomba pra chegar ao local. Dirigindo o carro, ele passa por uma subida, uma descida, e uma lombada. Achando que a lombada era o indicativo de chegar no endereço, ele entra no clube e se depara com um monte de gremistas! A lomba é o que eu chamava de subida (ou descida se a pessoa vem na outra direção, hehehe). Quem diria… Só quem é de Porto, sabe que lomba é lomba! É uma palavrinha prática, mas ainda não me acostumei a usá-la.
  • Massa: Esse não é o “massa” da exclamação “tri massa!”. É massa com o sentido de macarrão. Essa foi uma surpresa pra mim! Como é que em MG não chamam massa de massa? Tá certo que nas embalagens aparece escrito “macarrão”, mas eu pensava que fosse um “termo de embalagem“. Explicando: nas embalagens das coisas, o nome nem sempre é o que usamos no dia-a-dia, como a “pasta de dente”, chamada de “creme dental” nas embalagens, ou “bolacha”, que aparece como “biscoito” nas embalagens (e biscoito também aparece como biscoito)… Será que alguém fala mesmo “creme dental” em vez de “pasta de dente”?
  • Xis: Outro caso inesperado. Pelo jeito, em MG eles não saem pra comer um xis. Só sanduíche mesmo. Pode até ser um “X-búrguer”, um “X-salada” ou outra coisa. Mas não chamam essa classe de sanduíches de X. Se eu dissesse que DirectX é um serviço de tele-entrega de sanduíches, só os programadores gaúchos entenderiam a graça. Droga. Público-alvo muito pequeno pra piada.

Gauchês (e mineirês) – Parte 1

Chega a ser divertido quando alguém de uma região do Brasil se depara com costumes diferentes de falar de uma outra região. Mas é divertido também descobrir que palavras de uso corriqueiro são na verdade regionais e não serão entendidas fora do Rio Grande do Sul. Os achados do Renato (mineiro) no jeito gaúcho de falar me fizeram criar este item no blog… Aliás, o negócio rendeu tanta coisa que não vou escrever tudo num post só. Vou começar com os clássicos:

  • Capaz: Tu já deve ter ouvido um gaúcho falando “capaz!”. Capaz que não, né?! Naturalmente todo mundo usa a palavra do jeito normal (dizer que alguém é capaz de algo), mas é bem coisa de gaúcho usá-la como exclamação (sozinha na frase), no início da frase “Capaz que…”, na negativa “Capaz que não!” ou no enfático “Beeeem capaz!”. Como o “capaz” se trata de uma ironia, quando dizemos “capaz”, queremos dizer “claro que não, ora se tu vai ser capaz de fazer uma bobagem dessas”, e quando sai um “capaz que não”, queremos dizer “claro que sim, seria um absurdo se não…”. Foi complicado explicar pro meu pai (chileno) o que essa expressão queria dizer…
  • Bah: Não sei como alguém consegue se comunicar por mais de 10 minutos sem soltar um “bah”. Falta emoção, sabe? Se eu não tenho nada pra responder (o que acontece toda hora) as respostas normalmente são “bah” ou “pois é”.
  • Tchê: Outro clássico. Este é multi-uso. Serve pra exclamar, pra chamar alguém ou pra qualquer coisa mesmo.
  • De, te, me: Bom, aqui tenho que dizer que há vários estilos de gauchês. Em Porto Alegre, essas três palavrinhas são pronunciadas como “di, ti, mi”, assim como em boa parte do Brasil. Mas eu, que venho de Santa Maria pronuncio com E, mesmo. Assim, pra mim não tem diferença entre as palavras “de”, “dê” (verbo dar) e o nome da letra D. Se fosse gauchês da fronteira, aí sim! Todas as palavras terminariam com E mesmo! Uma vez eu estava assistindo uma aula (em Porto Alegre) e ouvi a palavra “diária”. Mas não fazia sentido no contexto! Aí eu fui pensar e percebi que na verdade se tratava da expressão “de área” (área de um polígono, por exemplo)… :-D Outra vez estávamos conversando depois do RU da UFRGS (me lembro que estávamos eu, o Cléber e o Chico, talvez mais alguém) e um reclamou que tínhamos pela frente toda aquela “subida discada”. Como assim? Uma fração de segundo depois, percebi que se tratava de “subida de escada”… Eu falo DE! ;-)
  • Tri: Outra clássica expressão gaúcha que não podia deixar de ser mencionada. O tri serve pra enfatizar tudo. O mais conhecido é o “tri legal”, mas ultimamente o tri é usado pra tudo (tri bom, tri massa, tri avacalhado, etc.), menos pro “tri legal” (no programa de rádio Cafezinho, da PopRock, esse fato é freqüentemente comentado…). Ah, existe também a expressão “muito tri”…

Continua…

Vetores começando em 0 ou em 1? Intervalos abertos ou fechados?

Antes eu falei de passagem de parâmetros. Eu achava que se seguisse nesse nível, eu acabaria comentando sobre o uso de ponto-e-vírgula em linguagens de programação. Mas surgiu um tópico um pouquinho (só um pouco) menos “mundano” do que o ponto-e-vírgula, hehe… A indexação de vetores.

Existem tantas linguagens onde os vetores (arrays, listas, o que for) começam com o índice 0 que eu até estranhei quando tive que mexer no Matlab, onde os índices das matrizes sempre começam em 1. O Matlab sempre salva a minha vida (sempre tem aquela função matemática pronta que levaria dias pra implementar em outra linguagem), mas não quer dizer que eu não estranhe certas características dele…

Em, C, C++, Java e Python já tinha me acostumado que o tamanho do vetor e o seu último elemento eram coisas diferentes. Que o segundo elemento é o de índice 1, e o primeiro é o de índice 0. Que, num vetor de tamanho ímpar dividindo o tamanho por 2 (e truncando a parte fracionária, como é o default em C, C++ e Java), eu obtenho o elemento que está exatamente no meio. Que, se eu quiser andar em círculos nos primeiros 5 elementos, eu posso incrementar o contador assim: i = (i + 1) % 5 (onde o operador % também é conhecido por mod, isto é, o resto da divisão). Que, se eu quisesse andar no vetor de 10 em 10 elementos, era só fazer 0*10, 1*10, 2*10, 3*10, etc., tudo bem ajeitadinho. O primeiro bloco vai de 0 a 9, o segundo de 10 a 19, e assim por diante. Se a linguagem oferecer outros recursos no acesso às listas, como o Python, melhor ainda: lista[0:10] inclui os primeiros 10 elementos, de 0 a 9; lista[10:20] inclui os elementos de 10 a 19; e lista[20:30] representa os elementos de 20 a 29. Reparem que não foi necessário fazer nenhum “+1” nem “-1” pra compensar elementos finais nem iniciais, pois os intervalos são abertos no final. E reparem que calculando 30-20, por exemplo, descobrimos que a sublista tem 10 elementos.

Agora no Matlab, como fica? Os vetores começam em 1. Se eu quero andar em círculos nos primeiros 5 elementos, a fórmula fica: i = mod(i, 5) + 1 (agora, em vez do %, usei mod, já que estou no Matlab). Percebam que o “+1”, neste caso, fica fora do da operação mod… Os subintervalos incluem tanto o índice menor quanto o índice maior. Portanto, lista(20:30) (a sintaxe usa parênteses, mas isso é um detalhe), é uma sublista de 11 itens (fim – inicio + 1). Se eu estou calculando usando intervalos de 10 em 10, o primeiro elemento do primeiro bloco é 0*10+1, o do segundo bloco é 1*10+1, e assim por diante. O exemplo que eu escrevi em Python acima, fica assim no Matlab: lista(1:10), lista(11,20), lista(21,30). Isso me lembra a nossa numeração de séculos onde o ano 2000 é o último ano do século 20, e não o primeiro do século seguinte! Pois então, ficou tudo cheio de +1 aqui, -1 ali. Mas pelo menos ninguém precisa aprender que o segundo elemento se indexa com [1].

Pra complicar mais um pouco, a linguagem de script do editor Vim, os índices começam em 0, mas os intervalos são inclusivos. Bela mistura: lista[0:9], lista[10:19], lista[20:29]. Parece interessante (apesar de ter que calcular manualmente um “-1” pra indicar o final do intervalo), mas não mexi muito com o VimScript (nem pretendo, a linguagem é muito esquisita, embora seja bem prática, às vezes), então não sei qual das três possibilidades eu gosto mais…

Qual é o melhor? Sei lá. O fato é que a gente se confunde, se confunde, mas se acostuma. Depois de um tempo, fica tudo “redondo” e parece óbvio. Até o momento de usar outra linguagem. Aí a gente mistura tudo e fica perdido. Deve servir pra desenferrujar o cérebro que já estava acostumado demais com esses truquezinhos, hehe. O que eu escolheria se eu fosse criar uma linguagem? Eu achei interessante o estilo Python, mas do mesmo jeito que muitas linguagens copiaram o C sem ao menos corrigir deficiências óbvias (ex.: necessidade de break no switch), é necessário pensar um pouco antes de copiar aquilo que todo mundo faz. Aliás, não é só a linguagens de programação que essa regra se aplica…

Vendia…

Já que hoje é sexta-feira 13, aí vai um diálogo assustadoramente idiota:

— E então, ele vem dia 17.

— Vendia 17 o quê?

— ……………(passa um tempo)………… Não é vendia é vem dia!

— ……………(passa um tempo)………… Ah, agora entendi! huahuahuahua

Pra compensar, a próxima postagem vai ser algo mais interessante, hehe.

Lixo

Ontem eu estava no ônibus, perto da porta do meio, ao lado de uma mulher. Quando a porta se abriu, ela aproveitou a brecha pra jogar uma bolinha de papel na rua. Bah! Tentei fazer uma cara de indignado (hehe), mas ela não viu. Aí eu disse: “Tem uma lixeira ali”, bem na frente dela tinha uma lixeira no ônibus. Ela respondeu um “Ah!”, como se dissesse “Como sou idiota” (pelo menos eu espero que esse tenha sido o pensamento dela, hehe). Um cara ao lado comentou, de certa forma irônica: “É mais fácil jogar no chão! :-( “. Pois é… Pequenos detalhes como esse ajudam a manter limpo e bonito o lugar onde vivemos. Quem é que gosta de morar num lugar cheio de sujeira por aí? O que me incomoda é que depois de uma certa idade, as pessoas parecem não mais querer mudar seus costumes, mesmo nesses casos.

Um dia ainda pretendo recolher do chão um toco de cigarro logo depois de jogado por um fumante mal-educado, e devolvê-lo dizendo: “O(A) senhor(a) esqueceu isto!”. Ainda me falta cara-de-pau, mas seria legal fazer isso. Parece que faz parte da cultura dessas pessoas que toco de cigarro possa ser jogado em qualquer lugar… :-(

Depois de ocorrida a cena fiquei pensando: “Isso gera uma postagem no blog!”. Tanto fiquei pensando em escrever sobre isso que deixei a parada do ônibus passar :-D , hehehehe.