abril 27, 2006
null?
li aqui http://www.sqlmag.com/Article/ArticleID/49294/sql_server_49294.html (Designing for Performance: Null or Not Null?) um artigo sobre a definição de campos nullable / not nullable numa base de dados.
qual é a vossa regra principal na definição dos camops?:
1. - null
2. - not null => null is evil!
3. - who cares?
eu confesso que sempre olhei para o null como uma imperfeição, uma coisa com a qual tenho que viver porque os meus gestores de projecto / utilizadores / etc. nunca conseguem dizer claramente "este campo tem que estar sempre preenchido."
por isso os campos das minhas tabelas são quase sempre not nullable. e normalmente prefiro introduzir um valor de controlo em vez de usar o valor null.
mas depois de ler este artigo já não estou tão seguro da minha opção. realmente entre usar uma solução standard (null) para indicar que desconhecemos um valor ou usar uma string vazia ou um número ou data específica qual é a melhor solução?
algumas citações.
"Unknown is real; you work with unknowns everyday. You should be able to store unknowns in your databases."
"null means that some value is unknown, missing, or irrelevant"
"Null was created for a purpose: to express the unknown condition, wich can be entirely valid, depending on the cursumstances. ANSI has clearly advocated the use of NULL instead of other mechanisms such as codes or empty strings when appropriate."
Publicado por vitorsilva às 10:24 AM | Comentários (0)
abril 18, 2006
sqldiff
Free Database Compare
Detecta diferenças na estrutura da base de dados (campos, tabelas, views, etc.)
No entanto não detecta diferenças no conteúdo de storedproc ou funções.
De qualquer forma é melhor do que o que eu actualmente tinha que era nada…
Publicado por vitorsilva às 03:56 PM | Comentários (0)
abril 07, 2006
autorun.inf
quem diria que querer abrir uma página web quando se insere um cd seria algo tão complicado.
normalmente um autorun.inf será algo deste género:
[autorun]
open=ficheiro.exe
icon=Filename.ico
mas se, em vez de ficheiro.exe quisermos algo como index.htm então as coisas ficam mais complicadas.
poderia eventualmente optar por
open=start index.htm
mas, para além de abrir um command prompt, e uma vez que este procedimento (autorun.inf) corre não só em windows mas em todos os sistemas operativos, teriamos que ter a certeza que start é um comando válido em todos esses s.o.
felizmente que existe outra alternativa (que encontrei aqui)
[autorun]
shellexecute=index.htm
que no entanto só está disponivel para versões do windows a partir do windows 2000.
o que vale é que no meu caso isso é suficiente.
Publicado por vitorsilva às 03:31 PM | Comentários (0)
inno setup link list
Ferramentas
Inno Setup
ScriptMaker
Inno Setup Form Designer
Inno Setup Script Includes
Suporte
Web interface to jrsoftware.org newsgroups
ISX KB - Inno Setup Extensions Knowledge Base
Exemplos
Sample script to install Crystal Report 8 runtime files
Setting Environment Variables
How to create a ODBC DSN
KB Article: How to create a drive map using the network connection dialog box
Install Visual Basic 6.0 Applications
Install Visual C++ Run-Time Files
Accessing network share programmatically
create a custom "BrowseForFolder" form
How to replace a line in a text file
Publicado por vitorsilva às 12:19 PM | Comentários (0)
about open source
"freedom is created by whatever makes you free
and if your a developer what makes you free is access to source code
if your the end user of software and not the developer what sets you free is a choice of wich software you can use
and that comes about through open formats implemented with open source"
Publicado por vitorsilva às 11:14 AM | Comentários (0)
alguma coisa está a mudar
apple bootcamp
lets you install and run the Windows XP operating system on your Mac
microsoft port 25 (ms + linux)
e depois ainda temos o java vs c#
Publicado por vitorsilva às 11:11 AM | Comentários (0)
abril 03, 2006
ferramentas blog e não só
cocomment
When you comment somewhere, coComment keeps a copy of your message
in one central place.
You can display all comments you wrote accross the blogosphere on your own blog.
counter to your web page. Not only does it display the number of
visitors to your web site, it also keeps statistics on the number of
visits each hour and each day.
Publicado por vitorsilva às 12:14 PM | Comentários (0)
CMS
.Net
Lamp
já é antigo mas vale a pena ler este artigo sobre virtudes e defeitos dos projectos cms open source
Making a Better Open Source CMS
Publicado por vitorsilva às 11:27 AM | Comentários (0)
março 31, 2006
Configuração IIS SMTP
HOW TO: Configure a Remote Domain for an IIS 5.0 SMTP Mail Relay Server in Windows 2000 http://support.microsoft.com/default.aspx?scid=kb;en-us;310336&sd=tech XCON: How to Configure the IIS SMTP Service to Relay SMTP Mail (IIS 4) http://support.microsoft.com/default.aspx?scid=kb;en-us;230235Publicado por vitorsilva às 03:14 PM | Comentários (0)
março 29, 2006
Mashups
http://www.urinal.net/google_map.html
mapa com urinois dos states
http://developer.yahoo.com/maps/applications.html
http://www.programmableweb.com/api/NOAA
http://www.weather.gov/forecasts/xml/SOAP_server/ndfdXML.htm
http://www.geonames.org/servlet/geonames?q=4460-205&srv=100
http://www.geonames.org/maps/google_41.6166667_-6.6666667.html
http://albumart.org/
http://worldtrip.tv/themap/gmap.php
the geography of seinfeld
http://www.stolasgeospatial.com/seinfeld.htm
Barcelona Apartments on Google Earth Map
http://www.barcelonapoint.com/en/apartments_google_map/
http://hobbiton.thisside.net/advmap.html
http://api.evdb.com/
Publicado por vitorsilva às 10:13 AM | Comentários (0)
Sharepoint vs DotNetNuke
http://weblogs.asp.net/bsimser/archive/2006/01/31/437023.aspx
DotNetNuke vs. SharePoint, the big showdown
Publicado por vitorsilva às 09:50 AM | Comentários (0)
março 20, 2006
Remote Scripting - Uma introdução
Publicado originalmente em 21-mai-2001
Comecei a fazer este artigo tendo como objectivo explicar como ter 2 combos ligadas entre si sem ter necessidade de actualizar a página de cada vez que se seleccionar uma opção (ver artigo de João Vieira "Uso de 2 Combos Ligadas Entre Si"). Como o remote scripting se trata de uma tecnologia que é um pouco complicada de utilizar sem perceber minimamente o que está a acontecer tive que dividir essa explicação em 2 artigos. Assim, neste irei explicar o que é o remote scripting e como o por a funcionar e no próximo irei então demonstrar como ligar 2 combos.
Tanto refresh para nada
O meu trabalho normalmente não é desenvolver sites, mas sim aplicações para intranets que são utilizadas exaustivamente durante um dia inteiro de trabalho por várias pessoas. Neste tipo de ambiente, onde a rapidez de introdução de dados é importantíssima, não podemos pensar em obrigar as pessoas a esperar por um refresh só porque em vez de utilizar a selecção por defeito quiseram/tiveram que seleccionar outra opção. Eu precisava portanto de ter um mecanismo que me permitisse actualizar o conteúdo de uma página sem que nesse processo o utilizador perdesse o controlo da aplicação. A solução apareceu já há algum tempo (a primeira vez que a vi e experimentei foi com o aparecimento do Visual InterDev 6.0) e chama-se remote scripting. De uma forma muito sucinta o que esta tecnologia permite é que uma página possa sem ter que ser recarregada executar uma função que está noutra página e devolver os resultados à página inicial. Como certamente perceberão esta facilidade de comunicar com outras páginas abre imensas possibilidades mas deixo isso para outro eventual artigo - entretanto recomendo que vejam os links que estão no fim desta página para outros sites que falam sobre este tema.
Como por a funcionar
Depois de fazer o download dos ficheiros necessários e correr esse executável irá ficar com um conjunto de três ficheiros, o rs.asp, rs.htm e rsproxy.class e duas pastas que aconselho vivamente a dar uma vista de olhos docs e samples.Nos vossos projectos só irão precisar dos três ficheiros que referi, ou seja para poderem começar a utilizar o remote scripting basta simplesmente copiar esses ficheiros para dentro do vosso site. Como se tratam de ficheiros ASP e HTML poderão obviamente customizar o código origem de forma a criar novas funcionalidades. Para além disso o remote scripting é uma tecnologia cross-plataform já que funciona quer em Netscape quer em IE.Uma das vantagens do remote scripting é que não obriga a que a página que o utilizador está a ver (que pode ser uma página HTML) tenha que ser recarregada quando queremos actualizar o seu conteúdo. Isto acontece porque nessa página vamos passar a incluir um applet (rsproxy.class) cuja função é receber os pedidos da página que estamos a ver e reencaminhar esse pedido para a página ASP que está no servidor. Para conseguirmos uma comunicação efectiva entre as páginas HTML e ASP temos ainda que incluir na página HTML uma referência a uma biblioteca de funções que está em rs.htm, e na página ASP uma referência a rs.asp.

