01.Blogs :
catloth  
Download de novos livros Microsoft Press
Friday, December 22, 2006 3:19 PM

A Microsoft disponibilizou para download capítulos de demonstração dos seguintes livros:

Acho que pode ser um bom ponto de partida para quem está querendo aprofundar o conhecimento em 2007.

1 Comments | Post a Comment |

posted  by  catloth  with 

Que momento!
Monday, August 07, 2006 2:28 PM

Não é todo o dia que eu consigo reunir tantas pessoas que admiro profissionalmente e consigo bater uma foto...

Esta foi tirada no evento do CIEE que participei divulgando os programas acadêmicos da Microsoft.

Da esquerda para direita: Murilo Maciel Curti, Miguel Ferreira, Leonardo Pires, Fábio Gallupo e Eu.

1 Comments | Post a Comment |

posted  by  catloth  with 

Criação de um controle de cliente Atlas: RadioButtonList
Thursday, July 13, 2006 5:33 PM

A versão cliente de um controle que não foi implementado ainda nesta Release de Junho do Atlas e que eu precisava usar é o RadioButtonList. Como não tive muita escolha tive que implementar a minha própria versão. Eu usei como base o código fonte do controle Sys.UI.Select para criar este controle. O código segue abaixo:

Sys.UI.RadioButtonList = function(associatedElement) {

Sys.UI.RadioButtonList.initializeBase(this, [associatedElement]);

var _selectionChangedHandler;

var _data;

var _dataChangedDelegate;

var _textProperty;

var _valueProperty;

var _table;

var _tbody;

this.get_data = function() {

return _data;

}

this.set_data = function(data) {

if (_data && Sys.INotifyCollectionChanged.isImplementedBy(_data)) {

_data.collectionChanged.remove(_dataChangedDelegate);

}

_data = data;

if (_data) {

if (!Sys.Data.DataTable.isInstanceOfType(_data)) {

_data = new Sys.Data.DataTable([], _data);

}

_data.collectionChanged.add(_dataChangedDelegate);

}

dataBind.call(this);

this.raisePropertyChanged('data');

}

this.get_selectedValue = function() {

var i;

var buttonList = document.getElementsByName(this.get_id());

for (i = 0; i < buttonList.length; i++) {

if (buttonList[i].checked) {

return buttonList[i].value;

}

}

}

this.set_selectedValue = function(value) {

var i;

var buttonList = document.getElementsByTagName(this.id);

for (i = 0; i < buttonList.length; i++) {

if (buttonList[i].value == value) {

buttonList[i].checked = true;

break;

}

}

}

this.get_textProperty = function() {

return _textProperty;

}

this.set_textProperty = function(name) {

_textProperty = name;

this.raisePropertyChanged('textProperty');

}

this.get_valueProperty = function() {

return _valueProperty;

}

this.set_valueProperty = function(name) {

_valueProperty = name;

this.raisePropertyChanged('valueProperty');

}

this.get_tableElement = function() {

if (!_tbody) {

_table = document.createElement('TABLE');

_tbody = document.createElement('TBODY');

_table.appendChild(_tbody);

this.element.appendChild(_table);

}

return _tbody;

}

this.selectionChanged = this.createEvent();

function dataBind() {

var i;

for (i = _tbody.childNodes.length - 1; i >= 0; i--) {

_tbody.removeChild(_tbody.childNodes[i]);

}

if (_data) {

var length = _data.get_length();

var id = this.get_id();

for (i = 0; i < length; i++) {

var item = _data.getItem(i);

var text = Sys.TypeDescriptor.getProperty(item, _textProperty);

var value = Sys.TypeDescriptor.getProperty(item, _valueProperty);

var tr = document.createElement('TR');

var td = document.createElement('TD');

var radioButton = document.createElement('<INPUT NAME="' + id + '" />');

radioButton.name = id;

radioButton.id = id + '_' + i;

radioButton.type = 'RADIO';

radioButton.value = value;

var label = document.createElement('LABEL');

label.htmlFor = radioButton.id;

label.innerHTML = text;

td.appendChild(radioButton);

td.appendChild(label);

tr.appendChild(td);

_tbody.appendChild(tr);

}

}

}

_dataChangedDelegate = Function.createDelegate(this, dataBind);

this.dispose = function() {

if (_selectionChangedHandler) {

this.element.detachEvent('onchange', _selectionChangedHandler);

_selectionChangedHandler = null;

}

if (_table) {

_table = null;

}

Sys.UI.RadioButtonList.callBaseMethod(this, 'dispose');

}

this.getDescriptor = function() {

var td = Sys.UI.RadioButtonList.callBaseMethod(this, 'getDescriptor');

td.addProperty("data", Sys.Data.DataTable);

td.addProperty('selectedValue', String);

td.addProperty('textProperty', String);

td.addProperty('valueProperty', String);

td.addEvent('selectionChanged', true);

return td;

}

Sys.UI.RadioButtonList.registerBaseMethod(this, 'getDescriptor');

this.initialize = function() {

_table = document.createElement('TABLE');

_tbody = document.createElement('TBODY');

_table.appendChild(_tbody);

this.element.appendChild(_table);

Sys.UI.RadioButtonList.callBaseMethod(this, 'initialize');

_selectionChangedHandler = Function.createDelegate(this, this._onSelectionChanged);

this.element.attachEvent('onchange', _selectionChangedHandler);

}

this._onSelectionChanged = function() {

this.raisePropertyChanged('selectedValue');

this.selectionChanged.invoke(this, Sys.EventArgs.Empty);

}

}

