sexta-feira, abril 09, 2010

Table sort com JQuery

Recebi no meu mail uma referência para este site. Dele pode ser encontrada uma biblioteca assente sobre JQuery que possibilita ordenação de tabelas recorrendo só a javascript, html e css. Visualmente muito agradável, sem requests server side, simples de utilizar e com um bom desempenho.

segunda-feira, abril 05, 2010

De volta à Berlenga

Isto hoje está a ser um dia produtivo a nível de posts, já não me lembro o dia em que escrevi 2 posts. Bem, este fim de semana fui mergulhar à Berlenga, aos destroços do Primavera e à gruta Azul, ficam aqui algumas das fotos.




Estas fotos são da autoria do meu buddy de mergulho o Rui Martins, se quiserem ver todas fica aqui o link.

Primeira vinda para o trabalho de mota

Depois de andar a treinar na mota ao pé de casa em voltinha relativamente curtas, hoje decidi aventurar-me e vir de mota para o trabalho pela primeira vez. É verdade que hoje está um dia em que o transito é quase inexistente, só apanhei resistência da saída da A5 até o Saldanha, mas de qualquer forma demorei 40 minutos a fazer o percurso que normalmente demoro 1h15m a fazer de transportes. Para não falar que como não tenho passe, porque não me compensa, a viagem de ida e volta fica-me em cerca de 2,5€, enquanto se for de transportes é à volta de 4,5€.

sexta-feira, março 26, 2010

Bicicleta a motor

Heis o meu novo meio de transporte, apresento a minha Daelim Roadwin 125 FI





terça-feira, março 16, 2010

Novas regras ao subsídio de desemprego

Bem sei que esta é uma matéria sensível que mexe com a vida de muitas famílias, mas até estou de acordo que se reveja algo porque há por aí muitos abusos. Se na maioria dos casos o subsídio de desemprego é uma ajuda fundamental para a dignidade de vida de uma pessoa, existem outros que é um incentivo ao 'não fazer nada'.

Tenho um amigo que há pouco tempo se virou para mim e disse algo como: "Para que vou aceitar as ofertas de emprego? Recebo mais estando em casa sentado no sofá!". A minha resposta foi: "Para não estares a 'chular' o pessoal que como eu desconta!".

Mas também tenho noção que existem pessoas que por exemplo têm prestações de casa para pagar que são elevadas, e se normalmente receberiam 1000€ por mês, passar a receber o ordenado mínimo não é de alguma forma uma solução. Mas então porque nestes casos não se obriga essa pessoa a trabalhar e o subsídio de desemprego seria a diferença entre os 1000€ e o ordenado mínimo? Acho que é uma excelente solução, caso a pessoa não quisesse mesmo ir trabalhar passaria só a receber essa diferença ou então até lhe seria retirado o subsídio. Isto sim era uma medida de incentivo ao trabalho e à produtividade, só assim um país se pode tornar próspero.

sexta-feira, março 12, 2010

Jogos - uma nova era

Devo dizer que a Nintendo Wii me atrai especialmente devido à sua interactividade que não é possível com outras consolas. Contudo veja-se bem o coelho que a Playstation está a preparar para tirar da cartola...estamos quase quase a chegar ao ponto em que nós estamos dentro do jogo no corpo da personagem...


quinta-feira, março 11, 2010

Ler dados do Excel através de C#

Há cerca de de 2 anos tive de trabalhar pela primeira vez com a leitura de dados a partir de um ficheiro excel, e nessa altura até cheguei a escrever um post sobre o assunto. Mas o solução que tinha estava longe de optima, apesar de funcionar num ambiente controlado que tinha.

