Archives for category: Tips

DropboxDropbox é muito bom. Podes criar várias pastas sincronizadas com N computadores, começando com 2GB grátis (podendo a chegar a 8GB com recomendações) compartilhar pastas, tem a pasta pública disponível ao mundo, onde para copiar o link basta um right click… realmente impressionante. Mas dependendo as configurações de proxy que estejas usando, não há como acessar os arquivos. Não havia.

Existem vários proxys abertos não muito divulgados, e a partir deles pode-se acessar o site da dropbox. Só que ao listar os arquivos, provavelmente por ser um JS que renderiza a lista, não funciona. Aparece em branco. Solução? Usar a versão mobile do dropbox.

Exemplo:

  1. Entre em http://www.theopenproxy.net/
  2. Na caixa de URL, digite a versão segura mobile do dropbox: https://dropbox.com/m
  3. Entre o seu usuário e senha

E pronto! Todos os arquivos disponíveis.

From Christian Heilmann. Nothing too fancy for those who are used to write jQ plugins, but nice to save it for reference…

var myApp = function(){
	var nome = 'Mauricio Wolff';
	var idade = 35;
 
	function insertPessoa(){
		// [...]
	}
 
	function updatePessoa(){
		// [...]
	}
 
	function setPessoa () {
		// [ usa insert ou update ]
	}
 
	function getPessoa () {
		// [...]
	}
 
	return{
		set: setPessoa,
		get: getPessoa
	}
}();
 
// Example usage:
myApp.get();

This is nice. An article on SixRevisions, short version here for my Archive.

If you write a couple meta tags, your html5 app will look like any other iPhone App, but will also work on Android, PalmPre, etc…

<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0"/>
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<link rel="apple-touch-icon" href="iphone_icon.png"/>
<link rel="apple-touch-startup-image" href="startup.png" />
<link rel="stylesheet" href="styles.css" type="text/css" media="screen, mobile" title="main" charset="utf-8">
  • apple-mobile-web-app-capable: This is another tip-off that we want to be an offline app.
  • apple-mobile-web-app-status-bar-style: This hides the status bar, and nav bar when the app is offline.
  • apple-touch-icon:This is the pointer to the image that want to be the icon.
  • apple-touch-startup-image: This is a url pointing to the startup image.

Application Cache

Application caching allows browsers to determine in advance all the files a web page will need for the web page to work.

One tricky part to this whole thing is that the manifest (the list of files that need to be cached offline) has to be passed with a filetype Header set to text/manifest. That is why you need access to a web server that can set HTTP headers.

    CACHE MANIFEST
 
    # Version 3 
 
    style.css
    index.html
    init.js
 
    # offline icons
    startup.png
    iphone_icon.png

Offline Data

Along with the ability to keep files that are needed offline, you can also store user data in an offline database. There are two major APIs for per user and/or per page data. The first is localStorage. localStorage, is an easy to use key-value store with a dead simple API.

    localStorage.dataToStore = 5;
    console.log(localStorage.dataToStore); // 5