Sys.UI.RadioButtonList.registerClass('Sys.UI.RadioButtonList', Sys.UI.Control);

Sys.TypeDescriptor.addType('script', 'radioButtonList', Sys.UI.RadioButtonList);

0 Comments | Post a Comment |

posted  by  catloth  with 

70-316 - Questão 18
Tuesday, July 04, 2006 2:21 PM
18) Você deseja reduzir a quantidade de tempo necessária para que o formulário inicial da sua aplicação seja carregado. Qual das seguintes ferramentas seria a mais útil para ajudá-lo?

A) Sn.exe

B) Gacutil.exe

C) Caspol.exe

D) Ngen.exe

1 Comments | Post a Comment |

posted  by  catloth  with 

70-316 - Questão 17
Tuesday, July 04, 2006 10:58 AM
17) Qual palavra chave você deve usar para determinar a partir de qual classe um objeto foi instanciado?

A) class

B) typeof

C) as

D) this

1 Comments | Post a Comment |

posted  by  catloth  with 

70-316 - Questão 16
Monday, July 03, 2006 4:41 PM
16) Você precisa realizar alterações em uma aplicação desenvolvida por um ex-funcionário da empresa onde você trabalha atualmente. A aplicação contém um objeto MainMenu chamando myMainMenu. Uma das alterações consiste em exibir uma parte do menu principal da aplicação, MenuEditItem, em um menu de contexto quando o usuário da aplicação clicar com o botão direito do mouse sobre uma caixa de texto da aplicação. Você adicionou um objeto ContextMenu ao formulário principal da aplicação e deu a ele o nome de PopupMenu. Você deseja escrever o menor número de linhas possível para criar o menu de contexto. O que você deve fazer?

A) PopupMenu.MenuItems.Add(MenuEditItem.CloneMenu());

B) PopupMenu = MenuEditItem;

C) PopupMenu.MenuItems = MenuEditItem.MenuItems;

D) PopupMenu = MenuEditItems.CloneMenu();

0 Comments | Post a Comment |

posted  by  catloth  with 

70-316 - Questão 15
Monday, July 03, 2006 3:41 PM
15) Você deseja criar uma transação, contudo você deseja que não seja possível modificar registros no DataSet até que a transação tenha sido finalizada. Qual o nível de isolamento você deve utilizar?

A) ReadCommited

B) ReadUncommited

C) RepeatableRead

D) Serializable

1 Comments | Post a Comment |

posted  by  catloth  with 

Frase do dia
Monday, July 03, 2006 2:28 PM
Há 10 tipos de pessoas no mundo: as que conhecem a notação binária e as que não conhecem.

1 Comments | Post a Comment |

posted  by  catloth  with 

70-316 - Questão 14
Friday, June 30, 2006 7:30 PM
14) Você está utilizando o Visual Studio .NET para criar uma aplicação Windows Forms que acompanhará as vendas de uma empresa. Ao objeto principal da sua aplicação você deu o nome de MyCompany. A classe que MyCompany é criada usando a seguinte definição:

public class MyCompany {
}

Você escreveu código para definir o valor de algumas propriedades da classe MyCompany e este código deve ser executado assim que uma instância da classe MyCompany for criada. Agora você precisa criar um método no qual você irá colocar o seu código. Qual segmento de código você deve utilizar?

A) public MyCompany()

B) public void MyCompanny()

C) public bool MyCompany()

D) public New()

E) public MyCompany New()

F) public MyCompany MyCompany()

0 Comments | Post a Comment |

posted  by  catloth  with 

70-316 - Questão 13
Friday, June 30, 2006 4:43 PM
13) Você está usando o Visual Studio.NET para desenvolver uma aplicação que contém 50 formulários. Você criou um método chamado PerformCalculations, o qual escreve os resultados de diversos cálculos internos na janela Debug. Estes cálculos demoram mais de um minuto para serem executados. Além disso, você quer compilar duas versões da aplicação, uma para depuração e outra distribuição. A versão de depuração deve executar os cálculos, já a versão de distribuição não deve incluir ou compilar o código que executa os cálculos. Para alcançar estes objetivos, você deve utilizar o mínimo possível de código. Quais são as duas ações que você deve tomar? (Cada resposta correta apresenta parte da solução. Escolha duas)