Num projecto que estou actualmente foi-me pedido que um utilizador pudesse fazer upload de um ficheiro excel, e que os dados fossem lidos para dentro da base de dados. Como já se tinha passado algum tempo desde do meu código original, fui investigar e tentar resolver alguns problemas que tinha, nomeadamente o problema da cultura, o que provocava que não conseguisse utilizar a minha aplicação anterior em todos os ambientes. Outra preocupação que tive desta vez foi o desempenho, a leitura é algo 'pesado' logo devemos ler o máximo de células de uma só chamada (à semelhança do que acontece quando se lêem dados de uma BD), e ter cuidado com a memória que estou a utilizar e liberta-la sempre que já não for necessário.

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
using System.Threading;
using System.Reflection;
using System.IO;
using System.Xml;
using System.Web.Security;
using Excel = Microsoft.Office.Interop.Excel; 
  
    public class ExcelUtils
    {
        public static void GetDataFromExcel()
        {

            Application xlApp;
            Workbook xlWorkBook;
            Worksheet objWorkSheet;
            object misValue = Missing.Value;

            using (new LanguageHelper())
            {
                string file = "example.xls";
                xlApp = new Excel.ApplicationClass();
                xlWorkBook =
                    xlApp.Workbooks.Open(file, 0, true, 5, "", "", true, 
                  XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);
                objWorkSheet = (Worksheet) xlWorkBook.Worksheets.get_Item(1);


                Array cod = (Array)objWorkSheet.get_Range("A4", "Z4").Value2;
                string name = cod.GetValue(1, 1).ToString();

                Console.WriteLine("cod={0}", name);
                
                xlWorkBook.Close(true, misValue, misValue);
                xlApp.Quit();

                releaseObject(objWorkSheet);
                releaseObject(xlWorkBook);
                releaseObject(xlApp);
            }

            Console.WriteLine("Ended!");
        }

        private static void releaseObject(object obj)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                obj = null;
            }
            catch (Exception ex)
            {
                obj = null;
                Console.WriteLine("Unable to release the Object " + ex.ToString());
            }
            finally
            {
                GC.Collect();
            }
        } 
    }
    
    public class LanguageHelper : IDisposable
    {
        private CultureInfo mCurrentCulture;

        public LanguageHelper()
        {
            // save current culture and set culture to en-US
            mCurrentCulture = Thread.CurrentThread.CurrentCulture;
            Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
        }

        #region IDisposable Members

        public void Dispose()
        {
            // return to normal culture
            Thread.CurrentThread.CurrentCulture = mCurrentCulture;
        }

        #endregion
    } 

quarta-feira, fevereiro 24, 2010

Durabilidade = Tempo de garantia

Cada vez esta igualdade é mais verdadeira, a maior parte das coisas que são vendidas têm como objectivo durar o tempo da garantia. Agora foi o meu monitor, em Dezembro vez 2 anos que o comprei...a semana passada deixou de funcionar!!!

terça-feira, fevereiro 09, 2010

Top Symphonic Metal

Parece-me que este tipo de música ainda continua algo discriminada, só pelo nome a maior parte das pessoas sente à partida alguma resistência. Ainda à 2 semanas atrás, quando um amigo meu soube que eu ouvia este tipo de música disse - "Freak!!!" - depois de passar 1 horinha a ouvir, lá disse - "Pois...até se ouve bem!". Vou deixar aqui a lista das 10 bandas que mais gosto, juntamente com uma música de cada, pode ser que alguém tenha curiosidade de ouvir para verificar se efectivamente gosta ou não.

1) Nightwish - Wish I had an angel
2) Within Temptation - What have you done
3) Avantasia - Avantasia
4) Lunatica - Words unleashed
5) Delain - April rain
6) Evanescence - Bring me to life
7) Epica - Feint
8) After Forever - Equally destructive
9) Sirenia - The other side
10) Xandria - Now and forever

terça-feira, fevereiro 02, 2010

Trabalhar onde os outros se divertem

Ontem estava na natação quando um colega referiu no meio de uma conversa, que estava num estágio de ginecologia, e diz ele - "...o que normalmente se diz é que eu estou a trabalhar onde os outros se divertem!!!". Vira-se outro colega e diz - "É pá eu também tenho um amigo nessa situação, ele é segurança numa discoteca".

Foi quando comecei a pensar, realmente a expressão aplica-se bem a diversas profissões, aliás até se aplica a mim próprio, como game developer o meu trabalho é fazer jogos para depois os outros andarem-se a divertir, e eu também. Mas mais uma vez pensando bem nas outras profissões os outros também se divertem!