Its also possible to use a webdatabase (SQLite):

    // Try and get a database object
    var db;
 
    try {
        if (window.openDatabase) {
            db = openDatabase("NoteTest", "1.0", "HTML5 Database API example", 200000);
            if (!db)
                alert("Failed to open the database on disk.  This is probably because the version was /
                bad or there is not enough space left in this domain's quota");
        } else
            alert("Couldn't open the database.  Please try with a WebKit nightly with this feature enabled");
    } catch(err) { }
 
    // Check and see if you need to initalize the DB
    db.transaction(function(tx) {
        tx.executeSql("SELECT COUNT(*) FROM WebkitStickyNotes", [], function(result) {
            loadNotes();
        }, function(tx, error) {
            tx.executeSql("CREATE TABLE WebKitStickyNotes (id REAL UNIQUE, note TEXT, timestamp /
            REAL, left TEXT, top TEXT, zindex REAL)", [], function(result) {
                loadNotes();
            });
        });
    });
 
    // Insert a test Note.
    var note = {
        id: "1",
        text:" This is a test note",
        timestamp: "112123000",
        left:10,
        top:10,
        zIndex:2
    };
    db.transaction(function (tx)
    {
        tx.executeSql("INSERT INTO WebKitStickyNotes (id, note, timestamp, left, top, zindex) VALUES /
        (?, ?, ?, ?, ?, ?)", [note.id, note.text, note.timestamp, note.left, note.top, note.zIndex]);
    }); 
 
    // Get all the notes out of the database.
    db.transaction(function(tx) {
        tx.executeSql("SELECT id, note, timestamp, left, top, zindex /
        FROM WebKitStickyNotes", [], function(tx, result) {
            for (var i = 0; i < result.rows.length; ++i) {                 var row = result.rows.item(i);                 var note = new Note();                 note.id = row['id'];                 note.text = row['note'];                 note.timestamp = row['timestamp'];                 note.left = row['left'];                 note.top = row['top'];                 note.zIndex = row['zindex'];                 if (row['id'] > highestId)
                    highestId = row['id'];
                if (row['zindex'] > highestZ)
                    highestZ = row['zindex'];
            }
 
            if (!result.rows.length)
                newNote();
        }, function(tx, error) {
            alert('Failed to retrieve notes from database - ' + error.message);
            return;
        });
    });

Um jeito fácil, rápido, gratuito de mandar arquivos pra lá e pra cá.

Acho o uploader do mediafire.com beeeem legal, mas a decisão de fazer  pastas e como apresentar o conteúdo para o visitante, complicada. Principalmente se o sujeito não fala inglês.

Este sendshack.com no entanto, é bem prático, e os anúncios não ficam pulando no teu colo.

Pedido: Fazer com que todos os links de uma determinada página sejam externos.

  • Abordagem 1: Alterar a classe em php, genérica, para ver se o link é externo e acrescentar o target; por regex.
  • Abordagem 2: Colocar no init.js
$("a[href^='http://']").attr("target","_blank");

E todo site fica assim; links externos, para fora!
Aff… que doce.

É, o google está mudando… Eles estão testando um redesign, que por enquanto está sendo mantido em segredo.

Até agora…  :)

  1. Vá ao google.com
  2. Se estiver em Português, clique no Go to Google.com
  3. cole o código abaixo na location bar (barra de endereços) substituindo o http://google.com -
    javascript:void(document.cookie=”PREF=ID=20b6e4c2f44943bb:U=4bf292d46faad806:TM=1249677602:LM=1257919388:S=odm0Ys-53ZueXfZG;path=/; domain=.google.com”);
  4. tecle ENTER
  5. feche o browser
  6. abra o browser
  7. Vá ao google.com
  8. Perceba os botões azuis e faça uma busca. tada!!!
Antes...

Antes...

Depois

Depois

Tenho uma inclinação natural ao ceticismo, ou seja, a não aceitar imediatamente o que leio ou vejo sem, no mínimo, uma boa reflexão sobre o assunto.

Uma das afirmações que li algum tempo atrás do Leo Babuta no mnmlist.com foi a dica de fazer menos, e procurar programas com menos distrações. É interessante perceber que programas que deveriam aumentar a produtividade por permitir multitasking acabam só atrapalhado (pelo menos a mim) pois para realmente utilizá-los é preciso dedicar um bom tempo a eles ao invés de trabalhar, e acabam ficando parecidos com uma escrivaninha com pilhas de papéis e coisas a resolver, que o sujeito fica olhando sem saber por onde começar.

Pois depois de um tempo descobri que esta é uma chave para uma maior produtividade. Menos botões, menos janelas, menos tudo. Uma coisa de cada vez, wrap it up, get it done.