A) Utilize o seguinte fragmento de código:
#if DEBUG
    // Insira o código para executar os cálculos
#endif

B) Utilize o seguinte fragmento de código:
If (DEBUG) {
    // Insira o código para executar os cálculos
}

C) Use o seguinte fragmento de código na primeira linha do arquivo que contém o código que executa os cálculos:
    #define DEBUG

D) Adicione “DEBUG = true” à caixa de texto Command Line Arguments no painel Debugging da caixa de diálogo de propriedades do projeto

E) Certifique-se que a opção Conditional Compilation Constants no painel Build da caixa de diálogo propriedades do projeto contém o valor “DEBUG”

F) Certifique-se que a opção Conditional Compilation Constants no painel Build da caixa de diálogo propriedades do projeto contém o valor “TRACE”

0 Comments | Post a Comment |

posted  by  catloth  with 

70-316 - Questão 12
Friday, June 30, 2006 4:25 PM
12) Você é um desenvolvedor de uma empresa que disponibiliza software gratuito pela Internet. Você está desenvolvendo uma aplicação de e-mail que os usuários de qualquer parte do mundo podem fazer download. Esta aplicação exibe diversas informações textuais na sua interface com o usuário. Em tempo de execução, estes textos devem aparecer no idioma apropriado de acordo com as configurações regionais do computador que estiver executando a aplicação. Você tem recursos para desenvolver versões apenas para quatro culturas diferentes. Você deve garantir que a sua aplicação poderá também ser utilizada pode pessoas de outras culturas. Como você deve preparar a sua aplicação para distribuí-la.

A)
Criar um assembly diferente para cada cultura

B)
Criar um arquivo executável diferente para cada cultura

C)
Criar um assembly principal para o código fonte e para a cultura padão
Criar satellite assemblies para as demais culturas

D)
Criar um assembly principal para o código fonte
Criar satellite assemblies para cada cultura

0 Comments | Post a Comment |

posted  by  catloth  with 

70-316 - Questão 11
Friday, June 30, 2006 10:36 AM
11) Você criou um formulário chamado companyForm. Este formulário possibilita que os usuários façam manutenção dos registros armazenados na tabela Company. Você precisa adicionar ao formulário companyForm diversos pares de controles. Além disso, você deve satisfazer os seguintes requisitos:

    • Cada par de controles deve representar uma coluna da tabela Comapany.
    • Cada par é composto por um controle TextBox e por um controle Label.
    • O evento LostFocus de cada controle TextBox deve fazer chamada a um método chamado UpdateDatabase.
    • Formulários similares ao companyForm deverão ser criados para outras tabelas no banco de dados.
    • O desempenho da aplicação deve ser otimizado.
    • A quantidade de código necessária para obter o resultado esperado deve ser mínima.

O que você deve fazer?

A)
Criar e selecionar um controle TextBox e um controle Label
Escrever o código apropriado para tratar o evento LostFocus do controle TextBox
Copiar e colar os controles repetidamente no formulário companyForm até ter um par de controles para cada coluna da tabela Company
Repetir este processo para outros formulários

B)
Adicionar um controle TextBox e um controle Label ao formulário companyForm
Escrever o código apropriado para tratar o evento LostFocus do controle TextBox
Criar array de controles contendo os controles TextBox e Label
Em tempo de execução, adicionar pares de controles ao array de controles até que cada coluna da tabela Company tenha um par de controles
Repetir este processo para os outros formulários

C)
Criar um novo UserControl que inclua um controle TextBox e um controle Label
Escrever o código apropriado para tratar o evento LostFocus do controle TextBox
Para cada coluna da tabela Company, adicionar uma instância do UserControl ao formulário companyForm
Repetir este processo para os outros formulários

D)
Criar um novo controle ActiveX que contenha um controle TextBox e um controle Label
Para cada coluna da tabela Company, adicionar uma instância do controle ActiveX ao formulário companyForm
Repetir este processo com os demais formulários

0 Comments | Post a Comment |

posted  by  catloth  with 

70-316 - Questão 10
Thursday, June 29, 2006 5:33 PM
10) Você está utilizando o Visual Studio .NET para criar um controle que será utilizado em vários formulários da sua aplicação. Este controle é um Label customizado que obtém o preço atual das ações da empresa e o exibe. Alguns dos formulários nos quais este controle deve ser colocado possuem diferentes cores no plano de fundo. Você deseja que o controle seja o mais básico possível e que o valor das ações esteja sempre visível e legível para os usuários da aplicação, contudo a área retangular que define o controle não deve estar visível aos olhos do usuário. Para tal, é necessário adicionar código ao evento Load do controle. Quais são os dois segmentos de códigos que devem ser utilizados? (Cada resposta correta representa parte da solução. Escolha duas)

