Jag bloggar numera på http://blog.dileno.com ».

Prenumerera på RSS

Arkiv för februari 2009:

Så inaktiverar du autocomplete för adressfältet i Firefox 3

Autocomplete för adressfältet i Firefox 3Med Firefox 3 kom ett nytt och smartare adressfält. När du skriver in en adress i adressfältet så ger Firefox dig en lista på webbsidor som ligger i historiken eller bland dina bokmärken.

Personligen har jag stört mig enormt på denna funktion och gillar den inte alls.

Det finns flera sätt att stänga av autocomplete-funktionen på. Det smidigaste är att helt enkelt gå in i Firefox:s konfigurationsfil och ändra där.

Inaktivera autocomplete-funktionen med about:config

  1. Skriv in about:config i adressfältet och tryck enter.
  2. Leta rätt på browser.urlbar.maxRichResults.
  3. Dubbleklicka på browser.urlbar.maxRichResults och sätt värdet till -1.
  4. Starta om Firefox
  5. Klart!

ManicTime håller koll på din tid

Standardvyn i ManicTimeManicTime är ett program som loggar din datoranvändning åt dig. Programmet visar din aktivitet vid datorn, vilka program du använt under hur lång tid och ger dig möjligheter att tagga det du har gjort.

Taggning, aktivitet och applikationer

ManicTime körs i bakgrunden och är inte alls speciellt prestandakrävande. När du vill kan du öppna programmet som i standardvyn visar dig tre tidslinjer - dina egna taggar, aktivitet och applikationer:

  • Aktivitet visar hur mycket du faktiskt suttit vid datorn och hur lång tid du har varit borta från den.
  • Applikationer visar vilka program du har använt vid vilken tid, och under hur lång tid.
  • Taggar är spännande och nästan mest användbar - här kan du själv lägga in specifik information om det du gjort under en viss period, exempelvis senaste halvtimmen.

Programvy i ManicTimeManicTime är ett utmärkt verktyg vid tidrapportering. Du kan ange olika färger för olika program och taggar, vilket gör det enkelt att urskilja vad du faktiskt jobbat med. Att programmet sedan är gratis gör det hela ännu bättre.

Ladda ner ManicTime

ManicTime finns för Windows och kan köras på exempelvis både Windows XP och Windows Vista.

Ladda ner ManicTime

Förbättra prestanda i ASP.NET genom att inte använda DataBinder.Eval

DataBinder.Eval-metoden är välanvänd för att skicka in ett argument och returnera ett resultat. Det DataBinder.Eval gör är att casta Container.DataItem till dess verkliga typ. Så här:

<%# DataBinder.Eval(Container.DataItem, "Heading") %>

DataBinder.Eval använder sig av .NET reflection för att avgöra vilken typ Container.DataItem ska castas till. Användandet av reflection gör att DataBinder.Eval är mer prestandakrävande än vad som egentligen behövs.

För att öka prestandan kan du i stället explicit casta Container.DataItem till dess specifika typ. Så här:

<%# ((DbDataRecord)Container.DataItem)["Heading"] %>

Använd kanoniska adresser och hjälp sökmotorer indexera rätt

På Internet finns idag mängder av duplicerat innehåll, det vill säga samma innehåll som finns på flera olika ställen på samma webbplats (och olika webbplatser med). Vad gäller exempelvis bloggar så finns samma sida ofta i en kategori för bloggen och även på en egen sida. E-handelswebbplatser brottas också med problemet. Det skapar problem för sökmotorer och är inte speciellt SEO-vänligt. Det är här kanoniska adresser (canonical url:s) kommer in!

Kanoniska adresser till räddningen

Med hjälp av kanoniska adresser kan du nu bestämma vilken adress som är standardadressen, den kanoniska adressen, för ett specifikt innehåll på webbplatsen. Detta gör du genom att använda dig av ett nytt link rel-attribut: canonical.

Lägg till det nya link rel-attributet i <head> på sidan med adressen du vill ska indexeras av sökmotorer - så här:

<link rel="canonical" href="http://blogg.dileno.com/arkiv/200812/dags-att-borja-blogga/" />

Läs mer om kanoniska adresser i Googles Webmaster-blogg.

Bli mer produktiv och effektiv genom att inte snåla in på kontorsutrustning