Imagem retirada do artigo "Remote Scripting" microsoft.public.scripting.remote RSO POST and Object Transfer Library Q284280 -INFO: Netscape 6 and Remote Scripting
Publicado por vitorsilva às 11:27 PM
| Comentários (0)
http://www.ning.com/ suponham que precisam de uma web-app, por exemplo mas nao querem estar a desenvolver nada de raiz.
Publicado por vitorsilva às 09:15 AM
| Comentários (0)
http://nhibernate.sourceforge.net/NHibernateEg/NHibernateEg.Tutorial1A.html
Publicado por vitorsilva às 10:34 AM
| Comentários (0)
Publicado por vitorsilva às 12:03 PM
| Comentários (3)
http://www.4guysfromrolla.com/webtech/063099-1.shtml http://www.sqlservercentral.com/columnists/hji/comparisonoforacledrivers.asp
Publicado por vitorsilva às 11:06 AM
| Comentários (4)
Windows Forms Object Data Binding in .NET 2.0 Windows Forms Data Binding and Objects Tackle Complex Data Binding with Windows Forms 2.0 ADO.NET for the Object-Oriented Programmer - Part One Object Binding Tips and Tricks Rocky Lhotka - Principal Technology Evangelist for Magenic Technologies
Publicado por vitorsilva às 06:42 PM
| Comentários (6)
Publicado por vitorsilva às 03:37 PM
| Comentários (6)
http://www.outlookexchange.com/articles/ricardosilva/
Publicado por vitorsilva às 06:23 PM
| Comentários (2)
Model, View, Presenter with ASP.NET 2.0
Publicado por vitorsilva às 02:42 PM
| Comentários (4)
http://www.santanadolivramento.com.br/cursos/2005vbnet/
Publicado por vitorsilva às 11:16 AM
| Comentários (3)
http://www.devx.com/codemag/Article/30468
Publicado por vitorsilva às 09:00 AM
| Comentários (2)
Publicado por vitorsilva às 12:15 PM
| Comentários (1)
Publicado por vitorsilva às 10:56 AM
| Comentários (3)
Durante a semana que passou estive a trabalhar com um installer chamado innosetup (http://www.jrsoftware.org/isinfo.php) usando o ide ScriptMaker (http://www.HiSoft2000.de/) Requisitos
<%@ LANGUAGE=VBSCRIPT %>
<% RSDispatch %>
<!--#INCLUDE FILE="_ScriptLibrary/rs.asp"-->
<SCRIPT RUNAT=SERVER Language=javascript>
function Description()
{
this.calcularSoma= calcularSoma;
}
public_description = new Description();
function calcularSoma(a, b)
{
return (Number(a)+Number(b))
}
function enviarErro()
{
var erro=new Error(1,"mensagem de erro")
return erro
}
</SCRIPT>
Exemplo página HTML
<HTML>
<HEAD>
<TITLE>Teste</TITLE>
<SCRIPT LANGUAGE="javascript">
function funcao1()
{
var aspObject = RSGetASPObject("remote.asp");
var a=aspObject.calcularSoma(1,2)
alert(a.return_value)
}
function funcao2()
{
var aspObject = RSGetASPObject("remote.asp");
var a=aspObject.enviarErro()
alert(a.data)
alert(a.return_value)
}
</SCRIPT>
</HEAD>
<BODY>
<script language="JavaScript" src="_ScriptLibrary/rs.htm"></script>
<script language="JavaScript">RSEnableRemoteScripting("_ScriptLibrary/");</script>
Na página HTML, para inicializar a ligação entre as duas páginas, é necessário incluir o ficheiro rs.htm. Se tiverem curiosidade e forem inspeccionar o interior desse ficheiro poderão ver que ele por sua vez chama o applet que tinha referido rsproxy.class.Depois é necessário chamar a função RSEnableRemoteScripting que recebe como parâmetro o directório onde está localizado o applet.A questão dos directórios, quer aqui quer no ficheiro ASP, é uma fonte de alguns problemas nos primeiros projectos já que normalmente esquecemo-nos ou enganamo-nos na path.E pronto está montada toda a estrutura para começar a utilizar o remote scripting. Parece um bocado complicado (eu também tentei esmiuçar ao máximo todos os pontos que poderão oferecer algumas dúvidas) mas, depois de utilizar uma ou duas vezes, esta parte deixa de oferecer qualquer problema.
Chamar funções remotas
Como se lembram temos um applet na nossa página que vai servir de intermediário entre a página HTML e a página ASP. A linha var aspObject = RSGetASPObject("remote.asp"); da função funcao1 não faz mais do que criar uma referência à página ASP que queremos utilizar como "fornecedora" de funções remotas. A partir daí podemos passar a chamar todas as funções que estão na página ASP através desse objecto (aspObject). Na linha var a=aspObject.calcularSoma(1,2) estamos a chamar a função calcularSoma(a,b) que estava na página ASP e a guardar o resultado dessa função numa outra variável (a)O resultado que aspObject retorna é uma simples string que contém XML. O facto de o resultado vir encapsulado em XML permite que strings, números e alguns objectos possam passar entre as páginas sem nenhum tipo de problema.Como já estarão a adivinhar para determinar o resultado basta aceder à propriedade return_value (a.return_value).No entanto em alguns casos é importante ter mais informação do que aquela que nos é fornecida por return_value, como por exemplo quando ocorre algum erro e portanto o resultado enviado é o objecto Error. Neste caso return_value iria entregar-nos algo como [Object] [object] o que não nos diz nada. Nestas alturas nada como recorrer à propriedade data (no nosso caso a.data) para tentar perceber o que aconteceu.
Outras possibilidades
Neste artigo pretendi dar a conhecer o básico do remote scripting. Se tiverem curiosidade e pesquisarem a documentação da Microsoft podem ver que há mais algumas coisas que se podem fazer (como chamadas assíncronas), bem como formas diferentes de fazer os exemplos que dei. Nos próximos artigos tentarei ir demonstrando mais algumas potencialidades desta tecnologia entretanto a minha sugestão é que experimentem o exemplo que apresentei neste artigo.
Newsgroups
Artigos
Putting Remote Scripting to Work
Remote scripting using a servlet : How to give Web applications interactivity and dynamism that you'd expect from desktop apps
Bridge the gap between client and server with remote scripting
Tecnologias relacionadas
Bugs
HOWTO: Display Error Messages From the Server When Remote Scripting
PRB: The Data Property of a Remote Scripting Object Is Empty with IIS 5.0 Server
PRB: ASP 0234 Error "Server side include directives may not be present in script blocks" with PageObject DTCmarço 17, 2006
Ning
Ning is the new free and easy way for you to create your own Social Web Apps - so let the fun begin!
- photosharing
- restaurant reviews
- etc...
pelo que percebi, registam-se no site, pedem para fazer uma copia dessa aplicação e podem começar a utilizar ou customizar.
parece interessantemarço 06, 2006
NHibernate Tutorial
NHibernateEg.Tutorial1Amarço 02, 2006
The 1995 SQL Reunion: People, Projects, and Politics
http://www.mcjones.org/System_R/SQL_Reunion_95/sqlr95.html
ODBC vs OLEDB
OLEDB For Me
Comparison of Oracle Drivers / OLE DB and ODBC: what is the differencemarço 01, 2006
Windows Forms Object Data Binding
fevereiro 22, 2006
Tools IIS
http://www.iistoolshed.com/tools.aspx
fevereiro 20, 2006
Outlook dev
MVC ASP
http://mikemason.ca/2006/02/15/fevereiro 16, 2006
Recursos Formação
Object vs Dataset
fevereiro 14, 2006
vmware
How to Increase your VMware Hard Disk
vmware-vdiskmanager.exe" -x 7GB "nome.vmdk"
depois no diskmanager da vm criar uma nova partição com o espaço extra
VB + Outlook - recolha inicial
Office Solutions Development > Outlook
Microsoft Outlook Development Technologies
Office Developer Center > Outlook
fevereiro 13, 2006
inno setup
embora a introdução do xcopy deployment nos tenha facilitado imenso a vida no que diz respeito aos desenvolvimento de pacotes de instalação, quando queremos fazer coisas menos triviais como mapear drives ou criar datasources odbc a complexidade começa a aumentar.
não tenho a certeza se aquilo que fiz com o innosetup era impossivel de fazer num deployment project vstudio mas posso dizer que encontrei bastante informação e exemplos suficientes para conseguir fazer um setup que ainda há uma semana atrás me faria ganhar cabelos brancos só de pensar nele...
como disse utilizei o scriptmaker para criar o programa de instalação. embora com alguns senãos ao nivel do interface, permite uma compreensão muito rapida das funcionalidades e não nos obriga a aprender a linguagem (markups e opções) do innosetup.
Exemplos
* definir qual a lingua utiliza no setup
[Languages]
Name: "pt"; MessagesFile: "compiler:Languages\Portuguese.isl"
* utilização de código e funções internas
[Files]
Source: {code:GetLocalizacaoMultiIni|''}; DestDir: {app}\sist\multi.ini; Flags: External; Check: CopiarMultiIni('')
{code:GetLocalizacaoMultiIni|''} => permite chamar uma função definida no bloco [code], o | serve para definir diferentes parametros. nota: neste caso vai parametro '' já que sempre que definir funções sem parametros de entrada recebia um erro do compilador.
{app} => função interna que devolve a path para o directorio onde vai ser instalada a aplicação. outras funções interessantes {src}, {tmp}
* mapear um drive
para fazer coisas menos normais podemos usar uma linguagem de programação baseada em pascal. desta forma podemos por exemplo chamar dlls do windows como neste caso
Function WNetConnectionDialog(hWnd: Integer; dwType: INTEGER): INTEGER; External 'WNetConnectionDialog@mpr.dll stdcall';
* odbc
o mesmo se aplica para o odbc, podemos "simplesmente" chamar o dialogo que o windows implementa
Function SQLConfigDataSource(hwndParent: LONGINT; fRequest: LONGINT;lpszDriver: String; lpszAttributes: STRING): LONGINT; External 'SQLConfigDataSource@ODBCCP32.DLL stdcall';
* criar variaveis de ambiente
o truque aqui é que uma variavel de ambiente é uma misera entrada no registry
Root: HKCU; Subkey: Environment; ValueType: String; ValueName: DLC; ValueData: {code:GetPastaDestinoProgress|''}; Flags: UnInsDeleteValue
* criar ecrans para ler valores do utilizador
por exemplo perguntar onde estão ficheiros necessários para a instalação
aqui as coisas começam a complicar ligeiramente. para facilitar já existem algumas funções internas como TInputQueryWizardPage (que permite definir caixas de texto para input de valores), TInputDirWizardPage (que permite definir caixas de texto com um botão browse à frente para procurar um ficheiro), etc.
temos assim que primeiro definir uma variavel para essa pagina.
Page_PerguntarDadosTerminal: TInputQueryWizardPage;
criar os conteudos dessa pagina
Page_PerguntarDadosTerminal := CreateInputQueryPage(wpWelcome,
'Indique o nome do terminal', 'Nome do terminal. Este nome ficará guardado no ficheiro multi.ini',
'Para continuar, clique Next.');
Page_PerguntarDadosTerminal.Add('Nome do Terminal:', false);
e depois ler esses dados
NomeTerminal := Page_PerguntarDadosTerminal.Values[0];
temos acesso aos dados de uma pagina usando algum dos eventos predefinidos NextButtonClick, BackButtonClick
Publicado por vitorsilva às 06:32 PM | Comentários (3)
fevereiro 03, 2006
Thread UI
Threads compared with processes
WinForms UI Thread Invokes: An In-Depth Review of Invoke/BeginInvoke/InvokeRequred
Creating Events and Delegates in VB.NET
Calling Your Main Thread from a Worker Thread in VB.NET
Publicado por vitorsilva às 04:24 PM | Comentários (0)
javascript cheat sheet
http://www.ilovejackdaniels.com/article/javascript-cheat-sheet/
Publicado por vitorsilva às 11:27 AM | Comentários (1)
waterfall
uau afinal o que aprendemos na escola ainda se aplica...
http://www.waterfall2006.com/
"After years of being disparaged by some in the software development community, the waterfall process is back with a vengeance. You've always known a good waterfall-based process is the right way to develop software projects"
Publicado por vitorsilva às 09:47 AM | Comentários (0)
OLDER ADULTS AND THE INTERNET
http://www.humanfactors.com/downloads/jan06.asp
Percent of adults of a given age who use the Internet (US)
- age 46-55 -- 86%
- age 56-65 -- 75%
- age 66+ -- 41%
- Older adults use the Internet for news, shopping, entertainment, and to keep in touch with friends and family.
- Common myths are:
- older users cannot learn to use the Internet
- old people don't use computer
- elderly people are "technophobes"
These are indeed stereotypes and are not accurate.
- There are reasons, however, why some older users don't use computers even more:
- lack of motivation or reason to use the computer
- lack of experience with current technology
- cognitive differences and age-related declines
- lack of knowledge of how to use the Web
- no access to a computer
- no understanding of what to do with the Web
==> Make sure users are motivated to use the product you are designing.
==> Be sure you know, and are not just guessing, what their motivation is.
Publicado por vitorsilva às 08:50 AM | Comentários (0)
fevereiro 02, 2006
Programming Microsoft Outlook with Visual Studio .NET
http://www.microeye.com/resources/res_tech_vsnet.htm
Publicado por vitorsilva às 06:16 PM | Comentários (5)
janeiro 30, 2006
ajax
http://prototype.conio.net/
http://script.aculo.us/
Publicado por vitorsilva às 12:27 PM | Comentários (1)
janeiro 20, 2006
Doing Objects in VB.NET and C#
http://terrysmith.net/software/dotnet_ebook/index.htmlPublicado por vitorsilva às 10:45 AM | Comentários (3)
janeiro 16, 2006
Pinhole
http://www.xs4all.nl/~wiskerke/html/diy.html
DIY for photography - links
Publicado por vitorsilva às 11:20 AM | Comentários (0)
janeiro 12, 2006
NHibernate e Winforms
http://forum.hibernate.org/viewtopic.php?t=951899
How to handle session in winforms?
http://forum.hibernate.org/viewtopic.php?t=952344&highlight=winform
Winform lazy loading with seperate data layer.
Publicado por vitorsilva às 02:48 PM | Comentários (3)
janeiro 10, 2006
C# Conversions - String To Enum Instance
http://www.cambiaresearch.com/cambia3/snippets/csharp/conversions/StringToEnumInstance.aspx
"How do I convert a string value of an Enum entry to a valid instance of the Enum?" (I answer this one below.)
"How can I get a valid Enum instance from its integer value." (Go here for the answer to that one.)
Publicado por vitorsilva às 06:07 PM | Comentários (5)
janeiro 09, 2006
The Piccolo-chat Archives
https://mailman.cs.umd.edu/pipermail/piccolo-chat/
Publicado por vitorsilva às 10:07 AM | Comentários (0)
janeiro 04, 2006
sql2005 express
http://www.databasejournal.com/features/mssql/article.php/3492296
Microsoft SQL Server Express 2005 (MSDE)
Publicado por vitorsilva às 03:57 PM | Comentários (1)
janeiro 03, 2006
IsNumeric vs TryParse
Which IsNumeric method should you use? Check this article out to find out!
http://aspalliance.com/80
Publicado por vitorsilva às 11:29 AM | Comentários (2)
janeiro 02, 2006
Creating Events and Delegates
http://www.informit.com/articles/printerfriendly.asp?p=23020&rl=1
Creating Events and Delegates in VB.NET
Publicado por vitorsilva às 10:59 PM | Comentários (2)
dezembro 30, 2005
MusicBrowser
definição
ferramentas + ideias
http://msdn.microsoft.com/coding4fun/xmlforfun/ITunesLib/default.aspx
Displaying Your iTunes Library
piccolo
Publicado por vitorsilva às 03:02 PM | Comentários (3)
dezembro 29, 2005
Martelada do Dia
http://www.thecodeproject.com/csharp/datagridsort.asp
Sorting DataGrid programmatically
a isto é que eu chamo uma martelada valente. invocar um método privado através de reflection...
também podia dizer que era muito pragmatico mas o mais provavel é que seja a problem waiting to happen... basta a ms alterar a definiação desse método.
Publicado por vitorsilva às 07:03 PM | Comentários (1)
bindable listview
A Bindable, Sortable, Autosizing ListView
Hibernate Querying 101 : tips and tricks
Hibernate Querying 102 : Criteria API
Publicado por vitorsilva às 06:58 PM | Comentários (0)
bindable listview
A Bindable, Sortable, Autosizing ListView
Hibernate Querying 101 : tips and tricks
Hibernate Querying 102 : Criteria API
Publicado por vitorsilva às 02:13 PM | Comentários (0)
dezembro 28, 2005
Force File Download
http://www.actionscript.org/forums/showthread.php3?s=&threadid=22107
http://support.microsoft.com/kb/q260519/
How To Raise a "File Download" Dialog Box for a Known MIME Type
http://aspfaq.com/show.asp?id=2161
How do I prompt a "Save As" dialog for an accepted mime type?
Publicado por vitorsilva às 12:16 AM | Comentários (4)
dezembro 26, 2005
programar depois dos 40
joelonsoftware
Most studies show that mental abilities continue to improve to at least 40 years old, if not later. You can see this in the chess masters. After 40, the effort required to beat the young pups does start to take its toll. In general however, after 40, then experience will let one coast, and run circles around the young pups coming up. The reason here is that we are talking about a product with no physical attributes. Hence, I don’t buy the age thing at all.
However, what I do buy is that things are a good deal more difficult today, then say 15 years ago. I used to know all of kinds of dbaseII/FoxPro developers back then (I was one too...but I also went to University and took computing science). It was real easy back then. Just design some files, and write some code. As soon as some server type software started being used, most of the dbaseX developers quit this profession, and moved on. In fact, a good many stopped when windows came along. Today for commercial applications you need to know sql,, sql-server, ADO record set objects etc etc. In other words, today you need to know *way* more, and have to master *way* more complicated technologies just to write software for a average business. In fact, you need to know more in general just to accomplish a simple task. Those dbaseII programmers did not have the ability, or did not want to make the effort to start learning new environments that were more complex. Fact is, that every 3, or 4 years you have to learn a new development environment. I guess some get comfortable with their current environment, and don’t have the desire to move on to the next environment. When that happens, it is time to leave.
Publicado por vitorsilva às 05:30 PM | Comentários (0)
html + css
http://positioniseverything.net/articles/onetruelayout/anyorder
Position is Everything
Publicado por vitorsilva às 11:07 AM | Comentários (1)
dezembro 16, 2005
The Open/Closed Principle
“Software entities (Classes, Modules, Functions, etc.) should be open for extension but closed for modification.”
http://www.objectmentor.com/resources/articles/ocp.pdf
heurístico
adj.,
relativo à heurística;
designativo do processo pedagógico que leva o aluno a descobrir a verdade, por si próprio
Publicado por vitorsilva às 07:04 PM | Comentários (0)
dezembro 13, 2005
Cross-process Communication
Publicado por vitorsilva às 09:24 PM | Comentários (0)
UI Thread
Maintaining a Responsive UI
(inclui exemplo em vb.net)
Publicado por vitorsilva às 07:28 PM | Comentários (0)
dezembro 12, 2005
AndAlso
Why did we introduce AndAlso and OrElse?
Publicado por vitorsilva às 06:41 PM | Comentários (2)
Atributos
http://www.csharp-station.com/Tutorial.aspx c# tutorial http://www.ondotnet.com/pub/a/dotnet/excerpt/prog_csharp_ch18/ Programming C#: Attributes and ReflectionPublicado por vitorsilva às 12:26 PM | Comentários (5)
dezembro 08, 2005
Diversos SQL
Tips for Reducing SQL Server Deadlocks
Indexed Views in SQL Server 2000
Publicado por vitorsilva às 06:43 PM | Comentários (3)
Diversos .Net
Managing Offline Clients with the Smart Client Offline Application Block
PRB: "Mscoree.dll Could Not Be Found" Error Message When You Try to Run a .NET Executable File
PRB: "Requested Registry Access Is Not Allowed" Error Message When ASP.NET Application Tries to Write New EventSource in the EventLog
INFO: Develop Microsoft Office solutions with Visual Studio .NET
Tailor Your DataGrid Apps Using Table Style and Custom Column Style Objects
How to avoid common mistakes when you create distributable run-time applications
How to print the content of a RichTextBox by using Microsoft Visual Basic .NET
Getting WYSIWYG Print Results from a .NET RichTextBox
Publicado por vitorsilva às 06:42 PM | Comentários (0)
Office Automation
INFO: Writing Automation Clients for Multiple Office Versions
How to obtain the window handle for an Office Automation server by using Visual Basic .NET
Office application does not quit after automation from Visual Studio .NET client
INFO: Troubleshooting Error 429 When Automating Office Applications
How to find and use Office object model documentation
PRB: GetObject or GetActiveObject Cannot Find a Running Office Application
PRB: Office 97 Automation Client Fails After Re-compilation with Office 2000 or Later Type Library
INFO: Use DISPID Binding to Automate Office Applications Whenever Possible
INFO: Using Early Binding and Late Binding in Automation
How To Use Visual Basic .NET for Binding for Office Automation Servers
Sample Code to Retrieve the Name of the Active Printer
Working with the Office XP Primary Interop Assemblies
Microsoft Office Development with Visual Studio
Publicado por vitorsilva às 06:40 PM | Comentários (0)
Excel Automation
Transfer dataset to an array and then write the dataset to an excel
How to transfer data to an Excel workbook by using Visual Basic .NET
Publicado por vitorsilva às 06:37 PM | Comentários (2)
Access Automation
How To Automate Microsoft Access From Visual Basic .NET
BUG: Error Message 2046 Calling OpenForm or OpenReport with Access Automation
ACC2000: Access 2000 Unexpectedly Quits When You Run Code to Open an Object
ACC: How to Use Automation to Print Microsoft Access Reports
ACC: Using Microsoft Access as an Automation Server
HOW TO: Print a Particular Instance of a Report in Access 2002
Difference Between Connection and AccessConnection Properties
How to bind Microsoft Access forms to ADO recordsets
MOD2000: Mlang.dll Is Unregistered When Access 2000 Run-Time Is Removed
Access 2000 Run-Time Minimum now available for download
MOD2000: Access 2000 Run-Time Component Is Significantly Larger Than Access 97 Run-Time Component
MOD2000: You Cannot Install an Access Run-Time Application on Terminal Server
ACC97: Differences Between Retail and Run-Time Microsoft Access
How to dynamically set the input parameters of a report at run time in an ADP
ACC2000: Error Message or Empty Field List in an Access Project with a Form or a Report Based on a Stored Procedure
ACC2000: Cannot Open Report in a Microsoft Access Project
How to programmatically change the connection of a Microsoft Access project
How To Use a SQL Server 7.0 Distributed Query with a Linked Server to Secured Access Databases
PRB: Need to Map to Default Admin Account and Use NULL for Password In Order to Query Linked Server to Access
Database
Publicado por vitorsilva às 06:37 PM | Comentários (0)
Word Automation
BUG: Starting Word Manually Uses Same Instance as Automation
How to automate Word from Visual Basic .NET to create a new document
INFO: ActivePrinter Property in Word Sets System Default Printer
Publicado por vitorsilva às 06:34 PM | Comentários (0)
webbrowser object
Trying to revoke a drop target that has not been registered with TWebBrowser
to print url/html file using IE browser
WD2000: Word Quits with Document in WebBrowser Control
How To Use the WebBrowser Control to Open an Office Document in Visual Basic .NET
How To Print Contents of the Web Browser Control From VB
INFO: Properties Not Applicable to the WebBrowser Control
Publicado por vitorsilva às 06:33 PM | Comentários (0)
dezembro 06, 2005
Hibernate
Hibernate 3 FormulasChapter 15. Mapping Examples
Object to Relational Mapping and Relationships with Hibernate
NHibernate - Part 2
NHibernate: set v.s.
IList IList
Iesi.Collections.Iset (from the Iesi.Collections.dll assembly in the \bin folder of the NH distribution) IDictionary
Publicado por vitorsilva às 03:58 PM | Comentários (0)
novembro 28, 2005
SSW Rules to Better Windows Forms Applications
http://www.ssw.com.au/ssw/Standards/Rules/RulesToBetterWindowsForms.aspx#XPThemes
Publicado por vitorsilva às 06:23 PM | Comentários (0)
NUnit + AppSettings
http://weblogs.asp.net/psperanza/archive/2004/02/24/79596.aspx
Publicado por vitorsilva às 11:13 AM | Comentários (0)
novembro 24, 2005
OR Map compare
Choosing an object-relational mapping tool
Publicado por vitorsilva às 04:41 PM | Comentários (0)
sql server + xp sp2
How to configure Windows XP Service Pack 2 (SP2) for use with SQL Server
Publicado por vitorsilva às 08:48 AM | Comentários (3)
novembro 23, 2005
Introducing Client Application Deployment with
Introducing Client Application Deployment with "ClickOnce"
Building Smart Client using .NET
Capture all of the forms of a .net Desktop application
How to: Implement a Plug-In Component Architecture using Reflection
Using Reflection.Assembly to Load Forms from a Table
Publicado por vitorsilva às 02:13 PM | Comentários (0)
novembro 22, 2005
nHibernate
NHibernate Presentation inclui exemplo com agregaçãoPublicado por vitorsilva às 06:07 PM | Comentários (0)
UI
Comparing the Timer Classes in the .NET Framework Class Library
Give Your .NET-based Application a Fast and Responsive UI with Multiple Threads
Publicado por vitorsilva às 02:52 PM | Comentários (4)
novembro 18, 2005
Runy on Rails
é realmente lindo!
Rolling with Ruby on Rails
Rolling with Ruby on Rails, Part 2
MVC: The Most Vexing Conundrum
Publicado por vitorsilva às 06:42 PM | Comentários (0)
Agile
"Rather than shrink from change, Agile organizations harness or embrace change by being better than
competitors at responding to changing conditions and by creating change that competitors can’t respond to
adequately. However, companies must determine what level of agility they require to remain competitive.
Agility is only an advantage relative to competitors—a copper mining company doesn’t need to be as agile
as a biotechnology firm"
Highsmith, J. 2002. Agile Software Development Ecosystems. Addison Wesley
Publicado por vitorsilva às 02:12 PM | Comentários (0)
Callback
.NET Delegates: Modern-Day Callback Methods
.NET Framework Developer's Guide - Asynchronous Design Pattern Overview
Publicado por vitorsilva às 12:33 PM | Comentários (0)
novembro 14, 2005
Fit: Framework for Integrated Test
Fit: Framework for Integrated Test

A beginners guide to Dependy Injection
Publicado por vitorsilva às 04:25 PM | Comentários (0)
novembro 10, 2005
Stored Proc vs Parameterized Queries... again...
The Trouble With Databases -You Must be This Tall to Ride
Publicado por vitorsilva às 03:45 PM | Comentários (0)
novembro 09, 2005
Installer
How To Register COM Objects in Visual Studio .NET
Publicado por vitorsilva às 03:21 PM | Comentários (0)
novembro 07, 2005
.Net Deployment
Deploying ASP.NET Applications - Part 1
Deploying ASP.NET Applications - Part 2
Using Visual Studio .NET to Redistribute the .NET Framework
Deploying Windows Applications with Visual Studio.NET, Part 2
Windows Applications with Visual Studio.NET, Part 1
Creating a Windows Installer Package
http://www.c-sharpcorner.com/Code/2003/April/SetupProjects.asp
Sams Teach Yourself Visual Studio .NET 2003 in 21 Days
Publicado por vitorsilva às 03:14 PM | Comentários (5)
outubro 27, 2005
notas moodle
confirmar permissões no iis => check permissions / inherit
veririfcar no php.ini => cgi.fix_pathinfo=1
Publicado por vitorsilva às 03:44 PM | Comentários (0)
outubro 26, 2005
call .net from vb6
Using the .NET Framework Class Library from VB6
NET and VB6 COM Interoperability Basics
Publicado por vitorsilva às 11:51 AM | Comentários (0)
C# vs VB.Net - performance
What are the advantages of C# over VB.NET and vice versa?
Both have access to the same framework libraries. Both will perform largely equivalently (with a few small differences which are unlikely to affect most people, assuming VB.NET is used with Option Strict on)
The .NET Language Paradigm
Now hitting on some touchy issues, many developers believe that VB.NET is slower then C#. That’s not entirely true. The only place I see VB.NET slower than C# is where developers use old-style functions like Len and Mid instead of calling reciprocal methods available within the .NET Framework library classes and as mentioned by Heath Stewart (see post below) using old syntax like FunctionName = ReturnValue.
What is this .NET all about ?
.NET framework comes with a single class library. And thats all programmers need to learn!! Whether they write the code in C# or VB.NET or J#, it doesn't matter, you just use the .NET class library. There is no classes specific to any language. There is nothing more you can do in a language, which you can't do in any other .NET language. You can write code in C# or VB.NET with the same number of lines of code, same performance and same efficiency, because eveyone uses same .NET class library.
Publicado por vitorsilva às 08:54 AM | Comentários (0)
outubro 13, 2005
windows vista icons
Windows Vista Guidelines
What is a Windows Vista icon?
High-resolution icons from Windows Vista
A Gooey GUI for Windows Vista
Windows Vista user interface guidelines
Your home for skins, wallpapers, themes, icons and everything you need to customize your PC
Publicado por vitorsilva às 02:41 PM | Comentários (0)
outubro 10, 2005
o fim do office? o da microsoft claro
Sun Microsystems and Google announced a multiyear partnership on Tuesday to help spread and develop each other's software, a deal that includes OpenOffice.org, Java and OpenSolaris from Sun, and Google's Toolbar.
Publicado por vitorsilva às 06:50 PM | Comentários (0)
Diversos
Binding Business Objects to WinForms
Part I: Unifying Web and Windows Form design and layout
Patterns
Relatório Final de TRABALHO FINAL DE CURSO do Curso de LICENCIATURA EM ENGENHARIA INFORMÁTICA E DE COMPUTADORES (LEIC) - Ano Lectivo 2004 / 2005
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/highperfmanagedapps.asp
Publicado por vitorsilva às 06:46 PM | Comentários (3)
outubro 07, 2005
Smart Clients
Managing Offline Clients with the Smart Client Offline Application Block
Smart Client Application Model and the .NET Framework 1.1
Publicado por vitorsilva às 11:07 AM | Comentários (2)
outubro 06, 2005
SOA 101
J2EE vs .Net: The choice depends on your needs
Software object reuse has never really lived up to the hype. There are a lot of reasons, but one of the biggest is that objects live on platforms that change too quickly. When the platform changes, the objects written on that platform have to change too. Companies spend more time upgrading their toolbox of objects than reusing them.
Enter Web services -- the concept is to build an application, not as a monolithic system, but as an aggregation of smaller systems that form a community, not unlike the human body with organs or cells that specialize but work together toward a common purpose. In this model, you reuse entire systems, not just the objects that compose them. Because systems have a longer lifetime than any particular object model, you get more return on your investment.
Publicado por vitorsilva às 06:45 PM | Comentários (0)
User Interface Design for Programmers
User Interface Design for Programmers, By Joel Spolsky
Publicado por vitorsilva às 05:11 PM | Comentários (4)
outubro 04, 2005
Programming language
Lectures in the History of Computing
Mother Tongues of Computer Languages
history of programming languages concepts
History of Programming Languages
A Brief History of Programming Languages
The History of Computer Programming Languages
How Object-Oriented Programming Started
Functional Programming Languages
Why I am called "the Father of Visual Basic"
Publicado por vitorsilva às 05:57 PM | Comentários (6)
Paging Infragistics Webgrid
HOWTO:How can I use custom paging to create a "First", "Prev", "Next", "Last" style pager?
Publicado por vitorsilva às 10:13 AM | Comentários (2)
What Is Web 2.0
What Is Web 2.0 - Design Patterns and Business Models for the Next Generation of Software
Publicado por vitorsilva às 08:58 AM | Comentários (5)
setembro 30, 2005
Color Schemer Online
Color Schemer Online
Enter an RGB or HEX value, or click on the Color Palette below
Publicado por vitorsilva às 05:40 PM | Comentários (0)
setembro 28, 2005
usability when use enter tab
Re: Keyboard navigation- outstanding issues
Keyboard navigation- outstanding issues
Usability Techniques - Notes on Moving from a Character Cell to GUI
The Why of the New UI (Part 1)
Publicado por vitorsilva às 08:16 PM | Comentários (0)
setembro 26, 2005
webbrowser control
WebBrowser Control Internet Development Index
HOW TO: Modify the AuthPersistence Metabase Entry Controls When Clients Are Authenticated
How To Use WebBrowser HEADERS Param in Navigate Method
How to: Webbrowser NewWindow and Navigating equivalent to axWebbrowser
Example code for embedding a web browser control
Re: WebBrowser doesn't pass cookies to popup!
I built a VB6.0 application which uses Microsoft's WebBrowser control. Whenever a Javascript window.open was called from a secure page, the new page opened an instance of IE on the client machine. This new browser would no longer have the Session state and variables stored of the WebBrowser's session. However, by having my app create a new VB form with its own WebBrowser control, the new WebBrowser could be set to open the new page and maintain session state.
How to use the WebBrowser control NewWindow2 event in Visual Basic .NET
Mastering Internet Explorer: Using the Web Browser Control
Publicado por vitorsilva às 02:59 PM | Comentários (0)
setembro 23, 2005
Clássico
Publicado por vitorsilva às 02:12 PM | Comentários (0)
setembro 22, 2005
NHibernate 1.0-rc1
NHibernate 1.0-rc1 was released today, along with the same version of NHibernateContrib. What does this mean? We ported almost all of the features of Hibernate 2.1 and now we are going to stabilize NHibernate to make the 1.0 release. From this point on we will focus on fixing any remaining bugs in NHibernate and adding some small enhancements that will make NHibernate easier to use on .NET.
http://wiki.nhibernate.org/pages/viewpage.action?pageId=697
Publicado por vitorsilva às 08:59 AM | Comentários (0)
setembro 21, 2005
global vs local variable
Global Variables on a VB.NET Web Page
"...Microsoft, in its' wisdom, has made it easier for VB developers to migrate by automatically translating the "Dim" syntax, when used at class level, to "Private" without even telling you. As you can see, I'm not all that thrilled about it, as it doesn't help the VB developer to move forward, but instead makes it seem somewhat confusing. In other words, "Dim" is not meaningful at the class level. It isn't an accessibility modifier, but the compiler will fix it for you without you know what it is doing or why."
Publicado por vitorsilva às 10:37 AM | Comentários (2)
2h00 crystal
voltando a este post sobre o crystal reports, finalmente resolvi o problema.
o meu problema era que componentes crystal instalar num servidor de um cliente de forma a não o obrigar a comprar uma licença crystal. isto é possivel na medida em que as licenças são para desenvolvimento podendo os runtimes serem distribuidos como parte de uma instalação.
à partida seria só instalar o crystal server (client components) mas pelos vistos essa instalação não está completa exigindo a posterior instalação de um "merge module"
Crystal Reports Merge Modules
"Server Installation packages are used in the deployment of thin client web applications and provide the necessary runtime for Crystal Reports .NET applications and can be run directly on the server.
While you can use the merge modules to create a deployment package for the web it is recommended that you use the server install packages."
a dúvida que surgiu é que durante a instalação desse merge module, é pedido um product id, que não é o serial que vem com o cd do crystal mas sim o que aparece no visual studio em Help / About / Installed Products.
Publicado por vitorsilva às 09:26 AM | Comentários (0)
IIS virtual directory
já há muito que não tinha que andar a mexer em configurações do iis.
hoje tive que criar uma virtual directory... nada de excepcional. como diziam as instruções
criar alias : imag
Directory: caminho das imagens p.ex \\10.1.2.2\Multi\imag
User Name and Password (só tem este passo se as imagens estejam noutro servidor) p.ex U:Administrator e P:********
Access Permissions : deixar ficar as aoresentadas por defeito
Se ao seleccionar o nó imag agora criado, aceder à directoria especeficada, é pq tudo foi criado correctamente.
tudo muito acessivel não fosse o caso de eu conseguir aceder ao outro servidor sem precisar de password e o iis obrigar a por uma password... o que escrever? experimentamos logins conhecidos e nada... andamos um bocado às voltas até que chegamos a uma conclusão, não sei se é por estar a aceder a um servidor unix via samba ou se é assim para todos mas aqui fica:
NOTA: caso não haja username/password basta por um espaço na caixa do username
Publicado por vitorsilva às 09:18 AM | Comentários (5)
setembro 19, 2005
+crystal
Crystal Reports XI and Visual Studio.NET Application Deployment
Crystal Reports XI for Visual Studio .NET Server Install - English
Err Msg: 'Failed to load database information' in VS.NET application
The Crystal Reports for Visual Studio .NET merge modules install Msvcp60.dll into the 'C:\Program Files\Common Files\Crystal Decisions\2.0\bin\' folder. By placing the Msvcp60.dll into the Windows system path the issue is resolved.
Err Msg: "Failed to load database information" when using classic ADO recordset
To resolve this error message, copy the file Msvcp60.dll from the development computer to the System32 folder on the client computer.
Publicado por vitorsilva às 05:57 PM | Comentários (0)
setembro 17, 2005
Infragisitcs
FAQ: BC30009: Reference required to assembly 'Infragistics.WebUI.Shared' containing the implemented interface 'Infragistics.Shared.IUltraLicensedComponent'. Add one to your project.
Publicado por vitorsilva às 04:38 PM | Comentários (0)
setembro 13, 2005
Log4Net
Using Apache's log4net in ASP.NET
4 Tips for using Log4NET's ADONetAppender in ASP.NET
Using log4net
Publicado por vitorsilva às 10:47 AM | Comentários (0)
setembro 09, 2005
How do I setup Visual Studio .NET and Internet Explorer for client side debugging?
Solution
Perform the following steps to setup Visual Studio .NET (VS) and Internet Explorer (IE) for client side debugging:
- In IE select Tools, Internet Options, Advanced, and turn OFF the option Disable Script Debugging so that it is unchecked.
- Open the VS project that you wish to debug.
- Press F5 to begin debugging.
- Once the aspx page appears inside IE, switch back to the debugger.
- Click on the Debug menu and select Windows, Running Documents From the list of displayed running documents, select and open the file containing the JavaScript you wish to debug.
- In the JavaScript file go to the function(s) that you wish to debug and set breakpoints on them.
- Switch back to the browser and perform actions that invoke the breakpoints. The debugger will break at the lines of code you have marked.
(Infragistics Help Collection)
Publicado por vitorsilva às 03:40 PM | Comentários (0)
setembro 08, 2005
Crystal Reports
como queria disponibilizar aspxs com acesso a objectos do crystal instalei o crystal server mas qualquer tentativa para imprimir ou exportar o relatório (que aparecia no browser) resultava num erro do tipo "Invalid export.dll" when exporting from a .NET application"
Err Msg: "Invalid export.dll" when exporting from a .NET application
Cannot print or export a report from Web Forms Viewer in Visual Studio .NET
entretanto um colega meu que tinha instalado tudo (server e client) não tinha problemas nehuns a imprimir/exportar reports via web. para além disso li em alguns posts que para fazer o deploy de aplicações web crystal era necessário uma versão actualizada.
decidi-em então a instalar o crystal e depois removê-lo.
et voilá, ao contrario do que esperariamos (ou não) o crystal deixa ficar uns restos que nos resolvem o problema.
afinal foi sol de pouca dura... mais ou menos uma hora para ser mais preciso... passado esse tempo voltou a dar o mesmo erro, resta-me instalar de novo o crystal client e quando tiver mais tempo procurar uma solução efectiva.
Err Msg: "Load Report Failed" when using an untyped report component in .NET
Binding Reports to Web Forms Viewers
Publicado por vitorsilva às 03:53 PM | Comentários (5)
setembro 06, 2005
crystal activex viewer
Can you use the ActiveX viewer in an ASP.NET web application?
No, the ActiveX viewer cannot be used in an ASP.NET web application.
The ActiveX viewer is only available for ASP applications because of a supporting file called Rptserver.asp. The Rrptserver.asp file acts as a "bridge" to communicate between the client-side ActiveX viewer with the server side engine. However, this "bridge" is not available for ASP.NET web applications.
Publicado por vitorsilva às 02:30 PM | Comentários (0)
setembro 01, 2005
postback
http://www.xefteri.com/articles/show.cfm?id=18
How postback works in ASP.NET
http://msdn2.microsoft.com/library/ms178207(en-us,vs.80).aspx
How to: Add Client Script Dynamically to ASP.NET Web Pages
http://www.syncfusion.com/FAQ/aspnet/WEB_c15c.aspx
client side scripting
Publicado por vitorsilva às 06:50 PM | Comentários (2)
Infragistics
http://devcenter.infragistics.com/Support/KnowledgeBaseArticle.Aspx?ArticleID=7386
HOWTO:How do I deploy an ASP.NET application for NetAdvantage 2005
Publicado por vitorsilva às 02:42 PM | Comentários (1)
agosto 29, 2005
Nant + asp.net
http://www.codeproject.com/dotnet/LittlePrettyAutomatic.asp
Some little utility tasks for NAnt
http://www.c-sharpcorner.com/Code/2004/April/XSlTransformerMG.asp
Transforming Visual Studio .NET Projects into NANT files using XSLT and .NET
Publicado por vitorsilva às 11:17 AM | Comentários (9)
agosto 26, 2005
OO Reference
The Object-Oriented Thought Process
Moving from Procedural to Object-Oriented Development
The Object-Oriented Thought Process
Thinking in Objects
Furthering the Object-Oriented Mindset
Exploring Encapsulation
Hiding Data within Object-Oriented Programming
Protecting Data through Object Oriented Programming
Putting an Object in a Safe State
The Components of a Class
The Evolution of Object-Oriented Languages
Object Responsibility
Object Construction
Inside Constructors
Encapsulation vs. Inheritance
Publicado por vitorsilva às 05:01 PM | Comentários (0)
Example Centric Programming
http://alarmingdevelopment.org/index.php?p=5
Compared to every other field of design and engineering, programming is an embarrassment and a failure. The "software crisis" has dogged us from almost the beginning. We who have made programming our life will no longer tolerate this.
Usability is the guiding light to rationally reinvent programming from scratch.
Publicado por vitorsilva às 03:49 PM | Comentários (4)
agosto 05, 2005
UML Products by Company
http://www.objectsbydesign.com/tools/umltools_byCompany.html
Publicado por vitorsilva às 06:47 PM
compile .net command prompt
Three easy methods for compiling your ASP.NET components
ASP.NET 2.0 Deployment Without Source Code
Pre-Compile ASPX pages in .NET 1.1
Publicado por vitorsilva às 05:15 PM
julho 27, 2005
UI
Evolving the UI
Back to Java, Introducing TFUI
Test First User Interfaces
Publicado por vitorsilva às 02:28 PM
Padrões
- Exploring the Observer Design Pattern
- Exploring the Singleton Design Pattern
- Exploring the Factory Design Pattern
- The Design Patterns Java Companion
- Design Patterns In Java
- Introduction To Design Patterns
- Software Design Patterns - Design Pattern Code Library
- Guidelines, Patterns, and code for end-to-end Java applications.
- Pattern Catalog
Publicado por vitorsilva às 11:20 AM
julho 26, 2005
extensibilidade
Designing an Extensible DAL
artigo interessante.
genericamente mostra o que temos que fazer para suportar 2 (ou n) tipos de acesso a dados.
LiveCode.NET
Compile C# code on-the-fly. Usage in a plug-in / plug-out component model.
Creating an Extensible User Interface with .NET, Part 1
An architecture for extending the User Interface of a program via plug-in components.
Publicado por vitorsilva às 06:55 PM
Easy UI Testing
Isolate Your UI Code Before It Invades Your Business Layer
Publicado por vitorsilva às 04:10 PM
julho 23, 2005
A low-level Look at the ASP.NET Architecture
A low-level Look at the ASP.NET Architecture
Publicado por vitorsilva às 08:46 AM
julho 18, 2005
asp.net intro
http://www.w3schools.com/aspnet/
http://www.learnasp.com/freebook/learn/
http://www.asp.net/Tutorials/quickstart.aspx
http://aspnet.4guysfromrolla.com/articles/040502-1.aspx
An Extensive Examination of the DataGrid Web Control: Part 1
Publicado por vitorsilva às 10:47 AM
julho 11, 2005
VB.NET and C# Comparison
This is a quick reference guide to highlight some key syntactical differences between VB.NETand C#.
Publicado por vitorsilva às 05:16 PM
gráficos
Piccolo.NET
A revolutionary way to create robust, full-featured graphical applications in Java and C#, with striking visual effects such as zooming, animation and multiple representations.
FreeBSD License
Publicado por vitorsilva às 11:40 AM
+links
XML-RPC / SOAP
XSL to map XMLRPC to SOAP
XML-RPC vs. SOAP
Build your own Web Service with PHP and XML-RPC
SOAP needs soap
WebServices
More advanced interoperability demo using NuSoap: consume a .NET web service
WinForms
Painting in the MDI Client Area - Find and respond to messages sent to the MDIClient area in .NET Forms.
Enumerating Windows - Find all Windows and their details using the EnumWindows calls
NET Outlook Style ListBar Control
An outlook styled sidebar control
Diversos
AbstractVB
Doing Objects in VB.NET and C#
How To Validate an XML Document by Using DTD, XDR, or XSD in Visual C# .NET
Using FreeTextBox with a database...
Sockets
Using Sockets in PHP
Writing Socket Servers in PHP
RFID
http://del.icio.us/rpiquepa/RFID
Rfid Buzz
Publicado por vitorsilva às 11:37 AM
julho 04, 2005
classico user interface
Pie Menu
pie menus
Why pie menus aren't ubiquitous?
Scrolling Pie Menus - mac os x implementation
Pie Menus on Mac OS X
Pie Menu Behaviour Test
JavaScript PieMenus
A very unconventional yet extremely efficient approach to context menus.
A Quiz Designed to Give You Fitts
+UI
GUI Research. is it still being done?
The Anti-Mac Interface
phisical devices
tangible media group - mit media lab
Phidgets are an easy to use set of building blocks for low cost sensing and control from your PC
Phidhets USA
coding4fun: some assembly required
Publicado por vitorsilva às 06:05 PM
julho 01, 2005
crystal reports
- Sample code for logging on to Crystal .NET subreports using C#
- How to pass Database logon info to a Crystal Report at runtime in VB.NET
- Passing SQL logon information to a report and subreport in VB .NET
- Working with ASP.NET and Crystal Reports 9 with or without RAS 9
Publicado por vitorsilva às 03:22 PM
xmlrpc
- Simple cross-platform distributed computing, based on the standards of the Internet
- XML-RPC.NET
- History Lesson: XML-RPC vs SOAP (Part I)
- XML-RPC HOWTO
Publicado por vitorsilva às 02:23 PM
junho 28, 2005
packet sniffer
- WinPcap: the Free Packet Capture Library for Windows
- Ethereal - The world's most popular network protocol analyzer
- Designing Capture Filters for Ethereal
- Top Ten Ethereal Tips and Tricks
- [Ethereal-users] How to capture on localhost
- How To Install Microsoft Loopback Adapter in Windows 2000
Publicado por vitorsilva às 11:32 AM
junho 09, 2005
nant
A Brief Introduction to NAnt
Open Source .NET Development: ASpell.NET Case Study
Transforming Visual Studio .NET Projects into NANT files using XSLT and .NET
http://iceglue.com/tranqy/deliciousnet.txt
Publicado por vitorsilva às 04:25 PM
VS.NET Deployment Project Version Updater
http://www.codeproject.com/dotnet/VersionVDProj.asp
A command line ulitity that updates the version and GUID of VS.NET deployment project files.
Publicado por vitorsilva às 12:11 PM
junho 07, 2005
DotMSN
http://www.xihsolutions.net/dotmsn/index.html
DotMSN is an open-source stand-alone class library to provide connectivity with the MSN Messenger service. The library is built in C# and can therefore be used by all languages the .NET environment supports. Because of a clean natural Object-Oriented approach the library is easy to use and implement. DotMSN is designed to be a flexible, robust and lightweight enhancement to any application. Applications of DotMSN vary from creating messaging robots to creating custom clients. If your application needs to communicate through the messenger service, DotMSN is your tool.
Publicado por vitorsilva às 11:30 AM
junho 06, 2005
outros links
http://www.alphaworks.ibm.com/webservices
http://msdn.microsoft.com/msdnmag/issues/05/06/UnitTesting/default.aspx
http://www.testdriven.com/modules/news/
Publicado por vitorsilva às 08:48 AM
junho 03, 2005
georeferenciação em portugal
http://www.infoportugal.pt/ => o maior produtor de conteúdos georeferenciados em Portugal (dizem no site deles)
Fazem produção de dados e desenvolvem software para exploração desses dados (essencialmente web e movel)
Tipos de dados
uma coisa que eu não sabia é que há uma diferença entre simples dados cartográficos e dados cartográficos para navegação.
Tipo de informação
2 tipos de dados. Só a indicação de um ponto de interesse (local + nome) ou informação mais detalhada com descrição e imagens.
Licenciamento dos dados
Depende se são em formato aberto ou encriptado
Produtos já desenvolvidos
http://www.mapadventure.com.pt/
http://www.cityhelp-pda.com/
Publicado por vitorsilva às 12:08 PM
junho 02, 2005
pda/gps
====================
Blog
====================
http://wirelessdev.weblogsinc.com/
the wireless development weblog
====================
Desenvolvimento
====================
http://www.gpsdotnet.com
Unlimited redistribution for unlimited applications - No royalties
1 Developer License $153.00
1 Subscription License $219.99
--------------------------------------
gps toolkit.net
http://www.scientificcomponent.com/gps_toolkit_net.htm
Allows you to playback NMEA 0183 log files in various speeds, including real-time playback.
Can be redistributed to your customers royalty-free as part of your application
250$
não suporta pocket pc
--------------------------------------
GpsGate
http://franson.com/
====================
Aplicações
====================
Destinator 3 Iberia para Pocket PC €160,65EUR
http://www.destinatoreurope.com/en/index.php?id=030402
destinator europe sdk
--------------------------------------
http://www.directions.ltd.uk/moreinfo.php?id=1080
InfoMap Navigator 4.3 Plus Europe - DVD
embedded points of interest (POI)
====================
Mapas
====================
Digital map material for navigation is presently offered by two leading market providers: NAVTEQ and Tele Atlas
http://www.esri-portugal.pt/homepage/homepage_entry.aspx
====================
Review
====================
http://www.the-gadgeteer.com/destinator-proclip-review.html
Gadgeteer Hands On Review : Destinator Personal Navigation System for Pocket PC (Installed in Vehicle with ProClip System)
====================
Info
====================
While NMEA-0183 is now accepted as a common industry protocol for GPS data, there are features in GPS devices which cannot be used without switching to data protocols other than NMEA. For example, waypoint, route and track log information within Garmin® GPS devices can only be accessed via the Garmin binary protocol.
====================
georeferencia portugal
====================
http://www.itinerarium.net/Default.aspx
http://www.igeoe.pt/geoesig/geoesig.asp
====================
outros
====================
http://www.aximsite.com/reviews/index.php?qid=227&frommostrecent=yes
GPSGate
--------------------------------------
http://www.pocketpcmag.com/awards/category_2004.asp?catid=223#GPSUtilities
best software awards 2004: GPS Nominations
--------------------------------------
http://www.programmersheaven.com/2/Work-Together-With-Other-GPS-Software
Don't hog the GPS - How to make your application work together with other GPS software
..................................................
http://www-128.ibm.com/developerworks/power/library/pa-chipschall3.html?ca=dgr-lnxw961GPSChallenge
The developerWorks Power Architecture challenge: I spy with my little eye
What if you could add a GPS chip to anything?
Publicado por vitorsilva às 11:19 AM
junho 01, 2005
timeout period elapsed prior to obtaining a connection from the pool
- Thread: Can't anyone help me with this? - "..timeout period elapsed prior to obtaining a connection from the pool..."
- ADO.NET The misunderstood "Connection Lifetime" managed pooler connection string keyword.
- Connection Pooling for the .NET Framework Data Provider for SQL Server
- PRB: "Timeout expired" error message when you run a Visual Studio .NET 2003 application
- Programming the Thread Pool in the .NET Framework
Publicado por vitorsilva às 10:12 PM
maio 18, 2005
open source
Maguma Open Studio - windows-only PHP IDE.
Nvu - Complete Web Authoring System for Linux Desktop users as well as Microsoft.
pormenor irritante => reformata o html que escrevemos.
GIMP is the GNU Image Manipulation Program
inkscape - SVG editor
outro
PhpUnit - unit testing framework for PHP
Publicado por vitorsilva às 07:07 PM
maio 17, 2005
Misc
http://c2.com/cgi/wiki?DesignPatternsBook
Notas sobre escrita de textos na área de Sistemas de Computação na língua de Camões
Publicado por vitorsilva às 03:22 PM
win32 / subclassing / window
- Configuration FAQ
- win32 error codes
- http://www.vb-helper.com/index_vbnet.html
- Finding path from Window Handle
- hardcore visual basic
- More About Handles and Process IDs
- Subclassing in .NET - The pure .NET way
- NativeWindow Class
- win32 programming
- I am using VB.net and would like to display a different application on the VB form as a child form
- Loading Classes On the Fly
Publicado por vitorsilva às 03:21 PM
Escolas
- Departamento de Electrónica e Telecomunicações - Universidade de Aveiro
- Departamento de Informática - Escola de Engenharia - Universidade do Minho
- Departamento de Engenharia Electrotécnica e de Computadores - Faculdade de Engenharia da Universidade do Porto
Publicado por vitorsilva às 03:19 PM
maio 16, 2005
PHP + WebServices
Make a SOAP client using PHP and NuSoap.
MetaCollection of CGI and PHP script archives and link directories
ONLamp.com_ A PHP Web Services Client
PHPBuilder.com, the best resource for PHP tutorials, templates, PHP manuals, content management systems, scripts, classes and more.
The Code Project - Member Logon - Free Source Code and Tutorials
Web Services _ SOAP Debugger
webservices.xml.com_ A Web Services Primer
Publicado por vitorsilva às 11:53 AM
maio 02, 2005
SqlConfigDataSource
- Adding datasource ( DSN )
- How to make/edit DSN in code (API)
- SQLConfigDataSource Function
- How To Create ODBC Data Sources Using SqlConfigDataSource
- How to use SQLConfigDataSource to create an Access system DSN
- ACC2000: How to Use SQLConfigDataSource to Create an Access System DSN
- How To Create and Remove a DSN in Visual Basic
- http://support.microsoft.com/default.aspx?scid=kb;en-us;Q184608
Publicado por vitorsilva às 05:06 PM
abril 26, 2005
Windows Messages
- How Do I Do It In VB.NET??
- RegisterClassEx Reference in C#, VB.NET and VB6
- How To Hook Into a Window's Messages Using AddressOf
- HOWTO: Subclass a UserControl
- http://www.webtropy.com/articles/art9-1.asp?f=RegisterClassEx
- Platform Invoke Data Types
- FormatMessage Shortcut for Win32 Error Codes
- wcex should only be a ref parameter if WNDCLASSEX is defined as a value type (struct)
- About Window Classes
- Control.WndProc Method
- Trapping windows messages
- Capturing Window Controls and Modifying their properties
- API hooking revealed
Publicado por vitorsilva às 08:55 AM
abril 22, 2005
levantamento inicial
objectivo: desenvolver uma aplicação que controle outra.
- ambas têm ui => não estamos a dizer por exemplo para uma aplicação controlar um servidor.
- queremos que a aplicação controlada pareça uma janela da aplicação principal (tipo mdi).
- queremos abrir uma janela da aplicação controlada a partir de um evento da aplicação principal, por exemplo seleccionar uma opção de um menu e abrir a aplicação controlada num determinado estado.
- queremos restringir algumas acções na janela da aplicação controlada (controlar o tamanho, local onde pode estar a janela, etc.)
- a aplicação que queremos correr por sua vez corre dentro de uma espécie de runtime, ou seja corremos o runtime com determinados parametros para abrir a nossa aplicação no sitio que queremos.
- não convém estar sempre a correr o runtime por causa do tempo inicial de carregamento.
- a aplicação que vai correr dentro da janela controlada necessita de ter carregada um conjunto de informações globais que demoram algum tempo a carregar pelo que não podemos estar sempre a iniciar essa aplicação, temos que carregar essas informações uma vez e depois aproveitar essa sessão.
opções existentes para comunicação entre processos:
- let the apps communicate over a socket (not very efficient, but pretty easy to do)
- use a named pipe (in windows NT, at least - Linux too, I think)
- if the processes are windows, you can use SendMessage (in the Win32 API), assuming you can get each window's handle (via FindWindow or somesuch)
- use a memory-mapped file
- use a normal file, with some manner of locking (exclusive writes, for example)
a solução escolhida é o runtime que lança as janelas que queremos controlar correr inicialmente um socket server que fica à escuta de pedidos da aplicação principal e inicia os programas que nós pedimos. desta forma ultrapassamos a questão de correr várias vezes o runtime (que corre só uma vez) bem como de correr várias vezes o código que carrega as informações globais (que ficando integrado no socket server corre também só uma vez). isto resolve-nos o problema de enviar pedidos de uma aplicação para outra.
como não é a aplicação principal a iniciar esses programas (que têm janelas próprias) não conseguimos controlar directamente as suas janelas por isso temos que usar a Win32 API para fazer essa gestão de janelas.
- a opção de ficheiros (seja memory-mapped ou ficheiros normais) poderia ser interessante se quisessemos trocar dados entre as aplicações, mas no nosso caso a informação que passa entre aplicações são simples pedidos e indicação de sucesso desses pedidos.
- não explorei a opção named pipes
outros links
http://www.codeproject.com/csharp/DotNetNamedPipesPart2.asp
http://www.error-bank.com/microsoft.public.dotnet.languages.vb.1/193496_Thread.aspx
Publicado por vitorsilva às 08:49 AM
abril 20, 2005
permissões asp.net iis sql
Authentication in ASP.NET: .NET Security Guidance
Internet Information Services 5.0 Authentication Methods
ASP.NET Data Flow
INFO: ASP.NET Security Overview
Authentication methods for connections to SQL Server in Active Server Pages
Q306158 INFO: Implementing Impersonation in an ASP.NET Application
Q307002 PRB: ASP/ODBC/SQL Server Error 0x80040E4D "Login Failed for User '(Null)'"
Q253500 PRB: "Client Unable to Establish Connection" Error Message When Connecting from ASP to SQL Server
Q306586 PRB: Troubleshooting Error 80004005 "Login Failed" in ASP
Q306518 INFO: Troubleshooting Guide for 80004005 Errors in Active Server Pages and Microsoft Data Access Components
How to use Trusted Connection when SQL server and web Server are on two separate machines
Publicado por vitorsilva às 06:02 PM
abril 19, 2005
historia do computador / software
History of Internet and WWW: The Roads and Crossroads of Internet History
http://www.computerhistory.org/
http://www.softwarehistory.org/
the history of computing project
The History of Computer Programming Languages
Computer Languages History
Publicado por vitorsilva às 11:51 PM
Hello World
programado em mais de 30 linguagens de programação e afins
A "hello world" program is a computer program that prints out "Hello, world!" on a display device.
It is used in many introductory tutorials for teaching a programming language and many students use it as their first programming experience in a language.
http://encyclopedia.laborlawtalk.com/ Hello_world_program
e ainda Esoteric programming languages
Publicado por vitorsilva às 02:22 PM
windows handles
Effect of Hyperthreading on a Thread Object for Windows Animation - Paul Milenkovic
Version 2.0 of theForger's Win32 API Tutorial
Coupling a window handle with a data object
A window hook is a method that allows interception of Win32 API actions. These can be used for monitoring actions inside the OS and even change the input or output for API functions
Make a form with a fixed aspect ratio in VB .NET
Adding real Win32 tooltips for windowless controls
Inter process communication using registered messages from Visual Basic
Registering and using a new window class
Capturing Window Controls and Modifying their properties
Coupling a window handle with a data object
Publicado por vitorsilva às 02:20 PM
abril 18, 2005
user32.dll
Implementing Callback Functions
Exemplo EnumWindows
The secret life of GetWindowText
"GetWindowText() cannot retrieve text from a window from another application."
Tutorial: Capturing and Running IE Instances in a Windows control
Working with Win32 API in .NET
Get Current Window Handle and Caption With Windows API In C#
Difference between WM_GETTEXT and GetWindowText?
Question: What is the difference between sending message WM_GETTEXT and calling GetWindowText()?
Answer: You can send WM_GETTEXTLENGTH and WM_GETTEXT message even across processes. GetWindowText takes shortcuts, it tries to directly pass a WM_GETTEXT message to the target windows window function instead of using SendMessage. That does not work across process boundaries.
Enumerating and Restoring Windows Using Callbacks
EnumWindows and EnumChildWindows Callbacks
Publicado por vitorsilva às 06:59 PM
abril 15, 2005
Open Sores® Software Development
http://j-walk.com/other/ossw/
When I started Open Sores® Software Development, I had a dream. A dream to build the most successful software company in the World. That was six years ago. Today, I'm pleased to report that OSSD is well on its way to attaining that dream. We have customers in five of the 50 states, and we'll soon be visiting Canada to try to drum up some business with those poutine-eating Canucks.
Our staff is comprised of some of the tallest programmers in the industry, and I'm proud to say that we run a 100% union shop. No scab laborers, and very few illegal immigrants.
At Open Sores®, you'll appreciate what you don't get: No contracts. No EULAs. No upgrades. No Service Packs. No lawyers. No DOT-NET. No Web Services. No XML. No crap.
We do business the old-fashioned way -- with a firm handshake over a couple of beers. And we almost always pay for the beers. Our guarantee: If you're not 100% satisfied with the results, you reserve the right to file a suit in small claims court.*
* No refunds on the free beer.
Publicado por vitorsilva às 10:03 AM
abril 13, 2005
diversos
HTTP Pocket Reference - HTTP Transactions
A basic Particles System
Introduction to the basic idea of the particles systems, and how to create basic effects such as explosions and water fountains
I/O Ports Uncensored Part 2 - Controlling LCDs (Liquid Crystal Displays) and VFDs (Vacuum Fluorescent Displays) with Parallel Port
Controlling LCDs (Liquid Crystal Displays) and VFDs (Vacuum Fluorescent Displays) with Parallel Port
Progress Socket Programming
This session covers TCP/IP and Socket basics, provides information on how TCP sockets are implemented in Progress 4GL, and shows how to write TCP/IP clients and servers using sockets.
Summer Technical Institute 2001
Progress External Program Interfaces
Publicado por vitorsilva às 03:46 PM
abril 12, 2005
Diversos
Making Code Coverage more palatable with NCoverViewer and NCoverBrowser
NCover tutorial
Naming, Coding, and Commenting Conventions
.NET Programming Standards and Naming Conventions - Common .NET Naming Conventions
HOW TO: Secure an ASP.NET Application by Using Windows Security
Binding a DataGrid to a Collection by Ulrich Sprick
HOWTO: implement IBindingList in Winforms
progress links
http://www.icewalkers.com/opd/Computers/Software/Databases/Progress/
forum progress
Web based applications development progress
Publicado por vitorsilva às 04:19 PM
abril 07, 2005
XPathDocument vs XMLDocument
More Information on the XPathDocument/XmlDocument Change in Whidbey beta 2
XmlDocument and XPathDocument
Use XPathDocument instead of XMLDocument when doing XSLT to significantly boost peformance.
Publicado por vitorsilva às 11:53 AM
abril 05, 2005
história do teclado
entre outras coisas porque razão temos que usar o tipico teclado qwerty
http://www.tifaq.org/articles/keyboard_tyranny-feb98-jay_hersh.html
http://www.xpertkeyboard.com/index.htm
http://inventors.about.com/library/inventors/blcomputer_keyboard.htm
http://www.compcamps.com/camps2004/jschmidt/keyboardinfo.html
http://njnj.essortment.com/keyboardhisto_rdqo.htm
http://www.museudocomputador.com.br/enciteclado.php
Publicado por vitorsilva às 12:49 AM
abril 01, 2005
ui
para ler quando tiver tempo
UI Articles
UI Patterns
Publicado por vitorsilva às 08:52 AM
easter egg
pelos vistos alguém gastou 5 minutos a escrever uma linha de código que faz com que quando um grupo de utilizadores do windows tem mais de 500 utilizadores o icon que o representa passa de um boneco normal para um boneco com cabelo branco... isto é que é sentido de humor
Publicado por vitorsilva às 08:34 AM
março 31, 2005
mysql 5.0.3 beta
finalmente suporte para stored procedures, triggers, e views. (http://www.infoworld.com/article/05/03/30/HNmysqlupgrade_1.html?source=NLC-TB2005-03-30)
depois da integridade referencial finalmente olho para o mysql como A base de dados.
Referential Integrity in MySQL
Mental Note
ALTER TABLE udphdr TYPE=InnoDB;
Publicado por vitorsilva às 08:52 AM
março 30, 2005
instalações mysql+php
E ontem perdi uma tarde inteira às voltas com o php e mysql.
Primeiro tentei instalar o php5 e configurá-lo para usar as extensões isapi.
A meio do processo fiquei ainda a saber que o php5 não vem com as definições para o mysql já incluidas.
Finalmente precisava que o site que estava a correr no meu pc conseguisse aceder a um servidor linux onde estava a base de dados mysql.
Já para o fim da tarde cheguei à conclusão que:
O servidor tnha php4 logo se queria um servidor de teste (neste caso o meu pc) com as configurações o mais perto possiveis do servidor então mais valia instalar também o php4;
O servidor está atrás de um firewall e não permite, mesmo através da rede interna, que o meu pc aceda à base de dados do servidor de teste.
Vai daí instalo o mysql no meu pc, copio a base de dados o servidor para o meu pc e actualizo a password que tinha definido para o utilizador que estou a usar no mysql do meu pc.
Ajudas preciosas nestes artigos:
MySQL Tutorial - Import or Export A Database
A.2.3. Client does not support authentication protocol
Publicado por vitorsilva às 10:03 AM
março 20, 2005
Code as Design
Li a semana passada o artigo de 1992 Code as Design de Jack W. Reeves.
Na altura em que foi publicado este artigo ainda nem sequer tinha entrado na faculdade, mas 3/4 anos mais tarde, nas disciplinas de sistemas de informação, ainda nos tentavam impingir a ideia de que seguindo metodologias de desenvolvimento rigidas (no meu caso o SSADM) que nos obrigava a produzir (quase) obrigatoriamente documentos, diagramas e outras tralhas no fim poderiamos entregar isso a uns programadores (tipo escravos) e, como que por magia, pouco tempo depois teriamos um produto (neste caso um software) de acordo com o pretendido. se isso não acontecesse a resposta era fácil... a análise tinha sido mal feita. nunca me explicaram que um cliente muda de ideias durante o desenvolvimento, que normalmente não consegue explicar aquilo que pretende que um software faça, ou pior não sabe o que o software pode fazer por ele.
Este artigo, velho de 13 anos, vinha questionar essa ideia da análise/levantamento de requisitos como fase estanque do desenvolvimento ou pelo menos como algo que pode ser feito por alguém que depois não tem um acompanhamento próximo do projecto na fase de codificação do mesmo.
a ideia geral, pareceu-me, parte do seguinte principio, o produto que queremos desenvolver é um sistema de informação que (pelo menos por enquanto) tem que ser desenvolvido numa linguagem de programação. ou seja programar é algo a que não vamos poder fugir. não diz para deitar fora todas as ferramentas de análise que foram desenvolvidas ao longo dos tempos ou que 5 minutos depois da reunião com o cliente nos sentemos em frente ao computador e comecemos a programar. simplesmente constata que qualquer que seja o percurso, no fim terá que se programar.
mais do que isso, assume a programação como uma parte "criativa" do processo de desenvolvimento. criativa no sentido de que involve pensar num problema, encontrar uma solução razoável e implementá-la. não é um simples olhar para especificações definidas pelo consultor xpto e mecânicamente convertê-lo num pedaço de código.
Publicado por vitorsilva às 10:37 PM
uma semana a nhibernar
passei a ultima semana a desenvolver um projecto onde utilizei pela primeira vez o nhibernate. socorri-me de alguns artigos interessantes que me ajudaram a ter uma ideia geral do que é o nhibernate e de que forma poderia integrar essa tecnologia fantastica.
mas como é costume os artigos ficam sempre um bocadinho aquém daquilo que realmente precisamos...
um dos problemas tem a ver com a base de dados utilizada... já sei que hoje em dia ninguém usa o access para fazer apliacações a sério mas no meu caso não tive escolha, é access e ponto final... e claro... o nhibernate não se dá muito bem com o access, aliás não se dá nada bem. por isso temos que contornar o problema dizendo ao nhibernate que estamos a usar uma versão do sqlserver mas na realidade definir uma connection string que aponte para um ficheiro access. para além disso tudo o que seja relações 1-n com mais do que um nível é para esquecer. por exemplo supondo que temos uma estrutura do tipo grupo->utilizadores->moradas não podemos definir todas estas relações no nhibernate, teremos que seleccionar só uma.
ainda em relação ao access, como não suporta a sintaxe do sqlserver @@identity, podemos esquecer a utilização de autonumbers.
outra questão é que o projecto que estou a desenvolver é em winforms... e claro 99,99% dos exemplos é orientado para web... nesse tipo de projectos não há muito que pensar em relação a ligações a bases de dado, é ligar e desligar o mais rapidamente possivel todos os acessos que tivermos que fazer a ela, o mesmo se passando com o nhibernate, basicamente teriamos nhibernate.session.open e no fim session.close. tratando-se de winforms, embora o principio se aplique mais ou menos, levanta-se a questão da utilização do método close ou disconnect... em principio o disconnect será mais vantajoso mas também implica um bocado mais de código já que a partir do momento em que fazemos disconnect de um objecto, os outros objectos associados (normalmente coleções referentes a tabelas relacionadas) deixam de estar disponiveis e lá se vai o lazy loading.
Publicado por vitorsilva às 10:10 PM
março 17, 2005
Threads e Windows Services .Net
Calling Your Main Thread from a Worker Thread in VB.NET
Use a Delegate for CallBack In Place of RaiseEvents
Creating a Windows Service using VB.NET Part-I
Windows Services: New Base Classes in .NET Make Writing a Windows Service Easy
Creating a Windows Service in VB.NET
Publicado por vitorsilva às 12:19 PM
DataGrid .Net
Setting DataGrid Styles for Custom Types
To see which MappingName does DataGrid expect use the following code:
Sorting DataGrid programmatically
DataGridTableStyle.MappingName Property
Publicado por vitorsilva às 12:18 PM
Mais NHibernate
hibernate session.close vs session.disconnect
Mapping objet/relationnel pour .NET
Better, Faster, Lighter Programming in .NET and Java
Simplify Java Object Persistence with Hibernate
NHibernate loading lazy collections
Publicado por vitorsilva às 12:16 PM
março 10, 2005
NHibernate
Hibernate Reference Documentation
NHibernate Reference Documentation
Relacionado com NHibernate
Using log4net
Implementing the Equals Method
Common Object Operations in .NET
Visual Basic .NET for Beginners | Serialization ... What is it?
Outros
BlogMap - a place where blogs meet maps and location!
Publicado por vitorsilva às 11:12 AM
março 08, 2005
o/r mapping
POCO Persistence - What is it? And why should I care?
How NHibernate Performs Database Operations
Comparing NPersist To NHibernate
Does NHibernate support MS-Access database?
Retrieve Data using NHibernate
NHibernate in real world applications
Publicado por vitorsilva às 09:51 AM
março 04, 2005
subversion
Hoje tirei a manhã para instalar e configurar o subversion que, para quem não conhece, é uma alternativa opensource ao visual source safe, cvs, entre outros.
Se, como eu, tens um ambiente de trabalho windows então vale a pena ter por perto também o tortoiseSVN que integra o subversion com o windows explorer e o AnkhSVN que integra com o vstudio.
Segui como base de trabalho, para além da documentação do snv (subversion) e do tsvn (tortoisesvn), esta série de artigos interessantes How to setup a .net development tree.
Como é uma excelente base de trabalho vou só apontar as dúvidas mesmo usando estes guias.
duvida1 - um repositorio vs vários repositorios: Subversion: One Repository or Two?
duvida2 - se instalaram o tsvn, depois de criarem o repositorio vão querer logo começar a usar a integração com o windows explorer (ou não?) mas calma porque só depois de fazer um checkin + checkout de um projecto é que começam a ter acesso a todas as opções que aparecem aqui
duvida3 - no fim da parte 3 do artigo de mike roberts ele diz "Once the intial checkin is complete I'm going to delete my 'sycamore' folder and then checkout from Subversion the folder we just imported to get a local versioned folder" tudo muito bem tirando o facto de não exemplificar como podemos fazer isso... supondo que todos sabemos eliminar uma pasta falta-nos o código para obtermos uma cópia controlada pelo subversion (checkou). pegando no exemplo dele seria algo como
c:\devel\sycamore>svn co file:///c:/svn-repos/sycamore/trunk c:\devel\sycamore
mentalnote1 - este processo de para podermos começar a utilizar o controlo de versões termos primeiro que fazer checkin, apagar a pasta e depois fazer checkout faz-me um bocado de confusão... será que não há nenhum comando que faça isso tudo de uma só vez? ainda não procurei mas se/quando encontrar, digo qualquer coisa.
duvida4 - ainda na parte 3 e continuando no estilo descubra-você-mesmo da opção checkout, ele fala-nos da opção svn:ignore. se já tiverem instalado o tsvn, essa opção aparece nas propriedades da pasta num tab novo chamado suversion. em baixo podem adicionar novas propriedades entre as quais aparece a referida svn:ignore.
bem, e agora vou ver se ponho o nant a correr.
outros links
HOW-TO: Subversion on Windows
Subversion on Windows quick start
Publicado por vitorsilva às 12:48 PM
março 03, 2005
Passeio diário
Source Control with Subversion on Windows
What Great .NET Developers Ought To Know (More .NET Interview Questions)
NUnitForms is an NUnit extension for unit and acceptance testing of Windows Forms applications.
More Maverick.NET Comments
Publicado por vitorsilva às 04:21 PM
eval - lembrete
a propósito de uma duvida que apareceu aqui http://groups.yahoo.com/group/PontoNetPT/message/15266?threaded=1
Build a Custom .NET "EVAL" Provider
An Eval Function for C# using JScript.NET (JavaScript)
Publicado por vitorsilva às 02:38 PM
free flash php files
News, info, tutorial, resource from the Flash and PHP world
http://www.sephiroth.it/
até eu que não percebo nada de flash consigo usar alguns exemplos que estão neste site.
Publicado por vitorsilva às 10:19 AM
.net codesource
keypad .net
keypad jscript
type-ahead select
http://www.jsmadeeasy.com/javascripts/Password%20Protection/keypad/index.htm
gráficos
Publicado por vitorsilva às 10:15 AM
março 02, 2005
Passeio Diario
15 Seconds : Using Open Source .NET Tools for Sophisticated Builds
This a community of developers and tech-freak bloggers, mainly from Spain
SCRUM is an Agile Software Development Process
Using NAnt to Build .NET Projects
Build Tools for .NET Applications
GotDotNet User Sample: .NET SDC Solution Build & Deployment Process & Tools
Publicado por vitorsilva às 06:09 PM
outubro 25, 2004
passeio diario
ASP.NET - Usando segurança baseada em formulários
Providing a Richer Means for Entering Text Data
ASP.Net Remote Scripting
Publicado por vitorsilva às 10:03 PM
outubro 19, 2004
passeio diário
File Upload with ASP.NET
An Extensive Examination of the DataGrid Web Control
Adding a New Record to the DataGrid
Posting form data from ASP.NET page to another URL
Building a DataGrid with Add and Edit Features
ASP.NET DataGrid Paging Part 2 - Custom Paging
Publicado por vitorsilva às 11:08 PM
setembro 19, 2004
Passeio Diário
unit testing in .net
Simplified Database Unit testing using Enterprise Services
Developing Automated Tests Using NUnit and VB.NET
Smooth unit testing with NUnit and VB.NET
Test-Driven Development in .NET
Publicado por vitorsilva às 08:47 PM
setembro 17, 2004
fonte-maravilha
o sonho de qualquer webdesigner (e já agora de qualquer webprogrammer) usar a fonte que se quer sem ter que se preocupar com o facto de o utilizador a ter instalada no sistema.
ainda não testei mas está na minha lista de prioridades
Introducing sIFR: The Healthy Alternative to Browser Text
sIFR 2.0b: Come Kick the Tires
Publicado por vitorsilva às 06:38 PM
desenvolvimento / politica / recursos humanos
an agile approach to a legacy system
interessante abordagem ao tema reconversão de sistemas antigos.
Para além de descrever o cenário habitual de aplicações monstruosas com centenas de tabelas, sem que ninguém conheça o seu funcionamento, aquilo que mais me interessou foi a forma como encaram o processo de desenvolvimento como algo quase político ou de lobbying com toda a equipa a comungar das mesmas ideias e forma de as concretizar e a transmitir essa informação aos utilizadores finais, inicialmente de uma forma subversiva ou hipotética e depois concretizando o que os utilizadores estavam à espera.
algumas citações:
"... Always ask the user what the problem is..."
"... Incrementally build trust - prove that you can do the hardest part of the system..."
"... Treat politics as a user requirement..."
"... Engage users and they not only won't turn it off, they will fight some of the battles for you..."
já agora só para acrescentar que na minha opinião todos estes postulados são válidos para projectos de raiz.
Publicado por vitorsilva às 10:16 AM
setembro 16, 2004
Passeio Diário
INFO: Roadmap for Windows Forms Data Binding
Complex Data Binding a collection implementing IBindingList and ITypedList
HOWTO: implement IBindingList in Winforms
Martin Fowler's Bliki
A cross between a blog and wiki of my partly-formed ideas on software development
Programming with the Exception Management Application Block in .NET
Performance Comparison: Data Access Techniques
Building Distributed Applications with Microsoft .NET
Logging Block Design
Programming with the Exception Management Application Block in .NET
Publicado por vitorsilva às 07:21 PM
setembro 04, 2004
Passeio Diário
Windows Forms FAQ. Questions & Answers
Blog
The Science of Word Recognition
Publicado por vitorsilva às 10:15 AM
agosto 30, 2004
Passeio Diário
How do I print a DataSet in VB.NET?
How to sum the fields in a Windows Forms DataGrid control and then display the calculated totals in a footer by using Visual Basic .NET
Improving Typed DataSets
DataColumn.Expression Property
Gets or sets the expression used to filter rows, calculate the values in a column, or create an aggregate column.
Blog: The Cerebral Kitchen
Working with embedded resource in dot net assembly.
Drawing Functions in VB.NET
Embed bitmap, text, and other resource files in a compiled application and use them in VB .NET
Embedding Icons In Your VB.NET Application
Microsoft .NET Framework Resource Basics
Publicado por vitorsilva às 12:15 PM
agosto 20, 2004
Passeio Diário
A Simple Business Rules Manager
Validator Controls for Windows Forms
The Power of Print
Generating Reports in the .NET Framework
Best Practices for Windows Forms Applications
Compile Options, Loading Images into PictureBoxes, Deploying .NET Apps, and More
Navigate the .NET Framework and Your Projects with "My"
Windows Forms Community site
Microsoft .NET Framework version 1.1 Setup.exe Bootstrapper Sample
.Net Programming Links
Operações de Data Binding em aplicações Windows Forms
ErrorProvider, HelpProvider e ToolTip
Publicado por vitorsilva às 06:25 PM
abril 22, 2004
scrollbars
de entre os diferentes componentes de interface este deve ter sido aquele que mais irritou os designers que se aventuraram na produção de interfaces. Por um lado era bastante intrusivo já que, no caso do html, estava sempre presente no browser, e por outro lado, nesse mesmo ambiente html, era (e em grande parte continua a ser) pouco costumizável naquilo que, infelizmente, muitas vezes é o principal objectivo do designer: a estética.
felizmente outras alternativas surgiram, como o controlo via programação do scroll, ou a criação de componentes flash que simulam o comportamento da scrollbar.
Pareceria portanto que o problema estava resolvido e não haveria mais nada a dizer... mas vamos dar uma olhada ao requisitos base das scrollbars e como foram implementados por 2 sistemas operativos bastante representativos: windows e mac.
objectivo
o scrolling existe para permitir, a um utilizador, ver partes de um determinado objecto que não cabem na janela actual e por isso não estão totalmente visiveis num dado momento.
caracteristicas
- scroll arrow;
- scroll box (win) / scroller (mac);
- scroll bar shaft (win) / scroll track (mac osx) ou gray area (mac os7).
![]() | ![]() |
| Mac | Win |
funcionalidades
- indicação do local onde estamos no documento - a posição da scroll box indica em que posição estamos no documento; quanto mais acima estiver a scroll box mais perto do inicio do documento estamos;
- mover conteudo uma linha(1) de cada vez - as scroll arrows (ou as setas do teclado, ou em alguns ratos com scroll) permitem mover um documento na direcção da seta uma linha a cada clique;
- mover conteudo uma página(2) de cada vez - o clique na scroll bar shaft (ou teclas page up/page down, ou em alguns ratos com scroll) permite mover rapidamente o documento uma página de cada vez para cima (se clicarmos acima da scroll box) ou para baixo (se clicarmos abaixo da scroll box);
- mover conteudo para uma qualquer posição - o arrastar da scroll box para cima ou para baixo leva o documento para uma qualquer posição;
- indicação do tamanho do documento - o tamanho da scroll box reflete a relação entre o conteudo visivel e o tamanho total desse conteudo; quanto menor for a scroll box, maior será esse conteúdo;
localização habitual
outra questão que por vezes se coloca é relativa à localização da scrollbar.
tipicamente habituamo-nos a vê-la à direita ou por baixo do conteudo, o que no caso das linguas que são escritas da esquerda para a direita parece contrariar um bocado a regra base de não obrigar os utilizadores a não ter que deslocar o rato para longe do local onde ele está localizado. a explicação para esta aparente contradição é muito simples. simplesmente o ecran é visto pelo utilizador como uma extensão do real, e assim
se ele tivesse que seleccionar uma scrollbar do lado esquerdo do ecran teria (no caso de ser dextro) que por o seu braço (virtual) por cima do conteudo que estivesse visivel. uma situaçao que se verificaria na realidade no caso de um interface que usasse um ecran tactil.
mais uma questão curiosa
a direcção das setas. neste momento parece-nos obvio que a seta de cima nos permita levar para o inicio do documento e a de baixo para o fim, no entanto alguns interfaces antigos recorriam a outra metáfora e tinham a seta de cima a apontar para baixo (embora tendo a mesma funcionalidade que as scroll bars actuais). para perceber a razao de ser desta opção basta pensarmos que temos uma janela estática com um documento a rolar por baixo. assim quando clicamos na seta de cima o que estamos a fazer é a trazer todo o documento uma linha para baixo.
investigação e desenvolvimento
e que possiveis melhoramentos podem ser introduzidos neste componente base de qualquer interface? o som é certamente uma das dessas possíveis melhorias havendo ja inclusive estudos sobre como essa integração poderia ser feita e que pode passar por emitir sons diferenciados consoante se anda linha-a-linha/página-a-página para baixo ou para cima permitindo uma melhor identificação do local do documento em que o utilizador se encontra.
finalmente
a questão dos ratos com scroll incorporado, os métodos tradicionais de "subversão" da corriqueira scrollbar esquecem-se ou não conseguem implementar esta caracteristica a que muitos já se habituaram.
notas finais
embora as scrollbars tenham todas estas caracteristicas que enumerei, a necessidade de as incluir totalmente num componente que tente emular uma scrollbar pode ser discutivel já que elas podem eventualmente não ser absolutamente fundamentais para o objectivo do projecto de interface que se quer construir.
no entanto é necessário conhecer essas funcionalidades de forma a poder avaliar se elas podem ser descartadas ou não.
(1) - onde se diz linha deve-se ler unidade, por exemplo num processador de texto pode ser uma linha, num programa de tratamento de imagem pode ser um pixel, numa folha de cálculo pode ser uma linha
Referências
Apple Human Interface Guidelines > Windows > Window Behavior > Scrolling Windows (http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGWindows/chapter_16_section_4.html#//apple_ref/doc/uid/20000961/TPXREF26)
Official Guidelines for User Interface Developers and Designers > Windows Interface Components > Windows > Basic Window Operations (http://msdn.microsoft.com/library/en-us/dnwue/html/ch07d.asp?frame=true)
Hands across the screen: why scrollbars are on the right and other stories (http://www.comp.lancs.ac.uk/computing/users/dixa/papers/scrollbar/)
Sinister Scrollbar in the Xerox Star Xplained (http://www.comp.lancs.ac.uk/computing/users/dixa/papers/scrollbar/scrollbar2.html)
Why are the scrollbar placed at the righthand side of the document frame? (http://groups.google.com/groups?threadm=3DB69310.9060803%40isg.cs.uni-magdeburg.de&rnum=1)
Auditory-enhanced scrollbar - (http://www.dcs.gla.ac.uk/~stephen/papers/CHI94.PDF)
Windows Mobile > User Interface Guidelines > UI Guidelines > UI Elements and Controls > Scroll Bars (http://msdn.microsoft.com/library/en-us/ui_guide_ppc/htm/Scroll%20Bars.asp?frame=true)
Publicado por vitorsilva às 10:32 AM
março 24, 2004
O comentário ao artigo "Sou Um Utilizador, Ouçam-me!"
http://www.usabilidade.com/artigo.asp?id=458
"You open your site in an x by y window - I copy and paste the url from the properties into my own window
You turn off my back button - I use a keyboard shortcut to go back to the previous document.
You change my browser history to always go back to your page - I disable Javascript
You use a "no right click" script - I disable Javascript "
tudo certo mas uma pergunta provocadora, que percentagem dos utilzadores portugueses de internet ''''domina'''' essas técnicas, como por exemplo usar teclas para navegar, ter programas instalados para eliminar as popups, etc.
Publicado por vitorsilva às 09:44 PM
março 19, 2004
Design of Everyday Things #3
Ao longo dos tempos o ser humano foi adoptando algumas estratégias que lhe permitem lidar com a enorme quantidade de informação com que têm que lidar diariamente. E não se pense que é um problema de somenos, basta olhar à nossa volta e apreender o que está por trás de coisas tão triviais quanto usar uma caneta (como seleccionar a cor pretendida por exemplo?), ligar as luzes de um carro (problemático quando saltamos de um carro para outro), seleccionar um número no telemóvel, fechar uma torneira (é para a direita ou para a esquerda?), etc.
Uma forma de ultrapassar esse problema é contar com as “instruções” que o ambiente que nos rodeia nos fornece. Assim se calhar para fechar uma torneira eu vou rodar o manípulo, para seleccionar o número do telemóvel vou seguindo as instruções que ele me dá e assim sucessivamente.
Podemos portanto contar com um conjunto de “meta-informação” que nos é fornecida pelos próprios objectos ou situações com as quais somos confrontados.
Este tipo de abordagem no entanto só é possível na medida em que na maior parte das vezes não é necessário garantir um elevado grau de fiabilidade nessas acções. Imaginemos que a torneira que queríamos fechar comandava uma comporta de uma barragem... se calhar já não íamos usá-la da mesma forma do que a torneira da cozinha... isto é não nos íamos dar ao luxo de confiar somente naquilo que nos parece que deve ser o comportamento adequado para aquela situação (e que pode ser induzido pelo próprio objecto) mas certamente iríamos recorrer a conhecimento específico que previamente tínhamos adquirido.
Há portanto duas perspectivas, a utilização da informação que o próprio ambiente nos fornece e que conjuntamente com os constrangimentos (constraints) naturais e culturais nos permite uma induzir o que devemos fazer (embora tendo em conta a questão da fiabilidade dessa informação) (ver também artigo sobre mapeamentos naturais http://www.usabilidade.com/artigo.asp?id=362); ou o uso de informação previamente apreendida e que guardamos convenientemente no nosso cérebro.
Claro que para podermos usar informação que já recolhemos temos que a guardar primeiro, e esse por vezes é o principal problema.
Uma das necessidades que impomos à nossa memória é a de guardar informação que, por si só, não é relacionável com nada, como por exemplo um número de telefone ou numero de bilhete de identidade ou a combinação de teclas para fazer aquele passe maravilha no pes3. normalmente resolvemos este tipo de problema decorando simplesmente a informação, podemos eventualmente recorrer a fórmulas onomatopeicas (por exemplo um numero soa a determinada musica que se gosta) ou definir relações mais ou obscuras entre partes da informação (por exemplo os dois algarismos números são o dobro de um terceiro algarismos).
Mas para além do simples decorar recorrendo a artefactos mais ou menos obscuros, o nosso cérebro já percebeu que tudo se torna mais fácil se conseguir encontrar relações entre algo novo que se quer memorizar e conhecimento já disponível na nossa base de dados. Este tipo de operação normalmente passa pela criação de um modelo mental que dê sentido a algo que à partida parece ininteligível.
Propriedade | Conhecimento no mundo | Conhecimento na cabeça |
Capacidade de recuperar informação | Sempre que ela seja visível ou audível | Não é rapidamente recuperável. Requer pesquisa na |
Aprendizagem | Não é necessária aprendizagem. A interpretação | Requer aprendizagem, que pode ser considerável. A |
Eficiência na utilização | Tendencialmente lenta na medida em que requer que se | Pode ser bastante eficiente |
Facilidade de utilização na primeira utilização | Alta | Baixa |
Estética | Pode ser inestética e deselegante, especialmente se | Nada necessita de ser visível, o que dá mais liberdade |
Publicado por vitorsilva às 06:21 PM
março 17, 2004
Cartão de Ponto
um dos ultimos trabalhos da a+b foi o desenvolvimento de uma aplicação para leitura de informação a partir de um cartao com banda magnetica (tipo multibanco).
para alem da leitura a partir do cartao também é possivel inserir dados a partir do teclado.
por tudo isso era preciso criar um interface com uma pequena restrição, é que o nosso ecran tem uma magnifica resolução de 21x8 pixeis. um bom desafio portanto.
em baixo ficam alguns ecrans. para comentar se quiserem
ecran que é mostrado enquanto o leitor está em standby à espera que alguém passe o cartão.
ecran de leitura de dados, se tiver sido passado o cartao, o campo operario é logo preenchido
ecran de mensagem de erro
ecran de mensagem de erro 2 (o caracter errado na palavra não vai ser mudado)
tendo em conta q estava uma folha de obra em aberto, passa-se logo à opção fechar folha de obra
ecran de confirmação de folha de obra fechada
Publicado por vitorsilva às 11:46 PM
março 12, 2004
Comentario a "Como Melhorar o Uso de Links"
http://www.usabilidade.com/artigo.asp?id=452
"Keep your links blue for unclicked and purple for clicked. Always underline your links, unless they are part of a graphic. "
??? ainda há alguém q recomende isto?
Publicado por vitorsilva às 05:49 PM
março 05, 2004
comentario a "Entrevista a Nathan Shedroff"
http://www.usabilidade.com/artigo.asp?id=441
muito muito muito recomendavel este artigo!
as questoes que ele levanta sobre
- consciencia social,
- postura de alguns designers,
- qual uma possivel definição de design,
- integração/interacção entre diferente áreas de conhecimento (ciencia, economia(business), humanidade, artes)
...
já disse que achei muito bom :)
Publicado por vitorsilva às 05:50 PM
fevereiro 24, 2004
comentário a "Acessibilidade e Usabilidade"
http://www.usabilidade.com/artigo.asp?id=428
bom, pareceu-me um bocado fracote este artigo... um bocado com vistas curtas... começa por dizer "ideally, any site should be accessible. any device should be able to access the content and navigation of any site" o que me parece bem, mas depois todo o discurso centra-se na questão da navegabilidade e em pormenores que me parecem uma gota de água naquilo que a acessibilidade representa... para além do enfoque na utilização de javascript para resolução de problemas de usabilidade..."the rule is accessibility should not restrict usability. if your site badly needs a few advanced javascript to make the navigation or a form more usable, don''''t hesitate to add the scripts"
eu diria antes, se o site precisa assim tanto de javascript para resolver esse tipo de problemas se calhar a arquitetura da informação não foi muito bem definida.
já agora porque não falar na utilização do flash por exemplo para criaçao de mecanismos de navegação mais intuitivos e apelativos?
"Therefore any possible ''''accessibility vs. usability danger is related to the future of javascript"
resumindo acho que me escapou o alcance do artigo porque realmente não consigo ver relação entre as 3 coisas acessibilidade / javascript / usabilidade
outras leituras recomendadas
http://www.acesso.umic.pcm.gov.pt/acesso/visitabil.htm
http://www.umic.pcm.gov.pt/UMIC/CentrodeRecursos/Publicacoes/guia_boas_praticas.htm
Publicado por vitorsilva às 05:51 PM
fevereiro 23, 2004
comentário a "O Paradigma da Página"
http://www.usabilidade.com/artigo.asp?id=427
nada como artigos que destroem aqueles mitos que se vão criando. muito interessante.
Publicado por vitorsilva às 05:53 PM
janeiro 21, 2004
Términos excluyentes: Usabilidad y política en administraciones y grandes empresas
http://www.alzado.org/articulo.php?id_art=178
frases interessantes:
"-La usabilidad será cultura general y se darán por supuestas. Serán objetivos implícitos a cualquier desarrollo, parámetros diferenciales de calidad y generadores de ventajas competitivas."
"-Diseño gráfico no es diseño de interfaz: Existirá un perfil de diseñadores de interfaz formados, especializados y profesionalizados"
"-La accesibilidad se dará por supuesta y no se confundirá con agrandar el tamaño de letra."
Publicado por vitorsilva às 05:56 PM
historia de interfaces
http://www.comp.lancs.ac.uk/computing/users/dixa/topics/widget/
"Some writers on interface design assume that all menus, buttons, etc. are essentially the same: a Motif menu may look different from a Mac one, but they serve the same function."
inclui "Hands Across the Screen - why scrollbars are on the right and other stories."
Publicado por vitorsilva às 05:54 PM
outubro 04, 2003
Design of Everyday Things 2/8
Ch02. The Psychology of Everyday Actions
Já diz a lei de Murphy que se alguma coisa pode correr mal, então isso vai acontecer. O mesmo se aplica quando falamos da utilização de um qualquer objecto (real ou digital), ou seja, se há alguma acção que pode levar a uma utilização errada e por vezes gravosa desse objecto, então temos que ter como adquirido que pelo menos um utilizador neste mundo se vai lembrar de a fazer.
A questão é que normalmente esse utilizador ao fazer essa acção e ao obter o erro vai quase instantaneamente assumir que errou, que era óbvio que aquela acção não era válida e que certamente foi por distracção ou deficiente conhecimento que a executou. Por outras palavras, nunca (ou raramente) questiona se a forma como esse objecto comunica consigo é a mais correcta para o levar a utilizá-lo.
Como foi referido no capítulo anterior as pessoas elaboram modelos conceptuais que expliquem o funcionamento das coisas, estes modelos são construídos tendo por base aquilo que nós apreendemos de determinado objecto e como conseguimos interagir com ele, ou seja só guarda a nossa experiência não englobando o modelo real do objecto nem o modelo conceptual do designer.
Isto leva a que facilmente se criem ideias erradas sobre o próprio funcionamento do objecto, dado que são normalmente concebidas com base em pressupostos errados.
E assim se criam alguns misticismos como “sair e voltar a entrar” ou para executar a acção a tenho que antes carregar no botão b e ao mesmo tempo ligar o aparelho c.
Esta racionalização, a criação de uma explicação para um acontecimento, pode também desenvolver no utilizador um estado de alheamento aos erros que aparecem, em que ele assume que determinada acção, embora tivesse lógica dentro do seu modelo mental que fosse possível, não é válida para este objecto e portanto é natural que ao executar essa acção o erro aconteça.
“At the Three Mile Island nuclear power plant, operators pushed a button to close a valve; the valve had been opened (properly) to allow excess water to escape from the nuclear core. In fact, the valve was deficient, so it didn’t close. But a light on the control panel indicated that the valve position was closed. The light actually didn’t monitor the valve, only the electrical signal to the valve, a fact known by the operators. Still, why suspect a problem? The operators did look at the temperature in the pipe leading from the valve: it was high, indicating the fluid was still flowing through the closed valve. Ah, but the operators knew that the valve had been leaky, so the leak would explain the high temperature; but the leak was known to be small, and operators assumed that it wouldn’t affect the main operation. They were wrong, and the water that was able to escape from the core added significantly to the problems of that nuclear disaster. I think the operators’ assessment was perfectly reasonable: the fault was in the design of the lights and in the equipment that gave false evidence of a closed valve.”
Para percebermos a forma como utilizamos os objectos e porque é que umas vezes os utilizamos correctamente e outras não, temos que perceber o próprio processo em si de execução de uma tarefa.
Podemos inicialmente decompor este processo em 3 componentes: um objectivo, que será a tarefa que queremos atingir; a execução, que será a nossa actuação de forma a atingir o objectivo; e a avaliação que implica a verificação se o objectivo foi ou não atingido.
Já agora de reparar como este processo é muito parecido com a forma como comunicamos entre nós, ou seja alguém quer dizer algo a outrem (objectivo), transmite essa mensagem (execução) e recebe o feedback dessa pessoa (avaliação).
Podemos ainda decompor a componente execução em 3 sub-componentes, assim a execução consistirá em definir a intenção de agir sobre qualquer coisa de forma a atingir um objectivo, essa intenção tem que ser concretizada mentalmente num plano de actuação, que finalmente será efectivamente executada.
Da mesma forma a avaliação também poderá ser decomposta. Primeiro na percepção do que aconteceu, interpretação dessa percepção e finalmente comparação dessa interpretação com os nossos objectivos.
Com este modelo em mente podemos nós também racionalizar em que pontos poderão ocorrer erros na interacção com qualquer objecto, isto é aquando da execução do objectivo ou na avaliação do resultado.
A primeira situação pode acontecer quando há uma diferença entre aquilo que se pretende fazer e o que o objecto permite fazer, ou então entre aquilo que se pretende fazer e a facilidade com que essa acção é executada. Por exemplo se estou numa loja virtual e quero encomendar qualquer coisa porque é que tenho que me registar antes? Esse passo cria mais uma barreira à execução do objectivo, o utilizador está preparado para seleccionar o método de pagamento, método de entrega, etc., etc., mas o processo de registo, ao aparecer numa fase inicial não é mais do que um entrave ao atingimento do objectivo na medida em que se converte ele próprio (o registo) num sub-objectivo que tem que ser completado e que não foi pedido pelo utilizador.
A segunda situação consiste na forma como o objecto nos comunica o resultado da acção. Temos que ter sempre presente que o utilizador tem uma ideia pré-concebida de como essa resposta deve ser dada, assim não basta assegurar que essa informação sobre o resultado da operação é facultada, a forma como ele nos é apresentada é também importante.
De forma a avaliar se determinado design responde às necessidades de um objecto e de interacção desse objecto com um utilizador, podemos efectuar as seguintes perguntas:
- é fácil determinar a função do objecto?
- é fácil determinar as acções possíveis?
- é fácil efectuar o mapeamento entre a intenção de usar o objecto a sua utilização física?
- é de fácil utilização física?
- é fácil efectuar o mapeamento entre aquilo que o objecto responde como resultado da acção e o que o utilizador espera?
- é fácil perceber se o objecto efectuou a acção pretendida?
Palavras-Chave: racionalização, objectivos, execução, avaliação
Publicado por vitorsilva às 02:22 PM
setembro 30, 2003
Design of Everyday Things 1/8
Agora que faltam poucos meses para o lançamento do novo livro de Don Norman, esse guru da web que juntamente com Jakob Nielsen forma o Nielsen Norman Group pareceu-me interessante ler um livro cuja primeira edição já tem 15 anos e que faz certamente parte da biblioteca de muitos dos interessados nas questões de ergonomia: “The Design of Everyday Things”.
Sendo a usabilidade uma palavra da moda nos meandros da web convém perceber de que forma essas questões se levantaram e como têm evoluído pois só assim se podem questionar os postulados dogmáticos que por vezes nos tentam vender.
Antes de entrar na análise do livro, capítulo a capítulo e que tentarei ir apresentando ao ritmo de um capítulo por semana, uma nota em relação à forma como está escrito. É um livro que essencialmente nos põe a pensar, não tem nenhuma lista de “melhores-práticas”, mas inclui muitos exemplos reais que ilustram perfeitamente o que o autor vai querendo dizer.
Vamos ao que interessa, e vou começar pelo fim:
“Take pride in the little things that help; think kindly of the person who so thoughtfully put them in. Realize that even details matter, that the designer may have had to fight to include something helpful. Give mental prizes to those who practice good design: send flowers. Jeer those who don’t: send weeds.”
Acho que este que é o último parágrafo do livro ilustra bem o objectivo principal do livro, alertar para os problemas de design com que somos confrontados diariamente, mostrar porque é que eles (os problemas) normalmente existem nos diferentes equipamentos com que lidamos e porque é que nos afectam enquanto ser humano.
Interessante verificar que as questões da emoção (emotional design) tão em voga hoje em dia ainda não aparecem ainda aqui, sendo as soluções apresentadas através de um mix de análise psicológica com uns “pozinhos” de engenharia apoiada por designers.
Ch01. The Psychopathology of everyday things
Neste capítulo o autor fala-nos de algumas situações de dificuldade de interacção com objectos, porque é que elas acontecem e de que forma podem ser ultrapassadas.
A principal razão de dificuldade reside no facto de o ser humano tentar racionalizar os acontecimentos que o rodeiam criando modelos conceptuais que explicam essas situações, por exemplo se depois de ligar um aquecedor a luz vai abaixo é natural que crie um nexo causal que relacione os dois eventos, bem como se ao seleccionar determinada opção numa aplicação ela bloquear será também normal relacionar as duas questões, independentemente da sua efectiva relação.
Assim um dos principais problemas ocorre quando o modelo conceptual do designer difere do modelo conceptual do utilizador. Independentemente da boa intenção ou não do designer tentar apresentar uma forma intuitiva de utilização de um objecto (físico ou digital) essa forma difere da forma como o utilizador estaria à espera de o utilizar provocando um choque que normalmente resulta ou em má utilização ou na criação de resistências à utilização repetida do objecto.
O modelo conceptual deverá permitir ao utilizador prever o efeito das suas acções. Este processo é importante na medida em que a quantidade de objectos com que temos que lidar todos os dias é tão grande que decorar a forma de utilização de todos eles seria uma tarefa imensa.
Pode-se aliviar o utilizador desta tarefa tentando desenvolver um design que o autor designa de natural design e que consiste em tirar partido de um conjunto de propriedades facilitadoras da compreensão do objecto.
Por um lado é necessário perceber as “affordances” de determinado material ou objecto.
Como descrição do que isto quer dizer deixo duas citações do mesmo livro embora seja fundamental a exploração mais aprofundada deste tema.
“The term affordance refers to the perceived and actual properties of the thing, primarily those fundamental properties that determine just how the thing could possibily be used”
“I belive that affordances result from the mental interpretation of things, based on our past knowledge and experience applied to our perception of the things about us.“
Isto é, a partir das características do próprio objecto, o utilizador mesmo sem o conhecer cria uma ideia sobre qual a funcionalidade desse próprio objecto. Por exemplo uma ranhura serve normalmente para inserir algo, um botão serve para clicar ou carregar, etc.
Claro que por vezes o utilizador não chega sequer a perceber que há algo com que pode interagir já que não o consegue ver. Quem é que nunca andou à procura da ranhura para inserir o Multibanco numa caixa automática?
Outra questão tem a ver com a forma como as pessoas relacionam certa acção num objecto com a consequência daí resultante. Este mapeamento (mapping) pode ser feito tirando partido de analogias ou referências culturais. Assim se uma aplicação informática envia uma mensagem para um utilizador usando por exemplo letras vermelhas, é natural que esse utilizador esteja à espera que essa mensagem seja de erro, assim como se uma pessoa vir uma porta com um manípulo redondo assuma que tem que o rodar para abrir a porta.
Em todas estes exemplos podemos ainda acrescentar uma propriedade que pode ajudar ao “natural design” e que são as restrições (constraints) que podem ser forçadas pelo objecto em questão. Por exemplo uma ranhura pequena não deixará passar uma moeda grande; um copo tem um limite até ao qual se poderá encher sem entornar.
Finalmente temos o feedback, ou seja a informação que volta ao utilizador durante e após a utilização do objecto. Esta informação permite que se faça uma comparação permanente entre o objectivo de utilização do objecto com o resultado efectivo.
O conhecimento da existência destas propriedades e a sua utilização conveniente ajudam certamente à melhor utilização dos objectos mas uma coisa não conseguem mudar, é que conforme forem sendo adicionadas novas funcionalidades a esse objecto, normalmente como resultado de novas necessidades ou de melhorias tecnológicas, maior complexidade esse mesmo objecto terá e portanto maiores problemas de comunicação com o utilizador serão criados.
Palavras-Chave: visibilidade, mapeamento, restrições, feedback, affordance, natural design, modelo conceptual
Comparação desenvolvimento sistemas de informação:
É curioso ver que afirmações que no livro são exemplificadas essencialmente recorrendo a objectos reais, como a utilização de portas ou telefones, são facilmente transportáveis para o mundo digital. Todos sabemos que um botão é para clicar e uma scroll bar para arrastar (affordances); Que numa página web um utilizador clicará primeiramente nos elementos visíveis antes de fazer scroll pelo resto da página (visibilidade); que uma caixa de texto com um ponto de exclamação não é um bom sinal (mapping); que numa página web um texto sem link não é clicável (restrições); e que se a ampulheta substitui a seta como indicador do rato então é porque o computador está a fazer alguma coisa (feedback).
Publicado por vitorsilva às 12:55 PM