Isto acabou influenciando inclusive como navego na internet, pois ter 15 tabs abertos ao mesmo tempo com leituras diferentes, referências, emails, etc estavam me deixando demasiado cansado e retendo menos informação do que agora. Então preparei uma lista de programas que estão me ajudando na mudança, que espero sejam úteis para outras pessoas. Como ultimamente estou só no mac são mac-only, mas com certeza existem equivalentes para Windows.

JDarkRoom

jDarkroomO melhor editor de textos, totalmente geek-style, que já vi até hoje.

Junte o nano (ou pico, para os mais antigos) e os atalhos de teclado do mac e o resultado é ele. Estou escrevendo este texto nele agora, pois a falta de formatação permite que o conteúdo seja o foco. Depois de terminar o texto, salve no desktop, copie e cole no editor preferido (word, wordpress, pages, whatever) e formate da melhor forma possível. Como ele toma conta da tela, além de uma certa nostalgia dos tempos dos PC XT, nada mais distrai.

Caso precise fazer algo, tipo abrir o mail ou algo em janelas, basta usar os atalhos do Spaces para mudar de desktop e depois voltar para a imersão nas próprias palavras. ⌘ + H também funciona.

PlainView

Plain View Start PageComo eu consegui viver tantos anos lendo vários tabs ao mesmo tempo, às vezes em várias janelas, não sei.

O PlainView é um programinha super simples e despretensioso, que abre um browser (WebKit engine) em fullscreen, e os atalhos de teclado abrem HUDs (janelas modal translúcidas) que executam uma determinada função (como digitar um endereço ou ver as outras páginas abertas) e depois são fechados, eliminando as distrações.

Tão interessante que está fixo no Dock, descoberto ao acaso ao procurar uma extensão de Full Screen para o Firefox, que no Mac não funciona o F11 para o FFox. Se for preciso, também pode virar uma janela (com ⌘ + ⇪ + F) mas o grande barato é abrir um artigo em tela cheia e fechar ao terminar de ler.

Por enquanto é só, mas vou continuar na procura e se achar mais algum atualizo este post.

Realmente é rápido. Extremamente rápido. Vou descrever neste post algumas notas importantes da minha experiência no upgrade para Snow Leopard; encontrei algumas dificuldades e espero que estas notas poupem alguns cabelos brancos, assim como algumas que encontrei no caminho pouparam os meus. E se precisar reinstalar, que me sirva de guia.

Não faça um upgrade, instale do zero

Quando peguei o DVD, o impulso foi bootar por ele e fazer um upgrade no meu Leopard que estava atualizado. Resultado: Na hora de fazer o upgrade do XTools simplesmente não instalava. Macports não funcionava. Resultado, computador meia-boca. Solução: Carbon Copy Cloner (backup no HD externo de todo o disco do mac) e formatar o disco. Instalar o Snow Leopard do zero.

Resultado

XTools instalou de primeira, tudo parece mais rápido. No final da instalação ele perguntou se queria restaurar os dados de outro mac. Como estava com o HD externo plugado, ele reconheceu tudo. Instalei Contas de usuário, etc mas não Aplicativos. Vou instalar à medida que sentir necessidade. Já havia preparado uma pasta _install no HD externo com tudo que estava instalado no Leopard antigo, é só escolher e instalar.

Aplicativos 64bits

O que já estou vendo que vou sentir falta é o Visor (Terminal estilo Quake). Como não tem SIMBL para 64 bits, a alternativa é fazer o Terminal rodar em 32bits, selecionando Get Info ( + i) mas estou gostando da performance dele em 64. A outra alternativa é copiar o Terminal 32bits do Leopard e colocar ele junto como outra aplicação (VisorTerminal) Essa devo testar mais tarde…

First things first: layout de teclado, correções, Quicksilver, Growl & Macports

