Thursday, January 22, 2009

Protocolo HTTP - Reminders... :)

Métodos GET, POST???
Qual usar? Qual a diferença?? Humm??

Então essencialmente:
- GET: enviamos os parâmetros por querystring e recebemos o resultado (não necessariamente XML)
- POST: enviamos os parâmetros no body do pedido e recebemos o resultado (não necessariamente XML)

Não é muito vulgar mas pode acontecer querermos enviar um XML por POST e parâmetros no URL.
De notar que há sites que só aceitam pedidos através de um dos métodos (GET ou POST) porque esse item é configurável no IIS.

Descrição interessante aqui:
http://www.cs.tut.fi/~jkorpela/forms/methods.html, tópico The fundamental differences between "GET" and "POST"

Detalhes interessantes também aqui:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html (creio que pouca gente sabe que existem estes todos...)

E prontux!

Have fun! :)

Thursday, January 8, 2009

Antivirus de borla (só p análise e pouco mais, mas...)

Estava eu em luta com o meu PC, que teimava em se arrastar cada vez mais, eis senão quando descobri que andavam por aqui uns troianos armados em gregos!

Então, com a ajudita de um querido colega, descobri uma página que analisa o disco gratuitamente e detecta ameaças. Para desinfecções, é preciso pagar (a não ser q sejam fraquitas...), mas já ajuda pra malta ver o que se anda a passar nos bastidores da máquina.

Aqui fica o link:
http://www.pandasecurity.com/portugal/homeusers/solutions/activescan/default.htm?track=80381

Enjoy...

Thursday, November 27, 2008

Dicas do Google para mais qualidade na programação

Daqui: http://misko.hevery.com/code-reviewers-guide/

Dicas da equipa da Google, que levantam a bandeirinha vermelha de alerta em pontos do código.

Aqui ficam.

Flaw #1: Constructor does Real Work
Warning Signs
- new keyword in a constructor or at field declaration
- Static method calls in a constructor or at field declaration
- Anything more than field assignment in constructors
- Object not fully initialized after the constructor finishes (watch out for initialize methods)
- Control flow (conditional or looping logic) in a constructor
- Code does complex object graph construction inside a constructor rather than using a factory or builder
- Adding or using an initialization block

Flaw #2: Digging into Collaborators
Warning Signs
- Objects are passed in but never used directly (only used to get access to other objects)
- Law of Demeter violation: method call chain walks an object graph with more than one dot (.)
- Suspicious names: context, environment, principal, container, or manager

Flaw #3: Brittle Global State & Singletons
Warning Signs
- Adding or using singletons
- Adding or using static fields or static methods
- - Adding or using static initialization blocks
- Adding or using registries
- Adding or using service locators

Flaw #4: Class Does Too Much
Warning Signs
- Summing up what the class does includes the word “and”
- Class would be challenging for new team members to read and quickly “get it”
- Class has fields that are only used in some methods
- Class has static methods that only operate on parameters


:

Thursday, April 24, 2008

Design Gráfico - à borlix! :)

Para quem quer fazer umas coisinhas de design gráfico, mas nao percebe muito de Photoshop ou CorelDraw, ou outras conceituadíssimas(!) ferramentas (e já agora para quem não quer pagar licenças ou arriscar-se à multa, que a fiscalização anda aí!), aqui fica a divulgação de um FreeWare fixolas que ajuda à coisa:

O Paint.Net!!!!



Trata-se de um freeware de edição de imagem que corre sobre o Windows. Como os senhores do Paint.Net apregoam, é intuitivo e relativamente fácil de usar.
É um pouco mais limitado que os softwares tradicionais, mas a vantagem deste tipo de software é que está sempre a sofrer melhorias, o que quer dizer que podemos sempre contar com mais uma versãozita que traz mais umas coisinhas com que podemos brincar.

Podem sacá-lo aqui.

Have fun ;)


Monday, November 26, 2007

Power Toys XP

Divulgou um colega uma pequena ferramenta, ou melhor, um conjunto de ferramentas que podem ser bastante úteis.

Tratam-se de ferramentas / brinquedos que trabalham em cima de aplicações já deployed.

Experimentei esta: Alt-Tab Replacement

E é engraçado! :) Trata-se de uma variante ao habitual alt-tab, mas com a particularidade de ver um screenshot da aplicação por onde 'passamos'.

A janela é qualquer coisa como isto (trata-se da janelita azul por cima do wexplorer):

Mas há mais!

