Usando o Illustrator CS5 no Mac:
- Crie o objeto
- Selecione a ferramenta girar e, segurando ALT, posicione o centro que se quer. Ao soltar, aparecerá a caixa para determinar a ângulação. Deixe selecionado copiar para replicar uma vez
- Após isso, clique em CMD + D e objeto se propagará ao redor do centro escolhido
Soluções rápidas para problemas encontrados durante o desenvolvimento (geralmente de programação web) para alguma coisa. Também chamado de "Lembre-me Depois Como Fazer Isso" :D
sexta-feira, 11 de novembro de 2011
quarta-feira, 7 de setembro de 2011
sfSymfonyPluginManager não desinstala o Plugin
Estava programando usando o symfony 1.2 e precisei desinstalar alguns plugins que não estavam mais sendo usados, então listei usando o comando
php symfony plugin:list
e tentei desinstalar usando o comando
php symfony plugin:uninstall nome-do-plugin
Entretanto estava recebendo a seguinte mensagem
>> sfSymfonyPluginManager Plugin "nome-do-plugin" is not installed
Pesquisando um pouco encontrei a seguinte solução para o meu problema, que seria executar o comando
php symfony plugin:uninstall symfony/nome-do-plugin
Ou tentar desinstalar manualmente. Para isso deleta a pasta localizada em plugin/nome-do-plugin e depois apagando o registro localizado em plugins/.registry/.channel.pear.symfony-project.com/nome-do-plugin.reg
É só.
php symfony plugin:list
e tentei desinstalar usando o comando
php symfony plugin:uninstall nome-do-plugin
Entretanto estava recebendo a seguinte mensagem
>> sfSymfonyPluginManager Plugin "nome-do-plugin" is not installed
Pesquisando um pouco encontrei a seguinte solução para o meu problema, que seria executar o comando
php symfony plugin:uninstall symfony/nome-do-plugin
Ou tentar desinstalar manualmente. Para isso deleta a pasta localizada em plugin/nome-do-plugin e depois apagando o registro localizado em plugins/.registry/.channel.pear.symfony-project.com/nome-do-plugin.reg
É só.
Descompactar ou Extrair arquivos .tgz, .gz, .tar e outros
Comando bem simples, mas que vez ou outra esqueço:
tar -vzxf nome_do_arquivo (dê Enter)
É só.
tar -vzxf nome_do_arquivo (dê Enter)
É só.
quinta-feira, 18 de agosto de 2011
Propriedade Float do CSS
Tive problemas em ajustar duas colunas recentemente porque meu conteúdo ficava sobreposto. Procurando na internet, achei duas formas de resolver o meu problema, mas optei pela primeira. O primeiro código segue abaixo (notar para a declaração da propriedade width que é importante):
O segundo seria utilizar uma <div> depois das colunas com a propriedade clear:both, mas ela não deu muito certo no meu caso, por isso fiquei com a primeira opção.
É só.
<!-- CSS -->
<style rel="stylesheet" type="text/css">
.tudo { display: table; }
.menu { float: left; width: 30%; }
.conteudo { margin-left: 35%; }
</style>
<!-- HTML -->
<div class="tudo">
<div class="menu">Menu</div>
<div class="conteudo">Conteúdo</div>
</div>Esse exemplo eu encontrei neste site. Meu código mesmo ficou um pouco diferente pois ainda tive que definir um width: 100% para meu <div> mais externo, pois o mesmo se encontrava em outro <div>.O segundo seria utilizar uma <div> depois das colunas com a propriedade clear:both, mas ela não deu muito certo no meu caso, por isso fiquei com a primeira opção.
É só.
TinyMCE com Symfony
É simples adicionar o TinyMCE, basta seguir os seguintes passos:
1. Instalar o plugin sfFormExtraPlugin do symfony:
php symfony plugin:install sfFormExtraPlugin
2. Baixe a versão do TinyMCE mais recente, descompacte e coloque no diretório web/js do seu projeto. Somente será preciso copiar o diretório /tiny_mce e suas subpastas que vem no .zip, o que vem antes disso não é necessário.
3. O próximo passo é alterar seu arquivo view.yml para que ele possa localizar o javascript do TinyMCE. O arquivo que estou alterando é /apps/backend/config/view.yml, da seguinte forma:
javascript: [tiny_mce/tiny_mce.js]
Entretanto, particularmente eu prefiro chamar o arquivo .js na página que vou utilizá-lo usando isso:
<?php use_javascript('tiny_mce/tiny_mce.js') ?>
4. Modifique o arquivo /apps/backend/config/settings.yml no seguinte trecho:
all:
.settings:
rich_text_js_dir: js/tiny_mce
5. E então modifique o formulário que você deseja e configure ele da forma que quiser. Um exemplo é o que segue:
$this->widgetSchema['asProdutos'] = new sfWidgetFormTextareaTinyMCE(array(
'width' => 500,
'height' => 250,
'config' => 'theme_advanced_disable: "anchor,image,cleanup,help"',
));
6. Limpe o cache para qualquer alteração que não seja no seu ambiente de desenvolvimento:
php symfony cc
É necessário avisar que fiz essas configurações usando o symfony 1.2 e o TinyMCE 3.4.4.
Inclusive nesse mesmo projeto existe um outro formulário usando o FCKEditor sem problemas de compatibilidade entre os dois :)
Fontes:
- http://oldforum.symfony-project.org/index.php/t/17614/
- http://symfony.davidvega.net/2009/04/tinymce-con-admin-generator-en-symfony-12/
- http://www.tinymce.com/wiki.php/Configuration
É só
1. Instalar o plugin sfFormExtraPlugin do symfony:
php symfony plugin:install sfFormExtraPlugin
2. Baixe a versão do TinyMCE mais recente, descompacte e coloque no diretório web/js do seu projeto. Somente será preciso copiar o diretório /tiny_mce e suas subpastas que vem no .zip, o que vem antes disso não é necessário.
3. O próximo passo é alterar seu arquivo view.yml para que ele possa localizar o javascript do TinyMCE. O arquivo que estou alterando é /apps/backend/config/view.yml, da seguinte forma:
javascript: [tiny_mce/tiny_mce.js]
Entretanto, particularmente eu prefiro chamar o arquivo .js na página que vou utilizá-lo usando isso:
<?php use_javascript('tiny_mce/tiny_mce.js') ?>
4. Modifique o arquivo /apps/backend/config/settings.yml no seguinte trecho:
all:
.settings:
rich_text_js_dir: js/tiny_mce
5. E então modifique o formulário que você deseja e configure ele da forma que quiser. Um exemplo é o que segue:
$this->widgetSchema['asProdutos'] = new sfWidgetFormTextareaTinyMCE(array(
'width' => 500,
'height' => 250,
'config' => 'theme_advanced_disable: "anchor,image,cleanup,help"',
));
6. Limpe o cache para qualquer alteração que não seja no seu ambiente de desenvolvimento:
php symfony cc
É necessário avisar que fiz essas configurações usando o symfony 1.2 e o TinyMCE 3.4.4.
Inclusive nesse mesmo projeto existe um outro formulário usando o FCKEditor sem problemas de compatibilidade entre os dois :)
Fontes:
- http://oldforum.symfony-project.org/index.php/t/17614/
- http://symfony.davidvega.net/2009/04/tinymce-con-admin-generator-en-symfony-12/
- http://www.tinymce.com/wiki.php/Configuration
É só
Imprimindo HTML do banco de dados usando Symfony
Quem usa o framework PHP symfony sabe que ele não imprime do bando de dados tags HTML que por ventura alguém tenha salvo. Assim, ele não imprime como tags, mas como texto mesmo, daí as tags aparecem e qualquer configuração que tenha posto nelas se perde.
Para imprimir o conteúdo interpretando o HTML que está salvo no banco, devemos usar um dos EscapingHelpers do symfony. Aqui está um modo (supondo que queira imprimir a coluna "conteudo" de um modelo chamado "blog"):
echo $blog->getConteudo(ESC_RAW);
Caso ainda queira restringir quais as tags HTML que podem ser exibidas é só usar a função PHP strip_tags. Aqui segue um exemplo, que no caso apenas permite a tag <h3> como saída:
echo strip_tags($blog->geConteudo(ESC_RAW),'<h3>');
Fontes:
- http://www.php.net/manual/en/function.strip-tags.php
- http://oldforum.symfony-project.org/index.php/t/25407/
É só.
Para imprimir o conteúdo interpretando o HTML que está salvo no banco, devemos usar um dos EscapingHelpers do symfony. Aqui está um modo (supondo que queira imprimir a coluna "conteudo" de um modelo chamado "blog"):
echo $blog->getConteudo(ESC_RAW);
Caso ainda queira restringir quais as tags HTML que podem ser exibidas é só usar a função PHP strip_tags. Aqui segue um exemplo, que no caso apenas permite a tag <h3> como saída:
echo strip_tags($blog->geConteudo(ESC_RAW),'<h3>');
Fontes:
- http://www.php.net/manual/en/function.strip-tags.php
- http://oldforum.symfony-project.org/index.php/t/25407/
É só.
Marcadores:
banco de dados,
esc_raw,
html,
php,
strip_tags,
symfony,
tag
quarta-feira, 10 de agosto de 2011
Ocultando index.php no symfony usando .htaccess
Configurando uma aplicação de terceiro num servidor, me deparei com o problema de que minha URL www.sitedeexemplo.com/pt_BR/ não funcionava, mas quando trocava para um www.sitedeexemplo.com/index.php/pt_BR/ , o sistema rodava normalmente.
O problema todo foi a falta do arquivo .htaccess no diretório /web/ da aplicação. Abaixo, segue o código existente no .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
# we skip all files with .something
RewriteCond %{REQUEST_URI} \..+$
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule .* - [L]
# we check if the .html version is here (caching)
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
# no, so we redirect to our front web controller
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
É necessário ressaltar que o arquivo /web/apps/frontend/config/settings.yml deve conter o seguinte trecho de código:
prod:
.settings:
no_script_name: on
E ainda que o módulo mod_rewrite do Apache deve estar ativo.
Com isso, sua URL ficará mais limpa :)
Num próximo post irei mostrar como fazer para renomear da seguinte forma: www.sitedeexemplo.com/backend.php para simplesmente www.sitedeexemplo.com/admin/
É só.
O problema todo foi a falta do arquivo .htaccess no diretório /web/ da aplicação. Abaixo, segue o código existente no .htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
# we skip all files with .something
RewriteCond %{REQUEST_URI} \..+$
RewriteCond %{REQUEST_URI} !\.html$
RewriteRule .* - [L]
# we check if the .html version is here (caching)
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f
# no, so we redirect to our front web controller
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
É necessário ressaltar que o arquivo /web/apps/frontend/config/settings.yml deve conter o seguinte trecho de código:
prod:
.settings:
no_script_name: on
E ainda que o módulo mod_rewrite do Apache deve estar ativo.
Com isso, sua URL ficará mais limpa :)
Num próximo post irei mostrar como fazer para renomear da seguinte forma: www.sitedeexemplo.com/backend.php para simplesmente www.sitedeexemplo.com/admin/
É só.
Mostrando Arquivos Ocultos no Mac OSX
Hoje precisei visualizar o arquivo .htaccess de um dos meus projetos em symfony. Contudo, pelo Finder não consegui localizar porque arquivos que começam com "." são detectados como arquivos de sistema e desta forma ocultos automaticamente dos usuários.
Não que seja ruim, na maioria das vezes é até melhor nem saber que eles estão lá, a menos que saiba exatamente o que está fazendo. Sem mais, segue o passo a passo:
1. Abra o terminal e cole o seguinte comando e mande executar (aperte ENTER):
defaults write com.apple.Finder AppleShowAllFiles YES
2. Reinicie o Finder segurando no botão "option", clicando com o mouse sobre o ícone do Finder e selecionando a opção "Reiniciar"
3. Pronto! Abra e visualize no Finder os arquivos outrora ocultos.
Caso se arrependa ou queira ocultar tudo novamente é só executar esse comando:
defaults write com.apple.Finder AppleShowAllFiles NO
Bem óbvio, não?
É só.
Não que seja ruim, na maioria das vezes é até melhor nem saber que eles estão lá, a menos que saiba exatamente o que está fazendo. Sem mais, segue o passo a passo:
1. Abra o terminal e cole o seguinte comando e mande executar (aperte ENTER):
defaults write com.apple.Finder AppleShowAllFiles YES
2. Reinicie o Finder segurando no botão "option", clicando com o mouse sobre o ícone do Finder e selecionando a opção "Reiniciar"
3. Pronto! Abra e visualize no Finder os arquivos outrora ocultos.
Caso se arrependa ou queira ocultar tudo novamente é só executar esse comando:
defaults write com.apple.Finder AppleShowAllFiles NO
Bem óbvio, não?
É só.
terça-feira, 9 de agosto de 2011
Comentários do Facebook no Wordpress
Deu uma pequena dor de cabeça conseguir ativar esses comentários no Wordpress somente porque os tutoriais espalhados na internet não comentam exatamente os passos finais. Então resolvi fazer o passo a passo aqui mesmo, até mesmo porque precisei configurar isso mais de uma vez.
1. Baixar o plugin da página oficial e colocar o conteúdo do zip na pasta <wordpress>/wp-content/plugins/ou baixar pelo próprio Wordpress e deixar a instalação a cargo do mesmo (bem mais fácil)
2. Depois de instalado, lembrar de ativá-lo na página do plugin do Wordpress
3. Adicione uma aplicação de desenvolvedor do Facebook na sua conta clicando no botão "+Create New App". Nomeie a nova aplicação, escolha uma localização e concorde com os termos do Facebook. Depois disso virá uma tela para comprovar se você é humano ou não (rá!) e pronto! Lembrando que para poder criar uma aplicação sua conta deve ser validada adicionando um número de cartão de crédito ou o número do celular (geralmente dá problema se você fez portabilidade).
4. Clique na aba chamada Website tab e copie o número de Application ID e Application Secret da página de configuração
5. No Wordpress, vá na parte de Configurações (Settings) e selecione a seção Facebook Comments. Cole os números nos campos Facebook application ID e application secret respectivamente.
6. Ajuste as opções da seguinte forma (e isso é o que ninguém comentava):
6.1. Selecione a opção (Uncheck this if you want to hide the Facebook comments without having to deactivate the plugin)
6.2. Selecione a opção Hide WordPress comments on posts/pages where Facebook commenting is enabled
6.3. Selecione a opção Enable native facebook comment count (does nothing unless "v2 only" is selected)
6.4. Selecione a opção (This should be checked unless you've manually included the SDK elsewhere)
Com essas configurações, os comentários deverão aparecer tanto nos posts quanto nas páginas da seguinte forma:
Outras configurações podem ser mudadas alterando as outras opções disponíveis, como CSS style, mostrar ou não o botão "Curtir" etc. Mas é importante que o último item (6.4) esteja selecionado caso você não tenha adicionado manualmente o Facebook JavaScript SDK na sua página.
É só.
1. Baixar o plugin da página oficial e colocar o conteúdo do zip na pasta <wordpress>/wp-content/plugins/ou baixar pelo próprio Wordpress e deixar a instalação a cargo do mesmo (bem mais fácil)
2. Depois de instalado, lembrar de ativá-lo na página do plugin do Wordpress
3. Adicione uma aplicação de desenvolvedor do Facebook na sua conta clicando no botão "+Create New App". Nomeie a nova aplicação, escolha uma localização e concorde com os termos do Facebook. Depois disso virá uma tela para comprovar se você é humano ou não (rá!) e pronto! Lembrando que para poder criar uma aplicação sua conta deve ser validada adicionando um número de cartão de crédito ou o número do celular (geralmente dá problema se você fez portabilidade).
4. Clique na aba chamada Website tab e copie o número de Application ID e Application Secret da página de configuração
5. No Wordpress, vá na parte de Configurações (Settings) e selecione a seção Facebook Comments. Cole os números nos campos Facebook application ID e application secret respectivamente.
6. Ajuste as opções da seguinte forma (e isso é o que ninguém comentava):
6.1. Selecione a opção (Uncheck this if you want to hide the Facebook comments without having to deactivate the plugin)
6.2. Selecione a opção Hide WordPress comments on posts/pages where Facebook commenting is enabled
6.3. Selecione a opção Enable native facebook comment count (does nothing unless "v2 only" is selected)
6.4. Selecione a opção (This should be checked unless you've manually included the SDK elsewhere)
Com essas configurações, os comentários deverão aparecer tanto nos posts quanto nas páginas da seguinte forma:
Outras configurações podem ser mudadas alterando as outras opções disponíveis, como CSS style, mostrar ou não o botão "Curtir" etc. Mas é importante que o último item (6.4) esteja selecionado caso você não tenha adicionado manualmente o Facebook JavaScript SDK na sua página.
É só.
Marcadores:
Comentários,
Comments,
Facebook,
plugin,
Wordpress
segunda-feira, 8 de agosto de 2011
Virtual Hosts com XAMPP no MAC OSX
Estive tendo problemas em colocar mais de um virtual host usando o XAMPP no MAC OSX, contudo isto acabou hoje. Sem mais, segue o passo a passo:
1. Editar /etc/hosts
Colocar os nomes dos virtual hosts com direcionamento para 127.0.0.1. No meu caso ficou:
127.0.0.1 jobeet
127.0.0.1 atlas
127.0.0.1 portfolio
2. Editar /Applications/xampp/etc/httpd.conf
Tirar o comentário existente neste bloco:
# Virtual hosts
#Include /Applications/xampp/etc/extra/httpd-vhosts.conf
Para:
# Virtual hosts
Include /Applications/xampp/etc/extra/httpd-vhosts.conf
3. Editar /Applications/xampp/etc/extra/httpd-vhosts.conf
Substituir NameVirtualHost *:80 por NameVirtualHost 127.0.0.1
E adicionar o seguinte treco de código abaixo para quantos virtual hosts quiser:
<virtualhost 127.0.0.1="">
ServerName test.dev
DocumentRoot "/Users/YOURUSERNAME/Documents/test-docs/"
<directory "="" documents="" test-docs="" users="" yourusername="">
Options Indexes FollowSymLinks Includes ExecCGI
AddType text/shtml .shtml
AddOutputFilter INCLUDES .shtml
AllowOverride All
Order allow,deny
Allow from all
</directory>
</virtualhost>
Depois de inúmeras pesquisas no Google, o mistério resolvido graças ao artigo do Silvan Troxler.
É só.
1. Editar /etc/hosts
Colocar os nomes dos virtual hosts com direcionamento para 127.0.0.1. No meu caso ficou:
127.0.0.1 jobeet
127.0.0.1 atlas
127.0.0.1 portfolio
2. Editar /Applications/xampp/etc/httpd.conf
Tirar o comentário existente neste bloco:
# Virtual hosts
#Include /Applications/xampp/etc/extra/httpd-vhosts.conf
Para:
# Virtual hosts
Include /Applications/xampp/etc/extra/httpd-vhosts.conf
3. Editar /Applications/xampp/etc/extra/httpd-vhosts.conf
Substituir NameVirtualHost *:80 por NameVirtualHost 127.0.0.1
E adicionar o seguinte treco de código abaixo para quantos virtual hosts quiser:
<virtualhost 127.0.0.1="">
ServerName test.dev
DocumentRoot "/Users/YOURUSERNAME/Documents/test-docs/"
<directory "="" documents="" test-docs="" users="" yourusername="">
Options Indexes FollowSymLinks Includes ExecCGI
AddType text/shtml .shtml
AddOutputFilter INCLUDES .shtml
AllowOverride All
Order allow,deny
Allow from all
</directory>
</virtualhost>
Depois de inúmeras pesquisas no Google, o mistério resolvido graças ao artigo do Silvan Troxler.
É só.
quinta-feira, 30 de junho de 2011
Validação de Email usando PHP
No caso fiz um arquivo em PHP separado e dei um require_once para incluí-lo onde queria. Fica mais organizado e é melhor caso queira fazer alguma modificação ou acrescentar mais funções. Segue abaixo o código.
A função foi encontrada nesse site: http://www.linuxjournal.com/article/9585?page=0,3
Existe outra solução mais simples usando PHP5 ou superior, que foi encontrada no site comocriarsites.com.br, mas que não cheguei a testar. Ela é assim:
É só
/**
Função para validar um endereço de email.
Entrada: endereço de email RAW
Saída: Retorna true se o endereço de email está formatado
corretamente e se o domínio existe
**/
function validaEmail($email) {
$isValid = true;
$atIndex = strrpos($email, "@");
if (is_bool($atIndex) && !$atIndex){
$isValid = false;
}
else {
$domain = substr($email, $atIndex+1);
$local = substr($email, 0, $atIndex);
$localLen = strlen($local);
$domainLen = strlen($domain);
if ($localLen < 1 || $localLen > 64){
// local part length exceeded
$isValid = false;
}
else if ($domainLen < 1 || $domainLen > 255){
// domain part length exceeded
$isValid = false;
}
else if ($local[0] == '.' || $local[$localLen-1] == '.'){
// local part starts or ends with '.'
$isValid = false;
}
else if (preg_match('/\\.\\./', $local)){
// local part has two consecutive dots
$isValid = false;
}
else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)){
// character not valid in domain part
$isValid = false;
}
else if (preg_match('/\\.\\./', $domain)){
// domain part has two consecutive dots
$isValid = false;
}
else if(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/',str_replace("\\\\","",$local))) {
// character not valid in local part unless
// local part is quoted
if (!preg_match('/^"(\\\\"|[^"])+"$/',str_replace("\\\\","",$local))) {
$isValid = false;
}
}
if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A"))){
// domain not found in DNS
$isValid = false;
}
}
return $isValid;
}
?>A função foi encontrada nesse site: http://www.linuxjournal.com/article/9585?page=0,3
Existe outra solução mais simples usando PHP5 ou superior, que foi encontrada no site comocriarsites.com.br, mas que não cheguei a testar. Ela é assim:
$email = 'teste@meusite.com';
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
echo 'E-mail válido';
}else{
echo 'E-mail invalido';
}
?>É só
sexta-feira, 24 de junho de 2011
Editando Múltiplas Frames no Flash
Também não uma questão de programação, mas ajuda aos iniciantes em flash.
Quando precisar editar um objeto em múltiplas frames basta ativas o ícone "edit multiple frames" que fica ao lado dos ícones de onion skin.
Achei essa dica nesse site aqui: http://forum.webly.com.br/index.php?showtopic=5939
É só.
Quando precisar editar um objeto em múltiplas frames basta ativas o ícone "edit multiple frames" que fica ao lado dos ícones de onion skin.
Achei essa dica nesse site aqui: http://forum.webly.com.br/index.php?showtopic=5939
É só.
Download de Vídeos do Youtube com Safari
Não é bem uma dica nem um lembrete de desenvolvimento, mas é bem útil lembrar como fazer isso, uma vez que às vezes é necessário ter um vídeo do youtube offline para apresentação.
Abra a página com o filme do youtube escolhido e pressione Command-Option-A, que mostra a tela de Atividade. Outra forma é ir em Janela>Atividade. Notar que se tiver mais de uma aba aberta poderão existir várias threads. Escolha a do vídeo do youtube que se quer baixar.
Procure pelo elemento com maior tamanho que tiver na thread do youtube, geralmente maior do que 0,5 MB e provavelmente com mais ou menos uns 5MB. Dê um clique duplo nele e o Safari vai baixá-lo (provavelmente para sua pasta de Transferências). Quando o download acabar, procure-o com o Finder e se ele tiver outra extensão que não a .flv, renomeie para esta, apesar de que eu nunca baixei sem o arquivo já estar identificado como .flv.
Pronto! Agora é só reproduzir :)
Abra a página com o filme do youtube escolhido e pressione Command-Option-A, que mostra a tela de Atividade. Outra forma é ir em Janela>Atividade. Notar que se tiver mais de uma aba aberta poderão existir várias threads. Escolha a do vídeo do youtube que se quer baixar.
Procure pelo elemento com maior tamanho que tiver na thread do youtube, geralmente maior do que 0,5 MB e provavelmente com mais ou menos uns 5MB. Dê um clique duplo nele e o Safari vai baixá-lo (provavelmente para sua pasta de Transferências). Quando o download acabar, procure-o com o Finder e se ele tiver outra extensão que não a .flv, renomeie para esta, apesar de que eu nunca baixei sem o arquivo já estar identificado como .flv.
Pronto! Agora é só reproduzir :)


