cocoaDialog: enriqueça a interface dos seus scripts shell usando diálogos nativos do OS X

O cocoaDialog permite acrescentar facilmente diálogos nativos do OS X – alertas, entrada de texto, seleção de arquivos, etc. – aos seus scripts shell – ou Python, Perl, etc.

A interação dele com o seu script é bem simples: todos os parâmetros (o tipo de diálogo, as mensagens a exibir, os botões, etc.) são passados na chamada de execução do cocoaDialog, e o retorno é enviado para a saída padrão, fácil de ser recebido por scripts em todas as linguagens típicas.

Claro herdeiro das ideias do clássico Dialog, que ofereceu recursos de interface nas telas de texto de muitos sistemas desde a primeira metade da década de 1990, o cocoaDialog já tem vários anos de estrada e desenvolvimento não muito ativo: a versão mais recente é de 2012. Em compensação, ele não é muito exigente, rodando a partir do OS X 10.4.

Os tipos de diálogo do OS X suportados pelo cocoaDialog são:

  • Seleção de arquivo
  • Gravação de arquivo
  • Exibição de mensagem
  • Diálogo Sim/Não
  • Diálogo Ok
  • Entrada de campo
  • Entrada de campo seguro
  • Entrada de texto
  • Barra de progresso
  • Combo
  • Bolha
  • e mais

O modo de exibição de cada diálogo é escolhido pelo próprio utilitário, mas alguns parâmetros (como title, width e height) permitem controlar mais diretamente.

Como costuma ser o caso com esse tipo de solução, a tendência é criar linhas de comando enormes. Por exemplo, aquele diálogo de assinatura do RSS que consta na abertura deste artigo foi gerado pela linha a seguir: /Applications/CocoaDialog.app/Contents/MacOS/CocoaDialog msgbox --icon-file /Applications/CocoaDialog.app/Contents/Resources/document.icns --title "Exemplo do cocoaDialog para o BR-Mac" --no-newline --text "Deseja assinar o feed do BR-Mac.org?" --informative-text "Você pode assinar o feed do BR-Mac via RSS 2.0 ou pelo Twitter @brmacblog." --button1 "RSS" --button2 "Twitter" --button3 "Cancel"

Em compensação, para exibir um seletor completo para pasta e nome de arquivo a abrir para processar no seu script, por exemplo, a linha a seguir pode bastar: /Applications/CocoaDialog.app/Contents/MacOS/CocoaDialog fileselect --text "Escolha o arquivo para publicação no Axe" --with-extensions .txt .html .md

A documentação do cocoaDialog explica os parâmetros e mostra o visual da maioria dos diálogos, e a coleção de exemplos mostra código em várias linguagens para exibir os diálogos e obter o seu retorno.

Pngcrush: utilitário open source reduz em até 25% o tamanho dos arquivos PNG, sem perda de definição

Com o uso de um utilitário bem simples e gratuito, é possível reduzir em até 25% o tamanho de arquivo de imagens PNG, sem perda da resolução e da qualidade, acelerando o carregamento de páginas e o download de apps.

Originalmente criado como um sucessor para o formato GIF e aprovado para uso na Internet em 1996, o padrão PNG pertence ao W3C1 e se distingue do JPEG (arquivos .jpg) por usar um método de compressão sem perdas: enquanto imagens JPEG tendem a oferecer qualidade reduzida em relação ao original, o PNG reflete fielmente a imagem para ele convertida.

Os arquivos PNG são ricos em opções e recursos, incluindo variadas formas de compressão2 e diversas informações que não são utilizadas na exibição como ilustração em uma página web, ou como parte da interface de um app.

A imagem acima, em PNG, está no formato gerado pelo editor gráfico, mas é possível reduzir seu tamanho sem mudar em nada o visual (veja abaixo como ela fica, com 18% a menos em seu tamanho), explorando as várias possibilidades de compressão disponíveis para cada arquivo, e removendo informações como tabelas de correção de cores ou o nome do programa que criou a imagem, diversos utilitários conseguem reduzir bastante o tamanho de arquivo das imagens PNG, sem abrir mão da definição e qualidade originais.

O otimizador de PNG que eu costumo usar é o pngcrush, criado por Glenn Randers-Pehrson. Na sua forma mais simples, ele pode ser chamado no Terminal pelo comando pngcrush original.png otimizado.png (que irá processar a imagem original.png e gerar a imagem otimizado.png), mas a documentação explica vários parâmetros adicionais para o caso de você desejar controlar o que vai ou não ser removido do seu PNG.