A primeira diferença que muito me agradou foi ver que colocaram um layout de teclado US International no core do SnowLeopard. Selecionando ele pode-se desabilitar o US e ficar bem mais feliz. :) Atualizar o Flash Player, pois com o DVD vem uma versão bugada. Em seguida, instalar Quicksilver e a skin que deveria ser default: BezelHud. Hmmm; tem uma versão nova do QS para SnowLeopard! E o bezelHud é novo tb… o antigo não funcionou. Outra coisa que não funcionou no upgrade foi a instalação do iStat menu pro… vamos ver agora… maza!!! instalou que foi um doce.

Em seguida, Growl. Tem um aviso no site avisando que deve-se esperar pelo 1.2 para compatibilidade, mas o que acontece é que os aplicativos 64bits não podem usar o Growl atual (32). Resumindo: no Growl for Mail por enquanto. Mas instalei assim mesmo e quando atualizarem lá, atualizo cá.

Macports

Capítulo à parte: Isto é realmente importante, pois o meu Apache, PHP, MySQL, tudo é compilado a partir do macports. Ele tem de ser resgatado do SVN e feito no terminal, então vamos ao passo-a-passo. O que for código vou colocar em verde.

Se ainda não instalou, coloque o DVD do Snow Leopard e instale XCode 3.2 (Optional Installs > Xcode.mpkg)

Instalar MacPorts para Snow Leopard

Qual não foi a minha surpresa ao descobrir que o Macports por SVN instala uma versão i386… Então melhor baixar o DMG do MacPorts e instalar. Tem muita gente usando o Apache e PHP do SL padrão, pois eles estão na última versão. Tentei, durou 1 dia. Instalar módulos não é tão prático, e quando tiver de fazer um upgrade não quero nem pensar.

Vou ter de tirar o mysql tb, pois baixei a versão em DMG do site deles. É legal ter um appletzinho no Painel de Controle, mas ele tem de ser carregado em 32 bits (o que faz com que ele tenha de relaunch o Painel) e nada que uma linha no .bash_profile não resolva…

alias mysqlstart='sudo /usr/local/mysql/bin/mysqld_safe &'
alias mysqlstop='/usr/local/mysql/bin/mysqladmin -u root -p shutdown'

E mais detalhes de mysql…

Alterar /etc/my.cnf e copiar todos os bancos para o meu home, para facilitar o backup

vi /etc/my.cnf
datadir = /Users/mw/mysql/data
:x
 
sudo tar -czf mysql.tar.gz /usr/local/mysql/data/mysql
sudo mv *.tar.gz /Users/mw/mysql/data
cd /Users/mw/mysql/data
sudo tar -xzf mysql.tar.gz
cd ..
sudo chown _mysql data

Agora estou recompilando o coreutils em 64bits, pq antes estava em 32. Para ver se algo está em 32 ou 64 bits basta um:

vim /opt/local/etc/macports.conf
 # machine architectures
 #universal_archs   x86_64 i386
 universal_archs    x86_64

Instalando PHP

Com o macports, tudo fica mais fácil…

sudo port install php5 +apache2 +php5-imap +php5-mysql +pear +suhosin +php5-tidy +universal

Sorry, acabou ficando incompleto, mas já é uma boa introdução para quem vai se aventurar…

Uma das coisas que mais acho incômoda é instalar um Windows XP do zero. Geralmente tenho de fazê-lo para testar os sites que faço no amigo IE, e sabe como é windows… de vez em quando precisa reformatar.

Então para a próxima vez já deixei o pacote de programas prontos, e vou colocar os passos neste post para não precisar lembrar mais tarde:

  1. Instalar o dito-cujo na VMWare, com os settings padrão
  2. Instalar VMWare Tools
  3. Baixar e instalar 7zip:
  4. Instalar Google Chrome
  5. Baixar e instalar Avira Personal
  6. Baixar o Pack de freewares
  7. Instalar UXTheme e ativar, instalar IE8, reboot
  8. Instalar tema (Luna Element Black), copiar logoui para o C: e registrar
  9. Replace notepad com notepad2 (tem um bat no folder)
  10. Escolher um wallpaper no deviantart.com