Visual Studio Scrum 1.0

Saiu o Microsoft Visual Studio Scrum 1.0 uma nova extensão para o Team Foundation Server 2010. O download pode ser feito no Visual Studio Gallery.

O Scrum é uma metodologia àgil para gestão de projectos de software cada vez mais utilizada por equipas experientes, agilizando os processos de gestão em grandes projectos (não só em tempo).

Download de ficheiros inseridos no MySQL

É uma função muito simples embora cause alguma confusão aquando da implementação. Deve-se ter em atenção que não pode ter qualquer código HTML, pois se tiver haverá problema com os headers.

Aqui fica a função:

$id = 1;
mysql_select_db(“docs”) or die(mysql_error());
$query = “SELECT assunto, tipo_ficheiro, size, ficheiro ” .
“FROM documentos WHERE id = ‘$id’”;

$result = mysql_query($query) or die(‘Error, query failed’);

list($assunto, $tipo_ficheiro, $size, $ficheiro) = mysql_fetch_array($result);

header(‘Content-Description: File Transfer’);
header(“Content-length: $size”);
header(“Content-type: $tipo_ficheiro”);
header(“Content-Disposition: attachment; filename=”.$ficheiro);
header(‘Content-Transfer-Encoding: binary’);
header(‘Cache-Control: must-revalidate, post-check=0, pre-check=0′);
header(‘Pragma: public’);

echo $ficheiro;

Função mysql_fetch_assoc() – PHP

A função mysql_fetch_assoc() permite recuperar o resultado de uma query (SELECT) como array associativo permitindo assim ir buscar cada uma das colunas de uma tabela pelo nome da query (atributo ou variável).

Por exemplo:

$result = mysql_query(“SELECT * FROM documentos”) or die(mysql_error());
$row_result = mysql_fetch_assoc($result);

$row_result['id'];

$row_result['nome'];

$row_result['data'];

LINQ com objectos C# e Arrays

O Linq possibilita a escrita de queries independentemente da linguagem da base de dados ou linguagem de cosulta.
O Linq define um conjunto de operações SQL padrão que podem manusear qualquer fonte de dados. Esse conjunto de operações é fornecido através de extensões disponíveis na arquitectura Linq.

Essas extensões são:
Linq to Objects Disponibiliza consultas com o objecto IEnumerable para fontes de informação do tipo array, collections ou lists;
Linq to XML Disponibiliza meios eficiente e de fácil manipulação de dados em XML e funcionalidades para programação de XPath e XQuery;
Linq to SQL Esta extensão possibilita o acesso a objectos de bases de dados relacionais tal como se acessa a objectos .NET;
Linq to DataSet Facilidades de consulta com o ADO.NET Dataset;
Linq to Entities Fornece capacidades de consulta às entidades ADO.NET.

Um exemplo de uma query simples num array ficará desta forma:
int[] num = { 5, 3, 4, 0, 6, 7, 6, 2, 3 };
var menores = from n in num
where n < 5
select n;
Nesta query temos o from utilizado como um foreach, o operador where utilizado como selecção condicional e o select como selector dos dados, campos do array. A isto se chama Standard Query Operators.
A consulta feita vai devolver um objecto IEnumerable<T> que referencia um objecto em memória com inteiros, em que os valores são menores que 5.

A mesma sintaxe é utilizada quando fazemos consultas em objectos. Neste caso podemos fazer da seguinte forma:


List<Produto> produtos = GetProductList();
var expensiveInStockProdutos =
from p in produtos
where p.UnitsInStock > 0 && p.UnitPreco > 10.00M
select p ;
ArrayList list = new ArrayList();
foreach (var i in expensiveInStockProdutos)
list.Add(i);
ProdutosGrid.AutoGenerateColumns = true;
ProdutosGrid.DataSource = list;
ProducosGrid.DataBind();

Esta consulta utilize o commando where para encontrar todos os produtos em stock e com um preço maior que 10. A variável produtos refere-se ao objecto produtos inicializado com o método GetProductList().
A variável expensiveInStockProdutos é do tipo IEnumerable<produto> que referencia uma colecção de objectos é equivalente ao tipo de produto.
Os produtos no expensiveInStockProdutos  são adicionados a uma ArrayList utilizada depois numa tabela onde apresentará os dados, por exemplo numa página aspx.
O ProdutosGrid.AutoGenerateColumns está como True uma vez que permite gerar dinamicamente as colunas com os nomes resultantes da query.

IPv6

A Portugal Telecom tem um site onde explica o que é o IPv6, o novo protocolo que substituirá o velhinho IPv4 que se aproxima do fim da sua capacidade.

Entre outras curiosidades explica o seu funcionamento, as mudanças, vantagens, etc.

Java vs .NET

←Older