Om och om igen stöter jag på sammanhang där det snålas in på kontorsutrustning för att spara pengar. Inget kan dock vara mer fel. När det handlar om en arbetsplats så är det mycket viktigt att välja rätt och bra utrustning så att fokus kan läggas på att utföra jobbet, utan irritationsmoment.

När det handlar om kontorsutrustning är det väldigt lätt att köpa det billigaste som finns att få tag på. Typisk utrustning företag försöker spara pengar på: kontorsstol, skrivbord, dator, mus, tangentbord och datorskärm.

Kontorsstol och skrivbord

HermanMiller Aeron-stolenEn kontorsanställd sitter sannolikt minst sex timmar vid sitt skrivbord varje dag - under vissa omständigheter betydligt längre tid. Då är det av stor betydelse att det är bra kvalité på kontorsstolen och skrivbordet.

Framför allt kontorsstolen spelar stor roll; en dålig kontorsstol är obekväm, hård att sitta på och kan skapa ryggproblem. En bra kontorsstol är ergonomisk med flera möjligheter till anpassning. Om du letar efter en bra kontorsstol så ska du se till att stolen åtminstone uppfyller dessa kriterier:

  • justerbar i höjdled
  • justerbar rygg
  • har armstöd

Vad gäller skrivbordet så är det viktigt att inte snåla på skrivbordsyta. Höj- och sänkbara skrivbord måste inte kosta en förmögenhet idag. Ett justerbart skrivbord underlättar dessutom avsevärt, speciellt vid långa arbetspass.

Stolen till höger är en HermanMiller Aeron-stol. Dessa stolar var mycket populära under IT-boomen och används idag av företag som Adobe och Microsoft.

Dator

En långsam dator är en produktivitetsdödare och inte direkt en moralhöjare. En anställd förväntar sig att kunna utföra sitt arbete i en viss takt och om datorn är för långsam är det givet att tid går till spillo.

En dator kan lätt snabbas upp genom att uppgradera med mer minne. Minne är dessutom väldigt billigt i förhållande till vad det ger tillbaka.

Mus och tangentbord

Microsoft Wireless Laser Desktop 7000Det som är absolut mest vanligt att spara in pengar på är nästan det viktigaste - mus och tangentbord. Många använder standardutrustningen som följer med datorn. Ett standardtangentbord och en standardmus är okej, men håller inte i längden. Dagens möss och tangentbord har en rad användbara multimediafunktioner som standardutrustning inte har. Det är ett måste idag att ha en optisk mus, eller en lasermus.

Att ha samma utrustning hemma som på jobbet underlättar och ska inte underskattas!

Exempel på bra paket:

Jag själv använder Logitechs tangentbord diNovo Edge tillsammans med en tidig version av musen MX518. Det är dyr utrustning, men den är värd sitt pris flera gånger om!

Skärm

En bra tft-skärm är skonsam mot ögonen. Dagens tft-skärmar har bra responstid, god kontrast och är dessutom prisvärda. En widescreen tft-skärm på 22 tum kostar inte mer än 2000 kr idag och är en mer än utmärkt standardskärm för de flesta arbetsplatser. En widescreenskärm ger större arbetsyta än en normal skärm och studier har visat att ju större arbetsyta, desto effektivare arbete.

En skärm ska kunna justeras, antingen i höjdled eller genom att vicka på den. Helst på båda sätten. Om en skärm inte kan justeras på något av dessa sätt så är den skärmen inte värd att köpa!

Två skärmar ökar effektiviteten ännu mer!

För ett antal år sedan utförde Microsoft studier som visade att om man började använda två (eller fler) skärmar till samma dator så ökade produktiviteten med 9-50 %. Det finns fler källor som bekräftat liknande siffror.

Ponera att en extra skärm sparar 30 minuter om dagen; det skulle ge 100 timmar per år. Om snittpriset per arbetad timme är 500 kr så får man igen 50000 kr på den extra skärmen - vilket skulle ge ca 25 x investeringen tillbaka på ett år, förutsatt att skärmen kostar 2000 kr. Siffror som skulle få vem som helst att förstå att en extra skärm är en investering väl värd kostnaden!

Slutligen

