Alguns livros novos…

Hoje recebi mais alguns livros que decidi adquirir, para utilizar num par de projectos pessoais em mão. São 4 ao todo:

Filmmaker’s Handbook, The: A Comprehensive Guide for the Digital Age



Este livro é uma autentica bíblia (actualizada – é a própria capa que a indica). Tem de tudo um pouco sobre produção de vídeo, incidindo essencialmente nos aspectos do equipamento – sistemas e cameras de vídeo e película, cor e filtragem, o processo de captura, a equipa, som, luz, pós produção… de tudo.

Este livro escolhi essencialmente para um “software sideproject” multipropósito. Pretendo um género de aplicação ao estilo do CeltX, mas web based, e com um workflow ligeiramente diferente. O CeltX é espectacular, mas há um ou outro inconveniente ligeiro, nomeadamente a de multíplos utilizadores trabalharem ao mesmo tempo. Possivelmente a versão estúdio resolve, mas não tenho a certeza. Porque também preciso que um colega meu estagiário se adapte a alguns métodos de trabalho, considerei este um óptimo projecto para realizar e aprender os aspectos web do .NET, e ainda a utilização e aplicação da DSL que tenho vindo a construir. É um muito em um… Se alguém estiver interessado num produto do género, recomendo o teste do CeltX. Se não servir, depois comunica ;).

Making Short Films: The Complete Guide from Script to Screen, Second Edition

Este está também ligado ao projecto do software, como referência, mas também no sentido de preparar projectos futuros.

The Storyboard Design Course: The Ultimate Guide for Artists, Directors, Producers and Scriptwriters


Este servirá não só para o projecto de software, ou um aspecto dele, como também para preparar um o mais recente projecto de vídeo clip nas mãos… Pelo que vi até agora, parece muito completo e uma excelente leitura e referencia, e uma sequência de lições a seguir.

E finalmente…

Light: Science and Magic: An Introduction to Photographic Lighting


Este é um livro que já estou há alguns anos para adquirir, e quem lê o Strobist conhece bem o porque. Tem sido considerado como uma das melhores referências na leitura sobre iluminação, e o pouco que vi até agora indica que será. Leitura simples e mais na base de “discussão” em vez de “palestra”.

Backup de PostgresSQL em C#

Para uma aplicação que estou a desenvolver com base numa BD Postgre, precisei de criar um script de backup da base de dados. A ideia é clicar num botão da interface web, e fazer o dump da BD, de forma simples, e permitir que o utilizador (que neste caso não tem nada a haver com IT) possa descarregar e archivar a base facilmente.

O método:

/// <summary>
        /// Backup Database to file (dump)
        /// </summary>
        /// <param name="server"> </param>db -> ConfigKey ["dbbackupserver"]
        /// <param name="port"> </param>db -> ConfigKey ["dbbackupport"]
        /// <param name="user"> </param>db -> ConfigKey ["dbbackupuser"]
        /// <param name="password"> </param>db -> ConfigKey ["dbpbackuppassword"]
        /// <param name="dbname"> </param>db -> ConfigKey ["dbbackupdbname"]
        /// <param name="backupdir"> </param>db -> ConfigKey ["dbbackupdir"]
        /// <param name="backupFileName"> </param>db -> ConfigKey ["dbbackupfilename"]
        /// <param name="backupCommandDir"> </param>db -> ConfigKey ["dbbackupworkdir"]
        /// <returns>The file name with the db dump</returns>
        public string BackupDatabase(
            string server, 
            string port, 
            string user, 
            string password,
            string dbname, 
            string backupdir, 
            string backupFileName,
            string backupCommandDir)
        {
            //string password = ConfigurationManager.AppSettings["dbpbackuppassword"];
            //string server = ConfigurationManager.AppSettings["dbbackupserver"];
            //string port = ConfigurationManager.AppSettings["dbbackupport"];
            //string user = ConfigurationManager.AppSettings["dbbackupuser"];
            //string dbname = ConfigurationManager.AppSettings["dbbackupdbname"];
            //string backupdir = ConfigurationManager.AppSettings["dbbackupdir"];
            //string backupFileName = ConfigurationManager.AppSettings["dbbackupfilename"];
            //string backupCommandDir = ConfigurationManager.AppSettings["dbbackupworkdir"];
            
            try
            {

                Environment.SetEnvironmentVariable("PGPASSWORD", password);

                string backupFile = backupdir + backupFileName +
                    DateTime.Now.ToString("yyyyMMdd_HHmmss") + ".backup";
                string BackupString = "-ibv -Z3 -f \"" + backupFile + "\" " +
                    "-Fc -h " + server + " -U " + user + " -p " + port + " " + dbname;

                Process proc = new System.Diagnostics.Process();
                proc.StartInfo.FileName = backupCommandDir + "\\pg_dump.exe";
                proc.StartInfo.Arguments = BackupString;
                                
                proc.Start();

                proc.WaitForExit();
                proc.Close();

                return backupFile; 

            }
            catch (Exception ex)
            {
                throw new Exception("An unknown error occured while trying to perform the database backup/restore operation.\n\nException: " + ex.Message);
            }
        }

