marți, 29 ianuarie 2008

VS.NET 2008 Web Deployment Projects

A aparut versiunea finala de Web Deployment Projects pentru Visual Studio 2008 pe care o puteti downloada aici.

WDP este un add-on pentru Visual Studio care ofera cateva optiuni mai avansate de compilare si deployment pentru proiecte web. Mai multe detalii despre cum se foloseste WDP gasiti pe blog-urile lui Scott Guthrie sau VS Web Developer Team.

Din pacate versiunea Express de Visual Studio nu este suportata.

joi, 24 ianuarie 2008

Un an de Windows Vista


Raportul complet al vulnerabilitatilor descoperite in acest prim an si al update-urilor publicate il puteti downloada aici.

Don't click!

Cum ar fi sa navighezi pe internet fara sa folosesti click-ul de la mouse?
Citind si eu la randul meu niste blog-uri, am dat peste http://www.dontclick.it/ care vine cu o idee extraordinara: navigare fara click-uri:)

Chiar daca site-ul e facut in Flash, un model asemanator de navigare se poate face numai cu HTML si putin JavaScript.

miercuri, 9 ianuarie 2008

How tos: configurare SharePoint 2007 pentru ASP.NET Ajax

Inca un pas facut de SharePoint 2007 catre web 2.0 il reprezinta suportul introdus
incepand cu Service Pack 1 pentru AJAX.NET. Pentru aceasta insa trebuie urmati pasii:
  1. Downloadati si instalati
    ASP.NET 2.0 AJAX Extensions 1.0
    pe server-ul unde esta instalat SharePoint 2007 (daca SharePoint-ul s-a instalat intr-un webfarm, atunci ASP.NET Ajax Extensions trebuie instalat pe fiecare server);
  2. Modificati web.config-ul
    de la website-ul(urile) din SharePoint pentru care vreti sa activati Ajax (voi detalia
    mai jos);
  3. Adaugati ScriptManager-ul la nivel de master.page

Modificarea web.config-ului

Mai intai trebuie sa identificati website-ul din SharePoint pentru care doriti adaugarea
suportului pentru AJAX, retineti portul si deschideti web.config-ul din locatia

file:////[servername]/c$/Inetpub/wwwroot/wss/VirtualDirectories/[PortNumber]/web.config - daca accesati pe retea serverul unde este instalat MOSS 2007

sau

c:\Inetpub\wwwroot\wss\VirtualDirectories\[PortNumber]\web.config - daca accesati direct serverul unde este instalat MOSS 2007

si:

1. Adaugati un element nou <sectionGroup> in interiorul tag-ului <configSections>:

<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">

<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">

<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>

<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">

<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere" />

<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication" />

<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication" />

</sectionGroup>
</sectionGroup>
</sectionGroup>

2. Adaugati tag-ul <controls> in interiorul <system.web>/<pages>:

<pages>
<controls>

<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

</controls>
</pages>

3. Adaugati urmatoarele inregistrari in tag-ul <assemblies> din sectiunea
<compilation>:

<assemblies>

<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

</assemblies>

4. Adaugati urmatoarele linii la sfarsitul sectiunii <httpHandlers>:

<httpHandlers>

<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>

</httpHandlers>

5. Adaugati urmatoarea linie la sfarsitul sectiunii <httpModules>:

<httpModules>

<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>

</httpModules>

6. Inregistrati toate controalele din System.Web.Extensions ca SafeControls in
interiorul sectiunii <SharePoint>/<SafeControls>:

<SafeControls>

<SafeControl Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI" TypeName="*" Safe="True" />

</SafeControls>

7. In final adaugati urmatoarea sectiune la sfarsitul web.config-ului, chiar inainte de tag-ul </configuration>:

<system.web.extensions>
<scripting>
<webServices>

<!-- Uncomment this line to enable the authentication service. Include requireSSL="true" if appropriate. -->

<!--

<authenticationService enabled="true" requireSSL = "truefalse"/>

-->

<!-- Uncomment these lines to enable the profile service. To allow profile properties to be retrieved and modified in ASP.NET AJAX applications, you need to add each property name to the readAccessProperties and writeAccessProperties attributes. -->

<!--

<profileService enabled="true"
readAccessProperties="propertyname1,propertyname2"
writeAccessProperties="propertyname1,propertyname2" />

-->

</webServices>

<!--

<scriptResourceHandler enableCompression="true" enableCaching="true" />

-->

&nbs
</scripting>
</system.web.extensions>
<system.webServer>

<validation validateIntegratedModeConfiguration="false" />

<modules>

<add name="ScriptModule" preCondition="integratedMode" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

</modules>

<handlers>

<remove name="WebServiceHandlerFactory-Integrated" />

<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />

</handlers>
</system.webServer>


Adaugati ScriptManager-ul

E bine stiut ca pentru a putea folosi UpdatePanel-ul si celelalte controale din ASP.NET Ajax
Extension trebuie ca la inceputul paginii sa fie adaugat un tag <asp:ScriptManager...>, iar acesta nu poate exista in pagina decat maxim odata. Varianta cea mai simpla e sa adaugam ScriptManager-ul in interiorul webpart-ului nostru, insa solutia nu merge... Ce se intampla daca in aceeasi pagina adaugam mai multe instante ale webpart-ului nostru? Bineinteles ca se vor crea mai multe instante ale ScriptManager-ului si aplicatia va crapa.

Exista insa doua solutii care elimina aceasta problema:

1. Modificam master page-ul din SharePoint si adaugam tag-ul
<asp:ScriptManager...>
la inceputul acestuia. Acesta poate fi deschis fie cu
SharePoint Designer 2007, sau chiar cu notepad-ul, din view-ul

http://[moss_server]/_catalogs/masterpage/Forms/AllItems.aspx
iar tag-ul
ScriptManager
trebuie adaugat imediat dupa <form>.

2. O varianta mult mai flexibila si la indemana tuturor o reprezinta SmartPart-ul... Pentru aceasta trebuie downloadat si instalat Return of SmartPart (gasiti un document Word in interiorul arhivei care va explica cum se instaleaza si cum se foloseste). Acest modul contine un webpart numit AJAXSmartPart si care poate fi folosit pentru controalele care folosesc
AJAX.

Aruncand un ochi cu reflector-ul lui Roeder in assembly-ul SmartPart-ului, la tip-ul AJAXSmartPart, vedem ca la initializarea controlului se obtine instanta curenta din pagina de ScriptManager, iar daca nu exista se creeaza si se adauga. Asa ca folositi-l cu incredere ;-)

marți, 8 ianuarie 2008

Visual C++ 2008 Feature Pack

Visual C++ 2008 Feature Pack Beta este o extensie la librarile standard din MFC, iar dupa instalarea acestuia (pentru instalare trebuie sa aveti deja versiunea in engleza - ENU - a Visual Studio 2008) veti putea crea aplicatii care:
- au acelasi look ca Office XP, Office 2003 sau Office 2007;
- in loc de meniul standard se pot folosi controale noi asemanatoare cu Ribbons (introduse pentru prima data in Office 2007);
- se pot crea toolbar-uri si panel-uri cu facilitati de docking (asemanator cu docking-ul cu care deja ne-am obisnuit din Visual Studio);
- toolbar-uri si menu-uri customizabile.

Pe langa aceste elementele vizuale, mai include si un subset din TR1:
- smart pointers
- modul de parsare a expresiilor regulate;
- containere noi: tuple, array, unordered set...
- generator de numere aleatoare mai avansat;
- ...

Iar pentru dezvoltare va trebui sa mai downloadati Visual C++ 2008 Feature Pack Documentation