O pngcrush é open source, funciona em Unix (incluindo OS X), Linux e até DOS, e desde que eu o incluí no script que uso para fazer upload de imagens, tenho notado reduções entre 20% e 25% no tamanho dos arquivos. A imagem do exemplo acima teve redução de 18%, usando as configurações default do pngcrush.

Se você tem o Xcode instalado, o pngcrush já está no seu Mac, embora em um lugar meio fora de mão: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/pngcrush

Você também pode instalá-lo com facilidade por meio do MacPorts ou do homebrew. Para instalar com o homebrew, por exemplo, basta comandar brew install pngcrush

Mas o pngcrush não é a única alternativa: você pode usar o optipng (que tem a vantagem de estar disponível no Rudix) ou o ImageOptim (que tem interface gráfica nativa), por exemplo.

 
  1.  World Wide Web Consortium

  2.  É comum haver milhares ou milhões de combinações de compressão possíveis para cada arquivo PNG

Os tempos mudaram a nosso favor: um anúncio de HD USB para Mac mostra como

Lembra de quando as grandes marcas de acessórios e componentes só lançavam produtos prontos para usar em PCs, e as lojas de informática só anunciavam ofertas voltadas aos usuários do Windows?

Quem acabou com essa hegemonia foram os acessórios para smartphones e tablets ("pós-PC"?), mas o fim da monocultura Microsoft abre oportunidades para o Mac também, ainda que continuem raras.

O anúncio acima é da popular loja Fry's, e não deixa dúvida: é um HD USB 3.0 para Mac, mas "pode ser facilmente reformatado para PC". É só um exemplo, mas é o inverso do que veríamos 5 anos atrás...

Via Craig Hockenberry.

OS X Server: as novidades do OS X Mavericks como servidor

O OS X Server é a expansão do OS X que transforma um Mac em um servidor completo, oferecendo recursos como compartilhamento da agenda, streaming de vídeo, cache de downloads da App Store, mensagens instantâneas, VPN e muitos outros aos computadores e dispositivos iOS da sua rede.

Hoje correspondendo a um pacote de expansão que custa ~US$ 20 na Mac App Store e pode ser instalado em um Mac que já esteja rodando o OS X, durante muitos anos o OS X Server era uma instalação à parte do sistema operacional que custava ~US$ 500.

A mudança de enfoque, ocorrida na versão Lion, é um reconhecimento ao fato de que todos os Macs modernos têm recursos suficientes para rodar serviços de rede que atendam a um pequeno escritório, estúdio ou a uma família, e que os requisitos de software para o caso de servidores maiores (por exemplo, de uma empresa ou departamento) não são tão diferentes a ponto de precisar de um sistema operacional à parte1.

Os serviços oferecidos pelo OS X Server ao longo de suas versões recentes e dos previews da próxima versão são uma mistura de componentes open source consagrados em seus âmbitos, e de componentes específicos para oferecer determinados serviços a sistemas OS X e iOS:

  • Gerenciamento de perfis de usuários
  • Servidor de compartilhamento de arquivos
  • Servidor para backups centralizados do Time Machine
  • Um cache para downloads da App Store e da Mac App Store
  • Compartilhamento e consolidação de calendários (CalDAV) e de Contatos, permitindo serviços como marcação de compromissos em grupo com localização de horários disponíveis e reserva de sala, por exemplo.
  • Streaming de vídeo
  • Um servidor Wiki com suporte caprichado2 à publicação por usuários de OS X e de iOS, e suporte a recursos típicos do OS X, como o Quick Look.
  • Correio eletrônico com suporte a Push
  • Netinstall, para instalações de software automatizadas
  • Xsan, um serviço de armazenamento em rede baseada em fibre channel
  • Servidor de mensagens instantâneas
  • Servidor VPN, DNS, Apache, PostgreSQL
  • e mais.

Além dos componentes acima, o OS X Server também inclui um painel de controle e gerenciamento dos serviços.

O gerenciamento de perfis é bem interessante para quem administra equipamentos de uso corporativo: com ele dá para definir políticas centralizadas, como obrigar que todos os Macs com determinado perfil sejam obrigados a usar o Gatekeeper e a iniciar a economia de energia após 8 minutos (entre vários outros serviços), que todos os iPhones e iPads com determinado perfil precisem trocar a senha a cada 2 semanas e tenham restrição ao uso da câmera, e que todos os usuários da rede assinem a agenda de eventos da empresa, por exemplo.