Att lägga ner bara aningen mer pengar på kontorsutrustning kommer att ge en effekt som absolut ökar komforten och produktiviteten. Sitter man mycket vid en dator är ergonomin A och O. Många små förbättringar tillsammans gör att helheten kommer att ge en bra upplevelse på jobbet och du kommer att inse att slutresultatet är väl värd investeringen.

Binero är Sveriges bästa webbhotell

Binero - Sveriges bästa webbhotellInternetWorld har i dagarna publicerat en serie av webbhotellstest och idag publicerade de resultatet - att Binero är Sveriges bästa webbhotell 2009.

Jag har varit kund hos Binero länge och har alltid varit nöjd. Anders Aleborg och grabbarna gör ett riktigt bra jobb och jag rekommenderar alltid Binero till dem som behöver ett pålitligt och stabilt webbhotell.

Några av anledningarna till att Binero vinner InternetWorld:s test: öppen attityd, generösa villkor, grym kontrollpanel, klockren support och bra driftsäkerhet. Mycket mer behöver man inte önska sig!

Om du har ett annat webbhotell än Binero så är det lätt att byta till Binero. Jag rekommenderar dig att göra det!

Språkhantering på enspråkiga EPiServer-webbplatser och language-attributet

Om du har en enspråkig EPiServer-webbplats så ska du normalt sett kunna surfa in på webbplatsen och se innehållet utan att behöva skriva in exempelvis /en eller /sv efter adressen - det vill säga om du surfar in på www.webbplats.com så ska den automatiskt visa innehållet på rätt språk.

Jag har senast på en enterprisewebbplats med en enspråkig webbplats och flera flerspråkiga webbplatser sida vid sida stött på problem med språkhanteringen.

När jag surfade in på den enspråkiga webbplatsen (www.webbplats.com) så visades fel innehåll. När jag däremot surfade in på www.webbplats.com/en så visades rätt innehåll.

Lägg till language-attributet på site-elementet i Web.Config

Lösningen på problemet är att specifikt sätta språket för webbplatsen i Web.Config. Leta upp <sites> i Web.Config (alternativt episerver.Config om du har separata konfigurationsfiler) och lägg till language="språkid" i site-elementet, så att det ser ut så här:

<sites>
<site language="en" description="My EPiServer website" siteId="MyEPiWebsite">
<siteSettings ...></siteSettings>
</site>
</sites>

Så löser du problemet med EPiServer CMS 5 R2 SP1 och TypeInitializationException

Jag har i dagarna uppgraderat till senaste versionen av EPiServer, nämligen CMS 5 R2 SP1. När jag använder nya Deployment Center för att installera en ny webbplats så fungerade webbplatsen klockrent - men när jag skulle tillbaka till en ännu ej uppgraderad EPi-webbplats stötte jag på problem, nämligen följande:

[TypeInitializationException: The type initializer for 'EPiServer.DataAbstraction.UnifiedPathInfo' threw an exception.

Uppgradera din EPi CMS 5-webbplats till SP1

Efter några om och men tog jag backup på den befintliga EPi-databasen för webbplatsen och använde sedan Deployment Center för att uppgradera webbplatsen till senaste EPiServer-versionen. (I Deployment Center, välj alternativet Upgrade site with SQL Server database -> Run och välj sedan din webbplats under noden som dyker upp.) Då fungerade webbplatsen igen.

Värt att notera

Innan jag uppgraderade till senaste versionen av EPiServer stötte jag dock på ett antal tips som kan vara värda att notera:

På irc-kanalen #epicode fick jag även förslaget att dubbelkolla så att sökvägarna till CMS 5-specifika installationen var korrekta - framför allt se till att inga dubbla snedstreck (alltså \\) dykt upp.

Det kompletta felmeddelandet

Som referens, här är det kompletta felmeddelandet jag fick:

Stack trace:

[TypeInitializationException: The type initializer for 'EPiServer.DataAbstraction.UnifiedPathInfo' threw an exception.]
at EPiServer.DataAbstraction.UnifiedPathInfo.Load(String path)
at EPiServer.FileSystem.DefaultAccessControlList..ctor(String path)
at EPiServer.Web.Hosting.DirectoryAccessControl..ctor(String virtualPath)
at EPiServer.Web.Hosting.UnifiedDirectory.get_DirectoryAC()
at EPiServer.Web.Hosting.UnifiedDirectory.QueryAccess()
at EPiServer.Web.Hosting.UnifiedDirectory.QueryDistinctAccess(AccessLevel access)
at EPiServer.Web.Hosting.VirtualPathVersioningProvider.GetDirectory(String virtualPath)
at EPiServer.Web.Hosting.VirtualPathHandler.InitializeProviders(ProviderSettingsCollection providers)
at EPiServer.Web.InitializationModule.InitializeVirtualPathProviders(VirtualPathElement vpElement)
at EPiServer.Web.InitializationModule.Initialize(EPiServerSection config, Settings settings, ConnectionStringSettingsCollection connectionStringSettings)
at EPiServer.Web.InitializationModule.StaticInitialization()
at EPiServer.Web.InitializationModule.Application_BeginRequest(Object sender, EventArgs e)
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

[Inner exception TypeInitializationException: The type initializer for 'EPiServer.CacheManager' threw an exception.]
at EPiServer.StaticCacheKey.EnsureKey()
at EPiServer.StaticCacheKey..ctor(String keyName)
at EPiServer.DataAbstraction.UnifiedPathInfo..cctor()

Så börjar du använda namespaces och controls i Web.Config

I ASP.NET-sidor och användarkontroller kan du använda dig av Import och Register-direktiven för att hantera namespaces direkt på sidan och på så sätt få intellisense. Har du många sidor så är det dock smidigare att använda Web.Config för detta ändamål. Jag visar dig hur.

Import Namespace och Register Namespace

Du har säkert använt dig av följande kod för att importera ett namespace eller en kontroll och få intellisense direkt på en ASP.NET-sida i Visual Studio:

<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Register Namespace="Dileno.Web.Controls" TagPrefix="Dileno" Assembly="CustomControls" %>

Det fungerar bra ifall om du har få namespaces att importera och registera, men ju fler - desto jobbigare att underhålla och speciellt om du har flera sidor i din webbapplikation. Då finns det en lösning på problemet - att använda sig av Web.Config-magi!

Web.Config, namespaces och controls till räddningen

I stället för att ange samma namespaces på många olika sidor, behöver du bara ange namespaces en gång i Web.Config - och sedan fungerar intellisense på övriga sidor i webbapplikationen. Det du behöver göra är att använda dig av <namespaces> och <controls> i Web.Config, så här:

<system.web>
<pages>
<namespaces>
<add namespace="System.Data.SqlClient" />
<add namespace="System.IO" />
<add namespace="Dileno.Classes" />
</namespaces>
<controls>
<add namespace="Dileno.Web.WebControls" TagPrefix="Dileno" Assembly="CustomControls" />
</controls>
</pages>
</system.web>

Grymt smidigt och en tidsbesparare.

Så döljer du mappar för Windows Vistas sökindexering

Jag har tidigare skrivit om hur du stänger av sökindexeringen i Windows Vista. I stället för att stänga av indexeringen, kan du finjustera exakt vad du ska kunna söka efter. Jag visar dig hur du döljer mappar som du inte vill ska indexeras för sök i Windows Vista.

Hur du döljer specifika mappar för sökindexering

  1. I Windows Vistas sök, skriv in Indexing Options och välj alternativet som dyker upp i menyn.
  2. Under Indexing Options, klicka på Modify.
  3. Indexed Locations dyker upp och det är här du gör dina inställningar:
    Indexed Locations i Windows Vista
  4. Under Indexed Locations är det indexerade innehållet ibockat. För att dölja innehåll för Vistas sökindexering, avbockar du helt enkelt mappen vars innehåll du inte vill ska dyka upp i sökresultaten när du söker. I kolumnen Exclude visas de mappar du har dolt - i mitt fall Videos.

Justera i Utforskaren

Du kan även gå in i egenskaper för en specifik mapp och välja bort indexering för mappen. Så här gör du:

  1. Högerklicka på en mapp och välj Properties, tryck sedan på Advanced.
  2. I den nya rutan Advanced Attributes avbockar du alternativet Index this folder for faster searching och trycker på OK.Advanced attributes i Windows Vista
  3. Klart!

Att byta standardspråk på en enspråkig EPiServer-webbplats

Om du har en EPiServer-webbplats som är enspråkig så är det troligt att språket som är valt är standardspråket för EPiServer - det vill säga engelska. Detta medför att CultureInfo för webbplatsen är en-GB vilket i sin tur genererar bland annat fel format för datum - om innehållet på webbplatsen är på ett annat språk än engelska.

Ändra standardspråk i EPiServer-databasen

Det smidigaste sättet att sätta ett standardspråk i EPiServer är att gå in databasen för webbplatsen och ändra i tabellen tblLanguageBranch:

  1. Använd SQL Server Management Studio för att leta upp din EPiServer-databas och leta upp tabellen tblLanguageBranch.
  2. Högerklicka på tblLanguageBranch och välj Open Table.
  3. Om du har en enspråkig webbplats visas en rad där LanguageID-kolumnen har en-GB som värde. Byt ut en-GB mot sv-SE (eller ditt val av standardspråk) och gå ut ur tabellen igen. Klart!

Så här ska tabellen se ut om du har satt svenska som standardspråk för webbplatsen:

Tabellen tblLanguageBranch i EPiServer

Observera att detta är gjort på EPiServer CMS 5 R2 och inte testat i en annan EPiServer-version.

Så skriver du ut HTML-kod som ligger i XML-block

Ibland måste man ha HTML-kod i XML-block för att formattera text som ligger i XML-block och ska visas på en webbsida. Jag visar dig två metoder som kan spara tid för dig - och samtidigt skriva ut HTML-kod som ligger i XML-block korrekt.

CDATA

Du kan använda dig av CDATA-blocket för att bädda in HTML-kod i ett XML-element. Då startar du CDATA-blocket med <![CDATA[ och avslutar med ]]>. Så här:

<Address>
<![CDATA[
Kungsgatan 7
<br />SE-11343 Stockholm
<br />Sverige
]]>
</Address>

Entiteten för start- eller slut-taggen

Om det inte fungerar att använda sig av CDATA så kan du i stället skriva ut entiteten för start- eller slut-taggen. < blir då &lt; och > blir då &gt; Så här:

<Address>
Kungsgatan 7
&lt;br /&gt;SE-11343 Stockholm
&lt;br /&gt;Sverige
</Address>

Så fixar du felmeddelandet "The printer Adobe PDF cannot be found"

The Printer Adobe PDF cannot be found

Om du får felmeddelandet The printer "Adobe PDF" cannot be found när du ska öppna ett dokument, exempelvis en PowerPoint-presentation, så löser du problemet genom att starta tjänsten Print Spooler. Så här gör du för att starta tjänsten Print Spooler:

  1. Gå till Start->Kör och skriv in services.msc (I Windows Vista, sök bara på services.msc).
  2. Leta upp tjänsten som heter Print Spooler.
  3. Högerklicka på tjänsten och välj Start.

Om alla alternativ i högerklickmenyn är inaktiverade så måste du välja Startup type för tjänsten. Det gör du så här:

  1. Dubbelklicka på tjänsten Print Spooler.
  2. Under Startup type, välj Automatic och se till att tjänsten är startad.

Så hämtar du alltid en sida från servern i stället för cachen

Vill du att en sida alltid ska hämtas från servern och aldrig ska cachas i webbläsaren så är det lätt att stöta på problem. Jag visar dig hur du löser problemet för samtliga webbläsare.

Enbart meta-taggar fungerar inte

Jag tänkte lösa det genom att använda två meta-taggar - men det fungerade först inte alls, och sedan inte i alla webbläsare.

Dessa meta-taggar fungerar inte i om du vill att en sida alltid ska hämtas från servern (både IE7 och Firefox hämtar från cachen i stället):

<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="pragma" content="no-cache" />

När jag upptäckte att det inte fungerade så försökte jag i stället att lägga till no-cache på serversidan i Response-headern och som cache-direktiv. Det fungerade i Internet Explorer 7, men inte i Firefox.

Lösningen för att alltid hämta sidor från servern

Det som behövs är att även använda Response.Cache.SetNoStore, så slutar sidan att cachas i samtliga webbläsare.

Den kompletta lösningen:

Response.AddHeader("pragma","no-cache");
Response.CacheControl = "no-cache";
Response.Cache.SetNoStore();

WinDirStat ger dig statistik om din hårddisk

WinDirStat-visualisering av hårddiskenWinDirStat är ett gratis verktyg du kan använda för att få statistik över din hårddisk. Programmet visar en karta med färgade områden som talar om vad som tar upp mest utrymme på hårddisken. Perfekt när du vill veta varför hårddisken är på väg att ta slut och vad som egentligen tar upp allt utrymme.

Ladda ner WindirStat

Därför ska du starta eget i lågkonjunktur

En lågkonjunktur behöver inte vara en så dålig tid att starta eget i som många tror. I denna bloggpost tar jag upp några av fördelarna med att starta eget företag i en lite sämre ekonomi.

Dina konkurrenter är färre

I en lågkonjunktur är det många företag som går i konkurs. Om du startar eget kan du starta litet och allt eftersom efterfrågan på dina tjänster blir större kan du utöka och ta marknadsandelar. På så sätt har du en god position inför den kommande högkonjunkturen.

Exempel på företag som startades i lågkonjunktur: Microsoft och Apple.

Dina kostnader kommar att vara låga

När du startar ditt företag kommer företaget vara så litet så att omkostnaderna inte blir speciellt höga jämfört med kostnader för stora företag. Stora företag har inte helt sällan betydelsefulla administrativa kostnader. Ett litet företag kommer att ha lägre hyra för sitt kontor jämfört med ett stort företag. Kostnadseffektivitet är a och o om man ska driva företag i lågkonjunktur.

Du kan sätta rimliga löner

Under en högkonjunktur stiger lönerna och hos vissa företag stiger lönerna orimligt mycket. Det är ingen hemlighet att löneutvecklingen mattas av under en lågkonjunktur. En del företag tvingas till och med att sänka lönen för sina medarbetare.

I en lågkonjunktur är det lättare att hitta personal som du kan ge en rimlig lön från början.

Du kommunicerar smidigare

Det är kortare beslutsvägar och du kommunicerar smidigare i ett litet företag. Detta gör att du lättare kan anpassa dig efter kundens önskemål eller snabbt kan göra justeringar som behövs. Att vara flexibel är en viktig egenskap i en lågkonjunktur.

Du kan fokusera på några få områden

Är det bäst att vara bra på det mesta eller expert inom några få områden? I en lågkonjunktur är det onekligen viktigt att vara mångsidig, men samtidigt ha spetskompetens. Många mångsidiga företag utan spetskompetens konkurrerar med varandra i en lågkonjunktur - då är det bättre att nischa sig och vara expert på några få områden.

I en ekonomisk svacka krävs det medarbetare som kan kavla upp armarna och verkligen utföra ett gott jobb.

Förbered dig på hårt arbete

I en svagare marknad är det extra viktigt att vara beredd på att lägga ner mer tid för företaget. Därför är det viktigt att du är den typ av person som kan göra avkall på en del av ditt privatliv, till förmån för företagandet, som blir en livsstil.

Det är viktigare att du är rätt person för uppdraget än tidpunkten du väljer att starta företag.

Det är även mycket viktigt att du väljer rätt medarbetare från början. Den tid du lägger ner på rätt rekrytering i början kommer du att ha igen många gånger om senare.

Kom också ihåg - det är bättre att agera nu än senare.

Så stänger du av autorun och autoplay i Windows

För att försäkra sig mot snabbt spridande virus som bland annat sprider sig via USB-minnen, är det en god idé att stänga av autorun och autoplay i Windows, för att öka säkerheten. Jag visar dig hur.

Instruktioner för att stänga av autorun och autoplay

  1. Gå till Start->Kör och skriv in gpedit.msc, välj Ok
  2. Gå till Datorkonfiguration->Administrativa mallar->System
    I Windows Vista: Datorkonfiguration->Administrativa mallar->Windows-komponenter->AutoPlay-policies
  3. I listan, dubbelklicka på Inaktivera automatisk uppspelning (i vissa fall Turn off Autoplay) och se till att alternativet Inaktiverad (Disabled) är valt. Tryck Ok.

Du kan även ladda ner Tweak UI från Microsoft för att göra dessa inställningar i Windows XP.

Till sidhuvudet

Clicky Web Analytics