A) this.BackColor = Color.Transparent;

B) this.ForeColor = Color.Transparent;

C) this.BackImage = null;

D) this.SetStyle(ControlStyles.UserPaint, false);

E) this.SetStyle(ControlStyles.SupportsTransparentBackgroundColor, true);

0 Comments | Post a Comment |

posted  by  catloth  with 

70-316 - Questão 09
Thursday, June 29, 2006 2:56 PM
Esta é sobre games... (se é que dá para se dizer isto)
Portanto, foi feita pro Shinji =)

---

9) Você está utilizando o Visual Studio .NET a fim de criar uma aplicação Windows Forms para um jogo online. Cada usuário irá executar a versão cliente da aplicação no seu computador local. No jogo, cada usuário controla dois pelotões de soldados: o Pelotão Alfa e o Pelotão Beta. Você criou um item de menu cujo título é Pelotões. Abaixo deste item, você criou dois subitens. Ao primeiro deles você deu o nome de alfaSubmenu e o título de “Esquadrão Alfa”. Já ao outro, você deu o nome de betaSubmenu e o título de “Esquadrão Beta”. Quando o usuário selecionar o menu Pelotões os dois subitens serão exibidos. O usuário poderá selecionar apenas um pelotão de soldados por vez e ser capaz de alternar entre um pelotão e outro de duas formas. A primeira é selecionando o pelotão desejado através da barra de menus. A segunda é utilizando as seguintes teclas de atalho: Ctrl+A (para selecionar o Pelotão Alfa) ou Ctrl+B (para selecionar o Pelotão Beta). Você deve também se certificar de que o pelotão que está em selecionado será indicado com um marcador ao lado do subitem de menu correspondente. Além disso, você não deseja mudar o título de nenhum dos itens de menu que você definiu. Quais são as quatro ações que você deve tomar para obter o resultado esperado? (Cada resposta correta representa parte da solução. Escolha quatro)

A)
Atribua o valor “Pelotão &Alfa” à propriedade Text do subitem de menu alfaSubmenu
Atribua o valor “Pelotão &Beta” à propriedade Text do subitem de menu betaSubmenu

B)
Atribua à propriedade alfaSubmenu.Shortcut o valor “CtrlA”
Atribua à propriedade betaSubmenu.Shortcut o valor “CtrlB”

C)
No método que trata o evento alfaSubmenu.Click, utilize o seguinte fragmento de código:
    alfaSubmenu.DefaultItem = true;
No método que trata o evento betaSubmenu.Click, utilize o seguinte fragmento de código:
    betaSubmenu.DefaultItem = true;

D)
No método que trata o evento alfaSubmenu.Click, utilize o seguinte fragmento de código:
    alfaSubmenu.DefaultItem = false;
No método que trata o evento betaSubmenu.Click, utilize o seguinte fragmento de código:
    betaSubmenu.DefaultItem = false;

E)
No método que trata o evento alfaSubmenu.Click, adicione o seguinte fragmento de código:
    alfaSubmenu.Checked = true;
No método que trata o evento betaSubmenu.Click, adicione o seguinte fragmento de código:
    betaSubmenu.Checked = true;

F)
No método que trata o evento alfaSubmenu.Click, adicione o seguinte fragmento de código:
    betaSubmenu.Checked = false;
No método que trata o evento betaSubmenu.Click, adicione o seguinte fragmento de código:
    alfaSubmenu. Checked = false;

G)
Defina a propriedade alfaSubmenu.RadioCheck como True
Defina a propriedade betaSubmenu.RadioCheck como True

H)
Defina a propriedade alfaSubmenu.RadioCheck como False
Defina a propriedade betaSubmenu.RadioCheck como False

1 Comments | Post a Comment |

posted  by  catloth  with 

70-316 - Questão 08
Thursday, June 29, 2006 11:30 AM
8) Você é o responsável pela manutenção de uma aplicação que foi escrita por um colega que não está mais trabalhando na empresa. A aplicação lê e escreve arquivos de log localizados na rede local. O autor do código incluiu o seguinte código de depuração para facilitar a manutenção do código:

try {
    Debug.WriteLine(“Executando dentro do bloco try”);
    throw(new IOException());
}
catch (IOException e) {
    Debug.WriteLine(“Uma exceção do tipo IOException foi capturada”);
}
catch (Exception e) {
    Debug.WriteLine(“Uma exceção do tipo Exception foi capturada”);
}
finally {
    Debug.WriteLine(“Executa