O Mac mini costuma ser um bom servidor de pequeno porte3, e os requisitos para rodar o OS X Server não são muito difíceis: um Mac com a versão atual do OS X, 2GB de RAM e 10GB de armazenamento.

Para saber mais sobre a versão atual do OS X Server, consulte o OS X Server Product Overview.

O OS X Server vai continuar a existir após o lançamento do Mavericks

Na apresentação inicial do OS X Mavericks, durante a abertura do WWDC 2013, nada foi dito sobre o OS X Server, mas a ausência de informação foi corrigida no preview do produto, que mostra que teremos bem mais evolução do que revolução, ao dizer:

O OS X Server traz várias inovações que ajudarão as pessoas que usam a sua rede e as pessoas que a gerenciam.

Com os novos recursos do Xcode Server, é mais fácil do que nunca para uma equipe de desenvolvimento de Mac ou iOS criar software robusto e confiável, graças à integração contínua, aos testes e aos serviços de hospedagem de repositório.

O Caching Server 2 acelera o download e a entrega de software por meio da App Store, da Mac App Store e da iTunes Store. Agora, ele pode usar o cache no seu servidor para acelerar o download em dispositivos com iOS 7.

O Gerenciador de Perfil tem vários recursos de gerenciamento novos para iOS 7 e OS X Mavericks que simplificam a distribuição de software de apps e livros. [separei em parágrafos e grifei para maior clareza]

Vários dos serviços oferecidos pelo produto (como o desenvolvimento colaborativo usando o Xcode Server, por exemplo) também estão disponíveis em populares serviços "na nuvem", e optar por manter o seu próprio tem vantagens e desvantagens óbvias.

Para saber detalhes técnicos sobre os serviços, protocolos, padrões e recursos do OS X Mavericks Server, você pode consultar desde já o Core Technology Overview, que não separa o que é do OS X "geral" e do Server, mas se você tem interesse no assunto, certamente saberá diferenciar ツ

 
  1.  Nem sempre foi assim: na época do Snow Leopard, por exemplo, o OS X Server se diferenciava por só ter componentes de 64 bits, por exemplo.

  2.  Por meio do WebDAV

  3.  É possível inclusive comprá-lo com o OS X Server já instalado.

Instalar o OS X Mavericks: prepare o seu Mac corretamente

Se o seu Mac hoje roda o Mountain Lion, é bem provável que ele esteja na lista dos Macs compatíveis com o OS X Mavericks, e você já pode começar a prepará-lo para o upgrade.

O OS X Mavericks será lançado daqui a algumas semanas trazendo várias novidades legais, incluindo a compactação de memória que deve dar vida nova a Macs de alguns anos atrás, vários recursos para aumentar a duração da bateria (incluindo um freio para o Flash), e mais – tem até abas no Finder incluídas na configuração default, e um modo full screen que atende a quem usa mais de um monitor..

Vale deixar claro: estar na lista dos Macs compatíveis com o OS X Mavericks não é a mesma coisa que suportar todos os recursos do Mavericks. Recursos como AirPlay Mirroring, PowerNap, AirDrop e outros podem exigir combinações de hardware específicas.

A instalação deve ser como as das versões recentes: compra na App Store, faz o download, opcionalmente cria um pen drive de instalação, aí roda o upgrade diretamente a partir da sua versão atual do OS X.

Mas há alguns detalhes que você pode antecipar e farão a diferença, incluindo evitando situações em que a melhor opção seria pesquisar como se faz a famosa "instalação limpa", que começa apagando todo o conteúdo do HD.

A providência inicial é um backup completo. A seguir você vai desinstalar e atualizar bastante coisa, e a chance de criar alguma inconsistência é bem maior do que a de um dia de operação normal. Grave tudo, depois verifique se está tudo bem gravado.

Em seguida remova os penduricalhos: programas, paineis de preferência, personalizações e outras alterações que você tenha feito (e não use mais) podem ser removidas, usando as instruções e suporte do autor de cada uma delas, e evitando assim que o instalador da nova versão do sistema operacional acabe tropeçando em alguma das alterações provocadas por elas. Dê atenção especial ao que você instalou sem ser pela App Store, porque são os componentes com maior chance de ter feito alguma alteração mais profunda no seu sistema.