Cá fica o link: http://www.microsoft.com/windowsxp/downloads/powertoys/xppowertoys.mspx

Tecniquem! ;)

Friday, July 27, 2007

SQL: Actualizar um campo do tipo Text ou NText

Um campo Text ou NText é tratado de forma um pouco diferente dos datatypes mais habituais do SQL (os int, varchar, char, etc...). Uma das diferenças é precisamente na forma como são feitas actualizaçãoes dos conteúdos de campos deste tipo.

O exemplo seguinte mostra um replace sobre um campo do tipo varchar:

create table #minhatabela (meucampo varchar(50))

insert #minhatabela values('meu teste')
select * from #minhatabela


update #minhatabela set meucampo = replace(meucampo, 'meu ', 'meu novo ')
select * from #minhatabela


drop table #minhatabela

No entanto, fazer a mesma coisa sobre um campo do tipo Text ou Ntext retorna um erro, como mostra o exemplo seguinte:

create table #minhatabela (meucampo text)

insert #minhatabela values('meu teste')
select * from #minhatabela

update #minhatabela set meucampo = replace(meucampo, 'meu ', 'meu novo ')
select * from #minhatabela

drop table #minhatabela

Este pequeno script SQL retorn o seguinte erro:

Msg 8116, Level 16, State 1, Line 6
Argument data type text is invalid for argument 1 of replace function.


Actualizar o campo do tipo Text ou NText

Então para actualizar um campo do tipo Text ou NText, é necessário utilizar um apontador para o campo a actualizar. Esse apontador deverá ser do tipo binary.
É ainda necessário identificar a posição a partir da qual se pretende actualizar.
Depois, identificando a tabela a actualizar, o apontador, a posição inicial, e o que se pretende fazer, utilizamos a instrução UPDATETEXT.

A instrução UPDATETEXT pode ser utilizada de diferentes formas: para inserir caracteres no inicio, no meio, no fim do campo, ou simplesmente para eliminar dados.

Segue-se um exemplo que inclui as diferentes utilizações da instrução UPDATETEXT:

create table #minhatabela (meucampo ntext)

insert #minhatabela values('bd')

DECLARE @ptrval binary(16), @i int

SELECT @ptrval = TEXTPTR(meucampo) FROM #minhatabela

-- Insere o caracter 'a' no inicio do conteudo do campo
UPDATETEXT #minhatabela.meucampo @ptrval 0 0 'a'
select * from #minhatabela

-- Insere o caracter 'c' no meio do conteudo do campo
UPDATETEXT #minhatabela.meucampo @ptrval 2 0 'c'
select * from #minhatabela

-- Insere o caracter 'e' no fim do conteudo do campo
set @i=(select DATALENGTH(meucampo) from #minhatabela)/2 -- Utilizar 2 apenas se se tratar de um campo do tipo NText (2 bytes/character)
UPDATETEXT #minhatabela.meucampo @ptrval @i 0 'e'
select * from #minhatabela

-- Elimina o primeiro caracter do conteudo do campo
UPDATETEXT #minhatabela.meucampo @ptrval 0 1
select * from #minhatabela

drop table #minhatabela

Length de campos Text ou NText

Apenas uma nota final. Mais uma das diferenças no tratamento deste tipo de datatypes é na utilização de instruções que permitam obter o tamanho do conteudo do campo. Usualmente é utilizada a instrução LEN, mas com campos do tipo Text e NText, a utilização desta instrução devolve um erro. Assim, a instrução a utilizar para obter o tamanho do conteúdo de um campo do tipo Text ou NText é a instrução DATALENGTH, de resto já utilizada nos exemplos acima.


E pronto! Estas foram algumas considerações sobre a manipulação de campos do tipo Text ou NText.
Um site que contém mais informação sobre a manipulação de campos deste tipo é este: http://msdn2.microsoft.com/en-us/library/aa175795(sql.80).aspx

Have fun! :)

Monday, June 4, 2007

DTS no SQL Server 2005

Para quem ainda não "domina" a construção de DTS com o SQL Server 2005, aqui ficam uns links que podem ser úteis.

Creating your first DTS Project:
http://www.extremeexperts.com/sql/Yukon/YukonDTS.aspx

Introduction to DTS in SQL Server 2005:
http://www.sqlservercentral.com/columnists/vkumar/introductiontodtsinsqlserver2005.asp

E já agora, por curiosidade...

O Yukon:
http://www.codeproject.com/useritems/Features_of_Yukon.asp

Divirtam-se! ;)