FarseerPhysics - Fysikmotor till Silverlight 1.1

http://www.codeodyssey.se/upload/resource/blog/FarseerPhysics.png

Läste hos Johan Lindfors att det släppts en fyskikmotor till Silverlight 1.1 som kallas FarseerPhysics. Det finns även en version för XNA-plattformen och går alltså att använda till utveckling till Xbox 360 och Windows.

Källkoden finns att ladda hem på Codeplex och man kan kolla på demos på Blue Rose Games.

Ännu ett skäl till att börja leka med Silverlight med andra ord. Denna fysikmotorn verkar fungerar bättre än de motsvarigheter jag hittills sett till Flash.

By Jesper Lind

Skydda mot URL-injektion med TryParse

Har precis som Mads Kristensen märkt av att attacker med URL-injektioner har ökat det senaste.

På en sajt har jag fått in anrop som ser ut ungefär som här:

http://www.examplesite.com/product.aspx?categoryid=0 and user>0
http://www.examplesite.com/product.aspx?categoryid=0 ' and user>0 and ''='

URLerna är påhittade men på slutet av dem ser ni hur roboten lägger till extra strängar i parametern. Jag hade inte tänkt på att skydda mot detta och det blev error när sidan försökte konvertera parametern till en integer.

För att undervika fel kan man använda TryParse istället för Convert.ToInt32 (om man nu vart lika oförsiktig som jag från början).

int categoryId = -1;
Int32.TryParse(Request.QueryString["categoryid"], out categoryId);

Läs mer på MSDN eller i kommentarerna till ett inlägg hos CodeBetter.com.

By Jesper Lind

Få insyn i databasen med SQL Server 2005 Express Profiler

På de dyrare licenserna av MS SQL Server så får man med Profiler som är ett bra verktyg för att se vilka querys som körs. Denna funktion finns tyvärr inte på SQL Server Express.

Det finns dock ett open source-alternativ som heter SQL Server 2005 Express Profiler och finns att ladda hem på Google Code.

Programmet bjuder inte på några fantastiska finesser men klarar av det grundligaste. Förhoppningsvis blir det bättre i framtida versioner. Tack till vår Glenn för fyndet. 

By Jesper Lind

Uppdatering 10920 av AJAX Control Toolkit

Uppdatering 10920 av AJAX Control Toolkit släpptes för lite mer än en vecka sen. Har installerat den på ett eget projekt idag och allt verkar fungera bra.

Uppdateringen innehåller inga ändringar som förstör gammal funktionalitet utan bjuder istället på många buggfixar. Man behöver inte modifiera Web.Config på något sätt utan det är bara att byta ut AjaxControlToolkit.dll mot den nyare versionen. Filerna finns att ladda ner på CodePlex.

Shawn Burke skriver mer om uppdateringen.

Delay's blog går in lite djupare och berättar även att man hade planerat att inkludera ett förbättrat ramverk för testning. Man hann dock inte med att få klart det i tid utan beslutade sig för att skjuta på det till framtiden. Något att se fram emot till nästa uppdatering med andra ord.

By Jesper Lind

Förhindra PostBack på ImageButton och kör JavaScript istället

Hade lite problem med att en ImageButton gjorde postback hela tiden, fast jag ville köra ett eget JavaScript. Trixet är att se till att return false; är med i slutet av JavaScript-anropet som jag läste om här.

<asp:TextBox ID="tbSearch" runat="server" />
<asp:ImageButton id="ibSearch"
OnClientClick="do_search();return false;"
ImageUrl="search-button.gif" runat="server" />
<script type="text/JavaScript">
function do_search()
{
window.location.href="search-results.aspx?s=" + document.getElementById('<%=tbSearch.ClientID %>').value;
}</script>

By Jesper Lind

Snyggt sätt att använda sig av Sessions

De flesta har någon gång stött på problemet med att man vill spara information mellan olika sidor och/eller olika postbacks. Då blir sessions ofta en sista utväg om något annat alternativ inte går att använda. Här visar vi ett enkelt och snyggt sätt att använda Sessionobjectet som vilken variabel som helst. Vi visar hur man enkelt kan spara en arraylist i en session.

public ArrayList NewProducts
{
get
{
if (Session["newProducts"] == null)
{
return new ArrayList();
}
else
{
return Session["newProducts"] as ArrayList;
}
}
set
{
Session["newProducts"] = value;
}
}

Det är en property som håller en session internt. Bara att tilldela och ta ut som en vanlig variabel. Behöver aldrig kontrollera och skapa session vid första användandet. Ofta resulterar det i att det står if(Session["newProducts"]!= null) överallt i koden, men det slipper man nu.

By Glenn Lundberg

Undvik konverteringsfel med nullvärden från databasen

IBland får jag felet "Input string was not in a correct format." vid funktioner enligt nedan och det finns null-värde i databasen.

<%# GetUser(Convert.ToInt32(DataBinder.Eval(Container.DataItem, "UserId"))) %>

Då kan man göra så här för att parera nullvärdena och istället skicka in en nolla.

<%# GetUser(Eval("UserId") == DBNull.Value ? 0 : Convert.ToInt32(Eval("UserId"))) %>

Eller i Code Behind:

int userId = objDataReader["UserId"] == DBNull.Value ? 0 : Convert.ToInt32(objDataReader["UserId"]);

By Jesper Lind