Quanto ao que sobrar, aplique o terceiro passo: atualize todos os seus apps, rotinas, scripts e configurações, e passe a dar especial atenção a mantê-los atualizados até o dia do upgrade. Não é só uma questão de antecipar uma providência, mas também de ampliar a chance de estar rodando a versão compatível com o Mavericks ou mesmo que já tire proveito dos seus novos recursos.

Quem fez upgrade de hardware precisa ficar ainda mais atento.

Se você já fez algum upgrade de hardware do seu Mac (especialmente de memória RAM ou armazenamento), é hora de conferir no site da Apple se os componentes instalados atendem aos requisitos da documentação. Não basta saber que funcionam: é importante saber se estão de acordo com o especificado, porque é isso que aumenta a garantia de que eles funcionarão também no Mavericks.

Se a sua memória ou disco não atenderem aos requisitos, não é hora de sair desinstalando, mas sim de se preparar para fazê-lo caso alguma mensagem de erro esotérica aparecer durante a instalação. São frequentes1 os casos de mensagens de erro de instalação pouco claras que se resolvem recolocando a memória original ou trocando o disco por um modelo homologado. E às vezes isso se aplica apenas à instalação: depois de pronta, dá para reinstalar a versão original. Ou não.

E pronto: é só fazer mais um backup2 e aguardar o lançamento – ou a semana seguinte ao lançamento, como fazem os usuários mais cautelosos ツ

 
  1.  Já ajudei a resolver vários, e geralmente o usuário insiste em testar todas as outras possibilidades antes de ir verificar se o componente que escolheu está de acordo com a especificação ou não...

  2.  Afinal você não vai querer repetir todos esses passos se precisar recorrer a um backup e só tiver aquele de antes, certo?

Um desafio para a Apple: os clientes que estão satisfeitos

Eu sou fã de tecnologia, e por décadas raramente estive satisfeito com alguma geração de aparelhos. Mas pulei o iPhone 4S, quase pulei o 5, não tenho interesse no iPad 4, estou satisfeito com meu Mac atual e não consigo imaginar o que a Apple poderia fazer para ganhar algum dinheiro meu com a renovação de suas linhas atuais de hardware em 2013.

Sei que não estou sozinho: já vi opiniões similares estampadas em revistas, blogs, redes sociais. É quase o contrário do famoso caso do Osborne 1, primeiro PC portátil a ficar conhecido: ele poderia ser um sucesso de vendas, mas seu criador fez muita propaganda do que um dia viria a ser o Osborne 2, aí as pessoas não compraram o Osborne 1 para esperar o próximo, ele ficou sem dinheiro para desenvolver o Osborne 2, e quebrou.

No caso da Apple como eu a vejo no momento, o que acontece é que muitos consumidores fieis à marca e apegados a seu "ecosistema" estão satisfeitos com o "Osborne 1" que já possuem, e essa satisfação dura mais ciclos de produto do que costumava durar.

Seja pela desaceleração da Lei de Moore, ou pelo fato de que boa parte do conteúdo consumido agora vem de fora do computador, via Internet, ou por qualquer outra razão, o fato é que consumidores satisfeitos com uma geração do produto por mais tempo do que o usual são um desafio ao modelo de negócio baseado em lançamento periódico de novas versões mantendo margem de lucro elevada.

O aumento do desempenho da CPU e do armazenamento não são mais tão importantes como já foram, os ganhos na definição de tela podem não ser tão atrativos assim, já faz algum tempo que o número de notebooks vendidos no mercado como um todo não aumenta, e recursos míticos como o modo frisbee ou a tela feita de lágrimas de unicórnio solidificadas não chegarão tão cedo.

Pessoalmente, eu não poderia me importar menos com os lucros ou as ações da Apple

A Apple já lidou com desafios análogos anteriormente, e se saiu bem lançando novas linhas de produtos, como o iPod, MacBook Air, iPhone e iPad, iniciando assim novos ciclos de satisfação com os clientes existentes, e atraindo outros – o que é bem diferente, em termos de lucratividade, de buscar uma margem de participação maior lançando linhas mais "econômicas", como muitos dizem que ela planeja fazer com o iPhone.

Pessoalmente, eu não poderia me importar menos com os lucros ou as ações da Apple, mas num momento como este o que me vem à cabeça é que a gestão da empresa não é amadora, portanto é de se imaginar que alguma nova linha de produtos, ou um novo motivo que nos faça querer comprar as versões atualizadas mesmo sem ter esgotado a vida útil da que já temos, deve estar a caminho. E, embora isso vá doer na carteira, espero que não demorem.

Mais acessados:

Artigos recentes: