Notifier for Mac OS X

Notifier for Mac OS XOra, estando eu cansado da simplicidade extrema do “notificador” oferecido pelo GMail, fui ao site da Apple à caça de algo que satisfizesse melhor as minhas necessidades. Pois bem, deparo-me com o Notifier.

Munido com uma interface muito mais limpa e simplista do que o seu “concorrente oficial”, o Notifier permite a utilização de até 4 contas GMail em simultâneo, permitindo escolher o intervalo de tempo com que cada conta é verificada. É bastante agradável à vista e, tanto quanto reparei até o momento, bastante funcional. Um must-have!

Link do projecto

Serializable Vs Snapshot Isolation

Já aqui tinha falado sobre níveis de isolamento da base de dados, neste post irei explicar as principais diferenças entre o Serializable e o Snapshot Isolation, enunciando as principais vantagens de cada um.

Antes de mais, uma breve explicação do que consiste o Snapshot Isolation. Em base de dados, o nível de isolamento Snapshot, consiste em permitir as transacções operar sobre um imagem da base de dados (daí o nome snapshot), garantindo assim que todas as operações realizadas por uma transacção irão “ver” uma versão consistente da base de dados e apenas irá submeter as mudanças efectuadas se não foi feita nenhuma alteração concorrente desde o momento do snapshot. Caso duas transacções concorrentes modifiquem os mesmos dados, uma delas vai ter que falhar e fazer roll-back, começando do inicio.

Tanto o nível Serializable e o Snapshot Isolation oferecem consistência durante uma transacção, são as duas seguras não permitindo nenhum dos fenómenos indesejados falados no post anterior, a diferença entre os dois é que o Snapshot Isolation é um método de controlo de concorrência optimista enquanto o Serializable é pessimista, isto porque o snapshot parte do principio que não irá ocorrer conflitos entre transacções, e caso haja cancela a transacção e faz rollback, permitindo assim um elevado nível de concorrência, já o Serializable é pessimista porque parte do principio que vai ocorrer muitos conflitos causado pelo acesso aos dados, logo impede transacções concorrentes garantindo a consistência mas reduzindo a concorrência. Destes dois métodos o Snapshot Isolation é mais eficaz pois o Serializable adquire range-locks de maneira a garantir que mais nenhuma transacção concorrente vai aceder aos mesmos dados o que diminui muito o desempenho, pois como já foi dito, apesar de garantir consistência diminui drasticamente a concorrência. Já o Snapshot Isolation por sua vez não adquire qualquer lock de dados, em vez disso a transacção trabalho sobre uma imagem da base de dados tirado no inicio da transacção, permite portanto o máximo nível de concorrência, caso duas transacções modifiquem os mesmo dados ao mesmo tempo, uma delas vai ter que falhar e fazer roll-back.

Níveis de isolamento da Base de Dados

No âmbito das bases de dados, isolamento é um propriedade que define quando e como uma mudança feita por uma transacção se torna visível para outras transacções concorrentes. O Isolamento é também uma das propriedades do ACID.

A maioria dos SGBD permitem definir o nível de isolamento das transacções, permitindo controlar o grau de concorrência da base de dados. Cabe ao programador decidir qual o nível de isolamento que mais se adequa a aplicação em causa, a maior parte das aplicações não requerem um nível de isolamento muito restritivo, permitindo assim uma grande concorrência e evitando a possibilidade de deadlocks, pois quanto mais alto o nível de isolamento, menos concorrência permite e mais probabilidade do sistema entrar em deadlock de recursos.

Existem quatro níveis de isolamento definidos no standard ANSI/ ISO SQL.  São eles o Read Uncommitted, Read Committed, Repeatable Read e o Serializable, estes níveis são classificados de acordo com a possibilidade de ocorrência de determinados fenómenos indesejados, que podem ser “Dirty reads“, “non-repeatable reads” e “Phantons”, tanto os níveis como os fenómenos são de seguida devidamente explicados.

Dirty Read Non-Repeatable
Read
Phantom
Read Uncommitted Sim Sim Sim
Read Committed Não Sim Sim
Repeatable Read Não Não Sim
Serializable Não Não Não

Dirty Read (Read uncommitted)- Ocorre quando uma transacção (T1)  modifica determinada informação e de seguida uma outra transacção (T2) lê a mesma informação antes que T1 faça commit dessa informação ou rollback. Caso T1 faça rollback, T2 leu informação que nunca chegou a existir oficialmente na base de dados.

Non-Repeatable Read– Quando uma transacção T1 está aceder a informação, e uma outra transacção T2 apaga ou modifica essa informação T1 não vai conseguir voltar a reler a informação caso seja necessário.

Phantom (Repeatable reads)- É quando uma transacção T1 lê um grupo de registos que satisfazem uma dada condição, de seguida uma transacção T2 modifica ou insere um registo que satisfaz essa condição e faz commit, de seguida se T1 voltar a a ler os registos nas mesmas condições irá obter um resultado diferente.

Níveis de isolamento

Read Uncommitted – Este é o primeiro e menos proibitivo nível de isolamento. Neste nível podem ocorrer os três fenómenos pois não é adquirido qualquer tipo de lock de dados.

Read Commited – Este nível é o usado por defeito no Oracle e no SQL Server. Neste nível os Dirty Reads não ocorrem pois são usados locks partilhados que asseguram que nenhuma informação corrompida ou alterada por outra transacção e que ainda não tenha sido commited é lida, no entanto não assegura que os dados não vão ser alterados antes do fim da transacção, permite portanto a ocorrência de non-repeatable reads.

Repetable Read – Neste nível são adquiridos locks de leitura, prevenindo a ocorrência de dirty reads e de non-repetable reads mas permite a ocorrência de Phantoms, pois não são adquiridos “range-locks“.

Serializable – No nível serializable todas as transacções ocorrem num meio fechado, isto é, são todas executadas de modo sequencial. O SGBD pode executar transacções concorrentemente apenas se a ilusão de seruação for mantida, ou seja, se uma transacção não partilhar qualquer tipo de dados com a outra. Neste nível são usados range locks, nao permitindo portanto qualquer ocorrencia de pahntoms ou de outros fenomenos.

Porque hoje é sexta feira

Kill Bill em 1 minuto, muito bom 😀

Coisas que aprendi com o filme “No country for old men”

no_country_for_old_men_-_thinpack_r1-cdcovers_cc-front1- No dia em que encontrar um saco com muito dinheiro, primeiro vou verificar se tem um transmissor, que é para certificar me que o respectivo dono não vem atrás de mim.

2- Sempre que vir um homem com uma garrafa de ar comprimido vou desatar a correr.

3- Desconfiar de toda a gente que queira jogar ao jogo da moeda comigo (coin flip).

4- Condutas de ar condicionado de hotéis rascas são bons sítios para se encontrar tesouros escondidos.

5- Sempre que precisar de fugir de um assasino psicopata vou evitar hoteis em que sou o unico hospede.

Neverball

neverball

Hoje deixo-vos aqui uma sugestão para matarem o tempo naqueles momentos em que não há nada (de melhor) para se fazer, ou simplesmente para fazer uma pausa no trabalho.

O jogo que vos aconselho é o neverball, um jogo simplesmente viciante em que o objectivo é controlar uma pequena bola através de um mapa até ao ponto de saída do mapa, apanhando moedas pelo caminho havendo ainda um tempo limite para terminar o nível. Mas o que torna este jogo diferente e original é que não se controla directamente a bola, mas sim a próprio terreno de jogo, sendo a gravidade a responsável pelo movimento da bola, o que torna o jogo muito mais interessante.

De salientar ainda que o neverball se encontra disponivel para windows, linux e mac osx, é gratuito e é possivel descarregar dezenas de novos mapas, bem como desenhar os proprios mapas.

Porque amanha é sexta-feira treze!

Há gente com sorte… 🙂

P.s. Peço desculpa pela musica, o melhor é mesmo desligarem o som :p

Pior site do mundo!!!

Foi-me apresentado hoje na aula de Engenharia de Aplicações o pior site do mundo, obrigado professor José Creissac 🙂

Só tenho uma palavra: Impecável!

E porque há 2 dias atrás foi sexta-feira! =P

VLC: Sincronizar som e legendas.

vlcApós os posts de como corrigir as legendas no VLC e como ver filmes em ascii no VLC, venho aqui trazer umas dicas simples de como sincronizar as legendas e/ou o som. É bastante simples na verdade, o programa vem com atalhos para essas acções.

Para sincronizar as legendas, podem ser utilizados os atalhos de teclado H e J para, respectivamente, diminuir ou aumentar o atraso com que as legendas aparecem.

Para sincronizarem o som o atalho é em tudo semelhante, só que neste caso as teclas a utilizar são G e H para atrasar ou adiantar o som.

vlc subtitle syncvlc audio sync