Basicamente, o método inicia o processo / commando da shell “pgdump” que vem com a instalação do PostgreSQL e faz um dump das tabelas e dados. Eu passo os parâmetros de nome de ficheiro e BD e directório de armazenamento etc, como parâmetro do método, porque tenho integrado numa framework e deverá servir para outras aplicações, mas podia perfeitamente referenciar as chaves da configuração directamente ou mesmo escrever o código do commando (hardcoded). No fim, ele devolve o caminho do ficheiro para enviar para a interface.

Linksys WUSB54G em Linux (Ubuntu)

Não gosto nada da Linksys. Lol. Até brinco com o facto com colegas que ficam pro vezes admirados, já que os equipamentos da Linksys são considerados muito bons e até são feitos pela Cisco. Tudo bem, mas os que me aparecem à frente só dão chatices. Enfim.

De qualquer forma, tenho tido contacto com algumas peças da marca numa instalação, nomeadamente o adaptador WUSB54G, que permite um PC ligar-se à rede através da porta USB. É uma peça um pouco antiquado mas funciona. Também estão a ser usados em maquinas muito idosas, já. Instalar no Linux é que, infelizmente, não é um processo imediato. Tenho encontrado alguma info em foruns, mas as respostas às vezes são tão complexas que até assustam.

Não é, no entanto, assim tão díficil de instalar no Ubuntu. Basta ir buscar uns elementos via o Synaptics. Eles são:

  • ndiswrapper (permite usar drivers wireless do Windows no Linux) 
  • ndisgtk (para ter uma interface gráfica)
  • ntfs-3g e ntfs-config (caso ainda n esteja instalado – permite ler ficheiros do sistema NTFS de uma pen ou disco externo no Linux)
  • gnome-mount (para poder montar automáticamente um disco externo.

As últimas duas são auxiliares, se pretender copiar os ficheiros necessários através de uma pen ou assim a partir do windows. No entanto, são uteis de ter para uma qualquer de chuva como hoje.

Convém puxar os drivers do site da linksys, porque será necessário o ficheiro de extenção .inf para efectaur a instalação do driver. Para o WUSB54G o link é http://www.linksysbycisco.com/US/en/support/WUSB54G/download

Depois de sacar, extrai os ficheiros e copie-os para uma pen para aceder na máquina linux (naturalmente só faz sentido se estiver a puxar os ficheiros de a partir de outro computador)

Abre o NDisgtk (Sistema -> Administração -> Windows Wireless Drivers), precione o botão de instalação do driver, e localiza o ficheiro .inf (no meu caso, estava na pasta <pen:>\linksys driver\WUSB54Gv4_20051110\Drivers\WUSB54Gv4\rt2500usb.inf ).

E já está.. até é simples 😀