Title
Massor av nya formtaggar. T ex standardtext/hjälptext i sökrutor. Autofokus för att automatiskt sätta markören på det viktigaste fältet:Nya input-typer (range, color, number, email, tel osv).Inbyggda validerare (required och input-typer)Ny enklare DOCTYPE : \r\n## Javascript\r\nNyheterna i Javascript gör att webbläsaren blir en fullvärdigt alternativ till en traditionell applikation.\r\nHämta din geografiska position:8. Notifiering i operativsystemet. Utmärkt för t ex chat, intranät, realtidsövervakning, varningar, epostnotifieringar etc:Detta öppnar följande notifiering på mitt skrivbord:Effektiv tvåvägsrealtidskommunikation mellan klient och server med hjälp av Sockets. Väldigt smidigt för onlinespel, realtidstjänster som aktiekurser, sociala funktioner som chat och forum,Möjlighet att spara strukturerad data på klientsidan utan cookies:Nya selektorer (som jQuery men inbyggt):Canvas och SVG-vektorgrafik:\r\n## CSSStöd för typsnitt:Stöd för automatisk avklippning av för långa texter med ...Samt tekniker som vi redan skrivit om tidigare:a) Webb 2.0-effekter som: avrundade hörn, gradienter, reflections, skuggor, etc.b) Transformationer och animationer (rotera, mjuka övergångar, ease-in, ease-out, osv)\r\nLadda ner IE9 Beta redan idag och bygg om all gammal flash-kod till HTML 5 så att även dina barnbarn kan köra dina applikationer och läsa dina bloggar när dom blir gamla. ;)\r\n\r\nKällor:\r\n\r\nhttp://slides.html5rocks.comhttp://news.cnet.com/8301-30685_3-20014864-264.htmlhttp://en.wikipedia.org/wiki/HTML5_video\r\n\r\n![Bild](http://tekniken.nu/uploads/634202253995292446-image001.png@01CB5529.36EFDAE0__image001.png)", + "html": "I dag släpps Internet Explorer 9 Beta som är den första Microsoft-webbläsaren som har inbyggt stöd för många av de tekniker som benämns HTML 5.
HTML 5 är en teknik dold i mystik då den inte är en officiellt godkänd standard. Det är många som tolkar och gör tillägg till standarden eftersom det kommer dröja länge innan den är fastställd. Det betyder dock inte att man behöver vänta så länge innan man börjar använda de nyheter den innehåller. I dag släpps IE 9 beta som kommer ha stöd för mycket av det som kommer i HTML 5 och som det redan finns stöd för i Firefox och Chrome m.fl.
Tyvärr fungerar inte IE9 i Windows XP och det kommer troligtvis göra att många kommer fortsätta använda IE6 ett tag till. För dessa kan jag tipsa om Chrome Frame om man har IE6 eller Windows XP och ändå vill njuta av de nyheter som HTML 5 redan har att erbjuda. Alla nedanstående nyheter finns redan i Chrome och Firefox. För att se exakt vad som stöds av vilken version av olika browsers samt fler exempel på vad HTML 5 kan erbjuda finnd i denna interaktiva guide.
Varför krångla med HTML 5? Flash funkar ju?
Utvecklingen av HTML-standarden är efterlängtad – det har hänt en hel del med datorerna sedan HTML kom i början på 90 talet. De flesta begränsningarna i HTML- standarden har med åren fyllts igen med hjälp av tredjeparts JavaScript-ramverk (Jquery, ExtJs, Dojo, osv) och pluginverktyg som Flash och Silverlight. Dock finns det många argument för varför det vore bättre att HTML-standarden i stället höll måttet för moderna datorer:
- Plattformsoberoende – Flash finns numera i Linux men det dröjde många år. På iPhone och iPad går det fortfarande inte att använda Flash vilket är en stor anledning till det förnyade intresset för HTML 5.
- Sökmotoroptimering. Att gömma text och applikationer i pluginer som Flash och Silverlight gör att informationen och verktygen inte blir sökbara från sökmotorer
- Tillgänglighet – En knapp i flash är enkel att klicka på om man har en mus och ser knappen, men är man blind eller bara har tangentbordet inkopplat är det svårare. Många hjälpmedel för handikappade går helt bet på Flash-innehåll.
- Framtidssäkerhet – Vem kommer ha flash installerat om tio år – vem kan då se ditt verk? Kommer ni ihåg RealPlayer?
- Bakåtkompatibilitet – Allt innehåll som finns i en HTML 5-baserad webbtjänst går att läsa med en äldre webbläsare.
Vad är nytt i HTML 5?
Eftersom HTML 5 är ett samlingsnamn för en hel del nya tekniker inom flera områden så går det inte att säga exakt vad som är nytt och vad som kommer från andra standarder. Det finns även vissa förslag till standarder som säkerligen kommer att ratas eller förbättras innan de blir standarder. Så är det till exempel med videostödet som ännu inte har nått en enighet kring vilket videoformat som ska stödas.
Därför har jag valt ut de delar som jag tycker ger mest värde och som är så standardiserade att de redan finns tillgänliga i flera moderna webbläsare och därmed kan börja användas. Nyheterna är uppdelade i tre delar, de som rör HTML, de som rör JavaScript och de som rör CSS.
Alla följande exempel kan även testas här.
HTML
- Det mest omtalade är inbyggt ljud- och bildstöd. Dock råder fortfarande ingen enighet om vilket format som ska gälla. Ogg Vorbis har varit det påbjudna valet från W3C men de stora kommersiella spelarna (Apple och Microsoft) har valt att undvika detta format på grund av misstankar om att det kan innehålla delar av patenterad kod och man vill undvika eventuella patentstrider. MPEG LA meddelade nyligen (i augusti 2010) att den tidigare licensierade standarden H.264 kommer vara royaltyfri för online-streaming för all framtid. Detta har gjort att IE9 kommer ha inbyggt stöd för H.264 vilket även Chrome och Safari har. Förhoppningsvis följer även Firefox med på H.264 och då har vi till slut en standard för video på nätet utan plugins. Såhär enkelt är det att använda det inbyggda mediestödet:
<audio src=”sound.mp3 controls></audio>
<video src=”movie.mp4” autoplay controls></video> - Fler semantiska taggar:
<section>
<article>
<header>
<h1>Title</h1> - Massor av nya formtaggar. T ex standardtext/hjälptext i sökrutor. Autofokus för att automatiskt sätta markören på det viktigaste fältet:
- Nya input-typer (range, color, number, email, tel osv).
- Inbyggda validerare (required och input-typer)
- Ny enklare DOCTYPE : <!DOCTYPE html>
Javascript
Nyheterna i Javascript gör att webbläsaren blir en fullvärdigt alternativ till en traditionell applikation.
- Hämta din geografiska position:8.
- Notifiering i operativsystemet. Utmärkt för t ex chat, intranät, realtidsövervakning, varningar, epostnotifieringar etc:
Detta öppnar följande notifiering på mitt skrivbord: - Effektiv tvåvägsrealtidskommunikation mellan klient och server med hjälp av Sockets. Väldigt smidigt för onlinespel, realtidstjänster som aktiekurser, sociala funktioner som chat och forum,
- Möjlighet att spara strukturerad data på klientsidan utan cookies:
- Nya selektorer (som jQuery men inbyggt):
- Canvas och SVG-vektorgrafik:
CSS
- Stöd för typsnitt:
- Stöd för automatisk avklippning av för långa texter med ...
- Samt tekniker som vi redan skrivit om tidigare:
a) Webb 2.0-effekter som: avrundade hörn, gradienter, reflections, skuggor, etc.
b) Transformationer och animationer (rotera, mjuka övergångar, ease-in, ease-out, osv)
Ladda ner IE9 Beta redan idag och bygg om all gammal flash-kod till HTML 5 så att även dina barnbarn kan köra dina applikationer och läsa dina bloggar när dom blir gamla. ;)
Källor:
http://slides.html5rocks.com
http://news.cnet.com/8301-30685_3-20014864-264.html
http://en.wikipedia.org/wiki/HTML5_video
Som utvecklare undviker jag gärna att blanda olika tekniker för mycket i en applikation, detta är förmodligen ett försök att hålla dem hyfsat strömlinjeformade och enkla att överblicka. ”För mycket” är förstås ett troll i resonemanget och relativt förutsättningar såsom inblandade tekniker, problemställning och tillgänglig tid.
Detta var ett dilemma vårt team ställdes inför ganska nyligen när vi skulle bygga om ett av presentationslagren på en sajt och det passade bra att välja ASP.NET MVC som plattform. Presentationslagret och övriga delar av sajten var gjort i ASP.NET Web Forms, det var alltså en ganska stor teknikskillnad. Nästa gång vi behöver göra förändringar i ramverk och övriga delar av sajten kommer vi sannolikt att vilja göra det i MVC också men det passar helt enkelt inte att göra det just nu.
Så hur löser vi det här?
Ska vi skapa ett nytt MVC-projekt och lyfta in äldre delar eller göra det möjligt att köra MVC i vårt befintliga projekt?
Vi valde att lägga till MVC i vårt Web Forms-projekt, framförallt på grund av att dom äldre delarna är långt mer omfattande än det som ska byggas om.
Kombinera ASP.NET Web Forms och ASP.NET MVC 2 i samma projekt
Egentligen är det få saker som skiljer ett Web Forms-projekt från ett MVC 2-projekt. Det som skiljer dem åt är främst referenser, folderstruktur och routes som används för navigering.
1) Visual Studios projekt-GUID för MVC 2
För att Visual Studio ska förstå att ditt Web Forms-projekt även kommer att innehålla MVC 2 behöver du lägga till ett GUID i din projektfil (.csproj, .vbproj eller något annat beroende på ditt språk). Det gör du i<ProjectTypeGuids></ProjectTypeGuids>.Tänk på att att inte ta bort tidigare nycklar härifrån utan enbart lägga till GUID för MVC 2: F85E285D-A4E0-4152-9332-AB1D724D3325.
2) MVC-relaterade referenser
Lägg till System.Web.Routing, System.Web.Abstractions och System.Web.Mvc bland dina referenser.
Gör följandetillägg i web.config:
3) Routings
Lägg till routings i Application_Start (global.asax).
4) Folderstruktur
Lägg till de mappar som skapas automatiskt när man väljer ett nytt MVC-projekt i Visual Studio, nämligen: Controllers, Views och Views/Shared. I Views lägger du till en web.config för att hantera undantagsinställningarna för Views. Också detta är samma web.config som skapas automatiskt för nya MVC-projekt.
5) Kompilering av Views
Views kompileras enbart vid första request, alltså inte när man kompilerar hela projektet i Visual Studio. Det här kan vara en klar fördel eftersom det går snabbare att kompilera och köra igång debuggern när du utvecklar. Nackdelen är förstås att du inte märker de kodfel som smugit sig in i dina Views förrän du är mitt i dina tester lokalt eller när du redan Release-kompilerat och lagt ut i din testmiljö.
Naturligtvis är det möjligt att kompilera även Views samtidigt som du kompilerar projektet i Visual Studio, men om det passar dig och ditt projekt är alltså upp till dig!
Det som krävs för att kompilera Views direkt är ett par ändringar i projektfilen (förhoppningsvis .csproj). I projektfilen finns ett par element för ProjectGroup (<ProjectGroup>) och i den du vill ändra lägger du till<MvcBuildViews>true</MvcBuildViews>.Varje ProjectGroup har egna villkor som används t ex för att ange om inställningarna gäller Debug- eller Releasekompilering. Så om du vill kan du alltså lägga till MvcBuildViews enbart för Release.
Din projektfil kan t ex se ut såhär:
Kör hårt!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Anpassa ASP.NET Web Forms för MVC 2", + "meta_description": "det till!", + "author_id": 1093, + "created_at": 1284989556000, + "created_by": 1093, + "updated_at": 1284989556000, + "updated_by": 1093, + "published_at": 1284989556000, + "published_by": 1093 + }, + { + "id": 443, + "title": "TFS, Subversion och Scrum - våra migreringsefarenheter", + "slug": "tfs-subversion-och-scrum---vara-migreringsefarenheter", + "markdown": "\r\n\r\nI ett års tid har vi på Iteam haft en pågående migrering från Subversion SVN till Microsoft Team Foundation Server (TFS). På vägen har vi gjort en hel del viktiga lärdomar som kanske kan underlätta för andra som ska genomgå samma resa.\r\n\r\nStrategiska val installation och arkitektur:\r\nBörja med att installera TFS och sätt upp en LabCollection där ni testar er fram till vilken mall ni ska använda. Gör detta ordentligt och grundligt innan ni bestämmer er för det är väldigt komplicerat att byta i efterhand (läs mer om det nedan). Vi valde mellan följande mallar:a) Microsoft Scrum 1.0 - vi valde denna på grund av att den är tillräckligt enkel att komma igång med och har färdiga fungerande mallar som är enkla att förklara även för kunder.b) EMC Scrum For Team Systems 3.0 - vi utvärderade denna men den var för krånglig och krävde tjänster som krånglade samt att de bytte namnstandard mellan betaversion och skarp version vilket tvingade oss att uppgradera alla projektenc) Microsoft Agile Template - denna var för enkel då den byggde mycket på att spara viktig data i Excelfiler som inte är integrerade i TFS.Installera helst Application Tier på en virtuell maskin för att underlätta uppgraderingar då du enkelt kan ta en snap-shot inför uppdateringar eller större konfigureringsändringar etcSQL Servern kan vara samma som ni redan använder i utvecklingsmiljönReporting Services kan ligga på SQL servernSkapa externa DNS-namn till och se till att referera till dessa istället för de interna datornamnen eftersom länkar ofta kan bli interna annars:a) tfs.companyname.seb) reports.companyname.sec) sharepoint.companyname.seAnvänd tre olika service-konton för alla tjänster om ni har eller tänker dela upp instanserna mellan olika maskiner. Använd inte NETWORK SERVICE någonstans även om det finns bloggar som hävdar annorlunda.Skapa ett Team Projekt för varje kund och ha skapa grupper i AD för kundens personal och lägg denna gruppen i Contributors för projektet i TFS\r\n## Strategiska val vid migrering SVN till TFSVälj ett migreringsverktyg. Vi valde TimelyMigration SVN2TFS.Se till att ha minst 8GB minne på servern som ska köra migreringen.Installera ”Forward Compatibility Update for Team Foundation Server 2010” då produkten officiellt inte stöder TFS 2010 (än). Den är dock fullt kompatibel med hjälp av Forward Compatibility Pack.Migrera SVN-koden först i testläge till LabCollection då det kommer strula en HEL del på vägen:a) I SVN kan man göra en branch av ett helt träd utan att det ”kostar” någonting men i TFS görs detta annorlunda och i migreringen kommer dessa gigantiska branches äta upp minnet på servern som du använder.b) Mappa därför alla branches både som ni har idag och som ni haft tidigare mot Labels. Detta är väldigt svårt att få rätt utan att köra en hel del Trial and Error.Så fort ett fel uppstår avstannar hela processen och eftersom migreringen tar väldigt lång tid så se till att planera ett antal veckor för att hitta och lösa alla problem.När ett fel har uppstått och du behöver ändra i konfigurationen (oftast lägga in en cloak eller label) så behöver du starta om processen från början. Även om det är praktiskt möjligt att fortsätta processen där den avstannade så är det inte att rekommendera då det oftast uppstår följdfel senare i migreringen som inte uppstår om du börjar om från början.Gör först en torrkörning för att få passera alla viktiga fel i en LabCollection.\r\n## Viktiga skillnader mellan TFS och SVNBranch och Tags är annorlunda än i Subversion. I SVN är en Branch bara en enkel kopia av trunken, en tag är också en kopia av trunken. I TFS är en branch en ”genväg” till trunken – dvs du kommer alltid behöva spara originaltrunken för att inte förlora historik! Nu är detta inget man behöver tänka på i vanliga fall eftersom det som händer när du tar DELETE i TFS så göms bara din nod, men om du någon gång skulle ta bort det teamprojekt där din kod någon gång har legat så försvinner all historik efter detta datum. Farligt!Då konceptet kring Branch är annorlunda i sitt upplägg i TFS går det mycket lättare att merga skillnader fram och tillbaka mellan branches eftersom hierarkin är inbyggd i länkarna. I Subversion får man manuellt komma ihåg var saker hör hemma och vilka revisioner man vill överföra men i TFS sker detta automatiskt vilket är kanon.I Subversion finns det en Repository Browser där man kan göra strukturella förändringar direkt i databasen utan att hämta alla ändringar till sin lokala hårddisk. I TFS måste alla förändringar göras på riktiga objekt, dvs du måste alltid hämta alla filer lokalt innan du tar bort dem eller flyttar på dem.Det går inte att byta namn på ett Team Project när det väl är valt. Om du ändå vill byta namn genom att skapa ett nytt projekt och flytta källkoden till så får du inte ta bort ditt gamla projekt utan att kod-historiken försvinner (se punkt 1).TFS är inbyggt i Visual Studio på ett annat sätt än TortoiseSVN och VisualSVN vilket är både en fördel och nackdel. Vissa verktyg från TortoiseSVN är bättre (Framför allt Diff verktyget). Den största fördelen med TFS för utvecklare är att man har möjlighet att koppla uppgifter/tasks/stories direkt till incheckningar vilket gör det lättare att rapportera sin status och för projektledare att få en överblick över nuvarande läge.Den inbyggda buildmotorn i TFS är grym. Den klarar av att plocka ut hela din lösning från källkoden, pröva att kompilera, köra alla tester och publicera resultatet till er testserver eller bygga MSI paket automatiskt. Med lite justeringar går den även att få att uppdatera assemblyinformation till senaste revisionsnumret från byggmotorn vilket är väldigt bra för felsökning av releaser etc.Blame/Praise heter AnnotationsNytt koncept finns för tillfälliga branches som heter Shelfsets vilket är smidigt att använda då man ska göra kortare tester som ska föras tillbaka till trunken eller om man ska justera saker i livemiljö utifrån en tidigare release och sedan föra tillbaka dessa ändringar till trunken.En viktig skillnad för oss som utvecklar i .NET är att hela TFS motorn är möjlig att styra med webservices. Man kan dessutom prenumerera på händelser via webservices för att i kod få reda på när builds är klara, incheckningar sker för att logga eller automatisera andra flöden.SVN är gratis och TFS kostar rätt mycket pengar med alla licenser och tid för uppsättning.Färdiga rapporter finns tillgängliga för Burndown charts, release history, quality, bugs, etc. Väldigt smidigt för att automatisera delar av rapporteringsbehovet i projekt men också möjlighet att specialskriva egna rapporter med hjälp av Report Builder och Business Intelligence studio i Visual Studio.\r\nNu vet jag att många av ovanstående delar är möjliga med öppna alternativ så som Cruisecontrol etc och i efterhand kan jag inte säga att det har varit enklare att få Team Foundation Server att fungera jämfört med att sätta sig in i Cruise Control etc men den tekniska plattformen och de möjliga vägarna att fortsätta integrera med andra system är väldigt attraktiva i Team Foundation Server. Målet är ju i längden att ha en saftblandare som blinkar rött om någon har checkat in kod som inte kompilerar i byggservern – eller hur? ;)\r\n\r\nFörhoppningsvis har du som läser detta fått en tankeställare som får dig att förstå att ett migreringsprojekt är inget man fixar på en kväll utan som kräver både planering och kunskap. Om du kör fast på vägen och vill ha hjälp i migreringen från SVN så kan du kontakta mig på Iteam eller vår partner som har varit ovärdelig hjälp i migreringen - Osiris Data.\r\n\r\nHar du som läser andra erfarenheter, fördelar och nackdelar att dela med dig av är jag intresserad av att få kommentarer nedan!\r\n", + "html": "I ett års tid har vi på Iteam haft en pågående migrering från Subversion SVN till Microsoft Team Foundation Server (TFS). På vägen har vi gjort en hel del viktiga lärdomar som kanske kan underlätta för andra som ska genomgå samma resa.
Strategiska val installation och arkitektur:
- Börja med att installera TFS och sätt upp en LabCollection där ni testar er fram till vilken mall ni ska använda. Gör detta ordentligt och grundligt innan ni bestämmer er för det är väldigt komplicerat att byta i efterhand (läs mer om det nedan). Vi valde mellan följande mallar:
a) Microsoft Scrum 1.0 - vi valde denna på grund av att den är tillräckligt enkel att komma igång med och har färdiga fungerande mallar som är enkla att förklara även för kunder.
b) EMC Scrum For Team Systems 3.0 - vi utvärderade denna men den var för krånglig och krävde tjänster som krånglade samt att de bytte namnstandard mellan betaversion och skarp version vilket tvingade oss att uppgradera alla projekten
c) Microsoft Agile Template - denna var för enkel då den byggde mycket på att spara viktig data i Excelfiler som inte är integrerade i TFS. - Installera helst Application Tier på en virtuell maskin för att underlätta uppgraderingar då du enkelt kan ta en snap-shot inför uppdateringar eller större konfigureringsändringar etc
- SQL Servern kan vara samma som ni redan använder i utvecklingsmiljön
- Reporting Services kan ligga på SQL servern
- Skapa externa DNS-namn till och se till att referera till dessa istället för de interna datornamnen eftersom länkar ofta kan bli interna annars:
a) tfs.companyname.se
b) reports.companyname.se
c) sharepoint.companyname.se - Använd tre olika service-konton för alla tjänster om ni har eller tänker dela upp instanserna mellan olika maskiner. Använd inte NETWORK SERVICE någonstans även om det finns bloggar som hävdar annorlunda.
- Skapa ett Team Projekt för varje kund och ha skapa grupper i AD för kundens personal och lägg denna gruppen i Contributors för projektet i TFS
Strategiska val vid migrering SVN till TFS
- Välj ett migreringsverktyg. Vi valde TimelyMigration SVN2TFS.
- Se till att ha minst 8GB minne på servern som ska köra migreringen.
- Installera ”Forward Compatibility Update for Team Foundation Server 2010” då produkten officiellt inte stöder TFS 2010 (än). Den är dock fullt kompatibel med hjälp av Forward Compatibility Pack.
- Migrera SVN-koden först i testläge till LabCollection då det kommer strula en HEL del på vägen:
a) I SVN kan man göra en branch av ett helt träd utan att det ”kostar” någonting men i TFS görs detta annorlunda och i migreringen kommer dessa gigantiska branches äta upp minnet på servern som du använder.
b) Mappa därför alla branches både som ni har idag och som ni haft tidigare mot Labels. Detta är väldigt svårt att få rätt utan att köra en hel del Trial and Error. - Så fort ett fel uppstår avstannar hela processen och eftersom migreringen tar väldigt lång tid så se till att planera ett antal veckor för att hitta och lösa alla problem.
- När ett fel har uppstått och du behöver ändra i konfigurationen (oftast lägga in en cloak eller label) så behöver du starta om processen från början. Även om det är praktiskt möjligt att fortsätta processen där den avstannade så är det inte att rekommendera då det oftast uppstår följdfel senare i migreringen som inte uppstår om du börjar om från början.
- Gör först en torrkörning för att få passera alla viktiga fel i en LabCollection.
Viktiga skillnader mellan TFS och SVN
- Branch och Tags är annorlunda än i Subversion. I SVN är en Branch bara en enkel kopia av trunken, en tag är också en kopia av trunken. I TFS är en branch en ”genväg” till trunken – dvs du kommer alltid behöva spara originaltrunken för att inte förlora historik! Nu är detta inget man behöver tänka på i vanliga fall eftersom det som händer när du tar DELETE i TFS så göms bara din nod, men om du någon gång skulle ta bort det teamprojekt där din kod någon gång har legat så försvinner all historik efter detta datum. Farligt!
- Då konceptet kring Branch är annorlunda i sitt upplägg i TFS går det mycket lättare att merga skillnader fram och tillbaka mellan branches eftersom hierarkin är inbyggd i länkarna. I Subversion får man manuellt komma ihåg var saker hör hemma och vilka revisioner man vill överföra men i TFS sker detta automatiskt vilket är kanon.
- I Subversion finns det en Repository Browser där man kan göra strukturella förändringar direkt i databasen utan att hämta alla ändringar till sin lokala hårddisk. I TFS måste alla förändringar göras på riktiga objekt, dvs du måste alltid hämta alla filer lokalt innan du tar bort dem eller flyttar på dem.
- Det går inte att byta namn på ett Team Project när det väl är valt. Om du ändå vill byta namn genom att skapa ett nytt projekt och flytta källkoden till så får du inte ta bort ditt gamla projekt utan att kod-historiken försvinner (se punkt 1).
- TFS är inbyggt i Visual Studio på ett annat sätt än TortoiseSVN och VisualSVN vilket är både en fördel och nackdel. Vissa verktyg från TortoiseSVN är bättre (Framför allt Diff verktyget). Den största fördelen med TFS för utvecklare är att man har möjlighet att koppla uppgifter/tasks/stories direkt till incheckningar vilket gör det lättare att rapportera sin status och för projektledare att få en överblick över nuvarande läge.
- Den inbyggda buildmotorn i TFS är grym. Den klarar av att plocka ut hela din lösning från källkoden, pröva att kompilera, köra alla tester och publicera resultatet till er testserver eller bygga MSI paket automatiskt. Med lite justeringar går den även att få att uppdatera assemblyinformation till senaste revisionsnumret från byggmotorn vilket är väldigt bra för felsökning av releaser etc.
- Blame/Praise heter Annotations
- Nytt koncept finns för tillfälliga branches som heter Shelfsets vilket är smidigt att använda då man ska göra kortare tester som ska föras tillbaka till trunken eller om man ska justera saker i livemiljö utifrån en tidigare release och sedan föra tillbaka dessa ändringar till trunken.
- En viktig skillnad för oss som utvecklar i .NET är att hela TFS motorn är möjlig att styra med webservices. Man kan dessutom prenumerera på händelser via webservices för att i kod få reda på när builds är klara, incheckningar sker för att logga eller automatisera andra flöden.
- SVN är gratis och TFS kostar rätt mycket pengar med alla licenser och tid för uppsättning.
- Färdiga rapporter finns tillgängliga för Burndown charts, release history, quality, bugs, etc. Väldigt smidigt för att automatisera delar av rapporteringsbehovet i projekt men också möjlighet att specialskriva egna rapporter med hjälp av Report Builder och Business Intelligence studio i Visual Studio.
Nu vet jag att många av ovanstående delar är möjliga med öppna alternativ så som Cruisecontrol etc och i efterhand kan jag inte säga att det har varit enklare att få Team Foundation Server att fungera jämfört med att sätta sig in i Cruise Control etc men den tekniska plattformen och de möjliga vägarna att fortsätta integrera med andra system är väldigt attraktiva i Team Foundation Server. Målet är ju i längden att ha en saftblandare som blinkar rött om någon har checkat in kod som inte kompilerar i byggservern – eller hur? ;)
Förhoppningsvis har du som läser detta fått en tankeställare som får dig att förstå att ett migreringsprojekt är inget man fixar på en kväll utan som kräver både planering och kunskap. Om du kör fast på vägen och vill ha hjälp i migreringen från SVN så kan du kontakta mig på Iteam eller vår partner som har varit ovärdelig hjälp i migreringen - Osiris Data.
Har du som läser andra erfarenheter, fördelar och nackdelar att dela med dig av är jag intresserad av att få kommentarer nedan!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "TFS, Subversion och Scrum - våra migreringsefarenheter", + "meta_description": "", + "author_id": 1087, + "created_at": 1285086069000, + "created_by": 1087, + "updated_at": 1285086069000, + "updated_by": 1087, + "published_at": 1285086069000, + "published_by": 1087 + }, + { + "id": 445, + "title": "Reference Paths i byggdefinitioner för Visual Studio Team Foundation Server 2010", + "slug": "reference-paths-i-byggdefinitioner-for-visual-studio-team-foundation-server-2010", + "markdown": "\r\n\r\nAtt lägga till en Reference Path i en Build Definition är superenkelt, bara man vet hur man gör!\r\n\r\n\r\n\r\nVälj ”Edit Build Definition” om du ska lägga till det på en befintlig Build Definition (annars får du upp samma dialog när du skapar en ny). Under fliken ”Process” lägger du sedan till din reference path på MS Build Arguments enligt nedan (där sökväg är just en sökväg till den folder du vill lägga till som Reference Path):\r\n\r\n/p:\"ReferencePath=Att lägga till en Reference Path i en Build Definition är superenkelt, bara man vet hur man gör!
Välj ”Edit Build Definition” om du ska lägga till det på en befintlig Build Definition (annars får du upp samma dialog när du skapar en ny). Under fliken ”Process” lägger du sedan till din reference path på MS Build Arguments enligt nedan (där sökväg är just en sökväg till den folder du vill lägga till som Reference Path):
/p:\"ReferencePath=<sökväg1;sökväg2;sökväg3>\"
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Reference Paths i byggdefinitioner för Visual Studio Team Foundation Server 2010", + "meta_description": "", + "author_id": 1093, + "created_at": 1285680069000, + "created_by": 1093, + "updated_at": 1285680069000, + "updated_by": 1093, + "published_at": 1285680069000, + "published_by": 1093 + }, + { + "id": 449, + "title": "Placeholder är det bästa stället hjälptexter för textfält i HTML 5", + "slug": "placeholder-ar-det-basta-stallet-hjalptexter-for-textfalt-i-html-5", + "markdown": "\r\n\r\nI HTML 5 finns det som vi tidigare har summerat många nya tillägg till HTML-standarden. Ett väldigt bra och smart tillägg är attributet placeholder som ger användaren en liten hjälptext som automatiskt försvinner när användaren ställer markören på inmatningsfältet. Detta har funnits länge i gränssnitten på webbplatser men alltid krävt Javascript. Även ett tag framöver behövs det javascript för att stödja äldre webbläsare men börja redan nu att lägga texten i attributet placeholder på följande sätt:\r\n\r\n```prettyprint lang-html\r\n\r\n```\r\n\r\n\r\nGer följande resultat i IE9, Chrome och Safari m.fl.:\r\n\r\n\r\n\r\nOch med följande fix så får du samma resultat med jQuery:\r\n\r\n\r\n\r\n\r\nOch med följande fix så får du samma resultat med jQuery:\r\n\r\n![Bild](http://tekniken.nu/uploads/634221253183756334-image001.png@01CB6646.AC012090__image001.png)\r\n```prettyprint lang-javascript\r\n$('[placeholder]').focus(function() {\r\n var input = $(this);\r\n if (input.val() == input.attr('placeholder')) {\r\n input.val('');\r\n input.removeClass('placeholder');\r\n }\r\n}).blur(function() {\r\n var input = $(this);\r\n if (input.val() == '') {\r\n input.addClass('placeholder');\r\n input.val(input.attr('placeholder'));\r\n }\r\n}).blur();\r\n```\r\n\r\n\r\nLäs mer om styling av placeholdern osv här:\r\n\r\nhttp://www.hagenburger.net/BLOG/HTML5-Input-Placeholder-Fix-With-jQuery.html\r\n\r\nLäs mer om styling av placeholdern o.s.v. här:http://www.hagenburger.net/BLOG/HTML5-Input-Placeholder-Fix-With-jQuery.html\r\n", + "html": "I HTML 5 finns det som vi tidigare har summerat många nya tillägg till HTML-standarden. Ett väldigt bra och smart tillägg är attributet placeholder som ger användaren en liten hjälptext som automatiskt försvinner när användaren ställer markören på inmatningsfältet. Detta har funnits länge i gränssnitten på webbplatser men alltid krävt Javascript. Även ett tag framöver behövs det javascript för att stödja äldre webbläsare men börja redan nu att lägga texten i attributet placeholder på följande sätt:
Ger följande resultat i IE9, Chrome och Safari m.fl.:
Och med följande fix så får du samma resultat med jQuery:
Läs mer om styling av placeholdern o.s.v. här:
http://www.hagenburger.net/BLOG/HTML5-Input-Placeholder-Fix-With-jQuery.html
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Placeholder är det bästa stället för hjälptexter för textfält i HTML 5", + "meta_description": "", + "author_id": 1087, + "created_at": 1286528517000, + "created_by": 1087, + "updated_at": 1286528517000, + "updated_by": 1087, + "published_at": 1286528517000, + "published_by": 1087 + }, + { + "id": 453, + "title": "Använd Excel 2007s databas-provider på dator med Office 2010", + "slug": "anvand-excel-2007s-databas-provider-pa-dator-med-office-2010", + "markdown": "\r\nOm man byggt en applikation som använder en OLE DB-anslutning till Excel, t.ex. för att läsa eller skapa en excelfil med hjälp av databasklasser, så ansluter den i regel till en provider för en specifik version av Excel. I mitt fall hade jag byggt en som använde Excel 2007, och efter uppgradering till Office 2010 blev testning av funktionen lokalt lite jobbig:\r\n\r\n”The ’Microsoft.ACE.OLEDB.12.0 provider is not registered on the local machine”\r\n\r\nSom tur är finns själva databaskopplingen för Excel 2007:\r\n\r\nhttp://www.microsoft.com/downloads/en/details.aspx?familyid=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en\r\n\r\nGlöm inte att ställa om applikationspoolen till att köra 32-bitarsapplikationer (oavsett om du använder den här länken eller har Excel 2007 installerat) eftersom Microsoft tyvärr inte har orkat skriva en 64-bitarsversion av den här providern...\r\n![Bild](http://tekniken.nu/uploads/634236165947418134-recover_excel_logo.png)", + "html": "
Om man byggt en applikation som använder en OLE DB-anslutning till Excel, t.ex. för att läsa eller skapa en excelfil med hjälp av databasklasser, så ansluter den i regel till en provider för en specifik version av Excel. I mitt fall hade jag byggt en som använde Excel 2007, och efter uppgradering till Office 2010 blev testning av funktionen lokalt lite jobbig:
”The ’Microsoft.ACE.OLEDB.12.0 provider is not registered on the local machine”
Som tur är finns själva databaskopplingen för Excel 2007:
Glöm inte att ställa om applikationspoolen till att köra 32-bitarsapplikationer (oavsett om du använder den här länken eller har Excel 2007 installerat) eftersom Microsoft tyvärr inte har orkat skriva en 64-bitarsversion av den här providern...",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "Använd Excel 2007s databas-provider på dator med Office 2010",
+ "meta_description": "",
+ "author_id": 6,
+ "created_at": 1288019793000,
+ "created_by": 6,
+ "updated_at": 1288019793000,
+ "updated_by": 6,
+ "published_at": 1288019793000,
+ "published_by": 6
+ },
+ {
+ "id": 455,
+ "title": "Episerver Relate+ installerar en senare Episerver.Framework vilket skapar konflikter",
+ "slug": "episerver-relate-installerar-en-senare-episerverframework-vilket-skapar-konflikter",
+ "markdown": "\r\n\r\nHär är ett tips på orsaken till att du börjat få konflikter gällande olika versioner av Episerver Framework med felmeddelanden som:\r\n\r\n Could not load file or assembly 'EPiServer.Framework, Version=6.1.79.0\r\n\r\nDet kan bero på att någon i ditt team har installerat Episerver Relate+ på sin dator och att EPiServers installationsprogram därefter inkluderar den senaste versionen av Episerver.Framework i nya projekt även om inte Relate+ används vilket innebär att antingen behöver alla i teamet installera Relate+ eller den inkluderade installationsfilen Episerver.Framework.6.1.msi som finns i det installationspaketet.\r\n\r\nInstallationspaketet för Relate+ finns på Episerver World.\r\n",
+ "html": "
Här är ett tips på orsaken till att du börjat få konflikter gällande olika versioner av Episerver Framework med felmeddelanden som:
Could not load file or assembly 'EPiServer.Framework, Version=6.1.79.0
Det kan bero på att någon i ditt team har installerat Episerver Relate+ på sin dator och att EPiServers installationsprogram därefter inkluderar den senaste versionen av Episerver.Framework i nya projekt även om inte Relate+ används vilket innebär att antingen behöver alla i teamet installera Relate+ eller den inkluderade installationsfilen Episerver.Framework.6.1.msi som finns i det installationspaketet.
Installationspaketet för Relate+ finns på Episerver World.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Episerver Relate+ installerar version 6.1.79.0 av Episerver.Framework", + "meta_description": "", + "author_id": 1087, + "created_at": 1290007860000, + "created_by": 1087, + "updated_at": 1290007860000, + "updated_by": 1087, + "published_at": 1290007860000, + "published_by": 1087 + }, + { + "id": 456, + "title": "Skapa en snygg karta i din blogg med Bing Maps", + "slug": "skapa-en-snygg-karta-i-din-blogg-med-bing-maps", + "markdown": "\r\n\r\nNumera har Bing ett Javascript API som väldigt mycket påminner om Google Maps. Jag tycker att kartorna på Bing är snyggare än Google Maps och de växlar automatiskt mellan visningslägen på ett sätt som gör att man förstår vad som händer utan att ha massor av reglage. Däremot är de flesta exemplen ganska fula och innehåller för mycket extrafunktioner som inte behövs, dessutom är alla exempel med amerikanska exempel vilket gör det svårt att se hur det kan se ut i Stockholm.\r\n\r\nLänk till dokumentationen: http://msdn.microsoft.com/en-us/library/gg427610.aspx\r\n\r\nApi key skapar du så här: http://msdn.microsoft.com/en-us/library/ff428642.aspx\r\n\r\nTyvärr är dokumentationen väldigt svårnavigerad vilket gör det svårt att hitta bra exempel, därför kommer här ett litet exempel för att komma igång. Exemplet sätter ut en kartnål centrerad på en gata i Stockholm med lagom stor zoomnivå och gömmer så mycket verktygsfält och logotyper som möjligt.\r\n\r\nMen, när man kommit över dessa hinder blir resultatet väldigt fint tycker jag.\r\n\r\n function GetMap() { var map = new Microsoft.Maps.Map(document.getElementById(\"mapDiv\"), { showDashboard:false, showScalebar : false, showLogo:false, credentials: \"yourapikey\" }); var center =new Microsoft.Maps.Location(59.3404564801125, 18.049845556217); var pin = new Microsoft.Maps.Pushpin(center, { text:'1' }); map.entities.push(pin); map.setView({ center: center, zoom: 15 }); } $(this).ready(function(){ GetMap(); }); \r\n![Bild](http://tekniken.nu/uploads/634268924305679710-image001.png@01CB90FA.FEC5C9F0__image001.png)\r\n\r\n\r\n\r\n```prettyprint lang-javascript\r\n \r\n\r\n \r\n\r\n \r\n```\r\n", + "html": "Numera har Bing ett Javascript API som väldigt mycket påminner om Google Maps. Jag tycker att kartorna på Bing är snyggare än Google Maps och de växlar automatiskt mellan visningslägen på ett sätt som gör att man förstår vad som händer utan att ha massor av reglage. Däremot är de flesta exemplen ganska fula och innehåller för mycket extrafunktioner som inte behövs, dessutom är alla exempel med amerikanska exempel vilket gör det svårt att se hur det kan se ut i Stockholm.
Länk till dokumentationen: http://msdn.microsoft.com/en-us/library/gg427610.aspx
Api key skapar du så här: http://msdn.microsoft.com/en-us/library/ff428642.aspx
Tyvärr är dokumentationen väldigt svårnavigerad vilket gör det svårt att hitta bra exempel, därför kommer här ett litet exempel för att komma igång. Exemplet sätter ut en kartnål centrerad på en gata i Stockholm med lagom stor zoomnivå och gömmer så mycket verktygsfält och logotyper som möjligt.
Men, när man kommit över dessa hinder blir resultatet väldigt fint tycker jag.
EPiServer använder sig av en HTML-editor från Tiny MCE för att redigera html-egenskaper och med TinyMCE finns det stora möjligheter att ändra vilka val och alternativ användaren ska få.
Genom att använda EPiServers admin-gränssnitt kan man styra exakt vilka knappar och boxar som ska visas, både globalt och för varje sidegenskap. Men det går naturligtvis att göra ännu mer! Faktum är att du har tillgång till alla init-inställningar för TinyMCE även när du använder den i EPiServer CMS.
Att ändra init-inställningarna
I normala fall skulle du tilldela TinyMCE sina inställningar med javascriptmetoden tinyMCE.init().
För att göra samma sak i EPiServer CMS 6 skapar du en klass med valfritt namn och tilldelar den attributet TinyMCEPluginNonVisual. Med TinyMCEPluginNonVisual kan du sätta ett antal properties för att konfigurera TinyMCE.
I exemplet ovan har jag bland annat lagt till en cssklass som dyker upp i listan ”Stilar” i editorn och som användaren kan använda vid redigering av en text. TinyMCE erbjuder dock fler inställningar än de jag användar i exemplet ovan, här är en komplett lista:
http://wiki.moxiecode.com/index.php/TinyMCE:Configuration.
Här kan du läsa mer om TinyMCE:
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Inställningar för TinyMCE i EPiServer 6", + "meta_description": "", + "author_id": 1093, + "created_at": 1291909603000, + "created_by": 1093, + "updated_at": 1291909603000, + "updated_by": 1093, + "published_at": 1291909603000, + "published_by": 1093 + }, + { + "id": 460, + "title": "Använd samma kod för flera domäner i Google Analytics", + "slug": "anvand-samma-kod-for-flera-domaner-i-google-analytics", + "markdown": "\r\n\r\nGoogle Analytics är ett vanligt verktyg för att spara statistik på trafiken på en webbplats. Med hjälp av en unik kod skickas anrop direkt från klienten till Google Analytics som sparar och sorterar informationen åt dig.\r\n\r\nFör att spåra trafiken för varje enskild domän med enklast möjliga uppsättning i Google Analytics så lägger du till en profil med en kod per domän. Men om du har en sajt som finns på flera språk så behöver du förmodligen skilja statistiken på dina olika marknader åt. Med grundinställningarna i Google Analytics skulle du i så fall behöva lägga upp flera profiler med en unik kod för varje profil.\r\n\r\nDet låter jobbigt och är framförallt väldigt onödigt med tanke på att det finns en filtreringsfunktion i Google Analytics profilhantering som kan fixa biffen åt dig!\r\n## Hur man lägger upp flera profiler med delad kod i Google Analytics\r\nDu skapar en profil för varje domän din sajt använder (t ex www.iteam.se, www.iteam.fi osv). Varje profil ska däremot dela ”domain” i Google Analytics (se Skapa dina profiler). Sedan lägger du till ett filter på varje profil som filtrerar på just domännamn (se Ange filter på profilerna).\r\n### Skapa dina profiler\r\nSkapa en ny profil och välj ”Add a Profile for a new domain” om du redan har en profil för din sajt eller ” Add a new profile for an existing domain” när du lägger till resten av profilerna.\r\n\r\n\r\n\r\nDin nya profil skapas upp med default-inställningar.\r\n### Ange filter på profilerna\r\nFör att lägga på ett filter på en profil väljer du ”Edit” i listan över profiler och sedan ”Add filter” längre ner på sidan.\r\n\r\n\r\n\r\nDu får upp en ny sida för att skapa ett filter och under ”Enter filter information” väljer du att definiera ett eget filter på baserat på domän enligt markeringarna på bilden. Under ”Filter pattern” anges ett Regular Expression som matchar den domän du ska filtrera på. I mitt fall har jag valt att filtrera alla besök mot iteam.fi (om vi nu skulle haft en sajt på finska) med följande regex: ”^iteam\\.fi|.iteam\\.fi”.\r\n\r\n\r\n\r\nMed dessa inställningar får du alltså en profil per domän men använder samma unika kod vid javascriptanropet som reggar besöken på sajten. I Google Analytics blir det så här fint:\r\n\r\n\r\n\r\nOch i koden använder du nu samma kod för att regga Google Analytics på alla språk!\r\n\r\n![Bild](http://tekniken.nu/uploads/634279291326265654-google-analytics-logo.png)", + "html": "Google Analytics är ett vanligt verktyg för att spara statistik på trafiken på en webbplats. Med hjälp av en unik kod skickas anrop direkt från klienten till Google Analytics som sparar och sorterar informationen åt dig.
För att spåra trafiken för varje enskild domän med enklast möjliga uppsättning i Google Analytics så lägger du till en profil med en kod per domän. Men om du har en sajt som finns på flera språk så behöver du förmodligen skilja statistiken på dina olika marknader åt. Med grundinställningarna i Google Analytics skulle du i så fall behöva lägga upp flera profiler med en unik kod för varje profil.
Det låter jobbigt och är framförallt väldigt onödigt med tanke på att det finns en filtreringsfunktion i Google Analytics profilhantering som kan fixa biffen åt dig!
Hur man lägger upp flera profiler med delad kod i Google Analytics
Du skapar en profil för varje domän din sajt använder (t ex www.iteam.se, www.iteam.fi osv). Varje profil ska däremot dela ”domain” i Google Analytics (se Skapa dina profiler). Sedan lägger du till ett filter på varje profil som filtrerar på just domännamn (se Ange filter på profilerna).
Skapa dina profiler
Skapa en ny profil och välj ”Add a Profile for a new domain” om du redan har en profil för din sajt eller ” Add a new profile for an existing domain” när du lägger till resten av profilerna.
Din nya profil skapas upp med default-inställningar.
Ange filter på profilerna
För att lägga på ett filter på en profil väljer du ”Edit” i listan över profiler och sedan ”Add filter” längre ner på sidan.
Du får upp en ny sida för att skapa ett filter och under ”Enter filter information” väljer du att definiera ett eget filter på baserat på domän enligt markeringarna på bilden. Under ”Filter pattern” anges ett Regular Expression som matchar den domän du ska filtrera på. I mitt fall har jag valt att filtrera alla besök mot iteam.fi (om vi nu skulle haft en sajt på finska) med följande regex: ”^iteam\\.fi|.iteam\\.fi”.
Med dessa inställningar får du alltså en profil per domän men använder samma unika kod vid javascriptanropet som reggar besöken på sajten. I Google Analytics blir det så här fint:
Och i koden använder du nu samma kod för att regga Google Analytics på alla språk!
Här tar vi upp problemet och lösningen på ett intressant problem för dig som installerat IISefter .NET 4 Framework. Om du får ett 404 Page Not Found-fel i din IIS7 när du försöker surfa mot en WebSite som använder sig av en Application Pool med Managed Pipeline Mode:Classic så hittar du lösningen i detta inlägg.
Om IIS installeras (aktiveras via Kontrollpanelen) efter du installerat .NET 4 Framework så kommer IIS:en inte veta om denna version av ramverket och hamna ur synk. För att lösa detta behövs två steg genomföras. Först måste den senaste versionen av ramverket registreras i IIS:en, men sedan måste man också, konstigt nog, tillåta ASP.NET 4 under ISAPI and CGI Restrictions.
Steg 1, Registrera ASP.NET 4 i IIS
Öppna ett kommandfönster och skriv in sökvägen till mappen för .NET 4 och kör sedan följande kommando i mappen:
aspnet_regiis -i
32-bitars system:
%windir%\\Microsoft.NET\\Framework\\v4.0.30319
64-bitars system:
%windir%\\Microsoft.NET\\Framework64\\v4.0.30319
Steg 2, Tillåt ASP.NET 4 under ISAPI and CGI Restrictions
Gå till översta noden, Home, i Internet Information Service (IIS) Manager och välja ISAPI and CGI Regristrations.
Här ser vi problemet, nämligen att .NET 4:s ISAPI är satt till Not Allowed. Markera varje dessa rader och välj Allow.
",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "FW: 404 Page Not Found i IIS7 med ASP.NET 4 Classic Mode",
+ "meta_description": null,
+ "author_id": 1093,
+ "created_at": 1294847443000,
+ "created_by": 1093,
+ "updated_at": 1294847443000,
+ "updated_by": 1093,
+ "published_at": 1294847443000,
+ "published_by": 1093
+ },
+ {
+ "id": 477,
+ "title": "404 Page Not Found i IIS7 med ASP.NET 4 Classic Mode",
+ "slug": "404-page-not-found-i-iis7-med-aspnet-4-classic-mode",
+ "markdown": "\r\n\r\nHär tar vi upp problemet och lösningen på ett intressant problem för dig som installerat IIS efter .NET 4 Framework. Om du får ett 404 Page Not Found-fel i din IIS7 när du försöker surfa mot en WebSite som använder sig av en Application Pool med Managed Pipeline Mode:Classic så hittar du lösningen i detta inlägg.\r\n\r\nOm IIS installeras (aktiveras via Kontrollpanelen) efter att du installerat .NET 4 Framework så kommer IIS:en inte att känna till denna version av ramverket och hamna ur synk. För att lösa detta behöver två steg genomföras. Först måste den senaste versionen av ramverket registreras i IIS:en, sedan måste man också, konstigt nog, tillåta ASP.NET 4 under ISAPI and CGI Restrictions.\r\n## Steg 1, Registrera ASP.NET 4 i IIS\r\nÖppna ett kommandfönster och skriv in sökvägen till mappen för .NET 4 och kör sedan följande kommando i mappen:\r\n\r\naspnet_regiis -i\r\n\r\n32-bitars system:\r\n\r\n%windir%\\Microsoft.NET\\Framework\\v4.0.30319\r\n\r\n64-bitars system:\r\n\r\n%windir%\\Microsoft.NET\\Framework64\\v4.0.30319\r\n\r\n\r\n## Steg 2, Tillåt ASP.NET 4 under ISAPI and CGI Restrictions\r\nGå till översta noden, Home, i Internet Information Service (IIS) Manager och välj ISAPI and CGI Regristrations.\r\n\r\n\r\n\r\nHär ser vi problemet, nämligen att .NET 4:s ISAPI är satt till Not Allowed. Markera dessa rader och välj Allow.\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/404.jpg)",
+ "html": "
Här tar vi upp problemet och lösningen på ett intressant problem för dig som installerat IIS efter .NET 4 Framework. Om du får ett 404 Page Not Found-fel i din IIS7 när du försöker surfa mot en WebSite som använder sig av en Application Pool med Managed Pipeline Mode:Classic så hittar du lösningen i detta inlägg.
Om IIS installeras (aktiveras via Kontrollpanelen) efter att du installerat .NET 4 Framework så kommer IIS:en inte att känna till denna version av ramverket och hamna ur synk. För att lösa detta behöver två steg genomföras. Först måste den senaste versionen av ramverket registreras i IIS:en, sedan måste man också, konstigt nog, tillåta ASP.NET 4 under ISAPI and CGI Restrictions.
Steg 1, Registrera ASP.NET 4 i IIS
Öppna ett kommandfönster och skriv in sökvägen till mappen för .NET 4 och kör sedan följande kommando i mappen:
aspnet_regiis -i
32-bitars system:
%windir%\\Microsoft.NET\\Framework\\v4.0.30319
64-bitars system:
%windir%\\Microsoft.NET\\Framework64\\v4.0.30319
Steg 2, Tillåt ASP.NET 4 under ISAPI and CGI Restrictions
Gå till översta noden, Home, i Internet Information Service (IIS) Manager och välj ISAPI and CGI Regristrations.
Här ser vi problemet, nämligen att .NET 4:s ISAPI är satt till Not Allowed. Markera dessa rader och välj Allow.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "404 Page Not Found i IIS7 med ASP.NET 4 Classic Mode", + "meta_description": "", + "author_id": 1096, + "created_at": 1294847445000, + "created_by": 1096, + "updated_at": 1294847445000, + "updated_by": 1096, + "published_at": 1294847445000, + "published_by": 1096 + }, + { + "id": 478, + "title": "Rollback för borttagna filer i TFS", + "slug": "rollback-for-borttagna-filer-i-tfs", + "markdown": "\r\n\r\nI Subversion är man aldrig speciellt orolig eftersom man alltid kan ta ”rollback” eller ”revert changes from revision” men i TFS är det inte lika enkelt att återgå till en gammal revision av sin källkod. \r\n\r\nOm man t ex har tagit bort en hel trunk och vill återställa den kan man inte ta ”get version” och sedan checka in för att återgå till versionen innan borttagningen eftersom borttagningen inte uppfattas som en ändring. \r\n\r\nFör att ta tillbaka en borttagen fil eller trunk går det dock bra att använda kommandot ”tf undelete”.\r\n\r\nSå här gör du:\r\n\r\n1. Starta Visual Studio Command prompt (2010)\r\n\r\n2. Gå till den mapp där din fil eller mapp låg.\r\n\r\n3. Kör kommandot ”tf undelete filnamn”, t ex ”tf undelete trunk”\r\n\r\n4. Checka in.\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/634308563329108886-image001.png@01CBB328.E959EEC0__image001.png)", + "html": "I Subversion är man aldrig speciellt orolig eftersom man alltid kan ta ”rollback” eller ”revert changes from revision” men i TFS är det inte lika enkelt att återgå till en gammal revision av sin källkod.
Om man t ex har tagit bort en hel trunk och vill återställa den kan man inte ta ”get version” och sedan checka in för att återgå till versionen innan borttagningen eftersom borttagningen inte uppfattas som en ändring.
För att ta tillbaka en borttagen fil eller trunk går det dock bra att använda kommandot ”tf undelete”.
Så här gör du:
1. Starta Visual Studio Command prompt (2010)
2. Gå till den mapp där din fil eller mapp låg.
3. Kör kommandot ”tf undelete filnamn”, t ex ”tf undelete trunk”
4. Checka in.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Rollback för borttagna filer i TFS", + "meta_description": "", + "author_id": 1087, + "created_at": 1295259531000, + "created_by": 1087, + "updated_at": 1295259531000, + "updated_by": 1087, + "published_at": 1295259531000, + "published_by": 1087 + }, + { + "id": 479, + "title": "Visa namnet på PageData-properties i editläget i EPiServer", + "slug": "visa-namnet-pa-pagedata-properties-i-editlaget-i-episerver", + "markdown": "\r\n\r\nHur många gånger har du sökt på namnet på en sidegenskap i xml-filen med översättningar bara för att hitta det riktiga namnet på en property? För min del, alldeles för många!\r\n\r\nMed en egen PageAdapter kan du skriva ut även det riktiga namnet i editeringsläget i EpiServer. I den här lösningen skrivs det riktiga namnet ut inom parentes efter egenskapens översättning, men bara för utvecklare! T ex Namn (PageName).\r\n## PageAdapter och ITemplate\r\nSkapa först och främst en ny klass som ärver PageAdapter. Där gör du en override på Init och tar fram den aktuella sidans PropertyDataForm (som hanterar edit-formuläret som visas i editläget). Skapa sedan en klass som ärver ITemplate där du lägger till det riktiga namnet i titeln för varje egenskap. En instans av din nya klass använder du för att sätta CaptureTemplate i sidans PropertyDataForm. \r\n\r\nFör att se till att det riktiga egenskapsnamnet inte visas för vanliga redaktörer kan man lägga in en koll på att användaren tillhör en viss grupp i EpiServer (t ex \"Developers\" som i exemplet nedan). Slutligen registrerar du din nya PageAdapter i relevant .browser-fil i ditt webbprojekt.\r\n\r\nKodexempel ser du här:\r\n\r\n```prettyprint lang-c-sharp\r\nusing System;\r\nusing System.Collections.Generic;\r\nusing System.Web;\r\nusing EPiServer.Web.WebControls;\r\nusing EPiServer.UI.WebControls;\r\nusing EPiServer;\r\nusing EPiServer.Web.PropertyControls;\r\nusing System.Web.UI;\r\nusing System.Web.UI.Adapters;\r\nusing System.Web.UI.WebControls;\r\nusing EPiServer.Core;\r\nusing System.Configuration;\r\nusing EPiServer.TaskManager;\r\nusing System.Web.Security;\r\n\r\nnamespace Iteam.EPiServer\r\n{\r\n public class PropertyDataFormAdapter : PageAdapter\r\n {\r\n #region Classes\r\n ///
Hur många gånger har du sökt på namnet på en sidegenskap i xml-filen med översättningar bara för att hitta det riktiga namnet på en property? För min del, alldeles för många!
Med en egen PageAdapter kan du skriva ut även det riktiga namnet i editeringsläget i EpiServer. I den här lösningen skrivs det riktiga namnet ut inom parentes efter egenskapens översättning, men bara för utvecklare! T ex Namn (PageName).
PageAdapter och ITemplate
Skapa först och främst en ny klass som ärver PageAdapter. Där gör du en override på Init och tar fram den aktuella sidans PropertyDataForm (som hanterar edit-formuläret som visas i editläget). Skapa sedan en klass som ärver ITemplate där du lägger till det riktiga namnet i titeln för varje egenskap. En instans av din nya klass använder du för att sätta CaptureTemplate i sidans PropertyDataForm.
För att se till att det riktiga egenskapsnamnet inte visas för vanliga redaktörer kan man lägga in en koll på att användaren tillhör en viss grupp i EpiServer (t ex \"Developers\" som i exemplet nedan). Slutligen registrerar du din nya PageAdapter i relevant .browser-fil i ditt webbprojekt.
Kodexempel ser du här:
Glöm inte registrera din PageAdapter i en .browser-fil:
Tack Per Nergård för tipset!
Besök hans blogg här (engelska): http://world.episerver.com/Blogs/Per-Nergard/Dates/2010/4/Display-the-property-name-for-developers-in-edit-mode/
Efterlängtad elastisk arkitektur
Innan jul gjorde vi vårt första skarpa test av Microsofts Azure plattform. Vi gjorde enklare tester och blev väldigt imponerade över både enkelheten och skalbarheten. För till skillnad från Amazon och deras EC2 tjänst så har Microsoft gjort det som vi längtat efter – nämligen plockat bort själva operativsystemet från ekvationen. I Amazons molntjänst och de allra flesta andra tjänsterna behöver du som sajtägare planera din arkitektur på ett sätt så att du inte har någon enskild flaskhals. När man pratar webbservrar är detta inget större problem då de redan är parallella i sin uppbyggnad från början och har därmed inget större problem med att läggas på olika fysiska eller virtuella maskiner och kan därmed enkelt skalas upp och ner när belastningen kommer och går. Databaser är däremot inte lika enkla att skala eftersom de skriver och läser till samma datakälla och kan därför inte ligga på olika fysiska maskiner utan rätt mycket licenser, hårdvara och konfiguration vilket gör det väldigt svårt och dyrbart att ta från liten drift till stor drift.
Det stora problemet med att skala arkitektur är att man oftast behöver dimensionera maskinerna till den maximala belastning som kan komma i samband med högtryck efter en lansering eller marknadssatsning, s.k. peak-hours.
Här kommer SQL Azure in i bilden – för istället för att skapa en windowsmaskin, fjärrstyra och installera SQL Server så kan du i Microsofts moln skapa en logisk SQL server som ligger virtuellt och tilldelas minne och CPU beroende på belastning. Du behöver inte själv ta hand om upp och framför allt nedskalning av din arkitektur – det sköter sig självt. Tekniken kallas elastisk arkitektur och i dagsläget är Microsoft SQL Azure det enda alternativet för denna typ av logisk virtualisering för SQL Server.
Endast de viktigaste funktionerna finns tillgängliga
Nackdelen med att använda denna elastiska SQL lösning är att man har fått skala bort mycket av den extra funktionalitet som finns i en vanlig SQL Server installation, till exempel kan du inte använda Fulltext index eller andra mer avancerade index, inga XP_ stored procedures finns kvar, de flestsa du inte har tillgång till alla avancerade funktioner i SQL Server utan får nöja dig med det enklaste från plattformen men 99% av alla webbtjänster använder endast de enklaste funktionerna ändå.
Om ni är osäkra på vilka funktioner som finns och om er lösning går att köra i molnet så är det enklaste sättet att installera Microsoft Azure SDK som innehåller en virtuell maskin som simulerar molnets miljö lokalt i Visual Studio. Det gör att du kan utveckla, debugga och utvärdera lokalt utan att behöva ladda upp lösningen till molnet.
Vi gjorde ett test på en av våra utvecklade sajter och efter lite trial-and-error lyckades vi köra hela webbplatsen i molnet. De nackdelar vi då upplevde var:
1. Ingen möjlighet att använda fullständiga managementverktyg för att administrera databasen
2. För simpelt gränssnitt med bristande översikt över alla instanser, databaser osv.
3. Dålig dokumentation
4. Svårt att hitta rätt i djungeln mellan Microsofts tillgängliga webbplatser för Azure - portaler, azure sajter, partnersajter, osv.
5. Ingen möjlighet till backup/restore i gränssnittet
Av ovanstående nackdelar har en hel del hänt bara den senaste månaden:
1. Numera finns det en webbaserat verktyg som är byggt i Silverlight och fungerar utmärkt bra för databasadministration. Verktyget hittar man på adressen:https://manage-db3.sql.azure.com/
2. För övrig administration av webbplatser, översikt av brandväggsregler, användare, connection-strings, vpn, virtuella servrar och logisk uppdelning av sql-databaser etc.https://windows.azure.com/. Lägg speciellt märke till den häftiga 3d-kuben som visar status på databasen just nu. ;)
3. Tyvärr är dokumentationen fortfarande ganska bristfällig men blir bättre varje dag
4. Det är fortfarande svårt att hitta rätt mellan Microsofts olika sajter men för billing och subscriptions är det denna som gäller just nu:https://mocp.microsoftonline.com och för alla övriga ärenden kan man börja medhttp://windows.azure.com
5. Backup finns inbyggt i tjänsten men endast för hårdvarufel och fel som uppstår på grund av Microsoft, det går inte att begära en backup ”från igår” om man har klantat sig själv eller har andra manuella behov av restore. För detta behöver man sätta upp en backup-strategi som antingen innebär en synkroniserad flytt till en annan virtuell databas eller synkronisera till en egen fysisk maskin och därifrån ta backup ”som vanligt”. Läs mer om backupstrategier här:http://social.technet.microsoft.com/wiki/contents/articles/sql-azure-backup-and-restore-strategy.aspx
Vi kommer återkomma till denna teknik i del 2 då vi avser göra test av prestanda och skalbarhet.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Har SQL Azure blivit moget för skarp drift? Del 1 av 2", + "meta_description": "", + "author_id": 1087, + "created_at": 1298454600000, + "created_by": 1087, + "updated_at": 1298454600000, + "updated_by": 1087, + "published_at": 1298454600000, + "published_by": 1087 + }, + { + "id": 487, + "title": "IIS7 visar felsida innan du hinner logga felen", + "slug": "iis7-visar-felsida-innan-du-hinner-logga-felen", + "markdown": "\r\n\r\nI nästan alla de projekt jag jobbar med finns det en central plats där alla fel loggas, vanligtvis genom att lyssna på Application_Error i global.asax.\r\n\r\nEn potentiellt otrevlig nyhet i IIS 7 för websajter som körs i Integration Mode är att eventuella fel fångas upp av IIS som returnerar en egen felsida istället för att skicka dem vidare till ASP.NET-motorn. Men bara om man satt CustomErrors i web.config till On eller RemoteOnly och har en felsida definierad i IIS7, vilket du har per default.\r\n\r\nI de fall du t ex vill logga alla fel eller hantera dem på annat sätt innan felsidan visas för användaren kan detta bli ett problem när sajten läggs ut i en miljö där CustomErrors ska sättas till On eller RemoteOnly.\r\n\r\nSom tur är kom en förändring på System.Web.HttpResponse i .NET 3.5! Den ”nya” egenskapen är TrySkipIisCustomErrors och ska sättas till true för att låta även IIS 7 skicka vidare felen till ASP.NET så att du kan hantera dem som du vill.\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/634346555362313666-image003.png@01CBD836.4A1E1470__image003.png)", + "html": "I nästan alla de projekt jag jobbar med finns det en central plats där alla fel loggas, vanligtvis genom att lyssna på Application_Error i global.asax.
En potentiellt otrevlig nyhet i IIS 7 för websajter som körs i Integration Mode är att eventuella fel fångas upp av IIS som returnerar en egen felsida istället för att skicka dem vidare till ASP.NET-motorn. Men bara om man satt CustomErrors i web.config till On eller RemoteOnly och har en felsida definierad i IIS7, vilket du har per default.
I de fall du t ex vill logga alla fel eller hantera dem på annat sätt innan felsidan visas för användaren kan detta bli ett problem när sajten läggs ut i en miljö där CustomErrors ska sättas till On eller RemoteOnly.
Som tur är kom en förändring på System.Web.HttpResponse i .NET 3.5! Den ”nya” egenskapen är TrySkipIisCustomErrors och ska sättas till true för att låta även IIS 7 skicka vidare felen till ASP.NET så att du kan hantera dem som du vill.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "IIS7 visar felsida innan du hinner logga felen", + "meta_description": "", + "author_id": 1093, + "created_at": 1299058735000, + "created_by": 1093, + "updated_at": 1299058735000, + "updated_by": 1093, + "published_at": 1299058735000, + "published_by": 1093 + }, + { + "id": 488, + "title": "Ibland är lösningen enkel trots krångligt felmeddelande", + "slug": "ibland-ar-losningen-enkel-trots-krangligt-felmeddelande", + "markdown": "\r\n\r\nI en halv dag har jag nu kämpat med ett fel som visade sig vara ett väldigt enkelt fel. \r\n\r\nFelet som dök upp var:\r\n\r\n C:\\Program Files (x86)\\MSBuild\\Microsoft\\VisualStudio\\v10.0\\WebApplications\\Microsoft.WebApplication.targets (177): Unable to copy file \"bin\\XXXXXX.dll\" to \"D:\\TFS_Builds\\2\\XXX\\ZZZ\\Binaries\\_PublishedWebsites\\XXXX\\bin\\XXXX.dll\". Could not find a part of the path 'bin\\XXX.dll'.\r\n\r\nEftersom det inte dyker upp lokalt och endast på byggservern och att felet handlar om dll filer tänker man att det är fel i projektfilen, copy local på dll filer, active configuration, konflikter mellan 64 bitars dll, säkerhetsinställningar på servern, låsningar, solutionfilen eller build definitionen. Men nej, det visar sig helt enkelt vara att bin mappen ligger med i projektet i Source. Ta bort bin-mappen från projektet och försök igen så fungerar allt klockrent!\r\n\r\n![Bild](http://tekniken.nu/uploads/634347401526727154-image004.png@01CBD90E.06A50A40__image004.png)", + "html": "I en halv dag har jag nu kämpat med ett fel som visade sig vara ett väldigt enkelt fel.
Felet som dök upp var:
C:\\Program Files (x86)\\MSBuild\\Microsoft\\VisualStudio\\v10.0\\WebApplications\\Microsoft.WebApplication.targets (177): Unable to copy file \"bin\\XXXXXX.dll\" to \"D:\\TFS_Builds\\2\\XXX\\ZZZ\\Binaries\\_PublishedWebsites\\XXXX\\bin\\XXXX.dll\". Could not find a part of the path 'bin\\XXX.dll'.
Eftersom det inte dyker upp lokalt och endast på byggservern och att felet handlar om dll filer tänker man att det är fel i projektfilen, copy local på dll filer, active configuration, konflikter mellan 64 bitars dll, säkerhetsinställningar på servern, låsningar, solutionfilen eller build definitionen. Men nej, det visar sig helt enkelt vara att bin mappen ligger med i projektet i Source. Ta bort bin-mappen från projektet och försök igen så fungerar allt klockrent!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Ibland är lösningen enkel trots krångligt felmeddelande", + "meta_description": "", + "author_id": 1087, + "created_at": 1299145800000, + "created_by": 1087, + "updated_at": 1299145800000, + "updated_by": 1087, + "published_at": 1299145800000, + "published_by": 1087 + }, + { + "id": 492, + "title": "The HTML 5 Test", + "slug": "the-html-5-test", + "markdown": "\r\n\r\nUtvecklingen av HTML 5 går snabbt framåt och med lite hjälp av ett gammalt operativsystem i en virtuell maskin så kan man se riktiga siffror på hur snabbt det verkligen gått.\r\n\r\nEtt allmänt erkänt sätt att få en uppfattning vilket support en webläsare har för HTML 5 är att använda sig av websidan The HTML5 Test.\r\n\r\nDen absolut senaste versionen av Google Chrome, som man får om man går via Developer Channel (finns även för Mac), är version 11 och har det bästa resultatet jag har sett än så länge med 293 av 400 möjliga.\r\n\r\nDen senaste skarpa versionen av Firefox, som inte är en beta-version, är för tillfället 3.6.14 och den får ungefär hälften av Google Chromes poäng med 155.\r\n\r\nEfter en installation av en virtuell maskin för att testa på Windows XP och gamla versioner av webläsare så fick jag följande resultat:\r\n\r\n\r\n\r\nOperativsystem\r\nWebläsare\r\nHtml5Test poäng\r\n\r\n\r\nWindows 7\r\nGoogle Chrome 11\r\n293\r\n\r\nWindows 7\r\nFirefox 3.6.14\r\n155\r\n\r\nWindows 7\r\nInternet Explorer 8\r\n32\r\n\r\nWindows XP\r\nGoogle Chrome 9\r\nEj tillgänglig\r\n\r\nWindows XP\r\nFirefox 3.0\r\n57\r\n\r\nWindows XP\r\nInternet Explorer 7\r\n17\r\n\r\n\r\n\r\nDet är ingen större förvåning att de gamla versionerna av Internet Explorer ligger en rejäl bit efter, men det ska bli bättre i Internet Explorer 9.\r\n\r\nVad som kan noteras är att Google Chrome 9 under Windows XP i en Virtual PC hänger sig när den surfar mot The HTML5 Test.\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/634351712651424314-image001.png@01CBDCBF.03AE2600__image001.png)", + "html": "Utvecklingen av HTML 5 går snabbt framåt och med lite hjälp av ett gammalt operativsystem i en virtuell maskin så kan man se riktiga siffror på hur snabbt det verkligen gått.
Ett allmänt erkänt sätt att få en uppfattning vilket support en webläsare har för HTML 5 är att använda sig av websidan The HTML5 Test.
Den absolut senaste versionen av Google Chrome, som man får om man går via Developer Channel (finns även för Mac), är version 11 och har det bästa resultatet jag har sett än så länge med 293 av 400 möjliga.
Den senaste skarpa versionen av Firefox, som inte är en beta-version, är för tillfället 3.6.14 och den får ungefär hälften av Google Chromes poäng med 155.
Efter en installation av en virtuell maskin för att testa på Windows XP och gamla versioner av webläsare så fick jag följande resultat:
Operativsystem | Webläsare | Html5Test poäng |
Windows 7 | Google Chrome 11 | 293 |
Windows 7 | Firefox 3.6.14 | 155 |
Windows 7 | Internet Explorer 8 | 32 |
Windows XP | Google Chrome 9 | Ej tillgänglig |
Windows XP | Firefox 3.0 | 57 |
Windows XP | Internet Explorer 7 | 17 |
Det är ingen större förvåning att de gamla versionerna av Internet Explorer ligger en rejäl bit efter, men det ska bli bättre i Internet Explorer 9.
Vad som kan noteras är att Google Chrome 9 under Windows XP i en Virtual PC hänger sig när den surfar mot The HTML5 Test.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "The HTML 5 Test", + "meta_description": "", + "author_id": 1096, + "created_at": 1299575400000, + "created_by": 1096, + "updated_at": 1299575400000, + "updated_by": 1096, + "published_at": 1299575400000, + "published_by": 1096 + }, + { + "id": 494, + "title": "Vilka CSS funktioner stöds av vilka webbläsare?", + "slug": "vilka-css-funktioner-stods-av-vilka-webblasare", + "markdown": "\r\n\r\nDet finns många bra tricks i CSS men vilka kan man använda? Här är en bra länk med översikt av alla funktioner och dessutom bra test och tydliga kodexempel:\r\n\r\nhttp://kimblim.dk/css-tests/selectors/\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/634369037309328866-image001.jpg@01CBEB0E.13FD2DA0__image001.jpg)", + "html": "Det finns många bra tricks i CSS men vilka kan man använda? Här är en bra länk med översikt av alla funktioner och dessutom bra test och tydliga kodexempel:
http://kimblim.dk/css-tests/selectors/
Ett gammalt sätt att bestämma hur ljud ska spelas upp hade varit det dåliga sättet genom Browser Detection, där man tittar vilken webläsare som används och därifrån bestämma hur man hanterar ljudet som ska spelas upp. Problemet med denna lösning är att webläsare utvecklas hela tiden, så om man ser att webläsaren t.ex. är Google Chrome och sätter i logiken att man vet att den inte stödjer t.ex. audio via WAV-formatet så kanske detta inte fortfarande stämmer om några versioner.
Det moderna, rekommenderade sättet är att istället använda sig av Feature Detection. Det innebär att man istället för att se vilken webläsare som används istället frågar webläsaren om den stödjer viss funktionalitet.
Ett populärt ramverk för att detektera vilka funktioner relaterade till HTML 5 som en browser stödjer är Modernizr. Då kan man skriva följande kod i sitt JavaScript:
I fallet med audio-taggen så behöver vi bara veta om en enda funtionalitet och att använda sig av ett helt ramverk känns lite onödigt. Då kan man istället vända sig till en referens på hur man detekterar individuell funktionalitet för HTML 5.
För att se om audio-taggen stöds, dessutom med ljudformatet mp3 så användes följande kod:
Variabeln hasAudioMp3Support är en boolean som ärtrue om allt stöds som det ska i webläsaren. Detta kan sedan användas i Javascript-koden för att dela upp funktionalitet mellan webläsare som stödjer HTML 5 Audio och de som behöver t.ex. Flash för att spela upp ljud:
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "HTML 5 Audio-element för alla", + "meta_description": "", + "author_id": 1096, + "created_at": 1301318100000, + "created_by": 1096, + "updated_at": 1301318100000, + "updated_by": 1096, + "published_at": 1301318100000, + "published_by": 1096 + }, + { + "id": 496, + "title": "Problem att logga på en webbplats från en Windows Server 2008?", + "slug": "problem-att-logga-pa-en-webbplats-fran-en-windows-server-2008", + "markdown": "\r\n\r\nOm du har problem att logga in på en sajt med Forms Authentication från IE8 eller IE7 på en Windows Server 2008 kan det bero på att standardinställningen för en server är inställd på över högsta säkerhetsnivå, även kallad Block All Cookies.\r\n\r\n\r\n\r\nDra ner reglaget ett steg så blir det därefter möjligt att logga in.\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/ie8-logo.png)", + "html": "Om du har problem att logga in på en sajt med Forms Authentication från IE8 eller IE7 på en Windows Server 2008 kan det bero på att standardinställningen för en server är inställd på över högsta säkerhetsnivå, även kallad Block All Cookies.
Dra ner reglaget ett steg så blir det därefter möjligt att logga in.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Problem att logga på en webbplats från en Windows Server 2008?", + "meta_description": "", + "author_id": 1087, + "created_at": 1301913300000, + "created_by": 1087, + "updated_at": 1301913300000, + "updated_by": 1087, + "published_at": 1301913300000, + "published_by": 1087 + }, + { + "id": 497, + "title": "Vad är Map/Reduce och hur använder man det i NoSQL?", + "slug": "vad-ar-mapreduce-och-hur-anvander-man-det-i-nosql", + "markdown": "\r\n## Först och främst, vad är NoSQL?\r\nInnan vi börjar prata om Map/Reduce behöver vi nämna några ord om NoSQL. Vi kommer återkomma till denna teknik i ett antal bloggar och beröra olika delar av denna nya spännande teknik. NoSQL är egentligen samlingsnamnet på en ny typ av databasmotor som förenklas till att bara handla om en nyckel och en datamängd. Den stora paradigmskillnaden är att NoSQL databaser har en dynamisk struktur som går att utöka till skillnad från SQL databaser som kräver en strukturell förändring för att kunna ta emot ny typ av data. De allra flesta NoSQL-databaser bygger på en enkel nyckel som identifierar det data som ska lagras, i övrigt skiljer sig NoSQL-databaser mycket åt.\r\n\r\nDen stora fördelen med traditionella SQL databaser är att de fungerar väldigt bra till de allra flesta typer av applikationer, men bara upp till en viss gräns då dess två största nackdelar tar vid – skalbarhet och prestanda.\r\n\r\nDen stora fördelen med NoSQL databaser är att de är snabba, klarar av väldigt stora datamängder och antal poster. De har en dynamisk struktur och kan därför utökas i takt med att det data som sparas förändras. Den stora nackdelen är att de inte hanterar relationer och kan därför inte hjälpa till med att verifiera att all data är konsistent, dvs det finns alltså inga kontroller på att data inte lagras dubbelt. För att underlätta i bearbetningen av data i NoSQL finns en effektiv teknik från Google som hjälper till: Map/Reduce.\r\n## Map/Reduce - en teknik från Google\r\n2004 lämnade Google in sin patentansökan för tekniken Map/Reduce som är en teknisk för att dela upp och distribuera arbetet med att bearbeta gigantiska mängder data. Map/Reduce används för att dela upp problem till mindre delar och sedan bearbeta och samla in svaren. Map/Reduce finns som ramverk till de flesta programspråk och används för att bryta ner allt ifrån matematiska beräkningar, bearbeta och förädla data, 3D renderingar och söka och sortera texter etc.\r\n### Tekniken är uppdelad i två steg\r\n1- Map = Definiera en fast mängd data samt dela upp dessa i delsteg och distribuera\r\n\r\n2- Reduce = Bearbeta delmängd och returnera ett bearbetat svar\r\n\r\nDen stora vinsten med att dela upp sitt problem på detta sätt är att det blir lätt att distribuera beräkningsuppgiften, först på flera processorkärnor på servern och därefter på flera datorer. Amazon hyr till exempel ut datorkraft med hjälp av denna teknik som de kallar Elastic MapReduce så att företag kan köpa datorkraft på detta vis.\r\n## Användning av Map/Reduce inom NoSQL\r\nInom NoSQL används Map/Reduce flitigt för att skapa delmängder av en datamängd till ett beräknat format. Om man jämför med en traditionell SQL databas kan man lättast jämföra det med en indexed view. Dvs, en vy som är sammanplockad av flera underliggande datakällor men där man lagt ett index som håller indexet uppdaterat vid förändringar.\r\n\r\nEtt problem inom NoSQL är att det inte finns relationer vilket gör det väldigt tidsödande att leta upp och sammanställa material som finns underliggande i sin datamängd.\r\n### Här följer ett par kodexempl som är förenklade men bygger på MongoDB syntax\r\nSäg att man har en lista av låtar med kopplingar till artister och album. Inom SQL skulle detta sluta med tre tabeller med relationer till varandra. För att hämta en lista på alla artister i denna struktur ställs en enkel SQL-fråga:\r\n\r\nSELECT * FROM artists\r\n\r\neller:\r\n\r\nSELECT artistName FROM tracks GROUP BY artistName\r\n\r\nMen inom NoSQL är svaret inte alltid lika enkelt. Eftersom strukturen är dynamisk kan det bli så att man inte har en lista av artister utan behöver gå igenom varje låt för att hämta artisterna:\r\n\r\nvar tracks = db.Tracks.find();\r\n\r\nforeach (var track in tracks)\r\n\r\ntrack.Album.Artist\r\n\r\nDet behövs inte mer än några tusen rader i låtlistan innan detta blir långsamt. För att göra det snabbare så sätter vi upp ett index med Map/Reduce som genomför beräkningen i bakgrunden och förbereder en virtuell lista av artister som man sedan kan anropa direkt:\r\n\r\nvar artists = db.Artists.find(); \r\n\r\nHos RavenDB som är en .NET baserad NoSQL-databas finns det stöd för Map/Reduce med LINQ vilket är väldigt smidigt för oss C# utvecklare. Uppdelningen är väldigt tydlig:\r\n\r\n\r\n\r\nMan kan använda Map/Reduce på många sätt, antingen genom att skapa ny virtuell data, t ex som ovan sammanställa data från underliggande strukturer, föreslå vänner baserat på antalet gemensamma taggar, skapa topplistor baserat på försäljning etc, men också för att göra beräkningar (försäljningssiffror, statistik, sökningar osv). \r\n\r\nEftersom bara hälften av Map/Reduce indexet behöver köras för att avgöra om datan är invalid (Map) och eftersom endast den data som är förändrad behöver uppdateras (Reduce) sparas väldigt mycket resurser på detta sätt. Det är den stora vinsten med tekniken.\r\n\r\nLäs mer om Map/Reduce och RavenDB här:\r\n\r\nhttp://stackoverflow.com/questions/4253334/ravendb-map-reduce-example-using-net-client\r\n\r\noch lite mer avancerat exempel:http://ayende.com/Blog/archive/2010/03/14/map-reduce-ndash-a-visual-explanation.aspx\r\n## Mer läsning om NoSQL\r\nGlöm inte heller att testa MongoDB konsol, klicka på ”Try it out” och skriv ”help” för lite tips:http://www.mongodb.org/#shell\r\n\r\nOm du gillar C# och LINQ ska du definitivt ladda ner RavenDB:\r\n\r\nhttp://ravendb.net/download (tips: installera som service genom att köra raven.server.exe /install), administrera servern med ett fint Silverlight administrationsgränssnitt som kallas Raven Studio:http://localhost:8080 och titta på den ganska långa men informativa intervjun med Ayende Rahien: (spola till slutet för att se lite bra kodexempel).\r\n\r\n![Bild](http://tekniken.nu/uploads/634376769235732658-image002.jpg@01CBF3C8.4E048940__image002.jpg)", + "html": "Först och främst, vad är NoSQL?
Innan vi börjar prata om Map/Reduce behöver vi nämna några ord om NoSQL. Vi kommer återkomma till denna teknik i ett antal bloggar och beröra olika delar av denna nya spännande teknik. NoSQL är egentligen samlingsnamnet på en ny typ av databasmotor som förenklas till att bara handla om en nyckel och en datamängd. Den stora paradigmskillnaden är att NoSQL databaser har en dynamisk struktur som går att utöka till skillnad från SQL databaser som kräver en strukturell förändring för att kunna ta emot ny typ av data. De allra flesta NoSQL-databaser bygger på en enkel nyckel som identifierar det data som ska lagras, i övrigt skiljer sig NoSQL-databaser mycket åt.
Den stora fördelen med traditionella SQL databaser är att de fungerar väldigt bra till de allra flesta typer av applikationer, men bara upp till en viss gräns då dess två största nackdelar tar vid – skalbarhet och prestanda.
Den stora fördelen med NoSQL databaser är att de är snabba, klarar av väldigt stora datamängder och antal poster. De har en dynamisk struktur och kan därför utökas i takt med att det data som sparas förändras. Den stora nackdelen är att de inte hanterar relationer och kan därför inte hjälpa till med att verifiera att all data är konsistent, dvs det finns alltså inga kontroller på att data inte lagras dubbelt. För att underlätta i bearbetningen av data i NoSQL finns en effektiv teknik från Google som hjälper till: Map/Reduce.
Map/Reduce - en teknik från Google
2004 lämnade Google in sin patentansökan för tekniken Map/Reduce som är en teknisk för att dela upp och distribuera arbetet med att bearbeta gigantiska mängder data. Map/Reduce används för att dela upp problem till mindre delar och sedan bearbeta och samla in svaren. Map/Reduce finns som ramverk till de flesta programspråk och används för att bryta ner allt ifrån matematiska beräkningar, bearbeta och förädla data, 3D renderingar och söka och sortera texter etc.
Tekniken är uppdelad i två steg
1- Map = Definiera en fast mängd data samt dela upp dessa i delsteg och distribuera
2- Reduce = Bearbeta delmängd och returnera ett bearbetat svar
Den stora vinsten med att dela upp sitt problem på detta sätt är att det blir lätt att distribuera beräkningsuppgiften, först på flera processorkärnor på servern och därefter på flera datorer. Amazon hyr till exempel ut datorkraft med hjälp av denna teknik som de kallar Elastic MapReduce så att företag kan köpa datorkraft på detta vis.
Användning av Map/Reduce inom NoSQL
Inom NoSQL används Map/Reduce flitigt för att skapa delmängder av en datamängd till ett beräknat format. Om man jämför med en traditionell SQL databas kan man lättast jämföra det med en indexed view. Dvs, en vy som är sammanplockad av flera underliggande datakällor men där man lagt ett index som håller indexet uppdaterat vid förändringar.
Ett problem inom NoSQL är att det inte finns relationer vilket gör det väldigt tidsödande att leta upp och sammanställa material som finns underliggande i sin datamängd.
Här följer ett par kodexempl som är förenklade men bygger på MongoDB syntax
Säg att man har en lista av låtar med kopplingar till artister och album. Inom SQL skulle detta sluta med tre tabeller med relationer till varandra. För att hämta en lista på alla artister i denna struktur ställs en enkel SQL-fråga:
SELECT * FROM artists
eller:
SELECT artistName FROM tracks GROUP BY artistName
Men inom NoSQL är svaret inte alltid lika enkelt. Eftersom strukturen är dynamisk kan det bli så att man inte har en lista av artister utan behöver gå igenom varje låt för att hämta artisterna:
var tracks = db.Tracks.find();
foreach (var track in tracks)
track.Album.Artist
Det behövs inte mer än några tusen rader i låtlistan innan detta blir långsamt. För att göra det snabbare så sätter vi upp ett index med Map/Reduce som genomför beräkningen i bakgrunden och förbereder en virtuell lista av artister som man sedan kan anropa direkt:
var artists = db.Artists.find();
Hos RavenDB som är en .NET baserad NoSQL-databas finns det stöd för Map/Reduce med LINQ vilket är väldigt smidigt för oss C# utvecklare. Uppdelningen är väldigt tydlig:
Man kan använda Map/Reduce på många sätt, antingen genom att skapa ny virtuell data, t ex som ovan sammanställa data från underliggande strukturer, föreslå vänner baserat på antalet gemensamma taggar, skapa topplistor baserat på försäljning etc, men också för att göra beräkningar (försäljningssiffror, statistik, sökningar osv).
Eftersom bara hälften av Map/Reduce indexet behöver köras för att avgöra om datan är invalid (Map) och eftersom endast den data som är förändrad behöver uppdateras (Reduce) sparas väldigt mycket resurser på detta sätt. Det är den stora vinsten med tekniken.
Läs mer om Map/Reduce och RavenDB här:
http://stackoverflow.com/questions/4253334/ravendb-map-reduce-example-using-net-client
och lite mer avancerat exempel:
http://ayende.com/Blog/archive/2010/03/14/map-reduce-ndash-a-visual-explanation.aspx
Mer läsning om NoSQL
Glöm inte heller att testa MongoDB konsol, klicka på ”Try it out” och skriv ”help” för lite tips:
http://www.mongodb.org/#shell
Om du gillar C# och LINQ ska du definitivt ladda ner RavenDB:
http://ravendb.net/download (tips: installera som service genom att köra raven.server.exe /install), administrera servern med ett fint Silverlight administrationsgränssnitt som kallas Raven Studio:http://localhost:8080 och titta på den ganska långa men informativa intervjun med Ayende Rahien:
(spola till slutet för att se lite bra kodexempel).
I nedan kod hanterar vi knapptryckningar via jQuery och lägger på fördröjning via JavaScripts inbyggda setTimout-funktionalitet. Detta gör att textrutans funktionalitet bara kommer att exekveras efter en halv sekunds inaktivitet av användaren, istället för varje knapptryckning.
Först behövs en referens för att hantera Timout, både att aktivera, men också att avbryta den. Denna håller vi i filterTimeoutId.
I funktionen textboxFunction, som även kan skrivas inline, direkt i setTimeout-funktionen, har vi logiken för vad som ska hända när Timeout:en har gått ut.
Vi hanterar även ett direkt Enter-slag att ignorer Timout:en för att direkt exekvera textboxens funktionalitet.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Textbox i HTML med fördröjd funktionalitet med jQuery och Timer", + "meta_description": "", + "author_id": 1096, + "created_at": 1304331120000, + "created_by": 1096, + "updated_at": 1304331120000, + "updated_by": 1096, + "published_at": 1304331120000, + "published_by": 1096 + }, + { + "id": 500, + "title": "En varningsikon för JavaScript-fel i Chrome", + "slug": "en-varningsikon-for-javascript-fel-i-chrome", + "markdown": "\r\n\r\nEn sak som jag faktiskt saknar i Chrome som finns i både IE och FF är en liten indikation på att ett script på sidan man tittar på har gått sönder. \r\n\r\nMen självklart finns ett tillägg för det. Med den får man en liten röd varningsikon i adressfältet när det blir fel på sidans script.\r\n\r\n\r\n\r\nTillägget hittar du här: https://chrome.google.com/extensions/detail/jafmfknfnkoekkdocjiaipcnmkklaajd\r\n\r\n![Bild](http://tekniken.nu/uploads/634401145595704732-image001.png@01CC0A44.91493650__image001.png)", + "html": "En sak som jag faktiskt saknar i Chrome som finns i både IE och FF är en liten indikation på att ett script på sidan man tittar på har gått sönder.
Men självklart finns ett tillägg för det. Med den får man en liten röd varningsikon i adressfältet när det blir fel på sidans script.
Tillägget hittar du här: https://chrome.google.com/extensions/detail/jafmfknfnkoekkdocjiaipcnmkklaajd
Vad är realtidswebben?
Tänk er att komma in på en sajt som säljer flygresor och när du knappat klart alla dina val kring flygtider, antal byten, barnstolar etc så kommer du till sidan ”Tyvärr finns det inga resor som matchar din sökning”. Om någon precis då avbokar sin resa finns det längre ingen möjlighet att kommunicera med dig, du har ju redan hämtat din sida. Om denna resesajt hade varit en realtidswebb –hade du kunnat få upp ett meddelande på skärmen: ”Helt otroligt! Vi har precis fått en avbokning– vill du se resan?”. Man kan jämföra det med nummerpresentation i telefonsystem – en realtidswebb gör det möjligt att ringa tillbaka till kunden, inte bara ta emot samtal.
En förutsättning för att en webbplats på riktigt ska vara en realtidswebb är att alla delar den pratar med ska vara asynkrona, dvs att saker kan hända utan att det sker enligt ett schema. En asynkron bank kan t ex skicka över pengar direkt mellan konton men en synkron bank måste vänta till efter midnatt innan överföringen kommer över. Andra exempel på asynkrona system är SMS och telefonsamtal. Microsoft hade i sin reklamfilm för Microsoft.NET 2003 en bra vision för ett helt asynkront beställningssystem där kunden kunde välja färg på sin bil och direkt när färgvalet gjordes av säljaren på handdatorn såg man hur roboten i bilfabriken bytte färg i färgsprutan.
Google Docs är ett annat bra exempel på en realtidswebb. När någon ändrar i ett stycke, till och med bara en enskild bokstav uppdateras direkt allas webbläsare som tittar på samma dokument.
Hybrid synkron/asynkrona tekniker
Genom åren har det förekommit många försök till realtidskommunikation mellan server och klient. De vanligaste teknikerna som använts är (i kronologisk ordning):
1. Iframe med javascript-kommandon som skickas från servern
2. Pollning med hjälp av XMLHttpRequest
3. Långa requests med XMLHttpRequest med XML resultat
4. Långa requests med JsonP
5. Separat flashkomponent som pratar med servern via sockets
Alla dessa tekniker (förutom kanske nr 1) brukar sammanfattas med förkortningen AJAX som står för Asynchronous Javascript with XML. AJAX har varit och är fortfarande en av de viktigaste komponenterna av det som kallas Web 2.0. Den största förändringen med AJAX var att man kunde uppdatera delar av skärmen utan att behöva ladda om hela sidan vilket gjorde att en webbsida känns mer som ett program på datorn. Nästa utmaning har varit att kunna skicka information som händer på servern till klienten utan att kräva omladdning av sidan och då har ovanstående tekniker använts – vanligtvis genom en timer som frågar med jämna mellanrum om det har hänt något på servern och i så fall uppdateras sidan från klienten.
När webbplatser växer och får fler användare uppstår dock två problem med dessa tekniker vilket gör att man ofta får begränsa realtidsdelarna på webbplatsen för att inte hela tjänsten ska upplevas som långsam:
A. För många requests till webbservern gör att servern blir överbelastad. Tänk er 2000 webbläsare som ställer tre frågor per sekund till servern om något har hänt, det blir för mycket för att hantera av en vanlig webbserver. Om det dessutom innebär att servern ska kontrollera i databasen om något har hänt blir det ännu jobbigare att hantera.
B. Klienten går långsamt för att en av de fåtal connections som finns tillgängliga i webbläsaren blir upptagna (förut var det max två connections per domänadress men nu är det ökat till runt fem-tio beroende på webbläsare )
Vad är lösningen? Websockets?
I och med införandet av HTML5 har det kommit nya sätt att kommunicera mer effektivt mellan server och klient i och med att webbläsaren numera har inbyggt stöd för att prata med WebSockets vilket är den enklaste formen av kommunikation på internet. Websockets kan liknas med en inbyggd Telnet klient i webbläsaren. Med websockets blir det därför möjligt att öppna en kanal för att skicka kommandon både till server och klient med samma teknik.
Tyvärr fungerar inte Websockets rakt av i alla webbläsare, till exempel har Firefox avaktiverat sitt websockets-stöd per default i alla senare versioner. En komplett lista på vilka webbläsare som stöder Websockets (eller andra bra HTML5 finesser) finns på den utmärkta sajten caniuse.com. För att ändå börja använda WebSockets finns det självklart ramverk som hanterar lösningen med äldre klienter med hjälp av ovanstående tekniker (iframe, ajax pollning eller flashfallback). Det ramverk vi har utvärderat och kan rekommendera heter socket.io men det finns andra t ex now.js. Socket.IO är javascriptbaserat och är ett ramverk som installeras ovanpå servern node.js.
Vad är felet på .NET?
Både Socket.IO och now.js bygger på webbservern node.js och varför det är bra ska jag snart berätta, men först måste jag förklara lite av vår tidigare erfarenhet av utveckling för större webbplatser. Vi har på Iteam gjort en hel del webbplatser med AJAX och många har haft en s.k. eventhubb som i princip skapar en .NET baserad meddelandekö som tillåter att man kan skicka meddelanden direkt från .NET till klienten via långa AJAX-anrop (enligt princip 3 ovan). I de projekt där vi ligger på IDG:s Topp 100 lista med tusentals samtidiga användare skapar denna eventhubb en onödigt stor belastning på servern eftersom alla anrop hamnar i .NET-kärnan och varje connection tar en tråd av processorn. Varje tråd tar dessutom c:a 2 mb i minne. Detta gör att man måste balansera längden på varje anrop och antalet anrop per minut på ett sätt som gör att realtidskänslan blir mindre påtaglig när många användare är inne. Det kostar helt enkelt för mycket att ha serverkraft att hålla alla dessa uppkopplingar igång på servern. Dvs, problemet är att IIS och .NET har för stor overhead per tråd och connection för att kunna hantera detta på ett effektivt sätt.
Ok, vi fattar men kom till sak (node.js)
Node.JS är en HTTP-server byggd för att köra Javascript kod (!) väldigt effektivt och väldigt lightweight. Servern är byggd på Googles Javascriptmotor V8 som också används i Chrome. Den stora fördelen med att använda node.js är att den inte är trådad vilket gör att den kan hantera extrema mängder samtidiga uppkopplingar utan att det tar mer processorkraft eller minne av servern. När nya anrop kommer till Node.JS läggs de till i en intern buffer i node.js och skapar ingen ny tråd och tar därför i princip bara några bytes per anrop. Detta gör att Node.JS är optimal för att hantera långa asynkrona anrop och lämpar sig därför som central hubb för realtidssystem.
Singeltrådad webbserver låter dåligt tycker jag?
Parallell har alltid varit bättre än seriell tycker jag så det var för mig en gåta hur detta med ”inga trådar” kunde göras om till något positivt?
T ex skulle den här koden göra att servern hänger sig och inga anrop går igenom:
Men då tänker man fortfarande synkront. Flödet genom en kod ska inte byggas på det sättet. Istället skriver man sin kod så att långa anrop returnerar sitt resultat asynkront vilket inte hänger servern alls och tar varken cpu eller minne av det väntande anropet:
Fördjupa dig på asynkron programmering med Node.Js här:
http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/
Vad är då Socket.IO?
Så, node.JS är alltså en webbserver baserad på Javascript, perfekt för asynkrona realtidssystem men den är bara en effektiv webbserver, men för att enkelt kunna kommunicera med den behöver vi ett ramverk. Socket.IO valde vi eftersom det löser precis den uppgift vi behövde:
1. Inkluderar både ramverk på server och på klienten
2. Hanterar bakåtkompatibiliteten med äldre webbläsare (med hjälp av flash, XmlHttpRequests, iframe etc)
3. Klarar att gruppera lyssnare i grupper och skicka broadcasts till alla eller urval av grupperna
4. Använder JSON som bärare
För att testa detta valde vi att börja med en volymkontroll som skulle uppdateras direkt när man ändrar på den på någon av webbläsarna i ett rum. På servern vill vi ta emot ett kommando ”volume” med data om vilket rum som volymen har ändrats i och alla andra i samma ”rum” ska få reda på att volymen har ändrats:
På klientenhar vi en HTML5 volymkontroll (type=”range”). Observera också att klientfilerna för socket.io länkas från node.js och i vårt fall är node installerat på localhost på port 8080. Vi anger även vilken ordning vi vill använda transporterna med websockets först.
Och på servern (sparas somindex.js och körs med node.exe index.js):
Resultatet blir såhär: (använd Chrome eller Safari för att se volymkontrollerna)
Testa själva på http://tekniken.nu/examples/socketio-range.htm
och öppna därefter ytterligare ett fönster http://tekniken.nu/examples/socketio-range.htm
Hur kör man nu detta i en Windowsmiljö?
Node.JS är från början byggt för Linux och länge behövde man installera Node i en Cygwin emulator för att kunna köra detta på en windowsmaskin. Numera är dock node portat till Windows och enklast laddar man ner det via NuGet:
http://nuget.org/List/Packages/nodejs
Innan du kan ladda ner Node.JS via nuget måste du först initiera ett lokalt maskin-knutet bibliotek för NuGet:
Kör i Package Manager Console:
Initialize-Chocolatey
Därefter:
Install-Package nodejs
Nu har du NodeJs lokalt på din maskin, antagligen i mappen C:\\NuGet\\lib\\nodejs.0.5.3\\tools\\node.exe
För att köra socket.io behöver du nu ladda ner socket.io från socket.io:
https://github.com/learnboost/socket.io/
Eftersom NPM inte finns för Windows får du packa upp zipfilen och installera den manuellt i ditt projekt. Du placerar alltså socket.io på server-sidan och packar upp zip-filen i en mapp som heternode_modules:
Om nu allt är uppsatt korrekt ska du kunna skriva:
C:\\NuGet\\lib\\nodejs.0.5.3\\tools\\node.exe index.js
För att detta ska bli driftsäkert behöver du installera node att köras som en service. Det gör du enklast genom att använda det fånigt namngivna programmet NSSM (Non Sucking Service Manager):
nssm install NodeExample C:\\NuGet\\lib\\nodejs.0.5.3\\tools\\node.exe d:\\path_to_your_project\\index.js
Nu kan du starta din första node tjänst
NET START NodeExample
Och kom ihåg att du behöver starta om servicen om du ändrar i koden. Och se till att din server som kör node.js står utanför brandväggen om du vill kunna tillåta riktigt långa connections och minska belastningen på din brandvägg ;)
Alternativt kan du köra node i IIS:
Det finns även sätt att installera Node att köras som en del av IIS med IISNode(däremot är jag inte säker på att det är en bra idé att blanda in IIS av de anledningar som jag beskrev ovan men något konkret test av detta är inte genomfört än). Att utveckla med hjälp av IISNode är helt klart en fördel eftersom den startar om sig själv så fort någon av filerna ändras i projektet samt att den hanterar loggning.
Vi byggde resten av vår kod i .NET för så skoj är inte Javascript när det väl kommer till unittest, objektorienterad programmering osv, men för själva eventhanteringen sköts den nu med detta ramverk vilket gör att ASP.NET blir helt avlastad från dessa anrop och vi kan slösa på realtidsanrop utan att det (nästan inte) kostar något på servern. Enligt flera bloggar klarar en vanligt utrustad server med node.js av flera tiotusentals samtidiga connections vilket är enormt i förhållande till motsvarande lösning byggd med IhttpAsyncHandler (.NET).
Läs även IBMs genomgång av NodeJs:
http://www.ibm.com/developerworks/opensource/library/os-nodejs/
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Så skapar du en äkta realtidswebb med Node.Js och Socket.io i Windowsmiljö", + "meta_description": "", + "author_id": 1087, + "created_at": 1314897145000, + "created_by": 1087, + "updated_at": 1314897145000, + "updated_by": 1087, + "published_at": 1314897145000, + "published_by": 1087 + }, + { + "id": 552, + "title": "Vad är NoSQL och RavenDB egentligen?", + "slug": "vad-ar-nosql-och-ravendb-egentligen", + "markdown": "\r\n\r\nUnder de senaste veckorna har vi börjat testa och labba med RavenDB på allvar för att kunna utvärdera och använda det som databas fullt ut även i skarpa kundprojekt. I den här bloggen går jag igenom hur vi byggt om en liten del av ett befintligt system med RavenDB som databas.\r\n## Hur ska man tänka med NoSQL?\r\nFörst och främst så är väl ett par ord om RavenDB på sin plats. RavenDB är en Open Source dokumentdatabas, eller en NoSQL-databas, byggd och använd primärt i .NET. RavenDB är gratis för Open Source-lösningar men kostar 25 USD per månad per instans för kommersiella projekt. En dokumentdatabas lagrar data som dokument istället för tabellrader och just RavenDB sparar JSON-objekt formaterade som strängar.\r\n\r\nMan skulle kunna säga att man i en relationsdatabas strävar efter att spara data så effektivt som möjligt, uppdelat i tabeller och väl normaliserat för att spara plats och för att kunna garantera konsistens, medan man i RavenDB och andra dokumentdatabaser istället strävar efter att hämta data så effektivt som möjligt och därmed ska försöka spara precis den information som man sedan kommer att vilja hämta upp samtidigt.\r\n## Vikten av index\r\nEn stor skillnad mellan relationsdatabaser och NoSQL är att man inte kan ställa beräkningsfrågor utan att använda ett index. I en relationsdatabas sker dynamisk beräkning när en fråga ställs medan NoSQL-databaser behöver ett index för att ställa samma fråga. \r\n\r\nEn SQL Server kan alltså enkelt leverera svaret på följande fråga:\r\n\r\n![Bild](http://tekniken.nu/uploads/634505516508552034-image001.png@01CC694B.292E36E0__image001.png)\r\n```prettyprint lang-sql\r\nSELECT COUNT(*) FROM users WHERE userName = ’foo’\r\n```\r\n\r\n\r\nMed NoSQL måste man först definiera ett index som väljer ut och sorterar informationen på det sätt man vill fråga efter den. I andra NoSQL databaser än RavenDB är detta ett ganska tidskrävande arbete men RavenDB har en inbyggd analysdel som hjälper till att skapa dynamiska index i bakgrunden vilket gör arbetet väldigt mycket enklare, och startsträckan för att komma igång, kortare. I RavenDB skulle ovanstående fråga se ut så här (i LINQ):\r\n\r\n```prettyprint lang-c-sharp\r\nDB.Session.QueryUnder de senaste veckorna har vi börjat testa och labba med RavenDB på allvar för att kunna utvärdera och använda det som databas fullt ut även i skarpa kundprojekt. I den här bloggen går jag igenom hur vi byggt om en liten del av ett befintligt system med RavenDB som databas.
Hur ska man tänka med NoSQL?
Först och främst så är väl ett par ord om RavenDB på sin plats. RavenDB är en Open Source dokumentdatabas, eller en NoSQL-databas, byggd och använd primärt i .NET. RavenDB är gratis för Open Source-lösningar men kostar 25 USD per månad per instans för kommersiella projekt. En dokumentdatabas lagrar data som dokument istället för tabellrader och just RavenDB sparar JSON-objekt formaterade som strängar.
Man skulle kunna säga att man i en relationsdatabas strävar efter att spara data så effektivt som möjligt, uppdelat i tabeller och väl normaliserat för att spara plats och för att kunna garantera konsistens, medan man i RavenDB och andra dokumentdatabaser istället strävar efter att hämta data så effektivt som möjligt och därmed ska försöka spara precis den information som man sedan kommer att vilja hämta upp samtidigt.
Vikten av index
En stor skillnad mellan relationsdatabaser och NoSQL är att man inte kan ställa beräkningsfrågor utan att använda ett index. I en relationsdatabas sker dynamisk beräkning när en fråga ställs medan NoSQL-databaser behöver ett index för att ställa samma fråga.
En SQL Server kan alltså enkelt leverera svaret på följande fråga:
Med NoSQL måste man först definiera ett index som väljer ut och sorterar informationen på det sätt man vill fråga efter den. I andra NoSQL databaser än RavenDB är detta ett ganska tidskrävande arbete men RavenDB har en inbyggd analysdel som hjälper till att skapa dynamiska index i bakgrunden vilket gör arbetet väldigt mycket enklare, och startsträckan för att komma igång, kortare. I RavenDB skulle ovanstående fråga se ut så här (i LINQ):
För den frågan skulle RavenDB skapa ett dynamiskt index i bakgrunden. Det namnges dessutom automatiskt till ett väldigt lättläst namn: Auto/Users/ByUserName
Den här skillnaden kan vara svår att förstå i början om man är van vid att snabbt få tillgång till sin data med t ex SQL Server, men just det här är den absolut största fördelen med NoSQL eftersom det är anledningen till att NoSQL-databaser både klarar av större datamängder och att skalas \"på bredden\". Man ska dock tänka på att RavenDB bara klarar av att skapa automatiska index för enkla frågor. För mer avancerade beräkningar behöver du skapa egna index!
I RavenDB påverkar index inte prestandan när data sparas men i gengäld kan man få tillbaka ett resultat som inte är uppdaterat. När ett index skapas eller förändras, eller data förändras, ställs en fråga i bakgrunden för att hålla datan uppdaterad. Frågor du ställer mot ett index kommer att returneras direkt men om indexet samtidigt uppdateras av RavenDB kommer resultatet vara från ett tidigare indexeringstillfälle och markerat som Stale (vet du med dig att du bara vill ha fräscha resultat kan du förstås välja att vänta ut indexeringen med ett enkelt metodanrop).
Vår data
I detta exempel kommer jag att visa hur man sparar och hämtar upp information om när en låt spelats i vår musikspelare Maestroo. Förutom att Maestroo behöver informationen för att veta vilka användare som gillar vilken musik och vilka låtar som spelats tillsammans etc, så vill vi ha en egen sida för varje artist där det visas information om artisten och lite olika topplistor som senast spelade låtar och fans på Maestroo. Såhär:
Strukturen
För att uppnå detta sparar vi till RavenDB varje gång en låt spelas. Objektet TrackPlay håller reda på tid som låten spelades, användarnamn på den som spelade låten, rum som låten spelades i, själva låten som också är en egen entitet och i sin tur har ett namn, id, album och information om en artist osv.
I en relationsdatabas skulle denna modell ha lagrats över flera huvudtabeller med nycklar och kopplingstabeller emellan för att knyta ihop informationen. I RavenDB ska vi istället spara modellen i ett dokument så att det blir lättare att plocka fram statistik i efterhand. T ex så här kan en TrackPlay med låt och allt se ut i Raven Studio (ni känner igen JSON-strukturen, eller hur?):
Som ni ser i bilden ovan så finns alla objektens egenskaper representerade men jag har bara fyllt på objekten med den data som jag anser vara relevant att spara i detta läge (det ska alltså vara den information jag kommer att behöva när jag senare ritar upp topplistorna).
Det enkla indexet
Det allra enklaste indexet är då det som används för att visa upp en lista på populäraste låtar för den här artisten. Det jag behöver i mitt index är tid som låten spelades (för att kunna sortera på senaste spelning) och artistnamn (för att kunna fråga efter en specifik artist).
För att hämta en lista över senast spelade Robynlåtar kan jag nu ställa följade fråga mot indexet TrackPlaysByPlayTimeAndArtist:
Och ut kommer information för att visa denna lista:
Index enligt map/reduce-mönstret
För att hämta ut en lista på en artists största fans, alltså vilka som har spelat låtar av en viss artist flest gånger, så använder jag ett map/reduce-index. Tanken här är att indexet byggs upp i två steg. I första steget gör jag precis som i indexet ovan, alltså väljer ut vilken information som behövs för att begränsa urvalet senare. För det är egentligen det vi vill; begränsa urvalet i indexet så att det blir så litet som möjligt. I nästa steg så grupperas urvalet om och reduceras ytterligare.
Indexet kan nu t ex användas på detta vis:
I queryn returneras ett fan av en artist:
Och resultatet används för att visa användare som gillar artisten i fråga:
Fler bloggar om RavenDB kommer sannolikt att dyka upp i framtiden. Under tiden, ta en titt på våra tidigare tips:
http://tekniken.nu/utvecklingstips/vad-ar-mapreduce-och-hur-anvander-man-det-i-nosql
http://tekniken.nu/utvecklingstips/ravendb-music-store
Så här länkar du direkt till en sida i EPiServers editgränssnitt.
Perfekt när man skapat en ny sida automatiskt och vill låta redaktören se över innehåller eller från mailnotifiering när action krävs från redaktören.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "EPi-måste-ha: länk till sida i edit", + "meta_description": "", + "author_id": 1093, + "created_at": 1315306260000, + "created_by": 1093, + "updated_at": 1315306260000, + "updated_by": 1093, + "published_at": 1315306260000, + "published_by": 1093 + }, + { + "id": 563, + "title": "Tankestreck i listor i HTML", + "slug": "tankestreck-i-listor-i-html", + "markdown": "\r\n\r\nDe inbyggda HTML koderna UL och LI har inte stöd för (det i svenskan vanligaste?) listformatet:\r\n\r\n- Åtgärd 1\r\n\r\n- Åtgärd 2\r\n\r\n- Åtgärd 3\r\n\r\n- Åtgärd 4\r\n\r\nDe val som finns i CSS för punktlistor är: ”Square”, ”Circle”, ”Decimal” osv men inte ”Hyphen”.\r\n\r\nSå här skriver du för att få till detta i browsers som stöder Content i CSS (dvs från IE8 och framåt). Och MÅSTE man stöda äldre versioner av IE finns det också ett hack för dessa.\r\n\r\n![Bild](http://tekniken.nu/uploads/634515259618941751-image001.png@01CC6EF7.703D3A20__image001.png)\r\n```prettyprint lang-c-sharp\r\n\r\n\r\n \r\n... \r\n- \r\n
- number 1 task \r\n
- number 2 task \r\n
- number 3 task \r\n
- number 4 task \r\n
- number 5 task \r\n
- number 6 task \r\n
De inbyggda HTML koderna UL och LI har inte stöd för (det i svenskan vanligaste?) listformatet:
- Åtgärd 1
- Åtgärd 2
- Åtgärd 3
- Åtgärd 4
De val som finns i CSS för punktlistor är: ”Square”, ”Circle”, ”Decimal” osv men inte ”Hyphen”.
Så här skriver du för att få till detta i browsers som stöder Content i CSS (dvs från IE8 och framåt). Och MÅSTE man stöda äldre versioner av IE finns det också ett hack för dessa.
Ger:
Om du vill använda ett långt tankestreck skriver du istället:
content: \"\\2014\\a0\";
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Tankestreck i listor i HTML", + "meta_description": "", + "author_id": 1087, + "created_at": 1315929600000, + "created_by": 1087, + "updated_at": 1315929600000, + "updated_by": 1087, + "published_at": 1315929600000, + "published_by": 1087 + }, + { + "id": 565, + "title": "Ångra/ta bort en branch i TFS", + "slug": "angrata-bort-en-branch-i-tfs", + "markdown": "\r\nOm man råkar skapa en branch i TFS men på fel nivå kan man hamna i ett läge där det inte går att skapa ny branch på en högre nivå för den felaktiga branchen ”spärrar” hela trädet. Du får då en TF203071 fel:\r\n\r\n\r\n\r\nFör att lösa problemet måste först ta bort den felaktiga grenen (branch) permanent. Du måste ange hela sökvägen dvs börja med $/ och ange /startcleanup – annars händer inget.\r\n\r\ntf destroy $/Om man råkar skapa en branch i TFS men på fel nivå kan man hamna i ett läge där det inte går att skapa ny branch på en högre nivå för den felaktiga branchen ”spärrar” hela trädet. Du får då en TF203071 fel:
För att lösa problemet måste först ta bort den felaktiga grenen (branch) permanent. Du måste ange hela sökvägen dvs börja med $/ och ange /startcleanup – annars händer inget.
tf destroy $/<team project>/<branch dir> /startcleanup
När du gjort detta och uppdaterar försvinner grenen från source control men stället du skapade grenen ifrån är fortfarande markerad som gren. För att ta bort denna markering väljer du mappen i Source Control Explorer och väljer Source Control, Branching and Merging, Convert To Folder.
Voila, nu är du tillbaka där du var för en halvtimme sen, innan alla svordomar om TFS och hur mycket bättre Subversion och HG/Git är på detta ;) (för dom har andra problem, tro mig)",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "Ångra/ta bort en branch i TFS",
+ "meta_description": "",
+ "author_id": 1087,
+ "created_at": 1316439300000,
+ "created_by": 1087,
+ "updated_at": 1316439300000,
+ "updated_by": 1087,
+ "published_at": 1316439300000,
+ "published_by": 1087
+ },
+ {
+ "id": 570,
+ "title": "Snabbtips: Null-check på kollektioner i C#",
+ "slug": "snabbtips-null-check-pa-kollektioner-i-c",
+ "markdown": "\r\nHur många gånger har du gjort djupt nästlade if-satser för att göranull-check innan du loopar igenom en kollektion? Med detta snabbtips slipper du det.\r\n\r\nDetta är ett mönster du ofta ser i kod som hanterar kollektioner, som snabbt blir jobbigt att läsa p.g.a. onödigt djupt nästlade klammerparenteser:\r\n\r\npublic void LoopList(List
Hur många gånger har du gjort djupt nästlade if-satser för att göranull-check innan du loopar igenom en kollektion? Med detta snabbtips slipper du det.
Detta är ett mönster du ofta ser i kod som hanterar kollektioner, som snabbt blir jobbigt att läsa p.g.a. onödigt djupt nästlade klammerparenteser:
public void LoopList(List<string> list) {
// Logik som görs innan loop
if(list != null) {
foreach(var item in list) {
// Gör något
}
}
// Logik som görs efter loop
}
Med introduktionen av Extension Methods i LINQ så lades det till ny funktionalitet påIEnumerable<T>, som används av alla kollektioner och allt som går att köraforeach över.
Om du ser till att använda metoden DefaultIfEmpty som finns tillgängligt om du använder dig av namnrymdenSystem.Linq så kan du vara säker på att din loop inte kraschar hela applikationen:
public void LoopList(List<string> list) {
// Logik som görs innan loop
foreach(var item in list.DefaultIfEmpty()) {
// Gör något
}
// Logik som görs efter loop
}
I vanliga fall hade en metod på ett objekt som är null kastat ettexception, men detta är en Extension Method, som kan kolla om objektet den tillhör ärnull eller inte, utan krasch.",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "Snabbtips: Null-check på kollektioner i C#",
+ "meta_description": null,
+ "author_id": 1096,
+ "created_at": 1317741502000,
+ "created_by": 1096,
+ "updated_at": 1317741502000,
+ "updated_by": 1096,
+ "published_at": 1317741502000,
+ "published_by": 1096
+ },
+ {
+ "id": 571,
+ "title": "Tips till dig som skickar ut nyhetsbrev",
+ "slug": "tips-till-dig-som-skickar-ut-nyhetsbrev",
+ "markdown": "\r\n\r\nI dag fick jag ett nyhetsbrev som ser ut som de flesta nyhetsbrev jag får; inte bra alls!\r\n\r\n Det här nyhetsbrevet belyste extra tydligt de problem många har men inte tänker på när de skickar ut nyhetsbrev. Det största problemet är att man inte testar hur nyhetsbrevet kommer se ut när det kommer fram utan bara godkänner korrektur utifrån en skiss eller möjligtvis en webbsida. Alla mailprogram tolkar HTML olika och anledningen till det är att man försöker städa bort potentiellt farlig kod och förhindra att privat information från mottagarens dator kommer tillbaka till avsändaren av mailet. Förr i tiden kunde man nämligen spåra vilka mail som kommit fram genom att lägga en liten gömd ”tracker-bild” som skickade tillbaka information till avsändarens server. \r\n\r\nDet mest åtsatta mailprogrammet är självklart Outlook som har haft många incidenter genom åren då hackare har lyckats skicka virus eller spam med skadlig kod som plockats upp och körts av Outlook. Därför är Outlook också den svåraste mailklienten att få ett nyhetsbrev att bli snyggt i.\r\n\r\n\r\n## Kontrollera nyhetsbrevet innan du trycker på Skicka\r\n- Räkna aldrig med att bilder är laddade, det är de inte.\r\n\r\n- Använd typografi, linjer, färger, tabeller men undvik bilder för annat än illustrationer.\r\n\r\n- Skriv ”Öppna brevet med bilder” istället för ”Ser mailet konstigt ut?”, utgå från att mailet ser konstigt ut :)\r\n\r\n- Testa testa testa! Det är tråkigt men du måste framför allt provläsa din mall i alla mailprogram och webbmailprogram. Helst ska du även testa alla enskilda utskick. Använd gärna onlinetjänster som t ex ”EmailOnAcid” som gör screenshots av ditt mail i alla kända mailprogram på både Mac, PC och Linux.\r\n\r\n- Använd ”gammal hederlig” HTML, inte ny modern CSS3 kod. Outlook använder nämligen Word som HTML rendrerare och den är kvar på Internet Explorer 4 nivå ungefär. Så tillbaka till tabeller, cellpadding, cellspacing, valign, halign, vspace, hspace osv.\r\n\r\n- Var pragmatisk, ibland kan man lägga tiotals timmar på att få till en exakt placering av en bild, utgå från hur det bli och jobba med designen därifrån. Det kan tyvärr ibland bli bättre resultat i slutändan.\r\n\r\n- Tänk att många numera läser mailet i sin smartphone. Länkar osv ska fungera även i mobilen!\r\n\r\n- Använd professionella utskickstjänster eller var extremt noggrann när du skriver koden som skickar ut mailet. Det kan skada ett varumärke väldigt mycket att skicka ut brev med fel innehåll, vid fel tid, till fel mottagare osv. Och det är väldigt lätt att göra fel, framför allt är det omöjligt att ta tillbaka ett skickat mail. Bra mailtjänster för utskick är Apsis (helhetsleverantör), \r\n\r\n- Om du ändå bestämmer dig för att bygga egen utskickslogik så bör du ändå använda en extern SMTP för att undvika att din server blir svartlistad. AuthSMTP är en bra leverantör för själva utskicket som hanterar allt arbete med att säkra sina servrar och plockar bort sig från eventuella svartlistor. De hanterar även greylisting och försöker skicka mail tills det kommer fram.\r\n\r\n- Spara läs-statistik. Genom att lägga in kod som spårar när mottagaren har öppnat mailet, antingen genom att klicka på ”Hämta alla bilder”, eller ”Öppna brevet med bilder”.\r\n\r\n- Avaktivera mottagare som har bytt emailadress, de påverkar statistiken negativt och tar bandbredd och resurser. Se till att kontinuerligt uppmana dina kunder/säljare att uppdatera epostadresserna.\r\n## Sen lite hygienfaktorer\r\n- Vad är budskapet? Vad ska hända när mottagaren tar emot brevet? Vad är avslutet?\r\n\r\n- Undvik att upplevas som spammare, erbjud riktigt innehåll som faktiskt är intressant för mottagaren – annars får du självklart en motsatt effekt\r\n\r\n- Erbjud en enkel ”Avregistrera mig från nyhetsbrevet” och kräv inget mer än ett godkännande av mottagaren. Att logga in på en sajt med lösenord osv för att avregistrera sig är inte speciellt bra kundvård. Det kommer bara öka frustrationen för mottagaren.\r\n\r\nHär kommer mailet jag fick i morse, det är tyvärr ett klockrent exempel på hur man inte har gjort något av ovanstående. De har inte testat, de utgår från att bilderna är laddade, budskapet är väldigt otydligt. Jag hoppas Kontorab läser det här och bättrar sig.\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/634533383027481919-image001.png@01CC79CE.442DAE10__image001.png)",
+ "html": "
I dag fick jag ett nyhetsbrev som ser ut som de flesta nyhetsbrev jag får; inte bra alls!
Det här nyhetsbrevet belyste extra tydligt de problem många har men inte tänker på när de skickar ut nyhetsbrev. Det största problemet är att man inte testar hur nyhetsbrevet kommer se ut när det kommer fram utan bara godkänner korrektur utifrån en skiss eller möjligtvis en webbsida. Alla mailprogram tolkar HTML olika och anledningen till det är att man försöker städa bort potentiellt farlig kod och förhindra att privat information från mottagarens dator kommer tillbaka till avsändaren av mailet. Förr i tiden kunde man nämligen spåra vilka mail som kommit fram genom att lägga en liten gömd ”tracker-bild” som skickade tillbaka information till avsändarens server.
Det mest åtsatta mailprogrammet är självklart Outlook som har haft många incidenter genom åren då hackare har lyckats skicka virus eller spam med skadlig kod som plockats upp och körts av Outlook. Därför är Outlook också den svåraste mailklienten att få ett nyhetsbrev att bli snyggt i.
Kontrollera nyhetsbrevet innan du trycker på Skicka
- Räkna aldrig med att bilder är laddade, det är de inte.
- Använd typografi, linjer, färger, tabeller men undvik bilder för annat än illustrationer.
- Skriv ”Öppna brevet med bilder” istället för ”Ser mailet konstigt ut?”, utgå från att mailet ser konstigt ut :)
- Testa testa testa! Det är tråkigt men du måste framför allt provläsa din mall i alla mailprogram och webbmailprogram. Helst ska du även testa alla enskilda utskick. Använd gärna onlinetjänster som t ex ”EmailOnAcid” som gör screenshots av ditt mail i alla kända mailprogram på både Mac, PC och Linux.
- Använd ”gammal hederlig” HTML, inte ny modern CSS3 kod. Outlook använder nämligen Word som HTML rendrerare och den är kvar på Internet Explorer 4 nivå ungefär. Så tillbaka till tabeller, cellpadding, cellspacing, valign, halign, vspace, hspace osv.
- Var pragmatisk, ibland kan man lägga tiotals timmar på att få till en exakt placering av en bild, utgå från hur det bli och jobba med designen därifrån. Det kan tyvärr ibland bli bättre resultat i slutändan.
- Tänk att många numera läser mailet i sin smartphone. Länkar osv ska fungera även i mobilen!
- Använd professionella utskickstjänster eller var extremt noggrann när du skriver koden som skickar ut mailet. Det kan skada ett varumärke väldigt mycket att skicka ut brev med fel innehåll, vid fel tid, till fel mottagare osv. Och det är väldigt lätt att göra fel, framför allt är det omöjligt att ta tillbaka ett skickat mail. Bra mailtjänster för utskick är Apsis (helhetsleverantör),
- Om du ändå bestämmer dig för att bygga egen utskickslogik så bör du ändå använda en extern SMTP för att undvika att din server blir svartlistad. AuthSMTP är en bra leverantör för själva utskicket som hanterar allt arbete med att säkra sina servrar och plockar bort sig från eventuella svartlistor. De hanterar även greylisting och försöker skicka mail tills det kommer fram.
- Spara läs-statistik. Genom att lägga in kod som spårar när mottagaren har öppnat mailet, antingen genom att klicka på ”Hämta alla bilder”, eller ”Öppna brevet med bilder”.
- Avaktivera mottagare som har bytt emailadress, de påverkar statistiken negativt och tar bandbredd och resurser. Se till att kontinuerligt uppmana dina kunder/säljare att uppdatera epostadresserna.
Sen lite hygienfaktorer
- Vad är budskapet? Vad ska hända när mottagaren tar emot brevet? Vad är avslutet?
- Undvik att upplevas som spammare, erbjud riktigt innehåll som faktiskt är intressant för mottagaren – annars får du självklart en motsatt effekt
- Erbjud en enkel ”Avregistrera mig från nyhetsbrevet” och kräv inget mer än ett godkännande av mottagaren. Att logga in på en sajt med lösenord osv för att avregistrera sig är inte speciellt bra kundvård. Det kommer bara öka frustrationen för mottagaren.
Här kommer mailet jag fick i morse, det är tyvärr ett klockrent exempel på hur man inte har gjort något av ovanstående. De har inte testat, de utgår från att bilderna är laddade, budskapet är väldigt otydligt. Jag hoppas Kontorab läser det här och bättrar sig.
Härom dagen behövde jag få fram hela textinnehållet på en sida i EPiServer för att indexera i en separat söktjänst. Det dynamiska innehåll som fanns på sidan kom först inte med alls eftersom det bara är sparat som placeholders i texten. Men med den här kodsnutten så är det inga problem att få ut det renderade innehållet i en kontrollen:
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Läs Dynamic Content-innehåll i EPiServer CMS utan att visa sidan", + "meta_description": "", + "author_id": 1093, + "created_at": 1318241838000, + "created_by": 1093, + "updated_at": 1318241838000, + "updated_by": 1093, + "published_at": 1318241838000, + "published_by": 1093 + }, + { + "id": 573, + "title": "Lös problem med log4net-loggning i EPiServer", + "slug": "los-problem-med-log4net-loggning-i-episerver", + "markdown": "\r\n\r\nLog4net är ett väldigt bra verktyg för att logga (framför allt fel) i sin webbapplikation. EPiServer har inbyggt stöd för log4net och bara genom att ta med en fil som heter EPiServerLog.config så kommer både din egen loggning och EPiServers inbyggda att hamna i en fil, via epost eller strömmas via UDP. Vi har dock haft väldigt mycket problem med loggningen i EPiServer som alla tar sin utgångspunkt i att loggningen helt enkelt inte fungerar. Olika typer av workarounds (som att mappa upp en separat loggfil för vår egen loggning) har bara skapat en massa andra problem, med prestanda bland annat.\r\n\r\nTed Nyberg, en av Sveriges namnkunnigaste EPiServer-utvecklare, har i en bloggpost upptäckt varför. Det är inte en av de vanliga orsakerna som att app poolens användare inte har skrivrättigheter i katalogen där loggfilen ska hamna – det är en bugg i EPiServer. Om man har ett klass-objekt för loggning i global.asax så går hela loggningen sönder!\r\n\r\nDet tråkiga är ju att det oftast är precis det man har. Ett klassiskt log4net-pattern ser ut såhär:\r\n\r\n![Bild](http://tekniken.nu/uploads/634540269003730948-river_log.jpg)\r\n```prettyprint lang-c-sharp\r\nnamespace MyNameSpace \r\n{\r\n\tpublic class MyClass \r\n\t{\r\n\t\tprivate static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);\r\n\r\n\t\tpublic void MyMethod() \r\n\t\t{\r\n\t\t\tlog.Warn(“Call to MyMethod!”);\r\n\t\t}\r\n\t}\r\n}\r\n```\r\n\r\n\r\nDet går bra att fortsätta göra så här i ditt EPiServer-projekt,men inte i global.asax.\r\n\r\n\r\nLäs mer i Ted Nybergs bloggpost som också innehåller en massa andra matnyttiga tips när det gäller loggning i EPiServer.\r\n", + "html": "Log4net är ett väldigt bra verktyg för att logga (framför allt fel) i sin webbapplikation. EPiServer har inbyggt stöd för log4net och bara genom att ta med en fil som heter EPiServerLog.config så kommer både din egen loggning och EPiServers inbyggda att hamna i en fil, via epost eller strömmas via UDP. Vi har dock haft väldigt mycket problem med loggningen i EPiServer som alla tar sin utgångspunkt i att loggningen helt enkelt inte fungerar. Olika typer av workarounds (som att mappa upp en separat loggfil för vår egen loggning) har bara skapat en massa andra problem, med prestanda bland annat.
Ted Nyberg, en av Sveriges namnkunnigaste EPiServer-utvecklare, har i en bloggpost upptäckt varför. Det är inte en av de vanliga orsakerna som att app poolens användare inte har skrivrättigheter i katalogen där loggfilen ska hamna – det är en bugg i EPiServer. Om man har ett klass-objekt för loggning i global.asax så går hela loggningen sönder!
Det tråkiga är ju att det oftast är precis det man har. Ett klassiskt log4net-pattern ser ut såhär:
Det går bra att fortsätta göra så här i ditt EPiServer-projekt,men inte i global.asax.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Lös problem med log4net-loggning i EPiServer", + "meta_description": "", + "author_id": 6, + "created_at": 1318850520000, + "created_by": 6, + "updated_at": 1318850520000, + "updated_by": 6, + "published_at": 1318850520000, + "published_by": 6 + }, + { + "id": 576, + "title": "Fungerar NuGet-paket på din byggserver?", + "slug": "fungerar-nuget-paket-pa-din-byggserver", + "markdown": "\r\n\r\nOm du inte börjat använda NuGet än bör du börja nu. NuGet är en pakethanterare som innehåller alla ramverk som du behöver i dina webbprojekt och hanterar allt från versioner, beroenden till andra paket, registrerar dll filer och referenser i ditt projekt, justerar web.config och framför allt – när det kommer nya versioner av ett paket kan du uppgradera till den nya versionen och NuGet kan hjälpa till att byta referenser.\r\n\r\n\r\n\r\nOm du använder NuGet och dessutom har en TFS build server som automatiskt bygger dina projekt (principen fungerar också bra om du t ex använder AppHarbor som byggserver), då kan du lägga in följande kodsnutt i din projektfil (redigera .csproj med notepad).\r\n\r\nInstallera först NuGet på din buildserver:\r\n\r\nhttp://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c\r\n\r\nKlistra in denna i din .csproj fil (med notepad).\r\n\r\n
Om du inte börjat använda NuGet än bör du börja nu. NuGet är en pakethanterare som innehåller alla ramverk som du behöver i dina webbprojekt och hanterar allt från versioner, beroenden till andra paket, registrerar dll filer och referenser i ditt projekt, justerar web.config och framför allt – när det kommer nya versioner av ett paket kan du uppgradera till den nya versionen och NuGet kan hjälpa till att byta referenser.
Om du använder NuGet och dessutom har en TFS build server som automatiskt bygger dina projekt (principen fungerar också bra om du t ex använder AppHarbor som byggserver), då kan du lägga in följande kodsnutt i din projektfil (redigera .csproj med notepad).
Installera först NuGet på din buildserver:
http://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c
Klistra in denna i din .csproj fil (med notepad).
<Target Name=\"BeforeBuild\">
<Exec Command=\""c:\\NuGet\\bin\\nuget.bat" install "$(ProjectDir)packages.config" -o "$(SolutionDir)packages"\" />
</Target>
Nu hämtar din TFS server automatiskt alla nugetpaket som du refererar till och de behöver därmed inte längre checkas in för att fungera!
Källa:
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Fungerar NuGet-paket på din byggserver?", + "meta_description": "", + "author_id": 1087, + "created_at": 1319640900000, + "created_by": 1087, + "updated_at": 1319640900000, + "updated_by": 1087, + "published_at": 1319640900000, + "published_by": 1087 + }, + { + "id": 577, + "title": "Hur mår API:erna?", + "slug": "hur-mar-apierna", + "markdown": "\r\n\r\nDen sammankopplade världen där allt fler tjänster finns i molnet är fantastisk – men den ställer också krav på att allas API:er fungerar som de ska och är uppe. Om du undrar hur det står till med API:erna för de största och mest använda siterna finns den utmärkta tjänsten http://api-status.com/. Den visar både status just nu och en historik på ungefär en vecka bakåt.\r\n\r\n\r\n\r\nStatus just nu:\r\n\r\n\r\n\r\n\r\n\r\nHistorik (skärpning DropBox!):\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/634551516343694971-image001.png@01CC8E56.3C74F010__image001.png)", + "html": "Den sammankopplade världen där allt fler tjänster finns i molnet är fantastisk – men den ställer också krav på att allas API:er fungerar som de ska och är uppe. Om du undrar hur det står till med API:erna för de största och mest använda siterna finns den utmärkta tjänsten http://api-status.com/. Den visar både status just nu och en historik på ungefär en vecka bakåt.
Status just nu:
Historik (skärpning DropBox!):
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Hur mår API:erna?", + "meta_description": "", + "author_id": 6, + "created_at": 1319554834000, + "created_by": 6, + "updated_at": 1319554834000, + "updated_by": 6, + "published_at": 1319554834000, + "published_by": 6 + }, + { + "id": 579, + "title": "Nu är det jättelätt med rundade hörn i HTML!", + "slug": "nu-ar-det-jattelatt-med-rundade-horn-i-html", + "markdown": "\r\n\r\nÄven de absolut enklaste rundade hörnen kan vara riktigt jobbiga att få snygga med HTML om du har höga krav på att det ska se bra ut även i äldre webbläsare.\r\n## Rundade hörn med CSS3\r\nI de allra senaste webbläsarna är det superenkelt att skapa rundade hörn. För att få dit dem i CSS3-webbläsare, Firefox och webbkit så lägger man till border-radius, -moz-border-radius respektive -webkit-border-radius i sitt stylesheet på det här viset:\r\n\r\n![Bild](http://tekniken.nu/uploads/634565154317503354-image002.png@01CC93FA.462E2C80__image002.png)\r\n```prettyprint lang-html\r\ndiv {\r\nbackground:#eeeeee;\r\nborder-radius:20px;\r\n-moz-border-radius:20px;\r\n-webkit-border-radius:20px;\r\n}\r\n```\r\n\r\n## Rundade hörn i Internet Explorer\r\nDet finns ett gäng olika sätt att få rundade hörn i äldre versioner av IE. Jag väntar precis som ni andra på att äldre versioner av IE ska gå ur tiden så att man kan känna sig säker med CSS3 men till dess får vi lösa det på annat sätt. Många väljer att trixa med bilder eller använder ett javascriptbibliotek för att sätta rundade hörn på vissa objekt. Det snyggaste sättet jag hittat är däremot att infoga en .htc-fil i stylesheetet!\r\n\r\nDu laddar ner en vältestad sådan från t ex http://css3pie.com.\r\n\r\nObjektet som ska få rundade hörn behöver följande värden:\r\nbehavior med url till .htc-filen (denna sökväg måste vara relativ den sida som stylesheetet läggs in på – säkrast är att göra den absolut).position:relative och zoom:1 för att hörnen ska kunna positioneras.ha dom vanliga inställningarna för border-radius (för att bättre webbläsare ska slippa använda .htc-filen).\r\n```prettyprint lang-html\r\ndiv {\r\nbackground:#eeeeee;\r\nbehavior:url(/Styles/Default/PIE.htc);\r\nborder-radius:20px;\r\n-moz-border-radius:20px;\r\n-webkit-border-radius:20px;\r\nposition:relative;\r\nzoom:1;\r\n}\r\n```\r\n\r\n\r\n\r\n## CSS3 Pie\r\nCSS3 Pie verkar också kunna även hjälpa dig med border-shadow och linear-gradient i Internet Explorer. Lysande!\r\n\r\n\r\n", + "html": "Även de absolut enklaste rundade hörnen kan vara riktigt jobbiga att få snygga med HTML om du har höga krav på att det ska se bra ut även i äldre webbläsare.
Rundade hörn med CSS3
I de allra senaste webbläsarna är det superenkelt att skapa rundade hörn. För att få dit dem i CSS3-webbläsare, Firefox och webbkit så lägger man till border-radius, -moz-border-radius respektive -webkit-border-radius i sitt stylesheet på det här viset:
Rundade hörn i Internet Explorer
Det finns ett gäng olika sätt att få rundade hörn i äldre versioner av IE. Jag väntar precis som ni andra på att äldre versioner av IE ska gå ur tiden så att man kan känna sig säker med CSS3 men till dess får vi lösa det på annat sätt. Många väljer att trixa med bilder eller använder ett javascriptbibliotek för att sätta rundade hörn på vissa objekt. Det snyggaste sättet jag hittat är däremot att infoga en .htc-fil i stylesheetet!
Du laddar ner en vältestad sådan från t ex http://css3pie.com.
Objektet som ska få rundade hörn behöver följande värden:
- behavior med url till .htc-filen (denna sökväg måste vara relativ den sida som stylesheetet läggs in på – säkrast är att göra den absolut).
- position:relative och zoom:1 för att hörnen ska kunna positioneras.
- ha dom vanliga inställningarna för border-radius (för att bättre webbläsare ska slippa använda .htc-filen).
CSS3 Pie
CSS3 Pie verkar också kunna även hjälpa dig med border-shadow och linear-gradient i Internet Explorer. Lysande!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Nu är det jättelätt med rundade hörn i HTML!", + "meta_description": "", + "author_id": 1093, + "created_at": 1320923400000, + "created_by": 1093, + "updated_at": 1320923400000, + "updated_by": 1093, + "published_at": 1320923400000, + "published_by": 1093 + }, + { + "id": 581, + "title": "Behöver man skriva !! för att hantera en bool i Javascript?", + "slug": "behover-man-skriva--for-att-hantera-en-bool-i-javascript", + "markdown": "\r\n\r\nSvaret är nej (i 99% av fallen)\r\n\r\n\r\n\r\nMånga använder !! för att konvertera om en sträng till en bool i if-satser men det är inte nödvändigt för Javascript hanterar bool convertering i sig självt. !! är egentligen ingen egen operator utan endast två ! efter varandra. Dvs !true är false och !!true är true. Dock är syntaxen väldigt svårtolkad och eftersom den är onödig rekommenderar jag inte att man använder den alls.\r\n\r\nDvs du behöver inte skriva:\r\n\r\nif (!!user.password) return true;\r\n\r\ndet räcker med\r\n\r\nif (user.password) return true;\r\n\r\nDet finns dock ett fall där det är bra att konvertera en sträng till en bool och det är om du behöver skapa en ny variabel som innehåller en bool flagga:\r\n\r\nvar hasPassword = user.password;\r\n\r\nalert(hasPassword) // skriver ut lösenordet\r\n\r\nI detta fall skulle det vara önskvärt att byta till:\r\n\r\nvar hasPassword = !! user.password;\r\n\r\nalert(hasPassword) // skriver true\r\n\r\nEller nästan ännu hellre vända på problemet\r\n\r\nvar hasEmptyPassword = ! user.password;\r\n\r\nalert(!hasEmptyPassword) // skriver true\r\n\r\nEller:\r\n\r\nvar hasPassword = Boolean(user.password);\r\n\r\nalert(!hasPassword) // skriver true\r\n\r\nLäs fler reaktioner på detta:\r\n\r\nhttp://stackoverflow.com/questions/784929/what-is-the-operator-in-javascript\r\n\r\nOch tester på vilka värden som hanteras på vilket sätt med !!:\r\n\r\nhttp://jibbering.com/faq/notes/type-conversion/\r\n", + "html": "Svaret är nej (i 99% av fallen)
Många använder !! för att konvertera om en sträng till en bool i if-satser men det är inte nödvändigt för Javascript hanterar bool convertering i sig självt. !! är egentligen ingen egen operator utan endast två ! efter varandra. Dvs !true är false och !!true är true. Dock är syntaxen väldigt svårtolkad och eftersom den är onödig rekommenderar jag inte att man använder den alls.
Dvs du behöver inte skriva:
if (!!user.password) return true;
det räcker med
if (user.password) return true;
Det finns dock ett fall där det är bra att konvertera en sträng till en bool och det är om du behöver skapa en ny variabel som innehåller en bool flagga:
var hasPassword = user.password;
alert(hasPassword) // skriver ut lösenordet
I detta fall skulle det vara önskvärt att byta till:
var hasPassword = !! user.password;
alert(hasPassword) // skriver true
Eller nästan ännu hellre vända på problemet
var hasEmptyPassword = ! user.password;
alert(!hasEmptyPassword) // skriver true
Eller:
var hasPassword = Boolean(user.password);
alert(!hasPassword) // skriver true
Läs fler reaktioner på detta:
http://stackoverflow.com/questions/784929/what-is-the-operator-in-javascript
Och tester på vilka värden som hanteras på vilket sätt med !!:
http://jibbering.com/faq/notes/type-conversion/
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Behöver man skriva !! för att hantera en bool i Javascript?", + "meta_description": "", + "author_id": 1087, + "created_at": 1322751600000, + "created_by": 1087, + "updated_at": 1322751600000, + "updated_by": 1087, + "published_at": 1322751600000, + "published_by": 1087 + }, + { + "id": 583, + "title": "Unminify Javascript", + "slug": "unminify-javascript", + "markdown": "\r\n\r\nOm du behöver ”packa upp” en javascriptfil som har ”minifierats” finns det en väldigt bra sajt som gör detta åt dig:\r\n\r\nhttp://jsbeautifier.org/\r\n\r\nDet är bara klistra in din javascriptkod och trycka ctrl-enter så får du fram en fin källkod.\r\n\r\nDen kan även användas för att snygga upp indenteringar och radbrytningar i din vanliga javascriptkod.\r\n\r\n![Bild](http://tekniken.nu/uploads/634612749867070257-image001.png@01CCBB25.94801DB0__image001.png)", + "html": "Om du behöver ”packa upp” en javascriptfil som har ”minifierats” finns det en väldigt bra sajt som gör detta åt dig:
Det är bara klistra in din javascriptkod och trycka ctrl-enter så får du fram en fin källkod.
Den kan även användas för att snygga upp indenteringar och radbrytningar i din vanliga javascriptkod.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Unminify Javascript", + "meta_description": "", + "author_id": 1087, + "created_at": 1325678340000, + "created_by": 1087, + "updated_at": 1325678340000, + "updated_by": 1087, + "published_at": 1325678340000, + "published_by": 1087 + }, + { + "id": 587, + "title": "Vad är nytt i nästa version av TFS?", + "slug": "vad-ar-nytt-i-nasta-version-av-tfs", + "markdown": "\r\nNästa version av Microsoft TFS heter än så länge vNext / Team Foundation Server 11 och har en hel del goda nyheter.\r\nDet finns en testversion att ladda ner som HyperV testmaskin eller som separat installation, se länkarna längre ner. Här kommer en liten sammanställning av det nyheter vi på Tekniken gillar mest. Tidplanen enligt rykten är att denna kommer släppas skarpt i slutet av året. \r\n\r\nLayouten i både webgränssnittet och i Visual Studio är uppsnyggat och har mer luft och använder tydligare typografi.\r\n\r\n\r\n\r\nBland annat finns det en inbyggd Task Board så att man slipper köra en tredjepartsprodukt som t ex Urban Turtle när man jobbar i Scrum:\r\n\r\n\r\n\r\nEn av de viktigaste förbättringarna enligt mig ligger i källkodshanteringen som numera tillåter lokala ändringar offline och använder inte längre lås som tidigare vilket har förhindrat användningen av tredjepartsprogram, dvs samma upplägg som SVN. Tyvärr verkar det inte finnas lokala incheckningar och sammanslagningar mellan olika repositories som fortfarande är en av de stora anledningarna till att använda GIT eller Mercurial. Jobbar du lokalt och offline får du helt enkelt vänta med att checka in tills du blir online igen. Eller som Brian Keller uttrycker det: När du är på stranden och kodar bör du ändå vara ledig.. :-(\r\n\r\nNytt är också ett nytt steg i utvecklingsprocessen som heter Code Review som kan kopplas samman med en incheckning och därmed begära att din incheckning ska granskas av en kollega innan den checkas in skarpt i repositoriet. Dessutom är det ofta hatade diffverktyget numera utbytt och integrerat med resten av editorn:\r\n\r\n\r\n\r\nÄven merge blir bättre:\r\n\r\n\r\n\r\n \r\n\r\nÄntligen kan man numera testa unittest som är skrivna i språket nUnit direkt inne i Visual Studio utan tredjepartsprodukter:\r\n\r\n\r\n\r\nHyperV image\r\n\r\nhttp://blogs.msdn.com/b/briankel/archive/2011/09/16/visual-studio-11-application-lifecycle-management-virtual-machine-and-hands-on-labs-demo-scripts.aspx\r\n\r\nWebInstaller\r\n\r\nhttp://www.microsoft.com/download/en/details.aspx?displaylang=en&id=27539\r\n\r\n![Bild](http://tekniken.nu/uploads/634625871816895557-image001.jpg@01CCD1FE.2AD17450__image001.jpg)", + "html": "Det finns en testversion att ladda ner som HyperV testmaskin eller som separat installation, se länkarna längre ner. Här kommer en liten sammanställning av det nyheter vi på Tekniken gillar mest. Tidplanen enligt rykten är att denna kommer släppas skarpt i slutet av året.
Layouten i både webgränssnittet och i Visual Studio är uppsnyggat och har mer luft och använder tydligare typografi.
Bland annat finns det en inbyggd Task Board så att man slipper köra en tredjepartsprodukt som t ex Urban Turtle när man jobbar i Scrum:
En av de viktigaste förbättringarna enligt mig ligger i källkodshanteringen som numera tillåter lokala ändringar offline och använder inte längre lås som tidigare vilket har förhindrat användningen av tredjepartsprogram, dvs samma upplägg som SVN. Tyvärr verkar det inte finnas lokala incheckningar och sammanslagningar mellan olika repositories som fortfarande är en av de stora anledningarna till att använda GIT eller Mercurial. Jobbar du lokalt och offline får du helt enkelt vänta med att checka in tills du blir online igen. Eller som Brian Keller uttrycker det: När du är på stranden och kodar bör du ändå vara ledig.. :-(
Nytt är också ett nytt steg i utvecklingsprocessen som heter Code Review som kan kopplas samman med en incheckning och därmed begära att din incheckning ska granskas av en kollega innan den checkas in skarpt i repositoriet. Dessutom är det ofta hatade diffverktyget numera utbytt och integrerat med resten av editorn:
Även merge blir bättre:
Äntligen kan man numera testa unittest som är skrivna i språket nUnit direkt inne i Visual Studio utan tredjepartsprodukter:
HyperV image
WebInstaller
http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=27539
För att skicka en array t ex int[] från jQuery till en WCF eller ASMX behöver man lägga till parametern traditional:true. Annars lägger jQuery till [] till parameternamnet och därmed hittar inte IIS till rätt metod och ger felet:
System.InvalidOperationException: XXXX Web Service method name is not valid.
Lösningen är alltså att ange traditional:true och dataType : html.
Och WCF skriver man såhär:
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Minitips om jQuery till WCF", + "meta_description": "", + "author_id": 1087, + "created_at": 1328024647000, + "created_by": 1087, + "updated_at": 1328024647000, + "updated_by": 1087, + "published_at": 1328024647000, + "published_by": 1087 + }, + { + "id": 589, + "title": "Utnyttja internet i din kunds köpprocess", + "slug": "utnyttja-internet-i-din-kunds-kopprocess", + "markdown": "\r\n\r\nI den här bloggserien kommer vi att ge lite praktiska tips på hur du kan använda webbteknik för att hjälpa just dina potentiella kunder i rätt riktning – dvs att röra sig framåt i köpprocessen och bli en nöjd, långsiktigt och återköpande kund.\r\n# Steg 1, din tilltänkta kund upptäcker behovet\r\n\r\n\r\nGrundläggande bild av köpprocess.\r\n## Sverige har varit moget länge\r\nSedan 1995, när internet gjorde entré i företagsvärlden så har många företag insett potentialen i att synas och finnas på webben. I början bara som ett visitkort eller broschyr och senare som sätt att kommunicera sitt varumärke, som komplement till övriga informationskanaler. På senare år har många framgångsrika företag insett möjligheten att använda sin närvaro på Internet till att också kommunicera via webben, och även göra den faktiska affären online. De första och mest framgångsrika exemplen är inom områden med en ung och uppkopplad målgrupp med tydligt definierade produkter. T ex elektronik, vitvaror, böcker, cd-skivor, filmer, resor. Men nu är det dags att fler företag inser potentialen att använda webbens möjligheter för både fler områden men också för fler delar av köpprocessen.\r\n## Webbens köpkraft finns\r\nNumera är nästan alla hushåll i Sveriges uppkopplade och har bra förutsättningar med bra bredband, läsplattor, mobiltelefoner. Det innebär att fler företag har prövat och lyckats flytta sin affär till Internet. Bra exempel på detta är kommuner och myndigheter som gjort fler av sina tjänster tillgängliga dygnet runt och ökar sin kundservice och effektiviserar sin verksamhet på samma gång. Eftersom tekniken blir mer och mer standardiserad och därmed billigare kan numera även mindre företag och organisationer göra sina affärer tillgängliga.\r\n\r\n\r\n## Mobil explosion ökar möjligheterna\r\n87% av alla svenskar 2011 anger att de använder Internet till att söka fakta och produktinformation. 72% använder internet för att göra prisjämförelser, 78% för att köpa och betala varor. Över hälften använder sociala nätverk. 42% av alla i åldern 16-35 surfar mobilt dagligen 2011 vilket kan jämföras med 3-7% året innan. Hur kommer 2012 se ut?\r\n\r\n\r\nKälla: IIS 2011\r\n## 1995: Webben saknas i köpprocessen1. Upptäcka behovet\r\nTV/Radioreklam, annonsering, direktutskick, billboards, rekommendationer och säljare.\r\n2. Söka information\r\nKundtjänst, broschyrer, bibliotek, rådgivning i butik och över telefon.\r\n3. Jämför alternativ\r\nFråga vänner och familj, tidningar, undersökningar och konsumenttester.\r\n4. Genomför köp\r\nPostorder, köp i butik, telefonbeställning.\r\n5. Efterköpsbeteende\r\nFörklarar sitt beslut runt middagsbordet och i fikarummet på jobbet, visa fakta i broschyrer, visa produkten.\r\n## 2012: Webben bör på allvar utnyttjas i köpprocessen:1. Upptäcka behovet\r\nSe tips i sociala medier, banners, adwords i samband med sökningar, nyhetsbrev, QR koder i annonser.\r\n2. Söka information\r\nInformation på hemsida, wikipedia, nyhetsbrev, mobilsajter.\r\n3. Jämföra alternativ\r\nGoogla sökord, prisjämförelsesajter, testsajter, fråga på sociala nätverk, kommentarer på sajter.\r\n4. Genomföra köp\r\nWebbutik, QR-kod för beställning.\r\n5. Efterköpsbeteende\r\nSe instruktionsvideo och guider på YouTube, berätta om köpet för vänner på Facebook och Twitter, skicka länk/fakta via mail.\r\n## Upptäcker behovet - våra tips\r\nHär är 4 konkreta tips för hur du kan använda teknik för att stödja dina kunders köpprocess i steg 1 – upptäcka behovet:\r\n\r\n\r\n1. Upptäck\r\nTa din tilltänka kund från ögonblicket då behovet upptäcks till att direkt kunna köpa. Det går att göra med QR koder som bryggar från offline-medier så som annonser, broschyrer, tv-reklam till din mobila webbplats. Tänk bara på att dina besökare kommer använda mobilen när de scannat din QR kod vilket gör att du bör anpassa sidan till att fungera på en mobil skärm. Tänk också på att besökaren redan läst din annons och har därmed passerat steg 1 och är i steg 2 - så ta honom/henne till en sida som konkret presenterar information och ger möjlighet att även köpa.\r\n2. Dela\r\nMöjliggör för dina kunder att berätta om sina köp i sociala media. En ”Dela på Facebook”, eller ”Dela på Twitter” knapp kan göra att flera personer i din kunds vänkrets upptäcker att även dom har behov av din produkt eller tjänst.\r\n3. Sökmotoroptimera\r\nFörsök identifiera de nyckelord dina kunder använder. Tänk inte på vad dina produkter eller tjänster heter utan försök tänka mer generellt. Använd Google som inspiration. Börja skriva ett ord och se vad Google föreslår. De förslag Google visar upp är sådant som många söker på, det betyder att du ska ha just dessa kombinationer av ord på din sajt. T ex kanske du säljer ballongresor. Uppenbarligen kommer du skriva ballongresor många gånger på din sajt så det behöver du inte oroa dig för men det kanske inte är vad dina kunder först söker på. Testa att skriva upplevelser i Google så ser det ut som nedan. Om du nu har en sida på din sajt som heter Upplevelser för Två i Stockholm kommer din sida vara en av de få som får träff på både de mest populära sökningarna ”Upplevelser för två” och ”Upplevelser i Stockholm”. Går du sen vidare och skriver ”Upplevelser för två” kommer du se att de mest populära orterna är Malmö och Stockholm.\r\n4. Skicka nyhetsbrev\r\nSamla upp frågor från dina forum, visa populära eller nya produkter/tjänster. Ta upp aktuella händelser och knyt an till dessa händelser. Våga vara personlig och inkludera erbjudande samt uppmuntra mottagarna att skicka vidare nyhetsbrevet till kollegor och vänner. Skicka inte för ofta och gör det enkelt att avregistrera sig. Läs även vad vi tidigare skrivit om nyhetsbrev.\r\n### Har du andra tips eller andra erfarenheter? Kommentera gärna detta blogginlägg och sprid budskapet så lär vi oss alla mer och snabbare.\r\n![Bild](http://tekniken.nu/uploads/634650796912994107-image001.jpg@01CCEC00.D0F34220__image001.jpg)", + "html": "I den här bloggserien kommer vi att ge lite praktiska tips på hur du kan använda webbteknik för att hjälpa just dina potentiella kunder i rätt riktning – dvs att röra sig framåt i köpprocessen och bli en nöjd, långsiktigt och återköpande kund.
Steg 1, din tilltänkta kund upptäcker behovet
Grundläggande bild av köpprocess.
Sverige har varit moget länge
Sedan 1995, när internet gjorde entré i företagsvärlden så har många företag insett potentialen i att synas och finnas på webben. I början bara som ett visitkort eller broschyr och senare som sätt att kommunicera sitt varumärke, som komplement till övriga informationskanaler. På senare år har många framgångsrika företag insett möjligheten att använda sin närvaro på Internet till att också kommunicera via webben, och även göra den faktiska affären online. De första och mest framgångsrika exemplen är inom områden med en ung och uppkopplad målgrupp med tydligt definierade produkter. T ex elektronik, vitvaror, böcker, cd-skivor, filmer, resor. Men nu är det dags att fler företag inser potentialen att använda webbens möjligheter för både fler områden men också för fler delar av köpprocessen.
Webbens köpkraft finns
Numera är nästan alla hushåll i Sveriges uppkopplade och har bra förutsättningar med bra bredband, läsplattor, mobiltelefoner. Det innebär att fler företag har prövat och lyckats flytta sin affär till Internet. Bra exempel på detta är kommuner och myndigheter som gjort fler av sina tjänster tillgängliga dygnet runt och ökar sin kundservice och effektiviserar sin verksamhet på samma gång. Eftersom tekniken blir mer och mer standardiserad och därmed billigare kan numera även mindre företag och organisationer göra sina affärer tillgängliga.
Mobil explosion ökar möjligheterna
87% av alla svenskar 2011 anger att de använder Internet till att söka fakta och produktinformation. 72% använder internet för att göra prisjämförelser, 78% för att köpa och betala varor. Över hälften använder sociala nätverk. 42% av alla i åldern 16-35 surfar mobilt dagligen 2011 vilket kan jämföras med 3-7% året innan. Hur kommer 2012 se ut?
Källa: IIS 2011
1995: Webben saknas i köpprocessen
1. Upptäcka behovet
TV/Radioreklam, annonsering, direktutskick, billboards, rekommendationer och säljare.
2. Söka information
Kundtjänst, broschyrer, bibliotek, rådgivning i butik och över telefon.
3. Jämför alternativ
Fråga vänner och familj, tidningar, undersökningar och konsumenttester.
4. Genomför köp
Postorder, köp i butik, telefonbeställning.
5. Efterköpsbeteende
Förklarar sitt beslut runt middagsbordet och i fikarummet på jobbet, visa fakta i broschyrer, visa produkten.
2012: Webben bör på allvar utnyttjas i köpprocessen:
1. Upptäcka behovet
Se tips i sociala medier, banners, adwords i samband med sökningar, nyhetsbrev, QR koder i annonser.
2. Söka information
Information på hemsida, wikipedia, nyhetsbrev, mobilsajter.
3. Jämföra alternativ
Googla sökord, prisjämförelsesajter, testsajter, fråga på sociala nätverk, kommentarer på sajter.
4. Genomföra köp
Webbutik, QR-kod för beställning.
5. Efterköpsbeteende
Se instruktionsvideo och guider på YouTube, berätta om köpet för vänner på Facebook och Twitter, skicka länk/fakta via mail.
Upptäcker behovet - våra tips
Här är 4 konkreta tips för hur du kan använda teknik för att stödja dina kunders köpprocess i steg 1 – upptäcka behovet:
1. Upptäck
Ta din tilltänka kund från ögonblicket då behovet upptäcks till att direkt kunna köpa. Det går att göra med QR koder som bryggar från offline-medier så som annonser, broschyrer, tv-reklam till din mobila webbplats. Tänk bara på att dina besökare kommer använda mobilen när de scannat din QR kod vilket gör att du bör anpassa sidan till att fungera på en mobil skärm. Tänk också på att besökaren redan läst din annons och har därmed passerat steg 1 och är i steg 2 - så ta honom/henne till en sida som konkret presenterar information och ger möjlighet att även köpa.
2. Dela
Möjliggör för dina kunder att berätta om sina köp i sociala media. En ”Dela på Facebook”, eller ”Dela på Twitter” knapp kan göra att flera personer i din kunds vänkrets upptäcker att även dom har behov av din produkt eller tjänst.
3. Sökmotoroptimera
Försök identifiera de nyckelord dina kunder använder. Tänk inte på vad dina produkter eller tjänster heter utan försök tänka mer generellt. Använd Google som inspiration. Börja skriva ett ord och se vad Google föreslår. De förslag Google visar upp är sådant som många söker på, det betyder att du ska ha just dessa kombinationer av ord på din sajt. T ex kanske du säljer ballongresor. Uppenbarligen kommer du skriva ballongresor många gånger på din sajt så det behöver du inte oroa dig för men det kanske inte är vad dina kunder först söker på. Testa att skriva upplevelser i Google så ser det ut som nedan. Om du nu har en sida på din sajt som heter Upplevelser för Två i Stockholm kommer din sida vara en av de få som får träff på både de mest populära sökningarna ”Upplevelser för två” och ”Upplevelser i Stockholm”. Går du sen vidare och skriver ”Upplevelser för två” kommer du se att de mest populära orterna är Malmö och Stockholm.
4. Skicka nyhetsbrev
Samla upp frågor från dina forum, visa populära eller nya produkter/tjänster. Ta upp aktuella händelser och knyt an till dessa händelser. Våga vara personlig och inkludera erbjudande samt uppmuntra mottagarna att skicka vidare nyhetsbrevet till kollegor och vänner. Skicka inte för ofta och gör det enkelt att avregistrera sig. Läs även vad vi tidigare skrivit om nyhetsbrev.
Har du andra tips eller andra erfarenheter? Kommentera gärna detta blogginlägg och sprid budskapet så lär vi oss alla mer och snabbare.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Utnyttja internet i din kunds köpprocess", + "meta_description": " en nöjd, långsiktigt och återköpande kund.", + "author_id": 1087, + "created_at": 1330618440000, + "created_by": 1087, + "updated_at": 1330618440000, + "updated_by": 1087, + "published_at": 1330618440000, + "published_by": 1087 + }, + { + "id": 590, + "title": "Logga direkt till debug med Log4Net", + "slug": "logga-direkt-till-debug-med-log4net", + "markdown": "\r\n\r\nOm du kör Log4Net kan du lägga till denna rad i din log.config så får du din log synlig direkt i Visual Studio i Debug Output. Väldigt bra när man felsöker hastighet i applikationer då man kan se vad som händer när en sida tar för lång tid att ladda.\r\n\r\n```prettyprint lang-xml\r\nOm du kör Log4Net kan du lägga till denna rad i din log.config så får du din log synlig direkt i Visual Studio i Debug Output. Väldigt bra när man felsöker hastighet i applikationer då man kan se vad som händer när en sida tar för lång tid att ladda.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Logga direkt till debug med Log4Net", + "meta_description": "", + "author_id": 1087, + "created_at": 1329482891000, + "created_by": 1087, + "updated_at": 1329482891000, + "updated_by": 1087, + "published_at": 1329482891000, + "published_by": 1087 + }, + { + "id": 592, + "title": "Rotsidan och papperskorgen ger 404-fel i EPiServer", + "slug": "rotsidan-och-papperskorgen-ger-404-fel-i-episerver", + "markdown": "\r\n\r\nEtt återkommande fel i EPiServer (särskilt efter uppgradering från version 4) är att klick på antingen rotsidan eller papperskorgen i redaktörsläget ger 404-fel. Det är ingen show stopper men ganska irriterande eftersom man tappar funktionen att tömma papperskorgen, och dessutom slutar hela redaktörsläget att fungera efter att ett sånt fel visas i högerpanelen.\r\n\r\nLösningen är väldigt enkel: peka sökvägen till sidtyperna SysRoot och SysRecyclebins mallar till korrekt plats. Det är ganska stor chans att t.ex. Recylce Bin innan uppgraderingen pekade på något i stil med ”/edit/wastebasketpage.aspx”. Från och med version 5 i EPiServer har ju sökvägen till redaktörsläget blivit annorlunda, bland annat måste man ju sätta en egen som en sorts ”security by obscurity”. Den nya sökvägen blir alltså istället något i stil med ”/my-custom-uipath/CMS/edit/wastebasketpage.aspx”.\r\n\r\nEfter att korrekta sökvägar är satta funkar både rotsidan och papperskorgen i redaktörsläget – största nyttan är att man då kan tömma papperskorgen på raderade sidor :-) \r\n\r\n![Bild](http://tekniken.nu/uploads/634674059915198957-trash-icon.png)", + "html": "Ett återkommande fel i EPiServer (särskilt efter uppgradering från version 4) är att klick på antingen rotsidan eller papperskorgen i redaktörsläget ger 404-fel. Det är ingen show stopper men ganska irriterande eftersom man tappar funktionen att tömma papperskorgen, och dessutom slutar hela redaktörsläget att fungera efter att ett sånt fel visas i högerpanelen.
Lösningen är väldigt enkel: peka sökvägen till sidtyperna SysRoot och SysRecyclebins mallar till korrekt plats. Det är ganska stor chans att t.ex. Recylce Bin innan uppgraderingen pekade på något i stil med ”/edit/wastebasketpage.aspx”. Från och med version 5 i EPiServer har ju sökvägen till redaktörsläget blivit annorlunda, bland annat måste man ju sätta en egen som en sorts ”security by obscurity”. Den nya sökvägen blir alltså istället något i stil med ”/my-custom-uipath/CMS/edit/wastebasketpage.aspx”.
Efter att korrekta sökvägar är satta funkar både rotsidan och papperskorgen i redaktörsläget – största nyttan är att man då kan tömma papperskorgen på raderade sidor :-)
För dig som ofta brukar skapa en tom html sida för att lägga in lite html, lite CSS och/eller lite Javascript för att testa eller verifiera någonting kan jag rekommendera onlineverktyget jsfiddle.net.
Ganska ofta kan man ha en JSON-fil eller url som man vill presentera lite finare och då passar jsFiddle utmärkt:
1. I det översta fältet kan du skriva din html inkl jQuery templates. JQuery är inkluderat som standard men du kan även välja andra ramverk, t ex ExtJs eller Dojo.
2. I det nedre vänstra fältet kan du skriva in javascriptkoden. Här finns även en helt ok färgkodare som tolkar din javascriptkod. Tyvärr finns ingen intellisence än.
3. I det högre övre fältet skriver du din CSS kod
4. Längst till höger längst ner finns ditt resultat.
Om du vill låta andra laborera med din kod kan du även spara din jsFiddle och skicka url:en. Du kan även labba vidare med min fiddle som hämtar issues från Github och rendrerar som en lista för att skapa en Changelog enkelt.Om du vill ändra i den kan du fork:a en egen gren av denna.
Adressen till denna fiddle är: http://jsfiddle.net/dCdHT/8/
I den här bloggserien ger vi praktiska tips på hur du kan använda webbteknik för att hjälpa just dina potentiella kunder i rätt riktning – dvs. att röra sig framåt i köpprocessen och bli en nöjd, långsiktigt och återköpande kund.
Steg 2, din tilltänkta kund söker information
Grundläggande bild av köpprocess.
Bakgrund
I den första bloggen i serien talade vi om köpkraften i Sverige och hur du kan stötta din besökare då hon eller han ska upptäcka att det finns ett köpbehov.
Läs det tidigare inlägget här:
Utnyttja internet i din kunds köpprocess
Här är 7 konkreta tips för hur du kan använda teknik för att stödja dina kunders köpprocess i steg 2 – söker information:
1. Aktuell information
För att se till att dina besökare hittar den information de behöver så skall du använd en CMS-produkt för din hemsida som gör det enkelt för dig och dina medarbetare att uppdatera och hålla färsk. Du skall snabbt kunna ändra själv om du ser att informationen är inkorrekt eller inaktuell.
2. Hjälp besökarna att hitta rätt
Se till att dina besökare kan söka - enkelt och tydligt på din sajt. Presentera sökresultaten i en bra sorterad vy, gärna med indelning i kategorier i de fall söket ger träff på flera olika produkt- eller tjänstekategorier.
3. Gör din sajt tillgänglig
Mobilanpassa din webbplats, men överarbeta inte. Testa din webbplats i en mobil och se till att inte flash krävs på viktiga ställen och att navigationen går att använda i praktiken. Att göra för stor förändring från din vanliga webbplats mot din mobila webbplats bör man vara försiktig med för ofta behöver dina kunder hitta tillbaka till samma ställe där de tidigare hittat en information. Dessutom läser många mailen i mobilen när man har fått tips från någon och då vill man se sidan som den såg ut när avsändaren tryckte på skicka.
4. Var närvarande på din sajt
Du kan vara närvarande i din virtuella affär på samma sätt som om du driver en fysisk butik lätt kan ställa dig i bakgrunden och observera och lära av dina kunders beteende. I den fysiska butiken kan också gå fram till kunderna och fråga när det ser ut som om de har fastnat och behöver din hjälp. I din virtuella butik är det inte lika enkelt men det går. Det finns bra verktyg som t ex WhosOn kan du förutom att följa dina besökare även kan börja chatta med dina besökare. För att ytterligare få en känsla av din butik så kan du använda Clicky och Clicky Notifier som gör att du får notifieringar när du får nya besökare. Allt för att du ska bli mer närvarande i din affär.
5. Lär av dina besökare
Din försäljningsdatabas innehåller garanterat många intressanta samband som du kan fiska fram med lite klurigt funderande. Om du letar lite kanske du kan mäta hur lång tid en genomsnittlig fullständig köpprocess tar. Oftast genomgår dina potentiella kunder alla steg enligt ovan och det kan ibland ta flera månader. Om du analyserar köpmönstret kan du hitta sätt att snabba upp processen, t ex skicka ett litet nyhetsbrev till de kunder som har varit inne på dina beslutsunderlagssidor men ännu inte kommit till ett beslut. Du kan också använda Google Analytics, som numera har realtidsinformation vilket gör att du kan följa dina kunder genom din affär och se vart de just nu befinner sig. Det ger en bra indikation på var flaskhalsar finns.
6. Korta ner vägarna
Använd tumregeln att 50 % av dina besökare försvinner för varje moment eller klick som de tvingas gå igenom. Ta bort onödiga hierarkiska menynivåer, ta bort onödiga undermenyer och klickrutor.
7. Enkelhet
Ställ krav på att din teknikleverantör bygger en sajt som är dead simple att använda! Använd normalfördelningskurvan som argument. Om du har många potentiella kunder kommer de fördela sig som normalfördelningskurvan vilket innebär att om du gör dina tekniska lösningar så krångliga att man måste vara en early adopter för att ta sig igenom din sajt – och då kommer du aldrig få fler än det teoretiska maxtalet 13,5% att bli avslutas med köp. Läs mer om early adopters på Wikipedia.
Har du andra tips eller andra erfarenheter? Kommentera gärna detta blogginlägg och sprid budskapet så lär vi oss alla mer och snabbare.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Utnyttja internet i din kunds köpprocess - del 2", + "meta_description": "", + "author_id": 1087, + "created_at": 1331810220000, + "created_by": 1087, + "updated_at": 1331810220000, + "updated_by": 1087, + "published_at": 1331810220000, + "published_by": 1087 + }, + { + "id": 595, + "title": "Så debuggar du ditt TFS-webbprojekt på en server", + "slug": "sa-debuggar-du-ditt-tfs-webbprojekt-pa-en-server", + "markdown": "\r\n\r\nOftast är det enklast att debugga problem i den lokala utvecklingsmiljön, men ibland stöter man på problem som bara finns i stagemiljön (eller – huga! – produktionsmiljön). Att kunna debugga koden som körs på servern från den lokala datorn kräver att ganska många steg genomförs, särskilt när man som vi bygger ut releaser med TFS. Såhär går det till:\r\n\r\n\r\n# Kompilering och bygge\r\n1) Se till att byggservern bygger Debug-version av projektet (i build definition).\r\n\r\n2) Aktivera Source Server i Visual Studio. Under Debugging->General finns en inställning som heter ”Enable Source Server Support”. Kryssa i den. Det låter som att man behöver en särskild server, men denna funktion är inbyggd i TFS. Den borde snarare heta ”Enable Server Source Support”.\r\n\r\n3) Skapa en nätverkskatalog för debuginformation (t.ex.\\\\server\\symbols). Fyll i sökvägen här i Visual Studio:\r\n\r\n\r\n\r\n4) Aktivera lagring av debugsymboler i bygget i TFS (i Edit Build Definition). Sätt ”Index Sources” till true och ”Path to Publish Symbols” till nätverkssökvägen i förra punkten:\r\n\r\n\r\n# Servern\r\n1) Installera debuggern på servern. Sökvägen är \"C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\Common7\\IDE\\Remote Debugger\\x64\\msvsmon.exe\". Om Visual Studio finns installerat på servern så finns redan de filer du behöver, annars kan du kopiera dem från din lokala utvecklingsmiljö. \r\n\r\n2) Starta debuggern (msvsmon.exe):\r\n\r\n\r\n\r\n3) Öppna Tools -> Permissions och lägg till dig själv eller en grupp du är med i och ge rättigheter att debugga.\r\n# Starta debuggning\r\n1) På din utvecklingsdator, välj Debug -> Attach to process.\r\n\r\n2) I qualifier, skriv in det som står i servernamnet i debuggern (DOMAIN\\debuguser@SERVER ovan)\r\n\r\n3) Hitta rätt w3wp.exe, anslut och debugga!\r\n\r\n![Bild](http://tekniken.nu/uploads/634674059948011457-image001.png)", + "html": "Oftast är det enklast att debugga problem i den lokala utvecklingsmiljön, men ibland stöter man på problem som bara finns i stagemiljön (eller – huga! – produktionsmiljön). Att kunna debugga koden som körs på servern från den lokala datorn kräver att ganska många steg genomförs, särskilt när man som vi bygger ut releaser med TFS. Såhär går det till:
Kompilering och bygge
1) Se till att byggservern bygger Debug-version av projektet (i build definition).
2) Aktivera Source Server i Visual Studio. Under Debugging->General finns en inställning som heter ”Enable Source Server Support”. Kryssa i den. Det låter som att man behöver en särskild server, men denna funktion är inbyggd i TFS. Den borde snarare heta ”Enable Server Source Support”.
3) Skapa en nätverkskatalog för debuginformation (t.ex.\\\\server\\symbols). Fyll i sökvägen här i Visual Studio:
4) Aktivera lagring av debugsymboler i bygget i TFS (i Edit Build Definition). Sätt ”Index Sources” till true och ”Path to Publish Symbols” till nätverkssökvägen i förra punkten:
Servern
1) Installera debuggern på servern. Sökvägen är \"C:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\Common7\\IDE\\Remote Debugger\\x64\\msvsmon.exe\". Om Visual Studio finns installerat på servern så finns redan de filer du behöver, annars kan du kopiera dem från din lokala utvecklingsmiljö.
2) Starta debuggern (msvsmon.exe):
3) Öppna Tools -> Permissions och lägg till dig själv eller en grupp du är med i och ge rättigheter att debugga.
Starta debuggning
1) På din utvecklingsdator, välj Debug -> Attach to process.
2) I qualifier, skriv in det som står i servernamnet i debuggern (DOMAIN\\debuguser@SERVER ovan)
3) Hitta rätt w3wp.exe, anslut och debugga!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Så debuggar du ditt TFS-webbprojekt på en server", + "meta_description": "", + "author_id": 6, + "created_at": 1332233100000, + "created_by": 6, + "updated_at": 1332233100000, + "updated_by": 6, + "published_at": 1332233100000, + "published_by": 6 + }, + { + "id": 596, + "title": "Varför visar IE9 din webbplats i kompatibilitetsläge?", + "slug": "varfor-visar-ie9-din-webbplats-i-kompatibilitetslage", + "markdown": "\r\n\r\nKompatibilitetsläge är Microsofts lösning på att vissa webbplatser slutar fungera i nya versioner av Internet Explorer. Man kan helt enkelt få IE9 att bete sig (nästan) som en IE5, IE6, IE7 eller IE8. Det finns en uppsjö med olika villkor som avgör vilket läge IE9 automatiskt ska välja: http://en.wikipedia.org/wiki/Quirks_mode\r\n\r\nNormalt sett så ska en webbsida med doctype för HTML5 - - göra att IE9 väljer standardläget. Ibland blir det dock inte så. Det finns meta-taggar och response headers som ska tvinga fram standardläget, men ibland funkar inte de heller. Ännu konstigare är att det fungerar lokalt, på testservern blir det däremot fel.\r\n## Såhär upptäcker man att sidan renderas i fel läge\r\n1) Öppna IE Developer Tools med F12\r\n\r\n2) Två platser visar att allt inte är som det ska:Browsern har valt kompatibilitetsläge för IE7, och har åstadkommit detta genom att förvandla den korrekta doctypen till en HTML-kommentar.\r\n## Varför?\r\nEfter felsökning och testande kommer man på att det står något i konsollen:\r\n\r\n\r\n## Lösning\r\nGör en eller båda av följande:\r\nTa bort siten ur Intranet Zone (se särskilt upp med wildcards, typ *.iteam.se)Slå av funktionen ’Display intranet sites in Compatibility View’ (inte så lätt man kan tro): 1) Välj att visa toolbaren ”Command bar” i IE (dold som standard). 2) Välj menyvalet ”Page > Compatiblity View settings”. 3) Kryssa ur ruta 2 under sitelistan:\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/634685440832912207-image001.png@01CD02AF.5F30ABD0__image001.png)", + "html": "Kompatibilitetsläge är Microsofts lösning på att vissa webbplatser slutar fungera i nya versioner av Internet Explorer. Man kan helt enkelt få IE9 att bete sig (nästan) som en IE5, IE6, IE7 eller IE8. Det finns en uppsjö med olika villkor som avgör vilket läge IE9 automatiskt ska välja: http://en.wikipedia.org/wiki/Quirks_mode
Normalt sett så ska en webbsida med doctype för HTML5 - <!DOCTYPE html> - göra att IE9 väljer standardläget. Ibland blir det dock inte så. Det finns meta-taggar och response headers som ska tvinga fram standardläget, men ibland funkar inte de heller. Ännu konstigare är att det fungerar lokalt, på testservern blir det däremot fel.
Såhär upptäcker man att sidan renderas i fel läge
1) Öppna IE Developer Tools med F12
2) Två platser visar att allt inte är som det ska:
Browsern har valt kompatibilitetsläge för IE7, och har åstadkommit detta genom att förvandla den korrekta doctypen till en HTML-kommentar.
Varför?
Efter felsökning och testande kommer man på att det står något i konsollen:
Lösning
Gör en eller båda av följande:
- Ta bort siten ur Intranet Zone (se särskilt upp med wildcards, typ *.iteam.se)
- Slå av funktionen ’Display intranet sites in Compatibility View’ (inte så lätt man kan tro): 1) Välj att visa toolbaren ”Command bar” i IE (dold som standard). 2) Välj menyvalet ”Page > Compatiblity View settings”. 3) Kryssa ur ruta 2 under sitelistan:
När man överför data mellan olika system hamnar man ibland i helvetet med gamla encodings. I .NET är alla strängar kodade i Unicode och så länge man ser till att underliggande system klarar av detta (rekommenderas!) behöver man inte tänka mer på det.
När man hamnar i situationen att man ändå behöver skicka något till en annan sajt som inte använder Unicode så brukar det i Sverige och Europa handla om Windows standardencoding, som här är iso-8859-1. Det finns som tur är bra verktyg i .NET som hjälper till men jag har suttit många timmar tidigare och ändå inte lyckats förstå hur det hela hänger ihop och måste erkänna att jag tidigare har gjort manuell replace mellan å och %e5 osv.
Jag tog mig nu tiden att reda ut vad det är som är anledningen till att det blir fel och kom fram till att jag i min iver att koda om strängarna hela tiden råkade ändå konvertera tillbaka dem till Unicode för som sagt, .NET kan bara koda interna strängar i Unicode och vill man hantera en annan encoding måste man använda en byte[] array under tiden man hanterar sin sträng. Och ska man koda om den till en URL så kan man inte gå via sträng utan måste bibehålla byte[] arrayen och använda de inbyggda funktionerna i .NET som kodar dessa arrayer till URL och först därefter begära att konvertera resultatet till en sträng.
För att ni ska slippa detta tråkiga arbete bjuder jag därför på en liten Extension Method.
Håll till godo:
Vad är ett krav och hur bör det vara definierat?
Det är inte alltid att det är så att beställaren/produktägaren tar fram kraven inför en sprint. Framförallt inte när det gäller teknik. Produktägaren ska självklart vara högst delaktig i detta arbete men kan behöva hjälp.
Det viktigaste oavsett ven som skriver kraven är att den personen försöker se det ur beställarens synvinkel. Vad är det som är behovet? Det är väldigt vanligt att man börjar fokusera på lösning istället för att fokusera på behov och resultat.
Det är skillnad på:
”Vi har ett behov av att få ut rapporter från vårt ekonomisystem. En rapport som vi behöver är att se hur mycket som är fakturerat per månad per projekt”
”Vi har ett behov av att få ut rapporter från vårt ekonomisystem. En rapport som vi behöver är att se hur mycket som är fakturerat per månad per projekt . För detta måste vi öppna i brandväggen, göra en .NET sida och använda ekonomi APIet.”
Återigen, se kraven ur beställarens perspektiv. Om det finns krav på att det ska göras i .NET så absolut, men det kanske inte är ett krav att t.ex. öppna upp brandväggen utan det kanske visar sig att man måste göra det för att få det att fungera. Det är heller inte omöjligt att det visar sig att man inte behövde göra något i brandväggen eller att det löste sig på annat sätt.
Vi arbetar ofta med webbyråer som partners och de arbetar inte agilt och framförallt inte i gemensamma sprintar. Det betyder att de oftast levererar form eller även HTML/CSS innan en sprint. Kraven på utseendet är därför oftast väldigt tydliga och detaljerade. Det som behöver redas ut är oftast att förtydliga scenarier.
Krav är väldigt olika beroende beroende på hur projektet ser ut.
Dela upp krav i flera krav
Det man också bör tänka på är att dela upp sitt innehåll i kraven som gör att det går att prioritera mellan dem. Om man har en jättestort krav som innehåller väldigt mycket kan det vara läge att dela upp kravet i flera krav. På det sättet blir det möjligt att prioritera mellan eller välja bort vissa delar. Här är det bra att ha lite framförhållning för om man som beställare kommer på sent att vissa delar av ett krav ska falla bort så leder det ofta till ny planering då kravet ändrats och vissa uppgifter måste korrigeras.
Hur många krav bör man ha i en sprint?
Förutom att dela upp ett krav i flera för att underlätta prioritering i sprinten finns det så klart fler anledningar.
En anledning till att det inte bör vara för få krav i en sprint är att om man t.ex. har 3 krav i en sprint och det inte går som planerat. Sprinten har en hastighet på ca 60% mot uppskattningarna den uppskattade hastigheten. I det läget blir bara 1 av 3 krav leverade i sprinten. Detta eftersom tanken är att allt som levereras ska vara komplett för att kunna lanseras. Självklart kan man säkert sänka ambitionsnivån i krav nummer 2 för att få det ”klart”.
Det är heller inte bra att ha för många krav i en sprint då erfarenheten säger att det blir väldigt mycket testning som behöver utföras. Vi har som rutin att för varje krav ha ett acceptanstest när alla uppgifter är klara inom ett krav. Ju fler krav desto fler timmar till testning. Självklart behöver inte alla krav ha lika mycket testning men min erfarenhet säger att det gäller att hitta en balans mellan för få krav och för många.
Gå igenom kraven innan sprinten
Av erfarenhet har det visat sig att oavsett vem som skrivit kraven så behövs ett möte innan sprintplaneringen då kraven gås igenom med delar av teamet och produktägaren för att så tidigt som möjligt reda ut stora risker, utmaningar, förändra kraven något för att få ut så mycket värde som möjligt under sprinten.
Summering
Vi har följt denna process nu ett bra tag och sett att det är ett lyckat koncept. Förbereder man sig på detta sätt så minskar man risken för ineffektivet, tar beslut enklare under sprintens gång och resultatet blir bättre. Det är win-win för alla involverade.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Tips för hantering av krav i Scrum", + "meta_description": "", + "author_id": 1094, + "created_at": 1337644800000, + "created_by": 1094, + "updated_at": 1337644800000, + "updated_by": 1094, + "published_at": 1337644800000, + "published_by": 1094 + }, + { + "id": 607, + "title": "Hur många dagar är det kvar till dina medarbetares födelsedagar?", + "slug": "hur-manga-dagar-ar-det-kvar-till-dina-medarbetares-fodelsedagar", + "markdown": "\r\n\r\nDet är en fråga som ställs på många intranät! Det är ju inte så svårt att räkna ut, men det är lätt att glömma bort att skottår kan ställa till det, både på själva skottdagen och om man skulle ha en medarbetare som är född på en skottdag.\r\n\r\nPå morgonen den 29:e februari i år så krashade funktionen som tar fram en lista på de medarbetare som fyller år under veckan för en av våra kunder. Jag såg tidigt var felet inträffade, programmeraren före mig hade försökt skapa en DateTime för dagens datum (som då var den 29:e februari), fast det år som medarbetaren var född:\r\n\r\n![Bild](http://tekniken.nu/uploads/634720665750377957-tårta.gif)\r\n```prettyprint lang-c-sharp\r\nprotected int GetDaysUntilBirthDay(DateTime birthday)\r\n\r\n {\r\n\r\n DateTime compareDate = new DateTime(birthday.Year, DateTime.Now.Month, DateTime.Now.Day);\r\n\r\n return (birthday - compareDate).Days;\r\n\r\n }\r\n```\r\n\r\n\r\nVad är då best practice för det här? Stack overflow borde ha lösningen. En snabb googling visade att så inte var fallet. Alla kodexempel jag hittade hade detta tankefelet eller det lika felaktiga (som dock bara skulle gett fel på medarbetare födda den 29:e februari): att skapa en DateTime i år med utgångspunkt från medarbetarens födelsedag.\r\n\r\n\r\nMin lösning på problemet blev följande:\r\n\r\n```prettyprint lang-c-sharp\r\nprotected int GetDaysUntilBirthDay(DateTime birthday)\r\n\r\n {\r\n\r\n DateTime compareDate = DateTime.Now.AddYears(-(DateTime.Now.Year - birthday.Year));\r\n\r\n return (birthday.Date - compareDate.Date).Days;\r\n\r\n }\r\n```\r\n\r\n\r\nHur har du löst det?\r\n", + "html": "Det är en fråga som ställs på många intranät! Det är ju inte så svårt att räkna ut, men det är lätt att glömma bort att skottår kan ställa till det, både på själva skottdagen och om man skulle ha en medarbetare som är född på en skottdag.
På morgonen den 29:e februari i år så krashade funktionen som tar fram en lista på de medarbetare som fyller år under veckan för en av våra kunder. Jag såg tidigt var felet inträffade, programmeraren före mig hade försökt skapa en DateTime för dagens datum (som då var den 29:e februari), fast det år som medarbetaren var född:
Vad är då best practice för det här? Stack overflow borde ha lösningen. En snabb googling visade att så inte var fallet. Alla kodexempel jag hittade hade detta tankefelet eller det lika felaktiga (som dock bara skulle gett fel på medarbetare födda den 29:e februari): att skapa en DateTime i år med utgångspunkt från medarbetarens födelsedag.
Min lösning på problemet blev följande:
Hur har du löst det?
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Hur många dagar är det kvar till dina medarbetares födelsedagar?", + "meta_description": "edarbetare som är född på en skottdag.", + "author_id": 1093, + "created_at": 1336469774000, + "created_by": 1093, + "updated_at": 1336469774000, + "updated_by": 1093, + "published_at": 1336469774000, + "published_by": 1093 + }, + { + "id": 608, + "title": "Massor av kod på Devsum 2012", + "slug": "massor-av-kod-pa-devsum-2012", + "markdown": "\r\n\r\nTvå dagars fun fun fun! Devsum blev kul, inspirerande och hemtrevligt med fantastiska talare i trånga lokaler på Nalen.\r\nÅrets keynotes var riktigt bra! Martin Laforest talade om kvantdatorer och möjligheterna med tillämpad kvantfysik. Över iallafall mitt huvud stundtals men ämnet var jätteintressant och Martin är en riktigt inspirerande talare. Ett tag trodde jag att jag valt fel bana och borde ha läst fysik som morfar. Experience Design med Aral Balkan inspirerade istället i en helt annan riktning. Han hade bra poänger runt användbarhet och hur ett bra system ska KÄNNAS men han inspirerade framförallt till att applicera glädje och skönhet på system, jag drar det ett steg till och vill se mer glädje i kodande och våra processer. Jag tror starkt att bra verktyg och snygg kod skapar lycka och trivsel även för utvecklare.\r\n## Höjdpunkter\r\nRavenDB - Amazing feats, Ayende Rahien. Man kan inte låta bli att älska RavenDB och Ayendes approach på utveckling.Modern technologies for web-based-gaming, Rob Ashton. Så jäkla kul kille!Modern Javascript, Scott Allen. Starstruck? Japp. Glasklart hur man skriver stabil kod i Javascript.An architecture remake, Jimmy Nilsson. Jag gillar skarpt att ta del av andra teams resor.\r\n## Hetast just nu\r\nJavascriptNode.jsRealtimeNoSQLResponsive designWindows 8Back to basics\r\n## Alla dessa män\r\n40 talare och 38 män. Det är självklart svårt att inte lägga märke till det. Jag drömmer om framtiden.\r\n\r\n![Bild](http://tekniken.nu/uploads/devsum.png)", + "html": "Två dagars fun fun fun! Devsum blev kul, inspirerande och hemtrevligt med fantastiska talare i trånga lokaler på Nalen.
Årets keynotes var riktigt bra! Martin Laforest talade om kvantdatorer och möjligheterna med tillämpad kvantfysik. Över iallafall mitt huvud stundtals men ämnet var jätteintressant och Martin är en riktigt inspirerande talare. Ett tag trodde jag att jag valt fel bana och borde ha läst fysik som morfar. Experience Design med Aral Balkan inspirerade istället i en helt annan riktning. Han hade bra poänger runt användbarhet och hur ett bra system ska KÄNNAS men han inspirerade framförallt till att applicera glädje och skönhet på system, jag drar det ett steg till och vill se mer glädje i kodande och våra processer. Jag tror starkt att bra verktyg och snygg kod skapar lycka och trivsel även för utvecklare.
Höjdpunkter
RavenDB - Amazing feats, Ayende Rahien. Man kan inte låta bli att älska RavenDB och Ayendes approach på utveckling.
Modern technologies for web-based-gaming, Rob Ashton. Så jäkla kul kille!
Modern Javascript, Scott Allen. Starstruck? Japp. Glasklart hur man skriver stabil kod i Javascript.
An architecture remake, Jimmy Nilsson. Jag gillar skarpt att ta del av andra teams resor.
Hetast just nu
Javascript
Node.js
Realtime
NoSQL
Responsive design
Windows 8
Back to basics
Alla dessa män
40 talare och 38 män. Det är självklart svårt att inte lägga märke till det. Jag drömmer om framtiden.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Massor av kod på Devsum 2012", + "meta_description": "", + "author_id": 1093, + "created_at": 1337935560000, + "created_by": 1093, + "updated_at": 1337935560000, + "updated_by": 1093, + "published_at": 1337935560000, + "published_by": 1093 + }, + { + "id": 609, + "title": "Closures i JavaScript - när binds egentligen variablerna?", + "slug": "closures-i-javascript---nar-binds-egentligen-variablerna", + "markdown": "\r\n\r\nAllt mer utveckling både på klientsidan (förstås) och på serversidan sker med JavaScript och alltmer sker asynkront. Tidigare kunde man anropa funktioner som uträttar uppgifter en efter en och helt enkelt gå vidare till nästa steg när man var klar med det innan. Lätt att förstå och lätt att debugga, men inte särskilt anpassat till dagens arkitekturer där man ofta anropar externa tjänster och API:er och där gränssnittet helt enkelt inte kan vänta på svar. Istället gör man en funktion, en callback, som anropas när den externa uppgiften är klar.\r\n\r\nDet är ett smart pattern, men kan ge upphov till klurigheter att lösa för utvecklaren. En sådan är vilket scope som callback-funktionen egentligen körs i, d.v.s. vilka variablerna man har tillgång till när svarsanropet väl kommer. Ett annat är att man kan råka ut för race conditions där värden av vissa variabler plötsligt beror på svarstiden för de externa anropen.\r\n\r\nHär är ett exempel:\r\n\r\n![Bild](http://tekniken.nu/uploads/closure.png)\r\n```prettyprint lang-javascript\r\ncars = [ { reg: ‘ABC123’ }, { reg: ‘DEF456’ }, { reg: ‘GHI789’ }, { reg: ’JKL123’ } ];\r\n\r\nfor (i = 0; i < cars.length ; i++)\r\n{\t\r\n\tvar currentCar = cars[i];\r\n\r\n\t// Långsamt anrop till externt api. Anropet tar två parametrar, första är registreringsnumret den andra är\r\n\r\n\t// callbackfunktionen som anropas när api:et svarar\r\n\r\n\texternalService.slowlyLookupCarBrand(\r\n\t\tcar.reg,\r\n function (brandName) {\r\n\t\t\tcars[i].brand = brandName;\r\n }\r\n\t);\r\n}\r\n```\r\n\r\n\r\nVad händer när denna körs? Ett fel uppstår där det står att ”cars[i].brand is undefined”. Konstigt... Första tanken är att det är fel scope, att variabeln i inte finns i callbackfunktionen. Om man skriver ut värdet på i upptäcker man att så inte är fallet – istället är har i alltid värdet 4. Vad har hänt här egentligen?\r\n\r\n\r\nSvaret är att när första callback-anropet görs (och de tre följande förstås) så har redan for-loopen körts igenom och värdet på i har redan räknats upp till sitt maxvärde 4. Så anropet i callbacken kommer alltid att bli cars[4].brand. Det vi skulle vilja är att värdet på i binds när callback-funktionen skapas, inte när den anropas.\r\n\r\n\r\nJavaScript är ett magiskt språk med många funktioner som länge har funnits på teoretisk nivå inom datalogin men som sällan letar sig fram till praktisk användning. En sådan är högre ordningens funktioner – vilket betyder att funktioner fungerar som vilka andra typer som helst. Det ska vi använda för att lösa vårt problem. Vi vill skapa en s.k. closure, helt enkelt en bindning av variabelns värde vid deklarationen istället för vid körningen. Såhär går det till (detta är inte intuitivt och tar de flesta ganska mycket tankemöda innan man förstår vad som händer):\r\n\r\n```prettyprint lang-javascript\r\ncars = [ { reg: ‘ABC123’ }, { reg: ‘DEF456’ }, { reg: ‘GHI789’ }, { reg: ’JKL123’ } ];\r\n\r\nfor (i = 0; i < cars.length ; i++)\r\n{\t\r\n\tvar currentCar = cars[i];\r\n\t\r\n\t// Långsamt anrop till externt api. Anropet tar två parametrar, första är registreringsnumret den andra är\r\n\r\n\t// callbackfunktionen som anropas när api:et svarar\r\n\t\r\n\texternalService.slowlyLookupCarBrand(\r\n car.reg,\r\n function (index) {\r\n\t\t\treturn function (brandName) {\t\r\n\t\t\t\tcars[index].brand = brandName;\t\r\n\t\t\t}\t\r\n\t\t} (i)\t\r\n\t);\r\n}\r\n```\r\n\r\n\r\nOK, vad betyder det här nu då? Istället för att direkt skapa en anonym funktion som callback så låter vi en yttre funktion skapa och returnera callback-funktionen. Det sista (i) efter } betyder ”anropa den yttre funktionen med parametervärdet i”. Det som händer då är att en closure skapas, en binding av variablers värden som de ser ut just nu. Parametern index i funktionen tilldelas värdet som vi har vid tillfället när anropet till slowlyLookupCarBrand görs, inte när svarsanropet till den inre funktionen kommer från den externa tjänsten. Det betyder att våra fyra externa anrop kommer att få fyra olika svarsfunktioner, var och en med ett värde på index som motsvarar värdet på i när det externa anropet sker.\r\n\r\n\r\nSom sagt - inte intuitivt och inte superenkelt att förstå vid första genomläsningen, men helt nödvändigt att använda i vissa tillfällen.\r\n", + "html": "Allt mer utveckling både på klientsidan (förstås) och på serversidan sker med JavaScript och alltmer sker asynkront. Tidigare kunde man anropa funktioner som uträttar uppgifter en efter en och helt enkelt gå vidare till nästa steg när man var klar med det innan. Lätt att förstå och lätt att debugga, men inte särskilt anpassat till dagens arkitekturer där man ofta anropar externa tjänster och API:er och där gränssnittet helt enkelt inte kan vänta på svar. Istället gör man en funktion, en callback, som anropas när den externa uppgiften är klar.
Det är ett smart pattern, men kan ge upphov till klurigheter att lösa för utvecklaren. En sådan är vilket scope som callback-funktionen egentligen körs i, d.v.s. vilka variablerna man har tillgång till när svarsanropet väl kommer. Ett annat är att man kan råka ut för race conditions där värden av vissa variabler plötsligt beror på svarstiden för de externa anropen.
Här är ett exempel:
Vad händer när denna körs? Ett fel uppstår där det står att ”cars[i].brand is undefined”. Konstigt... Första tanken är att det är fel scope, att variabeln i inte finns i callbackfunktionen. Om man skriver ut värdet på i upptäcker man att så inte är fallet – istället är har i alltid värdet 4. Vad har hänt här egentligen?
Svaret är att när första callback-anropet görs (och de tre följande förstås) så har redan for-loopen körts igenom och värdet på i har redan räknats upp till sitt maxvärde 4. Så anropet i callbacken kommer alltid att bli cars[4].brand. Det vi skulle vilja är att värdet på i binds när callback-funktionen skapas, inte när den anropas.
JavaScript är ett magiskt språk med många funktioner som länge har funnits på teoretisk nivå inom datalogin men som sällan letar sig fram till praktisk användning. En sådan är högre ordningens funktioner – vilket betyder att funktioner fungerar som vilka andra typer som helst. Det ska vi använda för att lösa vårt problem. Vi vill skapa en s.k. closure, helt enkelt en bindning av variabelns värde vid deklarationen istället för vid körningen. Såhär går det till (detta är inte intuitivt och tar de flesta ganska mycket tankemöda innan man förstår vad som händer):
OK, vad betyder det här nu då? Istället för att direkt skapa en anonym funktion som callback så låter vi en yttre funktion skapa och returnera callback-funktionen. Det sista (i) efter } betyder ”anropa den yttre funktionen med parametervärdet i”. Det som händer då är att en closure skapas, en binding av variablers värden som de ser ut just nu. Parametern index i funktionen tilldelas värdet som vi har vid tillfället när anropet till slowlyLookupCarBrand görs, inte när svarsanropet till den inre funktionen kommer från den externa tjänsten. Det betyder att våra fyra externa anrop kommer att få fyra olika svarsfunktioner, var och en med ett värde på index som motsvarar värdet på i när det externa anropet sker.
Som sagt - inte intuitivt och inte superenkelt att förstå vid första genomläsningen, men helt nödvändigt att använda i vissa tillfällen.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Closures i JavaScript - när binds egentligen variablerna?", + "meta_description": "", + "author_id": 6, + "created_at": 1338390900000, + "created_by": 6, + "updated_at": 1338390900000, + "updated_by": 6, + "published_at": 1338390900000, + "published_by": 6 + }, + { + "id": 610, + "title": "Modern Javascript utan ramverk", + "slug": "modern-javascript-utan-ramverk", + "markdown": "\r\n\r\nEftersom många har sina Javascript-kunskaper från en tid då Javascript var krångligt och bara några få kommandon fungerade överallt är man naturligt nervös. Dessutom är ju språket dynamiskt och relativt oförlåtande och många editorer har svårt att verifiera syntaxen ordentligt. Resultatet är att man inte använder sig av de smarta utökningarna som har kommit i Javascript den senaste tiden. Många förlitar sig även på jQuery som utökar äldre webbläsare med samma typ av funktionalitet som numera finns inbyggd i Javascript. jQuery är väldigt bra men när man är i en kontrollerad miljö som t ex Node.js är det väldigt onödigt att använda sig av ett ramverk som erbjuder samma funktionalitet som den inbyggda motorn.\r\n\r\nNedan visar jag några trix som går att använda i alla moderna webbläsare från och med IE9 (HTML5-kompatibla) och självklart fungerar allt detta i Node.js – allt utan ett enda ramverk.\r\n\r\n![Bild](http://tekniken.nu/uploads/no-framwork.png)\r\n```prettyprint lang-javascript\r\n// [] ger exakt samma resultat som new Array()\r\nvar array=['hello','world'];\r\n\r\n// forEach stöds ej i IE8 men i alla andra webbläsare inkl IE9\r\narray.forEach(function(item){\r\n\tconsole.log(item)\r\n});\r\n\r\n// lite likt LINQ i C# kan man bearbeta sina listor och få tillbaka filtrerade resultat\r\nvar filteredArray=array.filter(function(item){\r\n\treturn item=='hello';\r\n});\r\n\r\n// returnerar en ny array ['HELLO', 'WORLD']. Fungerar i IE9\r\narray.map(function(item){return item.toUpperCase()});\r\n\r\n// every körs för varje del av en array och nedanstående eturnerar true om alla returnerar true\r\narray.every(function(item){return item=='hello' });\r\n\r\n// some körs för varje del av en array och returnerar true om någon av delarna returnerar true\r\narray.some(function(item){return item=='hello' });\r\n\r\n// returnerar en del av en array, i det här fallet den första\r\narray.splice(0,1);\r\n\r\n// sortera i bokstavsordning\r\nvar sortedArray=array.sort(function(a,b){\r\n\treturn a-b;\r\n});\r\n\r\n// nu till lite användning av våra nya fina listbearbetningsfunktioner\r\nvar playHistory=[\r\n\t{\r\n \tartist:'Madonna',\r\n \ttitle:'Frozen'\r\n \t},\r\n \t{\r\n\t\tartist:'Madonna',\r\n \ttitle:'La Isla Bonita'\r\n\t},\r\n \t{\r\n \tartist:'Madonna',\r\n \ttitle:'American Pie'\r\n \t},\r\n \t{\r\n \tartist:'Madonna',\r\n \ttitle:'Frozen'\r\n \t},\r\n \t{\r\n \tartist:'Madonna',\r\n \t\ttitle:'Frozen'\r\n \t}\r\n];\r\n\r\n// behöver deklareras temporärt\r\nvar group={};\r\n\r\n// Exempel på arrayfunktioner för att ta fram en topplista\r\nvar topSongs=playHistory\r\n\r\n// vi letar igenom alla artister och sparar unika låtar\r\n.map(function(item){\r\n // enkelt = innebär tilldelning vilket gör att vi bara behöver leta en gång. Kan upplevas som lite farligt.. ;)\r\n\r\n if(song=group[item.title])\r\n song.count++;\r\n else\r\n return group[item.title]={artist: item.artist, title : item.title, count :1};\r\n\r\n}, topSongs)\r\n\r\n// sortera på flest antal\r\n.sort(function(a,b){return a.count>b.count})\r\n\r\n// motsvarande .take(3);\r\n.slice(0,3);\r\n```\r\n\r\n\r\nFör att använda JSON behövs inga bibliotek när du har en modern webbläsare:\r\n\r\n```prettyprint lang-javascript\r\n// serialiserar ett objekt till en sträng: \"['hello', 'world']\"\r\nvar string=JSON.stringify(array);\r\n\r\n// skapar ett objekt av en JSON sträng\r\nvar object=JSON.parse(string);\r\n```\r\n\r\n\r\nFör att skapa objektorienterad struktur används vanliga funktioner som innehåller variabler och funktioner som fungerar på motsvarande sätt som publika och privata egenskaper eller metoder.\r\n\r\n```prettyprint lang-javascript\r\n// så här ser en klass ut i Javascript\r\nfunction Additioner=function() {\r\n\t// för att alltid kunna hänvisa till klassen från privata metoder sätter vi ett eget namn på instansen: 'self'\t\r\n\tvar self=this;\r\n \r\n\t// privat variabel i klassen\r\n var total=0;\r\n\r\n // privat metod i klassen\r\n var add=function(number)\t\r\n\t{\r\n \t// i en privat metod blir 'this' inte längre lokalt för klassen utan för den privata metoden. \t\r\n\t\t// Då använder vi vår egen definierade closure self istället för 'this'\t\r\n\t\tself.total=self.total+number;\t\r\n\t} \r\n\r\n // publik metod\r\n this.add=function(number,callback){\t\t\r\n\t\tthis.total=this.total+number;\r\n\t\r\n\t\t// javascript lämpar sig ypperligt för att bygga asynkrona tjänster och försök därför alltid gör\r\n if(callback)\r\n\t\t\tcallback(this.total);\t\r\n\t}\r\n\t\r\n\t// publik metod\t\r\n\tthis.getResult=function()\r\n\t{\t\r\n\t\t// i publika metoder finns 'this' och därför använder vi den\r\n return this.total;\t\r\n\t}\r\n}\r\n\r\n// för att använda sin klass:\r\nvar additioner= new Additioner();\r\nadditioner.add(1);\r\nadditioner.add(5, function(result) {\r\n\tconsole.log(result);// 6\r\n});\r\n```\r\n\r\n\r\nDu kan även använda objektet .prototype för att utöka superklassen och då ärvs alla nya egenskaper i superklassen ut till alla instanser av ditt objekt.\r\n\r\n```prettyprint lang-javascript\r\nString.prototype.endsWith =function(suffix) {\r\n\treturn this.indexOf(suffix, this.length - suffix.length) !== -1;\r\n};\r\n```\r\n", + "html": "Eftersom många har sina Javascript-kunskaper från en tid då Javascript var krångligt och bara några få kommandon fungerade överallt är man naturligt nervös. Dessutom är ju språket dynamiskt och relativt oförlåtande och många editorer har svårt att verifiera syntaxen ordentligt. Resultatet är att man inte använder sig av de smarta utökningarna som har kommit i Javascript den senaste tiden. Många förlitar sig även på jQuery som utökar äldre webbläsare med samma typ av funktionalitet som numera finns inbyggd i Javascript. jQuery är väldigt bra men när man är i en kontrollerad miljö som t ex Node.js är det väldigt onödigt att använda sig av ett ramverk som erbjuder samma funktionalitet som den inbyggda motorn.
Nedan visar jag några trix som går att använda i alla moderna webbläsare från och med IE9 (HTML5-kompatibla) och självklart fungerar allt detta i Node.js – allt utan ett enda ramverk.
För att använda JSON behövs inga bibliotek när du har en modern webbläsare:
För att skapa objektorienterad struktur används vanliga funktioner som innehåller variabler och funktioner som fungerar på motsvarande sätt som publika och privata egenskaper eller metoder.
Du kan även använda objektet .prototype för att utöka superklassen och då ärvs alla nya egenskaper i superklassen ut till alla instanser av ditt objekt.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Modern Javascript utan ramverk", + "meta_description": "", + "author_id": 1087, + "created_at": 1338202200000, + "created_by": 1087, + "updated_at": 1338202200000, + "updated_by": 1087, + "published_at": 1338202200000, + "published_by": 1087 + }, + { + "id": 611, + "title": "Search Engine Optimization (SEO) Toolkit 1.0 ", + "slug": "search-engine-optimization-seo-toolkit-10-", + "markdown": "\r\n## Vilka är URLerna?\r\nJag fick nyligen uppgiften att lista alla URLer från en kunds externa site. De ska mappas till motsvarande innehåll i den nya site vi bygger. Eftersom jag inte hade tillgång till produktionsmiljön satt jag lite illa till. Jag bestämde mig för att försöka crawla siten och googlade efter ett verktyg för detta. Första träffen pekade rakt ned i min egen dator. Tydligen kommer något som heter Search Engine Optimization (SEO) Toolkit 1.0 med Web Platform. Jag inser sedan att verktyget funnits sedan 2009 men att jag aldrig sprungit på det. Det känns mest pinsamt. Jag testade verktyget lokalt men den klarade inte av att crawla min utvecklingsmiljö. Utan att felsöka det vidare testade jag på vår CI-server och där gick det hur bra som helst.\r\n\r\nSearch Engine Optimization (SEO) Toolkit 1.0 lät mig peka ut en site och klicka på Ok, en stund senare satt jag där med en massa data att analysera. Där fanns alla violations mot god SEO-sed skuret på olika ledder (sammanställning av alla, violations per sida...) men även prestandabovar m.m. indikerades. Varje violation förklarades dessutom med några meningar om varför den skapar ett problem.\r\n\r\nHur löste det här mitt problem? Jo, jag kunde ta ut en rapport på alla URLer och öppna i alla analytikers favoritverktyg, Excel. Rapporten innehöll alla resurser, inte bra sidor utan även bilder m.m. jag filtrerade på content type och fick ut en lista som våra SEO-partners var nöjda med.\r\n\r\nNu använder jag verktyget ofta för att det hjälper mig att hålla hygiennivå i det jag utvecklar.\r\n## Fler länkar om Search Engine Optimization (SEO) Toolkit 1.0\r\nScott Guthrie bloggar bra -http://weblogs.asp.net/scottgu/archive/2009/06/03/iis-search-engine-optimization-toolkit.aspx\r\n\r\nOfficiell hemsida, nedladdning -http://www.iis.net/download/SEOToolkit\r\n\r\n![Bild](http://tekniken.nu/uploads/634745093293364607-image001.jpg@01CD4301.7CAE5300__image001.jpg)", + "html": "Vilka är URLerna?
Jag fick nyligen uppgiften att lista alla URLer från en kunds externa site. De ska mappas till motsvarande innehåll i den nya site vi bygger. Eftersom jag inte hade tillgång till produktionsmiljön satt jag lite illa till. Jag bestämde mig för att försöka crawla siten och googlade efter ett verktyg för detta. Första träffen pekade rakt ned i min egen dator. Tydligen kommer något som heter Search Engine Optimization (SEO) Toolkit 1.0 med Web Platform. Jag inser sedan att verktyget funnits sedan 2009 men att jag aldrig sprungit på det. Det känns mest pinsamt. Jag testade verktyget lokalt men den klarade inte av att crawla min utvecklingsmiljö. Utan att felsöka det vidare testade jag på vår CI-server och där gick det hur bra som helst.
Search Engine Optimization (SEO) Toolkit 1.0 lät mig peka ut en site och klicka på Ok, en stund senare satt jag där med en massa data att analysera. Där fanns alla violations mot god SEO-sed skuret på olika ledder (sammanställning av alla, violations per sida...) men även prestandabovar m.m. indikerades. Varje violation förklarades dessutom med några meningar om varför den skapar ett problem.
Hur löste det här mitt problem? Jo, jag kunde ta ut en rapport på alla URLer och öppna i alla analytikers favoritverktyg, Excel. Rapporten innehöll alla resurser, inte bra sidor utan även bilder m.m. jag filtrerade på content type och fick ut en lista som våra SEO-partners var nöjda med.
Nu använder jag verktyget ofta för att det hjälper mig att hålla hygiennivå i det jag utvecklar.
Fler länkar om Search Engine Optimization (SEO) Toolkit 1.0
Scott Guthrie bloggar bra -http://weblogs.asp.net/scottgu/archive/2009/06/03/iis-search-engine-optimization-toolkit.aspx
Officiell hemsida, nedladdning -http://www.iis.net/download/SEOToolkit
Man kan ju fråga sig varför en server skriven i Javascript kan bli snabbare än en som är kompilerad i C#. Oavsett vilket språk mananvänder så behöver man vid vissa tillfällen hämta saker från disk, databas eller från nätverk. Eftersom Node.JS är enkeltrådat MÅSTE man skriva all kod asynkron för att inte hela servern ska hänga sig vilket inte är fallet i C#.
Detta enkla faktum gör att man oftast skriver synkron kod i C# och därför ligger större delen av koden i väntan på olika I/O anrop. Hela sidan beräknas seriellt och varje fördröjning i I/O gör applikationen långsam. Jämför med att överföra små och stora filer med FTP – om du har flera parallella överföringar igång kan alla små anrop bli klara samtidigt som de stora filerna överförs. På samma sätt vill man hinna göra klart så mycket som möjligt av resterande kod under tiden man väntar på svaren från alla sina I/O anrop.
Eftersom många redan är vana vid detta i Javascript, mycket på grund av AJAX och Jquery, har man en inbyggd känsla för hur asynkron programmering ska byggas i Javascript vilket gör dem snabbare än sajter byggda i C#.
Nu betyder detta inte att Node.JS alltid är bättre än C# eller att man inte kan använda sig av asynkrona programmeringsmönster även i C# eller i Java. Däremot har det krävt ganska komplicerad kod tidigare. I nästa version av Visual Studio 2012 finns Microsoft Async vilket innebär stora förbättringar i hur asynkront programmeringsmönster kan hanteras.
Kodexempel
Motsvarande kod i Javascript skulle vara:
För att lära sig mer om Async i C# finns det en jättebra sida med exempel:
http://www.wischik.com/lu/AsyncSilverlight/AsyncSamples.html
Om du inte gjort det redan borde du ladda ner Node.JS och installera Express som ger en bra start för att börja bygga sajter med Node.JS:
npm install Express
En annan viktig skillnad mellan Node.JS och ASP.NET är hur mycket resurser som går åt för varje anrop. I C# används som standard en tråd per request. Det innebär att mycket tid går åt till att frigöra resurser från trådpoolen till varje request, dessutom tar varje tråd minst två megabyte minne vilket gör att tusentals samtidiga requests kräver enorma mängder ram på servern. I Node.JS finns inga trådar utan allt körs inom samma process vilket gör att anrop som väntar på svar inte tar mer än några kilobyte i minne.
testar
Två grymma utvecklare sökes - känner du någon som borde jobba på Sveriges bästa teknikbyrå?
Johanna Gustafsson - johanna.gustafsson@iteam.se
Tegnérgatan 28 - SE-113 59 Stockholm
Office: +46 8 26 70 90
Mobile: +46 734 02 91 12",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "test",
+ "meta_description": null,
+ "author_id": 1093,
+ "created_at": 1342797037000,
+ "created_by": 1093,
+ "updated_at": 1342797037000,
+ "updated_by": 1093,
+ "published_at": 1342797037000,
+ "published_by": 1093
+ },
+ {
+ "id": 615,
+ "title": "unika rubben",
+ "slug": "unika-rubben",
+ "markdown": "\r\nTvå grymma utvecklare sökes - känner du någon som borde jobba på Sveriges bästa teknikbyrå? \r\n\r\n\r\n\r\nJohanna Gustafsson - johanna.gustafsson@iteam.seTegnérgatan 28 - SE-113 59 Stockholm\r\n\r\nOffice: +46 8 26 70 90Mobile: +46 734 02 91 12",
+ "html": "
Två grymma utvecklare sökes - känner du någon som borde jobba på Sveriges bästa teknikbyrå?
Johanna Gustafsson - johanna.gustafsson@iteam.se
Tegnérgatan 28 - SE-113 59 Stockholm
Office: +46 8 26 70 90
Mobile: +46 734 02 91 12",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "unika rubben",
+ "meta_description": null,
+ "author_id": 1093,
+ "created_at": 1342797613000,
+ "created_by": 1093,
+ "updated_at": 1342797613000,
+ "updated_by": 1093,
+ "published_at": 1342797613000,
+ "published_by": 1093
+ },
+ {
+ "id": 616,
+ "title": "FW: unika rubben 2",
+ "slug": "fw-unika-rubben-2",
+ "markdown": "\r\n\r\n\r\nTvå grymma utvecklare sökes - känner du någon som borde jobba på Sveriges bästa teknikbyrå? \r\n\r\n\r\n\r\nJohanna Gustafsson - johanna.gustafsson@iteam.seTegnérgatan 28 - SE-113 59 Stockholm\r\n\r\nOffice: +46 8 26 70 90Mobile: +46 734 02 91 12\r\n![Bild](http://tekniken.nu/uploads/634783949432377392-image001.png)",
+ "html": "
Två grymma utvecklare sökes - känner du någon som borde jobba på Sveriges bästa teknikbyrå?
Johanna Gustafsson - johanna.gustafsson@iteam.se
Tegnérgatan 28 - SE-113 59 Stockholm
Office: +46 8 26 70 90
Mobile: +46 734 02 91 12",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "FW: unika rubben 2",
+ "meta_description": null,
+ "author_id": 1093,
+ "created_at": 1342798143000,
+ "created_by": 1093,
+ "updated_at": 1342798143000,
+ "updated_by": 1093,
+ "published_at": 1342798143000,
+ "published_by": 1093
+ },
+ {
+ "id": 618,
+ "title": "Test av kodsnuttar i text",
+ "slug": "test-av-kodsnuttar-i-text",
+ "markdown": "\r\nAllt mer utveckling både på klientsidan (förstås) och på serversidan sker med JavaScript och alltmer sker asynkront. Tidigare kunde anropa funktioner som uträttar uppgifter en efter en och helt enkelt gå vidare till nästa steg när man var klar med det innan. Lätt att förstå och lätt att debugga, men inte särskilt anpassat till dagens arkitekturer där man ofta anropar externa tjänster och API:er och där gränssnittet helt enkelt inte kan vänta på svar. Istället gör man en funktion, en callback, som anropas när den externa uppgiften är klar.\r\n\r\nDet är ett smart pattern, men kan ge upphov till klurigheter att lösa för utvecklaren. En sån är vilket scope som callback-funktionen egentligen körs i, d.v.s. vilka variablerna man har tillgång till när svarsanropet väl kommer. Ett annat är att man kan råka ut för race conditions där värden av vissa variabler plötsligt beror på svarstiden för de externa anropen.\r\n\r\nHär är ett exempel:\r\n\r\ncars = [ { reg: ‘ABC123’ }, { reg: ‘DEF456’ }, { reg: ‘GHI789’ }, { reg: ’JKL123’ } ];\r\n\r\nfor (i = 0; i < cars.length ; i++)\r\n\r\n{\r\n\r\n var currentCar = cars[i];\r\n\r\n // Långsamt anrop till externt api. Anropet tar två parametrar, första är registreringsnumret den andra är\r\n\r\n // callbackfunktionen som anropas när api:et svarar\r\n\r\n externalService.slowlyLookupCarBrand(\r\n\r\n car.reg,\r\n\r\n function (brandName)\r\n\r\n {\r\n\r\n cars[i].brand = brandName;\r\n\r\n }\r\n\r\n);\r\n\r\n}\r\n\r\nVad händer när denna körs? Ett fel uppstår där det står att ”cars[i].brand is undefined”. Konstigt... Första tanken är att det är fel scope, att variabeln i inte finns i callbackfunktionen. Om man skriver ut värdet på i upptäcker man att så inte är fallet – istället är har i alltid värdet 4. Vad har hänt här egentligen?\r\n\r\nSvaret är att när första callback-anropet görs (och de tre följande förstås) så har redan for-loopen körts igenom och värdet på i har redan räknats upp till sitt maxvärde 4. Så anropet i callbacken kommer alltid att bli cars[4].brand. Det vi skulle vilja är att värdet på i binds när callback-funktionen skapas, inte när den anropas.\r\n\r\nJavaScript är ett magiskt språk med många funktioner som länge har funnits på teoretisk nivå inom datalogin men som sällan letar sig fram till praktisk användning. En sådan är högre ordningens funktioner – vilket betyder att funktioner fungerar som vilka andra typer som helst. Det ska vi använda för att lösa vårt problem. Vi vill skapa en s.k. closure, helt enkelt en bindning av variabelns värde vi deklarationen istället för vid körningen. Såhär går det till (detta är inte intuitivt och tar de flesta ganska mycket tankemöda innan man förstår vad som händer):\r\n\r\ncars = [ { reg: ‘ABC123’ }, { reg: ‘DEF456’ }, { reg: ‘GHI789’ }, { reg: ’JKL123’ } ];\r\n\r\nfor (i = 0; i < cars.length ; i++)\r\n\r\n{\r\n\r\n var currentCar = cars[i];\r\n\r\n // Långsamt anrop till externt api. Anropet tar två parametrar, första är registreringsnumret den andra är\r\n\r\n // callbackfunktionen som anropas när api:et svarar\r\n\r\n externalService.slowlyLookupCarBrand(\r\n\r\n car.reg,\r\n\r\n function (index)\r\n\r\n{\r\n\r\n return function (brandName)\r\n\r\n {\r\n\r\n cars[index].brand = brandName;\r\n\r\n }\r\n\r\n } (i)\r\n\r\n );\r\n\r\n}\r\n\r\nOK, vad betyder det här nu då? Istället för att direkt skapa en anonym funktion som callback så låter vi en yttre funktion skapa och returnera callback-funktionen. Det sista (i) efter } betyder ”anropa den yttre funktionen med parametervärdet i”. Det som händer då är att en closure skapas, en binding av variablers värden som de ser ut just nu. Parametern index i funktionen tilldelas värdet som i har vid tillfället när anropet till slowlyLookupCarBrand görs, inte när svarsanropet till den inre funktionen kommer från den externa tjänsten. Det betyder att våra fyra externa anrop kommer att få fyra olika svarsfunktioner, var och en med ett värde på index som motsvarar värdet på i när det externa anropet sker.\r\n\r\nSom sagt - inte intuitivt och inte superenkelt att förstå vid första genomläsningen, men helt nödvändigt att använda i vissa tillfällen.",
+ "html": "
Allt mer utveckling både på klientsidan (förstås) och på serversidan sker med JavaScript och alltmer sker asynkront. Tidigare kunde anropa funktioner som uträttar uppgifter en efter en och helt enkelt gå vidare till nästa steg när man var klar med det innan. Lätt att förstå och lätt att debugga, men inte särskilt anpassat till dagens arkitekturer där man ofta anropar externa tjänster och API:er och där gränssnittet helt enkelt inte kan vänta på svar. Istället gör man en funktion, en callback, som anropas när den externa uppgiften är klar.
Det är ett smart pattern, men kan ge upphov till klurigheter att lösa för utvecklaren. En sån är vilket scope som callback-funktionen egentligen körs i, d.v.s. vilka variablerna man har tillgång till när svarsanropet väl kommer. Ett annat är att man kan råka ut för race conditions där värden av vissa variabler plötsligt beror på svarstiden för de externa anropen.
Här är ett exempel:
cars = [ { reg: ‘ABC123’ }, { reg: ‘DEF456’ }, { reg: ‘GHI789’ }, { reg: ’JKL123’ } ];
for (i = 0; i < cars.length ; i++)
{
var currentCar = cars[i];
// Långsamt anrop till externt api. Anropet tar två parametrar, första är registreringsnumret den andra är
// callbackfunktionen som anropas när api:et svarar
externalService.slowlyLookupCarBrand(
car.reg,
function (brandName)
{
cars[i].brand = brandName;
}
);
}
Vad händer när denna körs? Ett fel uppstår där det står att ”cars[i].brand is undefined”. Konstigt... Första tanken är att det är fel scope, att variabeln i inte finns i callbackfunktionen. Om man skriver ut värdet på i upptäcker man att så inte är fallet – istället är har i alltid värdet 4. Vad har hänt här egentligen?
Svaret är att när första callback-anropet görs (och de tre följande förstås) så har redan for-loopen körts igenom och värdet på i har redan räknats upp till sitt maxvärde 4. Så anropet i callbacken kommer alltid att bli cars[4].brand. Det vi skulle vilja är att värdet på i binds när callback-funktionen skapas, inte när den anropas.
JavaScript är ett magiskt språk med många funktioner som länge har funnits på teoretisk nivå inom datalogin men som sällan letar sig fram till praktisk användning. En sådan är högre ordningens funktioner – vilket betyder att funktioner fungerar som vilka andra typer som helst. Det ska vi använda för att lösa vårt problem. Vi vill skapa en s.k. closure, helt enkelt en bindning av variabelns värde vi deklarationen istället för vid körningen. Såhär går det till (detta är inte intuitivt och tar de flesta ganska mycket tankemöda innan man förstår vad som händer):
cars = [ { reg: ‘ABC123’ }, { reg: ‘DEF456’ }, { reg: ‘GHI789’ }, { reg: ’JKL123’ } ];
for (i = 0; i < cars.length ; i++)
{
var currentCar = cars[i];
// Långsamt anrop till externt api. Anropet tar två parametrar, första är registreringsnumret den andra är
// callbackfunktionen som anropas när api:et svarar
externalService.slowlyLookupCarBrand(
car.reg,
function (index)
{
return function (brandName)
{
cars[index].brand = brandName;
}
} (i)
);
}
OK, vad betyder det här nu då? Istället för att direkt skapa en anonym funktion som callback så låter vi en yttre funktion skapa och returnera callback-funktionen. Det sista (i) efter } betyder ”anropa den yttre funktionen med parametervärdet i”. Det som händer då är att en closure skapas, en binding av variablers värden som de ser ut just nu. Parametern index i funktionen tilldelas värdet som i har vid tillfället när anropet till slowlyLookupCarBrand görs, inte när svarsanropet till den inre funktionen kommer från den externa tjänsten. Det betyder att våra fyra externa anrop kommer att få fyra olika svarsfunktioner, var och en med ett värde på index som motsvarar värdet på i när det externa anropet sker.
Som sagt - inte intuitivt och inte superenkelt att förstå vid första genomläsningen, men helt nödvändigt att använda i vissa tillfällen.",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "Test av kodsnuttar i text",
+ "meta_description": null,
+ "author_id": 1093,
+ "created_at": 1343148224000,
+ "created_by": 1093,
+ "updated_at": 1343148224000,
+ "updated_by": 1093,
+ "published_at": 1343148224000,
+ "published_by": 1093
+ },
+ {
+ "id": 619,
+ "title": "FW: Test av kodsnuttar i text",
+ "slug": "fw-test-av-kodsnuttar-i-text",
+ "markdown": "\r\nAllt mer utveckling både på klientsidan (förstås) och på serversidan sker med JavaScript och alltmer sker asynkront. Tidigare kunde anropa funktioner som uträttar uppgifter en efter en och helt enkelt gå vidare till nästa steg när man var klar med det innan. Lätt att förstå och lätt att debugga, men inte särskilt anpassat till dagens arkitekturer där man ofta anropar externa tjänster och API:er och där gränssnittet helt enkelt inte kan vänta på svar. Istället gör man en funktion, en callback, som anropas när den externa uppgiften är klar.\r\n\r\nDet är ett smart pattern, men kan ge upphov till klurigheter att lösa för utvecklaren. En sån är vilket scope som callback-funktionen egentligen körs i, d.v.s. vilka variablerna man har tillgång till när svarsanropet väl kommer. Ett annat är att man kan råka ut för race conditions där värden av vissa variabler plötsligt beror på svarstiden för de externa anropen.\r\n\r\nHär är ett exempel:\r\n\r\ncars = [ { reg: ‘ABC123’ }, { reg: ‘DEF456’ }, { reg: ‘GHI789’ }, { reg: ’JKL123’ } ];\r\n\r\nfor (i = 0; i < cars.length ; i++)\r\n\r\n{\r\n\r\n var currentCar = cars[i];\r\n\r\n // Långsamt anrop till externt api. Anropet tar två parametrar, första är registreringsnumret den andra är\r\n\r\n // callbackfunktionen som anropas när api:et svarar\r\n\r\n externalService.slowlyLookupCarBrand(\r\n\r\n car.reg,\r\n\r\n function (brandName)\r\n\r\n {\r\n\r\n cars[i].brand = brandName;\r\n\r\n }\r\n\r\n);\r\n\r\n}\r\n\r\nVad händer när denna körs? Ett fel uppstår där det står att ”cars[i].brand is undefined”. Konstigt... Första tanken är att det är fel scope, att variabeln i inte finns i callbackfunktionen. Om man skriver ut värdet på i upptäcker man att så inte är fallet – istället är har i alltid värdet 4. Vad har hänt här egentligen?\r\n\r\nSvaret är att när första callback-anropet görs (och de tre följande förstås) så har redan for-loopen körts igenom och värdet på i har redan räknats upp till sitt maxvärde 4. Så anropet i callbacken kommer alltid att bli cars[4].brand. Det vi skulle vilja är att värdet på i binds när callback-funktionen skapas, inte när den anropas.\r\n\r\nJavaScript är ett magiskt språk med många funktioner som länge har funnits på teoretisk nivå inom datalogin men som sällan letar sig fram till praktisk användning. En sådan är högre ordningens funktioner – vilket betyder att funktioner fungerar som vilka andra typer som helst. Det ska vi använda för att lösa vårt problem. Vi vill skapa en s.k. closure, helt enkelt en bindning av variabelns värde vi deklarationen istället för vid körningen. Såhär går det till (detta är inte intuitivt och tar de flesta ganska mycket tankemöda innan man förstår vad som händer):\r\n\r\ncars = [ { reg: ‘ABC123’ }, { reg: ‘DEF456’ }, { reg: ‘GHI789’ }, { reg: ’JKL123’ } ];\r\n\r\nfor (i = 0; i < cars.length ; i++)\r\n\r\n{\r\n\r\n var currentCar = cars[i];\r\n\r\n // Långsamt anrop till externt api. Anropet tar två parametrar, första är registreringsnumret den andra är\r\n\r\n // callbackfunktionen som anropas när api:et svarar\r\n\r\n externalService.slowlyLookupCarBrand(\r\n\r\n car.reg,\r\n\r\n function (index)\r\n\r\n{\r\n\r\n return function (brandName)\r\n\r\n {\r\n\r\n cars[index].brand = brandName;\r\n\r\n }\r\n\r\n } (i)\r\n\r\n );\r\n\r\n}\r\n\r\nOK, vad betyder det här nu då? Istället för att direkt skapa en anonym funktion som callback så låter vi en yttre funktion skapa och returnera callback-funktionen. Det sista (i) efter } betyder ”anropa den yttre funktionen med parametervärdet i”. Det som händer då är att en closure skapas, en binding av variablers värden som de ser ut just nu. Parametern index i funktionen tilldelas värdet som i har vid tillfället när anropet till slowlyLookupCarBrand görs, inte när svarsanropet till den inre funktionen kommer från den externa tjänsten. Det betyder att våra fyra externa anrop kommer att få fyra olika svarsfunktioner, var och en med ett värde på index som motsvarar värdet på i när det externa anropet sker.\r\n\r\nSom sagt - inte intuitivt och inte superenkelt att förstå vid första genomläsningen, men helt nödvändigt att använda i vissa tillfällen.",
+ "html": "
Allt mer utveckling både på klientsidan (förstås) och på serversidan sker med JavaScript och alltmer sker asynkront. Tidigare kunde anropa funktioner som uträttar uppgifter en efter en och helt enkelt gå vidare till nästa steg när man var klar med det innan. Lätt att förstå och lätt att debugga, men inte särskilt anpassat till dagens arkitekturer där man ofta anropar externa tjänster och API:er och där gränssnittet helt enkelt inte kan vänta på svar. Istället gör man en funktion, en callback, som anropas när den externa uppgiften är klar.
Det är ett smart pattern, men kan ge upphov till klurigheter att lösa för utvecklaren. En sån är vilket scope som callback-funktionen egentligen körs i, d.v.s. vilka variablerna man har tillgång till när svarsanropet väl kommer. Ett annat är att man kan råka ut för race conditions där värden av vissa variabler plötsligt beror på svarstiden för de externa anropen.
Här är ett exempel:
cars = [ { reg: ‘ABC123’ }, { reg: ‘DEF456’ }, { reg: ‘GHI789’ }, { reg: ’JKL123’ } ];
for (i = 0; i < cars.length ; i++)
{
var currentCar = cars[i];
// Långsamt anrop till externt api. Anropet tar två parametrar, första är registreringsnumret den andra är
// callbackfunktionen som anropas när api:et svarar
externalService.slowlyLookupCarBrand(
car.reg,
function (brandName)
{
cars[i].brand = brandName;
}
);
}
Vad händer när denna körs? Ett fel uppstår där det står att ”cars[i].brand is undefined”. Konstigt... Första tanken är att det är fel scope, att variabeln i inte finns i callbackfunktionen. Om man skriver ut värdet på i upptäcker man att så inte är fallet – istället är har i alltid värdet 4. Vad har hänt här egentligen?
Svaret är att när första callback-anropet görs (och de tre följande förstås) så har redan for-loopen körts igenom och värdet på i har redan räknats upp till sitt maxvärde 4. Så anropet i callbacken kommer alltid att bli cars[4].brand. Det vi skulle vilja är att värdet på i binds när callback-funktionen skapas, inte när den anropas.
JavaScript är ett magiskt språk med många funktioner som länge har funnits på teoretisk nivå inom datalogin men som sällan letar sig fram till praktisk användning. En sådan är högre ordningens funktioner – vilket betyder att funktioner fungerar som vilka andra typer som helst. Det ska vi använda för att lösa vårt problem. Vi vill skapa en s.k. closure, helt enkelt en bindning av variabelns värde vi deklarationen istället för vid körningen. Såhär går det till (detta är inte intuitivt och tar de flesta ganska mycket tankemöda innan man förstår vad som händer):
cars = [ { reg: ‘ABC123’ }, { reg: ‘DEF456’ }, { reg: ‘GHI789’ }, { reg: ’JKL123’ } ];
for (i = 0; i < cars.length ; i++)
{
var currentCar = cars[i];
// Långsamt anrop till externt api. Anropet tar två parametrar, första är registreringsnumret den andra är
// callbackfunktionen som anropas när api:et svarar
externalService.slowlyLookupCarBrand(
car.reg,
function (index)
{
return function (brandName)
{
cars[index].brand = brandName;
}
} (i)
);
}
OK, vad betyder det här nu då? Istället för att direkt skapa en anonym funktion som callback så låter vi en yttre funktion skapa och returnera callback-funktionen. Det sista (i) efter } betyder ”anropa den yttre funktionen med parametervärdet i”. Det som händer då är att en closure skapas, en binding av variablers värden som de ser ut just nu. Parametern index i funktionen tilldelas värdet som i har vid tillfället när anropet till slowlyLookupCarBrand görs, inte när svarsanropet till den inre funktionen kommer från den externa tjänsten. Det betyder att våra fyra externa anrop kommer att få fyra olika svarsfunktioner, var och en med ett värde på index som motsvarar värdet på i när det externa anropet sker.
Som sagt - inte intuitivt och inte superenkelt att förstå vid första genomläsningen, men helt nödvändigt att använda i vissa tillfällen.",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "FW: Test av kodsnuttar i text",
+ "meta_description": null,
+ "author_id": 1093,
+ "created_at": 1343148405000,
+ "created_by": 1093,
+ "updated_at": 1343148405000,
+ "updated_by": 1093,
+ "published_at": 1343148405000,
+ "published_by": 1093
+ },
+ {
+ "id": 620,
+ "title": "FW21: Test av kodsnuttar i text",
+ "slug": "fw21-test-av-kodsnuttar-i-text",
+ "markdown": "\r\nAllt mer utveckling både på klientsidan (förstås) och på serversidan sker med JavaScript och alltmer sker asynkront. Tidigare kunde anropa funktioner som uträttar uppgifter en efter en och helt enkelt gå vidare till nästa steg när man var klar med det innan. Lätt att förstå och lätt att debugga, men inte särskilt anpassat till dagens arkitekturer där man ofta anropar externa tjänster och API:er och där gränssnittet helt enkelt inte kan vänta på svar. Istället gör man en funktion, en callback, som anropas när den externa uppgiften är klar.\r\n\r\nDet är ett smart pattern, men kan ge upphov till klurigheter att lösa för utvecklaren. En sån är vilket scope som callback-funktionen egentligen körs i, d.v.s. vilka variablerna man har tillgång till när svarsanropet väl kommer. Ett annat är att man kan råka ut för race conditions där värden av vissa variabler plötsligt beror på svarstiden för de externa anropen.\r\n\r\nHär är ett exempel:\r\n\r\ncars = [ { reg: ‘ABC123’ }, { reg: ‘DEF456’ }, { reg: ‘GHI789’ }, { reg: ’JKL123’ } ];\r\n\r\nfor (i = 0; i < cars.length ; i++)\r\n\r\n{\r\n\r\n var currentCar = cars[i];\r\n\r\n // Långsamt anrop till externt api. Anropet tar två parametrar, första är registreringsnumret den andra är\r\n\r\n // callbackfunktionen som anropas när api:et svarar\r\n\r\n externalService.slowlyLookupCarBrand(\r\n\r\n car.reg,\r\n\r\n function (brandName)\r\n\r\n {\r\n\r\n cars[i].brand = brandName;\r\n\r\n }\r\n\r\n);\r\n\r\n}\r\n\r\nVad händer när denna körs? Ett fel uppstår där det står att ”cars[i].brand is undefined”. Konstigt... Första tanken är att det är fel scope, att variabeln i inte finns i callbackfunktionen. Om man skriver ut värdet på i upptäcker man att så inte är fallet – istället är har i alltid värdet 4. Vad har hänt här egentligen?\r\n\r\nSvaret är att när första callback-anropet görs (och de tre följande förstås) så har redan for-loopen körts igenom och värdet på i har redan räknats upp till sitt maxvärde 4. Så anropet i callbacken kommer alltid att bli cars[4].brand. Det vi skulle vilja är att värdet på i binds när callback-funktionen skapas, inte när den anropas.\r\n\r\nJavaScript är ett magiskt språk med många funktioner som länge har funnits på teoretisk nivå inom datalogin men som sällan letar sig fram till praktisk användning. En sådan är högre ordningens funktioner – vilket betyder att funktioner fungerar som vilka andra typer som helst. Det ska vi använda för att lösa vårt problem. Vi vill skapa en s.k. closure, helt enkelt en bindning av variabelns värde vi deklarationen istället för vid körningen. Såhär går det till (detta är inte intuitivt och tar de flesta ganska mycket tankemöda innan man förstår vad som händer):\r\n\r\ncars = [ { reg: ‘ABC123’ }, { reg: ‘DEF456’ }, { reg: ‘GHI789’ }, { reg: ’JKL123’ } ];\r\n\r\nfor (i = 0; i < cars.length ; i++)\r\n\r\n{\r\n\r\n var currentCar = cars[i];\r\n\r\n // Långsamt anrop till externt api. Anropet tar två parametrar, första är registreringsnumret den andra är\r\n\r\n // callbackfunktionen som anropas när api:et svarar\r\n\r\n externalService.slowlyLookupCarBrand(\r\n\r\n car.reg,\r\n\r\n function (index)\r\n\r\n{\r\n\r\n return function (brandName)\r\n\r\n {\r\n\r\n cars[index].brand = brandName;\r\n\r\n }\r\n\r\n } (i)\r\n\r\n );\r\n\r\n}\r\n\r\nOK, vad betyder det här nu då? Istället för att direkt skapa en anonym funktion som callback så låter vi en yttre funktion skapa och returnera callback-funktionen. Det sista (i) efter } betyder ”anropa den yttre funktionen med parametervärdet i”. Det som händer då är att en closure skapas, en binding av variablers värden som de ser ut just nu. Parametern index i funktionen tilldelas värdet som i har vid tillfället när anropet till slowlyLookupCarBrand görs, inte när svarsanropet till den inre funktionen kommer från den externa tjänsten. Det betyder att våra fyra externa anrop kommer att få fyra olika svarsfunktioner, var och en med ett värde på index som motsvarar värdet på i när det externa anropet sker.\r\n\r\nSom sagt - inte intuitivt och inte superenkelt att förstå vid första genomläsningen, men helt nödvändigt att använda i vissa tillfällen.",
+ "html": "
Allt mer utveckling både på klientsidan (förstås) och på serversidan sker med JavaScript och alltmer sker asynkront. Tidigare kunde anropa funktioner som uträttar uppgifter en efter en och helt enkelt gå vidare till nästa steg när man var klar med det innan. Lätt att förstå och lätt att debugga, men inte särskilt anpassat till dagens arkitekturer där man ofta anropar externa tjänster och API:er och där gränssnittet helt enkelt inte kan vänta på svar. Istället gör man en funktion, en callback, som anropas när den externa uppgiften är klar.
Det är ett smart pattern, men kan ge upphov till klurigheter att lösa för utvecklaren. En sån är vilket scope som callback-funktionen egentligen körs i, d.v.s. vilka variablerna man har tillgång till när svarsanropet väl kommer. Ett annat är att man kan råka ut för race conditions där värden av vissa variabler plötsligt beror på svarstiden för de externa anropen.
Här är ett exempel:
cars = [ { reg: ‘ABC123’ }, { reg: ‘DEF456’ }, { reg: ‘GHI789’ }, { reg: ’JKL123’ } ];
for (i = 0; i < cars.length ; i++)
{
var currentCar = cars[i];
// Långsamt anrop till externt api. Anropet tar två parametrar, första är registreringsnumret den andra är
// callbackfunktionen som anropas när api:et svarar
externalService.slowlyLookupCarBrand(
car.reg,
function (brandName)
{
cars[i].brand = brandName;
}
);
}
Vad händer när denna körs? Ett fel uppstår där det står att ”cars[i].brand is undefined”. Konstigt... Första tanken är att det är fel scope, att variabeln i inte finns i callbackfunktionen. Om man skriver ut värdet på i upptäcker man att så inte är fallet – istället är har i alltid värdet 4. Vad har hänt här egentligen?
Svaret är att när första callback-anropet görs (och de tre följande förstås) så har redan for-loopen körts igenom och värdet på i har redan räknats upp till sitt maxvärde 4. Så anropet i callbacken kommer alltid att bli cars[4].brand. Det vi skulle vilja är att värdet på i binds när callback-funktionen skapas, inte när den anropas.
JavaScript är ett magiskt språk med många funktioner som länge har funnits på teoretisk nivå inom datalogin men som sällan letar sig fram till praktisk användning. En sådan är högre ordningens funktioner – vilket betyder att funktioner fungerar som vilka andra typer som helst. Det ska vi använda för att lösa vårt problem. Vi vill skapa en s.k. closure, helt enkelt en bindning av variabelns värde vi deklarationen istället för vid körningen. Såhär går det till (detta är inte intuitivt och tar de flesta ganska mycket tankemöda innan man förstår vad som händer):
cars = [ { reg: ‘ABC123’ }, { reg: ‘DEF456’ }, { reg: ‘GHI789’ }, { reg: ’JKL123’ } ];
for (i = 0; i < cars.length ; i++)
{
var currentCar = cars[i];
// Långsamt anrop till externt api. Anropet tar två parametrar, första är registreringsnumret den andra är
// callbackfunktionen som anropas när api:et svarar
externalService.slowlyLookupCarBrand(
car.reg,
function (index)
{
return function (brandName)
{
cars[index].brand = brandName;
}
} (i)
);
}
OK, vad betyder det här nu då? Istället för att direkt skapa en anonym funktion som callback så låter vi en yttre funktion skapa och returnera callback-funktionen. Det sista (i) efter } betyder ”anropa den yttre funktionen med parametervärdet i”. Det som händer då är att en closure skapas, en binding av variablers värden som de ser ut just nu. Parametern index i funktionen tilldelas värdet som i har vid tillfället när anropet till slowlyLookupCarBrand görs, inte när svarsanropet till den inre funktionen kommer från den externa tjänsten. Det betyder att våra fyra externa anrop kommer att få fyra olika svarsfunktioner, var och en med ett värde på index som motsvarar värdet på i när det externa anropet sker.
Som sagt - inte intuitivt och inte superenkelt att förstå vid första genomläsningen, men helt nödvändigt att använda i vissa tillfällen.",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "FW21: Test av kodsnuttar i text",
+ "meta_description": null,
+ "author_id": 1093,
+ "created_at": 1343148583000,
+ "created_by": 1093,
+ "updated_at": 1343148583000,
+ "updated_by": 1093,
+ "published_at": 1343148583000,
+ "published_by": 1093
+ },
+ {
+ "id": 621,
+ "title": "Test Utvecking",
+ "slug": "test-utvecking",
+ "markdown": "\r\nTvå grymma utvecklare sökes - känner du någon som borde jobba på Sveriges bästa teknikbyrå? \r\n\r\n\r\n\r\nJohanna Gustafsson - johanna.gustafsson@iteam.seTegnérgatan 28 - SE-113 59 Stockholm\r\n\r\nOffice: +46 8 26 70 90Mobile: +46 734 02 91 12\r\n![Bild](http://tekniken.nu/uploads/634828917410694498-image001.png)",
+ "html": "
Två grymma utvecklare sökes - känner du någon som borde jobba på Sveriges bästa teknikbyrå?
Johanna Gustafsson - johanna.gustafsson@iteam.se
Tegnérgatan 28 - SE-113 59 Stockholm
Office: +46 8 26 70 90
Mobile: +46 734 02 91 12",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "Test Utvecking",
+ "meta_description": null,
+ "author_id": 1093,
+ "created_at": 1347294940000,
+ "created_by": 1093,
+ "updated_at": 1347294940000,
+ "updated_by": 1093,
+ "published_at": 1347294940000,
+ "published_by": 1093
+ },
+ {
+ "id": 622,
+ "title": "FW: test via mailgun",
+ "slug": "fw-test-via-mailgun",
+ "markdown": "\r\nBild i bild:\r\n\r\n\r\n\r\nTvå grymma utvecklare sökes - känner du någon som borde jobba på Sveriges bästa teknikbyrå? \r\n\r\n\r\n\r\nJohanna Gustafsson - johanna.gustafsson@iteam.seTegnérgatan 28 - SE-113 59 Stockholm\r\n\r\nOffice: +46 8 26 70 90Mobile: +46 734 02 91 12\r\n![Bild](http://tekniken.nu/uploads/634878090376123858-image001.png)",
+ "html": "
Bild i bild:
Två grymma utvecklare sökes - känner du någon som borde jobba på Sveriges bästa teknikbyrå?
Johanna Gustafsson - johanna.gustafsson@iteam.se
Tegnérgatan 28 - SE-113 59 Stockholm
Office: +46 8 26 70 90
Mobile: +46 734 02 91 12",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "FW: test via mailgun",
+ "meta_description": null,
+ "author_id": 1093,
+ "created_at": 1352212237000,
+ "created_by": 1093,
+ "updated_at": 1352212237000,
+ "updated_by": 1093,
+ "published_at": 1352212237000,
+ "published_by": 1093
+ },
+ {
+ "id": 623,
+ "title": "RE: SEO analyser i Google Analytics",
+ "slug": "re-seo-analyser-i-google-analytics",
+ "markdown": "\r\n\r\nJag har senaste tiden sett att antalet besök har nått nya nivåer pånärmaste.se. Eftersom all trafik kommer via google-sökningar ( t ex närmaste bankomat, närmaste ticnetombud, systembolag vid brommaplan osv) så är det intressant att det helt plötsligt kommer mer trafik utan naturliga förklaringar. Tidigare toppar kan förklaras med nyårsafton, midsommarafton, dagar då apotekets datasystem låg nere osv:\r\n\r\n\r\n \r\n\r\n\r\n\r\n\r\n\r\nOm man tittar lite närmare kan man via Google Analytics hitta ett mönster med ett tak som upprepar sig i flera dagar och som jag tolkar som att det finns en ramp-up till ett max antal träffar per vecka som automatiskt höjs och sänks baserat på något internt rankinsystem på Google. PageRank är ju officiellt borttaget men någon sorts ranking finns det som de höjer upp och ner per vecka.\r\n\r\n\r\nDenna rapport kan man nå via Google Analytics på Traffic Sources > Search Engine Optimizations > Queries. Rapporten kräver att du har aktiverat Google Tools For webmasters och gör därför en ihopslagning av den trafik som Google skickar vidare till sajtägare även om du inte har Google Analytics installerat på din sajt. Informationen visar hur många gånger din sajt har blivit visad i googles sökresultat. \r\n\r\n\r\n\r\n\r\n\r\nJag tolkar att taggigheten på topparna i slutet på den nuvarande perioden är ett tecken på att de snart kommer höja nivån. <- Ovanstående skrev jag igår och mycket riktigt har det blivit ytterligare en högre nivå idag! Detta är samma rapport som igår men nu har Google släppt på ytterligare en nivå.\r\n\r\n\r\n\r\n\r\n\r\nOm man zoomar in lite på den sista månaden så ser man tydligt när gränsen passeras..\r\n\r\n\r\n\r\n\r\n\r\nSlutsatsen är att så länge dessa kurvor är spetsiga kommer Google öka maxgränsen. Jämför man med en annan sajt vi har insikt i kan man se att man där har stabiliserat sig på en viss nivå och där är topparna inte lika spetsiga:\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/634968025292981772-image001.png)",
+ "html": "
Jag har senaste tiden sett att antalet besök har nått nya nivåer pånärmaste.se. Eftersom all trafik kommer via google-sökningar ( t ex närmaste bankomat, närmaste ticnetombud, systembolag vid brommaplan osv) så är det intressant att det helt plötsligt kommer mer trafik utan naturliga förklaringar. Tidigare toppar kan förklaras med nyårsafton, midsommarafton, dagar då apotekets datasystem låg nere osv:
Om man tittar lite närmare kan man via Google Analytics hitta ett mönster med ett tak som upprepar sig i flera dagar och som jag tolkar som att det finns en ramp-up till ett max antal träffar per vecka som automatiskt höjs och sänks baserat på något internt rankinsystem på Google. PageRank är ju officiellt borttaget men någon sorts ranking finns det som de höjer upp och ner per vecka.
Denna rapport kan man nå via Google Analytics på Traffic Sources > Search Engine Optimizations > Queries. Rapporten kräver att du har aktiverat Google Tools For webmasters och gör därför en ihopslagning av den trafik som Google skickar vidare till sajtägare även om du inte har Google Analytics installerat på din sajt. Informationen visar hur många gånger din sajt har blivit visad i googles sökresultat.
Jag tolkar att taggigheten på topparna i slutet på den nuvarande perioden är ett tecken på att de snart kommer höja nivån. <- Ovanstående skrev jag igår och mycket riktigt har det blivit ytterligare en högre nivå idag! Detta är samma rapport som igår men nu har Google släppt på ytterligare en nivå.
Om man zoomar in lite på den sista månaden så ser man tydligt när gränsen passeras..
Slutsatsen är att så länge dessa kurvor är spetsiga kommer Google öka maxgränsen. Jämför man med en annan sajt vi har insikt i kan man se att man där har stabiliserat sig på en viss nivå och där är topparna inte lika spetsiga:
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "RE: SEO analyser i Google Analytics", + "meta_description": null, + "author_id": 1093, + "created_at": 1361205728000, + "created_by": 1093, + "updated_at": 1361205728000, + "updated_by": 1093, + "published_at": 1361205728000, + "published_by": 1093 + }, + { + "id": 624, + "title": "SEO analyser i Google Analytics", + "slug": "seo-analyser-i-google-analytics", + "markdown": "\r\nJag har senaste tiden sett att antalet besök har nått nya nivåer pånärmaste.se. Eftersom all trafik kommer via google-sökningar ( t ex närmaste bankomat, närmaste ticnetombud, systembolag vid brommaplan osv) så är det intressant att det helt plötsligt kommer mer trafik utan naturliga förklaringar. Tidigare toppar kan förklaras med nyårsafton, midsommarafton, dagar då apotekets datasystem låg nere osv:\r\n\r\n\r\n\r\nOm man tittar lite närmare kan man via Google Analytics hitta ett mönster med ett tak som upprepar sig i flera dagar och som jag tolkar som att det finns en ramp-up till ett max antal träffar per vecka som automatiskt höjs och sänks baserat på något internt rankinsystem på Google. PageRank är ju officiellt borttaget men någon sorts ranking finns det som de höjer upp och ner per vecka.\r\n\r\nDenna rapport kan man nå via Google Analytics på Traffic Sources > Search Engine Optimizations > Queries. Rapporten kräver att du har aktiverat Google Tools For webmasters och gör därför en ihopslagning av den trafik som Google skickar vidare till sajtägare även om du inte har Google Analytics installerat på din sajt. Informationen visar hur många gånger din sajt har blivit visad i googles sökresultat. \r\n\r\n\r\n\r\nJag tolkar att taggigheten på topparna i slutet på den nuvarande perioden är ett tecken på att de snart kommer höja nivån. <- Ovanstående skrev jag igår och mycket riktigt har det blivit ytterligare en högre nivå idag! Detta är samma rapport som igår men nu har Google släppt på ytterligare en nivå.\r\n\r\n\r\n\r\nOm man zoomar in lite på den sista månaden så ser man tydligt när gränsen passeras..\r\n\r\n\r\n\r\nSlutsatsen är att så länge dessa kurvor är spetsiga kommer Google öka maxgränsen. Jämför man med en annan sajt vi har insikt i kan man se att man där har stabiliserat sig på en viss nivå och där är topparna inte lika spetsiga:\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/634968026662891772-image001.png)", + "html": "
Jag har senaste tiden sett att antalet besök har nått nya nivåer pånärmaste.se. Eftersom all trafik kommer via google-sökningar ( t ex närmaste bankomat, närmaste ticnetombud, systembolag vid brommaplan osv) så är det intressant att det helt plötsligt kommer mer trafik utan naturliga förklaringar. Tidigare toppar kan förklaras med nyårsafton, midsommarafton, dagar då apotekets datasystem låg nere osv:
Om man tittar lite närmare kan man via Google Analytics hitta ett mönster med ett tak som upprepar sig i flera dagar och som jag tolkar som att det finns en ramp-up till ett max antal träffar per vecka som automatiskt höjs och sänks baserat på något internt rankinsystem på Google. PageRank är ju officiellt borttaget men någon sorts ranking finns det som de höjer upp och ner per vecka.
Denna rapport kan man nå via Google Analytics på Traffic Sources > Search Engine Optimizations > Queries. Rapporten kräver att du har aktiverat Google Tools For webmasters och gör därför en ihopslagning av den trafik som Google skickar vidare till sajtägare även om du inte har Google Analytics installerat på din sajt. Informationen visar hur många gånger din sajt har blivit visad i googles sökresultat.
Jag tolkar att taggigheten på topparna i slutet på den nuvarande perioden är ett tecken på att de snart kommer höja nivån. <- Ovanstående skrev jag igår och mycket riktigt har det blivit ytterligare en högre nivå idag! Detta är samma rapport som igår men nu har Google släppt på ytterligare en nivå.
Om man zoomar in lite på den sista månaden så ser man tydligt när gränsen passeras..
Slutsatsen är att så länge dessa kurvor är spetsiga kommer Google öka maxgränsen. Jämför man med en annan sajt vi har insikt i kan man se att man där har stabiliserat sig på en viss nivå och där är topparna inte lika spetsiga:
",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "SEO analyser i Google Analytics",
+ "meta_description": null,
+ "author_id": 1093,
+ "created_at": 1361205866000,
+ "created_by": 1093,
+ "updated_at": 1361205866000,
+ "updated_by": 1093,
+ "published_at": 1361205866000,
+ "published_by": 1093
+ },
+ {
+ "id": 626,
+ "title": "RE2: SEO analyser i Google Analytics",
+ "slug": "re2-seo-analyser-i-google-analytics",
+ "markdown": "\r\nJag har senaste tiden sett att antalet besök har nått nya nivåer pånärmaste.se. Eftersom all trafik kommer via google-sökningar ( t ex närmaste bankomat, närmaste ticnetombud, systembolag vid brommaplan osv) så är det intressant att det helt plötsligt kommer mer trafik utan naturliga förklaringar. Tidigare toppar kan förklaras med nyårsafton, midsommarafton, dagar då apotekets datasystem låg nere osv:\r\n\r\n\r\n\r\nOm man tittar lite närmare kan man via Google Analytics hitta ett mönster med ett tak som upprepar sig i flera dagar och som jag tolkar som att det finns en ramp-up till ett max antal träffar per vecka som automatiskt höjs och sänks baserat på något internt rankinsystem på Google. PageRank är ju officiellt borttaget men någon sorts ranking finns det som de höjer upp och ner per vecka.\r\n\r\nDenna rapport kan man nå via Google Analytics på Traffic Sources > Search Engine Optimizations > Queries. Rapporten kräver att du har aktiverat Google Tools For webmasters och gör därför en ihopslagning av den trafik som Google skickar vidare till sajtägare även om du inte har Google Analytics installerat på din sajt. Informationen visar hur många gånger din sajt har blivit visad i googles sökresultat. \r\n\r\n\r\n\r\nJag tolkar att taggigheten på topparna i slutet på den nuvarande perioden är ett tecken på att de snart kommer höja nivån. <- Ovanstående skrev jag igår och mycket riktigt har det blivit ytterligare en högre nivå idag! Detta är samma rapport som igår men nu har Google släppt på ytterligare en nivå.\r\n\r\n\r\n\r\nOm man zoomar in lite på den sista månaden så ser man tydligt när gränsen passeras..\r\n\r\n\r\n\r\nSlutsatsen är att så länge dessa kurvor är spetsiga kommer Google öka maxgränsen. Jämför man med en annan sajt vi har insikt i kan man se att man där har stabiliserat sig på en viss nivå och där är topparna inte lika spetsiga:\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/634968030985361772-image001.png)",
+ "html": "
Jag har senaste tiden sett att antalet besök har nått nya nivåer pånärmaste.se. Eftersom all trafik kommer via google-sökningar ( t ex närmaste bankomat, närmaste ticnetombud, systembolag vid brommaplan osv) så är det intressant att det helt plötsligt kommer mer trafik utan naturliga förklaringar. Tidigare toppar kan förklaras med nyårsafton, midsommarafton, dagar då apotekets datasystem låg nere osv:
Om man tittar lite närmare kan man via Google Analytics hitta ett mönster med ett tak som upprepar sig i flera dagar och som jag tolkar som att det finns en ramp-up till ett max antal träffar per vecka som automatiskt höjs och sänks baserat på något internt rankinsystem på Google. PageRank är ju officiellt borttaget men någon sorts ranking finns det som de höjer upp och ner per vecka.
Denna rapport kan man nå via Google Analytics på Traffic Sources > Search Engine Optimizations > Queries. Rapporten kräver att du har aktiverat Google Tools For webmasters och gör därför en ihopslagning av den trafik som Google skickar vidare till sajtägare även om du inte har Google Analytics installerat på din sajt. Informationen visar hur många gånger din sajt har blivit visad i googles sökresultat.
Jag tolkar att taggigheten på topparna i slutet på den nuvarande perioden är ett tecken på att de snart kommer höja nivån. <- Ovanstående skrev jag igår och mycket riktigt har det blivit ytterligare en högre nivå idag! Detta är samma rapport som igår men nu har Google släppt på ytterligare en nivå.
Om man zoomar in lite på den sista månaden så ser man tydligt när gränsen passeras..
Slutsatsen är att så länge dessa kurvor är spetsiga kommer Google öka maxgränsen. Jämför man med en annan sajt vi har insikt i kan man se att man där har stabiliserat sig på en viss nivå och där är topparna inte lika spetsiga:
",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "RE2: SEO analyser i Google Analytics",
+ "meta_description": null,
+ "author_id": 1093,
+ "created_at": 1361206298000,
+ "created_by": 1093,
+ "updated_at": 1361206298000,
+ "updated_by": 1093,
+ "published_at": 1361206298000,
+ "published_by": 1093
+ },
+ {
+ "id": 627,
+ "title": "testar inläsning av bilder",
+ "slug": "testar-inlasning-av-bilder",
+ "markdown": "\r\nI C# finns det ett utmärkt bibliotek för att skapa en realtidskommunikation mellan klient och server via WebSockets (med fallback till andra tekniker). Biblioteket heterSignalR och här kommer en liten redogörelse för ett proof of concept vi har gjort där vi kombinerar detta bibliotek medMailGun som är en grym molntjänst för att ta emot email till en applikation.\r\n\r\nDEMO: För att testa proof of concept går du till:\r\n\r\nhttp://mailfeed-1.apphb.com/mail (Pröva att skicka ett mail tillinfo@mailfeed.mailgun.org och se hur mailet magiskt kommer upp på skärmen.)\r\n\r\nDetta kan vara utmärkt för många saker, bland annat om man ska bygga en omröstningsfunktion, kontrollera mailadresser med aktiveringskod osv osv. \r\n\r\nNedan hittar du ett utdrag från de viktigaste delarna i koden (som du hittar i sin helhet på GitHub:https://github.com/irony/Mailfeed)\r\n\r\nFörst sätter vi upp en MVC route för att ta emot mailet från MailGun\r\n\r\n\r\n\r\nFör att överföra mellan olika delar i systemet använder vi en statisk IObservable\r\n\r\n\r\n\r\nSen lyssnar vi på förändringar i denna och synkar till anslutna klienter\r\n\r\nObservera att vi i Add metoden anropar en klientfunktion (!):\r\n\r\n\r\n\r\nSen tar vi emot all kommunikation på klientsidan:\r\n\r\nHär deklareras metoden ”updateInbox” som vi ovan anropar från servern:\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/634980042214226457-image001.png)",
+ "html": "
I C# finns det ett utmärkt bibliotek för att skapa en realtidskommunikation mellan klient och server via WebSockets (med fallback till andra tekniker). Biblioteket heterSignalR och här kommer en liten redogörelse för ett proof of concept vi har gjort där vi kombinerar detta bibliotek medMailGun som är en grym molntjänst för att ta emot email till en applikation.
DEMO: För att testa proof of concept går du till:
http://mailfeed-1.apphb.com/mail (Pröva att skicka ett mail tillinfo@mailfeed.mailgun.org och se hur mailet magiskt kommer upp på skärmen.)
Detta kan vara utmärkt för många saker, bland annat om man ska bygga en omröstningsfunktion, kontrollera mailadresser med aktiveringskod osv osv.
Nedan hittar du ett utdrag från de viktigaste delarna i koden (som du hittar i sin helhet på GitHub:https://github.com/irony/Mailfeed)
Först sätter vi upp en MVC route för att ta emot mailet från MailGun
För att överföra mellan olika delar i systemet använder vi en statisk IObservable
Sen lyssnar vi på förändringar i denna och synkar till anslutna klienter
Observera att vi i Add metoden anropar en klientfunktion (!):
Sen tar vi emot all kommunikation på klientsidan:
Här deklareras metoden ”updateInbox” som vi ovan anropar från servern:
",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "testar inläsning av bilder",
+ "meta_description": null,
+ "author_id": 1093,
+ "created_at": 1362407421000,
+ "created_by": 1093,
+ "updated_at": 1362407421000,
+ "updated_by": 1093,
+ "published_at": 1362407421000,
+ "published_by": 1093
+ },
+ {
+ "id": 18,
+ "title": "Utveckling",
+ "slug": "utveckling",
+ "markdown": null,
+ "html": null,
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "Utvecklingstips",
+ "meta_description": "",
+ "author_id": 4,
+ "created_at": 1181663409000,
+ "created_by": 4,
+ "updated_at": 1181663409000,
+ "updated_by": 4,
+ "published_at": 1181663409000,
+ "published_by": 4
+ },
+ {
+ "id": 60,
+ "title": "Minnesbegränsningar i Microsoft Windows Server 2003",
+ "slug": "minnesbegransningar-i-microsoft-windows-server-2003",
+ "markdown": "\r\nHär följer de övre minnesgränserna i Windows Server 2003:\r\n\r\n \r\n\r\nWindows\r\nServer 2003 Web edition – 2GB\r\n\r\nWindows\r\nServer 2003 Standard - 4GB\r\n\r\nWindows\r\nServer 2003 Enterprise – 32GB (x86 32-bit), 64GB (Itanium 64-bit)\r\n\r\nWindows\r\nServer 2003 Datacenter Edition – 128GB (x86 32-bit), 2TB (Itanium 64-bit)\r\n\r\n \r\n\r\n(Samma gränser gäller för R2).\r\n\r\n",
+ "html": "
Här följer de övre minnesgränserna i Windows Server 2003:
Windows
Server 2003 Web edition – 2GB
Windows
Server 2003 Standard - 4GB
Windows
Server 2003 Enterprise – 32GB (x86 32-bit), 64GB (Itanium 64-bit)
Windows
Server 2003 Datacenter Edition – 128GB (x86 32-bit), 2TB (Itanium 64-bit)
(Samma gränser gäller för R2).
",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": null,
+ "meta_description": "",
+ "author_id": 1085,
+ "created_at": 1187024340000,
+ "created_by": 1085,
+ "updated_at": 1187024340000,
+ "updated_by": 1085,
+ "published_at": 1187024340000,
+ "published_by": 1085
+ },
+ {
+ "id": 62,
+ "title": "Microsoft släpper två uppdateringspaket till Vista",
+ "slug": "microsoft-slapper-tva-uppdateringspaket-till-vista",
+ "markdown": "\r\nI väntan på Service Pack 1 till Vista som förväntas komma under hösten har Microsoft släppt två paket med hotfixar som var viktiga nog för att man inte ville vänta. Några smakprov på fixarna: Prestanda- och pålitlighetsuppdateringenSmåfel i skärmsläckare Snabbare återgång efter Hibernation Den stora som har varit föremål för mycket diskussioner på nätet: fix av filkopieringsbuggen som gör att det ibland tar väldigt lång tid att kopiera filer, steget ”beräknar återstående tid” tar väldigt lång tid. Kompatibilitets- och pålitlighetsuppdateringenMånga problem med grafikkort och drivrutiner, särskilt relaterade till spel och video Diverse hårdvaruproblem, bland annat med anslutna externa enheter Problem med nätverket Mer om uppdateringarna här: http://arstechnica.com/news.ars/post/20070807-vista-performance-and-compatibility-packs-released.html Båda paketen förväntas dyka upp i de automatiska uppdateringarna nästa patch-tisdag, så har du inte jätteproblem är det enklast att bara vänta. Själv är jag ganska sugen på att se om jag kan få fart på filkopieringen :-) \r\n![Bild](http://tekniken.nu/uploads/vista-start.png)",
+ "html": "
I väntan på Service Pack 1 till Vista som förväntas komma under hösten har Microsoft släppt två paket med hotfixar som var viktiga nog för att man inte ville vänta. Några smakprov på fixarna:
Prestanda- och pålitlighetsuppdateringen
Småfel i skärmsläckare
Snabbare återgång efter Hibernation
Den stora som har varit föremål för mycket diskussioner på nätet: fix av filkopieringsbuggen som gör att det ibland tar väldigt lång tid att kopiera filer, steget ”beräknar återstående tid” tar väldigt lång tid.
Kompatibilitets- och pålitlighetsuppdateringen
Många problem med grafikkort och drivrutiner, särskilt relaterade till spel och video
Diverse hårdvaruproblem, bland annat med anslutna externa enheter
Problem med nätverket
Mer om uppdateringarna här: http://arstechnica.com/news.ars/post/20070807-vista-performance-and-compatibility-packs-released.html
Båda paketen förväntas dyka upp i de automatiska uppdateringarna nästa patch-tisdag, så har du inte jätteproblem är det enklast att bara vänta. Själv är jag ganska sugen på att se om jag kan få fart på filkopieringen :-) ",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": null,
+ "meta_description": "",
+ "author_id": 6,
+ "created_at": 1186597200000,
+ "created_by": 6,
+ "updated_at": 1186597200000,
+ "updated_by": 6,
+ "published_at": 1186597200000,
+ "published_by": 6
+ },
+ {
+ "id": 64,
+ "title": "Problem att synka NTP mot time.windows.com",
+ "slug": "problem-att-synka-ntp-mot-timewindowscom",
+ "markdown": "\r\n\r\n\r\nSedan USA gjorde om sina sommartidsregler i våras uppvisar många servrar problem att synkronisera tiden mot time.windows.com. Detta är förstås lite problematiskt då den servern är förininställd i NTP i alla windowsservrar... För att ändra NTP server i Windows 2003 ändrar man följande registernyckel till t.ex. “time-a.nist.gov,0x1”: \r\n\r\n\r\n\r\nHKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\W32Time\\Parameters\\NtpServer\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/1337clock.jpg)",
+ "html": "
Sedan USA gjorde om sina sommartidsregler i våras uppvisar många servrar problem att synkronisera tiden mot time.windows.com. Detta är förstås lite problematiskt då den servern är förininställd i NTP i alla windowsservrar...
För att ändra NTP server i Windows 2003 ändrar man följande registernyckel till t.ex. “time-a.nist.gov,0x1”:
HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\W32Time\\Parameters\\NtpServer
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1184772960000, + "created_by": 1085, + "updated_at": 1184772960000, + "updated_by": 1085, + "published_at": 1184772960000, + "published_by": 1085 + }, + { + "id": 67, + "title": "Back/Forward med Dell-mus i Windows Vista", + "slug": "backforward-med-dell-mus-i-windows-vista", + "markdown": "\r\n\r\n\r\nDells femknapparsmus fungerar lite si-och-så i Vista. Knapparna bakåt och framåt gör inte riktigt vad man förväntar sig.\r\n\r\n\r\nLyckligtvis är lösningen enkel:Avinstallera Dells medföljande program Mouse Suite så fungerar musen som tänkt. \r\n\r\n", + "html": "
Dells femknapparsmus fungerar lite si-och-så i Vista. Knapparna bakåt och framåt gör inte riktigt vad man förväntar sig.
Lyckligtvis är lösningen enkel:
Avinstallera Dells medföljande program Mouse Suite så fungerar musen som tänkt.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1088, + "created_at": 1183992780000, + "created_by": 1088, + "updated_at": 1183992780000, + "updated_by": 1088, + "published_at": 1183992780000, + "published_by": 1088 + }, + { + "id": 73, + "title": "Lägga till funktionalitet för att ändra lösenord i Outlook Web Access", + "slug": "lagga-till-funktionalitet-for-att-andra-losenord-i-outlook-web-access", + "markdown": "\r\n\r\n\r\nEn guide som beskriver alla steg finns att läsa på Petri. \r\n\r\n\r\n\r\nhttp://www.petri.co.il/enable_password_changing_through_owa_in_exchange_2003.htm\r\n\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/outlookpassword.png)", + "html": "
En guide som beskriver alla steg finns att läsa på Petri.
http://www.petri.co.il/enable_password_changing_through_owa_in_exchange_2003.htm
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1088, + "created_at": 1182878220000, + "created_by": 1088, + "updated_at": 1182878220000, + "updated_by": 1088, + "published_at": 1182878220000, + "published_by": 1088 + }, + { + "id": 77, + "title": "Mailbox-rättigheter i Exchange 2007", + "slug": "mailbox-rattigheter-i-exchange-2007", + "markdown": "\r\n\r\nAtt administrera mailbox-rättigheter i Exchange 2007 är lite knepigare än i tidigare versioner och görs numera via Exchange Shell med följande kommando:\r\n\r\n\r\nadd-mailboxpermission
Att administrera mailbox-rättigheter i Exchange 2007 är lite knepigare än i tidigare versioner och görs numera via Exchange Shell med följande kommando:
add-mailboxpermission <användaren du vill påverka> -user <användaren som skall ges tillgång> -AccessRights fullaccess
Följande kommando ger alltså administratorn \"full mailbox access\" på min brevlåda:
add-mailboxpermission magnus.tjerneld -user administrator -AccessRights fullaccess
Samtliga tillgängliga alternativ för add-mailboxpermission finns i denna artikel på TechNet:
http://technet.microsoft.com/en-us/library/a9aacbf5-5e6c-47ef-95d6-e24547e95d01.aspx
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1188571200000, + "created_by": 1085, + "updated_at": 1188571200000, + "updated_by": 1085, + "published_at": 1188571200000, + "published_by": 1085 + }, + { + "id": 78, + "title": "Timeout i MS SQL Server Management Studio", + "slug": "timeout-i-ms-sql-server-management-studio", + "markdown": "\r\n\r\n\r\n\r\n\r\n\r\nOm du får timeout när du försöker uppdatera en tabell i SQL\r\nServer Management Studio fastän du ställt upp både time out på både servern och\r\npå klienten så beror det på att det finns ytterligare ett timeoutvärde satt som\r\ngäller just för designläget. Inställningar för detta hittar man under\r\n”Tools->Options->Designers”, som bilden nedan visar.\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/sql-timeout.png)", + "html": "
Om du får timeout när du försöker uppdatera en tabell i SQL
Server Management Studio fastän du ställt upp både time out på både servern och
på klienten så beror det på att det finns ytterligare ett timeoutvärde satt som
gäller just för designläget. Inställningar för detta hittar man under
”Tools->Options->Designers”, som bilden nedan visar.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1086, + "created_at": 1188577080000, + "created_by": 1086, + "updated_at": 1188577080000, + "updated_by": 1086, + "published_at": 1188577080000, + "published_by": 1086 + }, + { + "id": 81, + "title": "Hur man ändrar MAC adress på en virtuell PC", + "slug": "hur-man-andrar-mac-adress-pa-en-virtuell-pc", + "markdown": "\r\n\r\nOm du har kopierat en virtuell PC till en annan maskin och\r\nkört NewCID för att få en nytt datornamn kommer fortfarande MAC adressen på\r\nnätverkskortet vara detsamma som tidigare. För att ändra det, leta upp .VMC-filen och ta bort innehållet i nedanstående tag. Då skapas en ny MAC-adress nästa\r\ngång du startar upp den virtuella PCn:\r\n\r\n\r\n
Om du har kopierat en virtuell PC till en annan maskin och
kört NewCID för att få en nytt datornamn kommer fortfarande MAC adressen på
nätverkskortet vara detsamma som tidigare. För att ändra det, leta upp .VMC-filen och ta bort innehållet i nedanstående tag. Då skapas en ny MAC-adress nästa
gång du startar upp den virtuella PCn:
<ethernet_card_address
type=\"bytes\">0003FFxxxxxx</ethernet_card_address>
Ska bli tomt:
<ethernet_card_address
type=\"bytes\"></ethernet_card_address>
Alternativt kopierar du bara den virtuella hårddisken och
skapar en ny VMC fil på den nya datorn då skapas automatiskt en ny MAC adress.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1087, + "created_at": 1182276900000, + "created_by": 1087, + "updated_at": 1182276900000, + "updated_by": 1087, + "published_at": 1182276900000, + "published_by": 1087 + }, + { + "id": 83, + "title": "Så installerar man tilläggsprogram till SQL Server 2005 med installationspaket från en annan variant", + "slug": "sa-installerar-man-tillaggsprogram-till-sql-server-2005-med-installationspaket-fran-en-annan-variant", + "markdown": "\r\n\r\nSQL Server 2005 finns i flera utgåvor (Express, Standard,\r\nWorkgroup, Enterprise). Om man redan har t.ex. en Express installerad och vill\r\nkomplettera med hjälpprogram som Management Studio från en installationskiva\r\nför Standard så kommer installationsprogrammet att klaga. Lösningen är att\r\nstarta installationsprogrammet i uppgraderingsläge (från kommandoraden):\r\n\r\nsetup.exe SKUUPGRADE=1\r\n\r\nDå går det bra att installera hjälpprogrammen, utan att man behöver\r\npåverka själva databasmotorn (ifall man t.ex. vill behåll Express).\r\n\r\n", + "html": "
SQL Server 2005 finns i flera utgåvor (Express, Standard,
Workgroup, Enterprise). Om man redan har t.ex. en Express installerad och vill
komplettera med hjälpprogram som Management Studio från en installationskiva
för Standard så kommer installationsprogrammet att klaga. Lösningen är att
starta installationsprogrammet i uppgraderingsläge (från kommandoraden):
setup.exe SKUUPGRADE=1
Då går det bra att installera hjälpprogrammen, utan att man behöver
påverka själva databasmotorn (ifall man t.ex. vill behåll Express).
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "man har installerat en Express.", + "author_id": 6, + "created_at": 1182099722000, + "created_by": 6, + "updated_at": 1182099722000, + "updated_by": 6, + "published_at": 1182099722000, + "published_by": 6 + }, + { + "id": 84, + "title": "Så får man VLC att fungera i Vista", + "slug": "sa-far-man-vlc-att-fungera-i-vista", + "markdown": "\r\n\r\n\r\n\r\n\r\n\r\nVideospelaren VLC (www.videolan.org)\r\nfungerar dåligt på vissa Vista-installationer med grundinställningarna. För att få bild måste man\r\nändra videoutmatningsmodul.\r\n\r\nGör såhär:\r\n\r\n1) Välj i menyn: Inställningar > Inställningar\r\n\r\n2) Under Video, välj Utmatningsmoduler\r\n\r\n3) Välj en annan modul än de som använder DirectX. OpenGL\r\noch Windows GDI fungerar bra t.ex. Även Color ASCII, men det ger kanske inte\r\nprecis det resultat du är ute efter :-).\r\n\r\n", + "html": "
Videospelaren VLC (www.videolan.org)
fungerar dåligt på vissa Vista-installationer med grundinställningarna. För att få bild måste man
ändra videoutmatningsmodul.
Gör såhär:
1) Välj i menyn: Inställningar > Inställningar
2) Under Video, välj Utmatningsmoduler
3) Välj en annan modul än de som använder DirectX. OpenGL
och Windows GDI fungerar bra t.ex. Även Color ASCII, men det ger kanske inte
precis det resultat du är ute efter :-).
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1182099540000, + "created_by": 6, + "updated_at": 1182099540000, + "updated_by": 6, + "published_at": 1182099540000, + "published_by": 6 + }, + { + "id": 86, + "title": "Få Alt Gr-knappen att fungera i Virtual PC", + "slug": "fa-alt-gr-knappen-att-fungera-i-virtual-pc", + "markdown": "\r\n\r\n\r\n\r\n\r\n\r\nI Virtual PC finns en s.k. värdknapp (host button) som gör att man kommer ur den virtuella datorn och tillbaka till värddatorn (bra att ha om man har valt att muspekaren ska ”fastna” i den virtuella). Som standardknapp för det har Microsoft valt Alt Gr, eftersom ”den bara används i vissa obskyra språk”. För oss i Sverige gör det livet lite komplicerat eftersom Alt Gr används för att göra tecken som \\.\r\n\r\nSom tur är går det att definiera om värdknappen:\r\n\r\n1) Starta Virtual PC Console2) Öppna menyn File->Options3) Välj Keyboard, klicka på Current host key4) Välj en knapp du inte använder, t.ex. SCROLL LOCK5) Öppna din virtuella maskin på nytt - nu funkar Alt Gr!\r\n\r\n", + "html": "
I Virtual PC finns en s.k. värdknapp (host button) som gör att man kommer ur den virtuella datorn och tillbaka till värddatorn (bra att ha om man har valt att muspekaren ska ”fastna” i den virtuella). Som standardknapp för det har Microsoft valt Alt Gr, eftersom ”den bara används i vissa obskyra språk”. För oss i Sverige gör det livet lite komplicerat eftersom Alt Gr används för att göra tecken som \\.
Som tur är går det att definiera om värdknappen:
1) Starta Virtual PC Console
2) Öppna menyn File->Options
3) Välj Keyboard, klicka på Current host key
4) Välj en knapp du inte använder, t.ex. SCROLL LOCK
5) Öppna din virtuella maskin på nytt - nu funkar Alt Gr!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1181842380000, + "created_by": 6, + "updated_at": 1181842380000, + "updated_by": 6, + "published_at": 1181842380000, + "published_by": 6 + }, + { + "id": 87, + "title": "Stäng av datorn vid ett bestämt klockslag", + "slug": "stang-av-datorn-vid-ett-bestamt-klockslag", + "markdown": "\r\n\r\nIbland behöver man lämna sin dator med en uppgift, men vill ändå\r\natt den ska stängas av senare (som igår t.ex., eftersom vi hade ett planerat\r\nelavbrott idag på morgonen).\r\n\r\nGör såhär:\r\n\r\n- Skapa ett schemalagt jobb (finns under kontrollpanelen i\r\nXP och som eget program i Vista), som ska köras endast en gång\r\n\r\n- Programmet som ska startas är\r\n ”C:\\windows\\system32\\shutdown.exe” med argumenten /s /f (stäng av datorn,\r\noch stäng alla applikationer utan att be den inloggade användaren om lov).\r\n\r\n", + "html": "
Ibland behöver man lämna sin dator med en uppgift, men vill ändå
att den ska stängas av senare (som igår t.ex., eftersom vi hade ett planerat
elavbrott idag på morgonen).
Gör såhär:
- Skapa ett schemalagt jobb (finns under kontrollpanelen i
XP och som eget program i Vista), som ska köras endast en gång
- Programmet som ska startas är
”C:\\windows\\system32\\shutdown.exe” med argumenten /s /f (stäng av datorn,
och stäng alla applikationer utan att be den inloggade användaren om lov).
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1181817240000, + "created_by": 6, + "updated_at": 1181817240000, + "updated_by": 6, + "published_at": 1181817240000, + "published_by": 6 + }, + { + "id": 104, + "title": "Användarrättigheter för Scheduled Tasks på Windows 2003 server", + "slug": "anvandarrattigheter-for-scheduled-tasks-pa-windows-2003-server", + "markdown": "\r\n\r\n\r\nNormalinställningen på en Windows 2003 server är att bara administratörskonton får lägga upp schemalagda jobb. Ibland vill man dock skapa ett servicekonto för en applikation som inte ska vara administratör (av säkerhetsskäl) men ändå kunna lägga upp schemalagda jobb. \r\n\r\n\r\nRättigheten ändras på mapp c:\\windows\\tasks. Tyvärr kan man inte använda det vanliga gränssnittet för filrättigheter, utan man måste använda kommandoradsverktyget cacls.\r\n\r\n\r\nFör att se vilka rättigheter som finns nu:\r\n\r\ncacls c:\\windows\\tasks\r\n\r\n\r\n\r\n\r\n\r\nFör att ge en användare rätt att skapa jobb (C = Create):\r\n\r\ncacls c:\\windows\\tasks /E /P anders:C\r\n\r\n/P innebär att användaren får nya rättigheter. /E Betyder att alla tidigare rättigheter (för andra användare) ska finnas kvar - glöm inte /E, annars kommer hela rättighetslistan på c:\\windows\\tasks tas bort!\r\n\r\n", + "html": "
Normalinställningen på en Windows 2003 server är att bara administratörskonton får lägga upp schemalagda jobb. Ibland vill man dock skapa ett servicekonto för en applikation som inte ska vara administratör (av säkerhetsskäl) men ändå kunna lägga upp schemalagda jobb.
Rättigheten ändras på mapp c:\\windows\\tasks. Tyvärr kan man inte använda det vanliga gränssnittet för filrättigheter, utan man måste använda kommandoradsverktyget cacls.
För att se vilka rättigheter som finns nu:
cacls c:\\windows\\tasks
För att ge en användare rätt att skapa jobb (C = Create):
cacls c:\\windows\\tasks /E /P anders:C
/P innebär att användaren får nya rättigheter. /E Betyder att alla tidigare rättigheter (för andra användare) ska finnas kvar - glöm inte /E, annars kommer hela rättighetslistan på c:\\windows\\tasks tas bort!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1189764900000, + "created_by": 6, + "updated_at": 1189764900000, + "updated_by": 6, + "published_at": 1189764900000, + "published_by": 6 + }, + { + "id": 106, + "title": "Varning: Greylisting kan orsaka problem i Exchange 2003", + "slug": "varning-greylisting-kan-orsaka-problem-i-exchange-2003", + "markdown": "\r\n\r\nTre gånger i år, i tre helt skiljda Exchange-miljöer, har jag\r\nvarit med om följande scenario:\r\n\r\n\r\nExchange Server 2003 håller sporadiskt vissa mail utan att varken leverera dem\r\neller skicka NDR (Non-Delivery Report) till den interna avsändaren. Först vid omstart av\r\nSMTP-tjänsten går mailen iväg. I det senaste fallet uppdagades problemet vid en\r\nomstart, då månadsgamla mail plötsligt skickades iväg.\r\n\r\nProblemet ovan har visat sig bero på en bugg i SMTP-servern\r\ni Windows Server 2003 i kombination med mottagare som använder s.k. greylisting, en\r\nantispamteknik som går ut på att tillfälligt neka alla mail från en okänd\r\navsändare. Efter att ha blivit tillfälligt stoppat hos mottagaren skall\r\navsändarservern försöka skicka mailet igen enligt ett serverdefinierat\r\nintervall, men p.g.a. av denna bugg så sker inga nya försök att skicka. Någon leveransrapport om att mailet inte nått fram skickas alltså inte\r\nheller till avsändaren.\r\n\r\nMicrosoft har erkänt problemet och har också satt ihop en hotfix som kommer ingå\r\ni nästa service pack för Windows Server 2003. I väntan på SP3 måste man dock\r\nringa Microsofts support och be dem maila patchen...\r\n\r\nMicrosoft\r\nQ934709:\r\n\r\n\r\nhttp://support.microsoft.com/kb/934709/en-us\r\n\r\n\r\nMer info om buggen:\r\n\r\n\r\nhttp://www.webservertalk.com/printthread.php?s=9d64fa7f8ee6989847cfcedaa1275e4b&threadid=1918960\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/exchange2003.png)", + "html": "
Tre gånger i år, i tre helt skiljda Exchange-miljöer, har jag
varit med om följande scenario:
Exchange Server 2003 håller sporadiskt vissa mail utan att varken leverera dem
eller skicka NDR (Non-Delivery Report) till den interna avsändaren. Först vid omstart av
SMTP-tjänsten går mailen iväg. I det senaste fallet uppdagades problemet vid en
omstart, då månadsgamla mail plötsligt skickades iväg.
Problemet ovan har visat sig bero på en bugg i SMTP-servern
i Windows Server 2003 i kombination med mottagare som använder s.k. greylisting, en
antispamteknik som går ut på att tillfälligt neka alla mail från en okänd
avsändare. Efter att ha blivit tillfälligt stoppat hos mottagaren skall
avsändarservern försöka skicka mailet igen enligt ett serverdefinierat
intervall, men p.g.a. av denna bugg så sker inga nya försök att skicka. Någon leveransrapport om att mailet inte nått fram skickas alltså inte
heller till avsändaren.
Microsoft har erkänt problemet och har också satt ihop en hotfix som kommer ingå
i nästa service pack för Windows Server 2003. I väntan på SP3 måste man dock
ringa Microsofts support och be dem maila patchen...
Microsoft
Q934709:
http://support.microsoft.com/kb/934709/en-us
Mer info om buggen:
http://www.webservertalk.com/printthread.php?s=9d64fa7f8ee6989847cfcedaa1275e4b&threadid=1918960
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "alltid utan att avsändaren får något varningsmeddelande.", + "author_id": 1085, + "created_at": 1190047200000, + "created_by": 1085, + "updated_at": 1190047200000, + "updated_by": 1085, + "published_at": 1190047200000, + "published_by": 1085 + }, + { + "id": 115, + "title": "Bästa tipsen för kombinationen RSA SecurID och ISA Server 2006", + "slug": "basta-tipsen-for-kombinationen-rsa-securid-och-isa-server-2006", + "markdown": "\r\n\r\nUppdraget: Att skydda ditt nätverk med tvåfaktorauthentisering med RSA SecurID, inklusive VPN-kopplingar och webbtjänster som webbmail och affärssystem.\r\n\r\nNågra små problem kan dyka upp då du försöker använda\r\nISA Server 2006 som en Agent Host i RSA SecureID:\r\n\r\n\r\nGenerellt vid installation av RSA SecurID Agent Hosts: Se\r\ntill att hosten är upplagd med rätt IP (den som ska kommunicera) i RSA\r\nAuthentication Manager. Se till att den är satt till typen NetOS, och\r\natt host-secret-kryssrutan är okryssad. Generera och leverera filen\r\nSDCONF.REC till dina Agent Hosts i mappen c:\\windows\\system32. Node secret skapas automatiskt vid första lyckade authentiseringsförsöket.\r\nFörvirring uppstår lätt i och med att RSA SecurID delvis\r\nredan är inbyggt i ISA Server 2006. Det stämmer, men endast som web-filter. Ska\r\ndu använda en EAP-klient (d.v.s. skydda VPN) så måste du installera RSA SecurIDs egen EAP-klient\r\n(för närvarande i version 6.1), vilket kommer orsaka en krock (se nedan).\r\nISA Server är ju en brandvägg och har per\r\ndefinition därför flera nätverkskort. Det måste hanteras enligt följande:\"If ISA\r\nServer is configured with multiple network adapters and you create a Web\r\nlistener with RSA SecurID authentication enabled, you should explicitly\r\nconfigure the network adapter address through which ISA Server will connect to\r\nthe RSA Authentication Manager for authentication purposes. Otherwise, ISA\r\nServer may fail to perform SecurID authentication. Specify the IP address in\r\nregistry key HKEY_LOCAL_MACHINE\\SOFTWARE\\SDTI\\AceClient\\PrimaryInterfaceIP, as\r\na string value.\"(Från: http://www.microsoft.com/technet/isa/2006/authentication.mspx)\r\nEftersom ISA Server 2006 därmed i princip\r\nbestår av två agenter måste sdconf.rec även läggas i mappen c:\\program files\\Isa\r\nServer\\sdconf, vilket inte är dokumenterat. När man gör det rensas ”node\r\nsecret”-rutan i Authentication Manager och en autentisering görs via webbgänssnittet.\r\nDå får man felet ”node verification failed” i\r\nVPN-installationen (RSA Agent 6.1)... Detta löser du genom att köra ”clear\r\nnode secret” i RSA Security Center på din Agent (ISA-servern), och sedan\r\nkopiera tillbaka filen securid från mappen c:\\program files\\Isa Server\\sdconf till c:\\windows\\system32.\r\nVoila – både VPN och webbtjänster skyddade med RSA SecurID!\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/rsa.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/isa.png)", + "html": "
Uppdraget: Att skydda ditt nätverk med tvåfaktorauthentisering med RSA SecurID, inklusive VPN-kopplingar och webbtjänster som webbmail och affärssystem.
Några små problem kan dyka upp då du försöker använda
ISA Server 2006 som en Agent Host i RSA SecureID:
- Generellt vid installation av RSA SecurID Agent Hosts: Se
till att hosten är upplagd med rätt IP (den som ska kommunicera) i RSA
Authentication Manager. Se till att den är satt till typen NetOS, och
att host-secret-kryssrutan är okryssad. Generera och leverera filen
SDCONF.REC till dina Agent Hosts i mappen c:\\windows\\system32. Node secret skapas automatiskt vid första lyckade authentiseringsförsöket. - Förvirring uppstår lätt i och med att RSA SecurID delvis
redan är inbyggt i ISA Server 2006. Det stämmer, men endast som web-filter. Ska
du använda en EAP-klient (d.v.s. skydda VPN) så måste du installera RSA SecurIDs egen EAP-klient
(för närvarande i version 6.1), vilket kommer orsaka en krock (se nedan). - ISA Server är ju en brandvägg och har per
definition därför flera nätverkskort. Det måste hanteras enligt följande:
\"If ISA
Server is configured with multiple network adapters and you create a Web
listener with RSA SecurID authentication enabled, you should explicitly
configure the network adapter address through which ISA Server will connect to
the RSA Authentication Manager for authentication purposes. Otherwise, ISA
Server may fail to perform SecurID authentication. Specify the IP address in
registry key HKEY_LOCAL_MACHINE\\SOFTWARE\\SDTI\\AceClient\\PrimaryInterfaceIP, as
a string value.\"
(Från: http://www.microsoft.com/technet/isa/2006/authentication.mspx) - Eftersom ISA Server 2006 därmed i princip
består av två agenter måste sdconf.rec även läggas i mappen c:\\program files\\Isa
Server\\sdconf, vilket inte är dokumenterat. När man gör det rensas ”node
secret”-rutan i Authentication Manager och en autentisering görs via webbgänssnittet. - Då får man felet ”node verification failed” i
VPN-installationen (RSA Agent 6.1)... Detta löser du genom att köra ”clear
node secret” i RSA Security Center på din Agent (ISA-servern), och sedan
kopiera tillbaka filen securid från mappen c:\\program files\\Isa Server\\sdconf till c:\\windows\\system32.
Voila – både VPN och webbtjänster skyddade med RSA SecurID!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1090, + "created_at": 1190653740000, + "created_by": 1090, + "updated_at": 1190653740000, + "updated_by": 1090, + "published_at": 1190653740000, + "published_by": 1090 + }, + { + "id": 116, + "title": "Varning: Allvarligt fel i Excel 2007!", + "slug": "varning-allvarligt-fel-i-excel-2007", + "markdown": "\r\nI Excel 2007 finns en bugg som gör att alla multiplikationer som slutar upp i 65 535\r\nistället blir 100 000. Detta är ett potentiellt väldigt allvarligt fel med tanke på hur mycket data som\r\nvanligen ligger i Excel runt om på företag. Det är också extra lömskt eftersom det är svårt att själv upptäcka att det här felet har smugit sig in i en av ens kalkyler.\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/excel.png)", + "html": "
I Excel 2007 finns en bugg som gör att alla multiplikationer som slutar upp i 65 535
istället blir 100 000. Detta är ett potentiellt väldigt allvarligt fel med tanke på hur mycket data som
vanligen ligger i Excel runt om på företag. Det är också extra lömskt eftersom det är svårt att själv upptäcka att det här felet har smugit sig in i en av ens kalkyler.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1086, + "created_at": 1190736960000, + "created_by": 1086, + "updated_at": 1190736960000, + "updated_by": 1086, + "published_at": 1190736960000, + "published_by": 1086 + }, + { + "id": 123, + "title": "Installation av SQL Server 2005 krockar med Office 2003 Web Components", + "slug": "installation-av-sql-server-2005-krockar-med-office-2003-web-components", + "markdown": "\r\n\r\n\r\n\r\n\r\n\r\nIdag sprang jag på ett ganska långsökt problem vid installation\r\nav SQL Server 2005: tydligen går det inte att inte att installera SQL Server om Office\r\n2003 Web Components (OWC11) redan är installerat. \r\n\r\nKontrollen inför installationen visade helt snällt att allt som\r\nbehövdes fanns på plats och installationen gick igång som den skulle, men ganska snabbt\r\nmisslyckas installationen av OWC11 och således även andra viktiga delar av\r\ninstallationen (SQL Server Database Services tex.).\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/sqlinstall.png)\r\n\r\nFelet som loggas i setuploggen lyder:\r\n\r\n\r\nMachine:Product: OWC11Error: Error 1706. Setup cannot find the required files. Check your connection to the network, or CD-ROM drive. For other potential solutions to this\r\nproblem, see C:\\Program Files\\Microsoft Office\\OFFICE11\\1033\\SETUP.CHM.\r\n\r\n\r\nLösningen är ganska enkel: avinstallera ”Office Web Components\r\n2003” och kör SQL-installationen igen.\r\n\r\n", + "html": "
Idag sprang jag på ett ganska långsökt problem vid installation
av SQL Server 2005: tydligen går det inte att inte att installera SQL Server om Office
2003 Web Components (OWC11) redan är installerat.
Kontrollen inför installationen visade helt snällt att allt som
behövdes fanns på plats och installationen gick igång som den skulle, men ganska snabbt
misslyckas installationen av OWC11 och således även andra viktiga delar av
installationen (SQL Server Database Services tex.).
Felet som loggas i setuploggen lyder:
Machine:
Product: OWC11
Error: Error 1706. Setup cannot find the required files. Check your connection to the network, or CD-ROM drive. For other potential solutions to this
problem, see C:\\Program Files\\Microsoft Office\\OFFICE11\\1033\\SETUP.CHM.
Lösningen är ganska enkel: avinstallera ”Office Web Components
2003” och kör SQL-installationen igen.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1192030440000, + "created_by": 1085, + "updated_at": 1192030440000, + "updated_by": 1085, + "published_at": 1192030440000, + "published_by": 1085 + }, + { + "id": 128, + "title": "Vistabugg orsakar minnesproblem vid filkopiering", + "slug": "vistabugg-orsakar-minnesproblem-vid-filkopiering", + "markdown": "\r\n\r\n\r\nJag har vid några tillfällen stött på problemet att Vista inte kan kopiera stora filer från vår filserver. Operativsystemet klagar på att det inte finns något minne vilket är konstigt iom att vi sitter på ganska kraftfulla datorer.\r\n\r\n\r\nLite research ledde dock till att jag läste att det mycket riktigt är en bugg i Vista (problem med OLE-aktiveringen i Explorer). Microsoft har släppt en hotfix men dyker inte ännu inte upp i de automatiska uppdateringarna:\r\n\r\n\r\n\r\nhttp://support.microsoft.com/kb/942435/en-us\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/vista.png)", + "html": "
Jag har vid några tillfällen stött på problemet att Vista inte kan kopiera stora filer från vår filserver. Operativsystemet klagar på att det inte finns något minne vilket är konstigt iom att vi sitter på ganska kraftfulla datorer.
Lite research ledde dock till att jag läste att det mycket riktigt är en bugg i Vista (problem med OLE-aktiveringen i Explorer). Microsoft har släppt en hotfix men dyker inte ännu inte upp i de automatiska uppdateringarna:
http://support.microsoft.com/kb/942435/en-us
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Vistabugg orsakar minnesproblem vid filkopiering", + "meta_description": "", + "author_id": 1086, + "created_at": 1192724220000, + "created_by": 1086, + "updated_at": 1192724220000, + "updated_by": 1086, + "published_at": 1192724220000, + "published_by": 1086 + }, + { + "id": 133, + "title": "Gratisversion av SQL Server Management Studio", + "slug": "gratisversion-av-sql-server-management-studio", + "markdown": "\r\n\r\n\r\nMed SQL Server 2005 får man administrationsverktyget SQL Server Management Studio, där man kan hantera data, skapa databaser, hantera backuper, inloggningar, stored procedures o.s.v. Management Studio är en sammanslagning av Enterprise Manager och Query Analyzer från tidigare versioner av SQL Server.\r\n\r\n\r\nOm man installerar gratisversionen SQL Server 2005 Express så har man tidigare inte fått något administrationsverktyg. Det finns ett enklare verktyg i Visual Studio, men det är inte så lättjobbat och har inte alla funktioner. Man kan installera SQL Server Management Studio från en skarp SQL Server-skiva, men det är antagligen inte helt i enlighet med licensreglerna.\r\n\r\n\r\nSom tur är finns nu även Management Studio i en gratisversion, följdriktigt döpt till SQL Server Management Studio Express. Den innehåller allt som riktiga MS gör, med undantag för att man inte kan administrera:\r\n\r\n\r\nAnalysis Services\r\nIntegration Services (import och export av data)\r\nNotification Services\r\nReport Builder\r\nSQL Agent\r\nDatabase Tuning Advisor\r\nFull-text search\r\nMaintenance plans\r\nLog shipping\r\n\r\n\r\nAllt annat funkar som vanligt. Kort sagt ett perfekt verktyg för en utvecklare som vill administrera SQL Servrar från sin vanliga arbetsstation eller hantera en SQL Server 2005 Express på sin utvecklingsdator. Ladda ner här: http://www.microsoft.com/downloads/details.aspx?FamilyId=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796&displaylang=en\r\n\r\n\r\nPS. Management Studio Express har funnits ute ett tag, men jag hade helt missat att den fanns. DS.\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/29366_figure1_big.jpg)", + "html": "
Med SQL Server 2005 får man administrationsverktyget SQL Server Management Studio, där man kan hantera data, skapa databaser, hantera backuper, inloggningar, stored procedures o.s.v. Management Studio är en sammanslagning av Enterprise Manager och Query Analyzer från tidigare versioner av SQL Server.
Om man installerar gratisversionen SQL Server 2005 Express så har man tidigare inte fått något administrationsverktyg. Det finns ett enklare verktyg i Visual Studio, men det är inte så lättjobbat och har inte alla funktioner. Man kan installera SQL Server Management Studio från en skarp SQL Server-skiva, men det är antagligen inte helt i enlighet med licensreglerna.
Som tur är finns nu även Management Studio i en gratisversion, följdriktigt döpt till SQL Server Management Studio Express. Den innehåller allt som riktiga MS gör, med undantag för att man inte kan administrera:
- Analysis Services
- Integration Services (import och export av data)
- Notification Services
- Report Builder
- SQL Agent
- Database Tuning Advisor
- Full-text search
- Maintenance plans
- Log shipping
Allt annat funkar som vanligt. Kort sagt ett perfekt verktyg för en utvecklare som vill administrera SQL Servrar från sin vanliga arbetsstation eller hantera en SQL Server 2005 Express på sin utvecklingsdator. Ladda ner här: http://www.microsoft.com/downloads/details.aspx?FamilyId=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796&displaylang=en
PS. Management Studio Express har funnits ute ett tag, men jag hade helt missat att den fanns. DS.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "ess. Nu har även Management Studio kommit i Expressversion - och den har allt det man behöver i dagligt arbete!", + "author_id": 6, + "created_at": 1193327580000, + "created_by": 6, + "updated_at": 1193327580000, + "updated_by": 6, + "published_at": 1193327580000, + "published_by": 6 + }, + { + "id": 156, + "title": "Öppna TIFF-bilder med Adobe Acrobat istället för Windows faxvisare", + "slug": "oppna-tiff-bilder-med-adobe-acrobat-istallet-for-windows-faxvisare", + "markdown": "\r\n\r\n\r\nMånga faxservrar levererar automatiskt inskannade fax som TIFF-filer. Stödet för att visa TIFF-filer i Windows är dock ganska föråldrat och saknar många funktioner. Man kan inte använda vilken bildvisare som helst, eftersom TIFF-filer kan innehålla flera sidor. Däremot kan man använda Adobe Acrobat (det är köpversionen som gäller, tyvärr räcker inte gratisversionen Adobe Reader). En bonus är att filen automatiskt konverteras till PDF-format när man sparar den i Acrobat. PDF är ett enklare format att hantera och man vara säkrare på att det kommer att fungera om man skickar filen vidare till någon annan.\r\n\r\n\r\nGör såhär för att ändra filassociationen i Windows:\r\n\r\n\r\nHögerklicka på en TIFF-fil\r\nVälj Öppna med -> Välj program (Välj standardprogram i Vista)\r\nVälj Adobe Acrobat. Om Acrobat inte visas i listan, tryck på Bläddra och leta fram programfilen i program-katalogen.\r\nKryssa i rutan Använd alltid det här programmet för att öppna den här filtypen\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/fax.png)", + "html": "
Många faxservrar levererar automatiskt inskannade fax som TIFF-filer. Stödet för att visa TIFF-filer i Windows är dock ganska föråldrat och saknar många funktioner. Man kan inte använda vilken bildvisare som helst, eftersom TIFF-filer kan innehålla flera sidor. Däremot kan man använda Adobe Acrobat (det är köpversionen som gäller, tyvärr räcker inte gratisversionen Adobe Reader). En bonus är att filen automatiskt konverteras till PDF-format när man sparar den i Acrobat. PDF är ett enklare format att hantera och man vara säkrare på att det kommer att fungera om man skickar filen vidare till någon annan.
Gör såhär för att ändra filassociationen i Windows:
- Högerklicka på en TIFF-fil
- Välj Öppna med -> Välj program (Välj standardprogram i Vista)
- Välj Adobe Acrobat. Om Acrobat inte visas i listan, tryck på Bläddra och leta fram programfilen i program-katalogen.
- Kryssa i rutan Använd alltid det här programmet för att öppna den här filtypen
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "finns dock en mycket bättre lösning!", + "author_id": 1087, + "created_at": 1197300780000, + "created_by": 1087, + "updated_at": 1197300780000, + "updated_by": 1087, + "published_at": 1197300780000, + "published_by": 1087 + }, + { + "id": 162, + "title": "Relaying i Exchange 2007", + "slug": "relaying-i-exchange-2007", + "markdown": "\r\n\r\n\r\nAtt tillåta interna system att sända epost via en Exchangeserver har gått ifrån att vara något väldigt enkelt (och lätt att missbruka) i Exchange 2003 till att vara ganska mycket mer komplicerat i Exchange 2007.\r\n\r\n\r\nGrundregeln när det gäller relaying i Exchange 2007 är \"använd det endast om ingen annan möjlighet finns\". Alltså: Om er mjukvara, skrivare, användare etc som behöver skicka mail via Exchangservern stödjer SMTP autentiering, så skall detta alltid användas hellre än att börja öppna för relaying.\r\n\r\n\r\nIbland måste man dock ändå öppna upp för relaying och då gäller det att hålla tungan rätt i mun så att man inte råkar öppna för mycket. Exchangeteamet har en utmärkt guide för bästa tillvägagångssätt på sin blog (You had me at EHLO):\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/exchange2007.png)", + "html": "
Att tillåta interna system att sända epost via en Exchangeserver har gått ifrån att vara något väldigt enkelt (och lätt att missbruka) i Exchange 2003 till att vara ganska mycket mer komplicerat i Exchange 2007.
Grundregeln när det gäller relaying i Exchange 2007 är \"använd det endast om ingen annan möjlighet finns\". Alltså: Om er mjukvara, skrivare, användare etc som behöver skicka mail via Exchangservern stödjer SMTP autentiering, så skall detta alltid användas hellre än att börja öppna för relaying.
Ibland måste man dock ändå öppna upp för relaying och då gäller det att hålla tungan rätt i mun så att man inte råkar öppna för mycket. Exchangeteamet har en utmärkt guide för bästa tillvägagångssätt på sin blog (You had me at EHLO):
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "hange 2007.", + "author_id": 1085, + "created_at": 1198165800000, + "created_by": 1085, + "updated_at": 1198165800000, + "updated_by": 1085, + "published_at": 1198165800000, + "published_by": 1085 + }, + { + "id": 163, + "title": "Koppla EOS300D till en dator med Windows Vista", + "slug": "koppla-eos300d-till-en-dator-med-windows-vista", + "markdown": "\r\n\r\n\r\nNär jag installerade Windows Vista på min nya dator hemma för ganska precis ett år sen var det första problemet jag stötte på att datorn inte kände igen min systemkamera, Canon EOS 300D, när man kopplade den till datorn via USB-sladd. Till min stora förvåning så har Canon valt att inte släppa några Vista-drivrutiner för den (däremot finns det för alla senare modeller, från och med EOS 350D). Eftersom min dator har en kortläsare för CF-kort var det inget problem. Det blev större problem på semestern med en laptop med Vista utan kortläsare.\r\n\r\n\r\nSom tur är så finns det en lösning. Kameran har ett enklare USB-läge som kallas PTP. I menyn Setup2 finns en inställning för kommunikationsläge - ändra det från Normal till PTP. Kameran fungerar då mer som en extern hårddisk - den vänder t.ex. inte själv bilder och annat som den gör i normalläget, men den fungerar åtminstone.\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/blackeos300d.png)", + "html": "
När jag installerade Windows Vista på min nya dator hemma för ganska precis ett år sen var det första problemet jag stötte på att datorn inte kände igen min systemkamera, Canon EOS 300D, när man kopplade den till datorn via USB-sladd. Till min stora förvåning så har Canon valt att inte släppa några Vista-drivrutiner för den (däremot finns det för alla senare modeller, från och med EOS 350D). Eftersom min dator har en kortläsare för CF-kort var det inget problem. Det blev större problem på semestern med en laptop med Vista utan kortläsare.
Som tur är så finns det en lösning. Kameran har ett enklare USB-läge som kallas PTP. I menyn Setup2 finns en inställning för kommunikationsläge - ändra det från Normal till PTP. Kameran fungerar då mer som en extern hårddisk - den vänder t.ex. inte själv bilder och annat som den gör i normalläget, men den fungerar åtminstone.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1199269200000, + "created_by": 6, + "updated_at": 1199269200000, + "updated_by": 6, + "published_at": 1199269200000, + "published_by": 6 + }, + { + "id": 166, + "title": "GPMC SP1 i Windows Server 2003 x64", + "slug": "gpmc-sp1-i-windows-server-2003-x64", + "markdown": "\r\n\r\n\r\n\r\n\r\nVARNING: En bloggbesökare har rapporterat att nedanstående kan ställa till bekymmer på en server som kör Exchange 2007. Jag har visserligen själv gjort nedanstående på Exchangemaskiner utan problem, men en varning känns ändå rättfärdigad.\r\n\r\n\r\n\r\n\r\nNågot år efter att Windows Server 2003 släpptes kom ett servicepack till Group Policy Management Console (GPMC) som gör hanteringen av grupprinciper mycket enklare. I Windows 2003 R2 ligger denna editor med som standard, men använder du 64-bitarsversionen av Windows Server 2003 så finns dock den \"nya\" editorn inte installerad. Och att få den på plats är varken enkelt eller självklart, men det går!\r\n\r\n\r\nLadda ner och installera .NET Framework 1.1. Glöm inte all läsa instruktionen som kan be dig köra ett kommando för att tillåta 32-bitars applikationer i IIS.\r\n\r\n\r\nLadda ner och installera Group Policy Management Console SP1.\r\n\r\n\r\nNär detta är gjort måste man manuellt kopiera gpmc.msc från \"%windir%\\system32\\\" till \"%windir%\\syswow64\\\".\r\n\r\n\r\nJag föredrar att starta GPMC från AD Users and Computers, för att få dem möjligheten måste jag skapa en ny genväg som startar ADUC i 32-bitarsläge:\r\n\r\n\r\n%windir%\\syswow64\\mmc.exe %systemroot%\\system32\\dsa.msc -32 back\r\n\r\n\r\nProblemet beror på lite virrvarr mellan 32 och 64-bitars versioner av MMC-snapins. Förhoppningsvis får vi en bättre lösning i ett framtida Adminpak till Windows Server 2003 x64, alternativt i Windows Server 2008.\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/windows2003logo.jpg)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/gpmcsp1.gif)", + "html": "
VARNING: En bloggbesökare har rapporterat att nedanstående kan ställa till bekymmer på en server som kör Exchange 2007. Jag har visserligen själv gjort nedanstående på Exchangemaskiner utan problem, men en varning känns ändå rättfärdigad.
Något år efter att Windows Server 2003 släpptes kom ett servicepack till Group Policy Management Console (GPMC) som gör hanteringen av grupprinciper mycket enklare. I Windows 2003 R2 ligger denna editor med som standard, men använder du 64-bitarsversionen av Windows Server 2003 så finns dock den \"nya\" editorn inte installerad. Och att få den på plats är varken enkelt eller självklart, men det går!
Ladda ner och installera .NET Framework 1.1. Glöm inte all läsa instruktionen som kan be dig köra ett kommando för att tillåta 32-bitars applikationer i IIS.
Ladda ner och installera Group Policy Management Console SP1.
När detta är gjort måste man manuellt kopiera gpmc.msc från
\"%windir%\\system32\\\" till \"%windir%\\syswow64\\\".
Jag föredrar att starta GPMC från AD Users and Computers, för att få dem möjligheten måste jag skapa en ny genväg som startar ADUC i 32-bitarsläge:
%windir%\\syswow64\\mmc.exe %systemroot%\\system32\\dsa.msc -32 back
Problemet beror på lite virrvarr mellan 32 och 64-bitars versioner av MMC-snapins. Förhoppningsvis får vi en bättre lösning i ett framtida Adminpak till Windows Server 2003 x64, alternativt i Windows Server 2008.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "te installerad. Och att få den på plats inte speciellt enkelt, men det går!", + "author_id": 1085, + "created_at": 1199723700000, + "created_by": 1085, + "updated_at": 1199723700000, + "updated_by": 1085, + "published_at": 1199723700000, + "published_by": 1085 + }, + { + "id": 172, + "title": "IE7 ikon på skrivbordet i Vista", + "slug": "ie7-ikon-pa-skrivbordet-i-vista", + "markdown": "\r\n\r\n\r\nI tidigare versioner av Windows var det enkelt att lägga en snygg IE-ikon (utan genvägspil) på skrivbordet via skrivbordsinställningarna under kontrollpanelen. I Vista saknas dock denna möjlighet vilket endast lämnar användaren med möjligheten att\r\nskapa en vanlig genväg till IE.\r\n\r\n\r\n\r\n\r\nFör att få in den\r\n\"riktiga\" IE ikonen även i Vista skapar man följande nyckel i registret:\r\n\r\n\r\n\r\n[HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\HideDesktopIcons\\NewStartPanel]\r\n\"{871C5380-42A0-1069-A2EA-08002B30309D}\" (DWORD:0)\r\n\r\n\r\n(Iakta sedvanlig försiktighet när du arbetar i registret.)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/internetexplorer.gif)", + "html": "
I tidigare versioner av Windows var det enkelt att lägga en snygg IE-ikon (utan genvägspil) på skrivbordet via skrivbordsinställningarna under kontrollpanelen. I Vista saknas dock denna möjlighet vilket endast lämnar användaren med möjligheten att
skapa en vanlig genväg till IE.
För att få in den
\"riktiga\" IE ikonen även i Vista skapar man följande nyckel i registret:
[HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\HideDesktopIcons\\NewStartPanel]
\"{871C5380-42A0-1069-A2EA-08002B30309D}\" (DWORD:0)
(Iakta sedvanlig försiktighet när du arbetar i registret.)
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "et endast lämnar användaren med möjligheten att skapa en vanlig ikon till IE. Så här får du en \"riktig\" IE7 ikon i Vista...", + "author_id": 1085, + "created_at": 1200584460000, + "created_by": 1085, + "updated_at": 1200584460000, + "updated_by": 1085, + "published_at": 1200584460000, + "published_by": 1085 + }, + { + "id": 173, + "title": "Nätverksproblem hos Dell Optiplex 755", + "slug": "natverksproblem-hos-dell-optiplex-755", + "markdown": "\r\n\r\n\r\nDells stationära modell Optiplex 755 har i\r\nmånga fall nätverksproblem efter att Dell bytte leverantör av nätverkskort från Broadcom till Intel. Problemet visar sig i att datorn ofta rapporterar att Nätverkskabeln ej är ansluten. Nätverkskontakten återupprättas efter några sekunder.\r\n\r\n\r\nDell har ännu inte åtgärdat\r\nproblemet men de har gått ut med ett tips att inaktivera State Control (kontrollen av mediastatus):\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nStarta om datorn och håll tryck CTRL+P vid IntelBIOS för att komma in i MEBx (Intel® Management Engine BIOS Extension)\r\nStandardlösenordet är “admin”\r\nVälj ”Change Intel(R) ME Password”\r\nDet nya lösenordet du väljer måste vara tämligen avancerat (åtta bokstäver, små och stora, en siffra och slutligen ett tecken.)\r\nNär du har valt ditt lösenord öppnar du ”Intel(R) ME Configuration”\r\n\r\nVälj “Intel(R) State Control”\r\nVälj “Disable”\r\nDatorn startar om sig och problemet är i bästa fall avhjälpt.\r\n\r\nVissa har även fått rådet av Dell att stänga av Flow control i egenskaperna för nätverkskortet (under avancerat).\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/optiplex755.png)", + "html": "
Dells stationära modell Optiplex 755 har i
många fall nätverksproblem efter att Dell bytte leverantör av nätverkskort från Broadcom till Intel. Problemet visar sig i att datorn ofta rapporterar att Nätverkskabeln ej är ansluten. Nätverkskontakten återupprättas efter några sekunder.
Dell har ännu inte åtgärdat
problemet men de har gått ut med ett tips att inaktivera State Control (kontrollen av mediastatus):
Vissa har även fått rådet av Dell att stänga av Flow control i egenskaperna för nätverkskortet (under avancerat).
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": " ansluten”. Nätverkskontakten återupprättas efter några sekunder. Här är lite tips på åtgärder.", + "author_id": 1088, + "created_at": 1201096440000, + "created_by": 1088, + "updated_at": 1201096440000, + "updated_by": 1088, + "published_at": 1201096440000, + "published_by": 1088 + }, + { + "id": 175, + "title": "Inaktivitetslås på SE M600i efter uppgradering till Exchange 2007 SP1", + "slug": "inaktivitetslas-pa-se-m600i-efter-uppgradering-till-exchange-2007-sp1", + "markdown": "\r\n\r\n\r\nNär man uppgraderar Exchange Server 2007 till SP1 läggs det automatiskt till en policy för säkerhetsinställningar på telefoner som synkroniserar med Active Sync. Oavsett vilken inställning man gör i denna så aktiveras ett inaktivitetslås på M600i som inte går att avaktivera. Här är en workararound...\r\n\r\n\r\nFör att avaktivera inaktivitetslåset på M600i krävs \"dessvärre\" följande:\r\n\r\n\r\n1. Ta bort Defaultpolicyn i Exchange 2007\r\nDetta kan bara göras via Management Shell. Kommandot är:\r\n\r\n\r\nRemove-ActiveSyncMailboxPolicy -identity \"Default\"\r\n\r\n\r\nNotera att användaren med en M600i inte är associerad med någon annan policy, tricket är att användaren inte får vara kopplad till en policy. om användaren ligger kopplad på en annan policy kan du flytta den till en temporär policy som du sedan tar bort. Du kontrollerar detta via användarens mailbox (properties på Active Sync från användarens brevlåda).\r\n\r\n\r\n2. Starta om IIS (\"iisreset\" från kommandoraden)\r\n\r\n\r\n3. I telefonen går du sedan in i Active Sync och väljer att tömma all lokal Exchangedata (under Avancerat-fliken). Kontrollera också att du har senaste versionen av AS (fn. 2.012), uppgradera annars från SE:s hemsida.\r\n\r\n\r\n4. Kör en synkronisering\r\n\r\n\r\n5. Starta om telefonen\r\n\r\n\r\n6. Avaktivera inaktivitetslåset från kontrollpanelen->Säkerhet\r\n\r\n\r\nNackdelen med denna modell är att man inte kan ha en defaultpolicy på servern så länge som man vill ha M600i i sin organaisation. SonyEricsson P1i uppvisar samma problem, men här finns en firmwareuppgradering som löser problemet.\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/sem600i.png)", + "html": "
När man uppgraderar Exchange Server 2007 till SP1 läggs det automatiskt till en policy för säkerhetsinställningar på telefoner som synkroniserar med Active Sync. Oavsett vilken inställning man gör i denna så aktiveras ett inaktivitetslås på M600i som inte går att avaktivera. Här är en workararound...
För att avaktivera inaktivitetslåset på M600i krävs \"dessvärre\" följande:
1. Ta bort Defaultpolicyn i Exchange 2007
Detta kan bara göras via Management Shell. Kommandot är:
Remove-ActiveSyncMailboxPolicy -identity \"Default\"
Notera att användaren med en M600i inte är associerad med någon annan policy, tricket är att användaren inte får vara kopplad till en policy. om användaren ligger kopplad på en annan policy kan du flytta den till en temporär policy som du sedan tar bort. Du kontrollerar detta via användarens mailbox (properties på Active Sync från användarens brevlåda).
2. Starta om IIS (\"iisreset\" från kommandoraden)
3. I telefonen går du sedan in i Active Sync och väljer att tömma all lokal Exchangedata (under Avancerat-fliken). Kontrollera också att du har senaste versionen av AS (fn. 2.012), uppgradera annars från SE:s hemsida.
4. Kör en synkronisering
5. Starta om telefonen
6. Avaktivera inaktivitetslåset från kontrollpanelen->Säkerhet
Nackdelen med denna modell är att man inte kan ha en defaultpolicy på servern så länge som man vill ha M600i i sin organaisation. SonyEricsson P1i uppvisar samma problem, men här finns en firmwareuppgradering som löser problemet.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "enna så aktiveras ett inaktivitetslås på M600i som inte går att avaktivera. Här är en workararound...", + "author_id": 1085, + "created_at": 1201518900000, + "created_by": 1085, + "updated_at": 1201518900000, + "updated_by": 1085, + "published_at": 1201518900000, + "published_by": 1085 + }, + { + "id": 181, + "title": "Indexera och söka i PDF-filer i SharePoint", + "slug": "indexera-och-soka-i-pdf-filer-i-sharepoint", + "markdown": "\r\n\r\n\r\nMicrosoft Office SharePoint Server (MOSS) 2007 måste kompletteras för att möjliggöra sökning i PDF-filer.\r\n\r\n\r\nLättaste och modernaste stödet får man genom att använda det ifilter som följer med senaste versionen (eller åtminstone senare än 8.1) av Acrobat Reader.\r\n\r\n\r\nInstallera Acrobat Reader.\r\nStäll in i Sharepoint att även inkludera PDF-filer i sökningen:\r\n> SharePoint 3.0 Central Administration -> Search Settings -> File Types -> New File Type (Lägg till pdf här)\r\n\r\nÄndra följande registerinställning: (ta alltid en backup och se upp när du ändrar i registret)\r\nHKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Office server\\12.0\\Search\\Setup\\ContentIndexCommon\\Filters\\Extension\\.pdf\r\nDefault -> {E8978DA6-047F-4E3D-9C78-CDBE46041603}\r\nLägg till mappen för Acrobat Reader (ex: ”c:\\Program Files\\Adobe\\Reader 8.0\\Reader”) till System Path (högerklick på den här datorn, egenskaper, avancerat, systemvariabler).\r\nStarta om söktjänsten (net stop osearch / net start osearch)\r\nLåt Sharepoint indexera om innehållet.\r\nKlart!\r\n\r\n\r\n\r\nOBS:\r\nHar du installerat SharePoint på en 64-bitarsplattform blir det hela ett snäpp knepigare, men det är inte omöjligt! Stödet för 64-bitars ifilter (krävs för 64-bitars SharePoint) finns inte med i Acrobat Reader per default utan måste installeras enligt en blogg hos Adobe:http://labs.adobe.com/wiki/index.php/PDF_iFilter_8_-_64-bit_Support\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/office2007logo.png)", + "html": "
Microsoft Office SharePoint Server (MOSS) 2007 måste kompletteras för att möjliggöra sökning i PDF-filer.
Lättaste och modernaste stödet får man genom att använda det ifilter som följer med senaste versionen (eller åtminstone senare än 8.1) av Acrobat Reader.
- Installera Acrobat Reader.
- Ställ in i Sharepoint att även inkludera PDF-filer i sökningen:
> SharePoint 3.0 Central Administration -> Search Settings -> File Types -> New File Type (Lägg till pdf här)
Ändra följande registerinställning: (ta alltid en backup och se upp när du ändrar i registret)
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Office server\\12.0\\Search\\Setup\\ContentIndexCommon\\Filters\\Extension\\.pdf
Default -> {E8978DA6-047F-4E3D-9C78-CDBE46041603}- Lägg till mappen för Acrobat Reader (ex: ”c:\\Program Files\\Adobe\\Reader 8.0\\Reader”) till System Path (högerklick på den här datorn, egenskaper, avancerat, systemvariabler).
- Starta om söktjänsten (net stop osearch / net start osearch)
- Låt Sharepoint indexera om innehållet.
- Klart!
OBS:
Har du installerat SharePoint på en 64-bitarsplattform blir det hela ett snäpp knepigare, men det är inte omöjligt! Stödet för 64-bitars ifilter (krävs för 64-bitars SharePoint) finns inte med i Acrobat Reader per default utan måste installeras enligt en blogg hos Adobe:
http://labs.adobe.com/wiki/index.php/PDF_iFilter_8_-_64-bit_Support
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1090, + "created_at": 1202817540000, + "created_by": 1090, + "updated_at": 1202817540000, + "updated_by": 1090, + "published_at": 1202817540000, + "published_by": 1090 + }, + { + "id": 183, + "title": "Konsolåtkomst med Remote Desktop i Vista SP1", + "slug": "konsolatkomst-med-remote-desktop-i-vista-sp1", + "markdown": "\r\n\r\n\r\nEfter att ha uppgraderat till Vista SP1 så märker man snabbt att klienten för Remote Desktop fått ganska mycket ny funktionalitet. Tex så finner man stöd för TS Gateway (kommande funktion i Windows Server 2008) samt en bättre hantering av autentiering.\r\n\r\n\r\nDock blev jag snabbt rädd när jag upptäckte att möjligheten få tillgång till konsolsessionen på en fjärrserver genom att skicka med switchen /console inte längre fungerade. Dock visar det sig att funktionen finns kvar men att kommandoraden är numera mstsc.exe /admin.\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/vista.png)", + "html": "
Efter att ha uppgraderat till Vista SP1 så märker man snabbt att klienten för Remote Desktop fått ganska mycket ny funktionalitet. Tex så finner man stöd för TS Gateway (kommande funktion i Windows Server 2008) samt en bättre hantering av autentiering.
Dock blev jag snabbt rädd när jag upptäckte att möjligheten få tillgång till konsolsessionen på en fjärrserver genom att skicka med switchen /console inte längre fungerade. Dock visar det sig att funktionen finns kvar men att kommandoraden är numera mstsc.exe /admin.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1203680400000, + "created_by": 1085, + "updated_at": 1203680400000, + "updated_by": 1085, + "published_at": 1203680400000, + "published_by": 1085 + }, + { + "id": 186, + "title": "Så får man Outlook 2007 att sluta fråga om certifikat", + "slug": "sa-far-man-outlook-2007-att-sluta-fraga-om-certifikat", + "markdown": "\r\n\r\n\r\nGrundförutsättningar:\r\n\r\n\r\nDu använder Outlook Web Access via HTTPS på en domän, t.ex. mail.company.com\r\nDina användare ansluter med Outlook 2007 RPC HTTPS\r\nDina användare får ett felmeddelande om att det är problem med ett certifikat, som de behöver trycka ”ja” på varje gång.\r\n\r\n\r\nFelmeddelandet handlar egentligen om att Outlook försöker hitta inställningar för automatisk konfiguration (Autodiscover). Detta är ju egentligen en bra funktion, som du kan ha användning för både internt och externt i företaget.Så här gör du enklast för att slå på Outlook Autodiscover, och samtidigt slippa felmeddelandet om certifikatproblem:\r\n\r\n\r\n\r\nGet-ClientAccessServer -Identity SERVER_INTERNAL_NAME | FLSet-ClientAccessServer -Identity SERVER_INTERNAL_NAME -AutoDiscoverServiceInternalUri https://mail.company.com/Autodiscover/Autodiscover.xml\r\n\r\n\r\n\r\nOch så till själva tricket: För att slippa installera ett certifikat med två namn (autodiscover.company.com samt mail.company.com) ställer vi in SRV-records i vår externa DNS enligt följande:\r\n\r\n\r\n\r\nService: _autodiscoverProtocol: _tcpPort Number: 443Host: mail.company.com\r\n\r\n\r\n\r\nMer om detta finns att läsa på:\r\n\r\n\r\n\r\nhttp://www.shudnow.net/2007/08/10/outlook-2007-certificate-error/\r\n\r\nhttp://support.microsoft.com/kb/940881/en-us\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/outlook-logo2.png)", + "html": "
Grundförutsättningar:
- Du använder Outlook Web Access via HTTPS på en domän, t.ex. mail.company.com
- Dina användare ansluter med Outlook 2007 RPC HTTPS
- Dina användare får ett felmeddelande om att det är problem med ett certifikat, som de behöver trycka ”ja” på varje gång.
Felmeddelandet handlar egentligen om att Outlook försöker hitta inställningar för automatisk konfiguration (Autodiscover). Detta är ju egentligen en bra funktion, som du kan ha användning för både internt och externt i företaget.
Så här gör du enklast för att slå på Outlook Autodiscover, och samtidigt slippa felmeddelandet om certifikatproblem:
Get-ClientAccessServer -Identity SERVER_INTERNAL_NAME | FL
Set-ClientAccessServer -Identity SERVER_INTERNAL_NAME -AutoDiscoverServiceInternalUri https://mail.company.com/Autodiscover/Autodiscover.xml
Och så till själva tricket: För att slippa installera ett certifikat med två namn (autodiscover.company.com samt mail.company.com) ställer vi in SRV-records i vår externa DNS enligt följande:
Service: _autodiscover
Protocol: _tcp
Port Number: 443
Host: mail.company.com
Mer om detta finns att läsa på:
http://www.shudnow.net/2007/08/10/outlook-2007-certificate-error/
http://support.microsoft.com/kb/940881/en-us
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "det!", + "author_id": 1090, + "created_at": 1204734420000, + "created_by": 1090, + "updated_at": 1204734420000, + "updated_by": 1090, + "published_at": 1204734420000, + "published_by": 1090 + }, + { + "id": 196, + "title": "Problem med Hyper-V efter RC0", + "slug": "problem-med-hyper-v-efter-rc0", + "markdown": "\r\n\r\n\r\nHyper-V är den nya virtualiserings- plattformen i Windows Server 2008. Produkten hann inte bli helt klart inför släppet av WS2k8, men skeppas ändå med i en betaversion. Härom veckan släpptes den första releasekandidaten (RC0) och efter installation visar det sig att man kan få problem med att lägga till nya virtuella maskiner. I mitt fall kunde jag skapa maskinerna, men när jag försökte starta dem fick jag följande felmeddelande:\r\n\r\n\r\n\r\nMicrosoft Synthetic Ethernet Port (Instance ID {9C5C0CF3-827C-4DB0-.....}): Failed to Power On with Error 'The specified network resource or device is no longer available.'\r\n\r\n\r\n\r\nLösningen på detta är att ge kontot NETWORK SERVICE \"Read & Execute\" rättigheter på mappen där config-filerna de virtuella maskinerna ligger.\r\n\r\n\r\nDetta lär förhoppningsvis vara åtgärdat i kommande releasekandidater.\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/vista.png)", + "html": "
Hyper-V är den nya virtualiserings- plattformen i Windows Server 2008. Produkten hann inte bli helt klart inför släppet av WS2k8, men skeppas ändå med i en betaversion. Härom veckan släpptes den första releasekandidaten (RC0) och efter installation visar det sig att man kan få problem med att lägga till nya virtuella maskiner. I mitt fall kunde jag skapa maskinerna, men när jag försökte starta dem fick jag följande felmeddelande:
Microsoft Synthetic Ethernet Port (Instance ID {9C5C0CF3-827C-4DB0-.....}): Failed to Power On with Error 'The specified network resource or device is no longer available.'
Lösningen på detta är att ge kontot NETWORK SERVICE \"Read & Execute\" rättigheter på mappen där config-filerna de virtuella maskinerna ligger.
Detta lär förhoppningsvis vara åtgärdat i kommande releasekandidater.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1207928400000, + "created_by": 1085, + "updated_at": 1207928400000, + "updated_by": 1085, + "published_at": 1207928400000, + "published_by": 1085 + }, + { + "id": 198, + "title": "FireShot - Smidigt Firefoxplugin för stora skärmdumpar", + "slug": "fireshot---smidigt-firefoxplugin-for-stora-skarmdumpar", + "markdown": "\r\n\r\n\r\nAtt skapa skärmdumpar med en webbsidas hela innehåll har alltid varit förknippat med en del trassel, framförallt när det gäller innehållet på väldigt vertikalt stora sidor som inte i sin helhet fått plats på skärmen. FireShot är ett gratis plugin till FireFox som löser problemet på ett mycket snyggt sätt.\r\n\r\n\r\nGenom att aktivera programmet får man en drös olika val om vad man vill exportera och till vilken destination (fil, clipboard, uppladdade till en server, förvald editor etc.), och resultatet blir glimrande!\r\n\r\n\r\nGenom den inbyggda editorn kan man enkelt lägga till kommentarer, pilar, text etc, vilket gör det väldigt smidigt att använda när man tex arbetar med korrektur.\r\n\r\n\r\nTillägget hämtas från Mozilla.\r\n\r\n\r\nTips: Bredden på den skärmdump man vill skapa ställs enklast in genom att justera Firefoxfönstret till önskad storlek.\r\n\r\n\r\n\r\nEtt annat Firefoxplugin som gör ungefär samma sak är Screengrab!\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/fireshot_logo.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/fireshot1.png)", + "html": "
Att skapa skärmdumpar med en webbsidas hela innehåll har alltid varit förknippat med en del trassel, framförallt när det gäller innehållet på väldigt vertikalt stora sidor som inte i sin helhet fått plats på skärmen. FireShot är ett gratis plugin till FireFox som löser problemet på ett mycket snyggt sätt.
Genom att aktivera programmet får man en drös olika val om vad man vill exportera och till vilken destination (fil, clipboard, uppladdade till en server, förvald editor etc.), och resultatet blir glimrande!
Genom den inbyggda editorn kan man enkelt lägga till kommentarer, pilar, text etc, vilket gör det väldigt smidigt att använda när man tex arbetar med korrektur.
Tillägget hämtas från Mozilla.
Tips: Bredden på den skärmdump man vill skapa ställs enklast in genom att justera Firefoxfönstret till önskad storlek.
Ett annat Firefoxplugin som gör ungefär samma sak är Screengrab!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1208183400000, + "created_by": 1085, + "updated_at": 1208183400000, + "updated_by": 1085, + "published_at": 1208183400000, + "published_by": 1085 + }, + { + "id": 200, + "title": "Huawei E220 + Activesync = Trubbel", + "slug": "huawei-e220--activesync--trubbel", + "markdown": "\r\n\r\n\r\nHuawei E220 är ett av de vanligast förekommande 3g-donglarna på marknaden och skickas ofta med mobila bredbandsabbonemang från teleoperatörerna. Efter att ha installerat den medföljande programvaran Mobile Connect i Windows XP kan man dock få problem om man också använder windowsversionen av Activesync (v4 och senare). Vid försök till synkronisering ger AS följande felprompt:\r\n\r\n\r\n\r\nCritical communications services have failed to start. To correct the error, quit all programs and restart Windows.\r\n\r\n\r\n\r\nFelet verkar ligga i att någonting i E220-mjukvaran (drivern eller Mobile Connect) hindrar AS från att starta sitt kommunikationsprotokoll RAPI. Jag lyckades lösa problemet genom att ändra följande parameter i registeret från 1 till 0:\r\n\r\n\r\nHKLM\\SYSTEM\\CurrentControlSet\\Services\\AFD\\Parameters\r\nDisable Address Sharing DWORD 0x00000000 (0)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/huaweie220.png)", + "html": "
Huawei E220 är ett av de vanligast förekommande 3g-donglarna på marknaden och skickas ofta med mobila bredbandsabbonemang från teleoperatörerna. Efter att ha installerat den medföljande programvaran Mobile Connect i Windows XP kan man dock få problem om man också använder windowsversionen av Activesync (v4 och senare). Vid försök till synkronisering ger AS följande felprompt:
Critical communications services have failed to start. To correct the error, quit all programs and restart Windows.
Felet verkar ligga i att någonting i E220-mjukvaran (drivern eller Mobile Connect) hindrar AS från att starta sitt kommunikationsprotokoll RAPI. Jag lyckades lösa problemet genom att ändra följande parameter i registeret från 1 till 0:
HKLM\\SYSTEM\\CurrentControlSet\\Services\\AFD\\Parameters
Disable Address Sharing DWORD 0x00000000 (0)
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "vesync.", + "author_id": 1085, + "created_at": 1208790000000, + "created_by": 1085, + "updated_at": 1208790000000, + "updated_by": 1085, + "published_at": 1208790000000, + "published_by": 1085 + }, + { + "id": 201, + "title": "Ny version av AVG Free", + "slug": "ny-version-av-avg-free", + "markdown": "\r\n\r\n\r\n\r\nAVG Free är mitt favoritalternativ bland gratis antivirusprogram. Tommy K Johansson tipsar på sin blogg om att det har kommit ut i helt ny version (8.0) med nya funktioner för antispyware och säkerhetskontroll av webblänkar. AVG Free innehåller inte alla de funktioner som köpversionen har (anti-rootkit, spamskydd m.m. och många fler möjligheter till att ändra inställningar) men har allt det man normalt behöver av ett antivirus i hemmamiljö.\r\n\r\n\r\nDet finns dock ett irritationsmoment i nya versionen, som hänger ihop med länkkontrollen. Funktionen SafeSearch kontrollerar alla sökresultat i Google och andra sökmotorer efter phishing och visar en grön ikon vid de länkar som är ofarliga. Som van surfare vill man dock snart stänga av den funktionen. När man stänger av funktionen så visas dock en varningsmeddelande i AVGs ikon, vilket gör att man lätt missar andra fel som kan uppstå (t.ex. missade uppdateringar). Det finns två sätt att fixa detta:\r\n\r\n\r\n(svåra sättet) Installera AVG Free utan LinkScanner/SafeSearch. Det gör man med en parameter till installationsprogrammet: avg_free_stf_*.exe /REMOVE_FEATURE fea_AVG_SafeSurf /REMOVE_FEATURE fea_AVG_SafeSearch\r\n(lätta sättet) Stäng av AVGs webbläsar-plugin för SafeSearch. I IE öppnar man Tools->Manage Add-ons, i FireFox öppnar man Tools->Add-ons. I listan över tillägg letar man upp AVG SafeSearch och avaktiverar.\r\n\r\n\r\n\r\nMed denna smärre irritation ur vägen kan jag bara rekommendera AVG Free 8!\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/avg-logo.png)", + "html": "
AVG Free är mitt favoritalternativ bland gratis antivirusprogram. Tommy K Johansson tipsar på sin blogg om att det har kommit ut i helt ny version (8.0) med nya funktioner för antispyware och säkerhetskontroll av webblänkar. AVG Free innehåller inte alla de funktioner som köpversionen har (anti-rootkit, spamskydd m.m. och många fler möjligheter till att ändra inställningar) men har allt det man normalt behöver av ett antivirus i hemmamiljö.
Det finns dock ett irritationsmoment i nya versionen, som hänger ihop med länkkontrollen. Funktionen SafeSearch kontrollerar alla sökresultat i Google och andra sökmotorer efter phishing och visar en grön ikon vid de länkar som är ofarliga. Som van surfare vill man dock snart stänga av den funktionen. När man stänger av funktionen så visas dock en varningsmeddelande i AVGs ikon, vilket gör att man lätt missar andra fel som kan uppstå (t.ex. missade uppdateringar). Det finns två sätt att fixa detta:
- (svåra sättet) Installera AVG Free utan LinkScanner/SafeSearch. Det gör man med en parameter till installationsprogrammet: avg_free_stf_*.exe /REMOVE_FEATURE fea_AVG_SafeSurf /REMOVE_FEATURE fea_AVG_SafeSearch
- (lätta sättet) Stäng av AVGs webbläsar-plugin för SafeSearch. I IE öppnar man Tools->Manage Add-ons, i FireFox öppnar man Tools->Add-ons. I listan över tillägg letar man upp AVG SafeSearch och avaktiverar.
Med denna smärre irritation ur vägen kan jag bara rekommendera AVG Free 8!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1209380220000, + "created_by": 6, + "updated_at": 1209380220000, + "updated_by": 6, + "published_at": 1209380220000, + "published_by": 6 + }, + { + "id": 204, + "title": "Forefront saboterar IIS 7", + "slug": "forefront-saboterar-iis-7", + "markdown": "\r\n\r\n\r\nDet finns ett fel i Microsofts antivirus-program Forefront som resulterar i att det med slumpvis mellanrum förstör inställningsfilen för IIS 7. Det resulterar i att ens webserver helt lägger av att fungera, så till den grad att man inte ens kan administrera den via administrationsverktyget i kontrollpanelen. Felmeddelandet man får är \"Error: Configuration file is not well-formed XML\".\r\n\r\n\r\nDetta beror tydligen på att Forefront helt enkelt inte hanterar filer på rätt sätt i vissa situationer och att de då blir korrupta när det finns andra processer som läser eller skriver till dem. I det här fallet så är det filen C:\\Windows\\System32\\inetsrv\\config\\applicationHost.config som gått sönder. Medans MS jobbar på en fix på problemet kan man utföra följande för att stänga av det här beteendet:\r\n\r\n\r\nÖppna regedit\r\nSkapa nyckeln HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\MpFilter\\Parameters\r\nLägg till ett DWORD-värde med namnet \"ScanOnCleanup\" och sätt det till 0.\r\nStarta om Forefront/OneCare\r\n\r\n\r\nMer info om detta hittar du på den officiella IIS-bloggen\r\n\r\n\r\nDet står inte så mycket mer om det än vad som här nämnts, så frågan är om detta är ett problem som endast gäller den ovan nämnda XML-filen, eller om det finns risk att andra filer på systemet också blir korrupta av Forefront. Därför känns det säkrast att genomföra fixen även om man inte kör IIS, åtminstone fram tills dess att Microsoft utkommit med mer information.\r\n\r\n\r\nOm du redan har fått din applicationHost.config fil förstörd så är det dock så att Windows gör en backup av den varje gång du ändrar i den och lägger denna i C:\\inetpub\\history. Därifrån kan man då kopiera en tidigare version och således återställa sin inställning.\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/hex_icon.png)", + "html": "
Det finns ett fel i Microsofts antivirus-program Forefront som resulterar i att det med slumpvis mellanrum förstör inställningsfilen för IIS 7. Det resulterar i att ens webserver helt lägger av att fungera, så till den grad att man inte ens kan administrera den via administrationsverktyget i kontrollpanelen. Felmeddelandet man får är \"Error: Configuration file is not well-formed XML\".
Detta beror tydligen på att Forefront helt enkelt inte hanterar filer på rätt sätt i vissa situationer och att de då blir korrupta när det finns andra processer som läser eller skriver till dem. I det här fallet så är det filen C:\\Windows\\System32\\inetsrv\\config\\applicationHost.config som gått sönder. Medans MS jobbar på en fix på problemet kan man utföra följande för att stänga av det här beteendet:
- Öppna regedit
- Skapa nyckeln HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\MpFilter\\Parameters
- Lägg till ett DWORD-värde med namnet \"ScanOnCleanup\" och sätt det till 0.
- Starta om Forefront/OneCare
Mer info om detta hittar du på den officiella IIS-bloggen
Det står inte så mycket mer om det än vad som här nämnts, så frågan är om detta är ett problem som endast gäller den ovan nämnda XML-filen, eller om det finns risk att andra filer på systemet också blir korrupta av Forefront. Därför känns det säkrast att genomföra fixen även om man inte kör IIS, åtminstone fram tills dess att Microsoft utkommit med mer information.
Om du redan har fått din applicationHost.config fil förstörd så är det dock så att Windows gör en backup av den varje gång du ändrar i den och lägger denna i C:\\inetpub\\history. Därifrån kan man då kopiera en tidigare version och således återställa sin inställning.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "rmed XML”.", + "author_id": 1086, + "created_at": 1210328640000, + "created_by": 1086, + "updated_at": 1210328640000, + "updated_by": 1086, + "published_at": 1210328640000, + "published_by": 1086 + }, + { + "id": 213, + "title": "Hyper-V RTM", + "slug": "hyper-v-rtm", + "markdown": "\r\n\r\n\r\nPå Maria Lundahls blogg läser jag till stor glädje att Microsofts virtualiseringsplattform Hyper-V inatt släppts i RTM-version! Vi har kört produkten sedan första releasekandidaten och trivs mycket bra med den, utvärderingen har dock dragits med några buggar och problem som nu förhoppningsvis skall vara borta.\r\n\r\n\r\nUppdateringen kommer att släppas via Windows Update för Windows Server 2008 den 8 juli, men går alltså redan nu att ladda ner härifrån:\r\n\r\n\r\n\r\nhttp://www.microsoft.com/downloads/details.aspx?FamilyId=F3AB3D4B-63C8-4424-A738-BADED34D24ED&displaylang=en\r\n\r\n\r\n\r\nUppgraderingsdags!\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/ws2008.png)", + "html": "
På Maria Lundahls blogg läser jag till stor glädje att Microsofts virtualiseringsplattform Hyper-V inatt släppts i RTM-version! Vi har kört produkten sedan första releasekandidaten och trivs mycket bra med den, utvärderingen har dock dragits med några buggar och problem som nu förhoppningsvis skall vara borta.
Uppdateringen kommer att släppas via Windows Update för Windows Server 2008 den 8 juli, men går alltså redan nu att ladda ner härifrån:
Uppgraderingsdags!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1214568000000, + "created_by": 1085, + "updated_at": 1214568000000, + "updated_by": 1085, + "published_at": 1214568000000, + "published_by": 1085 + }, + { + "id": 219, + "title": "Batteriproblem med iPhone och Exchange-konton", + "slug": "batteriproblem-med-iphone-och-exchange-konton", + "markdown": "\r\n\r\n\r\nEfter tisdagens hyllning av iPhone så vände sig telefongudarna emot\r\nmig igår. Jag gick från kontoret med en fulladdad telefon vid lunch och\r\ntvå timmar senare var batteriet slut. Visst, batteritiden är inte så\r\nimponerande men två timmar är ju bara löjligt. Jag provade att starta\r\nom, att ladda batteriet extra länge över natten o.s.v. med problemet\r\nfanns kvar idag. Laddning tog också extra länge.\r\n\r\n\r\nDet rimliga\r\nverkade vara att någon applikation hade hängt sig och drog\r\nprocessorkraft hela tiden (telefonen var rätt varm hela tiden). Jag provade att radera några misstänkta applikationer, stängde av 3G, ställde datahämtning på manuell men inget hjälpte.\r\n\r\n\r\nTill slut upptäckte jag av en slump att epostprogrammet kollade\r\nefter nya epost hela tiden. En ny uppkoppling var femte, tionde sekund\r\nungefär - trots att hämtningen var satt på manuell. Efter lite mer\r\nfokuserad sökning på internet hittade jag fler med samma problem.\r\nTydligen finns ett problem med Exchange-kopplade epostkonton och\r\neventuellt firmware-uppgraderingen till 2.0.1.\r\n\r\n\r\nLösningen: ta bort mailkontot och lägg till det på nytt. Det här\r\nkänns inte som någon vidare permanent lösning, men har åtminstone löst\r\nmina batteriproblem tills vidare.\r\n\r\n\r\n\r\nVärldens bästa telefon, men helt klart inte världens buggfriaste :-)\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/battery.png)", + "html": "
Efter tisdagens hyllning av iPhone så vände sig telefongudarna emot
mig igår. Jag gick från kontoret med en fulladdad telefon vid lunch och
två timmar senare var batteriet slut. Visst, batteritiden är inte så
imponerande men två timmar är ju bara löjligt. Jag provade att starta
om, att ladda batteriet extra länge över natten o.s.v. med problemet
fanns kvar idag. Laddning tog också extra länge.
Det rimliga
verkade vara att någon applikation hade hängt sig och drog
processorkraft hela tiden (telefonen var rätt varm hela tiden). Jag provade att radera några misstänkta applikationer, stängde av 3G, ställde datahämtning på manuell men inget hjälpte.
Till slut upptäckte jag av en slump att epostprogrammet kollade
efter nya epost hela tiden. En ny uppkoppling var femte, tionde sekund
ungefär - trots att hämtningen var satt på manuell. Efter lite mer
fokuserad sökning på internet hittade jag fler med samma problem.
Tydligen finns ett problem med Exchange-kopplade epostkonton och
eventuellt firmware-uppgraderingen till 2.0.1.
Lösningen: ta bort mailkontot och lägg till det på nytt. Det här
känns inte som någon vidare permanent lösning, men har åtminstone löst
mina batteriproblem tills vidare.
Världens bästa telefon, men helt klart inte världens buggfriaste :-)
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "äntan på en riktig buggfix från Apple finns dock en enkel lösning.", + "author_id": 6, + "created_at": 1218903660000, + "created_by": 6, + "updated_at": 1218903660000, + "updated_by": 6, + "published_at": 1218903660000, + "published_by": 6 + }, + { + "id": 222, + "title": "IIS-problem vid installation av SQL Server 2005 i Windows Server 2008", + "slug": "iis-problem-vid-installation-av-sql-server-2005-i-windows-server-2008", + "markdown": "\r\n\r\n\r\nVid installation av SQL Server 2005 i en nyinstallerad Windows Server 2008 misslyckades IIS-delen av prerequisite-kontrollen med följande felmeddelande:\r\n\r\n\r\n\r\nMicrosoft Internet Information Services (IIS) is either not installed or is disabled. IIS is required by some SQL Server features. Without IIS, some SQL Server features will not be available for installation. To install all SQL Server features, install IIS from Add or Remove Programs in Control Panel or enable the IIS service through the Control Panel if it is already installed, and then run SQL Server Setup again. For a list of features that depend on IIS, see Features Supported by Editions of SQL Server in Books Online. \r\n\r\n\r\n\r\nProblemet beror på att den IIS6 kompatibilitet krävs för SQL Server 2005 inte installeras om man bara godkänner IIS-installationens förvalda komponenter. För att installera de delar som SQL Server 2005 behöver väljer du att administrera IIS i Server Manager och lägger till följande Role Services: \r\n\r\nIIS 6 Metabase Compatability\r\nIIS 6 WMI Compatability\r\n\r\nInstallern bör nu ge grönt ljus gällande IIS och förutsatt att alla andra kontroller också ser bra ut bör du komma vidare i din installation. Glöm inte att applicera (minst) SQL 2005 SP2 direkt efter installation då det krävs för Windows Server 2008.\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/ws2008.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/sql2005onwin2008_1.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/sql2005onwin2008_2.png)\r\n\r\n\r\nTack till \"The Sean Blog\" på Technet för lösningen på detta, Sean har också en komplett lista över vilka IIS-komponenter som krävs för SQL2005/Win2k8.\r\n\r\n", + "html": "
Vid installation av SQL Server 2005 i en nyinstallerad Windows Server 2008 misslyckades IIS-delen av prerequisite-kontrollen med följande felmeddelande:
Microsoft Internet Information Services (IIS) is either not installed or is disabled. IIS is required by some SQL Server features. Without IIS, some SQL Server features will not be available for installation. To install all SQL Server features, install IIS from Add or Remove Programs in Control Panel or enable the IIS service through the Control Panel if it is already installed, and then run SQL Server Setup again. For a list of features that depend on IIS, see Features Supported by Editions of SQL Server in Books Online.
Problemet beror på att den IIS6 kompatibilitet krävs för SQL Server 2005 inte installeras om man bara godkänner IIS-installationens förvalda komponenter. För att installera de delar som SQL Server 2005 behöver väljer du att administrera IIS i Server Manager och lägger till följande Role Services:
Installern bör nu ge grönt ljus gällande IIS och förutsatt att alla andra kontroller också ser bra ut bör du komma vidare i din installation. Glöm inte att applicera (minst) SQL 2005 SP2 direkt efter installation då det krävs för Windows Server 2008.
Tack till \"The Sean Blog\" på Technet för lösningen på detta, Sean har också en komplett lista över vilka IIS-komponenter som krävs för SQL2005/Win2k8.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1219419000000, + "created_by": 1085, + "updated_at": 1219419000000, + "updated_by": 1085, + "published_at": 1219419000000, + "published_by": 1085 + }, + { + "id": 231, + "title": "Skicka epost till publika mappar i Exchange 2007", + "slug": "skicka-epost-till-publika-mappar-i-exchange-2007", + "markdown": "\r\n\r\nFör att ge en publik mapp en epostadress i Exchange 2007 gör man på ett lite nytt sätt (jämför med Exchange 2003). I första versionen av Exchange 2007 var man tvungen att skriva kommandon i PowerShell, men från och med SP1 har allt blivit enklare:\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nMappen får samma adress som namnet + domänen (den i exemplet ovan skulle kunna bli financial@mindoman.se t.ex.)\r\n\r\n![Bild](http://tekniken.nu/uploads/exchange2007.png)", + "html": "
För att ge en publik mapp en epostadress i Exchange 2007 gör man på ett lite nytt sätt (jämför med Exchange 2003). I första versionen av Exchange 2007 var man tvungen att skriva kommandon i PowerShell, men från och med SP1 har allt blivit enklare:
Mappen får samma adress som namnet + domänen (den i exemplet ovan skulle kunna bli financial@mindoman.se t.ex.)
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Skicka epost till publika mappar i Exchange 2007", + "meta_description": "", + "author_id": 6, + "created_at": 1221757174000, + "created_by": 6, + "updated_at": 1221757174000, + "updated_by": 6, + "published_at": 1221757174000, + "published_by": 6 + }, + { + "id": 249, + "title": "WGA-problem på nyinstallerad XP SP3", + "slug": "wga-problem-pa-nyinstallerad-xp-sp3", + "markdown": "\r\n\r\nIdag stötte jag på följande problem när jag skulle köra Microsoft Update på en helt nyinstallerad Windows XP SP3 (OEM):\r\n\r\n\r\n\r\n\r\n\r\nKB892130 (Windows Genuine Advantage Validation Tool) bommar och vägrar installera. Iom att WGA är nödvändig för att köra övriga uppdateringar så kommer man inte speciellt mycket längre med sina uppdateringar.\r\n\r\nI %windir%\\windowsupdate.log läser jag följande:\r\n\r\n2008-10-15 10:40:52:406 1552 37c AUClnt FATAL: Error: 0x80004002. wuauclt handler: failed to spawn COM server2008-10-15 10:40:52:421 1036 19c Handler FATAL: 0x80004002: ERROR: Remote update handler container process created (PID: 1552), but exited before signaling event2008-10-15 10:40:53:625 600 dc8 COMAPI >>-- RESUMED -- COMAPI: Install [ClientId = WindowsUpdate]2008-10-15 10:40:53:625 600 dc8 COMAPI - Install call failed 2008-10-15 10:40:53:625 600 dc8 COMAPI - Reboot required = No 2008-10-15 10:40:53:625 600 dc8 COMAPI - WARNING: Exit code = 0x80240FFF; Call error code = 0x80004002\r\n\r\nFör att lösa detta problem gör man enl följande:\r\n\r\nLadda hem WindowsUpdateAgent20-x86.exe från Microsoft och exekvera med följande kommando:\r\n\r\n\"WindowsUpdateAgent20-x86.exe /wuforce\".\r\n\r\nDetta installerar om Windows Update agenten i XP och rättade i mitt fall till det som var fel. Min teori är att problemet uppstått pga att någon installation jag hunnit köra innan Microsoft Update har ändrat i registerrättigheter. Problemet verkar vara ganska vanligt förekommende dock.\r\n\r\n![Bild](http://tekniken.nu/uploads/wga_logo.png)", + "html": "Idag stötte jag på följande problem när jag skulle köra Microsoft Update på en helt nyinstallerad Windows XP SP3 (OEM):
KB892130 (Windows Genuine Advantage Validation Tool) bommar och vägrar installera. Iom att WGA är nödvändig för att köra övriga uppdateringar så kommer man inte speciellt mycket längre med sina uppdateringar.
I %windir%\\windowsupdate.log läser jag följande:
2008-10-15 10:40:52:406 1552 37c AUClnt FATAL: Error: 0x80004002. wuauclt handler: failed to spawn COM server
2008-10-15 10:40:52:421 1036 19c Handler FATAL: 0x80004002: ERROR: Remote update handler container process created (PID: 1552), but exited before signaling event
2008-10-15 10:40:53:625 600 dc8 COMAPI >>-- RESUMED -- COMAPI: Install [ClientId = WindowsUpdate]
2008-10-15 10:40:53:625 600 dc8 COMAPI - Install call failed
2008-10-15 10:40:53:625 600 dc8 COMAPI - Reboot required = No
2008-10-15 10:40:53:625 600 dc8 COMAPI - WARNING: Exit code = 0x80240FFF; Call error code = 0x80004002
För att lösa detta problem gör man enl följande:
Ladda hem WindowsUpdateAgent20-x86.exe från Microsoft och exekvera med följande kommando:
\"WindowsUpdateAgent20-x86.exe /wuforce\".
Detta installerar om Windows Update agenten i XP och rättade i mitt fall till det som var fel. Min teori är att problemet uppstått pga att någon installation jag hunnit köra innan Microsoft Update har ändrat i registerrättigheter. Problemet verkar vara ganska vanligt förekommende dock.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "WGA-problem på nyinstallerad XP SP3", + "meta_description": "", + "author_id": 1085, + "created_at": 1224073455000, + "created_by": 1085, + "updated_at": 1224073455000, + "updated_by": 1085, + "published_at": 1224073455000, + "published_by": 1085 + }, + { + "id": 255, + "title": "Återställning av specifik användares mailbox i Exchange 2007", + "slug": "aterstallning-av-specifik-anvandares-mailbox-i-exchange-2007", + "markdown": "\r\n\r\nÅterställning av maildatabaser har blivit enklare i och med Exchange 2007. Att göra en komplett återställning av maildatabasen går att ordna helt i det grafiska gränssnittet. Vill man göra en lite mer specifik återställning krävs dock att man använder Exchange Management Shell.\r\n\r\nVi utgår ifrån en fullständig backup gjord i exempelvis ntbackup.\r\nStarta Exchange Management Console (EMC), välj Toolbox och starta därifrån Database Recovery Management.Tryck Next för att logga in på den lokala maskinenVälj Create a recovery storage group så att vår återställning får en måldatabas. Välj var databas och loggfiler finns.Med vår RSG skapad är det dags att starta återställningen. I det här fallet använde jag NTBackup. Välj den databas du vill återställa och tryck start restore.\r\nGenom det grafiska gränssnittet är dina alternativ något begränsade. Om vi väljer ”Show advanced options” går det att återställa data till en specifik användares katalog, vi kan också sortera ut mail på ämne och datum. Det grafiska gränssnittet är alltså mest intressant vid en komplett återställning av databasen.\r\n\r\nIntressantare för mig den här gången var att återställa en specifik användares inbox till administrator-kontot:\r\nStarta Exchange Management Shell.Jag vill återställa hela mailboxen ”met” till Administrator-kontot, under en mapp som kommer heta ”Restore”Det här kommandot löser biffen:\r\nrestore-mailbox -RSGMailbox 'met' -RSGDatabase 'Recovery Storage Group\\Mailbox Database' -id 'Administrator' -TargetFolder ‘Restore’\r\nOm det efter den långa återställningsprocessen kommer felmeddelanden om ”Bad item limit” så går det att höja den gränsen. Avsluta kommandot ovan med –BadItemLimit 1000 så bör du slippa problemen (det är förstås en god idé att söka källan till problemet ändå).\r\nDet hade förstås också gått att låta återskapningen gå till den berörda användarens mailbox och skapa en ’Restore’ mapp där.\r\n\r\nDet här kommandot går att finslipa så att det återställer mail mellan vissa datum eller helt skriver över användarens mailbox med backupen.\r\n\r\nMer om restore-mailbox kommandot går att läsa här;\r\n\r\nhttp://technet.microsoft.com/en-us/library/bb125218.aspx\r\n\r\n![Bild](http://tekniken.nu/uploads/Exchange2007.png)", + "html": "Återställning av maildatabaser har blivit enklare i och med Exchange 2007. Att göra en komplett återställning av maildatabasen går att ordna helt i det grafiska gränssnittet. Vill man göra en lite mer specifik återställning krävs dock att man använder Exchange Management Shell.
Vi utgår ifrån en fullständig backup gjord i exempelvis ntbackup.
- Starta Exchange Management Console (EMC), välj Toolbox och starta därifrån Database Recovery Management.
- Tryck Next för att logga in på den lokala maskinen
- Välj Create a recovery storage group så att vår återställning får en måldatabas. Välj var databas och loggfiler finns.
- Med vår RSG skapad är det dags att starta återställningen. I det här fallet använde jag NTBackup. Välj den databas du vill återställa och tryck start restore.
Genom det grafiska gränssnittet är dina alternativ något begränsade. Om vi väljer ”Show advanced options” går det att återställa data till en specifik användares katalog, vi kan också sortera ut mail på ämne och datum. Det grafiska gränssnittet är alltså mest intressant vid en komplett återställning av databasen.
Intressantare för mig den här gången var att återställa en specifik användares inbox till administrator-kontot:
- Starta Exchange Management Shell.
- Jag vill återställa hela mailboxen ”met” till Administrator-kontot, under en mapp som kommer heta ”Restore”
Det här kommandot löser biffen:
restore-mailbox -RSGMailbox 'met' -RSGDatabase 'Recovery Storage Group\\Mailbox Database' -id 'Administrator' -TargetFolder ‘Restore’ - Om det efter den långa återställningsprocessen kommer felmeddelanden om ”Bad item limit” så går det att höja den gränsen. Avsluta kommandot ovan med –BadItemLimit 1000 så bör du slippa problemen (det är förstås en god idé att söka källan till problemet ändå).
Det hade förstås också gått att låta återskapningen gå till den berörda användarens mailbox och skapa en ’Restore’ mapp där.
Det här kommandot går att finslipa så att det återställer mail mellan vissa datum eller helt skriver över användarens mailbox med backupen.
Mer om restore-mailbox kommandot går att läsa här;
http://technet.microsoft.com/en-us/library/bb125218.aspx
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Återställning av specifik användares mailbox i Exchange 2007", + "meta_description": "", + "author_id": 1088, + "created_at": 1226922211000, + "created_by": 1088, + "updated_at": 1226922211000, + "updated_by": 1088, + "published_at": 1226922211000, + "published_by": 1088 + }, + { + "id": 256, + "title": "Problem att installera XP SP3 på Intel Mac", + "slug": "problem-att-installera-xp-sp3-pa-intel-mac", + "markdown": "\r\n\r\nVid installation av Servicepack 3 för Windows XP på en Intel Mac med Bootcamp riskerar man att en bit in i installationsguiden få följande felmeddelande:\r\n\r\n\"There is not enough disk space on C:\\WINDOWS\\$NtServicePackUninstall$ to install Service Pack 3 Setup requires an additional 4 megabytes of free space or if you also want to archive the files for uninstallation,Setup requires 4 additional megabytes of free space. Free additional space on your hard disk and then try again.\"\r\n\r\nDetta beror på att SP3-installationen, förvirrad av eventuell EFI-partition på disken, kontrollerar fel diskenhet. För att komma förbi problemet lägger man till följande registernyckel: \r\n\r\nNavigera till följande nivå i Regedit:\r\n\r\n[HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Setup]\r\n\r\nLägg till ny sträng: BootDir, med värdet: C:\\ \r\n\r\nKör sedan SP3 installationen igen så bör det gå bättre!\r\n\r\n![Bild](http://tekniken.nu/uploads/633626876179952480-apple_windows_by_mo6.jpg)", + "html": "Vid installation av Servicepack 3 för Windows XP på en Intel Mac med Bootcamp riskerar man att en bit in i installationsguiden få följande felmeddelande:
\"There is not enough disk space on C:\\WINDOWS\\$NtServicePackUninstall$ to install Service Pack 3 Setup requires an additional 4 megabytes of free space or if you also want to archive the files for uninstallation,Setup requires 4 additional megabytes of free space. Free additional space on your hard disk and then try again.\"
Detta beror på att SP3-installationen, förvirrad av eventuell EFI-partition på disken, kontrollerar fel diskenhet. För att komma förbi problemet lägger man till följande registernyckel:
Navigera till följande nivå i Regedit:
[HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\CurrentVersion\\Setup]
Lägg till ny sträng: BootDir, med värdet: C:\\
Kör sedan SP3 installationen igen så bör det gå bättre!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Problem att installera XP SP3 på Intel Mac", + "meta_description": "", + "author_id": 1085, + "created_at": 1227090817000, + "created_by": 1085, + "updated_at": 1227090817000, + "updated_by": 1085, + "published_at": 1227090817000, + "published_by": 1085 + }, + { + "id": 258, + "title": "ImgBurn - Riktigt bra gratis brännarprogram", + "slug": "imgburn---riktigt-bra-gratis-brannarprogram", + "markdown": "\r\n\r\nTycker du som jag att de flesta kommersiella CD/DVD-brännarprogrammen börjat växa sig allt för stora för sin egentliga uppgift? Nero går t.ex. knappt att installera utan att få med ett stort antal delprogram som man aldrig kommer att använda, hälften av vilka permanent ligger igång i aktivitetslisten. Dessutom kostar de ganska mycket pengar om ens brännarbehov inte sträcker sig förbi det mest grundläggande: att bränna filer eller en image till skiva.\r\n\r\nJag har på senaste tiden använt programmet ImgBurn som gör just det jag behöver, helt gratis:\r\nBränna filer till skivaBränna image till skivaSkapa image från skivaSkapa image från filer\r\nRekommenderas varmt!\r\n\r\nhttp://www.imgburn.com\r\n\r\nVill du ha fler exempel på gratis brännarprogram för Windows så rekommenderar jag Tommy k Johanssons test.\r\n\r\n\r\n\r\n \r\n\r\n![Bild](http://tekniken.nu/uploads/imgburn_logo.png)", + "html": "Tycker du som jag att de flesta kommersiella CD/DVD-brännarprogrammen börjat växa sig allt för stora för sin egentliga uppgift? Nero går t.ex. knappt att installera utan att få med ett stort antal delprogram som man aldrig kommer att använda, hälften av vilka permanent ligger igång i aktivitetslisten. Dessutom kostar de ganska mycket pengar om ens brännarbehov inte sträcker sig förbi det mest grundläggande: att bränna filer eller en image till skiva.
Jag har på senaste tiden använt programmet ImgBurn som gör just det jag behöver, helt gratis:
- Bränna filer till skiva
- Bränna image till skiva
- Skapa image från skiva
- Skapa image från filer
Rekommenderas varmt!
Vill du ha fler exempel på gratis brännarprogram för Windows så rekommenderar jag Tommy k Johanssons test.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "ImgBurn - riktigt bra gratis brännarprogram", + "meta_description": "", + "author_id": 1085, + "created_at": 1227545766000, + "created_by": 1085, + "updated_at": 1227545766000, + "updated_by": 1085, + "published_at": 1227545766000, + "published_by": 1085 + }, + { + "id": 262, + "title": "Få ordning på gemensamma mappar i Windows Small Business Server 2003", + "slug": "fa-ordning-pa-gemensamma-mappar-i-windows-small-business-server-2003", + "markdown": "\r\n\r\nI Windows Small Business Server 2003 kan man råka ut för det här felmeddelandet när man ska administrera gemensamma mappar (public folders) i Exchange System Manager:\r\n\r\nThe SSL certificate server name is incorrect.ID no: c103b404\r\n\r\nBakgrund och orsakEn Windows-server har ofta ett namn internt och annat namn externt. Det interna namnet är knutet till den interna domänen, t.ex. minserver.mindoman.local, medan det externa namnet är knutet till den domän vill att besökarna ska se, t.ex. mail.mindoman.se. När man installerar Small Business Server så skapar den ett självsignerat certifikat för det interna namnet minserver.mindoman.local. Vill man erbjuda sina användare webbmail så gör man det oftast på externa namnet, så då skapar man eller köper ett certifikat för mail.mindoman.se och ersätter det som servern själv skapade under installationen. Här uppstår problemet.\r\n\r\nDet är nämligen så att Exchange Server Manager använder sig av Outlook Web Access för att hantera gemensamma mapparna. När System Manager ansluter via det interna namnet så stämmer det inte längre med certifikatet – och då dyker felmeddelandet ovan upp.\r\n\r\nLösningDet första man ska testa är att stänga av kravet på SSL på webbkatalogen Exadmin under Default Web Server. Det gör man såhär:\r\n\r\nÖppna IIS ManagerHögerklicka på Exadmin under Default Web SiteVälj fliken Directory Security och tryck på knappen Edit i boxen Secure CommunicationsKryssa ur rutorna Require 128-bit encryption och Require secure channel (SSL)Stäng alla dialogrutor och starta om webbtjänsten (starta även om System Manager om du har den igång).\r\n\r\nDetta beskrivs till viss del i KB 324345, men Microsofts förslag på lösning är att man ska lägga tillbaka det självsignerade certifikatet och det kommer ju inte lösa problemet på det sätt man vill.\r\n\r\nHar du tur så har detta löst problemet. Har du otur måste du ta till med lite hårdare handskar och tvinga System Manager att inte använda SSL för anslutningen:\r\n\r\nInstallera Support Tools (ligger på CD2 bland skivorna till SBS)Starta adsiedit.mscBläddra fram till Configuration > Services > Microsoft Exchange > Domain Name > Administrative Groups > First Administrative Group > Servers > Servername > Protocols > HTTP > 1 > ExadminHögerklicka på msExchSecureBindings och välj PropertiesVälj värdet :443: och klicka på RemoveStänga alla dialog rutor och starta om webbtjänster och System Manager.\r\n\r\nImplikationerKommer det här att hota säkerheten på servern? Det kan kännas konstigt att ta bort krypteringen på en mapp i webbmailen för att lösa problemet, men det är ingen fara. Exadmin används inte av Outlook Web Access utan bara av servern själv. Däremot rekommenderar jag att du sätter en IP-spärr på Exadmin-katalogen till att bara acceptera anslutningar från servern själv eller andra interna servrar som används för Exchange-administration.\r\n\r\nTack till http://technicalmumblings.wordpress.com/2008/05/06/the-ssl-certificate-server-name-is-incorrect-id-no-c103b404/.\r\n\r\n![Bild](http://tekniken.nu/uploads/633645033992650560-SBS2003-standard-boxangle.png)", + "html": "I Windows Small Business Server 2003 kan man råka ut för det här felmeddelandet när man ska administrera gemensamma mappar (public folders) i Exchange System Manager:
The SSL certificate server name is incorrect.ID no: c103b404
Bakgrund och orsak
En Windows-server har ofta ett namn internt och annat namn externt. Det interna namnet är knutet till den interna domänen, t.ex. minserver.mindoman.local, medan det externa namnet är knutet till den domän vill att besökarna ska se, t.ex. mail.mindoman.se. När man installerar Small Business Server så skapar den ett självsignerat certifikat för det interna namnet minserver.mindoman.local. Vill man erbjuda sina användare webbmail så gör man det oftast på externa namnet, så då skapar man eller köper ett certifikat för mail.mindoman.se och ersätter det som servern själv skapade under installationen. Här uppstår problemet.
Det är nämligen så att Exchange Server Manager använder sig av Outlook Web Access för att hantera gemensamma mapparna. När System Manager ansluter via det interna namnet så stämmer det inte längre med certifikatet – och då dyker felmeddelandet ovan upp.
Lösning
Det första man ska testa är att stänga av kravet på SSL på webbkatalogen Exadmin under Default Web Server. Det gör man såhär:
- Öppna IIS Manager
- Högerklicka på Exadmin under Default Web Site
- Välj fliken Directory Security och tryck på knappen Edit i boxen Secure Communications
- Kryssa ur rutorna Require 128-bit encryption och Require secure channel (SSL)
- Stäng alla dialogrutor och starta om webbtjänsten (starta även om System Manager om du har den igång).
Detta beskrivs till viss del i KB 324345, men Microsofts förslag på lösning är att man ska lägga tillbaka det självsignerade certifikatet och det kommer ju inte lösa problemet på det sätt man vill.
Har du tur så har detta löst problemet. Har du otur måste du ta till med lite hårdare handskar och tvinga System Manager att inte använda SSL för anslutningen:
- Installera Support Tools (ligger på CD2 bland skivorna till SBS)
- Starta adsiedit.msc
- Bläddra fram till Configuration > Services > Microsoft Exchange > Domain Name > Administrative Groups > First Administrative Group > Servers > Servername > Protocols > HTTP > 1 > Exadmin
- Högerklicka på msExchSecureBindings och välj Properties
- Välj värdet :443: och klicka på Remove
- Stänga alla dialog rutor och starta om webbtjänster och System Manager.
Implikationer
Kommer det här att hota säkerheten på servern? Det kan kännas konstigt att ta bort krypteringen på en mapp i webbmailen för att lösa problemet, men det är ingen fara. Exadmin används inte av Outlook Web Access utan bara av servern själv. Däremot rekommenderar jag att du sätter en IP-spärr på Exadmin-katalogen till att bara acceptera anslutningar från servern själv eller andra interna servrar som används för Exchange-administration.
I gamla versioner av SQL Server skapades alltid ett konto med högsta administratörsnivå (sysadmin) med namnet sa och tomt lösenord. Det var minst sagt lite av en säkerhetsrisk, så i senare versioner skapas visserligen sa-kontot men det är antingen avstängt eller kräver att man ger det ett lösenord. I SQL Server 2005 och 2008 så läggs den installerande användaren automatiskt i sysadmin-gruppen (exakt vilket konto etc. beror på om det är Windows Server eller inte, om den är domänsansluten etc.).
Av ett antal orsaker kan man hamna i läget att man inte har tillgång till något konto som är sysadmin. I mitt fall hände det på min utvecklingsmaskin där kontot jag installerat SQL Server under hade gått sönder. Jag hade kunnat installera om SQL Server förstås, men i en produktionsmiljö är det sällan ett bra alternativ. Som tur är så finns ett sätt att starta SQL Server i ”felsäkert läge”. Man kan starta SQL Server isingle user mode, vilket gör att den första användaren som ansluter blir sysadmin.
Gör så här:
- Stäng av SQL Agent (annars riskerar den att vara den första som ansluter och blir sysadmin)
- Öppna SQL Server Configuration Manager
- Öppna trädet SQL Server Services. Högerklicka på din SQL Server-instans.
- På fliken advanced, lägg till ;-m sist på raden startup parameters
- Starta om SQL-tjänsten
Nu är servern isingle user mode, så nu kan du ansluta och ändra i rättigheter på konton, databaser och tabeller. Vad du än gör: kom bara ihåg att gå tillbaka till det vanliga läget när du är klar!
För den som kör mysql finns ett liknande läge som kringår all säkerhet som jag skrev om i en annan blogg för länge sen.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Glömt lösenordet till SQL Server?", + "meta_description": "", + "author_id": 6, + "created_at": 1235988593000, + "created_by": 6, + "updated_at": 1235988593000, + "updated_by": 6, + "published_at": 1235988593000, + "published_by": 6 + }, + { + "id": 285, + "title": "Hitta användare i Active Directory på sekundär mailadress.", + "slug": "hitta-anvandare-i-active-directory-pa-sekundar-mailadress", + "markdown": "\r\n\r\nAtt hitta en viss adress användare är oftast väldigt lätt, skulle adressen dock inte ha något med användarnamnet att göra blir det svårare.\r\n\r\nExemplet i det här fallet är order@iteam.se. Jag vet att adressen finns men inte vem den tillhör. Gör såhär:\r\n\r\nStarta Active Directory Users and Computers.Tryck på Find-knappen.Välj Custom search istället för standarden Users, Contacts and Groups.Välj Advanced fliken. Här kan du nu söka med hjälp av direkta LDAP frågor.I mitt fall körde jag raden nedan för att hitta alla adresser som börjar med order. Det går förstås också att skriva in kompletta adresser utan wildcards.(proxyAddresses=smtp:order*)\r\nMed LDAP-frågor går det att göra väldigt mycket för att hitta i AD. Mer information finns här:\r\n\r\nhttp://technet.microsoft.com/en-us/library/aa996205(EXCHG.65).aspx\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/633746945372320136-folders.png)", + "html": "Att hitta en viss adress användare är oftast väldigt lätt, skulle adressen dock inte ha något med användarnamnet att göra blir det svårare.
Exemplet i det här fallet är order@iteam.se. Jag vet att adressen finns men inte vem den tillhör. Gör såhär:
- Starta Active Directory Users and Computers.
- Tryck på Find-knappen.
- Välj Custom search istället för standarden Users, Contacts and Groups.
- Välj Advanced fliken. Här kan du nu söka med hjälp av direkta LDAP frågor.
I mitt fall körde jag raden nedan för att hitta alla adresser som börjar med order. Det går förstås också att skriva in kompletta adresser utan wildcards.
(proxyAddresses=smtp:order*)
Med LDAP-frågor går det att göra väldigt mycket för att hitta i AD. Mer information finns här:
http://technet.microsoft.com/en-us/library/aa996205(EXCHG.65).aspx
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Hitta användare i Active Directory på sekundär mailadress", + "meta_description": "", + "author_id": 1088, + "created_at": 1239097736000, + "created_by": 1088, + "updated_at": 1239097736000, + "updated_by": 1088, + "published_at": 1239097736000, + "published_by": 1088 + }, + { + "id": 289, + "title": "Bota fläktsurr på DELL-laptop", + "slug": "bota-flaktsurr-pa-dell-laptop", + "markdown": "\r\n\r\nSurrar fläkten på din nya fina DELL-laptop på tok för högt?\r\n\r\nTydligen är detta en sak som vi DELL-köpare har haft problem med under en längre period men sedan en tid tillbaka finns det en lösning som fungerar väl.\r\n\r\nSpeedswitchXP är en liten app som hjälper dig att enkelt kontrollera fläktens hastighet, sätt den på auto så sköter programmet allt åt dig.\r\n\r\nTyvärr så fungerar inte detta program på Vista men diefer.de har uppgraderat och skapat I8kfanGUI. Inte lika snyggt namn på SpeedswitchXP men det fungerar på Vista och är superenkelt att använda.\r\n\r\nFör er som har Windows XP:http://www.diefer.de/speedswitchxp/\r\n\r\nFör oss som har Windows Vista:http://www.diefer.de/i8kfan/index.html\r\n\r\n![Bild](http://tekniken.nu/uploads/633758406867781266-120mm-fan-blue.jpg)", + "html": "Surrar fläkten på din nya fina DELL-laptop på tok för högt?
Tydligen är detta en sak som vi DELL-köpare har haft problem med under en längre period men sedan en tid tillbaka finns det en lösning som fungerar väl.
SpeedswitchXP är en liten app som hjälper dig att enkelt kontrollera fläktens hastighet, sätt den på auto så sköter programmet allt åt dig.
Tyvärr så fungerar inte detta program på Vista men diefer.de har uppgraderat och skapat I8kfanGUI. Inte lika snyggt namn på SpeedswitchXP men det fungerar på Vista och är superenkelt att använda.
För er som har Windows XP:
http://www.diefer.de/speedswitchxp/
För oss som har Windows Vista:
http://www.diefer.de/i8kfan/index.html
Microsoft har nu gjort releasekandidaten av Windows 7 tillgänglig för allmänheten (har funnits på MSDN sedan 30/4). All information om hämtning finns här:
http://www.microsoft.com/windows/windows-7/download.aspx
Skillnaderna jämfört med betan är många. Förutom en massa buggfixar så kommer även en drös nya features som Microsoft listar på utvecklingsbloggen:
http://blogs.msdn.com/e7/archive/2009/02/26/some-changes-since-beta.aspx
Det känns som att Microsoft ligger bra till i utvecklingen och den planerade releasen i oktober känns helt rimlig. Vi håller tummarna!",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "Windows 7 RC är släppt",
+ "meta_description": "",
+ "author_id": 1085,
+ "created_at": 1241519664000,
+ "created_by": 1085,
+ "updated_at": 1241519664000,
+ "updated_by": 1085,
+ "published_at": 1241519664000,
+ "published_by": 1085
+ },
+ {
+ "id": 296,
+ "title": "Undvik fälla när du uppgraderar iPhone 3.0 , eller: så här uppgraderar du till iPhone 3.0 beta 4.",
+ "slug": "undvik-falla-nar-du-uppgraderar-iphone-30--eller-sa-har-uppgraderar-du-till-iphone-30-beta-4",
+ "markdown": "\r\n\r\nViktigt: När du ska uppgradera din iPhone till 3.0 beta 4 behöver du först uppdatera din iTunes till senaste versionen (8.2 beta). Detta är inget som varnas om automatiskt förrän halva uppgraderingen är genomförd (det står ju i och för sig klart och tydligt i instruktionerna som man läser efter man har klantat sig). Försöker man uppdatera med äldre version av iTunes avbryts tyvärr uppgraderingsprocessen efter en stund vilket gör att telefonen behöver återställas till fabriksinställningarna vilket inte heller går att göra med en äldre version av iTunes och i detta läge blir man lite svettig att man kanske har ”Brickat” sin fina telefon.\r\n\r\n\r\n\r\nEftersom du läser denna blog har du säkert missat detta och surfar nu runt och undrar om det är kört för dina kontakter, bilder och SMS men lugn, det är det inte om du har tagit backup nyligen.\r\n\r\nNedanstående kräver att du först har registrerat din telefons serienummer hos Apple och är registrerad utvecklare för iPhone 3.0.\r\n\r\nGör så här (på mac):\r\n\r\nOBS! Först och främst: Installera Itunes 8.2 (hittar du på developer.apple.com). Om det inte går att installera på direkten behöver du först uppdatera din Mac med senaste säkerhetspatcharna.Om du klantat dig som jag och försökt uppgradera med en för gammal version av iTunes går du på B nedan, annars A.A. Klicka på knappen ”Leta efter uppdateringar” i iTunes samtidigt som du trycker på ALT på tangentbordet.B. Klicka på knappen ”Återställ till fabriksinställningarna” i iTunes samtidigt som du trycker på ALT på tangentbordetVälj den nya iPhone 3G 3.0 Beta4 du laddade ner från developer.apple.comOm du valt alternativ B ovan kommer nu telefonen återställas till fabriksinställningar och när den är klar kommer den att fråga om du vill återställa din backup.\r\n\r\nNär du väl har gjort detta kan du avnjuta alla fina funktioner i iPhone 3.0 som numera känns väldigt stabilt – inga hängningar konstigheter som i tidigare betaversioner. Buggen som fanns i beta 3 råkade gömma den gröna ”Ring upp” knappen i telefonen är åtgärdad (thank god!).\r\n\r\nKiller apps för mig i iPhone 3.0 är:\r\nSvenskt tangentbord – nu kan man skriva riktigt fort och slippa alla konstiga svengelska förslag!Dela ut internetuppkopplingen till laptops (s.k. tethering) – väldigt bra! Funkar både med USB och Bluetooth. (ladda ner http://dl.getdropbox.com/u/6152/Telia_se.ipcc och uppdatera på samma sätt som steg 2A ovan så funkar både MMS och internetdelning)MMS - man har ju vant sig av med det då det går bra eller bättre att maila bilder istället men när man tidigare fick ett MMS blev man ju galen av telias usla manuella MMS mottagningstjänst. Nu funkar det kanon!Copy/Paste – skönt att kunna klippa ut url:er från mail osv. Enkelt och smidigt.\r\n\r\nSen ska det bli sjukt intressant att se när Facebook, Skype, Twitter och Google får sätta tänderna i Push Notification Services som ju gör att man kan få realtids push information från alla dessa tjänster utan att ha massor av program igång på telefonen! Ska bli kul att börja utveckla för denna plattform nu också! \r\n\r\nHar någon annan testat? Vad tycker ni? Kommentera gärna nedan!\r\n\r\n![Bild](http://tekniken.nu/uploads/633772917258931496-itunes.png)",
+ "html": "
Viktigt: När du ska uppgradera din iPhone till 3.0 beta 4 behöver du först uppdatera din iTunes till senaste versionen (8.2 beta). Detta är inget som varnas om automatiskt förrän halva uppgraderingen är genomförd (det står ju i och för sig klart och tydligt i instruktionerna som man läser efter man har klantat sig). Försöker man uppdatera med äldre version av iTunes avbryts tyvärr uppgraderingsprocessen efter en stund vilket gör att telefonen behöver återställas till fabriksinställningarna vilket inte heller går att göra med en äldre version av iTunes och i detta läge blir man lite svettig att man kanske har ”Brickat” sin fina telefon.
Eftersom du läser denna blog har du säkert missat detta och surfar nu runt och undrar om det är kört för dina kontakter, bilder och SMS men lugn, det är det inte om du har tagit backup nyligen.
Nedanstående kräver att du först har registrerat din telefons serienummer hos Apple och är registrerad utvecklare för iPhone 3.0.
Gör så här (på mac):
- OBS! Först och främst: Installera Itunes 8.2 (hittar du på developer.apple.com). Om det inte går att installera på direkten behöver du först uppdatera din Mac med senaste säkerhetspatcharna.
- Om du klantat dig som jag och försökt uppgradera med en för gammal version av iTunes går du på B nedan, annars A.
A. Klicka på knappen ”Leta efter uppdateringar” i iTunes samtidigt som du trycker på ALT på tangentbordet.
B. Klicka på knappen ”Återställ till fabriksinställningarna” i iTunes samtidigt som du trycker på ALT på tangentbordet - Välj den nya iPhone 3G 3.0 Beta4 du laddade ner från developer.apple.com
- Om du valt alternativ B ovan kommer nu telefonen återställas till fabriksinställningar och när den är klar kommer den att fråga om du vill återställa din backup.
När du väl har gjort detta kan du avnjuta alla fina funktioner i iPhone 3.0 som numera känns väldigt stabilt – inga hängningar konstigheter som i tidigare betaversioner. Buggen som fanns i beta 3 råkade gömma den gröna ”Ring upp” knappen i telefonen är åtgärdad (thank god!).
Killer apps för mig i iPhone 3.0 är:
- Svenskt tangentbord – nu kan man skriva riktigt fort och slippa alla konstiga svengelska förslag!
- Dela ut internetuppkopplingen till laptops (s.k. tethering) – väldigt bra! Funkar både med USB och Bluetooth. (ladda ner http://dl.getdropbox.com/u/6152/Telia_se.ipcc och uppdatera på samma sätt som steg 2A ovan så funkar både MMS och internetdelning)
- MMS - man har ju vant sig av med det då det går bra eller bättre att maila bilder istället men när man tidigare fick ett MMS blev man ju galen av telias usla manuella MMS mottagningstjänst. Nu funkar det kanon!
- Copy/Paste – skönt att kunna klippa ut url:er från mail osv. Enkelt och smidigt.
Sen ska det bli sjukt intressant att se när Facebook, Skype, Twitter och Google får sätta tänderna i Push Notification Services som ju gör att man kan få realtids push information från alla dessa tjänster utan att ha massor av program igång på telefonen! Ska bli kul att börja utveckla för denna plattform nu också!
Har någon annan testat? Vad tycker ni? Kommentera gärna nedan!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Undvik fälla när du uppgraderar iPhone 3.0 , eller: så här uppgraderar du till iPhone 3.0 beta 4.", + "meta_description": "up - gör så här.", + "author_id": 1087, + "created_at": 1241694925000, + "created_by": 1087, + "updated_at": 1241694925000, + "updated_by": 1087, + "published_at": 1241694925000, + "published_by": 1087 + }, + { + "id": 298, + "title": "RE: Påminnelse: Windows 7 betan upphör att fungera 1:a juli", + "slug": "re-paminnelse-windows-7-betan-upphor-att-fungera-1a-juli", + "markdown": "\r\n\r\nHär kommer en liten påminnelse:\r\n\r\nIfall du inte uppgraderat er Windows 7 installation till RC1 så börjar det bli dags. Betan kommer nämligen att börja stänga av datorn varannan timme from 1:a juli, för att helt upphöra att fungera 1:a augusti.\r\n\r\nLäs min tidigare blogg för instruktioner om hur du hämtar Windows 7 RC1 och Anders bloggom hur du uppgraderar.\r\n\r\n![Bild](http://tekniken.nu/uploads/633772222063954562-windows72.png)", + "html": "Här kommer en liten påminnelse:
Ifall du inte uppgraderat er Windows 7 installation till RC1 så börjar det bli dags. Betan kommer nämligen att börja stänga av datorn varannan timme from 1:a juli, för att helt upphöra att fungera 1:a augusti.
Läs min tidigare blogg för instruktioner om hur du hämtar Windows 7 RC1 och Anders bloggom hur du uppgraderar.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Påminnelse: Windows 7 betan upphör att fungera 1:a juli", + "meta_description": " augusti.", + "author_id": 1085, + "created_at": 1243933591000, + "created_by": 1085, + "updated_at": 1243933591000, + "updated_by": 1085, + "published_at": 1243933591000, + "published_by": 1085 + }, + { + "id": 304, + "title": "Glapp i iPhone-headset kan vara vanligt ludd", + "slug": "glapp-i-iphone-headset-kan-vara-vanligt-ludd", + "markdown": "\r\nTrots att vi generellt sett är väldigt glada över våra iPhones muttras det förstås om saker som inte fungerar. En sån har varit den dålig kvaliteten på headset, flera headset har slutat fungera – framför allt mikrofonen. Vi började dock ana att något annat var på gång när flera fick samma fel och det inte hjälpte att byta headset... Då började det muttras över dålig kvalitet på iPhones kontakter istället. Till slut fick någon den briljanta idén att det kanske bara var något skräp. Beväpnade med en nål lyckades vi på kort tid pilla ut otippat mycket ludd ur headsetuttagen och har nu fullständigt fungerande både headset och kontakter.\r\n![Bild](http://tekniken.nu/uploads/633801383055322902-IMG_0353.jpg)", + "html": "Trots att vi generellt sett är väldigt glada över våra iPhones muttras det förstås om saker som inte fungerar. En sån har varit den dålig kvaliteten på headset, flera headset har slutat fungera – framför allt mikrofonen. Vi började dock ana att något annat var på gång när flera fick samma fel och det inte hjälpte att byta headset... Då började det muttras över dålig kvalitet på iPhones kontakter istället. Till slut fick någon den briljanta idén att det kanske bara var något skräp. Beväpnade med en nål lyckades vi på kort tid pilla ut otippat mycket ludd ur headsetuttagen och har nu fullständigt fungerande både headset och kontakter.", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Glapp i iPhone-headset kan vara vanligt ludd", + "meta_description": "", + "author_id": 6, + "created_at": 1244541505000, + "created_by": 6, + "updated_at": 1244541505000, + "updated_by": 6, + "published_at": 1244541505000, + "published_by": 6 + }, + { + "id": 327, + "title": "Är du berättigad till gratis Windows 7 uppgradering?", + "slug": "ar-du-berattigad-till-gratis-windows-7-uppgradering", + "markdown": "\r\n\r\nDet är ett vanligt grepp av datortillverkarna & Microsoft att erbjuda gratis uppdatering till nytt Windowsoperativ om man köper en dator månaderna innan lansering. Detta för att undvika att kunderna väntar med att lägga sina beställningar. Samtidigt kan det vara lätt att missa att man kvalificerat in för en gratis uppgradering, så det kan vara idé att kolla upp om man nyligen köpt ny dator.\r\n\r\nGrundreglerna för \"Free Windows 7 Upgrade Program\" är generella för alla större datortillverkare (se lista nedan). Uppgradering gäller för:\r\nBärbara och stationära med en kvalificerande Vistaversion (Home Premium, Business & Ultimate)Datorer köpta mellan 26 juni 2009 och 31 januari 2010.Individer eller företag som köpt/köper färre än 25 datorer. För större volymer finns ett motsvarande \"Volume License Upgrade Program\".\r\nFöljande uppgraderingsvägar erbjuds:\r\n\r\n\r\n\r\nDock vill jag uppmärksamma att detinte kommer vara helt gratis, porto- och administrativa kostnader kommer med all sannolikhet att läggas till priset, men klart billigare jämfört med att köpa en uppgradering. Tommy k Johansson har bloggat om prispåslagen.\r\n\r\nFöljande tillverkare deltar i programmet:\r\n\r\nAcer, Asus, Averatec, Dell, eMachines, Fujitsu, Gateway, HP, Lenovo, Samsung, Sony, Toshiba\r\n\r\nPå Microsofts Windows 7 sida finns uppdaterad lista deltagande tillverkarnas uppgraderingsprogram.\r\n\r\n![Bild](http://tekniken.nu/uploads/633869817680314816-windows_7_logo_from_wallpaper.png)", + "html": "
Det är ett vanligt grepp av datortillverkarna & Microsoft att erbjuda gratis uppdatering till nytt Windowsoperativ om man köper en dator månaderna innan lansering. Detta för att undvika att kunderna väntar med att lägga sina beställningar. Samtidigt kan det vara lätt att missa att man kvalificerat in för en gratis uppgradering, så det kan vara idé att kolla upp om man nyligen köpt ny dator.
Grundreglerna för \"Free Windows 7 Upgrade Program\" är generella för alla större datortillverkare (se lista nedan). Uppgradering gäller för:
- Bärbara och stationära med en kvalificerande Vistaversion (Home Premium, Business & Ultimate)
- Datorer köpta mellan 26 juni 2009 och 31 januari 2010.
- Individer eller företag som köpt/köper färre än 25 datorer. För större volymer finns ett motsvarande \"Volume License Upgrade Program\".
Följande uppgraderingsvägar erbjuds:
Dock vill jag uppmärksamma att detinte kommer vara helt gratis, porto- och administrativa kostnader kommer med all sannolikhet att läggas till priset, men klart billigare jämfört med att köpa en uppgradering. Tommy k Johansson har bloggat om prispåslagen.
Följande tillverkare deltar i programmet:
Acer, Asus, Averatec, Dell, eMachines, Fujitsu, Gateway, HP, Lenovo, Samsung, Sony, Toshiba
På Microsofts Windows 7 sida finns uppdaterad lista deltagande tillverkarnas uppgraderingsprogram.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Är du berättigad till gratis Windows 7 uppgradering?", + "meta_description": "ta. Har du köpt ny dator nyligen, kolla om du kvalificerar!", + "author_id": 1085, + "created_at": 1251911100000, + "created_by": 1085, + "updated_at": 1251911100000, + "updated_by": 1085, + "published_at": 1251911100000, + "published_by": 1085 + }, + { + "id": 335, + "title": "Anslutning med Windows VPN hindrar domänautentiering: Löst!", + "slug": "anslutning-med-windows-vpn-hindrar-domanautentiering-lost", + "markdown": "\r\n\r\nEtt stort problem för oss som ofta sitter med VPN-anslutningar mot externa miljöer är att Windows (Vista och 7) får för sig att använda VPN-anslutningens användarnamn och lösenord även på den lokala domänen. Resultatet blir att alla lokala anslutningar som kräver domäninloggning (nätverksdiskar, skrivare etc) nekas åtkomst med felmeddelandet \"unknown username or wrong password\".\r\n\r\nLösningen på detta är att redigera filen rasphone.pbk, som normalt ligger under C:\\Users\\[username]\\AppData\\Roaming\\Microsoft\\Network\\Connections\\Pbk.\r\n\r\nDenna fil innehåller specifika inställningar för alla RAS-anslutningar (VPN och Dialup), för varje berörd anslutning ändrar man UseRasCredentials=1 till UseRasCredentials=0.\r\n\r\nNotera att man manuellt måste göra ändringen för alla nya anslutningar man lägger till framöver. Förhoppningsvis får vi en kryssruta i anslutningen för detta någon gång i framtiden, men tills dess är detta den bästa lösning jag kommit fram till.\r\n\r\n![Bild](http://tekniken.nu/uploads/Connect-to-VPN.png)", + "html": "Ett stort problem för oss som ofta sitter med VPN-anslutningar mot externa miljöer är att Windows (Vista och 7) får för sig att använda VPN-anslutningens användarnamn och lösenord även på den lokala domänen. Resultatet blir att alla lokala anslutningar som kräver domäninloggning (nätverksdiskar, skrivare etc) nekas åtkomst med felmeddelandet \"unknown username or wrong password\".
Lösningen på detta är att redigera filen rasphone.pbk, som normalt ligger under C:\\Users\\[username]\\AppData\\Roaming\\Microsoft\\Network\\Connections\\Pbk.
Denna fil innehåller specifika inställningar för alla RAS-anslutningar (VPN och Dialup), för varje berörd anslutning ändrar man UseRasCredentials=1 till UseRasCredentials=0.
Notera att man manuellt måste göra ändringen för alla nya anslutningar man lägger till framöver. Förhoppningsvis får vi en kryssruta i anslutningen för detta någon gång i framtiden, men tills dess är detta den bästa lösning jag kommit fram till.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Anslutning med Windows VPN hindrar domänautentiering: Löst!", + "meta_description": "", + "author_id": 1085, + "created_at": 1253186874000, + "created_by": 1085, + "updated_at": 1253186874000, + "updated_by": 1085, + "published_at": 1253186874000, + "published_by": 1085 + }, + { + "id": 342, + "title": "Installera USB-tethering på din HTC Hero i Windows 7", + "slug": "installera-usb-tethering-pa-din-htc-hero-i-windows-7", + "markdown": "\r\n\r\nDet finns två problem när man vill installera stöd för att använda sin HTC Hero som USB modem i Windows 7. Dels är drivrutinen inbakad i programmet HTC Sync som är onödigt att installera om man bara vill ha tethering (Detta gäller även för Vista). Vidare så stödjer HTC fortfarande inte officiellt Windows 7, och installationen av HTC Sync vill därför inte installera drivrutinen trots att den fungerar fint i Windows 7.\r\n\r\nLösningen är dock ganska enkel:\r\n\r\n1. Ladda ner den extraherade Vista-drivrutinen från HTC Sync (se nedan).2. Extrahera drivrutinerna till en lokal mapp.3. Anslut telefonen med USB.4. I telefonen väljer du Settings->Wireless Controls->Mobile Network Sharing5. Öppna enhetshanteraren och leta upp enheten \"Android Phone\", denna skall ha misslyckats med sin drivrutinsinstallation och ha ett gult utropstecken:6. Högerklicka på \"Android Phone\" och välj \"Uppdatera drivrutin\".7. Peka på mappen du extraherat drivrutinen till och inkludera undermappar. Du bör nu få meddelande om att RNDIS-drivrutinen installerades korrekt:8. Klart!\r\n\r\nGällande drivrutiner är jag osäker på om HTC tillåter spridningen av dessa, varför jag inte lägger upp dem för direkthämtning. Filerna du vill leta efter heter dock HTC_Driver_32.zip och HTC_Driver_64.zip, mer info hittar du i den här bloggen.\r\n\r\n![Bild](http://tekniken.nu/uploads/androidlogo.png)", + "html": "Det finns två problem när man vill installera stöd för att använda sin HTC Hero som USB modem i Windows 7. Dels är drivrutinen inbakad i programmet HTC Sync som är onödigt att installera om man bara vill ha tethering (Detta gäller även för Vista). Vidare så stödjer HTC fortfarande inte officiellt Windows 7, och installationen av HTC Sync vill därför inte installera drivrutinen trots att den fungerar fint i Windows 7.
Lösningen är dock ganska enkel:
1. Ladda ner den extraherade Vista-drivrutinen från HTC Sync (se nedan).
2. Extrahera drivrutinerna till en lokal mapp.
3. Anslut telefonen med USB.
4. I telefonen väljer du Settings->Wireless Controls->Mobile Network Sharing
5. Öppna enhetshanteraren och leta upp enheten \"Android Phone\", denna skall ha misslyckats med sin drivrutinsinstallation och ha ett gult utropstecken:
6. Högerklicka på \"Android Phone\" och välj \"Uppdatera drivrutin\".
7. Peka på mappen du extraherat drivrutinen till och inkludera undermappar. Du bör nu få meddelande om att RNDIS-drivrutinen installerades korrekt:
8. Klart!
Gällande drivrutiner är jag osäker på om HTC tillåter spridningen av dessa, varför jag inte lägger upp dem för direkthämtning. Filerna du vill leta efter heter dock HTC_Driver_32.zip och HTC_Driver_64.zip, mer info hittar du i den här bloggen.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Installera USB-tethering på din HTC Hero i Windows 7", + "meta_description": "", + "author_id": 1085, + "created_at": 1254393986000, + "created_by": 1085, + "updated_at": 1254393986000, + "updated_by": 1085, + "published_at": 1254393986000, + "published_by": 1085 + }, + { + "id": 343, + "title": "Flytta en DHCP server - det lätta sättet!", + "slug": "flytta-en-dhcp-server---det-latta-sattet", + "markdown": "\r\n\r\nAtt flytta en DHCP-server manuellt kan vara ganska tidskrävande, framförallt om man har många exclusions och reservations. Men då inga fina export/importmöjligheter finns via Windows Servers DHCP admin så har jag alltid accepterat att det är manuellt arbete som gäller. Det visar sig dock att det från och med Windows Server 2003 är en ganska enkel sak att göra via command-line-verktyget NETSH.\r\n\r\nFöljande artikel från Microsoft visar hur du flyttar DHCP-databasen till en Windows 2003 server från Windows 2003, Windows 2000 och NT4:\r\n\r\nhttp://support.microsoft.com/kb/325473/\r\n\r\nKortfattad beskrivning för att flytta mellan två Windows 2003 servrar:\r\n\r\n1. Installera DHCP Server på den nya servern2. På den gamla servern, öppna en kommandoprompt.3. Skriv och kör netsh dhcp server export C:\\dhcp.txt all4. Flytta filen dhcp.txt till C-roten på den nya servern5. Skriv och kör netsh dhcp server import c:\\dhcp.txt all (på den nya servern)6. Avauktorisera och stoppa den gamla servern7. Auktorisera den nya servern8. Testa med en klientdator\r\n\r\nGrymt smidigt!\r\n\r\n![Bild](http://tekniken.nu/uploads/Windows2003logo.jpg)", + "html": "Att flytta en DHCP-server manuellt kan vara ganska tidskrävande, framförallt om man har många exclusions och reservations. Men då inga fina export/importmöjligheter finns via Windows Servers DHCP admin så har jag alltid accepterat att det är manuellt arbete som gäller. Det visar sig dock att det från och med Windows Server 2003 är en ganska enkel sak att göra via command-line-verktyget NETSH.
Följande artikel från Microsoft visar hur du flyttar DHCP-databasen till en Windows 2003 server från Windows 2003, Windows 2000 och NT4:
http://support.microsoft.com/kb/325473/
Kortfattad beskrivning för att flytta mellan två Windows 2003 servrar:
1. Installera DHCP Server på den nya servern
2. På den gamla servern, öppna en kommandoprompt.
3. Skriv och kör netsh dhcp server export C:\\dhcp.txt all
4. Flytta filen dhcp.txt till C-roten på den nya servern
5. Skriv och kör netsh dhcp server import c:\\dhcp.txt all (på den nya servern)
6. Avauktorisera och stoppa den gamla servern
7. Auktorisera den nya servern
8. Testa med en klientdator
Grymt smidigt!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Flytta en DHCP server - det lätta sättet!", + "meta_description": "", + "author_id": 1085, + "created_at": 1254486900000, + "created_by": 1085, + "updated_at": 1254486900000, + "updated_by": 1085, + "published_at": 1254486900000, + "published_by": 1085 + }, + { + "id": 364, + "title": "Installera alla program samtidigt!", + "slug": "installera-alla-program-samtidigt", + "markdown": "\r\n\r\nNu i Windows-7 tider är det många som ominstallerar sin dator - använd denna sajt och kryssa för alla program du vill installera, Chrome, Firefox, Skype, iTunes etc.\r\n\r\nNär du ska ominstallera din dator tar det alltid lite tid att hitta alla program som man brukar ha, sen tar det tid att hämta hem och installera varje program som ofta också behöver starta om datorn. Nu finns det en sajt som samlar dessa program och bakar ihop de program du vill ha och skapar en gemensam installationsfil som automatiskt hämtar och installerar den senaste versionen av de markerade programmen. Det fina är också att installationsfilen som skapas endast innehåller länkar till företagens egna filer och börjar installera det första programmet under tiden som resterande program laddas ner!\r\n\r\n\r\n\r\nLycka till!\r\n\r\n![Bild](http://tekniken.nu/uploads/633921910137552889-image002.jpg@01CA562B.A784EF50__image002.jpg)", + "html": "Nu i Windows-7 tider är det många som ominstallerar sin dator - använd denna sajt och kryssa för alla program du vill installera, Chrome, Firefox, Skype, iTunes etc.
När du ska ominstallera din dator tar det alltid lite tid att hitta alla program som man brukar ha, sen tar det tid att hämta hem och installera varje program som ofta också behöver starta om datorn. Nu finns det en sajt som samlar dessa program och bakar ihop de program du vill ha och skapar en gemensam installationsfil som automatiskt hämtar och installerar den senaste versionen av de markerade programmen. Det fina är också att installationsfilen som skapas endast innehåller länkar till företagens egna filer och börjar installera det första programmet under tiden som resterande program laddas ner!
Lycka till!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Installera alla program samtidigt!", + "meta_description": "installationspaket med alla dina favoritapplikationer!", + "author_id": 1087, + "created_at": 1256641620000, + "created_by": 1087, + "updated_at": 1256641620000, + "updated_by": 1087, + "published_at": 1256641620000, + "published_by": 1087 + }, + { + "id": 369, + "title": "Varning för att ersätta mappar på Mac", + "slug": "varning-for-att-ersatta-mappar-pa-mac", + "markdown": "\r\n\r\nEn väldigt viktig och farlig sak som är viktig att känna till när man byter från Windows till Apple OS X är vad som händer när man ersätter en mapp med en annan mapp. Om man har en mapp med semesterbilder på sin hårddisk och döpt mappen till 2009 – sedan vill man kopiera över en mapp från ett USB-minne som också heter 2009. I Windows skulle detta innebära att man slår ihop mapparna och finns det dubletter på filnivå kommer systemet att fråga vad man ska göra med de enskilda filerna. I ovanstående scenario i OS X kommer operativsystemet fråga om du är säker att du vill ersätta objektet med den nyare vilket betyder precis så – du ERSÄTTER den gamla 2009 mappen med den nya mappen och den gamla mappen finns ingenstans att hitta – inte ens i papperskorgen.\r\n\r\n\r\n\r\nDen gamla filen finns där bakom nånstans, det är ju ett UNIX-filsystem så det är ju bara själva referensen till mappen som är borta och jag vet att det finns massa tredjepartsprogram och UNIX-kommandon man kan köra för att göra en merge mellan mappar men det är inte det viktiga. Som användare är man väldigt förvånad när systemet beter sig så olika mellan Windows och OS X.\r\n\r\nDen tekniska skillnaden är att OS X ser mappar och filer på precis samma sätt – som objekt. När du ersätter en fil eller en mapp så spelar det ingen roll – referensen flyttas till att peka på ditt nya objekt och alla objekt utan referenser tas automatiskt bort från filsystemet. Detta finurliga sätt är väldigt mycket smartare i de flesta fallen jämfört med Windows NTFS som har filnamnet och sökvägen som referens och därför behöver låsa filer som används osv vilket kräver att installationsprogram behöver starta om datorn för att ersätta filer (eller använda Windows Shadow Copy som gör detta).\r\n\r\nOm någon har tips för hur man på ett enkelt sätt ska kunnna slå ihop mappar på en mac kan ni kommentera nedan – går det till exempel att hålla i en knapp för att ändra beteendet? Också – vet någon var man kan hitta objekt som har tappat sina referenser finns någonstans?\r\n\r\nI Windows 7 ser motsvarande dialog ut så här, dvs den frågar om du vill slå ihop mapparna:\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/633928391802687625-image001.png@01CA5C60.2E840420__image001.png)", + "html": "En väldigt viktig och farlig sak som är viktig att känna till när man byter från Windows till Apple OS X är vad som händer när man ersätter en mapp med en annan mapp. Om man har en mapp med semesterbilder på sin hårddisk och döpt mappen till 2009 – sedan vill man kopiera över en mapp från ett USB-minne som också heter 2009. I Windows skulle detta innebära att man slår ihop mapparna och finns det dubletter på filnivå kommer systemet att fråga vad man ska göra med de enskilda filerna. I ovanstående scenario i OS X kommer operativsystemet fråga om du är säker att du vill ersätta objektet med den nyare vilket betyder precis så – du ERSÄTTER den gamla 2009 mappen med den nya mappen och den gamla mappen finns ingenstans att hitta – inte ens i papperskorgen.
Den gamla filen finns där bakom nånstans, det är ju ett UNIX-filsystem så det är ju bara själva referensen till mappen som är borta och jag vet att det finns massa tredjepartsprogram och UNIX-kommandon man kan köra för att göra en merge mellan mappar men det är inte det viktiga. Som användare är man väldigt förvånad när systemet beter sig så olika mellan Windows och OS X.
Den tekniska skillnaden är att OS X ser mappar och filer på precis samma sätt – som objekt. När du ersätter en fil eller en mapp så spelar det ingen roll – referensen flyttas till att peka på ditt nya objekt och alla objekt utan referenser tas automatiskt bort från filsystemet. Detta finurliga sätt är väldigt mycket smartare i de flesta fallen jämfört med Windows NTFS som har filnamnet och sökvägen som referens och därför behöver låsa filer som används osv vilket kräver att installationsprogram behöver starta om datorn för att ersätta filer (eller använda Windows Shadow Copy som gör detta).
Om någon har tips för hur man på ett enkelt sätt ska kunnna slå ihop mappar på en mac kan ni kommentera nedan – går det till exempel att hålla i en knapp för att ändra beteendet? Också – vet någon var man kan hitta objekt som har tappat sina referenser finns någonstans?
I Windows 7 ser motsvarande dialog ut så här, dvs den frågar om du vill slå ihop mapparna:
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Varning för att ersätta mappar på Mac", + "meta_description": "", + "author_id": 1087, + "created_at": 1257242378000, + "created_by": 1087, + "updated_at": 1257242378000, + "updated_by": 1087, + "published_at": 1257242378000, + "published_by": 1087 + }, + { + "id": 372, + "title": "Inaktivera Windows Updates omstartsprompt", + "slug": "inaktivera-windows-updates-omstartsprompt", + "markdown": "\r\n\r\nEn av de mest irriterande saker jag vet är när man råkar initiera en serveromstart pga att Windows Update slänger upp en prompt om att det är dags att starta om datorn precis på det ställe där man just skall klicka på någonting annat.\r\n\r\nNi känner igen rutan:\r\n\r\nOm du klickar \"Restart Now\" får du ingen ytterligare prompt om att bekräfta, och servern starar om.\r\n\r\nSom tur är så går dessa notifieringar enkelt att ändra eller avaktivera genom en grupprincip (GPO):\r\n\r\nObjektet “Re-prompt for restart with scheduled installations” ligger under ”Local Computer Policy > Computer Configuration > Administrative Templates > Windows Components > Windows Update”:\r\n\r\n\r\n\r\nDu kan antingen inaktivera eller sätta ett eget värde för hur ofta du vill bli notifierad (10 minuter är standard):\r\n\r\n\r\n\r\nUtför ändringen lokalt på berörda maskiner, eller skapa en domänbaserad GPO och associera med de maskingrupper du vill ändra.\r\n\r\nSjälvklart är det viktigt att man startar om datorn som en del av patchrutinen, men oftast vill man själv styra över när omstarten sker. Iom ändringen ovan så kommer WU fortfarande att notifiera dig om att en omstart väntar i aktivitetsfältet, men du slipper popup-prompten.\r\n\r\n![Bild](http://tekniken.nu/uploads/633936174790452825-vista.png)", + "html": "En av de mest irriterande saker jag vet är när man råkar initiera en serveromstart pga att Windows Update slänger upp en prompt om att det är dags att starta om datorn precis på det ställe där man just skall klicka på någonting annat.
Ni känner igen rutan:
Om du klickar \"Restart Now\" får du ingen ytterligare prompt om att bekräfta, och servern starar om.
Som tur är så går dessa notifieringar enkelt att ändra eller avaktivera genom en grupprincip (GPO):
Objektet “Re-prompt for restart with scheduled installations” ligger under ”Local Computer Policy > Computer Configuration > Administrative Templates > Windows Components > Windows Update”:
Du kan antingen inaktivera eller sätta ett eget värde för hur ofta du vill bli notifierad (10 minuter är standard):
Utför ändringen lokalt på berörda maskiner, eller skapa en domänbaserad GPO och associera med de maskingrupper du vill ändra.
Självklart är det viktigt att man startar om datorn som en del av patchrutinen, men oftast vill man själv styra över när omstarten sker. Iom ändringen ovan så kommer WU fortfarande att notifiera dig om att en omstart väntar i aktivitetsfältet, men du slipper popup-prompten.
Jag har nu vid ett par tillfällen stött på den otömbara papperskorgen i Windows 7. Efter att man har klickat på ”Töm papperskorgen” så står det helt enkelt helt stilla, utan att den någonsin tömmer sig.
Lösningen är lyckligtvis relativt enkel.
Vi börjar med att visa dolda filer och systemfiler.
- Starta utforskaren, klicka på Ordna och välj sedan Mapp- och sökalternativ.
- Under Visning bockar du sedan bort ”Dölj skyddade operativsystemfiler” och bockar för att visa dolda filer, mappar och enheter.
Ta sedan bort mappen $Recycle.bin under C:\\ (kan även ligga under andra enheter, om det är de som krånglar.
Starta om och njut av en fungerande papperskorg!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Otömbar papperskorg i Windows 7", + "meta_description": "", + "author_id": 1088, + "created_at": 1259057725000, + "created_by": 1088, + "updated_at": 1259057725000, + "updated_by": 1088, + "published_at": 1259057725000, + "published_by": 1088 + }, + { + "id": 380, + "title": "Installera HP-skrivare på Small Business Server", + "slug": "installera-hp-skrivare-pa-small-business-server", + "markdown": "\r\n\r\nI princip alla HP-skrivare har bra stöd för snart sagt alla versioner av Windows, inklusive Server och 64-bitarsversion. Därför blir man lite frustrerad när installationsprogrammet för drivrutinerna inte går att köra på Small Business Server. Installationsprogrammet stannar med meddelandet att ”operativsystemet stöds inte”. Känns lite extra larvigt eftersom SBS ju är en vanlig Windows Server med lite bundlade andra programvaror.\r\n\r\n\r\n\r\nNågonstans långt ner i HPs supportforum hittade jag lösningen, som är värdig den gamla IT-filmsklassikern The Net med Sandra Bullock:\r\n\r\nFör att komma vidare i installationen – håll ner CTRL och SHIFT och tryck på cancel. Alla applikationer och drivrutiner fungerar förstås fint på Small Business Server efter installationen.\r\n\r\n![Bild](http://tekniken.nu/uploads/633984521346867374-net.jpg)", + "html": "I princip alla HP-skrivare har bra stöd för snart sagt alla versioner av Windows, inklusive Server och 64-bitarsversion. Därför blir man lite frustrerad när installationsprogrammet för drivrutinerna inte går att köra på Small Business Server. Installationsprogrammet stannar med meddelandet att ”operativsystemet stöds inte”. Känns lite extra larvigt eftersom SBS ju är en vanlig Windows Server med lite bundlade andra programvaror.
Någonstans långt ner i HPs supportforum hittade jag lösningen, som är värdig den gamla IT-filmsklassikern The Net med Sandra Bullock:
För att komma vidare i installationen – håll ner CTRL och SHIFT och tryck på cancel. Alla applikationer och drivrutiner fungerar förstås fint på Small Business Server efter installationen.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Installera HP-skrivare på Small Business Server", + "meta_description": "", + "author_id": 6, + "created_at": 1262855333000, + "created_by": 6, + "updated_at": 1262855333000, + "updated_by": 6, + "published_at": 1262855333000, + "published_by": 6 + }, + { + "id": 389, + "title": "Slå ihop ledigt utrymme på en DELL Powervault MD3000i", + "slug": "sla-ihop-ledigt-utrymme-pa-en-dell-powervault-md3000i", + "markdown": "\r\n\r\nNär man tar bort en Virtuell disk i en Dell Powervault 3000i så lämnas lediga utrymmet från den borttagna disken isolerat i den gamla diskens plats istället för att slås ihop med övrigt ledigt utrymme i diskgruppen. Detta ställer ju till problem i alla scenarier där man inte är ute efter att skapa en ny identisk virtuell disk. Så här ser det ut i admingränssnittet:\r\n\r\n\r\n\r\nDet man vill uppnå är såklart att slå ihop det lediga utrymmet till en diskyta, men för den operationen saknas stöd i administrationsverktyget. Istället får man ta till command line interfacet SMcli och initiera en defrag. SMcli ligger normalt i mappen ”C:\\Program Files\\Dell\\MD Storage Manager\\client” och installeras tillsammans med adminverktygen.\r\n\r\nFör att initiera en defrag så kör man följande kommando:\r\n\r\nSMcli controller_0_IP controller_1_IP -c “start diskGroup [1] defragment;”\r\n\r\nOm din MD3000i endast har en controller så anger du endast den IP-adressen, om array är lösnenordsskyddad lägger du till ”-p yourarraypassword”.\r\n\r\nVill man köra mot diskgruppens namn så använder man följande lite kryptiska formatering:\r\n\r\nSMcli controller_0_IP controller_1_IP -c “start diskGroup [\\”NAMEOFDISKGROUP\\”] defragment;”\r\n\r\nProcessen kan ta ett bra tag beroende på storleken på din array, men syns tydligt i admingränssnittet under ”Operations in progress”.\r\n\r\n![Bild](http://tekniken.nu/uploads/md3000i.png)", + "html": "När man tar bort en Virtuell disk i en Dell Powervault 3000i så lämnas lediga utrymmet från den borttagna disken isolerat i den gamla diskens plats istället för att slås ihop med övrigt ledigt utrymme i diskgruppen. Detta ställer ju till problem i alla scenarier där man inte är ute efter att skapa en ny identisk virtuell disk. Så här ser det ut i admingränssnittet:
Det man vill uppnå är såklart att slå ihop det lediga utrymmet till en diskyta, men för den operationen saknas stöd i administrationsverktyget. Istället får man ta till command line interfacet SMcli och initiera en defrag. SMcli ligger normalt i mappen ”C:\\Program Files\\Dell\\MD Storage Manager\\client” och installeras tillsammans med adminverktygen.
För att initiera en defrag så kör man följande kommando:
SMcli controller_0_IP controller_1_IP -c “start diskGroup [1] defragment;”
Om din MD3000i endast har en controller så anger du endast den IP-adressen, om array är lösnenordsskyddad lägger du till ”-p yourarraypassword”.
Vill man köra mot diskgruppens namn så använder man följande lite kryptiska formatering:
SMcli controller_0_IP controller_1_IP -c “start diskGroup [\\”NAMEOFDISKGROUP\\”] defragment;”
Processen kan ta ett bra tag beroende på storleken på din array, men syns tydligt i admingränssnittet under ”Operations in progress”.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Slå ihop ledigt utrymme på en DELL Powervault MD3000i", + "meta_description": "", + "author_id": 1085, + "created_at": 1267023716000, + "created_by": 1085, + "updated_at": 1267023716000, + "updated_by": 1085, + "published_at": 1267023716000, + "published_by": 1085 + }, + { + "id": 393, + "title": "Konvertera fysisk maskin till virtuell (P2V) för Hyper-V med XenConvert ", + "slug": "konvertera-fysisk-maskin-till-virtuell-p2v-for-hyper-v-med-xenconvert-", + "markdown": "\r\n\r\nJag stod nyligen inför uppdraget att konvertera några äldre fysiska maskiner till virtuella. Kunden kör Microsoft Hyper-V så mina tankar gick till System Center Virtual Machine Manager, SCVMM. Jag har tidigare använt det verktyget för konvertering men drog mig lite för att göra om det, då installationen är ganska omständlig.\r\n\r\nJag bestämde mig därför för att använda Citrix XenConvert istället, ett gratisverktyg från Citrix avsett att användas främst mot deras XenServer. Det går också att ställa den till att skapa VHD filer, något som passar mig utmärkt. XenConvert finns att ta hem från Citrix, logga in på ”MyCitrix” först och leta under XenServer downloads – det är inte lätt att hitta.\r\n\r\nTidigare versioner har varit begränsade av att bara kunna konvertera hårddiskar med en partition, något som snabbt ställer till problem. Med nuvarande 2.1 går det utan problem med fler. Bra att veta är att om din ursprungsserver har flera partitioner eller hårddiskar får du ändå bara en VHD fil, alltså inte en VHD per disk.\r\n\r\nNågra punkter att tänka på innan man börjar konvertering:\r\n\r\nEndast Server 2003, XP eller äldre går att konverteraEndast Basic disks, ej DynamicAutorun måste stängas av i registret. Mer om det här.Uppmappade nätverksdiskar får inte ha enhetsbokstäver direkt efterföljande dina fysiska diskar eller optiska enheter.\r\n\r\nNär jag konverterade körde jag till en USB-disk, att konvertera över nätverket var väldigt långsamt, trots bra hårdvara.\r\n\r\nNär konverteringen är klar och vi startar upp maskinen kommer rester av det fysiska nätverkskortet finnas kvar. Detta kommer att märkas genom att maskinen klagar när du sätter samma IP adress på det nya virtuella kortet som det gamla fysiska hade. Jag råkade också ut för att maskinerna fastnade på ”Applying computer settings” i tio minuter, tills de når timeout för GPO inställningar.\r\n\r\nAtt ta bort det spökande nätverkskortet är lite svårare än förväntat. Det går inte att se i ”Device Manager” trots ”Show hidden devices”\r\n\r\nIstället behöver man använda verktyget Devcon. Det går att ta hem härifrån.\r\n\r\nAnvänd sedan kommandot devcon findall =net för att få fram en lista på installerade nätverksadaptrar. Hitta ID för de fysiska adaptrar som tidigare användes. Ditt ID kan se ut exempelvis så här:\r\n\r\nPCI\\VEN_14E4&DEV_167A&SUBSYS_01DA1028&REV_02\\4&19633CA3&0&00E4\r\n\r\nFör att ta bort adaptern ovan skriver man:\r\n\r\nDevcon remove ”@PCI\\VEN_14E4&DEV_167A&SUBSYS_01DA1028&REV_02\\4&19633CA3&0&00E4” - Missa inte @-tecknet i början.\r\n\r\nEfter en omstart ska inga nätverksproblem kvarstå och din nya virtuella maskin är klar för användning.\r\n\r\n![Bild](http://tekniken.nu/uploads/634037563996435635-image003.png@01CABEE9.F12B88E0__image003.png)", + "html": "Jag stod nyligen inför uppdraget att konvertera några äldre fysiska maskiner till virtuella. Kunden kör Microsoft Hyper-V så mina tankar gick till System Center Virtual Machine Manager, SCVMM. Jag har tidigare använt det verktyget för konvertering men drog mig lite för att göra om det, då installationen är ganska omständlig.
Jag bestämde mig därför för att använda Citrix XenConvert istället, ett gratisverktyg från Citrix avsett att användas främst mot deras XenServer. Det går också att ställa den till att skapa VHD filer, något som passar mig utmärkt. XenConvert finns att ta hem från Citrix, logga in på ”MyCitrix” först och leta under XenServer downloads – det är inte lätt att hitta.
Tidigare versioner har varit begränsade av att bara kunna konvertera hårddiskar med en partition, något som snabbt ställer till problem. Med nuvarande 2.1 går det utan problem med fler. Bra att veta är att om din ursprungsserver har flera partitioner eller hårddiskar får du ändå bara en VHD fil, alltså inte en VHD per disk.
Några punkter att tänka på innan man börjar konvertering:
- Endast Server 2003, XP eller äldre går att konvertera
- Endast Basic disks, ej Dynamic
- Autorun måste stängas av i registret. Mer om det här.
- Uppmappade nätverksdiskar får inte ha enhetsbokstäver direkt efterföljande dina fysiska diskar eller optiska enheter.
När jag konverterade körde jag till en USB-disk, att konvertera över nätverket var väldigt långsamt, trots bra hårdvara.
När konverteringen är klar och vi startar upp maskinen kommer rester av det fysiska nätverkskortet finnas kvar. Detta kommer att märkas genom att maskinen klagar när du sätter samma IP adress på det nya virtuella kortet som det gamla fysiska hade. Jag råkade också ut för att maskinerna fastnade på ”Applying computer settings” i tio minuter, tills de når timeout för GPO inställningar.
Att ta bort det spökande nätverkskortet är lite svårare än förväntat. Det går inte att se i ”Device Manager” trots ”Show hidden devices”
Istället behöver man använda verktyget Devcon. Det går att ta hem härifrån.
Använd sedan kommandot devcon findall =net för att få fram en lista på installerade nätverksadaptrar. Hitta ID för de fysiska adaptrar som tidigare användes. Ditt ID kan se ut exempelvis så här:
PCI\\VEN_14E4&DEV_167A&SUBSYS_01DA1028&REV_02\\4&19633CA3&0&00E4
För att ta bort adaptern ovan skriver man:
Devcon remove ”@PCI\\VEN_14E4&DEV_167A&SUBSYS_01DA1028&REV_02\\4&19633CA3&0&00E4” - Missa inte @-tecknet i början.
Efter en omstart ska inga nätverksproblem kvarstå och din nya virtuella maskin är klar för användning.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Konvertera fysisk maskin till virtuell (P2V) för Hyper-V med XenConvert ", + "meta_description": "", + "author_id": 1088, + "created_at": 1268213640000, + "created_by": 1088, + "updated_at": 1268213640000, + "updated_by": 1088, + "published_at": 1268213640000, + "published_by": 1088 + }, + { + "id": 413, + "title": "Problem att få ljudet att fungera genom RDP mot en Windows server?", + "slug": "problem-att-fa-ljudet-att-fungera-genom-rdp-mot-en-windows-server", + "markdown": "\r\n\r\nJag har stött på detta på vid ett flertal tillfällen, både i Windows Server version 2003 och 2008. Nedan finner du ett par enkla steg för att få ljudet ut till dina högtalare.\r\nPå servern:Se till att tjänsten Windows Audio är startad samt att den står på automatisk uppstart.Gå sedan till Terminal Services Configuration. Dubbelklicka på RDP-TCP och gå till flikenClient Settings. Under Disable the following kryssar du ur Audio mapping. För att ändringen skall gå igenom måste man logga ut och sedan logga in på nytt.\r\n\r\nPå klientdatorn:Ställ in RDP-klienten (enligt bilden nedan) för att spela upp ljudet på din dator.\r\n\r\n![Bild](http://tekniken.nu/uploads/634104882274773832-Capture2.JPG)", + "html": "Jag har stött på detta på vid ett flertal tillfällen, både i Windows Server version 2003 och 2008. Nedan finner du ett par enkla steg för att få ljudet ut till dina högtalare.
På servern:
Se till att tjänsten Windows Audio är startad samt att den står på automatisk uppstart.
Gå sedan till Terminal Services Configuration. Dubbelklicka på RDP-TCP och gå till flikenClient Settings. Under Disable the following kryssar du ur Audio mapping. För att ändringen skall gå igenom måste man logga ut och sedan logga in på nytt.
På klientdatorn:
Ställ in RDP-klienten (enligt bilden nedan) för att spela upp ljudet på din dator.
Om du har ett Mac-tangentbord/Macbook och kör Windows XP, Vista eller Windows 7 så kan det vara praktiskt att mappa om några tangenter för att tangentbordet ska fungera mer som ett PC-tangentbord.
Det är enkelt. Hämta gratisprogrammet SharpKeys (http://sharpkeys.codeplex.com) och skapa mappningar av följande knappar:
Här växlar vi plats på CMD-tangenten och Alt vilket gör att du enklare kan växla fönster med ALT-TAB.
För oss svenskar sitter ju @ tangenten lite krångligt till med ALT-GR vilken inte finns på ett Mac tangentbord så den länkar vi om till den högra alt-knappen (Right-Alt) samt länkar även den högra CMD knappen till ALT så att den ligger rätt i fingersättningen (dvs du har nu två högra alt-knappar).
När du gjort dinna mappningar trycker du på Write to registry och sedan kan du avinstallera programmet. Det behöver inte vara igång för att mappningen ska fungera.
Du kan också gå in i programmet BootCamp control panel och kryssa för att du vill använda dina F1-F12 tangenter som vanligt:
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Så här får du rätt knappar på ditt Mac-tangentbord", + "meta_description": "", + "author_id": 1087, + "created_at": 1277143836000, + "created_by": 1087, + "updated_at": 1277143836000, + "updated_by": 1087, + "published_at": 1277143836000, + "published_by": 1087 + }, + { + "id": 459, + "title": "Tips för att undvika strul med DNS server", + "slug": "tips-for-att-undvika-strul-med-dns-server", + "markdown": "\r\nJust nu pågår en stor driftstörning hos Telia och för de som är drabbade kan man inte längre surfa på nätet om man har Telia bredband. DNS är en teknik som fungerar ungefär som en automatisk nummerupplysning men istället för telefonnummer slås IP adresser upp. När du skriver in www.aftonbladet.se så skickas en förfrågan till din routers DNS server som därefter frågar Telias DNS server och om någon av dessa inte längre fungerar blir resultatet att din webbläsare inte längre vet var den ska vända sig för att kontakta webbservern. Resultatet är alltså att trots att din uppkoppling fungerar utmärkt så kan du ändå inte surfa eller maila.\r\n\r\nFör att undvika strul med detta så finns det några knep och det bästa är att manuellt lägga in en sekundär DNS server i dina inställningar vilket innebär att om något strular med den vanliga DNS tjänsten så kommer datorn automatiskt pröva med den sekundära DNS servern.\r\n\r\nGoogle tillhandahåller gratis en DNS tjänst som har hög driftsäkerhet och bra prestanda och dessutom har den en väldigt enkel IP-adress som gör det enkelt att komma ihåg: 8.8.8.8 och 8.8.4.4\r\n\r\nFör att ställa in sekundär DNS i Windows 7 går du först till kontrollpanelen, väljer nätverksinställningar, klickar på länken till vänster i rutan som heter Ändra adapterinställningar. Därefter högerklickar du på det nätverkskort som du surfar genom (vanligtvis trådlös uppkoppling), välj Egenskaper.\r\n\r\n\r\n\r\nNu markerar du TCP/IP version 4 i listan och väljer Egenskaper. Här kan du nu fylla i DNS server inställningar manuellt. Med följande inställningar använder du alltid Googles DNS servrar:\r\n\r\n\r\n\r\nFör att behålla din gamla DNS server behöver du först ta reda på vilken adress du tidigare hade och det gör du enklast genom att starta kommandotolken via startmenyn: ”CMD”. Därefter skriver du ”ipconfig /all”\r\n\r\n\r\n\r\nDärefter kontrollerar du raden som står DNS Server. Skriv ner din gamla DNS server och fyll i det i fältet ovan ”preferred DNS server”\r\n\r\n\r\n\r\nNu kommer din internetuppkoppling fungera bra även om din bredbandsleverantör har problem och störningar med DNS.\r\n\r\nChristian\r\n![Bild](http://tekniken.nu/uploads/634275276692030194-image001.png)", + "html": "Just nu pågår en stor driftstörning hos Telia och för de som är drabbade kan man inte längre surfa på nätet om man har Telia bredband. DNS är en teknik som fungerar ungefär som en automatisk nummerupplysning men istället för telefonnummer slås IP adresser upp. När du skriver in www.aftonbladet.se så skickas en förfrågan till din routers DNS server som därefter frågar Telias DNS server och om någon av dessa inte längre fungerar blir resultatet att din webbläsare inte längre vet var den ska vända sig för att kontakta webbservern. Resultatet är alltså att trots att din uppkoppling fungerar utmärkt så kan du ändå inte surfa eller maila.
För att undvika strul med detta så finns det några knep och det bästa är att manuellt lägga in en sekundär DNS server i dina inställningar vilket innebär att om något strular med den vanliga DNS tjänsten så kommer datorn automatiskt pröva med den sekundära DNS servern.
Google tillhandahåller gratis en DNS tjänst som har hög driftsäkerhet och bra prestanda och dessutom har den en väldigt enkel IP-adress som gör det enkelt att komma ihåg: 8.8.8.8 och 8.8.4.4
För att ställa in sekundär DNS i Windows 7 går du först till kontrollpanelen, väljer nätverksinställningar, klickar på länken till vänster i rutan som heter Ändra adapterinställningar. Därefter högerklickar du på det nätverkskort som du surfar genom (vanligtvis trådlös uppkoppling), välj Egenskaper.
Nu markerar du TCP/IP version 4 i listan och väljer Egenskaper. Här kan du nu fylla i DNS server inställningar manuellt. Med följande inställningar använder du alltid Googles DNS servrar:
För att behålla din gamla DNS server behöver du först ta reda på vilken adress du tidigare hade och det gör du enklast genom att starta kommandotolken via startmenyn: ”CMD”. Därefter skriver du ”ipconfig /all”
Därefter kontrollerar du raden som står DNS Server. Skriv ner din gamla DNS server och fyll i det i fältet ovan ”preferred DNS server”
Nu kommer din internetuppkoppling fungera bra även om din bredbandsleverantör har problem och störningar med DNS.
Christian",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "Tips för att undvika strul med DNS server",
+ "meta_description": "",
+ "author_id": 1087,
+ "created_at": 1292234520000,
+ "created_by": 1087,
+ "updated_at": 1292234520000,
+ "updated_by": 1087,
+ "published_at": 1292234520000,
+ "published_by": 1087
+ },
+ {
+ "id": 462,
+ "title": "Flytta in gamla AD användare till Windows SBS 2008 Console",
+ "slug": "flytta-in-gamla-ad-anvandare-till-windows-sbs-2008-console",
+ "markdown": "\r\n\r\nVid migrering från Windows Server 2003 standard till Small Business Server 2008 ser det vid första anblicken ut som att alla användare inte hängt med.\r\n\r\nOm du vill använda dig av SBS Console behöver du göra ett litet knep till.\r\n\r\nDet går inte att bara placera användarna i ”rätt” OU, det vill säga SBSUsers. Det går inte heller att bara göra användaren medlem av rätt grupper.\r\n\r\nDet man måste göra är att i SBS Console under Users välja ”Change user role for user accounts”.\r\n\r\nVälj därefter exempelvis ”Standard user” och ”Add user permissions or settings” för att inte ta bort befintliga grupper. Efter att ha klickat next kommer vi till kryssrutan man saknar i själva SBS Console; ”Display all user accounts in Active Directory”.\r\n\r\nKryssa i den och välj dina användare, klicka på ”Change user role”\r\n\r\nAnvändaren dyker därefter snällt upp i SBS Console.\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/634286895219432782-image002.jpg@01CBA12B.5DBDB310__image002.jpg)",
+ "html": "
Vid migrering från Windows Server 2003 standard till Small Business Server 2008 ser det vid första anblicken ut som att alla användare inte hängt med.
Om du vill använda dig av SBS Console behöver du göra ett litet knep till.
Det går inte att bara placera användarna i ”rätt” OU, det vill säga SBSUsers. Det går inte heller att bara göra användaren medlem av rätt grupper.
Det man måste göra är att i SBS Console under Users välja ”Change user role for user accounts”.
Välj därefter exempelvis ”Standard user” och ”Add user permissions or settings” för att inte ta bort befintliga grupper. Efter att ha klickat next kommer vi till kryssrutan man saknar i själva SBS Console; ”Display all user accounts in Active Directory”.
Kryssa i den och välj dina användare, klicka på ”Change user role”
Användaren dyker därefter snällt upp i SBS Console.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Flytta in gamla AD användare till Windows SBS 2008 Console", + "meta_description": "", + "author_id": 1088, + "created_at": 1293092719000, + "created_by": 1088, + "updated_at": 1293092719000, + "updated_by": 1088, + "published_at": 1293092719000, + "published_by": 1088 + }, + { + "id": 483, + "title": "Windows Update på MacBook Air orsakade uppstartsproblem", + "slug": "windows-update-pa-macbook-air-orsakade-uppstartsproblem", + "markdown": "\r\n## Apple Multitouch 3.2.0.1 x64 Driver Windows 7 – Windows Update BSOD \r\nDet installerades en härlig Windows Update uppdatering automatiskt på min MacBook Air som gjorde att den efter omstart aldrig mer ville starta upp i Windows-läge.\r\n## Anledning\r\nWindows Update gjorde sin uppdatering innehållande en uppdatering på sin Multitouch (samt Apple Magic Mouse?). Den uppdateringen i kombination med BootCamp 3.1 gjorde att datorn aldrig mer kunde starta upp.\r\n\r\nDet klagades vid omstart på drivrutinen applemtp.sys och på applemtm.sys.\r\n## Här är lösningen, steg-för-steg\r\nEfter prövning med många olika varianter som t.ex. restore till tidigare datum, starta upp i felsäkert läge (som inte gick på grund av att drivrutinen lästes in) så lyckades jag äntligen lösa problemet.\r\n\r\n1. Starta upp datorn i ”Startup repair” läget.\r\n\r\n2. Låt den försöka lösa det på egen hand (som inte kommer gå men man kan inte hoppa över detta steg).\r\n\r\n3. Välj ”view advanced options for system recovery and support”\r\n\r\n4. Välj ”Command Prompt”\r\n\r\n5. Ta dig fram till ”C:\\Windows\\System32\\DriverStore\\FileRepository\\applemtp.....” (resten av filnamnet är olika beroende på om det är 32 eller 64 bitars)\r\n\r\n6. Gå in i mappen ”applemtp...”-mappen\r\n\r\n7. Skapa där en tempmapp och flytta in alla filer dit från denna mapp alternativt ta bort filerna\r\n\r\n8. Gör samma sak fast med ”applemtm...”-mappen\r\n\r\n9. Gå sedan till ”C:\\Windows\\System32\\Drivers” och byt filändelse på applemtp.sys och applemtm.sys så de inte körs vid uppstart (t.ex. till .old eller .tmp)\r\n\r\n10. Starta om datorn\r\n\r\n11. När windows 7 nu äntligen startar uppdatera BootCamp till 3.2 (Tips, ha en annan mus till hands annars är det jobbigt att uppdatera BootCamp eftersom både Multitouch och Magic Mouse slutar att fungera, det märkte jag!)\r\n\r\n12. Nu fungerar datorn som den ska igen\r\n\r\nIbland är det härligt med MacBooks och Windows ihop!\r\n", + "html": "Apple Multitouch 3.2.0.1 x64 Driver Windows 7 – Windows Update BSOD
Det installerades en härlig Windows Update uppdatering automatiskt på min MacBook Air som gjorde att den efter omstart aldrig mer ville starta upp i Windows-läge.
Anledning
Windows Update gjorde sin uppdatering innehållande en uppdatering på sin Multitouch (samt Apple Magic Mouse?). Den uppdateringen i kombination med BootCamp 3.1 gjorde att datorn aldrig mer kunde starta upp.
Det klagades vid omstart på drivrutinen applemtp.sys och på applemtm.sys.
Här är lösningen, steg-för-steg
Efter prövning med många olika varianter som t.ex. restore till tidigare datum, starta upp i felsäkert läge (som inte gick på grund av att drivrutinen lästes in) så lyckades jag äntligen lösa problemet.
1. Starta upp datorn i ”Startup repair” läget.
2. Låt den försöka lösa det på egen hand (som inte kommer gå men man kan inte hoppa över detta steg).
3. Välj ”view advanced options for system recovery and support”
4. Välj ”Command Prompt”
5. Ta dig fram till ”C:\\Windows\\System32\\DriverStore\\FileRepository\\applemtp.....” (resten av filnamnet är olika beroende på om det är 32 eller 64 bitars)
6. Gå in i mappen ”applemtp...”-mappen
7. Skapa där en tempmapp och flytta in alla filer dit från denna mapp alternativt ta bort filerna
8. Gör samma sak fast med ”applemtm...”-mappen
9. Gå sedan till ”C:\\Windows\\System32\\Drivers” och byt filändelse på applemtp.sys och applemtm.sys så de inte körs vid uppstart (t.ex. till .old eller .tmp)
10. Starta om datorn
11. När windows 7 nu äntligen startar uppdatera BootCamp till 3.2 (Tips, ha en annan mus till hands annars är det jobbigt att uppdatera BootCamp eftersom både Multitouch och Magic Mouse slutar att fungera, det märkte jag!)
12. Nu fungerar datorn som den ska igen
Ibland är det härligt med MacBooks och Windows ihop!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Windows Update på MacBook Air orsakade uppstartsproblem", + "meta_description": "", + "author_id": 1094, + "created_at": 1298886600000, + "created_by": 1094, + "updated_at": 1298886600000, + "updated_by": 1094, + "published_at": 1298886600000, + "published_by": 1094 + }, + { + "id": 484, + "title": "Uppladdningsproblem i Facebook på iPhone", + "slug": "uppladdningsproblem-i-facebook-pa-iphone", + "markdown": "\r\nJag har under en längre tid haft problem med att ladda upp bilder i Facebook-appen på iPhone. Det funkar ibland, men strular oftast när man postar en bild på sin egen eller ännu oftare någon annans wall. Trött på detta problem hittade jag till slut en supporttråd på Facebook.com med lösningen:Kontrollera att location services är påslaget för Facebook (du hittar detta i inställningar). Av någon anledning så var location services avslagen för Facebook. Med den påslagen fungerar uppladdningen korrekt Det framgår inte varför fotouppladdningsfunktionen behöver GPS:en, i nuläget visas ju ingen plats i anslutning till foton...", + "html": "Jag har under en längre tid haft problem med att ladda upp bilder i Facebook-appen på iPhone. Det funkar ibland, men strular oftast när man postar en bild på sin egen eller ännu oftare någon annans wall. Trött på detta problem hittade jag till slut en supporttråd på Facebook.com med lösningen:
Kontrollera att location services är påslaget för Facebook (du hittar detta i inställningar).
Av någon anledning så var location services avslagen för Facebook. Med den påslagen fungerar uppladdningen korrekt Det framgår inte varför fotouppladdningsfunktionen behöver GPS:en, i nuläget visas ju ingen plats i anslutning till foton...
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Uppladdningsproblem i Facebook på iPhone", + "meta_description": "", + "author_id": 6, + "created_at": 1298380320000, + "created_by": 6, + "updated_at": 1298380320000, + "updated_by": 6, + "published_at": 1298380320000, + "published_by": 6 + }, + { + "id": 504, + "title": "Varning för OCZ SSD i Latitude E serie", + "slug": "varning-for-ocz-ssd-i-latitude-e-serie", + "markdown": "\r\n\r\nVi har sett en tydlig trend att SSD diskar från OCZ (Vertex 2) i Dell Latitude e-serien ofta leder till krasch. Vår statistik visar till och med att nästan 50% av diskarna har gått sönder. De vi däremot har använt i stationära datorer har hittills hållit utan problem.\r\n\r\nDe går sönder på två olika sätt, båda lika illa;\r\n\r\n1. Disken går att spara till men glömmer all information när strömmen bryts.\r\n\r\n2. Disken blir helt okontaktbar.\r\n\r\nI och med dessa problem har vi också insett ett annat problem med SSD i allmänhet. När olyckan väl är framme är det i princip omöjligt att återfå data. Mekaniska diskar går oftast att reparera, om inte med mjukvara så med utbyte av komponenter. Sådana rutiner finns ännu inte för SSD.\r\n\r\nVårt tips är därmed (som vanligt) – ha en bra backup! Billig och enkel onlinebackup är exempelvis Backblaze.\r\n\r\n![Bild](http://tekniken.nu/uploads/634405526131047732-image001.png@01CC0E3E.320659E0__image001.png)", + "html": "
Vi har sett en tydlig trend att SSD diskar från OCZ (Vertex 2) i Dell Latitude e-serien ofta leder till krasch. Vår statistik visar till och med att nästan 50% av diskarna har gått sönder. De vi däremot har använt i stationära datorer har hittills hållit utan problem.
De går sönder på två olika sätt, båda lika illa;
1. Disken går att spara till men glömmer all information när strömmen bryts.
2. Disken blir helt okontaktbar.
I och med dessa problem har vi också insett ett annat problem med SSD i allmänhet. När olyckan väl är framme är det i princip omöjligt att återfå data. Mekaniska diskar går oftast att reparera, om inte med mjukvara så med utbyte av komponenter. Sådana rutiner finns ännu inte för SSD.
Vårt tips är därmed (som vanligt) – ha en bra backup! Billig och enkel onlinebackup är exempelvis Backblaze.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Varning för OCZ SSD i Latitude E serie", + "meta_description": "", + "author_id": 1088, + "created_at": 1304956200000, + "created_by": 1088, + "updated_at": 1304956200000, + "updated_by": 1088, + "published_at": 1304956200000, + "published_by": 1088 + }, + { + "id": 507, + "title": "Slå på kompression i TMG 2010", + "slug": "sla-pa-kompression-i-tmg-2010", + "markdown": "\r\n\r\nEfter att ha slagit på både static och dynamic compression för en site hostad på IIS 7.5 märkte vi att trafiken utifrån ändå inte blev komprimerad.\r\n\r\nBoven i det här fallet var vår TMG (Microsoft Forefront Threat Management Gateway) som ändrar i den externa klientens förfrågan så att ”accept-encoding:gzip,deflate” inte följer med. Vår webserver tolkar det då som att klienten inte kan hantera komprimerad trafik.\r\n\r\nTvå knep krävs för att lösa problemet.\r\n\r\nBörja med att stänga av ”Compression Filter” i TMG, görs under System -> Web Filters.\r\n\r\nDärefter behöver vi göra en ändring som det tyvärr saknas en enkel kryssruta för.\r\n\r\nVi behöver ändra SendAcceptEncodingHeader till True för vår inkommande regel till webservern.\r\n\r\nSkapa en ny skriptfil och fyll den med koden härifrån.\r\n\r\nKör den med hjälp av cscript filnamn ”regelnamn”.\r\n\r\nOm allting gick vägen svarar den snällt ”Done!”.\r\n\r\n![Bild](http://tekniken.nu/uploads/634413917980920681-image001.png@01CC154F.2F67E740__image001.png)", + "html": "Efter att ha slagit på både static och dynamic compression för en site hostad på IIS 7.5 märkte vi att trafiken utifrån ändå inte blev komprimerad.
Boven i det här fallet var vår TMG (Microsoft Forefront Threat Management Gateway) som ändrar i den externa klientens förfrågan så att ”accept-encoding:gzip,deflate” inte följer med. Vår webserver tolkar det då som att klienten inte kan hantera komprimerad trafik.
Två knep krävs för att lösa problemet.
Börja med att stänga av ”Compression Filter” i TMG, görs under System -> Web Filters.
Därefter behöver vi göra en ändring som det tyvärr saknas en enkel kryssruta för.
Vi behöver ändra SendAcceptEncodingHeader till True för vår inkommande regel till webservern.
Skapa en ny skriptfil och fyll den med koden härifrån.
Kör den med hjälp av cscript filnamn ”regelnamn”.
Om allting gick vägen svarar den snällt ”Done!”.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Slå på kompression i TMG 2010", + "meta_description": "", + "author_id": 1088, + "created_at": 1305794997000, + "created_by": 1088, + "updated_at": 1305794997000, + "updated_by": 1088, + "published_at": 1305794997000, + "published_by": 1088 + }, + { + "id": 510, + "title": "Bästa online backupen - Backblaze", + "slug": "basta-online-backupen---backblaze", + "markdown": "\r\n\r\nDen är enkel att komma igång med, funkar på både Mac och PC, säkerhetskopierar obegränsad mängd data – och kostar dessutom bara 27kr/mån. Vad är haken?\r\n\r\nDet låter nästan för bra för att vara sant – men den finns där ute. Den enklaste backupplösningen på länge. Och inte nog med fördelarna som redan nämnts – en utav de mest fördelaktiga sakerna är att du kan återställa dina filer helt gratis – nått som inte alls är självklart hos andra backup-leverantörer.\r\n## Så här skaffar du Backblaze\r\nGå till www.backblaze.com för att ladda hem programmet så är du snart igång. I kontrollpanelen kan du välja filter på filnamn, filtyper och sökvägar som du inte vill ha med i backkuppen. Det går också att välja vilken hastighet/bandbredd som tjänsten skall få tillträde till. En rekommendation är att ställa upp hastigheten till max tills alla dina filer är backade – det kan ta flera veckor att få allt backuppat första gången annars. Du kan löpande titta i kontrollpanelen och tydligt se din aktuella backup-status.\r\n\r\n\r\n## Enkelt att återställa dina filer\r\nNär du vill kan du enkelt återfå filer från din backup. Du går helt enkelt till www.backblaze.com och loggar in. Här väljer du mellan tre alternativ. Ladda hem en zipfil med valda filer (0 kr), få en DVD hemskickad till dig (620kr per skiva) eller få en helt ny USB-hårddisk skickad till dig för 1200kr per 400GB).\r\n\r\n![Bild](http://tekniken.nu/uploads/634418417175959224-image001.gif@01CC19F2.4F460270__image001.gif)", + "html": "Den är enkel att komma igång med, funkar på både Mac och PC, säkerhetskopierar obegränsad mängd data – och kostar dessutom bara 27kr/mån. Vad är haken?
Det låter nästan för bra för att vara sant – men den finns där ute. Den enklaste backupplösningen på länge. Och inte nog med fördelarna som redan nämnts – en utav de mest fördelaktiga sakerna är att du kan återställa dina filer helt gratis – nått som inte alls är självklart hos andra backup-leverantörer.
Så här skaffar du Backblaze
Gå till www.backblaze.com för att ladda hem programmet så är du snart igång. I kontrollpanelen kan du välja filter på filnamn, filtyper och sökvägar som du inte vill ha med i backkuppen. Det går också att välja vilken hastighet/bandbredd som tjänsten skall få tillträde till. En rekommendation är att ställa upp hastigheten till max tills alla dina filer är backade – det kan ta flera veckor att få allt backuppat första gången annars. Du kan löpande titta i kontrollpanelen och tydligt se din aktuella backup-status.
Enkelt att återställa dina filer
När du vill kan du enkelt återfå filer från din backup. Du går helt enkelt till www.backblaze.com och loggar in. Här väljer du mellan tre alternativ. Ladda hem en zipfil med valda filer (0 kr), få en DVD hemskickad till dig (620kr per skiva) eller få en helt ny USB-hårddisk skickad till dig för 1200kr per 400GB).
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Bästa online backupen - Backblaze", + "meta_description": "", + "author_id": 1097, + "created_at": 1306920000000, + "created_by": 1097, + "updated_at": 1306920000000, + "updated_by": 1097, + "published_at": 1306920000000, + "published_by": 1097 + }, + { + "id": 531, + "title": "RSA bekräftar: SecurID hackat", + "slug": "rsa-bekraftar-securid-hackat", + "markdown": "\r\n\r\nI mars fick vi höra att RSA som står bakom SecurID hade blivit utsatta för ett intrång. De har hela tiden varit tystlåtna om vilken omfattning detta intrång hade. Vi märkte dock att vi som återförsäljare hade svårt att få tag på SecurID dosor.\r\n\r\nRSA har nu bekräftat intrånget har lett till minskad säkerhet för användare av den här tekniken.\r\n\r\nEn hacker kan nu med hjälp av siffrorna på baksidan av en dosa, i kombination med användarnamn och PIN kod, komma över hemlig information. Det är alltså fortfarande inte helt enkelt att komma förbi den säkerheten.\r\n\r\nRSA kommer att ersätta de runt 40-miljoner dosor som finns på marknaden med nya, baserade på en ny seed, till de kunder som kräver det.\r\n\r\n\r\n\r\nMer information på länken nedan;http://arstechnica.com/#!/security/news/2011/06/rsa-finally-comes-clean-securid-is-compromised.ars\r\n\r\n![Bild](http://tekniken.nu/uploads/securid.png)", + "html": "I mars fick vi höra att RSA som står bakom SecurID hade blivit utsatta för ett intrång. De har hela tiden varit tystlåtna om vilken omfattning detta intrång hade. Vi märkte dock att vi som återförsäljare hade svårt att få tag på SecurID dosor.
RSA har nu bekräftat intrånget har lett till minskad säkerhet för användare av den här tekniken.
En hacker kan nu med hjälp av siffrorna på baksidan av en dosa, i kombination med användarnamn och PIN kod, komma över hemlig information. Det är alltså fortfarande inte helt enkelt att komma förbi den säkerheten.
RSA kommer att ersätta de runt 40-miljoner dosor som finns på marknaden med nya, baserade på en ny seed, till de kunder som kräver det.
Mer information på länken nedan;
http://arstechnica.com/#!/security/news/2011/06/rsa-finally-comes-clean-securid-is-compromised.ars
Ett fel som ibland dyker upp i TFS builds är:
The working folder D:\\...\\trunk is already in use by the workspace XX;DOMAIN\\tfs-build on computer XX.
Eftersom felet försvinner av sig självt ibland blir det extra svårt att felsöka. Det enkla svaret på lösning är att köra kommandot: tf workspaces /remove:*
Problemet med byggservern är bara att workspaces är knutna till det användarkonto som byggserverns servicekonto körs med. Dvs, om du fjärrstyr servern som har byggservern installerad och kör kommandoprompten och sedan kommandot kommer de workspaces som ska tas bort inte synas i listan och därmed är problemet kvar.
För att lösa detta kör man antingen Runas /user:DOMAIN\\tfs-build och sedan samma kommando som ovan. Tyvärr verkar det inte fungera som det är tänkt så vår lösning var att köra
Runas /user:DOMAIN\\tfs-build devenv.exe
Och sedan i Manage Workspace i Visual Studio kan man sedan ta bort alla workspaces (ja, man kan markera flera som tur är ;)
",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "Workspaces i TFS build server - så här tar du bort dem",
+ "meta_description": null,
+ "author_id": 1087,
+ "created_at": 1308148911000,
+ "created_by": 1087,
+ "updated_at": 1308148911000,
+ "updated_by": 1087,
+ "published_at": 1308148911000,
+ "published_by": 1087
+ },
+ {
+ "id": 539,
+ "title": "Fel 500 i IIS 7 - mapprättigheter",
+ "slug": "fel-500-i-iis-7---mapprattigheter",
+ "markdown": "\r\n\r\nNär man sätter upp en ny site i IIS 7 behöver man ta sig en extra funderare för att få rättigheterna rätt på mapparna.\r\n\r\nDe flesta sätter Network Service som identitet för applikationspoolen. Helt logiskt borde då också Network Service få läsrättigheter på den berörda sitens mappstruktur. Detta räcker dock inte om siten ska kunna nås anonymt. Om vi inte också lägger till localhost\\Users gruppen som läsrättighet kommer det inte att fungera utan genererar fel 500.\r\n\r\nDetta är för att den anonyma användaren (som är med i localhost\\users) inte har läsrättighet till mappen annars.\r\n\r\nFör att komma runt det problemet gå in i IIS manager under Authentication. Välj Edit på ”Anonymous Authentication” – bocka där i att den anonyma användare ska använda applikationspoolens identitet. På det här viset har vi bara en rättighet vi behöver tänka på.\r\n\r\nVill vi göra det helt rätt ger vi därefter varje applikationspool (och site) en egen identitet. Gör vi på det viset har vi isolerat siterna från varandra.\r\n\r\n![Bild](http://tekniken.nu/uploads/634483954400743255-image001.png@01CC529E.01A3BC80__image001.png)",
+ "html": "
När man sätter upp en ny site i IIS 7 behöver man ta sig en extra funderare för att få rättigheterna rätt på mapparna.
De flesta sätter Network Service som identitet för applikationspoolen. Helt logiskt borde då också Network Service få läsrättigheter på den berörda sitens mappstruktur. Detta räcker dock inte om siten ska kunna nås anonymt. Om vi inte också lägger till localhost\\Users gruppen som läsrättighet kommer det inte att fungera utan genererar fel 500.
Detta är för att den anonyma användaren (som är med i localhost\\users) inte har läsrättighet till mappen annars.
För att komma runt det problemet gå in i IIS manager under Authentication. Välj Edit på ”Anonymous Authentication” – bocka där i att den anonyma användare ska använda applikationspoolens identitet. På det här viset har vi bara en rättighet vi behöver tänka på.
Vill vi göra det helt rätt ger vi därefter varje applikationspool (och site) en egen identitet. Gör vi på det viset har vi isolerat siterna från varandra.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Fel 500 i IIS 7 - mapprättigheter", + "meta_description": "", + "author_id": 1088, + "created_at": 1312798638000, + "created_by": 1088, + "updated_at": 1312798638000, + "updated_by": 1088, + "published_at": 1312798638000, + "published_by": 1088 + }, + { + "id": 548, + "title": "Camera Codec Pack", + "slug": "camera-codec-pack", + "markdown": "\r\n\r\nMed jämna mellanrum stöter jag på problem med att öppna RAW filer skapade av digitala systemkameror.\r\n\r\n\r\n\r\nI de flesta fall krävs att man får tag på en korrekt codec från tillverkaren för att öppna filerna. Senaste gången gällde det Pentax *ist Dl som skapar PEF-filer. Pentax själva har inte släppt någon codec för 64-bitars Windows 7 och verkar inte planera att göra det heller.\r\n\r\nLösningen kom som tur är förra månaden, Microsoft har släppt Camera Codec Pack som klarar av de vanligaste kamerornas format.\r\n\r\nMer information och nedladdning finns här.\r\n\r\nAlternativet är att öppna med Adobe Photoshop Lightroom som dessutom är en tämligen smidig bildbehandlare, kostar därefter dock.\r\n", + "html": "Med jämna mellanrum stöter jag på problem med att öppna RAW filer skapade av digitala systemkameror.
I de flesta fall krävs att man får tag på en korrekt codec från tillverkaren för att öppna filerna. Senaste gången gällde det Pentax *ist Dl som skapar PEF-filer. Pentax själva har inte släppt någon codec för 64-bitars Windows 7 och verkar inte planera att göra det heller.
Lösningen kom som tur är förra månaden, Microsoft har släppt Camera Codec Pack som klarar av de vanligaste kamerornas format.
Mer information och nedladdning finns här.
Alternativet är att öppna med Adobe Photoshop Lightroom som dessutom är en tämligen smidig bildbehandlare, kostar därefter dock.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Camera Codec Pack", + "meta_description": "", + "author_id": 1088, + "created_at": 1314175260000, + "created_by": 1088, + "updated_at": 1314175260000, + "updated_by": 1088, + "published_at": 1314175260000, + "published_by": 1088 + }, + { + "id": 560, + "title": "Outlook 2010 hittar inte min gamla NK2-fil!", + "slug": "outlook-2010-hittar-inte-min-gamla-nk2-fil", + "markdown": "\r\n\r\nEfter att du flyttat din NK2-fil (smeknamnscachen) från äldre versioner av Outlook till en ny dator med Outlook 2010, kan du behöva göra ett par enkla steg för att få in alla dina gamla snabb-adresser.\r\nFlytta filen till%appdata%\\Microsoft\\Outlook och se till att NK2-filen har samma namn som din Outlook-profil. Default är Outlook och NK2-filen bör då döpas till outlook.nk2Skulle Outlook av någon anledning inte känna av din NK2-fil får du starta Outlook med kommandotoutlook.exe /importnk2. Innehållet i filen importeras till ett dolt meddelande i standardarkivet. Efter importen döps nk2-filen om till nk2.old\r\nMer information om detta finns att läsa på: http://support.microsoft.com/kb/980542/sv\r\n\r\n![Bild](http://tekniken.nu/uploads/outlook_2007_logo.jpg)", + "html": "Efter att du flyttat din NK2-fil (smeknamnscachen) från äldre versioner av Outlook till en ny dator med Outlook 2010, kan du behöva göra ett par enkla steg för att få in alla dina gamla snabb-adresser.
- Flytta filen till%appdata%\\Microsoft\\Outlook och se till att NK2-filen har samma namn som din Outlook-profil. Default är Outlook och NK2-filen bör då döpas till outlook.nk2
- Skulle Outlook av någon anledning inte känna av din NK2-fil får du starta Outlook med kommandotoutlook.exe /importnk2. Innehållet i filen importeras till ett dolt meddelande i standardarkivet. Efter importen döps nk2-filen om till nk2.old
Mer information om detta finns att läsa på: http://support.microsoft.com/kb/980542/sv
För att paira ditt Apple Wireless Keyboard med ditt Windows 7 64-bit gör du såhär:
Du går in under Control Panel, Add device, sätter på ditt Apple Wireless Keyboard. Du kommer så långt att du får slå in en passcode for att pairingen skall slutföras men avbryts efter att du hunnit knappa in en eller två siffror av koden. Samma sak händer, om och om igen. Hur snabb du än försöker vara.
Istället för att klicka på Apple Wireless Keyboard i listan och gå vidare i Wizarden, högerklickar du på AWK väljer Properties och kryssar i ”Driver for keyboard, mice etc (HID)”. Efter detta installeras en drivrutin och du bör nu ha ett fungerande tangentbord som är kopplad mot din dator.
Nästa steg för mig var att jag inte kunde trycka på CTRL+ALT+DEL utan att använda ett Microsoft-anpassat tangentbord. Detta löste jag genom att ta fram en valfri MAC OSX-skiva, navigera mig till Drivers\\64 och sedan packa upp AppleKeyboardInstaller64 till valfri plats och sedan installera drivrutinen. Efter detta fungerar även CTRL+ALT+DEL (CTRL+ALT+BACKSPACE).
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Installera Apple Wireless Keyboard på Windows 7 64-bit", + "meta_description": "", + "author_id": 1095, + "created_at": 1315305700000, + "created_by": 1095, + "updated_at": 1315305700000, + "updated_by": 1095, + "published_at": 1315305700000, + "published_by": 1095 + }, + { + "id": 566, + "title": "Förenkla stora kopieringar i Windows", + "slug": "forenkla-stora-kopieringar-i-windows", + "markdown": "\r\n\r\nJag behöver ofta kopiera stora/många filer mellan servrar och datorer som kan vara ganska långt ifrån varandra. Störande är om kopplingen bryts under kopiering. Ännu värre om en fil är skadad och inte kan kopieras.\r\n\r\n\r\n\r\nOm något sådant händer avbryts hela kopieringen och jag får börja om från början, utan en aning om hur långt den hann.\r\n\r\nFör att komma förbi problemet har jag sedan ett tag kört Teracopy som ersätter Windows inbyggda kopieringsfunktion. Kopior går snabbare och går att fortsätta om de skulle avbrytas.\r\n\r\nUtöver det försöker den flera gånger om en fil skulle vara svår att läsa, den ger inte upp direkt.\r\n\r\nVäljer jag att starta flera kopior samtidigt lägger de sig som väntande tills den första kopieringen är klar, eller tills jag tvingar dem att starta.\r\n\r\n\r\n\r\nBra litet program helt enkelt!\r\n\r\nMer info på deras hemsida.\r\n\r\n![Bild](http://tekniken.nu/uploads/634523639769117151-image001.png@01CC7950.81F3B9C0__image001.png)", + "html": "Jag behöver ofta kopiera stora/många filer mellan servrar och datorer som kan vara ganska långt ifrån varandra. Störande är om kopplingen bryts under kopiering. Ännu värre om en fil är skadad och inte kan kopieras.
Om något sådant händer avbryts hela kopieringen och jag får börja om från början, utan en aning om hur långt den hann.
För att komma förbi problemet har jag sedan ett tag kört Teracopy som ersätter Windows inbyggda kopieringsfunktion. Kopior går snabbare och går att fortsätta om de skulle avbrytas.
Utöver det försöker den flera gånger om en fil skulle vara svår att läsa, den ger inte upp direkt.
Väljer jag att starta flera kopior samtidigt lägger de sig som väntande tills den första kopieringen är klar, eller tills jag tvingar dem att starta.
Bra litet program helt enkelt!
Mer info på deras hemsida.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Förenkla stora kopieringar i Windows", + "meta_description": "", + "author_id": 1088, + "created_at": 1317635700000, + "created_by": 1088, + "updated_at": 1317635700000, + "updated_by": 1088, + "published_at": 1317635700000, + "published_by": 1088 + }, + { + "id": 567, + "title": "DNS suffix saknas för VPN klienter mot Server 2008", + "slug": "dns-suffix-saknas-for-vpn-klienter-mot-server-2008", + "markdown": "\r\n\r\nI och med utfasningen av Windows Server 2003 kör vi nu oftast RRAS (Routing And Remote Access Server) i nyare 2008 R2 maskiner. I Windows Server 2003 hämtades DNS suffix till VPN klienter från DHCP serverns Option 015 (DNS Domain Name) – en funktionalitet som verkar vara ändrad i 2008.\r\n\r\n\r\n\r\nEn effekt vi har märkt av på grund av det här är vid fjärrstyrningar (med RDP) då vi behövt använda FQDN, vilket inte behövdes förut. Samma gäller klienter som fjärrstyr sin jobbdator. Tidigare knappade de in datornamnet men vissa har nu fått vänja sig vid datornamn.domain.local – något som förvirrar för en del.\r\n\r\nLösningen är lyckligtvis inte så svår;\r\n\r\nLägg till korrekt DNS suffix i TCP/IP inställningarna för RRAS maskinens LAN-kort.Starta om RRAS-tjänsten så att den cachar nya DHCP adresser.\r\nNästa gång en klient ansluter får den korrekt suffix.\r\n\r\n![Bild](http://tekniken.nu/uploads/634523639954740963-logo.gif)", + "html": "I och med utfasningen av Windows Server 2003 kör vi nu oftast RRAS (Routing And Remote Access Server) i nyare 2008 R2 maskiner. I Windows Server 2003 hämtades DNS suffix till VPN klienter från DHCP serverns Option 015 (DNS Domain Name) – en funktionalitet som verkar vara ändrad i 2008.
En effekt vi har märkt av på grund av det här är vid fjärrstyrningar (med RDP) då vi behövt använda FQDN, vilket inte behövdes förut. Samma gäller klienter som fjärrstyr sin jobbdator. Tidigare knappade de in datornamnet men vissa har nu fått vänja sig vid datornamn.domain.local – något som förvirrar för en del.
Lösningen är lyckligtvis inte så svår;
- Lägg till korrekt DNS suffix i TCP/IP inställningarna för RRAS maskinens LAN-kort.
- Starta om RRAS-tjänsten så att den cachar nya DHCP adresser.
Nästa gång en klient ansluter får den korrekt suffix.
En del användare av vår TFS kunde inte komma åt delade dokument genom Visual Studio 2010, istället möttes de bara av ett rött kryss.
Krysset visade sig vara populärt kallat för ”Red X of Death” – vilket var precis vad det kändes som när inget ur uppsjön av lösningar fungerade.
Alla användare kan komma åt dokumenten genom att gå till Sharepoint Project Portal genom IE så det var inte en rättighetsfråga. På tal om rättigheter kontrolleras de bäst genom TFS Administration Tool.
Vad som slutligen knäckte nöten för oss var att lägga till Sharepoint siten i säkerhetszonen ”Local intranet” samt sänka säkerhetsnivån för den zonen ett snäpp.
Det är dock tveksamt om lösningen ovan fungerar om man har externa användare som inte är med i domänen.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Rött kryss på dokument i Team Explorer 2010", + "meta_description": "", + "author_id": 1088, + "created_at": 1326125520000, + "created_by": 1088, + "updated_at": 1326125520000, + "updated_by": 1088, + "published_at": 1326125520000, + "published_by": 1088 + }, + { + "id": 591, + "title": "Tre knep för Remote Desktop", + "slug": "tre-knep-for-remote-desktop", + "markdown": "\r\n\r\nKommer du bara till en grå eller svart skärm?\r\n\r\n1. Försök logga in i console-läge. Tryck Start och Kör. Skriv in mstsc /admin och anslut sedan som vanligt\r\n\r\n2. Om en applikation har hängt sig fungerar CTRL-SHIFT-ESC för att få upp aktivitetshanteraren även fjärrstyrt.\r\n\r\n3. Om saker har hängt sig ordentligt? Tryck CTRL-ALT-END för att skicka CTRL-ALT-DEL till fjärrdatorn. Det här fungerar också bra om du behöver byta lösenord på din användare fjärrstyrt.\r\n\r\n![Bild](http://tekniken.nu/uploads/windows7.png)", + "html": "Kommer du bara till en grå eller svart skärm?
1. Försök logga in i console-läge. Tryck Start och Kör. Skriv in mstsc /admin och anslut sedan som vanligt
2. Om en applikation har hängt sig fungerar CTRL-SHIFT-ESC för att få upp aktivitetshanteraren även fjärrstyrt.
3. Om saker har hängt sig ordentligt? Tryck CTRL-ALT-END för att skicka CTRL-ALT-DEL till fjärrdatorn. Det här fungerar också bra om du behöver byta lösenord på din användare fjärrstyrt.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Tre knep för Remote Desktop", + "meta_description": "", + "author_id": 1088, + "created_at": 1330338112000, + "created_by": 1088, + "updated_at": 1330338112000, + "updated_by": 1088, + "published_at": 1330338112000, + "published_by": 1088 + }, + { + "id": 598, + "title": "Smiley blir ett J i Outlook", + "slug": "smiley-blir-ett-j-i-outlook", + "markdown": "\r\n\r\nPå sistone har jag mer och mer irriterat mig på att få vidarebefordrade mail med meningar som avslutas med ett J.\r\n\r\nDet tog mig ett tag att inse att avsändaren menade att göra en glad gubbe - :)\r\n\r\nProblemet är att Office autorättar :) till att blir en lite mer grafisk smiley med hjälp av teckensnittet Wingdings. Saknas det så blir det ett J.\r\n\r\nDen enklaste lösningen jag vet är den här;\r\n\r\nI Outlook, tryck Arkiv -> E-post -> Rättstavning och autokorrigering -> Alternativ för autokorrigering\r\n\r\nHitta den glada gubben, :), i listan och ersätt den med☺ - samma sak fast i Unicode istället för Wingdings. Passa även på att kika igen vilka mer saker som autorättas, det finns en del att ändra!\r\n\r\nTryck ersätt och OK, du är klar!\r\n\r\n![Bild](http://tekniken.nu/uploads/smiley.png)", + "html": "På sistone har jag mer och mer irriterat mig på att få vidarebefordrade mail med meningar som avslutas med ett J.
Det tog mig ett tag att inse att avsändaren menade att göra en glad gubbe - :)
Problemet är att Office autorättar :) till att blir en lite mer grafisk smiley med hjälp av teckensnittet Wingdings. Saknas det så blir det ett J.
Den enklaste lösningen jag vet är den här;
I Outlook, tryck Arkiv -> E-post -> Rättstavning och autokorrigering -> Alternativ för autokorrigering
Hitta den glada gubben, :), i listan och ersätt den med☺ - samma sak fast i Unicode istället för Wingdings. Passa även på att kika igen vilka mer saker som autorättas, det finns en del att ändra!
Tryck ersätt och OK, du är klar!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Smiley blir ett J i Outlook", + "meta_description": "", + "author_id": 1088, + "created_at": 1334052060000, + "created_by": 1088, + "updated_at": 1334052060000, + "updated_by": 1088, + "published_at": 1334052060000, + "published_by": 1088 + }, + { + "id": 600, + "title": "Fixa din iPhones krånglande hemknapp", + "slug": "fixa-din-iphones-kranglande-hemknapp", + "markdown": "\r\n\r\nHemknappen är en nyckelfunktion på en iPhone. Själv har jag haft problem med den på min telefon ganska länge, den är glapp och man måste trycka hårt och flera gånger för att få den att reagera. Att dubbelklicka för att avsluta applikationer och låsa orienteringen är ett riktigt gissel. Jag sökte lite på Google för att se om det fanns några tips på om man kan öppna och rengöra eller något liknande. Dröm om min förvåning när jag hittade följande:\r\n\r\n\r\n\r\niPhone har en inbyggd kalibrering av hemknappen.\r\n\r\nFör att återställa kalibreringen av hur hårt du måste trycka på hemknappen, gör såhär:\r\n\r\n1) Håll ner strömknappen till dess att ”Slide to power off” visas\r\n\r\n2) Släpp strömknappen och tryck samtidigtlöst ner hemknappen\r\n\r\n3) Fortsätt hålla nere hemknappen till dess att avstängningsskärmen stängs av och du återgår till telefonens vanliga funktioner\r\n\r\nDet här lagar förstås inte en knapp som har gått sönder rent hårdvarumässigt, men chansen är ganska stor att det är kalibreringen som har blivit fel. Min extremt glappande hemknapp blev inte som ny, men den blev mycket mycket bättre och jag kan nu både avsluta applikationer och dubbelklicka utan några större problem.\r\n\r\nOm din hemknapp verkligen inte fungerar kan du hjälpligt använda telefonen ändå temporärt genom att slå på det som kallas ”assistive touch” som ger tillgång till hemknappen och andra funktioner direkt på skärmen. Den här funktionen stjäl dock ganska mycket utrymme i ett av hörnen, så det är knappast någon funktion man har på permanent.\r\n\r\nLäs mer här om både kalibreringen och assitive touch:\r\n\r\nhttp://www.iphonestuffs4u.com/iphone-home-button-not-working/\r\n\r\n![Bild](http://tekniken.nu/uploads/634707942322930207-homebutton.png)", + "html": "Hemknappen är en nyckelfunktion på en iPhone. Själv har jag haft problem med den på min telefon ganska länge, den är glapp och man måste trycka hårt och flera gånger för att få den att reagera. Att dubbelklicka för att avsluta applikationer och låsa orienteringen är ett riktigt gissel. Jag sökte lite på Google för att se om det fanns några tips på om man kan öppna och rengöra eller något liknande. Dröm om min förvåning när jag hittade följande:
iPhone har en inbyggd kalibrering av hemknappen.
För att återställa kalibreringen av hur hårt du måste trycka på hemknappen, gör såhär:
1) Håll ner strömknappen till dess att ”Slide to power off” visas
2) Släpp strömknappen och tryck samtidigtlöst ner hemknappen
3) Fortsätt hålla nere hemknappen till dess att avstängningsskärmen stängs av och du återgår till telefonens vanliga funktioner
Det här lagar förstås inte en knapp som har gått sönder rent hårdvarumässigt, men chansen är ganska stor att det är kalibreringen som har blivit fel. Min extremt glappande hemknapp blev inte som ny, men den blev mycket mycket bättre och jag kan nu både avsluta applikationer och dubbelklicka utan några större problem.
Om din hemknapp verkligen inte fungerar kan du hjälpligt använda telefonen ändå temporärt genom att slå på det som kallas ”assistive touch” som ger tillgång till hemknappen och andra funktioner direkt på skärmen. Den här funktionen stjäl dock ganska mycket utrymme i ett av hörnen, så det är knappast någon funktion man har på permanent.
Läs mer här om både kalibreringen och assitive touch:
http://www.iphonestuffs4u.com/iphone-home-button-not-working/
Add your text here
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Drift & Underhåll", + "meta_description": "", + "author_id": 4, + "created_at": 1181663426000, + "created_by": 4, + "updated_at": 1181663426000, + "updated_by": 4, + "published_at": 1181663426000, + "published_by": 4 + }, + { + "id": 29, + "title": "BioShock (Executive Summary)", + "slug": "bioshock-executive-summary", + "markdown": "\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nHär kommer en snabb catch up om årets storspel BioShock, så att alla kan ”agera insatta” i framtida sociala situationer:\r\n\r\n\r\n\r\n\r\n \r\n\r\n\r\n\r\n\r\nBioshock är den andliga efterföljaren till System Shockspelen, som på många sätt revolutionerade FPS-genren i slutet av 90-talet. Denna gång är scenen tidigt 1960-tal och platsen är havets botten. Efter en flygolycka hamnar man i undervattenstaden Rapture och får kämpa mot genmodifierade monster, enorma servicebottar, småflickor och mycket annat. Framförallt är det rackarns snyggt och storyn skall vara grym. Med andra ord är det nog det största på FPS-scenen sen Half Life 2. Jag har lirat demot och är mkt imponerad!\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/bioshock1.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/bioshock2.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/bioshock3.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/bioshock4.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/bioshock5.png)\r\n\r\n\r\nHD-trailer (grym för de med stora skärmar):\r\n\r\n\r\n\r\n\r\nhttp://www.gametrailers.com/player/15682.html\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n\r\n\r\n\r\n\r\n\r\nDemo för PC:\r\n\r\n\r\n\r\n\r\n\r\n\r\nhttp://www.fz.se/filer/?id=3931\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n", + "html": "
Här kommer en snabb catch up om årets storspel BioShock, så att alla kan ”agera insatta” i framtida sociala situationer:
Bioshock är den andliga efterföljaren till System Shockspelen, som på många sätt revolutionerade FPS-genren i slutet av 90-talet. Denna gång är scenen tidigt 1960-tal och platsen är havets botten. Efter en flygolycka hamnar man i undervattenstaden Rapture och får kämpa mot genmodifierade monster, enorma servicebottar, småflickor och mycket annat. Framförallt är det rackarns snyggt och storyn skall vara grym. Med andra ord är det nog det största på FPS-scenen sen Half Life 2. Jag har lirat demot och är mkt imponerad!
HD-trailer (grym för de med stora skärmar):
http://www.gametrailers.com/player/15682.html
Demo för PC:
http://www.fz.se/filer/?id=3931
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "BioShock (Executive Summary)", + "meta_description": "", + "author_id": 1085, + "created_at": 1187827200000, + "created_by": 1085, + "updated_at": 1187827200000, + "updated_by": 1085, + "published_at": 1187827200000, + "published_by": 1085 + }, + { + "id": 56, + "title": "Bioshock på Steam 24 augusti", + "slug": "bioshock-pa-steam-24-augusti", + "markdown": "\r\n\r\n\r\nDet mycket omtalade och hyllade (och efterlängtade!) spelet Bioshock kommer att finnas till PC, för nedladdning via Valves spelnedladdningstjänst Steam: http://spel.feber.se/feber/art/26910/bioshock_p_steam/\r\n\r\n\r\nFör den som har missat hypen finns det info, videos och annat bra på den officiella siten: http://www.2kgames.com/bioshock/ \r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/bioshock-logo.jpg)", + "html": "
Det mycket omtalade och hyllade (och efterlängtade!) spelet Bioshock kommer att finnas till PC, för nedladdning via Valves spelnedladdningstjänst Steam: http://spel.feber.se/feber/art/26910/bioshock_p_steam/
För den som har missat hypen finns det info, videos och annat bra på den officiella siten: http://www.2kgames.com/bioshock/
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1187308800000, + "created_by": 6, + "updated_at": 1187308800000, + "updated_by": 6, + "published_at": 1187308800000, + "published_by": 6 + }, + { + "id": 70, + "title": "Fiffigt Firefox-tillägg för fotografer", + "slug": "fiffigt-firefox-tillagg-for-fotografer", + "markdown": "\r\n\r\n\r\nFxIF är ett tillägg till FireFox som gör att man kan se Exif-information direkt i webbläsaren.\r\n\r\n\r\n\r\nhttp://ted.mielczarek.org/code/mozilla/fxif/\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/firefox-exif.png)", + "html": "
FxIF är ett tillägg till FireFox som gör att man kan se Exif-information direkt i webbläsaren.
http://ted.mielczarek.org/code/mozilla/fxif/
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1183563600000, + "created_by": 6, + "updated_at": 1183563600000, + "updated_by": 6, + "published_at": 1183563600000, + "published_by": 6 + }, + { + "id": 71, + "title": "Mashup för löprundor", + "slug": "mashup-for-loprundor", + "markdown": "\r\n\r\n\r\nEn mashup är en webbplats där någon har slagit ihop flera webbtjänster (egna och andras) till en. Google Maps är en ganska populär site att ha med i mashups – den är både detaljerad och erbjuder ett bra gränssnitt för programmerare.\r\n\r\n\r\nEn fiffig mashup är Gmaps Pedometer, där man kan plotta ut sin löprunda och få avstånd och kaloriförbrukning uträknad. Även höjdskillnader visas i ett diagram. När man är nöjd kan man maila löprundan till sig själv (eller spara den som GPX, ett standardiserat GPS-format, om man har svårt att hitta).\r\n\r\n\r\n\r\nhttp://www.gmap-pedometer.com/\r\n\r\n\r\n\r\n \r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/loprunda.png)\r\n\r\n\r\n(kom-igångtips: när man har tryckt på ”Start recording” ska man dubbelklicka för att sätta ut nya punkter på löprundan).\r\n\r\n\r\nTidningen iform har en liknande tjänst (http://routeplanner.iform.se) men den är tyvärr inte lika bra – sämre karta och en konstigt bugg i zoom-funktionen som gör att man lätt tror att man har sprungit mycket längre än vad man har :-)\r\n\r\n", + "html": "
En mashup är en webbplats där någon har slagit ihop flera webbtjänster (egna och andras) till en. Google Maps är en ganska populär site att ha med i mashups – den är både detaljerad och erbjuder ett bra gränssnitt för programmerare.
En fiffig mashup är Gmaps Pedometer, där man kan plotta ut sin löprunda och få avstånd och kaloriförbrukning uträknad. Även höjdskillnader visas i ett diagram. När man är nöjd kan man maila löprundan till sig själv (eller spara den som GPX, ett standardiserat GPS-format, om man har svårt att hitta).
http://www.gmap-pedometer.com/
(kom-igångtips: när man har tryckt på ”Start recording” ska man dubbelklicka för att sätta ut nya punkter på löprundan).
Tidningen iform har en liknande tjänst (http://routeplanner.iform.se) men den är tyvärr inte lika bra – sämre karta och en konstigt bugg i zoom-funktionen som gör att man lätt tror att man har sprungit mycket längre än vad man har :-)
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1183490580000, + "created_by": 6, + "updated_at": 1183490580000, + "updated_by": 6, + "published_at": 1183490580000, + "published_by": 6 + }, + { + "id": 79, + "title": "Inbyggd flygsimulator i Google Earth", + "slug": "inbyggd-flygsimulator-i-google-earth", + "markdown": "\r\n\r\nSenaste\r\nversionen av Google Earth (v4.2) innehåller ett riktigt tufft påskägg: En dold\r\nflygsimulator! För att aktivera simulatorn klickar man CTRL-ALT-A, varpå\r\nen prompt öppnas där man kan välja om man vill flyga en F16 eller en Cirrus\r\nSR22.\r\n\r\nSimulatorn\r\nfunkar faktiskt riktigt bra och simulerar oväntat många flygplansdelar\r\n(klaffar, ställ etc.). Och går smidigt att flyga runt i med mus-tangenter,\r\neller joystick.\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/google_earth_flight.png)\r\n\r\n\r\nVad\r\nman nu egentligen vill ha är ju Microsoft Flight Simulator, men med Google\r\nEarth som världsmesh/textur, synd att MS och Google inte gillar varandra så\r\nbra...\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/google_earth_settings.png)\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n", + "html": "
Senaste
versionen av Google Earth (v4.2) innehåller ett riktigt tufft påskägg: En dold
flygsimulator! För att aktivera simulatorn klickar man CTRL-ALT-A, varpå
en prompt öppnas där man kan välja om man vill flyga en F16 eller en Cirrus
SR22.
Simulatorn
funkar faktiskt riktigt bra och simulerar oväntat många flygplansdelar
(klaffar, ställ etc.). Och går smidigt att flyga runt i med mus-tangenter,
eller joystick.
Vad
man nu egentligen vill ha är ju Microsoft Flight Simulator, men med Google
Earth som världsmesh/textur, synd att MS och Google inte gillar varandra så
bra...
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1188843960000, + "created_by": 1085, + "updated_at": 1188843960000, + "updated_by": 1085, + "published_at": 1188843960000, + "published_by": 1085 + }, + { + "id": 97, + "title": "Fredagstipset: Bygg din mediedator i en Lack-hylla", + "slug": "fredagstipset-bygg-din-mediedator-i-en-lack-hylla", + "markdown": "\r\n\r\n\r\nCasemoddning är 2000-talets svar på 50-talets custombilbyggande - bygg in din dator i något oväntat och snyggt, kanske en gammal 60-tals-TV, en attachéväska eller trästock? För den som är ute efter något mer användbart så är nedanstående lösning kanske något för det kritiska designerhemmet där man vill att datorn inte ska synas:\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/lack1.jpg)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/lack2.jpg)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/lack3.jpg)\r\n\r\n\r\nByggbeskrivning och massor av bilder finns här: http://www.sweclockers.com/forum/showthread.php?s=&postid=6203488#post6203488\r\n\r\n", + "html": "
Casemoddning är 2000-talets svar på 50-talets custombilbyggande - bygg in din dator i något oväntat och snyggt, kanske en gammal 60-tals-TV, en attachéväska eller trästock? För den som är ute efter något mer användbart så är nedanstående lösning kanske något för det kritiska designerhemmet där man vill att datorn inte ska synas:
Byggbeskrivning och massor av bilder finns här: http://www.sweclockers.com/forum/showthread.php?s=&postid=6203488#post6203488
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "Lack-hyllor.", + "author_id": 6, + "created_at": 1189186200000, + "created_by": 6, + "updated_at": 1189186200000, + "updated_by": 6, + "published_at": 1189186200000, + "published_by": 6 + }, + { + "id": 101, + "title": "Såhär gör man reklam för operativsystem!", + "slug": "sahar-gor-man-reklam-for-operativsystem", + "markdown": "\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n", + "html": "
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1189606080000, + "created_by": 6, + "updated_at": 1189606080000, + "updated_by": 6, + "published_at": 1189606080000, + "published_by": 6 + }, + { + "id": 102, + "title": "Guitar Hero 3 kommer till PC och Mac", + "slug": "guitar-hero-3-kommer-till-pc-och-mac", + "markdown": "\r\n\r\nAspyr Media, företaget bakom de\r\nvansinnigt populära Guitar Hero spelen, har parat upp med Activision för att\r\ngöra nästa del i serien (Guitar Hero III: Legends of rock) tillgänglig även för\r\nPC och Mac. De tidigare spelen i serien har endast funnits för PS2 och\r\nXBOX 360, GHIII kommer alltså släppas till PS2, PS3, Xbox 360, Wii, PC och Mac!\r\nTill PC och Mac kommer spelet att säljas med en USB-baserad Gibsongitarr.\r\nFörhoppningsvis kommer vi även att få se roliga flerspelarlägen med\r\nnätverksstöd. Hur kul vore det inte att spöa värsta konkurrenten på ett DragonForce-solo över\r\nInternet till fredagsölen?\r\n\r\nAspyr medias pressrelease:\r\n\r\n\r\nhttp://www.aspyr.com/software/news/85/167\r\n\r\n\r\nAll info om Guitar Hero III:\r\n\r\n\r\nhttp://en.wikipedia.org/wiki/Guitar_Hero_III:_Legends_of_Rock\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/gh3-logo.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/gh3-1.png)", + "html": "
Aspyr Media, företaget bakom de
vansinnigt populära Guitar Hero spelen, har parat upp med Activision för att
göra nästa del i serien (Guitar Hero III: Legends of rock) tillgänglig även för
PC och Mac. De tidigare spelen i serien har endast funnits för PS2 och
XBOX 360, GHIII kommer alltså släppas till PS2, PS3, Xbox 360, Wii, PC och Mac!
Till PC och Mac kommer spelet att säljas med en USB-baserad Gibsongitarr.
Förhoppningsvis kommer vi även att få se roliga flerspelarlägen med
nätverksstöd. Hur kul vore det inte att spöa värsta konkurrenten på ett DragonForce-solo över
Internet till fredagsölen?
Aspyr medias pressrelease:
http://www.aspyr.com/software/news/85/167
All info om Guitar Hero III:
http://en.wikipedia.org/wiki/Guitar_Hero_III:_Legends_of_Rock
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1189675200000, + "created_by": 1085, + "updated_at": 1189675200000, + "updated_by": 1085, + "published_at": 1189675200000, + "published_by": 1085 + }, + { + "id": 105, + "title": "Helgnöje: 100 C64-spel på 10 minuter!", + "slug": "helgnoje-100-c64-spel-pa-10-minuter", + "markdown": "\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nFör den som inte fått nog så finns det en site som heter C64 longplay som har spelat igenom en massa klassiker - nu har du chansen att se hur det såg ut när man klarade t.ex. Impossible Mission eller Hunchback:\r\n\r\n\r\n\r\nhttp://www.youtube.com/results?search_query=c64+longplay&search=Search\r\n\r\n\r\n\r\n\r\n\r\nFör den som ändå inte har fått nog finns också 100 Amiga-spel på 10 minuter:\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n", + "html": "
För den som inte fått nog så finns det en site som heter C64 longplay som har spelat igenom en massa klassiker - nu har du chansen att se hur det såg ut när man klarade t.ex. Impossible Mission eller Hunchback:
http://www.youtube.com/results?search_query=c64+longplay&search=Search
För den som ändå inte har fått nog finns också 100 Amiga-spel på 10 minuter:
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1189869000000, + "created_by": 6, + "updated_at": 1189869000000, + "updated_by": 6, + "published_at": 1189869000000, + "published_by": 6 + }, + { + "id": 110, + "title": "Helgen är räddad: SingStar-klon till PC!", + "slug": "helgen-ar-raddad-singstar-klon-till-pc", + "markdown": "\r\n\r\n\r\nHar du alltid sneglat avundsjukt på dina kompisar med Playstation och SingStar? Nu finns en \"SingStar-emulator\" till PC! Efter ett tips i IDG-tidningen M3 laddade vi ner och testade UltraStar - en open source-variant av SingStar. För den som har missat hela SingStar-tåget så är det ett otroligt roligt karaokespel där man inte bara får text och musik presenterade, utan även bedöms utifrån hur väl man håller ton och kan spela mot varandra. I UltraStar finns en mängd spellägen, allt från ensamsjungande och duetter till partyläge med turneringar mellan upp till sju spelare.\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/ultrastar_cap.jpg)\r\n\r\n\r\nProgrammet är otroligt enkelt att installera (kopiera bara filerna till en katalog i program files) och kräver inga konstiga drivrutiner eller så. Det är bara att plugga i mikrofonen och sjunga! Har du bara ett ljudkort (ganska vanligt) kan du med en enkel adapter dela upp stereoingången i två monoingångar och tilldela de två mikrofonerna varsin kanal så att ni kan spela två samtidigt. Har du flera ljudkort kan du klämma in ännu fler samtidiga spelare än två.\r\n\r\n\r\nMan kan även göra egna låtar till UltraStar - man behöver en mp3-fil, en midi-fil (som programmet läser ut tonhöjderna ur) samt en timead fil med texten. Har du en video också är det bara att lägga dit den med, men det är inget krav. Kanske inget man snor ihop på fem minuter, men det finns gott om färdiggjorda låtar att hitta på webben, vilket väl borde vara OK om man har köpt låten på skiva eller Itunes? Roligast är att det finns mängder av låtar som aldrig kommer leta sig fram till SingStar - vad sägs om ett \"all death metal karaoke\"?\r\n\r\n\r\nÄven om ordet SingStar inte nämns någonstans på UltraStars webbplats så kan man tänka sig att Sony förr eller senare kommer att göra sitt bästa för att få säkra monopolet för en av deras största försäljningssuccéer. Passa på att ladda ner det nu :-)\r\n\r\n\r\n\r\nhttp://www.ultrastar.de\r\n\r\n\r\n", + "html": "
Har du alltid sneglat avundsjukt på dina kompisar med Playstation och SingStar? Nu finns en \"SingStar-emulator\" till PC! Efter ett tips i IDG-tidningen M3 laddade vi ner och testade UltraStar - en open source-variant av SingStar. För den som har missat hela SingStar-tåget så är det ett otroligt roligt karaokespel där man inte bara får text och musik presenterade, utan även bedöms utifrån hur väl man håller ton och kan spela mot varandra. I UltraStar finns en mängd spellägen, allt från ensamsjungande och duetter till partyläge med turneringar mellan upp till sju spelare.
Programmet är otroligt enkelt att installera (kopiera bara filerna till en katalog i program files) och kräver inga konstiga drivrutiner eller så. Det är bara att plugga i mikrofonen och sjunga! Har du bara ett ljudkort (ganska vanligt) kan du med en enkel adapter dela upp stereoingången i två monoingångar och tilldela de två mikrofonerna varsin kanal så att ni kan spela två samtidigt. Har du flera ljudkort kan du klämma in ännu fler samtidiga spelare än två.
Man kan även göra egna låtar till UltraStar - man behöver en mp3-fil, en midi-fil (som programmet läser ut tonhöjderna ur) samt en timead fil med texten. Har du en video också är det bara att lägga dit den med, men det är inget krav. Kanske inget man snor ihop på fem minuter, men det finns gott om färdiggjorda låtar att hitta på webben, vilket väl borde vara OK om man har köpt låten på skiva eller Itunes? Roligast är att det finns mängder av låtar som aldrig kommer leta sig fram till SingStar - vad sägs om ett \"all death metal karaoke\"?
Även om ordet SingStar inte nämns någonstans på UltraStars webbplats så kan man tänka sig att Sony förr eller senare kommer att göra sitt bästa för att få säkra monopolet för en av deras största försäljningssuccéer. Passa på att ladda ner det nu :-)
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1190206200000, + "created_by": 6, + "updated_at": 1190206200000, + "updated_by": 6, + "published_at": 1190206200000, + "published_by": 6 + }, + { + "id": 117, + "title": "Frets on Fire: Guitar Hero-klon till PC", + "slug": "frets-on-fire-guitar-hero-klon-till-pc", + "markdown": "\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/fretsonfire.png)\r\n\r\nFrets on Fire är en riktigt snygg Guitar Hero-klon för PC\r\n(Windows, Linux och Mac) som dessutom är helt open source. Projektet verkar\r\nha varit igång sen i januari, men själv hade jag missat det helt fram till nu.\r\n\r\nLikheterna med UltraStar är många, t.ex. går egna låtar att\r\nproducera genom att kombinera en OGG-fil med ljudspåret och en midifil som\r\nbeskriver gitarrtonerna som skall anslås. Och precis som med UltraStar handlar\r\ndet om ren och skär kopiering av spelidén, så bli inte förvånade om projektet\r\nplötsligt upphör att existera. Ladda ner medans det finns kvar!\r\n\r\nI väntan på bra spelkontroller (läs Guitar Hero III’s\r\nUSB-kontroll...) får man köra med ett uppochnedvänt tangentbord (F1-F5) som\r\ngitarr, något som fungerar oväntat bra. Extra kul om man har ett trådlöst\r\ntangentbord!\r\n\r\nFreebird!\r\n\r\n\r\nProgrammet laddas hem från:\r\nhttp://fretsonfire.sourceforge.net/\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/pose.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/fretsingame.png)\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n", + "html": "
Frets on Fire är en riktigt snygg Guitar Hero-klon för PC
(Windows, Linux och Mac) som dessutom är helt open source. Projektet verkar
ha varit igång sen i januari, men själv hade jag missat det helt fram till nu.
Likheterna med UltraStar är många, t.ex. går egna låtar att
producera genom att kombinera en OGG-fil med ljudspåret och en midifil som
beskriver gitarrtonerna som skall anslås. Och precis som med UltraStar handlar
det om ren och skär kopiering av spelidén, så bli inte förvånade om projektet
plötsligt upphör att existera. Ladda ner medans det finns kvar!
I väntan på bra spelkontroller (läs Guitar Hero III’s
USB-kontroll...) får man köra med ett uppochnedvänt tangentbord (F1-F5) som
gitarr, något som fungerar oväntat bra. Extra kul om man har ett trådlöst
tangentbord!
Freebird!
Programmet laddas hem från:
http://fretsonfire.sourceforge.net/
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1190834880000, + "created_by": 1085, + "updated_at": 1190834880000, + "updated_by": 1085, + "published_at": 1190834880000, + "published_by": 1085 + }, + { + "id": 130, + "title": "Se på film i din mobil", + "slug": "se-pa-film-i-din-mobil", + "markdown": "\r\n\r\nSmarta telefoner blir allt vanligare - t.ex. Sony Ericsson P1, Nokia N95 och Windows Mobile-mobiler från en mängd tillverkare. Att surfa mobilt och alltid komma åt sin epost är bekvämt - men visste du att du kan se på filmer och TV-serier i riktigt bra kvalitet direkt i mobilen?\r\n\r\nÄr det svårt? Nej!\r\nBlir det inte väldigt smått? Skärmen på mobilen är ju inte så stor, men\r\neftersom moderna mobiler har väldigt bra upplösning så funkar det över all\r\nförväntan.\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/transformers2.png)\r\n\r\n\r\nDet här behöver du:\r\n\r\n\r\nEn smartphone eller en handdator med Windows Mobile (t.ex. Samsung BlackJack eller HTC MTeoR), Symbian (t.ex. Nokia N95 eller SonyEricsson P1) eller PalmOS (t.ex. Treo).\r\nCorePlayer – en mycket bra mediespelare för mobila enheter för $20-$25 beroende på operativsystem, eller gratisvarianten TCPMP som funkar bra men inte är lika snyggt och inte vidareutvecklas.\r\n\r\nPocketDivXEncoder – ett gratis filmkonverteringsprogram som tar nästan vilken videofil som helst och konverterar till ett anpassat DivX-format för din mobila enhet.\r\n\r\n\r\n\r\n\r\nGör så här (det är lättare än vad det ser ut - följ bara instruktionen steg för steg):\r\n\r\n\r\nLadda ner här: PocketDivXEncoder. Från och med den nya versionen (0.3.96 beta) funkar det utmärkt även på Vista om man kör det som administratör. PocketDivXEncoder är ett grafiskt gränssnitt till den grymma konverteringsmotorn mencoder som klarar av att konvertera från nästan alla videoformat man kan tänka sig (divx, xvid, mpeg, mpeg2, mkv o.s.v.)\r\nNär man startar PocketDivXEncoder får man välja vilken enhet man ska koda video för. Jag brukar välja PDA eftersom den har samma upplösning som min HTC MTeoR (240 x 320 pixlar).\r\nÖppna din videofil.\r\nGör lämpliga inställningar för konverteringen. Jag brukar välja de här (vissa ligger under advanced options):\r\nVideo quality: 12 (max)Audio quality: 5Brightness: +6%Saturation: +5%Sound: +5%Use 2-pass encoding: ikryssad (konverteringen tar längre tid men ger bättre kvalitet)Deinterlace: ikryssadVHQ: ikryssadXviD: ikryssad (om man inte kryssar i den här får man ut en DivX-fil istället – skillnaden är minimal).\r\nÖverkurs: Beskär filmen. Om din enhet inte har widescreenformat så kan det bli en del svarta kanter (precis som på en vanlig TV utan widescreen). Jag brukar beskära lite så att man får en video med större höjd men tappar lite i ytterkanterna. För en TV-serie i widescreen (1.78:1) brukar jag sätta höjden till 210, för en film (2.35:1) brukar jag sätta höjden till 180. Detta gör man under Resize.\r\nTryck på Encode Now så sätter kodningen igång.\r\nLadda ner och installera CorePlayer eller TCPMP på din mobila enhet.\r\nNär punkt 6 är klar, kopiera över den konverterade filen till din mobila enhet.\r\nÖppna filen i CorePlayer och njut av film överallt! Coreplayer gör sig bäst i fullskärmsläge där den vrider filmen för att utnyttja skärmytan på bästa sätt.\r\n\r\n\r\n\r\nMed inställningar ovan blir ett 22-minutersavsnitt av en TV-serie ungefär 85 MB, 45-minutersavsnitt 160 MB och en långfilm c:a 325 MB. Man får in mycket TV och film på ett minneskort på 2GB med andra ord.\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/pocketdivx.png)", + "html": "
Smarta telefoner blir allt vanligare - t.ex. Sony Ericsson P1, Nokia N95 och Windows Mobile-mobiler från en mängd tillverkare. Att surfa mobilt och alltid komma åt sin epost är bekvämt - men visste du att du kan se på filmer och TV-serier i riktigt bra kvalitet direkt i mobilen?
Är det svårt? Nej!
Blir det inte väldigt smått? Skärmen på mobilen är ju inte så stor, men
eftersom moderna mobiler har väldigt bra upplösning så funkar det över all
förväntan.
Det här behöver du:
- En smartphone eller en handdator med Windows Mobile (t.ex. Samsung BlackJack eller HTC MTeoR), Symbian (t.ex. Nokia N95 eller SonyEricsson P1) eller PalmOS (t.ex. Treo).
- CorePlayer – en mycket bra mediespelare för mobila enheter för $20-$25 beroende på operativsystem, eller gratisvarianten TCPMP som funkar bra men inte är lika snyggt och inte vidareutvecklas.
PocketDivXEncoder – ett gratis filmkonverteringsprogram som tar nästan vilken videofil som helst och konverterar till ett anpassat DivX-format för din mobila enhet.
Gör så här (det är lättare än vad det ser ut - följ bara instruktionen steg för steg):
- Ladda ner här:
PocketDivXEncoder. Från och med den nya versionen (0.3.96 beta) funkar det utmärkt även på Vista om man kör det som administratör. PocketDivXEncoder är ett grafiskt gränssnitt till den grymma konverteringsmotorn mencoder som klarar av att konvertera från nästan alla videoformat man kan tänka sig (divx, xvid, mpeg, mpeg2, mkv o.s.v.) - När man startar PocketDivXEncoder får man välja vilken enhet man ska koda video för. Jag brukar välja PDA eftersom den har samma upplösning som min HTC MTeoR (240 x 320 pixlar).
- Öppna din videofil.
- Gör lämpliga inställningar för konverteringen. Jag brukar välja de här (vissa ligger under advanced options):
- Video quality: 12 (max)
- Audio quality: 5
- Brightness: +6%
- Saturation: +5%
- Sound: +5%
- Use 2-pass encoding: ikryssad (konverteringen tar längre tid men ger bättre kvalitet)
- Deinterlace: ikryssad
- VHQ: ikryssad
- XviD: ikryssad (om man inte kryssar i den här får man ut en DivX-fil istället – skillnaden är minimal).
- Överkurs: Beskär filmen. Om din enhet inte har widescreenformat så kan det bli en del svarta kanter (precis som på en vanlig TV utan widescreen). Jag brukar beskära lite så att man får en video med större höjd men tappar lite i ytterkanterna. För en TV-serie i widescreen (1.78:1) brukar jag sätta höjden till 210, för en film (2.35:1) brukar jag sätta höjden till 180. Detta gör man under Resize.
- Tryck på Encode Now så sätter kodningen igång.
- Ladda ner och installera CorePlayer eller TCPMP på din mobila enhet.
- När punkt 6 är klar, kopiera över den konverterade filen till din mobila enhet.
- Öppna filen i CorePlayer och njut av film överallt! Coreplayer gör sig bäst i fullskärmsläge där den vrider filmen för att utnyttja skärmytan på bästa sätt.
Med inställningar ovan blir ett 22-minutersavsnitt av en TV-serie ungefär 85 MB, 45-minutersavsnitt 160 MB och en långfilm c:a 325 MB. Man får in mycket TV och film på ett minneskort på 2GB med andra ord.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "et i mobilen!", + "author_id": 6, + "created_at": 1192803840000, + "created_by": 6, + "updated_at": 1192803840000, + "updated_by": 6, + "published_at": 1192803840000, + "published_by": 6 + }, + { + "id": 135, + "title": "Låtlistan för Rock Band är klar!", + "slug": "latlistan-for-rock-band-ar-klar", + "markdown": "\r\n\r\n\r\nTa en bra idé och gör den ännu bättre - Harmonix som är upphovsmakare till Guitar Hero har tagit nästa steg och i deras nya spel Rock Band kan man jamma med tre kompisar samtidigt. \r\n\r\n\r\nRock Band fungerar precis som Guitar Hero, men har ytterligare två instrument - bas och trummor - och ett sångspår. Priset är inte helt klart, men det verkar hamna kring 2000:- inklusive alla instrument. Rock Band har alla chanser att bli vinterns stora partyspel!\r\n\r\n\r\nI veckan släpptes den officiella låtlistan:\r\n\r\n\r\n\r\n\r\n1960s\r\nRolling Stones \"Gimme Shelter\"\r\n\r\n\r\n\r\n1970s\r\nAerosmith “Train Kept a Rollin’”*The Who \"Won't Get Fooled Again\"Boston “Foreplay/Long Time”Mountain \"Mississippi Queen\"*The Police “Next to You”David Bowie \"Suffragette City\"Black Sabbath \"Paranoid\"*Blue Oyster Cult \"Don't Fear the Reaper\"The Ramones \"Blitzkrieg Bop\"Deep Purple \"Highway Star\"KISS \"Detroit Rock City\"Molly Hatchet “Flirtin’ With Disaster”The Outlaws “Green Grass & High Tides”*Sweet “Ballroom Blitz”*\r\n\r\n\r\n\r\n1980sRush \"Tom Sawyer\"*Bon Jovi \"Wanted Dead or Alive\"The Clash \"Should I Stay or Should I Go\"Faith No More \"Epic\"R.E.M. “Orange Crush”Iron Maiden “Run to the Hills”*\r\n\r\n\r\n\r\n1990s\r\nFoo Fighters \"Learn to Fly\"Metallica \"Enter Sandman\"Nirvana \"In Bloom\"Stone Temple Pilots \"Vasoline\"Weezer \"Say It Ain't So\"Smashing Pumpkins \"Cherub Rock\"Radiohead \"Creep\"Beastie Boys \"Sabotage\"Hole \"Celebrity Skin\"Garbage \"I Think I'm Paranoid\"Soundgarden \"Black Hole Sun\"\r\n\r\n\r\n\r\n2000sThe Hives \"Main Offender\"Queens of the Stone Age \"Go With the Flow\"The Strokes \"Reptilia\"Jet \"Are You Gonna Be My Girl\"OK Go \"Here It Goes Again\"Nine Inch Nails \"The Hand That Feeds\"Pixies \"Wave of Mutilation\"Yeah Yeah Yeahs \"Maps\"Red Hot Chili Peppers \"Dani California\"Coheed & Cambria “Welcome Home”Fallout Boy “Dead on Arrival”The Killers “When You Were Young”New Pornographers “Electric Version”\r\n\r\n\r\n\r\n* Cover-version\r\n\r\n\r\nDen här listan innehåller en helt sjukt hög procent favoritlåtar av band jag har lyssnat mycket på i mitt liv, så det här känns som ett givet köp!\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/rockband-instruments.png)\r\n\r\n\r\nSåhär ser det ut när man spelar:\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n", + "html": "
Ta en bra idé och gör den ännu bättre - Harmonix som är upphovsmakare till Guitar Hero har tagit nästa steg och i deras nya spel Rock Band kan man jamma med tre kompisar samtidigt.
Rock Band fungerar precis som Guitar Hero, men har ytterligare två instrument - bas och trummor - och ett sångspår. Priset är inte helt klart, men det verkar hamna kring 2000:- inklusive alla instrument. Rock Band har alla chanser att bli vinterns stora partyspel!
I veckan släpptes den officiella låtlistan:
1960s
Rolling Stones \"Gimme Shelter\"
1970s
Aerosmith “Train Kept a Rollin’”*
The Who \"Won't Get Fooled Again\"
Boston “Foreplay/Long Time”
Mountain \"Mississippi Queen\"*
The Police “Next to You”
David Bowie \"Suffragette City\"
Black Sabbath \"Paranoid\"*
Blue Oyster Cult \"Don't Fear the Reaper\"
The Ramones \"Blitzkrieg Bop\"
Deep Purple \"Highway Star\"
KISS \"Detroit Rock City\"
Molly Hatchet “Flirtin’ With Disaster”
The Outlaws “Green Grass & High Tides”*
Sweet “Ballroom Blitz”*
1980s
Rush \"Tom Sawyer\"*
Bon Jovi \"Wanted Dead or Alive\"
The Clash \"Should I Stay or Should I Go\"
Faith No More \"Epic\"
R.E.M. “Orange Crush”
Iron Maiden “Run to the Hills”*
1990s
Foo Fighters \"Learn to Fly\"
Metallica \"Enter Sandman\"
Nirvana \"In Bloom\"
Stone Temple Pilots \"Vasoline\"
Weezer \"Say It Ain't So\"
Smashing Pumpkins \"Cherub Rock\"
Radiohead \"Creep\"
Beastie Boys \"Sabotage\"
Hole \"Celebrity Skin\"
Garbage \"I Think I'm Paranoid\"
Soundgarden \"Black Hole Sun\"
2000s
The Hives \"Main Offender\"
Queens of the Stone Age \"Go With the Flow\"
The Strokes \"Reptilia\"
Jet \"Are You Gonna Be My Girl\"
OK Go \"Here It Goes Again\"
Nine Inch Nails \"The Hand That Feeds\"
Pixies \"Wave of Mutilation\"
Yeah Yeah Yeahs \"Maps\"
Red Hot Chili Peppers \"Dani California\"
Coheed & Cambria “Welcome Home”
Fallout Boy “Dead on Arrival”
The Killers “When You Were Young”
New Pornographers “Electric Version”
* Cover-version
Den här listan innehåller en helt sjukt hög procent favoritlåtar av band jag har lyssnat mycket på i mitt liv, så det här känns som ett givet köp!
Såhär ser det ut när man spelar:
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1193908800000, + "created_by": 6, + "updated_at": 1193908800000, + "updated_by": 6, + "published_at": 1193908800000, + "published_by": 6 + }, + { + "id": 143, + "title": "XNA GameStudio 2.0 beta finns nu att ladda ner", + "slug": "xna-gamestudio-20-beta-finns-nu-att-ladda-ner", + "markdown": "\r\n\r\n\r\nAtt utveckla dataspel är många datanördars dröm - och nu är det möjligt, även för oss som inte har orkat dyka djupt i prestandaoptimerad C++ och grafikprogrammering på vertex-nivå. Med Microsofts XNA Game Studio så kan man sätta ihop färdiga komponenter till ett spel på bara några timmar. Tidigare har Game Studio krävt att man installerar en Express-versionen av Visual Studio, men i och med 2.0 beta så kan man använda vanliga Visual Studio 2005 (det ryktas om stöd för Visual Studio 2008 i den skarpa releasen).\r\n\r\n\r\nOm du vill se lite exempel på spel som gjorts med Game Studio, titta på tävlingen Swedish Game Awards som Microsoft håller varje år. Förra årets vinnare Graviton Ultra ser riktigt grymt ut.\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/original.jpg)\r\n\r\n\r\nLadda ner betan av XNA Game Studio här.\r\n\r\n", + "html": "
Att utveckla dataspel är många datanördars dröm - och nu är det möjligt, även för oss som inte har orkat dyka djupt i prestandaoptimerad C++ och grafikprogrammering på vertex-nivå. Med Microsofts XNA Game Studio så kan man sätta ihop färdiga komponenter till ett spel på bara några timmar. Tidigare har Game Studio krävt att man installerar en Express-versionen av Visual Studio, men i och med 2.0 beta så kan man använda vanliga Visual Studio 2005 (det ryktas om stöd för Visual Studio 2008 i den skarpa releasen).
Om du vill se lite exempel på spel som gjorts med Game Studio, titta på tävlingen Swedish Game Awards som Microsoft håller varje år. Förra årets vinnare Graviton Ultra ser riktigt grymt ut.
Ladda ner betan av XNA Game Studio här.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "ör att veva ihop ett spel för PC eller Xbox på en kväll", + "author_id": 6, + "created_at": 1195560600000, + "created_by": 6, + "updated_at": 1195560600000, + "updated_by": 6, + "published_at": 1195560600000, + "published_by": 6 + }, + { + "id": 158, + "title": "Lek med 3000 tunnor i Crysis", + "slug": "lek-med-3000-tunnor-i-crysis", + "markdown": "\r\n\r\n\r\nDet är alltid kul med grym spelfysik, men extra kul när man plötsligt ser något i en spelmotor som känns långt mer avancerat än man trodde var möjligt. Jag sprang på den här filmen där någon testat gränserna för Crysis motor (Cryteks CryENGINE2) rejält. Förmodligen lär man behöva en ganska vass rigg för att klara av att upprepa detta, men det visar ändå på en riktigt fin fysikmotor.\r\n\r\n\r\nCryENGINE2 är en vidareutveckling av den motor som användes i Far Cry, en kul notis är att svenska MindArk (Project Entropia) har licensierat motorn till sitt kommande Entropia Universe.\r\n\r\n\r\nTjing pax för att slippa städa undan alla tunnorna!\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/tunnor.png)", + "html": "
Det är alltid kul med grym spelfysik, men extra kul när man plötsligt ser något i en spelmotor som känns långt mer avancerat än man trodde var möjligt. Jag sprang på den här filmen där någon testat gränserna för Crysis motor (Cryteks CryENGINE2) rejält. Förmodligen lär man behöva en ganska vass rigg för att klara av att upprepa detta, men det visar ändå på en riktigt fin fysikmotor.
CryENGINE2 är en vidareutveckling av den motor som användes i Far Cry, en kul notis är att svenska MindArk (Project Entropia) har licensierat motorn till sitt kommande Entropia Universe.
Tjing pax för att slippa städa undan alla tunnorna!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1197935400000, + "created_by": 1085, + "updated_at": 1197935400000, + "updated_by": 1085, + "published_at": 1197935400000, + "published_by": 1085 + }, + { + "id": 165, + "title": "Speltipset: Portal", + "slug": "speltipset-portal", + "markdown": "\r\n\r\n\r\nDet är inte så ofta det kommer ett spel med en helt ny spelidé - men Portal är faktiskt ett sådant! Du vaknar upp i ett testlabb och har som enda hjälp en manick som skapar teleporteringsportaler. En blå portal och en gul portal, som är omedelbart hopkopplade. Det är en fiffigt hjälpmedel när du t.ex. ska ta dig upp på en plats dit du inte kan hoppa, och riktigt förvirrande blir det när du placerar ena portalen i golvet och den andra högt upp på en vägg. Total desorientering uppstår när gravitationen plötsligt har vridit sig åt ett annat håll!\r\n\r\n\r\nSom enda vägledare har du den ganska konstiga datorn GlaDOS som i ett lugnt och glatt tonläge berättar om hemska saker som kommer hända dig om du misslyckas med testerna. En tårta och en kub spelar också viktiga roller för handlingen, som jag inte ska avslöja mer om. Estetiken och idén påminner om filmen Cube och dess uppföljare HyperCube, och i kombination med en stor dos svart humor har Portal blivit mångas nya favorit. Bäst förstår man kanske alltihop av spelets trailer (som både visar spelidén och tonläget):\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nSjälv älskar jag det här spelet, dess enda fel är att det är för kort och går för fort att spela igenom. Det är dock ändå klart värt de $25 det kostar på Steam. Jag är inte alls överraskad över alla fansites och tributes som har gjorts, bland annat en av fredags-photoshop-tävlingarna på Something Awful. Som bonus har det också vad som måste vara spelhistoriens bästa ending credits :-).\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/portal_1184139776.jpg)", + "html": "
Det är inte så ofta det kommer ett spel med en helt ny spelidé - men Portal är faktiskt ett sådant! Du vaknar upp i ett testlabb och har som enda hjälp en manick som skapar teleporteringsportaler. En blå portal och en gul portal, som är omedelbart hopkopplade. Det är en fiffigt hjälpmedel när du t.ex. ska ta dig upp på en plats dit du inte kan hoppa, och riktigt förvirrande blir det när du placerar ena portalen i golvet och den andra högt upp på en vägg. Total desorientering uppstår när gravitationen plötsligt har vridit sig åt ett annat håll!
Som enda vägledare har du den ganska konstiga datorn GlaDOS som i ett lugnt och glatt tonläge berättar om hemska saker som kommer hända dig om du misslyckas med testerna. En tårta och en kub spelar också viktiga roller för handlingen, som jag inte ska avslöja mer om. Estetiken och idén påminner om filmen Cube och dess uppföljare HyperCube, och i kombination med en stor dos svart humor har Portal blivit mångas nya favorit. Bäst förstår man kanske alltihop av spelets trailer (som både visar spelidén och tonläget):
Själv älskar jag det här spelet, dess enda fel är att det är för kort och går för fort att spela igenom. Det är dock ändå klart värt de $25 det kostar på Steam. Jag är inte alls överraskad över alla fansites och tributes som har gjorts, bland annat en av fredags-photoshop-tävlingarna på Something Awful. Som bonus har det också vad som måste vara spelhistoriens bästa ending credits :-).
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1199665560000, + "created_by": 6, + "updated_at": 1199665560000, + "updated_by": 6, + "published_at": 1199665560000, + "published_by": 6 + }, + { + "id": 176, + "title": "Håll koll på hur din dator ligger till prestandamässigt", + "slug": "hall-koll-pa-hur-din-dator-ligger-till-prestandamassigt", + "markdown": "\r\n\r\n\r\n3DMark är programmet som har blivit lite av en standard när det gäller att mäta sin dators prestanda, särskilt när det gäller hur den klarar tunga 3D-applikationer som nya spel. Tillverkaren Futuremark har skapat en community kring sitt program dit man kan skicka in resultaten och jämföra med andra. Senaste tillägget till communityn är en riktigt snygg flashkarta som visar i realtid hur testerna går.\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/futuremark.png)\r\nMan kan också hitta annan intressant statistik som vilka komponenter som ger bäst prestanda per krona. Titta på flashkartan här: 3DMarks flashkarta", + "html": "
3DMark är programmet som har blivit lite av en standard när det gäller att mäta sin dators prestanda, särskilt när det gäller hur den klarar tunga 3D-applikationer som nya spel. Tillverkaren Futuremark har skapat en community kring sitt program dit man kan skicka in resultaten och jämföra med andra. Senaste tillägget till communityn är en riktigt snygg flashkarta som visar i realtid hur testerna går.
Man kan också hitta annan intressant statistik som vilka komponenter som ger bäst prestanda per krona. Titta på flashkartan här: 3DMarks flashkarta
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "testerna går runt om i världen", + "author_id": 6, + "created_at": 1201600500000, + "created_by": 6, + "updated_at": 1201600500000, + "updated_by": 6, + "published_at": 1201600500000, + "published_by": 6 + }, + { + "id": 177, + "title": "DisplayFusion - olika bakgrundsbilder på dina dubbla skärmar", + "slug": "displayfusion---olika-bakgrundsbilder-pa-dina-dubbla-skarmar", + "markdown": "\r\n\r\n\r\nOm du tillhör den del av datoranvändare som inte klarar sig på enbart en skärm, så kanske du hunnit störa dig på att Windows (XP & Vista) endast låter dig välja en bakgrundsbild trots att du vill ha olika bilder eller en bakgrund som sträcker sig över båda skärmarna.\r\n\r\n\r\nSom tur är finns det fler som velat uppnå ovanstående och tagit saken i egna händer, och jag vill framförallt lyfta fram gratisverktyget DisplayFusion. Programmet fungerar precis så bra som man vill att det skall göra och låter användaren enkelt bestämma individuella bakgrundsbilder på upp till tre skärmar. Man kan också enkelt flytta runt bilderna för att få så snygga skarvar som möjligt. Jag har testat DisplayFusion i Vista och där fungerar det helt felfritt.\r\n\r\n\r\nDisplayFusion har även en direktkoppling mot Flickr, där man kan söka bilder direkt i bildjättens arkiv. Smidigt!\r\n\r\n\r\nProgrammet är gratis och laddas ned från Binary Fortress hemsida. En snabb Googlesökning på Dual Screen Wallpapers öppnar sedan en värld av snygga bakgrunder, min favoritsite är Mandolux som har grymma bakgrunder för alla skärmstorlekar.\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/dualscreen.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/displayfusion_1_5_0_wallpaper.gif)", + "html": "
Om du tillhör den del av datoranvändare som inte klarar sig på enbart en skärm, så kanske du hunnit störa dig på att Windows (XP & Vista) endast låter dig välja en bakgrundsbild trots att du vill ha olika bilder eller en bakgrund som sträcker sig över båda skärmarna.
Som tur är finns det fler som velat uppnå ovanstående och tagit saken i egna händer, och jag vill framförallt lyfta fram gratisverktyget DisplayFusion. Programmet fungerar precis så bra som man vill att det skall göra och låter användaren enkelt bestämma individuella bakgrundsbilder på upp till tre skärmar. Man kan också enkelt flytta runt bilderna för att få så snygga skarvar som möjligt. Jag har testat DisplayFusion i Vista och där fungerar det helt felfritt.
DisplayFusion har även en direktkoppling mot Flickr, där man kan söka bilder direkt i bildjättens arkiv. Smidigt!
Programmet är gratis och laddas ned från Binary Fortress hemsida. En snabb Googlesökning på Dual Screen Wallpapers öppnar sedan en värld av snygga bakgrunder, min favoritsite är Mandolux som har grymma bakgrunder för alla skärmstorlekar.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "lika bilder eller en bakgrund som sträcker sig över båda skärmarna.", + "author_id": 1085, + "created_at": 1201603200000, + "created_by": 1085, + "updated_at": 1201603200000, + "updated_by": 1085, + "published_at": 1201603200000, + "published_by": 1085 + }, + { + "id": 179, + "title": "Dagens felmeddelande", + "slug": "dagens-felmeddelande", + "markdown": "\r\n\r\n\r\nVid ett försök att starta Sony Ericsson PC Suite fick en av våra kunder följande (väldigt ologiska) felmeddelande. Vad skulle du svara?\r\n\r\n\r\nTrevlig helg!\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/sepcsuite.png)\r\n\r\n\r\n\r\n", + "html": "
Vid ett försök att starta Sony Ericsson PC Suite fick en av våra kunder följande (väldigt ologiska) felmeddelande. Vad skulle du svara?
Trevlig helg!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1202472600000, + "created_by": 1085, + "updated_at": 1202472600000, + "updated_by": 1085, + "published_at": 1202472600000, + "published_by": 1085 + }, + { + "id": 180, + "title": "The Real Guitar Hero", + "slug": "the-real-guitar-hero", + "markdown": "\r\n\r\n\r\nGuitar Rising är som Guitar Hero - men med en riktig elgitarr! Vi datorns inbyggda ljudkort eller ett extern USB-ljudkort kan du koppla in vilken elgitarr som helst och äga dina vänner! Via det ljud som kommer in vet spelet vilken sträng som spelas och på vilket band - en sträng i taget är det som gäller, inga ackord med andra ord. Det här tror jag kommer att bli ett grymt spel som man dessutom kan ha mycket nytta av när man övar. Elgitarr ingår dock ej :-).\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/guitarrising.png)\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nLäs mer på http://www.guitarrising.com.\r\n\r\n\r\n", + "html": "
Guitar Rising är som Guitar Hero - men med en riktig elgitarr! Vi datorns inbyggda ljudkort eller ett extern USB-ljudkort kan du koppla in vilken elgitarr som helst och äga dina vänner! Via det ljud som kommer in vet spelet vilken sträng som spelas och på vilket band - en sträng i taget är det som gäller, inga ackord med andra ord. Det här tror jag kommer att bli ett grymt spel som man dessutom kan ha mycket nytta av när man övar. Elgitarr ingår dock ej :-).
Läs mer på http://www.guitarrising.com.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1202728320000, + "created_by": 6, + "updated_at": 1202728320000, + "updated_by": 6, + "published_at": 1202728320000, + "published_by": 6 + }, + { + "id": 190, + "title": "Ny version av CorePlayer", + "slug": "ny-version-av-coreplayer", + "markdown": "\r\n\r\n\r\nTidigare har vi berättat om hur man bäst ser på film i sin mobil. Nu har vår favoritspelare CorePlayer kommit i ny version, som bland annat innehåller följande nyheter:\r\n\r\n\r\n- Streaming, stöder alla vanliga format som används av SVT, SR och andra\r\n\r\n\r\n- YouTube-integration: specialfunktioner för att göra surfande på YouTubes mobilsite m.youtube.com bättre. Bland annat kan man välja att få se videos i bättre kvalitet.\r\n\r\n\r\n- Stöd för mängder med nya format (bland annat AVCHD, GSM Audio, PNG med alfakanal, \r\n\r\n\r\n- Nytt och bättre mediebibliotek för att hålla reda på alla filer man har på sin enhet\r\n\r\n\r\n- Språkstöd\r\n\r\n\r\n- Hundratals buggfixar, särskilt för Symbian och PalmOS som tidigare har legat lite efter Windows Mobile-versionen.\r\n\r\n\r\n\r\nMycket nöje! http://coreplayer.com/\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/cp_logo_ontop.jpg)", + "html": "
Tidigare har vi berättat om hur man bäst ser på film i sin mobil. Nu har vår favoritspelare CorePlayer kommit i ny version, som bland annat innehåller följande nyheter:
- Streaming, stöder alla vanliga format som används av SVT, SR och andra
- YouTube-integration: specialfunktioner för att göra surfande på YouTubes mobilsite m.youtube.com bättre. Bland annat kan man välja att få se videos i bättre kvalitet.
- Stöd för mängder med nya format (bland annat AVCHD, GSM Audio, PNG med alfakanal,
- Nytt och bättre mediebibliotek för att hålla reda på alla filer man har på sin enhet
- Språkstöd
- Hundratals buggfixar, särskilt för Symbian och PalmOS som tidigare har legat lite efter Windows Mobile-versionen.
Mycket nöje! http://coreplayer.com/
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1206012540000, + "created_by": 6, + "updated_at": 1206012540000, + "updated_by": 6, + "published_at": 1206012540000, + "published_by": 6 + }, + { + "id": 191, + "title": "Battlefield Heroes - Gratisspel från DICE i sommar", + "slug": "battlefield-heroes---gratisspel-fran-dice-i-sommar", + "markdown": "\r\n\r\n\r\nSvenska spelutvecklarna DICE, företaget bakom Battlefield-serien, lanserar i sommar ett nyutvecklat onlinespel - helt gratis! Spelet, Battlefield Heroes, är enl DICE en \"Cartoon Shooter\" och kan förmodligen närmast jämföras med Valves Team Fortress 2. Enligt utvecklaren är tyngdpunkten denna gång lagd helt på spelglädje och spelet lär vara långt ifrån lika \"realistiskt\" som föregångarna i serien.\r\n\r\n\r\nSpelet skall finansieras dels av reklam på spelets hemsida samt i spelets \"loader\", dock skall ingen reklam finnas inne i spelet. Man kommer även få betala mindre summor om man vill skräddarsy utseendet på sin karaktär, dock gäller detta endast utseende och är inget som ger spelfördelar.\r\n\r\n\r\nSpelet kommer även att ha ett eget rankingsystem som gör att man enbart kommer att matchas mot spelare i sin egen nivå. Detta lär förhoppningsvis göra att man slipper bli massmördad av kids som inte gör annat än att spela hela dagarna.\r\n\r\n\r\nJag tycker att det ser väldigt lovande ut, grafiken tilltalar mig stort och om DICE lyckas göra det kul att spela tror jag att det kan bli en stor succe. Kolla in trailern nedan.\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/bfheroes_logo.gif)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/bfheroes_scr1.jpg)\r\n\r\n\r\n\r\n\r\n\r\n\r\n", + "html": "
Svenska spelutvecklarna DICE, företaget bakom Battlefield-serien, lanserar i sommar ett nyutvecklat onlinespel - helt gratis! Spelet, Battlefield Heroes, är enl DICE en \"Cartoon Shooter\" och kan förmodligen närmast jämföras med Valves Team Fortress 2. Enligt utvecklaren är tyngdpunkten denna gång lagd helt på spelglädje och spelet lär vara långt ifrån lika \"realistiskt\" som föregångarna i serien.
Spelet skall finansieras dels av reklam på spelets hemsida samt i spelets \"loader\", dock skall ingen reklam finnas inne i spelet. Man kommer även få betala mindre summor om man vill skräddarsy utseendet på sin karaktär, dock gäller detta endast utseende och är inget som ger spelfördelar.
Spelet kommer även att ha ett eget rankingsystem som gör att man enbart kommer att matchas mot spelare i sin egen nivå. Detta lär förhoppningsvis göra att man slipper bli massmördad av kids som inte gör annat än att spela hela dagarna.
Jag tycker att det ser väldigt lovande ut, grafiken tilltalar mig stort och om DICE lyckas göra det kul att spela tror jag att det kan bli en stor succe. Kolla in trailern nedan.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1206619200000, + "created_by": 1085, + "updated_at": 1206619200000, + "updated_by": 1085, + "published_at": 1206619200000, + "published_by": 1085 + }, + { + "id": 205, + "title": "Grymmaste bilspelstillbehöret nånsin?", + "slug": "grymmaste-bilspelstillbehoret-nansin", + "markdown": "\r\n\r\n\r\nBilspelsentusiast som man är kunde jag inte hålla mig från att länka till den här grymma fullmotionstolen från CXC Simulations som jag snubblade över hos Gizmodo. Förutom racingstolen på fullmotionplatta får man ratt, pedaler, tre 46-tums HD-skärmar, 505 watts surroundsystem samt fyra vibrationsskapare.\r\n\r\n\r\nPris är inte angivet, men med tanke på att de byggs för hand efter beställarens specifikationer lär det handla om fantasibelopp. Men man får väl alltid drömma...\r\n\r\n\r\nAlla specifikationer finns i Gizmodos artikel.CXC Simulatons.\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/mpsii.jpg)\r\n\r\n\r\nCXC Simulations har också en riktigt grym Quicktime 3D som visar stolen ur alla vinklar man kan tänka sig.\r\n\r\n", + "html": "
Bilspelsentusiast som man är kunde jag inte hålla mig från att länka till den här grymma fullmotionstolen från CXC Simulations som jag snubblade över hos Gizmodo. Förutom racingstolen på fullmotionplatta får man ratt, pedaler, tre 46-tums HD-skärmar, 505 watts surroundsystem samt fyra vibrationsskapare.
Pris är inte angivet, men med tanke på att de byggs för hand efter beställarens specifikationer lär det handla om fantasibelopp. Men man får väl alltid drömma...
Alla specifikationer finns i Gizmodos artikel.
CXC Simulatons.
CXC Simulations har också en riktigt grym Quicktime 3D som visar stolen ur alla vinklar man kan tänka sig.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1210868700000, + "created_by": 1085, + "updated_at": 1210868700000, + "updated_by": 1085, + "published_at": 1210868700000, + "published_by": 1085 + }, + { + "id": 229, + "title": "Klyscherizer 2000", + "slug": "klyscherizer-2000", + "markdown": "\r\n\r\nEn klassiker som garanterat väcker nostalgikänslor hos dom flesta som var med kring millenieskiftet. En klyscherizer - klicka på knapparna och hör alla klyschor - så som: \"Jag lyssnade på dom långt innan de blev kända\", \"jag tyckte boken var bättre än filmen\" osv. Klockren nostalgi!På med högtalaren och följ länken:http://funzone.se/onlinespel/595-Klyscherizer_2000\r\n\r\n\r\nUPDATE 2010-05-06:Ovanstående verkar var död så Oscar tipsade om att den finns att nå på Web Archive:Klyscherizer 2000\r\n\r\n\r\nJag tog mig också friheten att göra en lokal kopia av denna del av viktig internethistoria:\r\n\r\n\r\nLokal kopia\r\n\r\n![Bild](http://tekniken.nu/uploads/633572642477218879-klyscherizer.JPG)", + "html": "
En klassiker som garanterat väcker nostalgikänslor hos dom flesta som var med kring millenieskiftet. En klyscherizer - klicka på knapparna och hör alla klyschor - så som: \"Jag lyssnade på dom långt innan de blev kända\", \"jag tyckte boken var bättre än filmen\" osv. Klockren nostalgi!
På med högtalaren och följ länken:
http://funzone.se/onlinespel/595-Klyscherizer_2000
UPDATE 2010-05-06:
Ovanstående verkar var död så Oscar tipsade om att den finns att nå på Web Archive:
Klyscherizer 2000
Jag tog mig också friheten att göra en lokal kopia av denna del av viktig internethistoria:
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Klyscherizer 2000", + "meta_description": "", + "author_id": 1087, + "created_at": 1221667447000, + "created_by": 1087, + "updated_at": 1221667447000, + "updated_by": 1087, + "published_at": 1221667447000, + "published_by": 1087 + }, + { + "id": 232, + "title": "PocketGuitar - populäraste programmet på Itunes App Store", + "slug": "pocketguitar---popularaste-programmet-pa-itunes-app-store", + "markdown": "\r\n\r\nJust nu ligger programmet PocketGuitar på topp i Itunes App Store. Det är en gitarrsimulering – eller som en av mina kollegor uttryckte det: ett av de minst meningslösa av alla de meningslösa program som finns för iPhone.\r\n\r\nMeningslöst eller inte – PocketGuitar är otroligt välgjort. Huvudskärmen består av en greppbräda där man trycker ner banden till vänster och slår an strängar längst till höger. Man kan ställa in hur långt avståndet mellan strängarna ska vara och hur många band som ska visas, så att man kan få en gitarr som passar olika storlekar på fingrar.\r\n\r\n\r\n\r\nDet finns en uppsjö inställningar. Man kan välja mellan olika gitarrer (akustisk med mick, elgitarr, nylon och bas) och mängder av stämningar, t.ex. Drop D. Accelerometern fungerar som svaj – väldigt roligt :-).\r\n\r\n\r\n\r\nDet finns två platser för pedaler där man kan välja dist, delay och chorus och göra olika inställningar.\r\n\r\nProgrammet känns oerhört responsivt och ljudet laggar ingenting. Priset är också det rätta: 7 kr. Det enda negativa är att man skulle vilja att programmet ännu mer var likt en gitarr. Det går ju förstås inte att spela ordentligt på en gitarr där man inte kan känna strängarna och som inte har mer än fyra fem band. Men det är hur kul som helst och har hög imponansfaktor!\r\n\r\nHär är en liten video på hur det funkar när man spelar:\r\n\r\n![Bild](http://tekniken.nu/uploads/633576784718920666-PocketGuitar.PNG)\r\n\r\n\r\n", + "html": "
Just nu ligger programmet PocketGuitar på topp i Itunes App Store. Det är en gitarrsimulering – eller som en av mina kollegor uttryckte det: ett av de minst meningslösa av alla de meningslösa program som finns för iPhone.
Meningslöst eller inte – PocketGuitar är otroligt välgjort. Huvudskärmen består av en greppbräda där man trycker ner banden till vänster och slår an strängar längst till höger. Man kan ställa in hur långt avståndet mellan strängarna ska vara och hur många band som ska visas, så att man kan få en gitarr som passar olika storlekar på fingrar.
Det finns en uppsjö inställningar. Man kan välja mellan olika gitarrer (akustisk med mick, elgitarr, nylon och bas) och mängder av stämningar, t.ex. Drop D. Accelerometern fungerar som svaj – väldigt roligt :-).
Det finns två platser för pedaler där man kan välja dist, delay och chorus och göra olika inställningar.
Programmet känns oerhört responsivt och ljudet laggar ingenting. Priset är också det rätta: 7 kr. Det enda negativa är att man skulle vilja att programmet ännu mer var likt en gitarr. Det går ju förstås inte att spela ordentligt på en gitarr där man inte kan känna strängarna och som inte har mer än fyra fem band. Men det är hur kul som helst och har hög imponansfaktor!
Här är en liten video på hur det funkar när man spelar:
Alla har vi väl någon gång kommit hem från en fest satt oss framför datorn och författat några väl valda ord som dagen efter kanske inte längre tycks lika briljanta. Wired berättar att för att råda bot på detta har Gmail lanserat ett (valfritt) fylleskydd man kallar Mail Goggles (jämför Beer Goggles). Om man försöker skicka epost på helgkvällar så måste man först lösa några ganska enkla mattetal på en viss tid, annars går mailet inte iväg.
För den som inte använder Gmail eller vill ha ett mer permanent skydd så kan man enkelt sätta upp en regel som fördröjer alla skickade mail i en minut. Då hinner man t.ex. fiska upp mailet ur utkorgen när man kommer på att man glömde bilagan. Såhär gör man:
Öppna Tools > Rules and alerts, skapa en ny regel:
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Gmail - nu med alkolås", + "meta_description": "", + "author_id": 6, + "created_at": 1223400041000, + "created_by": 6, + "updated_at": 1223400041000, + "updated_by": 6, + "published_at": 1223400041000, + "published_by": 6 + }, + { + "id": 243, + "title": "Tilt shift - en fascinerande fototeknik", + "slug": "tilt-shift---en-fascinerande-fototeknik", + "markdown": "\r\n\r\nTilt-shift är en spännande teknik som har en otroligt kool miniatyriseringseffekt – allt man fotar ser ut som en modell!\r\n\r\n\r\n\r\nTekniken består av två delar:\r\n\r\nTilt: normalt sett är objektivet parallellt med bildsensorn/sensorn, vilket gör att alla objekt som är i fokus är på samma avstånd från kameran. Om man vinklar objektivet kommer objekt på olika avstånd att vara i fokus, vilket ger en ovanlig effektShift: När man fotograferar något som inte är rakt framför kameran, t.ex. genom att vinkla kameran uppåt för att fota toppen på ett högt hus, så kommer objektets parallella linjer (husets ytterväggar) att löpa samman. Detta kan också göras tvärt om för att lura ögat.\r\n\r\nDet har börjat dyka upp fantastiska foton på städer som ser ut att vara gjorda i någons vardagsrum. En av de nyaste och bästa är filmer över Syndeys hamn som kallas ”Sydney Bathtub”. Se filmerna här!\r\n\r\n![Bild](http://tekniken.nu/uploads/633591487727254380-bathtub.png)", + "html": "Tilt-shift är en spännande teknik som har en otroligt kool miniatyriseringseffekt – allt man fotar ser ut som en modell!
Tekniken består av två delar:
- Tilt: normalt sett är objektivet parallellt med bildsensorn/sensorn, vilket gör att alla objekt som är i fokus är på samma avstånd från kameran. Om man vinklar objektivet kommer objekt på olika avstånd att vara i fokus, vilket ger en ovanlig effekt
- Shift: När man fotograferar något som inte är rakt framför kameran, t.ex. genom att vinkla kameran uppåt för att fota toppen på ett högt hus, så kommer objektets parallella linjer (husets ytterväggar) att löpa samman. Detta kan också göras tvärt om för att lura ögat.
Det har börjat dyka upp fantastiska foton på städer som ser ut att vara gjorda i någons vardagsrum. En av de nyaste och bästa är filmer över Syndeys hamn som kallas ”Sydney Bathtub”. Se filmerna här!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Tilt shift - en fascinerande fototeknik", + "meta_description": "", + "author_id": 6, + "created_at": 1223551971000, + "created_by": 6, + "updated_at": 1223551971000, + "updated_by": 6, + "published_at": 1223551971000, + "published_by": 6 + }, + { + "id": 244, + "title": "Hur får man YouTube i superupplösning?", + "slug": "hur-far-man-youtube-i-superupplosning", + "markdown": "\r\n\r\nSåhär förstås:\r\n\r\n\r\n\r\nEn driftig människa som kallar sig Mr Doob har satt ihop en ”TV-vägg” med Rick Astley på YouTube.\r\n\r\n(Tips: starta med länken \"Play\", inte med play-knapparna i spelarna, och kör \"Restart\" några gånger om de inte är synkroniserade)\r\n\r\n![Bild](http://tekniken.nu/uploads/633592267856552409-ricksuperhd.png)", + "html": "Såhär förstås:
En driftig människa som kallar sig Mr Doob har satt ihop en ”TV-vägg” med Rick Astley på YouTube.
(Tips: starta med länken \"Play\", inte med play-knapparna i spelarna, och kör \"Restart\" några gånger om de inte är synkroniserade)
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Hur får man YouTube i superupplösning?", + "meta_description": "", + "author_id": 6, + "created_at": 1223629985000, + "created_by": 6, + "updated_at": 1223629985000, + "updated_by": 6, + "published_at": 1223629985000, + "published_by": 6 + }, + { + "id": 250, + "title": "Wordle - Gör \"tag cloud konst\" av ord ", + "slug": "wordle---gor-tag-cloud-konst-av-ord-", + "markdown": "\r\n\r\nEn bloggläsare tipsade mig för ett tag sedan om webbtjänsten Wordle som är ett verktyg som genererar ”konst” av textmassa. Förmodligen inte superanvändbart, men det blir faktiskt riktigt snyggt!\r\n\r\nTjänsten låter dig klippa in en textmassa eller länka till ett RSS-flöde och genererar sedan ett s.k. tag cloud där man kan påverka de flesta variablerna (typsnitt, palett, sorteringsmodell etc). Storleken på respektive ord baseras sedan på dess förekomst. Funktioner för att exkludera vanliga ord (även svenska!) finns, man kan även markera specifika ord och ta bort dem.\r\n\r\nLåt det stjäla en halvtimme av din arbetstid!\r\n\r\nhttp://www.wordle.net\r\n\r\n\r\n\r\nTekniken.nus RSS\r\n\r\n\r\n\r\nIDGs RSS\r\n\r\n![Bild](http://tekniken.nu/uploads/633609751582083756-wrdle-big.png)", + "html": "En bloggläsare tipsade mig för ett tag sedan om webbtjänsten Wordle som är ett verktyg som genererar ”konst” av textmassa. Förmodligen inte superanvändbart, men det blir faktiskt riktigt snyggt!
Tjänsten låter dig klippa in en textmassa eller länka till ett RSS-flöde och genererar sedan ett s.k. tag cloud där man kan påverka de flesta variablerna (typsnitt, palett, sorteringsmodell etc). Storleken på respektive ord baseras sedan på dess förekomst. Funktioner för att exkludera vanliga ord (även svenska!) finns, man kan även markera specifika ord och ta bort dem.
Låt det stjäla en halvtimme av din arbetstid!
Tekniken.nus RSS
IDGs RSS
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Wordle - gör \"tag cloud\"-konst av ord ", + "meta_description": "", + "author_id": 1085, + "created_at": 1225378357000, + "created_by": 1085, + "updated_at": 1225378357000, + "updated_by": 1085, + "published_at": 1225378357000, + "published_by": 1085 + }, + { + "id": 251, + "title": "Nytt Riddick-spel på gång!", + "slug": "nytt-riddick-spel-pa-gang", + "markdown": "\r\n\r\nEtt av teknikens absoluta favoritspel Chronicles of Riddick: Escape from Butcher Bay kommer nu att få en uppföljare rapporterar Spelfeber. Uppföljaren Assault on Dark Athena har det ryktats om länge, men när Activision slogs ihop med Blizzard var det en av titlarna man la i malpåse. Nu har dock rättigheterna köpts av Atari så nu blir det av – och det blir inte en remake av Butcher Bay som man tidigare har talat om utan ett helt nytt spel. Utvecklare blir som i förra spelet svenska Starbreeze, vilket borgar för ett riktigt bra spel även denna gång. För er som inte spelat första spelet är det bara att sätta igång – det finns att få tag i billigt både begagnat och i budgetutgåva!\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/riddick.jpg)", + "html": "Ett av teknikens absoluta favoritspel Chronicles of Riddick: Escape from Butcher Bay kommer nu att få en uppföljare rapporterar Spelfeber. Uppföljaren Assault on Dark Athena har det ryktats om länge, men när Activision slogs ihop med Blizzard var det en av titlarna man la i malpåse. Nu har dock rättigheterna köpts av Atari så nu blir det av – och det blir inte en remake av Butcher Bay som man tidigare har talat om utan ett helt nytt spel. Utvecklare blir som i förra spelet svenska Starbreeze, vilket borgar för ett riktigt bra spel även denna gång. För er som inte spelat första spelet är det bara att sätta igång – det finns att få tag i billigt både begagnat och i budgetutgåva!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Nytt Riddick-spel på gång!", + "meta_description": "", + "author_id": 6, + "created_at": 1225446361000, + "created_by": 6, + "updated_at": 1225446361000, + "updated_by": 6, + "published_at": 1225446361000, + "published_by": 6 + }, + { + "id": 252, + "title": "Den ultimata kombinationen i vardagsrummet", + "slug": "den-ultimata-kombinationen-i-vardagsrummet", + "markdown": "\r\n\r\nFör alla som funderar på att köpa en Media-PC att koppla in till sin hdtv i vardagsrummet kan jag nu rekommendera den ultimata kombinationen av tillbehör som tillsammans gör ditt vardagsrum till en fullständig upplevelse:\r\n\r\nTill att börja med är det en LCD-TV du behöver, här finns det många bra att välja mellan och det enda jag kan säga är att har du ett större rum behöver du minst en 46 tum om du ska kunna se texten i operativsystemet på en full hd-upplösning, sitter du närmare TVn räcker 40 tum.\r\n\r\nSedan är det en Mac-Mini (1GB minne, Dual Core minst 1,8 Ghz) som du kopplar ihop med TVn med hjälp av en DVI-HDMI konverterare.\r\n\r\nHar du ett ljudsystem eller hemmabioförstärkare har dessa oftast en optisk ingång och då kopplar du in denna med hjälp av en s.k. Toslink kabel från Macen som faktiskt har en kombinerad optisk och analog 3.5 utgång.\r\n\r\nTill detta köper du en EyeTV diversity för att titta på marksänd TV (nu kan du börja pausa i direktsändning, kolla på SVD HD etc).\r\n\r\nSo far so good, nu har du ett snyggt och stabilt system för att titta på filmer och tv. Nu kommer det spännande som gör kombinationen ovan ultimat: Hämta hem PLEX, det är en mediaspelare för OSX som spelar upp alla format, inklusive RAR-filer, PLEX scannar automatiskt igenom dina filmmappar och hämtar filminformation från IMDB och tv.com, allt presenteras i ett jättefint gränssnitt som går utmärkt att styra med den vita fjärrkontrollen som följer med Mac-minin.\r\n\r\nFör att ytterligare göra kombinationen komplett köper du nu en iPhone, med hjälp av denna kan du både styra iTunes med hjälp av Remote som laddas ner gratis från App Store, köp även \"Pad\" (7 kr) från App Store, med hjälp av denna gör du om din iPhone till en styrplatta som klarar av alla gester som nya Macbook datorerna har (dvs zooma, scrolla, klicka med hjälp av en eller två fingrar).\r\n\r\nHar du flera rum kan du också köpa en Airport Express och koppla in ytterligare högtalare i fler rum och du styr allt med hjälp av din iPhone, volym, vilka rum ljudet ska spelas upp i.\r\n\r\nDirektlänkar till ovanstående program kommer snart!\r\n\r\n![Bild](http://tekniken.nu/uploads/lcdtv.png)", + "html": "För alla som funderar på att köpa en Media-PC att koppla in till sin hdtv i vardagsrummet kan jag nu rekommendera den ultimata kombinationen av tillbehör som tillsammans gör ditt vardagsrum till en fullständig upplevelse:
Till att börja med är det en LCD-TV du behöver, här finns det många bra att välja mellan och det enda jag kan säga är att har du ett större rum behöver du minst en 46 tum om du ska kunna se texten i operativsystemet på en full hd-upplösning, sitter du närmare TVn räcker 40 tum.
Sedan är det en Mac-Mini (1GB minne, Dual Core minst 1,8 Ghz) som du kopplar ihop med TVn med hjälp av en DVI-HDMI konverterare.
Har du ett ljudsystem eller hemmabioförstärkare har dessa oftast en optisk ingång och då kopplar du in denna med hjälp av en s.k. Toslink kabel från Macen som faktiskt har en kombinerad optisk och analog 3.5 utgång.
Till detta köper du en EyeTV diversity för att titta på marksänd TV (nu kan du börja pausa i direktsändning, kolla på SVD HD etc).
So far so good, nu har du ett snyggt och stabilt system för att titta på filmer och tv. Nu kommer det spännande som gör kombinationen ovan ultimat: Hämta hem PLEX, det är en mediaspelare för OSX som spelar upp alla format, inklusive RAR-filer, PLEX scannar automatiskt igenom dina filmmappar och hämtar filminformation från IMDB och tv.com, allt presenteras i ett jättefint gränssnitt som går utmärkt att styra med den vita fjärrkontrollen som följer med Mac-minin.
För att ytterligare göra kombinationen komplett köper du nu en iPhone, med hjälp av denna kan du både styra iTunes med hjälp av Remote som laddas ner gratis från App Store, köp även \"Pad\" (7 kr) från App Store, med hjälp av denna gör du om din iPhone till en styrplatta som klarar av alla gester som nya Macbook datorerna har (dvs zooma, scrolla, klicka med hjälp av en eller två fingrar).
Har du flera rum kan du också köpa en Airport Express och koppla in ytterligare högtalare i fler rum och du styr allt med hjälp av din iPhone, volym, vilka rum ljudet ska spelas upp i.
Direktlänkar till ovanstående program kommer snart!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Den ultimata kombinationen i vardagsrummet", + "meta_description": "", + "author_id": 1087, + "created_at": 1225706772000, + "created_by": 1087, + "updated_at": 1225706772000, + "updated_by": 1087, + "published_at": 1225706772000, + "published_by": 1087 + }, + { + "id": 268, + "title": "Så hyr du film och TV lagligt på iTunes", + "slug": "sa-hyr-du-film-och-tv-lagligt-pa-itunes", + "markdown": "\r\n\r\nBitTorrent i all ära men vill man göra rätt för sig är det svårt i Sverige eller Europa överlag. Det finns några svenska alternativ, vi har tidigare skrivit om HeadWeb som vi egentligen gillar mer eftersom det är en bättre teknisk lösning - inget DRM skydd och har en svensk butik men tyvärr är utbudet inte tillräckligt bra (inte ens i närheten av lika bra som i den fysiska filmbutiken runt hörnet). I USA finns det många tjänster som erbjuder laglig film och TV med hela det stora utbudet, iTunes, NetFlix och Hulu är de stora spelarna men tyvärr är de än så länge begränsade till den amerikanska marknaden. Men nu finns det ett sätt att komma åt iTunes trots att du sitter i Sverige, metoden går ut på att du skapar ett amerikanskt konto och använder det till köp på iTunes. Numera är också all musik som säljs på iTunes fri från DRM-skydd vilket gör att du kan köpa musik via ditt amerikanska konto och sedan lyssna på det oavsett vilket konto du har loggat in som. Att Apple har tagit bort DRM-skyddet för musik till slut hurrar vi extra mycket för och förhoppningsvis kommer detta framöver även gälla för köpfilmer snart så att du kan bränna dem på DVD.\r\n\r\nÖverlag känns det synd att man måste krångla så här mycket för att kunna göra rätt för sig, men förhoppningsvis lär sig filmindustrin snart samma läxa som musikindustrin har gjort! Skälet till att iTunes inte erbjuder denna möjlighet till Europa lär säkerligen vara på grund av begränsningar i deras avtal med upphovsägarna (filmbolagen) och att film och TV-industrin är bortskämda med att kunna ha olika releasedatum i olika delar av världen.\r\n\r\nAnyway, så här gör du:\r\n\r\n\r\nKöp ett iTunes Gift Card på eBay av en amerikansk säljare. Hitta en säljare som har fått goda recensioner och betala ungefär vad kortet är värt, ibland några dollar över värdet på kortet ibland några dollar under. Jag köpte ett 50$ kort för 46$.Vänta på emailet från säljaren som skrapat presentkortet och skickat koden till dig. Min kod kom efter fem minuter.Gå in i iTunes, logga ut ditt nuvarande konto (det är ju kopplat till Sverige).Klicka på Redeem i iTunes Store.Fyll i den kod du fick av säljaren (den förbrukas inte än, du kan vara lugn).Nu trycker du på login och sedan Create Account – eftersom du redan matat in presentkortet så behöver du nu inte fylla i ett kreditkort, välj därför –None.Välj en annan av dina mailadresser.Skriv in en adress på ett hotell du varit på i USA eller annan giltig amerikansk adress.Tryck Create. Nu kommer ditt amerikanska konto skapas och fyllas med pengarna från presentkortet.\r\n\r\n\r\nKvaliten på bild och ljud är kanon, det står HD-kvalitet och bilden är högupplöst men en film på 1,35gb håller ju inte blu-ray kvalitet direkt. Hastigheten att ladda ner filmer är jättesnabb eftersom Apple använder sig av Akamai:s distributionsnätverk så du kan oftast börja titta på filmen direkt när du köpt/hyrt den. Om du har en Apple-TV eller en Mac-mini kopplad till din TV kan du nu börja använda Frontrow på riktigt! Riktigt skön upplevelse kan jag lova!\r\n\r\nPriserna är väldigt konkurrenskraftiga, nu har dollarn gått upp lite den senaste tiden så det är inte samma rea-priser som i somras men ändå väldigt behagligt. Dessutom får man ju alla filmer tidigare än i Sverige.\r\n\r\nHär kommer lite prisexempel:\r\n\r\nHyra en film: $3.99 (c:a 32kr)\r\n\r\nDu har 24 timmar på dig att titta på filmen. Köpa filmen kostar $14.99 (c:a 120kr)\r\n\r\n\r\n\r\nKöpa en hel tv-säsong (season ticket) : $18.99 (c:a 120kr), enskilt avsnitt: $1.90 (c:a 16kr)\r\n\r\n\r\n\r\nKöpa ett musikalbum: $9.99 (c:a 80kr)\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/633669280423573581-image003.jpg)", + "html": "BitTorrent i all ära men vill man göra rätt för sig är det svårt i Sverige eller Europa överlag. Det finns några svenska alternativ, vi har tidigare skrivit om HeadWeb som vi egentligen gillar mer eftersom det är en bättre teknisk lösning - inget DRM skydd och har en svensk butik men tyvärr är utbudet inte tillräckligt bra (inte ens i närheten av lika bra som i den fysiska filmbutiken runt hörnet). I USA finns det många tjänster som erbjuder laglig film och TV med hela det stora utbudet, iTunes, NetFlix och Hulu är de stora spelarna men tyvärr är de än så länge begränsade till den amerikanska marknaden. Men nu finns det ett sätt att komma åt iTunes trots att du sitter i Sverige, metoden går ut på att du skapar ett amerikanskt konto och använder det till köp på iTunes. Numera är också all musik som säljs på iTunes fri från DRM-skydd vilket gör att du kan köpa musik via ditt amerikanska konto och sedan lyssna på det oavsett vilket konto du har loggat in som. Att Apple har tagit bort DRM-skyddet för musik till slut hurrar vi extra mycket för och förhoppningsvis kommer detta framöver även gälla för köpfilmer snart så att du kan bränna dem på DVD.
Överlag känns det synd att man måste krångla så här mycket för att kunna göra rätt för sig, men förhoppningsvis lär sig filmindustrin snart samma läxa som musikindustrin har gjort! Skälet till att iTunes inte erbjuder denna möjlighet till Europa lär säkerligen vara på grund av begränsningar i deras avtal med upphovsägarna (filmbolagen) och att film och TV-industrin är bortskämda med att kunna ha olika releasedatum i olika delar av världen.
Anyway, så här gör du:
- Köp ett iTunes Gift Card på eBay av en amerikansk säljare. Hitta en säljare som har fått goda recensioner och betala ungefär vad kortet är värt, ibland några dollar över värdet på kortet ibland några dollar under. Jag köpte ett 50$ kort för 46$.
- Vänta på emailet från säljaren som skrapat presentkortet och skickat koden till dig. Min kod kom efter fem minuter.
- Gå in i iTunes, logga ut ditt nuvarande konto (det är ju kopplat till Sverige).
- Klicka på Redeem i iTunes Store.
- Fyll i den kod du fick av säljaren (den förbrukas inte än, du kan vara lugn).
- Nu trycker du på login och sedan Create Account – eftersom du redan matat in presentkortet så behöver du nu inte fylla i ett kreditkort, välj därför –None.
- Välj en annan av dina mailadresser.
- Skriv in en adress på ett hotell du varit på i USA eller annan giltig amerikansk adress.
- Tryck Create. Nu kommer ditt amerikanska konto skapas och fyllas med pengarna från presentkortet.
Kvaliten på bild och ljud är kanon, det står HD-kvalitet och bilden är högupplöst men en film på 1,35gb håller ju inte blu-ray kvalitet direkt. Hastigheten att ladda ner filmer är jättesnabb eftersom Apple använder sig av Akamai:s distributionsnätverk så du kan oftast börja titta på filmen direkt när du köpt/hyrt den. Om du har en Apple-TV eller en Mac-mini kopplad till din TV kan du nu börja använda Frontrow på riktigt! Riktigt skön upplevelse kan jag lova!
Priserna är väldigt konkurrenskraftiga, nu har dollarn gått upp lite den senaste tiden så det är inte samma rea-priser som i somras men ändå väldigt behagligt. Dessutom får man ju alla filmer tidigare än i Sverige.
Här kommer lite prisexempel:
Hyra en film: $3.99 (c:a 32kr)
Du har 24 timmar på dig att titta på filmen. Köpa filmen kostar $14.99 (c:a 120kr)
Köpa en hel tv-säsong (season ticket) : $18.99 (c:a 120kr), enskilt avsnitt: $1.90 (c:a 16kr)
Köpa ett musikalbum: $9.99 (c:a 80kr)
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Så hyr du film och TV lagligt på iTunes", + "meta_description": "", + "author_id": 1087, + "created_at": 1231331242000, + "created_by": 1087, + "updated_at": 1231331242000, + "updated_by": 1087, + "published_at": 1231331242000, + "published_by": 1087 + }, + { + "id": 286, + "title": "Tiltshift-tjänst på webben", + "slug": "tiltshift-tjanst-pa-webben", + "markdown": "\r\n\r\nTilt shift har vi skrivit om förut – med ett särskilt objektiv kan man få ett väldigt smalt område i fokus och det lurar ögat att motivet är en modell och inte riktigt. Tilt shift-objektiv är dock dyra och budgetvarianten är att göra (o)skärpan i PhotoShop. Om man inte har PhotoShop så kan det bli ännu enklare - Fotofeber tipsar om att det nu finns webbtjänst som gör om dina bilder i tilt shift: www.tiltshiftmaker.com.\r\n\r\nHär är mitt eget första försök:\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/633753291806448267-tilt-shift-photo.jpg)", + "html": "Tilt shift har vi skrivit om förut – med ett särskilt objektiv kan man få ett väldigt smalt område i fokus och det lurar ögat att motivet är en modell och inte riktigt. Tilt shift-objektiv är dock dyra och budgetvarianten är att göra (o)skärpan i PhotoShop. Om man inte har PhotoShop så kan det bli ännu enklare - Fotofeber tipsar om att det nu finns webbtjänst som gör om dina bilder i tilt shift: www.tiltshiftmaker.com.
Här är mitt eget första försök:
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Tilt shift-tjänst på webben", + "meta_description": "", + "author_id": 6, + "created_at": 1239732379000, + "created_by": 6, + "updated_at": 1239732379000, + "updated_by": 6, + "published_at": 1239732379000, + "published_by": 6 + }, + { + "id": 308, + "title": "Low Grav Racer - mycket spel för 15 kronor", + "slug": "low-grav-racer---mycket-spel-for-15-kronor", + "markdown": "\r\n\r\nI App Store för iPhone finns spelet Low Grav Racer. Det är ett spel som man om man är snäll kan säga har inspirerats av Wipeout, särskilt PSP-versionen Wipeout Fusion. Om man inte är snäll kan man säga att Cobramobile har kopierat ganska friskt. Om man bortser från det så är Low Grav Racer en väldigt rolig Wipeout-klon, och jag måste säga att accelerometerstyrningen är mer naturlig och bättre än analogjoysticken på PSP. Spelet känns väldigt responsivt och lagom svårt. \r\n\r\nVad är inte bra då? iPhonens avsaknad av hårdvaruknappar gör att mycket måste skötas med touchknappar på skärmen, något som alltid blir en svaghet. När man inte kan känna var man håller fingrarna är det lätt att missa knapparna. Jag skulle också vilja se ett lite mer utbyggt championship-läge där man kan uppgradera sitt skepp o.s.v.\r\n\r\nTrots nackdelarna är Low Grav Racer väl värt sina 15 kronor! Om du gillar Wipeout kommer du att gilla det här, även om det kan kännas lite som en light-version i vissa hänseenden. Här är en video med gameplay:\r\n\r\n\r\n\r\nNamn: Low Grav RacerUtvecklare: Cobra Mobile\r\n\r\nGrafik: 4Kontroller: 4Spelvärde: 4Prisvärde: 5Rekommendation: Köp!\r\n\r\n![Bild](http://tekniken.nu/uploads/633813640332614151-img_0043.jpg)", + "html": "I App Store för iPhone finns spelet Low Grav Racer. Det är ett spel som man om man är snäll kan säga har inspirerats av Wipeout, särskilt PSP-versionen Wipeout Fusion. Om man inte är snäll kan man säga att Cobramobile har kopierat ganska friskt. Om man bortser från det så är Low Grav Racer en väldigt rolig Wipeout-klon, och jag måste säga att accelerometerstyrningen är mer naturlig och bättre än analogjoysticken på PSP. Spelet känns väldigt responsivt och lagom svårt.
Vad är inte bra då? iPhonens avsaknad av hårdvaruknappar gör att mycket måste skötas med touchknappar på skärmen, något som alltid blir en svaghet. När man inte kan känna var man håller fingrarna är det lätt att missa knapparna. Jag skulle också vilja se ett lite mer utbyggt championship-läge där man kan uppgradera sitt skepp o.s.v.
Trots nackdelarna är Low Grav Racer väl värt sina 15 kronor! Om du gillar Wipeout kommer du att gilla det här, även om det kan kännas lite som en light-version i vissa hänseenden. Här är en video med gameplay:
Namn: Low Grav Racer
Utvecklare: Cobra Mobile
Grafik: 4
Kontroller: 4
Spelvärde: 4
Prisvärde: 5
Rekommendation: Köp!
Nu är äntligen spelet öppet för alla, även om jag personligen har betatestat det under några veckor redan…
Konceptet är enkelt: gör ett spel där du springer omkring och skjuter folk. För att ingen ska klaga över våld så gör det tecknat, och för att folk ska fastna på riktigt se till att du kan förbättra din gubbe och klä ut honom i nya kläder och se till att det är gratis att komma igång.
I motsats till de flesta gratisspelen som också har en egen ekonomi så påverkas inte spelmöjligheterna av att du betalar. Du kan t.ex. inte köpa bättre vapen, något som är vanligt bland andra gratisspel där de betalande får massa fördelar.
Man väljer en av 3 klasser: commando, soldier eller gunner, där varje klass har sina egna egenskaper och vapentyper.
- Commando är krypskytten springer snabbt, gömmer sig och dödar gärna med kniv. Bra på riktigt långt håll och riktigt nära.
- Soldier mejar hårt med automatvapen och tål lite mer stryk än commando, bäst på medium avstånd.
- Gunner springer omkring som om världen var gjord av sirap men tål mycket stryk och har kraftiga vapen på kort avstånd.
Det finns några få banor och man hittar lätt sina favoriter men genomgående är kvalitén hög och det gör inte så mycket att man måste genomlida de tråkigare banorna också.
Detta är ett riktigt roligt spel som är lätt att spela ”bara en kvart” men som också håller timme efter timme kväll efter kväll…
http://www.battlefieldheroes.com/
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Battlefield Heroes - Gratis och gott!", + "meta_description": "", + "author_id": 1089, + "created_at": 1246359900000, + "created_by": 1089, + "updated_at": 1246359900000, + "updated_by": 1089, + "published_at": 1246359900000, + "published_by": 1089 + }, + { + "id": 313, + "title": "Gamepad till iPhone - rätt koncept men fel genomförande", + "slug": "gamepad-till-iphone---ratt-koncept-men-fel-genomforande", + "markdown": "\r\n\r\nSom Mobilfeber rapporterade om förra veckan så har det precis släppts en gamepad till iPhone som heter Gamebone Pro. En gamepad till iPhone har jag väntat på länge (trodde att det redan fanns), så det är ju en välkommen nyhet. Flera smarta saker finns också inbyggda, som ett extrabatteri och en högtalare – smart! Trots det så finns det en massa punkter där 22moo har tänkt helt fel, vilket gör att produkten ändå känns ganska värdelös:\r\nDen ansluts via Bluetooth och är alltså helt fristående. Den givna lösningen hade ju varit att man monterar den på telefonen så att den blir mer som en PSP. En sån monteringssats är tydligen under utvecklingBara digital styrning. PSP:n har en analog styrspak, och det är nästan en för lite för att kunna täcka in alla spel.Eget SDK som utvecklarna måste använda. Det gör att antalet spel som stöds antagligen kommer att vara väldigt litet\r\nHär är mitt recept på hur man borde göra:\r\nGör en utdragbar gamepad som man placerar telefonen så att den blir mer som en PSPBehåll gärna extrabatteriet om det går att kombinera med ovanstående kravTvå analoga styrspakarApple utvecklar SDK för gamepads som alla tillverkare kan använda – då kommer garanterat antalet spel som stöds att bli stort\r\n![Bild](http://tekniken.nu/uploads/633820389604536709-GameBonePro.jpg)", + "html": "Som Mobilfeber rapporterade om förra veckan så har det precis släppts en gamepad till iPhone som heter Gamebone Pro. En gamepad till iPhone har jag väntat på länge (trodde att det redan fanns), så det är ju en välkommen nyhet. Flera smarta saker finns också inbyggda, som ett extrabatteri och en högtalare – smart! Trots det så finns det en massa punkter där 22moo har tänkt helt fel, vilket gör att produkten ändå känns ganska värdelös:
- Den ansluts via Bluetooth och är alltså helt fristående. Den givna lösningen hade ju varit att man monterar den på telefonen så att den blir mer som en PSP. En sån monteringssats är tydligen under utveckling
- Bara digital styrning. PSP:n har en analog styrspak, och det är nästan en för lite för att kunna täcka in alla spel.
- Eget SDK som utvecklarna måste använda. Det gör att antalet spel som stöds antagligen kommer att vara väldigt litet
Här är mitt recept på hur man borde göra:
- Gör en utdragbar gamepad som man placerar telefonen så att den blir mer som en PSP
- Behåll gärna extrabatteriet om det går att kombinera med ovanstående krav
- Två analoga styrspakar
- Apple utvecklar SDK för gamepads som alla tillverkare kan använda – då kommer garanterat antalet spel som stöds att bli stort
Monkey Island är den kanske mest uppskattade och framgångsrika äventyrsspelserien någonsin. Lucasarts humoristiska piratepos har förmodligen spelats av de flesta personer som växte upp på 90-talet. Fyra delar släpptes mellan 1990 och 2000, men sedan dess har det varit tyst. Detta beror framförallt på att Lucasarts i stort sett lagt ned hela sin utveckling av äventyrsspel då försäljningen med åren kraftigt minskade och den trogna skaran mest bestått av oss nostalgiska som växte upp innan 3D-revolutionen.
Nu är det dock dags att glädjas, inte bara åt en nyhet utan två!
The Secret of Monkey Island Special Edition
Idag släpps en remake av det första spelet i serien i en omarbetad högupplöst (1080p) version för XBOX360 (Live marketplace) och PC (Steam). Det är en väldigt ambitiös upprustning som ägt rum:
- Handmålade miljöer och nya karaktärsmodeller
- Nyinspelat soundtrack
- Orginalskådespelarna har återvänt för att spela in den dialog som tidigare bara fanns som text.
En extra tuff funktion är att man när som helst sömlöst kan växla mellan orginalgrafiken och den nya, som visas i det här filmklippet.
Jättekul att se sin gamla favorit uppdaterad till modern tid, jag skulle inte bli förvånad om detta kommer bli allt vanligare med tanke på hur många fantastiska spel som utvecklades under äventyrsspelens storhetstid men som känns inaktuella pga sin åldrade presentation.
Spelet kostar 8,99€ på Steam.
Tillsammans med denna remake släpps också en fortsättning på serien:
Tales of Monkey Island
Telltale
Games har tidigare erfarenhet av att blåsa liv i sovande
Lucasartsklassiker, senaste åren har de nått ganska stor framgång med
sina Sam & Max spel. Precis som med Sam & Max så kommer Tales
of Monkey Island att släppas i episodformat, ett 3-timmarsäventyr i
månaden i fem månader. Grafiken känns respektfull föregånarna och den
första episoden som släpptes härom veckan har fått fin kritik. Paketet med samtliga fem delar kostar 32,99€ på Steam.
Spelets hemsida hos Telltale Games
Mycket att glädjas åt med andra ord! Extra kul att Ron Gilbert (som skapade Monkey Island) ger båda projekten tummen upp och faktiskt var med på ett hörn i QA arbetet, mer om det på hans egen blogg.
Soon you'll be wearing my sword like a shish kebab!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Nytt liv på Monkey Island", + "meta_description": "", + "author_id": 1085, + "created_at": 1247779853000, + "created_by": 1085, + "updated_at": 1247779853000, + "updated_by": 1085, + "published_at": 1247779853000, + "published_by": 1085 + }, + { + "id": 328, + "title": "Kabelmyt BUSTED", + "slug": "kabelmyt-busted", + "markdown": "\r\n\r\nÄntligen har någon tagit tag i det som man misstänkt länge – att de där fina HDMI kablarna för 500kr med guldpläterade kontakter fina specifikationer och superduperskärmning inte ger någon konkret skillnad. Jag har ju länge hävdat att det är här tillverkarna men framförallt återförsäljarna har sin egentliga vinst. Bluffen bygger på samma osäkerhet som allriskförsäkringarna – har man precis köpt en dyr TV för 30 000 kan man inte riskera att få dålig bild så man tar den där dyra kabeln för 500kr ändå. Detsamma gäller även monsterkablar för högtalarare, jag har personligen dragit vanlig elkabel till mina högtalare hemma och den är ju gjord för att skicka 230 volt med många ampere så varför skulle inte den fungera bättre än en monsterhögtalarkabel? Skillanden i pris är enorm.\r\n\r\nNu kommer jag säkert reta gallfeber på alla er som köpt dyra kablar som vill försvara sitt köp med hjälp av undersökningar av olika saker och säger bara: Bring it on! Jag vill gärna bli motbevisad.\r\n\r\nNär vi ändå är inne på myter så skulle jag gärna se någon som kan bevisa om det verkligen är skadligt för batteriet att använda mobilen direkt när man fått den från affären – de flesta hävdar att den måste ligga på laddning i åtta timmar innan den används – jag hävdar att det också är en myt med samma sanningshalt som att man får kramp när man badar precis efter man ätit. ;)\r\n\r\nLäs mer om kabeltestet på M3:http://www.idg.se/2.1085/1.242208/unikt-blindtest-vi-avslojar-kabel-bluffen\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/633875075680727966-image001.jpg@01CA2BAA.B5ED6870__image001.jpg)", + "html": "
Äntligen har någon tagit tag i det som man misstänkt länge – att de där fina HDMI kablarna för 500kr med guldpläterade kontakter fina specifikationer och superduperskärmning inte ger någon konkret skillnad. Jag har ju länge hävdat att det är här tillverkarna men framförallt återförsäljarna har sin egentliga vinst. Bluffen bygger på samma osäkerhet som allriskförsäkringarna – har man precis köpt en dyr TV för 30 000 kan man inte riskera att få dålig bild så man tar den där dyra kabeln för 500kr ändå. Detsamma gäller även monsterkablar för högtalarare, jag har personligen dragit vanlig elkabel till mina högtalare hemma och den är ju gjord för att skicka 230 volt med många ampere så varför skulle inte den fungera bättre än en monsterhögtalarkabel? Skillanden i pris är enorm.
Nu kommer jag säkert reta gallfeber på alla er som köpt dyra kablar som vill försvara sitt köp med hjälp av undersökningar av olika saker och säger bara: Bring it on! Jag vill gärna bli motbevisad.
När vi ändå är inne på myter så skulle jag gärna se någon som kan bevisa om det verkligen är skadligt för batteriet att använda mobilen direkt när man fått den från affären – de flesta hävdar att den måste ligga på laddning i åtta timmar innan den används – jag hävdar att det också är en myt med samma sanningshalt som att man får kramp när man badar precis efter man ätit. ;)
Läs mer om kabeltestet på M3:
http://www.idg.se/2.1085/1.242208/unikt-blindtest-vi-avslojar-kabel-bluffen
Ett önskemål till Sony, Samsung, LG eller vilken annan leverantör som helst: Bygg in mediecenterapplikationen XBMC i er TV – de inbyggda programvarorna för streaming som ni skickar med era LCD TV-apparater håller inte måttet och hur mycket pengar ni än lägger ner på att utveckla dem kommer de ändå inte hålla samma tempo som XBMC gör.
En TV med inbyggd XBMC skulle göra att din TV fick inbyggt stöd för SVT Play, Viasat anywhere, streama alla bild- och ljudformat i högsta kvalitet. Med en liten linuxkärna och en hårdvara baserat på NVidias ION-chipset skulle lösningen bli billig men ändå klara av uppspelning av 1080p. Så kom igen nu, våga!
För er som inte har bakgrunden till XBMC så är det ett open source-projekt från första början utvecklades för XBOX (första versionen) och har sen starten haft en stor och väldigt nöjd kundgrupp.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "XBMC inbyggt i TVn någon?", + "meta_description": "", + "author_id": 1087, + "created_at": 1253637235000, + "created_by": 1087, + "updated_at": 1253637235000, + "updated_by": 1087, + "published_at": 1253637235000, + "published_by": 1087 + }, + { + "id": 349, + "title": "Vänta med Snow Leopard om du kör PLEX", + "slug": "vanta-med-snow-leopard-om-du-kor-plex", + "markdown": "\r\n\r\nSnow Leopard har vi ju väntat länge på och mycket nytt finns under huven. Tyvärr finns det lite väl mycket under huven som gör att PLEX inte fungerar smärtfritt efter uppgradering till Snow Leopard. Det viktigaste problemet är att filmer med digitalt ljud låser ljuddrivrutinen vilket gör att PLEX måste startas om samt att fjärrkontrollen styr både PLEX och FrontRow.\r\n\r\nOm du liksom jag redan har installerat Snow Leopard så finns det lite workarounds här:\r\n\r\nSkapa en Composite-ljudkanal och ställa den som ljud-output löser ljudproblemet med digitalt ljud\r\n\r\nFör att temporärt lösa problemet med fjärrkontrollen tar du bort (eller flyttar iväg) appen Front Row från programmappen.\r\n\r\nOvanstående fixar löser problemen med nöd och näppe så rekommendationen är att vänta med Snow Leopard tills Plex har stöd för Snow Leopard.\r\n\r\n![Bild](http://tekniken.nu/uploads/633904275603767418-image001.jpg@01CA465D.88039740__image001.jpg)", + "html": "Snow Leopard har vi ju väntat länge på och mycket nytt finns under huven. Tyvärr finns det lite väl mycket under huven som gör att PLEX inte fungerar smärtfritt efter uppgradering till Snow Leopard. Det viktigaste problemet är att filmer med digitalt ljud låser ljuddrivrutinen vilket gör att PLEX måste startas om samt att fjärrkontrollen styr både PLEX och FrontRow.
Om du liksom jag redan har installerat Snow Leopard så finns det lite workarounds här:
Skapa en Composite-ljudkanal och ställa den som ljud-output löser ljudproblemet med digitalt ljud
För att temporärt lösa problemet med fjärrkontrollen tar du bort (eller flyttar iväg) appen Front Row från programmappen.
Ovanstående fixar löser problemen med nöd och näppe så rekommendationen är att vänta med Snow Leopard tills Plex har stöd för Snow Leopard.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Vänta med Snow Leopard om du kör PLEX", + "meta_description": "", + "author_id": 1087, + "created_at": 1254845340000, + "created_by": 1087, + "updated_at": 1254845340000, + "updated_by": 1087, + "published_at": 1254845340000, + "published_by": 1087 + }, + { + "id": 351, + "title": "Parkera bilar, kan det vara roligt?", + "slug": "parkera-bilar-kan-det-vara-roligt", + "markdown": "\r\n\r\nMitt favoritspel just nu till iPhone är Parking Mania!\r\n\r\nNi har säkert spelat någon variant av det på webben. Idéen är att du ser en parkering med en bil ovanifrån, och ska parkera den i en bestämd parkeringsficka. Varje gång du lyckas kommer du till nästa nivå där nya utmaningar stegvis läggs till, såsom fler bilar att parkera, smalare utrymmen, trafikerade vägar och mycket annat.\r\n\r\nParking Mania har riktigt skön styrning där man använder accelerometern för att styra och en slider på skärmen för att steglöst gasa och bromsa. Jag är extremt allergisk mot styrkontroller på skärmen, men en gas-/bromsslider är tillräckligt lätt att pricka och funkar väldigt bra. Det finns 30 nivåer och de blir roligare ju högre upp man kommer. En av de stora behållningarna tycker jag är att alla fordon beter sig väldigt verklighetstroget. De olika bilarna har olika svängradie och det lönar sig verkligen att krypa runt ett hörn när det blir ont om utrymme. Ett av mina favoritfordon är bussen (som tyvärr bara är med på en nivå), den har en otroligt skön rotationspunkt i och med längden och att fram hjulen sitter bakom föraren. Man måste göra svängar där man tar ut ordentligt i mötande fil och det känns som om man har åkt för långt innan man börjar svänga – precis som i verkligheten.\r\n\r\n\r\n\r\nNär man har spelat igenom de 30 nivåerna börjar nästa utmaning. Alla nivåer har en bonustid, och klarar man de snabbt får man extra poäng. Ju färre gånger man kör emot något ger också mer poäng. Så andra spelomgången blir en speedrun där man både tävlar mot klockan och ska se till att köra så rent och snyggt som möjligt. Det är en riktigt skön känsla att i full fart i en tankbil köra om polisen för att försöka hinna förbi innan mötande trafik kommer :-).\r\n\r\n7 kronor kostar fulla versionen: http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=329887910&mt=8\r\n\r\nFinns också i gratis lite-version: http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=329983824&mt=8\r\n\r\nGrafik: 3Kontroller: 5Spelvärde: 5Prisvärde: 5Rekommendation: Köp!\r\n\r\n![Bild](http://tekniken.nu/uploads/633906183691247895-mzl.gugbxgil.jpg)", + "html": "Mitt favoritspel just nu till iPhone är Parking Mania!
Ni har säkert spelat någon variant av det på webben. Idéen är att du ser en parkering med en bil ovanifrån, och ska parkera den i en bestämd parkeringsficka. Varje gång du lyckas kommer du till nästa nivå där nya utmaningar stegvis läggs till, såsom fler bilar att parkera, smalare utrymmen, trafikerade vägar och mycket annat.
Parking Mania har riktigt skön styrning där man använder accelerometern för att styra och en slider på skärmen för att steglöst gasa och bromsa. Jag är extremt allergisk mot styrkontroller på skärmen, men en gas-/bromsslider är tillräckligt lätt att pricka och funkar väldigt bra. Det finns 30 nivåer och de blir roligare ju högre upp man kommer. En av de stora behållningarna tycker jag är att alla fordon beter sig väldigt verklighetstroget. De olika bilarna har olika svängradie och det lönar sig verkligen att krypa runt ett hörn när det blir ont om utrymme. Ett av mina favoritfordon är bussen (som tyvärr bara är med på en nivå), den har en otroligt skön rotationspunkt i och med längden och att fram hjulen sitter bakom föraren. Man måste göra svängar där man tar ut ordentligt i mötande fil och det känns som om man har åkt för långt innan man börjar svänga – precis som i verkligheten.
När man har spelat igenom de 30 nivåerna börjar nästa utmaning. Alla nivåer har en bonustid, och klarar man de snabbt får man extra poäng. Ju färre gånger man kör emot något ger också mer poäng. Så andra spelomgången blir en speedrun där man både tävlar mot klockan och ska se till att köra så rent och snyggt som möjligt. Det är en riktigt skön känsla att i full fart i en tankbil köra om polisen för att försöka hinna förbi innan mötande trafik kommer :-).
7 kronor kostar fulla versionen: http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=329887910&mt=8
Finns också i gratis lite-version: http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=329983824&mt=8
Grafik: 3
Kontroller: 5
Spelvärde: 5
Prisvärde: 5
Rekommendation: Köp!
Jag älskar och har alltid älskat peka-och-klicka-äventyrsspel, en genre som en gång i tiden regerade spelmarknaden men som med åren blivit allt mer underrepresenterad. Så när man hittar ett nytt tillskott till genren som håller hög klass blir man alltid lycklig på ett lätt nostalgiskt sätt. Ett sådant tillskott, som jag varmt vill rekommendera, är Machinarium.
I fantastiskt vackra handmålade miljöer styr man sin lillaplåtrobot att lösa diverse pussel och hjärngympaövningar, som på ett naturligt sätt tar spelaren framåt i den övergripande handlingen. Två lite ovanliga grepp är att man bara kan interagera med saker i sin direkta närhet, samt att man kan dra i den lilla roboten för att göra honom kortare eller längre, vilket behövs för att lösa olika uppgifter.
Machinarium har utvecklats under tre år av ett team dedikerade tjeckiska utvecklare på Amanita Design, som själva finansierat hela utvecklingen. Marknadsföringsbudgeten är så låg som $1,000, även om man fått stor draghjälp genom distributionsavtal med Steam. Sådana här projekt är ovanliga och jag tycker att det är värt varenda eurocent av de ca 16€ spelet kostade mig på Steam, och vill verkligen sponsra den fina insats som utvecklarna gjort.
Spelet finns tillgängligt för Windows, Mac OSX och Linux. I Windowsversionen blev jag dock tvungen att sänka upplösningen till 1280x768 för att skärmen skulle fyllas ut ordentligt, även med fullscreen och 100% skärmfyllnad valt i spelet.
Eftersom spelet är utvecklat i Flash 10 så finns demoversionen spelbar i din webbläsare, testa direkt på http://machinarium.net/demo/.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Speltips: Machinarium", + "meta_description": "", + "author_id": 1085, + "created_at": 1259163455000, + "created_by": 1085, + "updated_at": 1259163455000, + "updated_by": 1085, + "published_at": 1259163455000, + "published_by": 1085 + }, + { + "id": 377, + "title": "Real Racing - bästa iPhone-spelet någonsin!", + "slug": "real-racing---basta-iphone-spelet-nagonsin", + "markdown": "\r\n\r\nI Apple App Store finns numera över 100 000 applikationer. En hel del av dem är spel, så konkurrensen är stenhård, men jag har hittat det som är mitt favoritspel och som jag tycker höjer sig ganska mycket över alla andra. Spelet är Real Racing. Jag är en inbiten racingnörd på alla nivåer (utom att tävla själv irl :-) ) som har ägnat många timmar till att nöta banor i spel som GP4 och EA Sport F1 200x. På PSP har jag kört en hel del racingspel, men körkänslan vill inte riktigt infinna sig trots en analog styrspak. Det som hittills har gett rätt känsla är en ratt kopplad till datorn.\r\n\r\nPlats på scen för Real Racing till iPhone. iPhones kapacitet ger åtminstone lika bra och snabb grafik som en PSP, men det som verkligen gör den stora skillnaden är accelerometerstyrningen. Spel som kräver en gamepad av något slag tycker jag själv blir rätt svårstyrda och tråkiga på iPhone, men i racingspel där hela telefonen kan fungera som en ratt briljerar verkligen iPhone. Jag har aldrig spelat ett racingspel utan riktig ratt som har gett en så verklig körkänsla! Utvecklaren Firemint har också satsat mycket på grafik och realistiska köregenskaper. I fyra olika bilklasser kan man tävla på 12 olika banor med olika karaktär.\r\n\r\n\r\n\r\nNär man har tagit sig igenom spelets karriärläge öppnar sig spelets verkliga bonusfördel: online-läget. Det finns två sätt att tävla online, det enklaste är genom time trials. Du försöker helt enkelt sätta ditt snabbaste varv på en bana med utvald biltyp. Ditt resultat laddas upp med ett enkelt knapptryck och du kan direkt se din plats på den globala topplistan! Varje time trial-resultat vägs sen ihop för att placera dig på den globala rankingen. Inte nog med det – om man kopplar ihop sitt online-konto med sitt Youtube-konto så laddar spelet automatiskt upp en Youtube-video varje gång man slår sitt personliga rekord på en bana. Vad sägs om undertecknads snabba varv – plats 175 globalt (kanske hade kommit ett par placeringar till högre om jag hade hållit mig på asfalten hela varvet):\r\n\r\n\r\n\r\nDet andra online-läget är att delta i en serie. Serietävlingarna går ut på att tre banor körs i följd, där man får 5 minuter per bana på sig att sätta ett snabbt varv. Ungefär som ett F1-kval i klassisk tappning. Sedan vägs placeringarna på de tre banorna ihop till en slutplacering. Detta är ganska kul, men det är en liten besvikelse att man inte kan tävla mot andra online på banan samtidigt... Jag har inte testat LAN-läget, men hoppas att man kan köra mot varandra samtidigt på banan där :-).\r\n\r\nNamn: Real RacingUtvecklare: FiremintPris: 38 SEKGrafik: 5Kontroller: 5Spelvärde: 5Prisvärde: 4Rekommendation: Köp!\r\n\r\n(finns även som gratisversion, specialgjord för lanseringen av nya Golf GTI).\r\n\r\n![Bild](http://tekniken.nu/uploads/633957783450843825-realracing.PNG)", + "html": "I Apple App Store finns numera över 100 000 applikationer. En hel del av dem är spel, så konkurrensen är stenhård, men jag har hittat det som är mitt favoritspel och som jag tycker höjer sig ganska mycket över alla andra. Spelet är Real Racing. Jag är en inbiten racingnörd på alla nivåer (utom att tävla själv irl :-) ) som har ägnat många timmar till att nöta banor i spel som GP4 och EA Sport F1 200x. På PSP har jag kört en hel del racingspel, men körkänslan vill inte riktigt infinna sig trots en analog styrspak. Det som hittills har gett rätt känsla är en ratt kopplad till datorn.
Plats på scen för Real Racing till iPhone. iPhones kapacitet ger åtminstone lika bra och snabb grafik som en PSP, men det som verkligen gör den stora skillnaden är accelerometerstyrningen. Spel som kräver en gamepad av något slag tycker jag själv blir rätt svårstyrda och tråkiga på iPhone, men i racingspel där hela telefonen kan fungera som en ratt briljerar verkligen iPhone. Jag har aldrig spelat ett racingspel utan riktig ratt som har gett en så verklig körkänsla! Utvecklaren Firemint har också satsat mycket på grafik och realistiska köregenskaper. I fyra olika bilklasser kan man tävla på 12 olika banor med olika karaktär.
När man har tagit sig igenom spelets karriärläge öppnar sig spelets verkliga bonusfördel: online-läget. Det finns två sätt att tävla online, det enklaste är genom time trials. Du försöker helt enkelt sätta ditt snabbaste varv på en bana med utvald biltyp. Ditt resultat laddas upp med ett enkelt knapptryck och du kan direkt se din plats på den globala topplistan! Varje time trial-resultat vägs sen ihop för att placera dig på den globala rankingen. Inte nog med det – om man kopplar ihop sitt online-konto med sitt Youtube-konto så laddar spelet automatiskt upp en Youtube-video varje gång man slår sitt personliga rekord på en bana. Vad sägs om undertecknads snabba varv – plats 175 globalt (kanske hade kommit ett par placeringar till högre om jag hade hållit mig på asfalten hela varvet):
Det andra online-läget är att delta i en serie. Serietävlingarna går ut på att tre banor körs i följd, där man får 5 minuter per bana på sig att sätta ett snabbt varv. Ungefär som ett F1-kval i klassisk tappning. Sedan vägs placeringarna på de tre banorna ihop till en slutplacering. Detta är ganska kul, men det är en liten besvikelse att man inte kan tävla mot andra online på banan samtidigt... Jag har inte testat LAN-läget, men hoppas att man kan köra mot varandra samtidigt på banan där :-).
Namn: Real Racing
Utvecklare: Firemint
Pris: 38 SEK
Grafik: 5
Kontroller: 5
Spelvärde: 5
Prisvärde: 4
Rekommendation: Köp!
(finns även som gratisversion, specialgjord för lanseringen av nya Golf GTI).
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Real Racing - bästa iPhone-spelet någonsin!", + "meta_description": "", + "author_id": 6, + "created_at": 1260181544000, + "created_by": 6, + "updated_at": 1260181544000, + "updated_by": 6, + "published_at": 1260181544000, + "published_by": 6 + }, + { + "id": 395, + "title": "Plugga in gitarren i din iPhone", + "slug": "plugga-in-gitarren-i-din-iphone", + "markdown": "\r\n\r\nPaul Reed Smith gör inte bara sjukt snygga gitarrer – de har också tagit fram en särskild kabel för att koppla en elgitarr till iPhone och iPod Touch. Tillsammans med deras iPhone-app PRS Jam Amp så får man en lösning som klarar av att spela upp musik (backtracks), spela in det man spelar i fyra kanaler OCH förstärkarsimulering. Allt till det facila priset av €22 för kabeln (plus frakt på €17 från england) och 75:- för iPhone-appen. Troligen kommer kabeln att gå att få tag i Sverige inom kort och då blir hamnar hela lösningen på ungefär 300:-, d.v.s. ungefär samma som ett par paket strängar av bättre kvalitet.\r\n\r\nVerkar hur grymt som helst. Recension kommer när www.dv247.com har skeppat hem kabeln till mig.\r\n\r\n\r\n\r\n\r\n\r\nVia feber.se\r\n\r\n![Bild](http://tekniken.nu/uploads/634039156546375416-guitarbud-prs-white-gutar-cu-red-web.jpg)", + "html": "Paul Reed Smith gör inte bara sjukt snygga gitarrer – de har också tagit fram en särskild kabel för att koppla en elgitarr till iPhone och iPod Touch. Tillsammans med deras iPhone-app PRS Jam Amp så får man en lösning som klarar av att spela upp musik (backtracks), spela in det man spelar i fyra kanaler OCH förstärkarsimulering. Allt till det facila priset av €22 för kabeln (plus frakt på €17 från england) och 75:- för iPhone-appen. Troligen kommer kabeln att gå att få tag i Sverige inom kort och då blir hamnar hela lösningen på ungefär 300:-, d.v.s. ungefär samma som ett par paket strängar av bättre kvalitet.
Verkar hur grymt som helst. Recension kommer när www.dv247.com har skeppat hem kabeln till mig.
Via feber.se
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Plugga in gitarren i din iPhone", + "meta_description": "", + "author_id": 6, + "created_at": 1268318854000, + "created_by": 6, + "updated_at": 1268318854000, + "updated_by": 6, + "published_at": 1268318854000, + "published_by": 6 + }, + { + "id": 397, + "title": "Några skrivtips från tekniken.nu", + "slug": "nagra-skrivtips-fran-teknikennu", + "markdown": "\r\n\r\nBehöver du skärpa språkbruket på din blogg? Här är några ovärderliga tips:\r\nAnvänd aldrig alliteration.Prepositioner är inte bra ord att avsluta meningar med.Sky klyschor som pesten. (De är gamla nyheter.)Anställ lokala uttryck.Undvik et-tecken & förkortningar, etc.Anmärkningar inom paranteser (oavsett hur viktiga) är onödiga.Det är fel att någonsin splittra ett infinitiv.Sammandragningar är int' nödvändiga.Man ska aldrig generalisera.Använd icke citat. Eller som Ralph Waldo Emerson sa en gång: \"Jag hatar citat. Berätta vad du vet.\"Jämförelser är lika dåliga som klyschor.Var inte överflödig; använd inte fler ord än nödvändigt; det är ytterst onödigt.Hädelse suger.Var mer eller mindre precis och specifik.Underskattning är alltid bäst.Överdrifter är en miljard gånger värre än underskattningar.En-ordsmeningar? Eliminera!Paralleller i skrift är som vatten på en gås.Var uppe med tuppen för att slippa vardagsuttryck.Även om blandade metaforer låter fint, borde de spåras ur i tidigt stadium.Vem behöver retoriska frågor?\r\nVia zkuttz.com och mängder med andra \"roliga\" siter. Extra rolig är humorsiten Yttermera som har skrivit om punkterna på listan så att nästan allt fyndigt har försvunnit, och dessutom lagt till några egna seriösa skrivtips - surrealistiskt...\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/634043299925881485-calligraphy_pen_transparent.gif)", + "html": "Behöver du skärpa språkbruket på din blogg? Här är några ovärderliga tips:
- Använd aldrig alliteration.
- Prepositioner är inte bra ord att avsluta meningar med.
- Sky klyschor som pesten. (De är gamla nyheter.)
- Anställ lokala uttryck.
- Undvik et-tecken & förkortningar, etc.
- Anmärkningar inom paranteser (oavsett hur viktiga) är onödiga.
- Det är fel att någonsin splittra ett infinitiv.
- Sammandragningar är int' nödvändiga.
- Man ska aldrig generalisera.
- Använd icke citat. Eller som Ralph Waldo Emerson sa en gång: \"Jag hatar citat. Berätta vad du vet.\"
- Jämförelser är lika dåliga som klyschor.
- Var inte överflödig; använd inte fler ord än nödvändigt; det är ytterst onödigt.
- Hädelse suger.
- Var mer eller mindre precis och specifik.
- Underskattning är alltid bäst.
- Överdrifter är en miljard gånger värre än underskattningar.
- En-ordsmeningar? Eliminera!
- Paralleller i skrift är som vatten på en gås.
- Var uppe med tuppen för att slippa vardagsuttryck.
- Även om blandade metaforer låter fint, borde de spåras ur i tidigt stadium.
- Vem behöver retoriska frågor?
Via zkuttz.com och mängder med andra \"roliga\" siter. Extra rolig är humorsiten Yttermera som har skrivit om punkterna på listan så att nästan allt fyndigt har försvunnit, och dessutom lagt till några egna seriösa skrivtips - surrealistiskt...
Twitter:
Vimeo:
Skype:
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Webb 3.0 är blå moln :)", + "meta_description": "", + "author_id": 1087, + "created_at": 1268987794000, + "created_by": 1087, + "updated_at": 1268987794000, + "updated_by": 1087, + "published_at": 1268987794000, + "published_by": 1087 + }, + { + "id": 401, + "title": "Bästa och sämsta iPhone-spelen", + "slug": "basta-och-samsta-iphone-spelen", + "markdown": "\r\n\r\nNuförtiden spelar jag nästan bara på iPhone. Jag har lite för ont om tid för PC-spel och iPhonen är åtminstone lika bra som t.ex. PSP, när det gäller racingspel mycket bättre tack vare accelerometerstyrning. Här kommer mina favoriter och några bottennapp – samtliga kostar pengar.\r\n\r\n## Real Racing\r\n\r\nItunes – 38 SEK\r\n\r\n\r\nReal Racing har jag skrivit om förut. Det är nog mitt absolut favoritspel på iPhone. Riktigt bra gjort, fantastisk styrning och grym känsla. Det enda jag skulle önska mig är fler banor och ett riktigt multiplayerläge över internet (som det är nu kan man tävla i vilka tider man sätter som ensam bil på banan.\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n## Dirt Moto Racing\r\n\r\nItunes – 15 SEK\r\n\r\n\r\nYtterligare ett racingspel, denna gång med fyrhjulingar. Även detta spel har riktigt bra styrning och bra grafik. Man tävlar i fyra olika grenar: vanlig racing, speed (100% turbo hela tiden), orientering och freestyle och kan samla poäng och uppgraderingar. En sak jag\r\n\r\n\r\nfunderar över dock är varför alla spel med fyrhjulingar måste ha konster – gör man faktiskt bakåtvolter mitt i ett race?\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n## Parking Mania\r\n\r\nItunes – 7 SEK\r\n\r\n\r\nParking Mania har jag också skrivit om tidigare. Du har säkert spelat liknande spel på webben – du har en bil som ska parkeras i en parkeringsficka, i en miljö du ser uppifrån. Till en början är det lätt men svårighetsgraden ökar snabbt. Parking Mania har en riktigt lyckat accelerometerstyrning tillsammans med en onscreen-kontroll för att gasa och bromsa analogt. Utöver vanliga bilar får man köra motorcyklar, traktorer, bussar, brandbilar och mycket annat. På svårare nivåer ska man koppla av och på släp som man dessutom ska backa med.\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n## Space Miner\r\n\r\nItunes – 38 SEK\r\n\r\n\r\nSkjuta sönder asteroider, samla malm och uppgradera sitt skepp. Lägg till en ganska corny story runt det hela i rymdwesterntema och du har space miner. Trots att det här spelet bara har onscreen-kontroller som jag normalt sett avskyr så funkar det riktigt bra. Mycket beroendeframkallande och riktigt roligt!\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n## Let's Golf\r\n\r\nItunes – 15 SEK\r\n\r\n\r\nLet’s Golf fick jag i Apples julkampanj där de delade ut låtar och spel gratis. Kontrollerna följer klassiska golfspelskontroller – först pricka rätt styrka på slaget och sen pricka mitten mellan slice och hook. Fin grafik och välgjorda banor. Det enda som drar ner betyget är de fåniga karaktärerna med fåniga röster och fåniga kläder man kan vinna genom att spela bra.\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n## Trivial Pursuit\r\n\r\nItunes – 38 SEK\r\n\r\n\r\nTP är ett annat spel som kom i julkampanjen. Det följer samma upplägg som brädspelet, men är lite lättare i och med att man alltid får svarsalternativ. Man kan spela mot datorn eller i ett nytt spelläge där man ska ta sig igenom en bana på minst antal omgångar genom att svara rätt på frågor. När frågorna började ta slut köpte jag fler paket, vilket man kan göra direkt inifrån spelet.\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n## Civilization Revolution\r\n\r\nItunes – 49 SEK\r\n\r\n\r\nVem har inte lagt ner alldeles för många timmar på Civilization och dess uppföljare? Civilization Revolution är en lite bantad version som liknar den som finns på Nintendo DS. Vissa delar har kapats bort för att göra spelet mobilvänligare. Själv tycker jag bara att det är positivt – det som blir kvar är en genuin Civilization-känsla som man gärna lägger flera timmar på. Efter några lätta vinster har jag har precis hittat svårighetsgraden där jag måste kämpa. Enda önskemålet vore att den autosparade – man kan tappa sitt spel om det ringer.\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nTyvärr är jag inte lika nöjd med alla spel jag har köpt... Här är några riktiga bottennapp – trots bra betyg i App Store.\r\n\r\n## Real Football och Real Tennis\r\n\r\nDessa spel har fått bra betyg genomgående, men jag tycker att de är nästan ospelbara. Problemet är onscreen-kontrollerna. Du måste ha vänstertummen på rätt ställe för att få figurerna att springa dit du vill, och utan någon som helst feedback när du tappar posititionen blir det bara frustration kvar.\r\n\r\n## Driver\r\n\r\nÄven Driver har fått bra recensioner, och eftersom jag verkligen gillade det på PC så köpte jag det. Jag tycker att det är i princip helt ospelbart, det är väldigt segt i reaktionerna vilket gör att man antingen krockar mot hus eller hela tiden blir tagen av polisen. Får nog damma av gamla Logitech-ratten hemma istället.\r\n\r\n## Playman Track and Field\r\n\r\nEtt friidrottsspel där man tävlar genom att trycka på rätt ställen på skärmen i viss takt. Styrsystemet är precis så dumt som det låter, och jag får starka vibbar av Decathlon på C64 där man skulle springa snabbt genom att vicka joysticken fram och tillbaka till den (eller armen) gick sönder.\r\n\r\n![Bild](http://tekniken.nu/uploads/634055622439137558-civilization.jpg)", + "html": "Nuförtiden spelar jag nästan bara på iPhone. Jag har lite för ont om tid för PC-spel och iPhonen är åtminstone lika bra som t.ex. PSP, när det gäller racingspel mycket bättre tack vare accelerometerstyrning. Här kommer mina favoriter och några bottennapp – samtliga kostar pengar.
Real Racing
Itunes – 38 SEK
Real Racing har jag skrivit om förut. Det är nog mitt absolut favoritspel på iPhone. Riktigt bra gjort, fantastisk styrning och grym känsla. Det enda jag skulle önska mig är fler banor och ett riktigt multiplayerläge över internet (som det är nu kan man tävla i vilka tider man sätter som ensam bil på banan.
Dirt Moto Racing
Itunes – 15 SEK
Ytterligare ett racingspel, denna gång med fyrhjulingar. Även detta spel har riktigt bra styrning och bra grafik. Man tävlar i fyra olika grenar: vanlig racing, speed (100% turbo hela tiden), orientering och freestyle och kan samla poäng och uppgraderingar. En sak jag
funderar över dock är varför alla spel med fyrhjulingar måste ha konster – gör man faktiskt bakåtvolter mitt i ett race?
Parking Mania
Itunes – 7 SEK
Parking Mania har jag också skrivit om tidigare. Du har säkert spelat liknande spel på webben – du har en bil som ska parkeras i en parkeringsficka, i en miljö du ser uppifrån. Till en början är det lätt men svårighetsgraden ökar snabbt. Parking Mania har en riktigt lyckat accelerometerstyrning tillsammans med en onscreen-kontroll för att gasa och bromsa analogt. Utöver vanliga bilar får man köra motorcyklar, traktorer, bussar, brandbilar och mycket annat. På svårare nivåer ska man koppla av och på släp som man dessutom ska backa med.
Space Miner
Itunes – 38 SEK
Skjuta sönder asteroider, samla malm och uppgradera sitt skepp. Lägg till en ganska corny story runt det hela i rymdwesterntema och du har space miner. Trots att det här spelet bara har onscreen-kontroller som jag normalt sett avskyr så funkar det riktigt bra. Mycket beroendeframkallande och riktigt roligt!
Let's Golf
Itunes – 15 SEK
Let’s Golf fick jag i Apples julkampanj där de delade ut låtar och spel gratis. Kontrollerna följer klassiska golfspelskontroller – först pricka rätt styrka på slaget och sen pricka mitten mellan slice och hook. Fin grafik och välgjorda banor. Det enda som drar ner betyget är de fåniga karaktärerna med fåniga röster och fåniga kläder man kan vinna genom att spela bra.
Trivial Pursuit
Itunes – 38 SEK
TP är ett annat spel som kom i julkampanjen. Det följer samma upplägg som brädspelet, men är lite lättare i och med att man alltid får svarsalternativ. Man kan spela mot datorn eller i ett nytt spelläge där man ska ta sig igenom en bana på minst antal omgångar genom att svara rätt på frågor. När frågorna började ta slut köpte jag fler paket, vilket man kan göra direkt inifrån spelet.
Civilization Revolution
Itunes – 49 SEK
Vem har inte lagt ner alldeles för många timmar på Civilization och dess uppföljare? Civilization Revolution är en lite bantad version som liknar den som finns på Nintendo DS. Vissa delar har kapats bort för att göra spelet mobilvänligare. Själv tycker jag bara att det är positivt – det som blir kvar är en genuin Civilization-känsla som man gärna lägger flera timmar på. Efter några lätta vinster har jag har precis hittat svårighetsgraden där jag måste kämpa. Enda önskemålet vore att den autosparade – man kan tappa sitt spel om det ringer.
Tyvärr är jag inte lika nöjd med alla spel jag har köpt... Här är några riktiga bottennapp – trots bra betyg i App Store.
Real Football och Real Tennis
Dessa spel har fått bra betyg genomgående, men jag tycker att de är nästan ospelbara. Problemet är onscreen-kontrollerna. Du måste ha vänstertummen på rätt ställe för att få figurerna att springa dit du vill, och utan någon som helst feedback när du tappar posititionen blir det bara frustration kvar.
Driver
Även Driver har fått bra recensioner, och eftersom jag verkligen gillade det på PC så köpte jag det. Jag tycker att det är i princip helt ospelbart, det är väldigt segt i reaktionerna vilket gör att man antingen krockar mot hus eller hela tiden blir tagen av polisen. Får nog damma av gamla Logitech-ratten hemma istället.
Playman Track and Field
Ett friidrottsspel där man tävlar genom att trycka på rätt ställen på skärmen i viss takt. Styrsystemet är precis så dumt som det låter, och jag får starka vibbar av Decathlon på C64 där man skulle springa snabbt genom att vicka joysticken fram och tillbaka till den (eller armen) gick sönder.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Bästa och sämsta iPhone-spelen", + "meta_description": "", + "author_id": 6, + "created_at": 1269965443000, + "created_by": 6, + "updated_at": 1269965443000, + "updated_by": 6, + "published_at": 1269965443000, + "published_by": 6 + }, + { + "id": 412, + "title": "Bacon är alltid bacon men Chuck Norris är inte cool längre", + "slug": "bacon-ar-alltid-bacon-men-chuck-norris-ar-inte-cool-langre", + "markdown": "\r\n\r\n...eller vad händer när mina favoriter inte är lika bra som jag brukar skryta om?\r\n\r\nVi har alla varit i den situationen när vi lovordat en produkt, en person eller ett varumärke för alla vi känner men prylen/varumärket eller personen förändras. Prylen kanske blir sämre med varje uppdatering eller den kanske inte hänger med konkurenterna. Varumärket kanske är uppköpt eller har tappat sin ideologi som det en gång stod för, personen kanske växer upp och blir tråkig istället för rebelisk och cool.\r\n\r\nChuck Norris var en gång var det hårdaste som fanns, speciellt i sina filmer. Han gjorde roundhouse-sparkar som ingen annan och var så hård att ingen skulle våga säga nåt annat. Numera är han väldigt religiös och politisk konservativ, knappast cool på nåt sätt åtminstone i mina ögon. Legenden Chuck Norris är fortfarande cool men inte personen bakom legenden.\r\n\r\nDen andra sidan av myntet är Apple som en gång stod för frihet, öppenhet och var den lille killens kompis har blivit mobbare, översittare, extremt inlåst och elitistiskt - men användarna som är samma användare som tidigare gillade Apple för att dom var avslappnade och öppna gillar numera Apple för att dom är stenhårda och stängda. Åsikten är kvar men argumenten är ändrade för att fortfarande komma fram till samma slutsats.\r\n\r\nMicrosoft som tidigare haft ostabila och fula produkter som t.ex windows NT, ME och XP (före alla servicepack) och som varit ganska oschyssta mot leverantörer och kunder har skärpt till sig enormt speciellt de senaste 5 åren (Vista är förstås undantaget här). Samma sak gäller Linux som de flesta anser är oanvändarvänligt och saknar drivrutiner, något som var sant väldigt länge men som de senaste 5 åren ändrats enormt och är inte längre en sanning utan en förlegad åsikt.\r\n\r\nVarför är det då så svårt att ändra sig och varför används gamla sanningar som argument i diskussioner än idag. Det är inte svårt att hitta Microsoft-artiklar som har kommentarerna fyllda av ”blåskärmar”, ”monopol” och ”jag vill inte ha internet explorer 6” eller artiklar som handlar om att mormor inte kan använda linux men gankar noobs på sin Windows-maskin (ok just den artikeln kanske inte finns)?\r\n\r\nSvaret ligger förmodligen i evolutionen och psykologins värld. När vi har investerat en stor del av vårt liv för att försvara något oavsett om det är ett vattenhål i öknen, en by med våra grannar eller en ras, religion eller en åsikt så har vi investerat en enorm mängd energi och anseende bland våra vänner och enligt evolutionen så är energi enormt dyrt. Energin var viktigare att lägga på större muskler och snabbare fötter för att hålla sig vid liv, och anseendet behövdes för att få fortplanta sig. Idag har vi inte alls har inte alls samma förutsättningar (nördar t.ex. fortplantar ju sig ändå inte :-) ) men beteendet är för djupt att ändra på.\r\n\r\nLyckligvis så finns det saker man kan gilla utan att ha fel som t.ex bacon, lolcats och roliga översättningar men här är ju hela internet överens - tja iaf den köttätande delen av internet.\r\n\r\nHela den här bloggposten är mina åsikter som förstås också sitter så djupt att jag har svårt att ändra mig, tur nog så har jag förstås enbart gjort bra val så alla andra borde ändra sig istället. :-)\r\n\r\n![Bild](http://tekniken.nu/uploads/634104061438509932-bacon-chuck-norris.png)", + "html": "...eller vad händer när mina favoriter inte är lika bra som jag brukar skryta om?
Vi har alla varit i den situationen när vi lovordat en produkt, en person eller ett varumärke för alla vi känner men prylen/varumärket eller personen förändras. Prylen kanske blir sämre med varje uppdatering eller den kanske inte hänger med konkurenterna. Varumärket kanske är uppköpt eller har tappat sin ideologi som det en gång stod för, personen kanske växer upp och blir tråkig istället för rebelisk och cool.
Chuck Norris var en gång var det hårdaste som fanns, speciellt i sina filmer. Han gjorde roundhouse-sparkar som ingen annan och var så hård att ingen skulle våga säga nåt annat. Numera är han väldigt religiös och politisk konservativ, knappast cool på nåt sätt åtminstone i mina ögon. Legenden Chuck Norris är fortfarande cool men inte personen bakom legenden.
Den andra sidan av myntet är Apple som en gång stod för frihet, öppenhet och var den lille killens kompis har blivit mobbare, översittare, extremt inlåst och elitistiskt - men användarna som är samma användare som tidigare gillade Apple för att dom var avslappnade och öppna gillar numera Apple för att dom är stenhårda och stängda. Åsikten är kvar men argumenten är ändrade för att fortfarande komma fram till samma slutsats.
Microsoft som tidigare haft ostabila och fula produkter som t.ex windows NT, ME och XP (före alla servicepack) och som varit ganska oschyssta mot leverantörer och kunder har skärpt till sig enormt speciellt de senaste 5 åren (Vista är förstås undantaget här). Samma sak gäller Linux som de flesta anser är oanvändarvänligt och saknar drivrutiner, något som var sant väldigt länge men som de senaste 5 åren ändrats enormt och är inte längre en sanning utan en förlegad åsikt.
Varför är det då så svårt att ändra sig och varför används gamla sanningar som argument i diskussioner än idag. Det är inte svårt att hitta Microsoft-artiklar som har kommentarerna fyllda av ”blåskärmar”, ”monopol” och ”jag vill inte ha internet explorer 6” eller artiklar som handlar om att mormor inte kan använda linux men gankar noobs på sin Windows-maskin (ok just den artikeln kanske inte finns)?
Svaret ligger förmodligen i evolutionen och psykologins värld. När vi har investerat en stor del av vårt liv för att försvara något oavsett om det är ett vattenhål i öknen, en by med våra grannar eller en ras, religion eller en åsikt så har vi investerat en enorm mängd energi och anseende bland våra vänner och enligt evolutionen så är energi enormt dyrt. Energin var viktigare att lägga på större muskler och snabbare fötter för att hålla sig vid liv, och anseendet behövdes för att få fortplanta sig. Idag har vi inte alls har inte alls samma förutsättningar (nördar t.ex. fortplantar ju sig ändå inte :-) ) men beteendet är för djupt att ändra på.
Lyckligvis så finns det saker man kan gilla utan att ha fel som t.ex bacon, lolcats och roliga översättningar men här är ju hela internet överens - tja iaf den köttätande delen av internet.
Hela den här bloggposten är mina åsikter som förstås också sitter så djupt att jag har svårt att ändra mig, tur nog så har jag förstås enbart gjort bra val så alla andra borde ändra sig istället. :-)
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Bacon är alltid bacon men Chuck Norris är inte cool längre", + "meta_description": "", + "author_id": 1089, + "created_at": 1274884800000, + "created_by": 1089, + "updated_at": 1274884800000, + "updated_by": 1089, + "published_at": 1274884800000, + "published_by": 1089 + }, + { + "id": 439, + "title": "Gitarristens bästa iPhone-appar", + "slug": "gitarristens-basta-iphone-appar", + "markdown": "\r\n\r\nApp Store är full av riktiga guldkorn för den som spelar gitarr. Här är några av mina favoriter:\r\n\r\nGuitar Toolkit (Agile Partners) – 75 SEK\r\n\r\nGuitar Toolkit innehåller en stämapparat, en metronom med tap tempo och ett enormt omfattande bibliotek av ackord och skalor där alla positioner på den virtuella halsen gör ljud så att man kan testa ackorden lite. Alla grundverktyg man kan behöva med andra ord. Stämapparaten är väldigt mycket mer exakt än en vanlig stämmare jag köpte på Musikbörsen för ungefär 200:-, så bara den gör att den här applikationen är värd sina 75 SEK.\r\n\r\n\r\n\r\nAlternativ: billigare program som bara t.ex. är stämapparat eller bara ackordbibliotek \r\n## Tab Toolkit (Agile Partners) – 75 SEK\r\nTab Toolkit är en applikation för att visa och spela upp tabulatur på telefonen. Klarar formaten Guitar Pro och Powertab (och kanske några till), med alla spår och olika instrument. Om man är van vid Guitar Pro så hittar man allt man förväntar sig utom funktionalitet för att skapa och ändra i tabbarna. För att få in tab-filerna i applikationen så kan man antingen ansluta till programmets inbyggda webbserver från en dator och ladda upp den vägen, eller så kan man använda den inbyggda webbläsaren\r\n\r\n\r\n\r\nAlternativ: Ultimate Guitars tabapplikation Ultimate Guitar Tabs för 22 SEK. Den är mycket enklare i sitt utförande och visar bara tabbar i vanligt textformat. Den erbjuder dock direktaccess till hela UGs arkiv och har några smarta funktioner som man också hittar på UGs site, t.ex. autoscroll i ett tempo man bestämmer.\r\n## AmpKit (Agile Partners) – 0 till 149 SEK\r\nAmpKit simulerar förstärkare, kabinett, pedaler, mickar o.s.v. Som en Pod i applikationsformat helt enkelt. I gratisversionen får man med en Peavy Valveking, två kabinett, en mick och två pedaler. Man kan köpa mer utrustning antingen via in-app-köp eller genom att betala 149 SEK för fulla versionen där man får mer utrustning och lägre priser på köpen. Detta är en potentiellt dyrare lösning än konkurrenten iAmplitube, men jag tycker att AmpKit är överlägset därför att:\r\n\r\n\r\nDen har inspelningsfunktion (ganska katastrofalt att detta inte finns i iAmplitube, kommer förhoppningsvis snart)Alla inspelningar görs torrt, effekterna läggs på i realtid även när du spelar upp dina inspelningar inne i programmet. Det gör att du alltid kan re-ampa dina inspelningar om du köper nya förstärkarmodeller eller helt enkelt har rattat in ett bättre ljudDen har funktion för backtracks, laddas upp via programmets inbyggda webbserver (samma som i iAmplitube)Den har smartare preset-hantering, varje inställning sparas med eget namn och bild av den utrustning som ingår (iAmplitube har 12 numrerade slotar utan mer information än siffran)Den har direkt koppling tillSoundCloud (som vi bloggat om tidigare) där du kan ladda upp dina inspelningar och dela med dig.\r\n\r\n\r\nOavsett vilken app du väljer så behöver du ett sätt att koppla gitarren till telefonen. AmpKit är sammankopplat med Peavys Ampkit link, men andra produkter som gör samma sak – t.ex. iRig som hör ihop med iAmplitube jag tycker är mycket snyggare – funkar lika bra och är kompatibla. Det är extremt imponerande att de här apparna tar in ljudet i princip helt utan latens (jag märker ingen åtminstone), något som traditionellt sätt är rätt krångligt att få till med en normal PC utan att skaffa ett särskilt ljudkort med rätt sorts drivrutiner.\r\n\r\n\r\n\r\nAlternativ: iAmplitube, PRS Jam\r\n## Fret Surfer (Jason Neufeld) – 22 SEK\r\nFör den som liksom jag har sjukt svårt att komma ihåg tonerna på halsen så finns spelet Fret Surfer där man övar på just det. Kanske inte världens roligaste spel, men väldigt bra övning, så slipper man skämmas så mycket när man träffar sin gitarrlärare.\r\n\r\n\r\n## Sammanfattning\r\nDet är inte så svårt att räkna ut vem jag tycker gör de bästa gitarr-apparna. Agile har verkligen lyckats otroligt bra med sina applikationer, även om de är dyra (i iPhone-världen) så är de absolut bäst och mest prisvärda.\r\n\r\nUtöver applikationerna ovan finns det många, många fler. Det finns virtuella gitarrer, inspelningsstudios, kompositionsappar och mycket annat.\r\n\r\n![Bild](http://tekniken.nu/uploads/634200659836171406-gtk-feature.png)", + "html": "App Store är full av riktiga guldkorn för den som spelar gitarr. Här är några av mina favoriter:
Guitar Toolkit (Agile Partners) – 75 SEK
Guitar Toolkit innehåller en stämapparat, en metronom med tap tempo och ett enormt omfattande bibliotek av ackord och skalor där alla positioner på den virtuella halsen gör ljud så att man kan testa ackorden lite. Alla grundverktyg man kan behöva med andra ord. Stämapparaten är väldigt mycket mer exakt än en vanlig stämmare jag köpte på Musikbörsen för ungefär 200:-, så bara den gör att den här applikationen är värd sina 75 SEK.
Alternativ: billigare program som bara t.ex. är stämapparat eller bara ackordbibliotek
Tab Toolkit (Agile Partners) – 75 SEK
Tab Toolkit är en applikation för att visa och spela upp tabulatur på telefonen. Klarar formaten Guitar Pro och Powertab (och kanske några till), med alla spår och olika instrument. Om man är van vid Guitar Pro så hittar man allt man förväntar sig utom funktionalitet för att skapa och ändra i tabbarna. För att få in tab-filerna i applikationen så kan man antingen ansluta till programmets inbyggda webbserver från en dator och ladda upp den vägen, eller så kan man använda den inbyggda webbläsaren
Alternativ: Ultimate Guitars tabapplikation Ultimate Guitar Tabs för 22 SEK. Den är mycket enklare i sitt utförande och visar bara tabbar i vanligt textformat. Den erbjuder dock direktaccess till hela UGs arkiv och har några smarta funktioner som man också hittar på UGs site, t.ex. autoscroll i ett tempo man bestämmer.
AmpKit (Agile Partners) – 0 till 149 SEK
AmpKit simulerar förstärkare, kabinett, pedaler, mickar o.s.v. Som en Pod i applikationsformat helt enkelt. I gratisversionen får man med en Peavy Valveking, två kabinett, en mick och två pedaler. Man kan köpa mer utrustning antingen via in-app-köp eller genom att betala 149 SEK för fulla versionen där man får mer utrustning och lägre priser på köpen. Detta är en potentiellt dyrare lösning än konkurrenten iAmplitube, men jag tycker att AmpKit är överlägset därför att:
- Den har inspelningsfunktion (ganska katastrofalt att detta inte finns i iAmplitube, kommer förhoppningsvis snart)
- Alla inspelningar görs torrt, effekterna läggs på i realtid även när du spelar upp dina inspelningar inne i programmet. Det gör att du alltid kan re-ampa dina inspelningar om du köper nya förstärkarmodeller eller helt enkelt har rattat in ett bättre ljud
- Den har funktion för backtracks, laddas upp via programmets inbyggda webbserver (samma som i iAmplitube)
- Den har smartare preset-hantering, varje inställning sparas med eget namn och bild av den utrustning som ingår (iAmplitube har 12 numrerade slotar utan mer information än siffran)
- Den har direkt koppling tillSoundCloud (som vi bloggat om tidigare) där du kan ladda upp dina inspelningar och dela med dig.
Oavsett vilken app du väljer så behöver du ett sätt att koppla gitarren till telefonen. AmpKit är sammankopplat med Peavys Ampkit link, men andra produkter som gör samma sak – t.ex. iRig som hör ihop med iAmplitube jag tycker är mycket snyggare – funkar lika bra och är kompatibla. Det är extremt imponerande att de här apparna tar in ljudet i princip helt utan latens (jag märker ingen åtminstone), något som traditionellt sätt är rätt krångligt att få till med en normal PC utan att skaffa ett särskilt ljudkort med rätt sorts drivrutiner.
Alternativ: iAmplitube, PRS Jam
Fret Surfer (Jason Neufeld) – 22 SEK
För den som liksom jag har sjukt svårt att komma ihåg tonerna på halsen så finns spelet Fret Surfer där man övar på just det. Kanske inte världens roligaste spel, men väldigt bra övning, så slipper man skämmas så mycket när man träffar sin gitarrlärare.
Sammanfattning
Det är inte så svårt att räkna ut vem jag tycker gör de bästa gitarr-apparna. Agile har verkligen lyckats otroligt bra med sina applikationer, även om de är dyra (i iPhone-världen) så är de absolut bäst och mest prisvärda.
Utöver applikationerna ovan finns det många, många fler. Det finns virtuella gitarrer, inspelningsstudios, kompositionsappar och mycket annat.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Gitarristens bästa iPhone-appar", + "meta_description": "", + "author_id": 6, + "created_at": 1284469182000, + "created_by": 6, + "updated_at": 1284469182000, + "updated_by": 6, + "published_at": 1284469182000, + "published_by": 6 + }, + { + "id": 499, + "title": "Är knappen deprimerad eller inte? Exjts API är inte helt tydligt.", + "slug": "ar-knappen-deprimerad-eller-inte-exjts-api-ar-inte-helt-tydligt", + "markdown": "\r\n\r\n\"False to not allow a pressed Button to be depressed (defaults to undefined).\"\r\n\r\nVad betyder det?\r\n\r\n\r\n\r\nEller som google translate utrycker det ”Falska att inte tillåta en pressad knapp för att vara deprimerad (standard undefined)”\r\n\r\nTaget från Extjs documentation. \r\n\r\nhttp://dev.sencha.com/deploy/ext-3.3.1/docs/\r\n\r\n![Bild](http://tekniken.nu/uploads/extjs_documentation_config.png)", + "html": "\"False to not allow a pressed Button to be depressed (defaults to undefined).\"
Vad betyder det?
Eller som google translate utrycker det ”Falska att inte tillåta en pressad knapp för att vara deprimerad (standard undefined)”
Taget från Extjs documentation.
http://dev.sencha.com/deploy/ext-3.3.1/docs/
Världens skönaste fotbollskommentator!
Tiziano Crudeli är en fantastisk ”fotbollskommentator”.
I Italien har har de förutom sändning av matcher olika program som sänder diskussioner och annat i andra kanaler samtidigt som matchen spelas.
Tiziano Crudeli är den person som kommenterar Milans matcher i en studio och ibland på plats för Italiensk tv.
Här kommer en Best-of med Crudeli, se och njut! Tips, det finns otroligt många sköna klipp med honom om ni söker er vidare på You Tube.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Världens skönaste fotbollskommentator!", + "meta_description": "", + "author_id": 1094, + "created_at": 1306755180000, + "created_by": 1094, + "updated_at": 1306755180000, + "updated_by": 1094, + "published_at": 1306755180000, + "published_by": 1094 + }, + { + "id": 513, + "title": "Använd din Real Racing 2-profil på både iPhone och iPad", + "slug": "anvand-din-real-racing-2-profil-pa-bade-iphone-och-ipad", + "markdown": "\r\n\r\nReal Racing 2 är ett av de bästa spelen överhuvud taget på iPhone (precis som föregångaren Real Racing). För iPad finns en särskilt anpassad version som heter Real Racing 2 HD. För att komplicera det lite så är det samma spel med bättre grafik men ändå inte samma. Man hamnar inte i samma topplista på GameCenter t.ex. En sak som man däremot kan göra är att importera profilen mellan spelen - så alla de timmar du har lagt ner på att tjäna miljoner dollar och låsa upp alla bilar och banor är inte förgäves om du byter plattform. Det hela sköts via GameCenter så du måste ha slagit på den funktionen i spelet.\r\n\r\n\r\n\r\nGör såhär för att flytta från telefon till iPad (om du inte har tillgång till din telefon för tillfället kan du hoppa direkt till steg 5 och hoppas på att du har en automatiskt sparad någorlunda färsk profil). \r\n\r\n1) Gå in i Real Racing 2 på telefonen.\r\n\r\n2) Öppna profilen (genom att klicka på ditt användarnamn längst upp till höger)\r\n\r\n3) Välj Player Settings\r\n\r\n4) Tryck på Restore Save, och välj upload för att spara en färsk kopia av profilen i GameCenter.\r\n\r\n5) Ta fram iPaden och öppna Real Racing 2 HD\r\n\r\n6) Ta fram listan över sparade spel (punkt 2-4 ovan)\r\n\r\n7) Välj den senast sparade profilen och tryck på Download.\r\n\r\nDet går självklart att flytta åt andra hållet också. Tyvärr finns det ingen funktion för att kontinuerligt synka profilerna. Det går också bra att spela mot varandra (t.ex. local wifi game) mellan en iPhone med Real Racing 2 och en iPad med Real Racing 2 HD.\r\n\r\n![Bild](http://tekniken.nu/uploads/634419134586970237-real-Reacing-2-HD.jpg)", + "html": "Real Racing 2 är ett av de bästa spelen överhuvud taget på iPhone (precis som föregångaren Real Racing). För iPad finns en särskilt anpassad version som heter Real Racing 2 HD. För att komplicera det lite så är det samma spel med bättre grafik men ändå inte samma. Man hamnar inte i samma topplista på GameCenter t.ex. En sak som man däremot kan göra är att importera profilen mellan spelen - så alla de timmar du har lagt ner på att tjäna miljoner dollar och låsa upp alla bilar och banor är inte förgäves om du byter plattform. Det hela sköts via GameCenter så du måste ha slagit på den funktionen i spelet.
Gör såhär för att flytta från telefon till iPad (om du inte har tillgång till din telefon för tillfället kan du hoppa direkt till steg 5 och hoppas på att du har en automatiskt sparad någorlunda färsk profil).
1) Gå in i Real Racing 2 på telefonen.
2) Öppna profilen (genom att klicka på ditt användarnamn längst upp till höger)
3) Välj Player Settings
4) Tryck på Restore Save, och välj upload för att spara en färsk kopia av profilen i GameCenter.
5) Ta fram iPaden och öppna Real Racing 2 HD
6) Ta fram listan över sparade spel (punkt 2-4 ovan)
7) Välj den senast sparade profilen och tryck på Download.
Det går självklart att flytta åt andra hållet också. Tyvärr finns det ingen funktion för att kontinuerligt synka profilerna. Det går också bra att spela mot varandra (t.ex. local wifi game) mellan en iPhone med Real Racing 2 och en iPad med Real Racing 2 HD.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Använd din Real Racing 2-profil på både iPhone och iPad", + "meta_description": "", + "author_id": 6, + "created_at": 1307545500000, + "created_by": 6, + "updated_at": 1307545500000, + "updated_by": 6, + "published_at": 1307545500000, + "published_by": 6 + }, + { + "id": 562, + "title": "Equalify - integrerad equalizer till Spotify", + "slug": "equalify---integrerad-equalizer-till-spotify", + "markdown": "\r\nFör oss som lyssnar på Spotify hela dagarna är det rätt irriterande att man inte kan ställa in ljudet. Med endast volymkontroll är det svårt att kompensera för basfattiga lurar eller en dator med dåligt driv i ljudutgången som gör maxvolymen för låg (eller jobbigt brusig/störig på högre volym).\r\n\r\nNu finns det en grafisk equalizer som integrerar sig helt i Spotify-klienten:http://www.equalify.me/. Man kan både ändra frekvensbanden individuellt och förstärka hela signalen.\r\n\r\n\r\n\r\nDen är gratis och superlätt att installera! Finns dock bara för Windows.\r\n![Bild](http://tekniken.nu/uploads/634509025023294730-image001.png@01CC6BD1.BC92B590__image001.png)", + "html": "För oss som lyssnar på Spotify hela dagarna är det rätt irriterande att man inte kan ställa in ljudet. Med endast volymkontroll är det svårt att kompensera för basfattiga lurar eller en dator med dåligt driv i ljudutgången som gör maxvolymen för låg (eller jobbigt brusig/störig på högre volym).
Nu finns det en grafisk equalizer som integrerar sig helt i Spotify-klienten:http://www.equalify.me/. Man kan både ändra frekvensbanden individuellt och förstärka hela signalen.
Den är gratis och superlätt att installera! Finns dock bara för Windows.",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "Equalify - integrerad equalizer till Spotify",
+ "meta_description": "",
+ "author_id": 6,
+ "created_at": 1315832040000,
+ "created_by": 6,
+ "updated_at": 1315832040000,
+ "updated_by": 6,
+ "published_at": 1315832040000,
+ "published_by": 6
+ },
+ {
+ "id": 564,
+ "title": "Scrolla upp eller ner?",
+ "slug": "scrolla-upp-eller-ner",
+ "markdown": "\r\n\r\nI nya Mac OS X Lion har Apple bestämt sig för att att byta riktning på scrollhjulet och infört s.k. ”natural scroll”. Om man som jag och många andra använder Mac hemma och Windows på jobbet innebär det att man scrollar fel på måndagar och lördagar. \r\n\r\nI längden kommer detta (förhoppningsvis?) ha rett ut sig så att man enas om ett sätt att scrolla och frågan är då: vad är rätt? Vilken riktning hoppas vi kommer överleva?\r\n\r\nSkälet till att man scrollar ner för att komma längre ner i dokumentet är ju från början för att man hade en markör i DOS som man styrde runt i sitt dokument. Denna analogi finns fortfarande kvar men i och med att folk mer använder touchpads och iphones, ipads där en markör inte längre existerar blir det mer naturligt att flytta dokumentet upp och ner än att flytta en markör ner och upp.\r\n\r\nDen intressanta frågan blir alltså: kommer Windows 8 innehålla markörer och scrollbars eller kommer de också gå över till touchpads och touchmöss och därmed byta riktning på scrollhjulet?\r\n\r\nEller är detta en personlig fråga på samma sätt som ”Invert mouse” är i dataspel? Eller som ”goofy” på skateboard eller vänsterspel i golf? Eller samma som att trycka på Upp i hissen när man vill att den ska komma ner (vilket är korrekt eftersom Upp-knappen betyder att man är på väg upp även om man vill att hissen ska komma ner). ;)\r\n\r\n\r\n\r\n\r\n\r\n\r\nUPPDATERING: Eftersom Windows-8 precis har släppts i preview kan vi konstatera att än så länge har inte Microsoft hängt på Apples initiativ att vända på hållet man skrollar, dock finns inte längre någon traditionell rullningslist (tråkig men officiell översättning av ordet scrollbar, men som ni läser försvinner den ändå snart så ingen fara ;).\r\n\r\n\r\n\r\n\r\n\r\nTill höger ser ni nya rullningslisten som väldigt mycket liknar den i iOS och Mac OS X Lion. Men till skillnad från Apple har Microsoft inte valt att byta håll på rullningen (än?)\r\n\r\n![Bild](http://tekniken.nu/uploads/634515259639879117-image001.jpg@01CC713B.13592440__image001.jpg)",
+ "html": "
I nya Mac OS X Lion har Apple bestämt sig för att att byta riktning på scrollhjulet och infört s.k. ”natural scroll”. Om man som jag och många andra använder Mac hemma och Windows på jobbet innebär det att man scrollar fel på måndagar och lördagar.
I längden kommer detta (förhoppningsvis?) ha rett ut sig så att man enas om ett sätt att scrolla och frågan är då: vad är rätt? Vilken riktning hoppas vi kommer överleva?
Skälet till att man scrollar ner för att komma längre ner i dokumentet är ju från början för att man hade en markör i DOS som man styrde runt i sitt dokument. Denna analogi finns fortfarande kvar men i och med att folk mer använder touchpads och iphones, ipads där en markör inte längre existerar blir det mer naturligt att flytta dokumentet upp och ner än att flytta en markör ner och upp.
Den intressanta frågan blir alltså: kommer Windows 8 innehålla markörer och scrollbars eller kommer de också gå över till touchpads och touchmöss och därmed byta riktning på scrollhjulet?
Eller är detta en personlig fråga på samma sätt som ”Invert mouse” är i dataspel? Eller som ”goofy” på skateboard eller vänsterspel i golf? Eller samma som att trycka på Upp i hissen när man vill att den ska komma ner (vilket är korrekt eftersom Upp-knappen betyder att man är på väg upp även om man vill att hissen ska komma ner). ;)
UPPDATERING: Eftersom Windows-8 precis har släppts i preview kan vi konstatera att än så länge har inte Microsoft hängt på Apples initiativ att vända på hållet man skrollar, dock finns inte längre någon traditionell rullningslist (tråkig men officiell översättning av ordet scrollbar, men som ni läser försvinner den ändå snart så ingen fara ;).
Till höger ser ni nya rullningslisten som väldigt mycket liknar den i iOS och Mac OS X Lion. Men till skillnad från Apple har Microsoft inte valt att byta håll på rullningen (än?)
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Scrolla upp eller ner?", + "meta_description": "", + "author_id": 1087, + "created_at": 1316186760000, + "created_by": 1087, + "updated_at": 1316186760000, + "updated_by": 1087, + "published_at": 1316186760000, + "published_by": 1087 + }, + { + "id": 574, + "title": "Kör AirPlay på din Windows-dator", + "slug": "kor-airplay-pa-din-windows-dator", + "markdown": "\r\n\r\nI nyare versioner av iOS (4.2 och framåt) finns funktionen AirPlay. Den gör att man kan spela upp musik och film från en enhet – en dator, en iPhone, en iPad etc. – på en annan enhet. Denna andra enhet kan vara en dator men även en fristående musikspelare med AirPlay eller i framtiden kanske en TV eller en digitalbox. AirPlay på mottagande enhet har hittills bara funnits på MacOS, men nu finns en open source-applikation för Windows som åtminstone klarar av musikdelen av AirPlay: Shairport4W.\r\n\r\n\r\n\r\nApplikationen är superenkel och kan autostarta med Windows. Så länge man är på samma nät så dyker en ny ikon upp i musikspelare på iPhone där man helt enkelt bara väljer sin AirPlay-server. För mig som har en autoinloggande HTPC kopplad till hemmastereon är detta perfekt, man trycker igång den och behöver inte starta TV:n alls. AirPlay funkar bra med iPod-appen på telefonen och även Spotify. Har man kopplat en app till AirPlay så verkar andra appar fortsätta använda det för att spela ljud (t.ex. Safari, SoundCloud och DropBox). Shairport4W är inte 100% stabil i nuläget verkar det som, när ens telefon en gång tappar kopplingen så verkar det svårt att koppla upp igen utan att starta om applikationen. Det löser sig säkert med tiden.\r\n\r\n![Bild](http://tekniken.nu/uploads/634540269031699519-image001.jpg)", + "html": "I nyare versioner av iOS (4.2 och framåt) finns funktionen AirPlay. Den gör att man kan spela upp musik och film från en enhet – en dator, en iPhone, en iPad etc. – på en annan enhet. Denna andra enhet kan vara en dator men även en fristående musikspelare med AirPlay eller i framtiden kanske en TV eller en digitalbox. AirPlay på mottagande enhet har hittills bara funnits på MacOS, men nu finns en open source-applikation för Windows som åtminstone klarar av musikdelen av AirPlay: Shairport4W.
Applikationen är superenkel och kan autostarta med Windows. Så länge man är på samma nät så dyker en ny ikon upp i musikspelare på iPhone där man helt enkelt bara väljer sin AirPlay-server. För mig som har en autoinloggande HTPC kopplad till hemmastereon är detta perfekt, man trycker igång den och behöver inte starta TV:n alls. AirPlay funkar bra med iPod-appen på telefonen och även Spotify. Har man kopplat en app till AirPlay så verkar andra appar fortsätta använda det för att spela ljud (t.ex. Safari, SoundCloud och DropBox). Shairport4W är inte 100% stabil i nuläget verkar det som, när ens telefon en gång tappar kopplingen så verkar det svårt att koppla upp igen utan att starta om applikationen. Det löser sig säkert med tiden.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Kör AirPlay på din Windows-dator", + "meta_description": "", + "author_id": 6, + "created_at": 1318430400000, + "created_by": 6, + "updated_at": 1318430400000, + "updated_by": 6, + "published_at": 1318430400000, + "published_by": 6 + }, + { + "id": 22, + "title": "Larv", + "slug": "larv", + "markdown": null, + "html": null, + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 4, + "created_at": 1181663474000, + "created_by": 4, + "updated_at": 1181663474000, + "updated_by": 4, + "published_at": 1181663474000, + "published_by": 4 + }, + { + "id": 63, + "title": "Digg-modellen vinner mark", + "slug": "digg-modellen-vinner-mark", + "markdown": "\r\n\r\nCollaborative Filtering (ungefär ”gemensamt urval”) är en gammal teori där ett antal användare genom sitt beteende hjälper varandra att hitta rätt information. Amazon och andra e-handelssiters förslag på liknande produkter är en sorts collaborative filtering. På senare tid har en mycket mer direkt och lättbegriplig modell blivit allt populärare. Först ut var tekniknyhetssiten Digg.com. Enkelt beskrivet får vem som helst som är en registrerad användare bidra med länkar till tekniknyheter. Nya bidrag hamnar i en väntekö som är öppen för alla. Om man läser en länkad nyhet som man tycker är bra så trycker man på Digg-knappen bredvid länken, och när tillräckligt många har diggat en länk så uppgraderas den och hamnar på digg.coms förstasida. \r\n![Bild](http://tekniken.nu/uploads/digg.png)\r\nDigg är ett utmärkt exempel på webb 2.0, både i hur man\r\nförhåller sig till användare och användarskapat innehåll, men även i hur man\r\nanvänder modern webbteknik som AJAX.\r\n\r\n \r\n\r\nDigg.com har blivit oerhört populär, och digg-modellen\r\nbörjar nu dyka upp på en mängd andra siter, t.ex. ekositen hugg.com och helt nya svenska modetoppen.se.\r\n\r\n", + "html": "Collaborative Filtering (ungefär ”gemensamt urval”) är en gammal teori där ett antal användare genom sitt beteende hjälper varandra att hitta rätt information. Amazon och andra e-handelssiters förslag på liknande produkter är en sorts collaborative filtering.
På senare tid har en mycket mer direkt och lättbegriplig modell blivit allt populärare. Först ut var tekniknyhetssiten Digg.com. Enkelt beskrivet får vem som helst som är en registrerad användare bidra med länkar till tekniknyheter. Nya bidrag hamnar i en väntekö som är öppen för alla. Om man läser en länkad nyhet som man tycker är bra så trycker man på Digg-knappen bredvid länken, och när tillräckligt många har diggat en länk så uppgraderas den och hamnar på digg.coms förstasida.
Digg är ett utmärkt exempel på webb 2.0, både i hur man
förhåller sig till användare och användarskapat innehåll, men även i hur man
använder modern webbteknik som AJAX.
Digg.com har blivit oerhört populär, och digg-modellen
börjar nu dyka upp på en mängd andra siter, t.ex. ekositen hugg.com och helt nya svenska modetoppen.se.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1186571520000, + "created_by": 6, + "updated_at": 1186571520000, + "updated_by": 6, + "published_at": 1186571520000, + "published_by": 6 + }, + { + "id": 66, + "title": "YouTube lanserar mobilsite", + "slug": "youtube-lanserar-mobilsite", + "markdown": "\r\n\r\n\r\nYouTube har lanserat en mobilanpassad version av sin site: http://m.youtube.com. Om du har en mobiltelefon som klarar RTSP-streaming så fungerar det (funkar t.ex. SVTs mobilvideo så kommer youtube mobile att fungera). Man kan även ladda upp filmer från mobilen genom att skicka MMS. \r\n\r\n\r\nPS. Se upp med mobildata bara – att se videoklipp kan snabbt konsumera mycket trafik, och särskild utomlands kan det bli en mycket dyrbar affär. \r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/youtube-windows-mobile-1.jpg)", + "html": "
YouTube har lanserat en mobilanpassad version av sin site: http://m.youtube.com. Om du har en mobiltelefon som klarar RTSP-streaming så fungerar det (funkar t.ex. SVTs mobilvideo så kommer youtube mobile att fungera). Man kan även ladda upp filmer från mobilen genom att skicka MMS.
PS. Se upp med mobildata bara – att se videoklipp kan snabbt konsumera mycket trafik, och särskild utomlands kan det bli en mycket dyrbar affär.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1184198280000, + "created_by": 6, + "updated_at": 1184198280000, + "updated_by": 6, + "published_at": 1184198280000, + "published_by": 6 + }, + { + "id": 68, + "title": "Sony Ericsson P1i", + "slug": "sony-ericsson-p1i", + "markdown": "\r\n\r\n\r\nI slutet av augusti lanserar Sony Ericsson en ny businesslur som av allt att döma verkar vara en efterföljare till M600; SE P1I. I formfaktor nästan identisk med M600, men denna gång ser vi en 3.2 megapixelkamera på baksidan. Avsaknaden av kamera var för många en showstopper på M600, så det är trevligt att se att SE lyssnat och lärt. Även en liten videosamtalskamera har lagts till på framsidan (för de typ tre personer i världen som någonsin kör videosamtal). En annan skillnad mot M600 är att den även fått en wlan-krets. Summan känns lite som en P990 i ett M600 skal. \r\n\r\n\r\nLite övriga specifikationer: Operativ: Symbian 9.1 (UIQ 3.0)Skärm: 320x240 med 262000 färgerNät: Trippelband med 3G (dock ej EDGE, vilket är lite synd i USA)Radio: BT 2.0, 802.11bEpost: Klient för Microsoft Active SyncStorlek: 106 x 55 x 17Vikt: 124g\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/p1i.png)", + "html": "
I slutet av augusti lanserar Sony Ericsson en ny businesslur som av allt att döma verkar vara en efterföljare till M600; SE P1I. I formfaktor nästan identisk med M600, men denna gång ser vi en 3.2 megapixelkamera på baksidan. Avsaknaden av kamera var för många en showstopper på M600, så det är trevligt att se att SE lyssnat och lärt. Även en liten videosamtalskamera har lagts till på framsidan (för de typ tre personer i världen som någonsin kör videosamtal). En annan skillnad mot M600 är att den även fått en wlan-krets. Summan känns lite som en P990 i ett M600 skal.
Lite övriga specifikationer:
Operativ: Symbian 9.1 (UIQ 3.0)
Skärm: 320x240 med 262000 färger
Nät: Trippelband med 3G (dock ej EDGE, vilket är lite synd i USA)
Radio: BT 2.0, 802.11b
Epost: Klient för Microsoft Active Sync
Storlek: 106 x 55 x 17
Vikt: 124g
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1183978860000, + "created_by": 1085, + "updated_at": 1183978860000, + "updated_by": 1085, + "published_at": 1183978860000, + "published_by": 1085 + }, + { + "id": 69, + "title": "Många rykten om Google-telefon", + "slug": "manga-rykten-om-google-telefon", + "markdown": "\r\n\r\n\r\nDet florerar gott om rykten kring att Google ska börja sälja en egenbrandad mobiltelefon.\r\n\r\n\r\nEnligt Wired, som hänvisar till en hemlig källa inom Google kommer Google-telefonen gPhone att vara Linux-baserad, ha GPS som ska vara kopplat till Google Maps, vara operatörsolåst och vara billig - inspirerad av 100-dollarsdatorn. http://blog.wired.com/monkeybites/2007/08/rumor-google-ph.html\r\n\r\n\r\n \r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/googlephone780039.jpg)\r\n\r\n\r\nGizmodo hänvisar till en hemlig källa inom telefontillverkaren HTC (tidigare känd som QTEK) som tillverkar en mängd operatörsbrandade Windows Mobile-telefoner åt stora operatörer. Enligt denna källa väljer Google just nu bland 20 nya HTC-modeller. Den färdiga telefonen kommer enligt dem att köra Windows Mobile 6 eller Linux, och innehålla ungefär samma funktioner som Wireds källa uppger.http://gizmodo.com/gadgets/rumor/google-phone-confirmed-by-htc-insider-294277.php\r\n\r\n\r\nSjälv är jag lite skeptiskt till hela ryktet - jag ser inte riktigt poängen för Google att börja leverera telefoner. Men konstigare saker har hänt :-).\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/google-phone-1.jpg)", + "html": "
Det florerar gott om rykten kring att Google ska börja sälja en egenbrandad mobiltelefon.
Enligt Wired, som hänvisar till en hemlig källa inom Google kommer Google-telefonen gPhone att vara Linux-baserad, ha GPS som ska vara kopplat till Google Maps, vara operatörsolåst och vara billig - inspirerad av 100-dollarsdatorn. http://blog.wired.com/monkeybites/2007/08/rumor-google-ph.html
Gizmodo hänvisar till en hemlig källa inom telefontillverkaren HTC (tidigare känd som QTEK) som tillverkar en mängd operatörsbrandade Windows Mobile-telefoner åt stora operatörer. Enligt denna källa väljer Google just nu bland 20 nya HTC-modeller. Den färdiga telefonen kommer enligt dem att köra Windows Mobile 6 eller Linux, och innehålla ungefär samma funktioner som Wireds källa uppger.
http://gizmodo.com/gadgets/rumor/google-phone-confirmed-by-htc-insider-294277.php
Själv är jag lite skeptiskt till hela ryktet - jag ser inte riktigt poängen för Google att börja leverera telefoner. Men konstigare saker har hänt :-).
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1188413403000, + "created_by": 6, + "updated_at": 1188413403000, + "updated_by": 6, + "published_at": 1188413403000, + "published_by": 6 + }, + { + "id": 82, + "title": "ObjectDock - för dem med OSX-avund", + "slug": "objectdock---for-dem-med-osx-avund", + "markdown": "\r\n\r\nAvundsjuk på dockan längst ner på skärmen i OSX? Nu kan du\r\nfå en gratis även i Windows! Dockan kan placeras längst upp på skärmen också om\r\nman vill ha kvar det vanliga aktivitetsfältet med startmenyn: \r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/objectdock.png)\r\n\r\nLadda ner på http://www.objectdock.com\r\n\r\n", + "html": "
Avundsjuk på dockan längst ner på skärmen i OSX? Nu kan du
få en gratis även i Windows! Dockan kan placeras längst upp på skärmen också om
man vill ha kvar det vanliga aktivitetsfältet med startmenyn:
Ladda ner på http://www.objectdock.com
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1182173400000, + "created_by": 6, + "updated_at": 1182173400000, + "updated_by": 6, + "published_at": 1182173400000, + "published_by": 6 + }, + { + "id": 89, + "title": "Apple släpper Safari för Windows", + "slug": "apple-slapper-safari-for-windows", + "markdown": "\r\n\r\n\r\n\r\n\r\n\r\nApples egen webbläsare Safari har hittills bara funnits för\r\nMacOS, men släpptes igår i betaversion för Windows. Omdömena på webben är som\r\nvanligt när det gäller Apple-produkter delade i två läger – ena lägret hävdar\r\natt att Safari är blixtsnabb och överlägsen FireFox och Internet Explorer,\r\nandra lägret hävdar att den är så buggig att det är svårt att göra någon\r\nbedömning överhuvud taget. Döm själv, Safari 3.0 beta finns att ladda ner från\r\nApples webbplats, som också precis har fått nytt grafiskt utseende: http://www.apple.com/safari/\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/safari.png)", + "html": "
Apples egen webbläsare Safari har hittills bara funnits för
MacOS, men släpptes igår i betaversion för Windows. Omdömena på webben är som
vanligt när det gäller Apple-produkter delade i två läger – ena lägret hävdar
att att Safari är blixtsnabb och överlägsen FireFox och Internet Explorer,
andra lägret hävdar att den är så buggig att det är svårt att göra någon
bedömning överhuvud taget. Döm själv, Safari 3.0 beta finns att ladda ner från
Apples webbplats, som också precis har fått nytt grafiskt utseende: http://www.apple.com/safari/
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1181643000000, + "created_by": 6, + "updated_at": 1181643000000, + "updated_by": 6, + "published_at": 1181643000000, + "published_by": 6 + }, + { + "id": 91, + "title": "Storskalig kinesisk piratkopiering", + "slug": "storskalig-kinesisk-piratkopiering", + "markdown": "\r\n\r\nDet är inte bara musik- och\r\nmjukvaruindustrin som lider av kinesisk piratikopiering, även lastvagnsjätten\r\nMAN har fått problem sedan kinesiska biltillverkaren Zonta till synes\r\npiratkopierat deras storsäljande bussmodell \"Starliner\". Rättskampen\r\när såklart i full gång... Avgör själv nedan om du ser någon likhet eller\r\nskillnad (orginalet är lite ljusare i färgen, utan VIP-logga):\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/buss1.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/buss2.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/buss3.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/buss4.png)", + "html": "
Det är inte bara musik- och
mjukvaruindustrin som lider av kinesisk piratikopiering, även lastvagnsjätten
MAN har fått problem sedan kinesiska biltillverkaren Zonta till synes
piratkopierat deras storsäljande bussmodell \"Starliner\". Rättskampen
är såklart i full gång... Avgör själv nedan om du ser någon likhet eller
skillnad (orginalet är lite ljusare i färgen, utan VIP-logga):
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1181241960000, + "created_by": 1085, + "updated_at": 1181241960000, + "updated_by": 1085, + "published_at": 1181241960000, + "published_by": 1085 + }, + { + "id": 92, + "title": "HTCs svar på iPhone", + "slug": "htcs-svar-pa-iphone", + "markdown": "\r\n\r\n\r\nInte riktigt lika cool och snygg som iPhone, men visar verkligen potentialen för iPhones goda inverkan på övriga mobiltillverkare och Windows Mobile.\r\n\r\n\r\nTitta på touch-filmen så förstår du hur gränssnittet funkar: http://www.htctouch.com/. Navigeringskuben är riktigt smart!\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/htc_touch.png)", + "html": "
Inte riktigt lika cool och snygg som iPhone, men visar verkligen potentialen för iPhones goda inverkan på övriga mobiltillverkare och Windows Mobile.
Titta på touch-filmen så förstår du hur gränssnittet funkar: http://www.htctouch.com/. Navigeringskuben är riktigt smart!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1181223360000, + "created_by": 6, + "updated_at": 1181223360000, + "updated_by": 6, + "published_at": 1181223360000, + "published_by": 6 + }, + { + "id": 93, + "title": "En ny värld med Microsoft Silverlight", + "slug": "en-ny-varld-med-microsoft-silverlight", + "markdown": "\r\n\r\n\r\nMacromedias (numera Adobes) plattform Flash innebar en revolution för avancerat webbinnehåll. Flash har gjort det möjligt att skapa webbplatser med s.k. \"rika gränssnitt\", helt enkelt funktioner som inte går att göra skapa i HTML - animeringar, ljud, filmer, korrekta typsnitt och mycket annat.\r\n\r\n\r\nNu har Microsoft släppt sin konkurrerande plattform Silverlight. Silverlight är mer än bara en konkurrent till Flash - det har potential att starta en ny gränssnittsrevolution på webben.\r\n\r\n\r\n\r\nNågra godbitar som gör att Silverlight känns mer spännande än Flash:\r\n\r\n\r\n\r\n\r\nSilverlight är sammankopplat med Microsofts utvecklingsmiljö Visual Studio, vilket gör det enklare för .NET-programmerare att utveckla \"rika gränssnitt\". Behovet av extremt specialiserade Flash-programmerare blir inte lika stort, man kan instället arbeta i vanliga teamkonstellationer med formgivare och programmerare.\r\nSilverlight stödjer Windows gränssnittsspråk XAML, vilket gör det enkelt att utveckla riktiga applikationer som körs på webben.\r\nSilverlight-animeringar baseras på tid (\"något ska hända efter 1,12 sekunder\") istället för baserad på animeringsrutor som i Flash (\"16 rutor in\") vilket gör det mycket enklare att få saker att fungera likadant på olika kraftfulla datorer.\r\nSilverlights filer är i XML-format istället för binära som i Flash, vilket bland annat gör det möjligt att skapa Silverlight-objekt på servern utan att man behöver installera extra serverkomponenter. Det gör det också möjligt att precis som med HTML skapa Silverlight-applikationer \"för hand\" om man inte vill installera Visual Studio.\r\n\r\n\r\nSilverlight stödjer uppspelning av HD-video (Adobe har meddelat att Flash kommer att stödja HD inom kort) \r\n\r\n\r\nMånga av funktionerna har hårdvaruacceleration, vilket gör att allt kommer flyta på extra bra om din dator har ett bra grafikkort. \r\n\r\nEn ny version är redan på gång - version 1.1, som än så länge finns i testversion - med massor av nyheter. De två största är utökat stöd för XAML med gränssnittselement som fönster, textboxar, knappar o.s.v, och stöd för att programmera i C# vilket kommer att göra det ännu enklare för .NET-programmerare.\r\n\r\n\r\nVi tror att vi inom kort kommer att få se en mängd nya applikationer på webben, först ut säkerligen spel och mediespelare av olika slag men ganska snart riktiga applikationer. Google kan få sig en match på Apps-fronten, tänk dig t.ex. en webbaserad ordbehandlare som faktiskt funkar som Word. \r\n\r\n\r\nFör den som är .NET-utvecklare är fördelarna uppenbara. För alla andra kommer den verkligt stora fördelen med Silverlight vara att det plötsligt finns konkurrens inom området rika gränssnitt på webben, och att fler kommer att kunna skapa rika gränssnitt. Om man ser till vilken skjuts i utveckling FireFox bidrog till på webbläsarfronten tror jag att den kommande tiden kommer att bli riktigt spännande.\r\n\r\n\r\nLadda ner Silverlight här: http://www.microsoft.com/silverlight/install.aspx\r\nMicrosoft i Slovenien har byggt en riktigt cool \"Vistasimulator\" som visar lite vad Silverlight går för: http://www.windowsvista.si\r\n![Bild](http://tekniken.nu/uploads/silverlight.jpg)", + "html": "
Macromedias (numera Adobes) plattform Flash innebar en revolution för avancerat webbinnehåll. Flash har gjort det möjligt att skapa webbplatser med s.k. \"rika gränssnitt\", helt enkelt funktioner som inte går att göra skapa i HTML - animeringar, ljud, filmer, korrekta typsnitt och mycket annat.
Nu har Microsoft släppt sin konkurrerande plattform Silverlight. Silverlight är mer än bara en konkurrent till Flash - det har potential att starta en ny gränssnittsrevolution på webben.
Några godbitar som gör att Silverlight känns mer spännande än Flash:
- Silverlight är sammankopplat med Microsofts utvecklingsmiljö Visual Studio, vilket gör det enklare för .NET-programmerare att utveckla \"rika gränssnitt\". Behovet av extremt specialiserade Flash-programmerare blir inte lika stort, man kan instället arbeta i vanliga teamkonstellationer med formgivare och programmerare.
- Silverlight stödjer Windows gränssnittsspråk XAML, vilket gör det enkelt att utveckla riktiga applikationer som körs på webben.
- Silverlight-animeringar baseras på tid (\"något ska hända efter 1,12 sekunder\") istället för baserad på animeringsrutor som i Flash (\"16 rutor in\") vilket gör det mycket enklare att få saker att fungera likadant på olika kraftfulla datorer.
- Silverlights filer är i XML-format istället för binära som i Flash, vilket bland annat gör det möjligt att skapa Silverlight-objekt på servern utan att man behöver installera extra serverkomponenter. Det gör det också möjligt att precis som med HTML skapa Silverlight-applikationer \"för hand\" om man inte vill installera Visual Studio.
- Silverlight stödjer uppspelning av HD-video (Adobe har meddelat att Flash kommer att stödja HD inom kort)
- Många av funktionerna har hårdvaruacceleration, vilket gör att allt kommer flyta på extra bra om din dator har ett bra grafikkort.
- En ny version är redan på gång - version 1.1, som än så länge finns i testversion - med massor av nyheter. De två största är utökat stöd för XAML med gränssnittselement som fönster, textboxar, knappar o.s.v, och stöd för att programmera i C# vilket kommer att göra det ännu enklare för .NET-programmerare.
Vi tror att vi inom kort kommer att få se en mängd nya applikationer på webben, först ut säkerligen spel och mediespelare av olika slag men ganska snart riktiga applikationer. Google kan få sig en match på Apps-fronten, tänk dig t.ex. en webbaserad ordbehandlare som faktiskt funkar som Word.
För den som är .NET-utvecklare är fördelarna uppenbara. För alla andra kommer den verkligt stora fördelen med Silverlight vara att det plötsligt finns konkurrens inom området rika gränssnitt på webben, och att fler kommer att kunna skapa rika gränssnitt. Om man ser till vilken skjuts i utveckling FireFox bidrog till på webbläsarfronten tror jag att den kommande tiden kommer att bli riktigt spännande.
Ladda ner Silverlight här: http://www.microsoft.com/silverlight/install.aspx
Microsoft i Slovenien har byggt en riktigt cool \"Vistasimulator\" som visar lite vad Silverlight går för: http://www.windowsvista.si", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1189071180000, + "created_by": 6, + "updated_at": 1189071180000, + "updated_by": 6, + "published_at": 1189071180000, + "published_by": 6 + }, + { + "id": 94, + "title": "Nya Ipods", + "slug": "nya-ipods", + "markdown": "\r\n\r\n\r\nPå Apples keynote igår presenterade Steve jobs tre nya eller uppdaterade iPods:\r\n\r\n\r\niPod Classic - en modell som ser ut som den första, vita iPoden som kom, men uppdaterad med video och en hårddisk på upp till 160 GB.\r\niPod Nano - en ny Nano med större skärm och video, flashminne på upp till 8 GB\r\niPod Touch - den på förhand mest omtalade, men inte förrän nu officiellt bekräfta modellen. Till utseende och storlek väldigt lik iPhone, en iPhone utan telefon helt enkelt. Har multitouch, WLAN, webbläsare, video och minne upp till 16 GB.\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/ipods.png)", + "html": "
På Apples keynote igår presenterade Steve jobs tre nya eller uppdaterade iPods:
- iPod Classic - en modell som ser ut som den första, vita iPoden som kom, men uppdaterad med video och en hårddisk på upp till 160 GB.
- iPod Nano - en ny Nano med större skärm och video, flashminne på upp till 8 GB
- iPod Touch - den på förhand mest omtalade, men inte förrän nu officiellt bekräfta modellen. Till utseende och storlek väldigt lik iPhone, en iPhone utan telefon helt enkelt. Har multitouch, WLAN, webbläsare, video och minne upp till 16 GB.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1189094940000, + "created_by": 6, + "updated_at": 1189094940000, + "updated_by": 6, + "published_at": 1189094940000, + "published_by": 6 + }, + { + "id": 95, + "title": "Microsoft Popfly™", + "slug": "microsoft-popfly", + "markdown": "\r\n\r\nUtvecklarna på Microsoft arbetar på en webbtjänst som de kallar för Popfly. Det handlar framförallt om en dynamisk Mashup-generator som via webservices låter användaren själv integrera olika webbtjänster. Användaren kan via ett snyggt Silverlightgränssnitt länka in olika byggblock, högnivåkoda lite och generera egna mashups. Popfly innehåller också en motor för att skapa webbsidor, men det känns inte i närheten lika nyskapande.\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/popfly1.png)\r\n\r\nI teorin skall man alltså tex kunna skapa en roterande boll\r\nmed fotografier på dem som mailat dig senaste dagen genom att länka in en\r\nHotmail-, Facebook- och Photosphere koppling. Eller varför inte koppla ihop\r\ngoogle maps med nyhetsflödet från CNN för att i realtid kunna se vad som händer\r\nvar i världen.\r\n\r\nProjektet befinner sig ännu på alfastadiet, men man kan\r\nregistrera sig för att tävla om de invites som lottas ut.\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/popfly2.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/popfly3.png)", + "html": "
Utvecklarna på Microsoft arbetar på en webbtjänst som de kallar för Popfly. Det handlar framförallt om en dynamisk Mashup-generator som via webservices låter användaren själv integrera olika webbtjänster. Användaren kan via ett snyggt Silverlightgränssnitt länka in olika byggblock, högnivåkoda lite och generera egna mashups. Popfly innehåller också en motor för att skapa webbsidor, men det känns inte i närheten lika nyskapande.
I teorin skall man alltså tex kunna skapa en roterande boll
med fotografier på dem som mailat dig senaste dagen genom att länka in en
Hotmail-, Facebook- och Photosphere koppling. Eller varför inte koppla ihop
google maps med nyhetsflödet från CNN för att i realtid kunna se vad som händer
var i världen.
Projektet befinner sig ännu på alfastadiet, men man kan
registrera sig för att tävla om de invites som lottas ut.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "ande boll med bilder på de som har mailat dig under dagen genom att koppla ihop Hotmail, FaceBook och Photosphere?", + "author_id": 1085, + "created_at": 1189176840000, + "created_by": 1085, + "updated_at": 1189176840000, + "updated_by": 1085, + "published_at": 1189176840000, + "published_by": 1085 + }, + { + "id": 98, + "title": "Köp inte iPhone i USA!", + "slug": "kop-inte-iphone-i-usa", + "markdown": "\r\n\r\nOm du är sugen på att köpa en iPhone i USA så kan du redan\r\nnu börja tänka om. Om man ska tro rykten som går runt på nätet just nu planeras\r\ndet nämligen i november lansering av den europeiska versionen av iPhone, som dessutom ska stöda HSDPA (även känt i Sverige som turbo-3G) vilket ger en nedladdningshastighet på 3,6Mbit/s i\r\ntelefonen. Europeiska versionen av iPhone kommer även ha 16 GB inbyggt minne till skillnad från 8GB\r\nför den amerikanska modellen vilket ökar ha-begäret ytterligare för oss\r\nteknikälskare.\r\n\r\nUppgifterna är än så länge obekräftade och kommer efter att\r\nnyfikna surfare hade hittat opublicerade bilder på webbservern hos tyska\r\ntelekombolaget T-Mobile. \r\n\r\nVi är väldigt nyfikna på vilken av de svenska\r\nmobiloperatörerna som först kommer lansera telefonen. \r\n\r\nKälla: http://www.electronista.com/articles/07/09/08/t.mobile.germany.ad/\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/iphone_ad.png)", + "html": "
Om du är sugen på att köpa en iPhone i USA så kan du redan
nu börja tänka om. Om man ska tro rykten som går runt på nätet just nu planeras
det nämligen i november lansering av den europeiska versionen av iPhone, som dessutom ska stöda HSDPA (även känt i Sverige som turbo-3G) vilket ger en nedladdningshastighet på 3,6Mbit/s i
telefonen. Europeiska versionen av iPhone kommer även ha 16 GB inbyggt minne till skillnad från 8GB
för den amerikanska modellen vilket ökar ha-begäret ytterligare för oss
teknikälskare.
Uppgifterna är än så länge obekräftade och kommer efter att
nyfikna surfare hade hittat opublicerade bilder på webbservern hos tyska
telekombolaget T-Mobile.
Vi är väldigt nyfikna på vilken av de svenska
mobiloperatörerna som först kommer lansera telefonen.
Källa: http://www.electronista.com/articles/07/09/08/t.mobile.germany.ad/
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "i de svenska mobilnäten. Det finns dock mycket goda skäl att vänta!", + "author_id": 1087, + "created_at": 1189444620000, + "created_by": 1087, + "updated_at": 1189444620000, + "updated_by": 1087, + "published_at": 1189444620000, + "published_by": 1087 + }, + { + "id": 99, + "title": "Facebook för iPhone", + "slug": "facebook-for-iphone", + "markdown": "\r\n\r\nFacebook har släppt ett mobilgränssnitt av sin site\r\nspeciellt för Apple Iphone som tydligt visar hur mycket mer avancerad\r\näppellurens webbläsare är jämfört med motsvarigheterna i Symbian och Windows\r\nMobile.\r\n\r\nIphonevarianten finns på iphone.facebook.com.\r\n\r\n(Fungerar fint att testa i Firefox om du inte har en Iphone,\r\nser dock inget vidare ut i IE.)\r\n\r\nVi som inte har en Iphone får hålla till godo med m.facebook.com för vårt mobila Facebookande.\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/facebook-logo.jpg)\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n", + "html": "
Facebook har släppt ett mobilgränssnitt av sin site
speciellt för Apple Iphone som tydligt visar hur mycket mer avancerad
äppellurens webbläsare är jämfört med motsvarigheterna i Symbian och Windows
Mobile.
Iphonevarianten finns på iphone.facebook.com.
(Fungerar fint att testa i Firefox om du inte har en Iphone,
ser dock inget vidare ut i IE.)
Vi som inte har en Iphone får hålla till godo med m.facebook.com för vårt mobila Facebookande.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1189533600000, + "created_by": 1085, + "updated_at": 1189533600000, + "updated_by": 1085, + "published_at": 1189533600000, + "published_by": 1085 + }, + { + "id": 100, + "title": "5 skäl till att Google Analytics är världsbäst på webbstatistik", + "slug": "5-skal-till-att-google-analytics-ar-varldsbast-pa-webbstatistik", + "markdown": "\r\n\r\n\r\nFör att börja använda Google Analytics på din webbplats så registrerar du ett konto på Google och loggar in på analytics.google.com. Har du redan ett GMail-konto kan du använda det. När du har registrerat din site får du en kort javascript-kodsnutt som du ska klistra in i din webbsida. Inga installationer, inga komponenter på servern, inga loggfiler etc.\r\n\r\n\r\nAndra statistikverktyg har ofta mängder av obegripliga rapporter. Google Analytics har en mängd enkla rapporter som man kan använda direkt, men man kan också gå på djupet och skapa egna rapporter. En av de bästa funktionerna är att man kan sätt upp mål som verktyget sedan följer upp. Ett mål kan bestå i t.ex. hur många besökare som tar sig igenom sidorna i en köpprocess eller hur många som går från startsidan till att prenumerera på ett nyhetsbrev.\r\n\r\n\r\nMina två favoritfunktioner i Google Analytics är Map Overlay och Site Overlay. Map Overlay visar ner på stadsnivå varifrån dina besökare kommer i världen. Site Overlay visar din site och lägger ovanpå ett lager med diagram över vilka länkar besökarna klickar mest på.\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/mapoverlay.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/siteoverlay.png)\r\n\r\n\r\nPrecis som alla Googles andra webbtjänster är Analytics byggd med Webb 2.0-teknik. Ajaxfunktioner gör att uppslagningar, ändringar av intervall, byta diagramtyp o.s.v. görs utan sidomladdningar och väldigt smidigt för användaren.\r\n\r\n\r\n\r\n\r\nEn tjänst blir inte bra bara för att den är gratis, ibland tvärt om. Men en tjänst som är riktigt bra blir ännu bättre när den inte kostar något.\r\n\r\n", + "html": "
För att börja använda Google Analytics på din webbplats så registrerar du ett konto på Google och loggar in på analytics.google.com. Har du redan ett GMail-konto kan du använda det. När du har registrerat din site får du en kort javascript-kodsnutt som du ska klistra in i din webbsida. Inga installationer, inga komponenter på servern, inga loggfiler etc.
Andra statistikverktyg har ofta mängder av obegripliga rapporter. Google Analytics har en mängd enkla rapporter som man kan använda direkt, men man kan också gå på djupet och skapa egna rapporter. En av de bästa funktionerna är att man kan sätt upp mål som verktyget sedan följer upp. Ett mål kan bestå i t.ex. hur många besökare som tar sig igenom sidorna i en köpprocess eller hur många som går från startsidan till att prenumerera på ett nyhetsbrev.
Mina två favoritfunktioner i Google Analytics är Map Overlay och Site Overlay. Map Overlay visar ner på stadsnivå varifrån dina besökare kommer i världen. Site Overlay visar din site och lägger ovanpå ett lager med diagram över vilka länkar besökarna klickar mest på.
Precis som alla Googles andra webbtjänster är Analytics byggd med Webb 2.0-teknik. Ajaxfunktioner gör att uppslagningar, ändringar av intervall, byta diagramtyp o.s.v. görs utan sidomladdningar och väldigt smidigt för användaren.
En tjänst blir inte bra bara för att den är gratis, ibland tvärt om. Men en tjänst som är riktigt bra blir ännu bättre när den inte kostar något.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1189598280000, + "created_by": 6, + "updated_at": 1189598280000, + "updated_by": 6, + "published_at": 1189598280000, + "published_by": 6 + }, + { + "id": 107, + "title": "Officiellt besked: Ingen 3G i Europa-iPhone", + "slug": "officiellt-besked-ingen-3g-i-europa-iphone", + "markdown": "\r\n\r\nApple höll imorse presskonferens i\r\nLondon angående UK-lanseringen av iPhone, och tyvärr blev det officiellt att\r\ntelefonen inte heller på den europeiska marknaden kommer att förses med\r\n3G-kretsar.\r\n\r\nAnledningen till detta är enligt\r\nSteve Jobs att dagens 3G-kretsar helt enkelt drar för mycket batteri, något som\r\nde inte var beredda att offra. Apple kommer istället att satsa på samma\r\nGPRS/Edge teknik som man använder i USA, i kombination med WiFi. I de brittiska\r\nabonnemangen, som erbjuds exklusivt via operatören O2, ingår såväl fri GPRS/EDGE-data\r\nsamt tillgång till WiFi via 7 000 hotspots i landet. Grundpriset på iPhone i\r\nStorbritannien antyds ligga på c:a £269 (motsvarande c:a 3 700 kr).\r\n\r\nSteve Jobs uteslöt dock inte\r\n3G-stöd i kommande versioner av iPhone, förutsatt att nya energisnålare\r\nkretsar utvecklas.\r\n\r\nBild:\r\n\r\n\r\nhttp://www.riskinit.com/images/misc/thumbs/iphone377.jpg\r\n\r\n\r\nEngadgets reportage från\r\npresskonferensen:\r\n\r\n\r\nhttp://www.engadget.com/2007/09/18/live-from-apples-mum-is-no-longer-the-word-event-in-london/\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/iphone-no3g.png)", + "html": "
Apple höll imorse presskonferens i
London angående UK-lanseringen av iPhone, och tyvärr blev det officiellt att
telefonen inte heller på den europeiska marknaden kommer att förses med
3G-kretsar.
Anledningen till detta är enligt
Steve Jobs att dagens 3G-kretsar helt enkelt drar för mycket batteri, något som
de inte var beredda att offra. Apple kommer istället att satsa på samma
GPRS/Edge teknik som man använder i USA, i kombination med WiFi. I de brittiska
abonnemangen, som erbjuds exklusivt via operatören O2, ingår såväl fri GPRS/EDGE-data
samt tillgång till WiFi via 7 000 hotspots i landet. Grundpriset på iPhone i
Storbritannien antyds ligga på c:a £269 (motsvarande c:a 3 700 kr).
Steve Jobs uteslöt dock inte
3G-stöd i kommande versioner av iPhone, förutsatt att nya energisnålare
kretsar utvecklas.
Bild:
http://www.riskinit.com/images/misc/thumbs/iphone377.jpg
Engadgets reportage från
presskonferensen:
http://www.engadget.com/2007/09/18/live-from-apples-mum-is-no-longer-the-word-event-in-london/
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1190117100000, + "created_by": 1085, + "updated_at": 1190117100000, + "updated_by": 1085, + "published_at": 1190117100000, + "published_by": 1085 + }, + { + "id": 108, + "title": "Veckans fråga: Resultat!", + "slug": "veckans-fraga-resultat", + "markdown": "\r\n\r\n\r\nPå TV - varför ändra ett vinnande lag?: 14\r\nItunes eller annan laglig nedladdningstjänst: 3\r\nAnnat: 35\r\nAntal som svarat: 44\r\n\r\n\r\n\r\n(Detta var en flervalsfråga där man kunde välja flera alternativ, därför blir inte summan av antalet svarande samma som summan av svaren).\r\n\r\n\r\n\r\nIngen överraskning direkt... Att Itunes och andra lagliga nedladdningstjänster kommer så lågt beror antagligen på att det inte finns några tjänster riktade till svenska marknaden. För att få köpa TV-serier på Itunes måste man t.ex. ha ett amerikanskt kreditkort. Nu har dessutom NBC dragit tillbaka sina serier från Itunes, så de går inte att köpa alls.\r\n\r\n\r\nNär kommer vettiga lagliga alternativ?\r\n\r\n", + "html": "
- På TV - varför ändra ett vinnande lag?: 14
- Itunes eller annan laglig nedladdningstjänst: 3
- Annat: 35
- Antal som svarat: 44
(Detta var en flervalsfråga där man kunde välja flera alternativ, därför blir inte summan av antalet svarande samma som summan av svaren).
Ingen överraskning direkt... Att Itunes och andra lagliga nedladdningstjänster kommer så lågt beror antagligen på att det inte finns några tjänster riktade till svenska marknaden. För att få köpa TV-serier på Itunes måste man t.ex. ha ett amerikanskt kreditkort. Nu har dessutom NBC dragit tillbaka sina serier från Itunes, så de går inte att köpa alls.
När kommer vettiga lagliga alternativ?
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1190124000000, + "created_by": 6, + "updated_at": 1190124000000, + "updated_by": 6, + "published_at": 1190124000000, + "published_by": 6 + }, + { + "id": 113, + "title": "Bevaka Blocket med RSS", + "slug": "bevaka-blocket-med-rss", + "markdown": "\r\n\r\nAtt Sveriges största annonsmarknad, Blocket, saknar RSS-bevakningar\r\när något som jag stört mig på länge. Som tur är verkar några utvecklare ha\r\nstört sig på samma sak och tagit saken i egna händer. Resultatet är en mycket\r\nväl fungerande RSS-bevakarare som man själv kan skräddarsy: den ännu ganska\r\nsparsmakade somrss.se. Dock kan man ännu inte kombinera fler sökningar i samma\r\nRSS, men det är ett mindre problem om man har en bra RSS-läsare.\r\n\r\nBlocket: Inse att detta är kanon och köp upp funktionen!\r\n\r\n\r\nhttp://somrss.se/\r\n\r\n\r\n\r\n\r\n\r\n\r\nTyvärr verkar Blocket ha spärrat möjligheten att skapa dessa RSS-länkar via somrss.se. Dock har bloggbesökaren Jonas knåpat en egen RSS-generator för blocket med hjälp av Yahoo Pipes, vilket vi tackar och bockar för!http://pipes.yahoo.com/jonas/blocket\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/rss-3d.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/blocketrss.png)", + "html": "
Att Sveriges största annonsmarknad, Blocket, saknar RSS-bevakningar
är något som jag stört mig på länge. Som tur är verkar några utvecklare ha
stört sig på samma sak och tagit saken i egna händer. Resultatet är en mycket
väl fungerande RSS-bevakarare som man själv kan skräddarsy: den ännu ganska
sparsmakade somrss.se. Dock kan man ännu inte kombinera fler sökningar i samma
RSS, men det är ett mindre problem om man har en bra RSS-läsare.
Blocket: Inse att detta är kanon och köp upp funktionen!
http://pipes.yahoo.com/jonas/blocket
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "ng!", + "author_id": 1085, + "created_at": 1190376000000, + "created_by": 1085, + "updated_at": 1190376000000, + "updated_by": 1085, + "published_at": 1190376000000, + "published_by": 1085 + }, + { + "id": 119, + "title": "Resultat: Veckans fråga!", + "slug": "resultat-veckans-fraga", + "markdown": "\r\n\r\n\r\nTid över för att labba på Microsoft Silverlight: 11\r\nWindows Server 2008: 4\r\nAtt Dexter ska börja på svensk TV: 4\r\nAntal som svarat: 19\r\n\r\n\r\nUppenbarligen fler än jag som tycker att Silverlight känns hetast just nu! Jag hoppas dock att ni redan har sett eller kommer att se Dexter, som är årets bästa TV-serier ihop med Heroes.\r\n\r\n", + "html": "
- Tid över för att labba på Microsoft Silverlight: 11
- Windows Server 2008: 4
- Att Dexter ska börja på svensk TV: 4
- Antal som svarat: 19
Uppenbarligen fler än jag som tycker att Silverlight känns hetast just nu! Jag hoppas dock att ni redan har sett eller kommer att se Dexter, som är årets bästa TV-serier ihop med Heroes.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1191254400000, + "created_by": 6, + "updated_at": 1191254400000, + "updated_by": 6, + "published_at": 1191254400000, + "published_by": 6 + }, + { + "id": 121, + "title": "Svensk site för laglig DVD-nedladdning närmar sig lansering", + "slug": "svensk-site-for-laglig-dvd-nedladdning-narmar-sig-lansering", + "markdown": "\r\n\r\n\r\n\r\n\r\n\r\nStockholmsbaserade företaget Headweb ligger i startgroparna\r\nför att lansera sin webbtjänst som skall förse oss konsumenter med en möjlighet att\r\nlagligt köpa och ladda ner DVD-filmer utan DRM (Digital Rights Management - digitalt kopieringsskydd).\r\n\r\nHeadwebs teknik skiljer sig en hel del mot tidigare\r\nsatsningar inom området, framförallt genom att inte begränsa användarens\r\nmöjlighet att spela upp filmen med krångliga DRM-lösningar. För att begränsa\r\nolaglig spridning kommer istället varje kunds kopia av filmen att göras unik\r\nmed hjälp av digital vattenmärkning. Väl köpta och nedladdade kan man antingen\r\nse filmerna direkt i datorn eller bränna dem till DVD och se på dem i sin\r\nhemmabioanläggning.\r\n\r\nDen mest intressanta delen av tjänsten är dock\r\ndistributionen, som baserats helt på Bit Torrent-teknik. Här har man vänt\r\nfildelningstekniken till sin fördel och uppmuntrar kunderna att göra sina köpta\r\nfiler tillgängliga för andra kunder genom ett bonussystem. Headwebs\r\ntrackermjukvara håller koll på hur mycket data du delat med dig av och\r\növersätter datamängden till poäng som du kan använda för att köpa filmer. Smart\r\nom det fungerar!\r\n\r\nDet stora problemet jag ser inför release är som vanligt\r\nutbudet. Headweb säger enligt IDG att c:a 500 titlar\r\nskall finnas tillgängliga vid release, men att det mest rör sig om svensk och\r\neuropeisk film. De stora amerikanska bolagen verkar vilja se att allt fungerar\r\ninnan de ger sig in i leken.\r\n\r\nSpännande angreppsätt på ett krångligt problem, vi följer\r\nmed spänning och ser om det blir Headweb som först lyckas få\r\ninternetgenerationen att öppna plånboken för att köpa digital film.\r\n\r\n\r\n\r\nLäs mer här: www.headweb.com\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/hw_logo2.png)", + "html": "
Stockholmsbaserade företaget Headweb ligger i startgroparna
för att lansera sin webbtjänst som skall förse oss konsumenter med en möjlighet att
lagligt köpa och ladda ner DVD-filmer utan DRM (Digital Rights Management - digitalt kopieringsskydd).
Headwebs teknik skiljer sig en hel del mot tidigare
satsningar inom området, framförallt genom att inte begränsa användarens
möjlighet att spela upp filmen med krångliga DRM-lösningar. För att begränsa
olaglig spridning kommer istället varje kunds kopia av filmen att göras unik
med hjälp av digital vattenmärkning. Väl köpta och nedladdade kan man antingen
se filmerna direkt i datorn eller bränna dem till DVD och se på dem i sin
hemmabioanläggning.
Den mest intressanta delen av tjänsten är dock
distributionen, som baserats helt på Bit Torrent-teknik. Här har man vänt
fildelningstekniken till sin fördel och uppmuntrar kunderna att göra sina köpta
filer tillgängliga för andra kunder genom ett bonussystem. Headwebs
trackermjukvara håller koll på hur mycket data du delat med dig av och
översätter datamängden till poäng som du kan använda för att köpa filmer. Smart
om det fungerar!
Det stora problemet jag ser inför release är som vanligt
utbudet. Headweb säger enligt IDG att c:a 500 titlar
skall finnas tillgängliga vid release, men att det mest rör sig om svensk och
europeisk film. De stora amerikanska bolagen verkar vilja se att allt fungerar
innan de ger sig in i leken.
Spännande angreppsätt på ett krångligt problem, vi följer
med spänning och ser om det blir Headweb som först lyckas få
internetgenerationen att öppna plånboken för att köpa digital film.
Läs mer här: www.headweb.com
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1191334800000, + "created_by": 1085, + "updated_at": 1191334800000, + "updated_by": 1085, + "published_at": 1191334800000, + "published_by": 1085 + }, + { + "id": 122, + "title": "HTC släpper nya telefoner", + "slug": "htc-slapper-nya-telefoner", + "markdown": "\r\n\r\n\r\n\r\n\r\n\r\nDet är få företag som vi hyser sådan hatkärlek till som\r\nTawanesiska HTC. Historiskt har de släppt de absolut snyggaste windowsmobilerna\r\nmen samtidigt dragits med högst tvivelaktig kvalitet på bygge och batteri. Nu\r\när det dags för nya lurar, vi hoppas att de lärt av misstagen!\r\n\r\n\r\n\r\n\r\n\r\n\r\nHTC S730\r\n\r\n\r\n\r\n\r\n\r\n\r\nDet här är 3G-uppföljaren till S710; en superslim candybartelefon med utfällbart QWERTY-tangentbord, HSDPA och WiFi. Telefonen vi väntat på!\r\n\r\n\r\n\r\n \r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/s730_2.png)\r\n\r\n\r\n\r\n\r\nHTC Touch Dual\r\n\r\n\r\n\r\n\r\n\r\nUppföljare till HTCs Iphone- liknande telefon (HTC Touch), nu med utfällbar knappsats. Även denna lur är utrustad med 3G och HSDPA, dock ej WiFi. HTC har för sin Touchserie utvecklat ett gränssnitt som de kallar för TouchFLO™, kolla in det \r\n\r\nhär\r\n\r\n\r\n.\r\n\r\n\r\n\r\n\r\n\r\n \r\n\r\n \r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/touchduo.png)\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nHTC P6500\r\n\r\n\r\n\r\n\r\n\r\n\r\nNy telefon i segmentet PDA-telefon. Det handlar såklart om en stor telefon med stor (3.5”) tryckkänslig skärm, HSDPSA och WiFi. Vill folk verkligen ha dessa bjässar fortfarande?\r\n\r\n\r\n\r\n\r\n \r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/p6500.png)\r\n\r\n\r\n\r\n\r\nHTC Shift\r\n\r\n\r\n\r\n\r\n\r\n\r\nAtt kalla detta för en telefon är en ganska stor underdrift, det rör sig istället om en ultraportabel Windows Vista PC utrustad med 3G, HSDPA och WiFi. Skall bli intressant att se den i verkligheten!\r\n\r\n\r\n\r\n\r\n\r\n \r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/shift.png)\r\n\r\n\r\n\r\nJag lovar att rapportera mer så fort vi fått sätta tänderna i dessa telefoner!\r\n\r\n\r\n\r\n", + "html": "
Det är få företag som vi hyser sådan hatkärlek till som
Tawanesiska HTC. Historiskt har de släppt de absolut snyggaste windowsmobilerna
men samtidigt dragits med högst tvivelaktig kvalitet på bygge och batteri. Nu
är det dags för nya lurar, vi hoppas att de lärt av misstagen!
HTC S730
Det här är 3G-uppföljaren till S710; en superslim candybartelefon med utfällbart QWERTY-tangentbord, HSDPA och WiFi. Telefonen vi väntat på!
HTC Touch Dual
Uppföljare till HTCs Iphone- liknande telefon (HTC Touch), nu med utfällbar knappsats. Även denna lur är utrustad med 3G och HSDPA, dock ej WiFi. HTC har för sin Touchserie utvecklat ett gränssnitt som de kallar för TouchFLO™, kolla in det
här
.
HTC P6500
Ny telefon i segmentet PDA-telefon. Det handlar såklart om en stor telefon med stor (3.5”) tryckkänslig skärm, HSDPSA och WiFi. Vill folk verkligen ha dessa bjässar fortfarande?
HTC Shift
Att kalla detta för en telefon är en ganska stor underdrift, det rör sig istället om en ultraportabel Windows Vista PC utrustad med 3G, HSDPA och WiFi. Skall bli intressant att se den i verkligheten!
Jag lovar att rapportera mer så fort vi fått sätta tänderna i dessa telefoner!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "HTC släpper nya telefoner", + "meta_description": "", + "author_id": 1085, + "created_at": 1191517380000, + "created_by": 1085, + "updated_at": 1191517380000, + "updated_by": 1085, + "published_at": 1191517380000, + "published_by": 1085 + }, + { + "id": 125, + "title": "Paint.NET - ett riktigt bra gratisprogram för bildbehandling", + "slug": "paintnet---ett-riktigt-bra-gratisprogram-for-bildbehandling", + "markdown": "\r\n\r\n\r\nPaint.NET är ett gratis bildbehandlingsprogram som klarar mycket av det du normalt behöver, t.ex. för att hantera alla bilder du ska publicera på din blogg eller använda i PowerPoint. Projektet startade som ett universitetsprojekt handlett av Microsoft, med planen att ersätta gamla MS Paint. Efter ursprungsprojektets slut har flera av de elever som deltog arbetat vidare, och idag är Paint.NET ett riktigt bra bildbehandlingsprogram för enklare uppgifter.\r\n\r\n\r\n\r\nFördelar\r\n\r\n\r\n\r\nLöser de vanligaste bildbehandlingsuppgifterna\r\nGratis\r\nLätt att ladda ner och installera\r\nLätt att utveckla plugins - vilket gör att det finns massor av gratis tredjepartsplugins för nya effekter, läsa nya filformat etc.\r\n\r\n\r\nNackdelar\r\n\r\n\r\n\r\nLäser inte Photoshop-filer (det finns plugins för det, men de klarar inte alla PS-filer)\r\nDålig prestanda när man hanterar stora filer.\r\n\r\n\r\n\r\n\r\nSammanfattning\r\n\r\n\r\n\r\nPaint.NET är ett riktigt bra komplement till Photoshop i en organisation där man arbetar mycket med enklare bildbehandling. Den dag Paint.NET klarar att öppna alla Photoshopfiler kommer kanske behovet av Photoshop att försvinna helt för den som inte arbetar som formgivare.\r\n\r\n\r\nLadda ner här: www.getpaint.net\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/logo3.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/paintnet.png)", + "html": "
Paint.NET är ett gratis bildbehandlingsprogram som klarar mycket av det du normalt behöver, t.ex. för att hantera alla bilder du ska publicera på din blogg eller använda i PowerPoint. Projektet startade som ett universitetsprojekt handlett av Microsoft, med planen att ersätta gamla MS Paint. Efter ursprungsprojektets slut har flera av de elever som deltog arbetat vidare, och idag är Paint.NET ett riktigt bra bildbehandlingsprogram för enklare uppgifter.
Fördelar
- Löser de vanligaste bildbehandlingsuppgifterna
- Gratis
- Lätt att ladda ner och installera
- Lätt att utveckla plugins - vilket gör att det finns massor av gratis tredjepartsplugins för nya effekter, läsa nya filformat etc.
Nackdelar
- Läser inte Photoshop-filer (det finns plugins för det, men de klarar inte alla PS-filer)
- Dålig prestanda när man hanterar stora filer.
Sammanfattning
Paint.NET är ett riktigt bra komplement till Photoshop i en organisation där man arbetar mycket med enklare bildbehandling. Den dag Paint.NET klarar att öppna alla Photoshopfiler kommer kanske behovet av Photoshop att försvinna helt för den som inte arbetar som formgivare.
Ladda ner här: www.getpaint.net
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1192549020000, + "created_by": 6, + "updated_at": 1192549020000, + "updated_by": 6, + "published_at": 1192549020000, + "published_by": 6 + }, + { + "id": 126, + "title": "Digg Labs som skärmsläckare", + "slug": "digg-labs-som-skarmslackare", + "markdown": "\r\n\r\n\r\nAllas vår favoritnyhetskälla, Digg, har utvecklat en hel del roliga applikationer för att i realtid visualisera användarnas aktivitet på deras webbplats. Hittills har fyra program utvecklats som presenterar nyhetsflödet och diggandet på olika sätt: Swarm, Stack, Big Spy samt senaste tillskottet Arc.\r\n\r\n\r\nNu finns alltså samtliga att ladda ner som skärmsläckare för Windows. Jag har redan installerat!\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/digglogo.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/diggarcsc.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/diggswarmsc.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/diggspyc.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/diggstacksc.png)", + "html": "
Allas vår favoritnyhetskälla, Digg, har utvecklat en hel del roliga applikationer för att i realtid visualisera användarnas aktivitet på deras webbplats. Hittills har fyra program utvecklats som presenterar nyhetsflödet och diggandet på olika sätt: Swarm, Stack, Big Spy samt senaste tillskottet Arc.
Nu finns alltså samtliga att ladda ner som skärmsläckare för Windows. Jag har redan installerat!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Digg Labs som skärmsläckare", + "meta_description": "ndows.", + "author_id": 1085, + "created_at": 1192572720000, + "created_by": 1085, + "updated_at": 1192572720000, + "updated_by": 1085, + "published_at": 1192572720000, + "published_by": 1085 + }, + { + "id": 127, + "title": "Apple släpper SDK till iPhone i vinter", + "slug": "apple-slapper-sdk-till-iphone-i-vinter", + "markdown": "\r\n\r\n\r\nEn av de hetaste potatisarna på Internet de senaste månaderna har varit Apples val att inte tillåta tredjepartsprogram i iPhone och iPod Touch. Detta faktum har fått många att protestera och olika kodgrupper har tävlat om vem som snabbast kan hacka Apples mjukvara.\r\n\r\n\r\nIdag bekräftade dock Steve Jobs, via Apples hemsida, att Apple inte alls har något emot tredjepartskod samt att ett SDK (för både iPhone och iPod Touch) kommer att släppas senast i februari. Anledningen till att det dröjt är enligt Steve att de velat hantera säkerhetsproblemen som tredjepartskod kan medföra. Det kommer alltså förmodligen inte röra sig om en total upplåsning av mjukvaran, men förhoppningsvis tillräckligt mycket för att ge utvecklare ordentligt med spelrum.\r\n\r\n\r\nFörhoppningsvis innebär detta många trevliga och lagliga applikationer i våra framtida äppellurar!\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/iphone.png)\r\n\r\n\r\n\r\n\r\nThird Party Applications on the iPhoneLet me just say it: We want native third party applications on the iPhone, and we plan to have an SDK in developers’ hands in February. We are excited about creating a vibrant third party developer community around the iPhone and enabling hundreds of new applications for our users. With our revolutionary multi-touch interface, powerful hardware and advanced software architecture, we believe we have created the best mobile platform ever for developers.\r\n\r\n\r\nIt will take until February to release an SDK because we’re trying to do two diametrically opposed things at once—provide an advanced and open platform to developers while at the same time protect iPhone users from viruses, malware, privacy attacks, etc. This is no easy task. Some claim that viruses and malware are not a problem on mobile phones—this is simply not true. There have been serious viruses on other mobile phones already, including some that silently spread from phone to phone over the cell network. As our phones become more powerful, these malicious programs will become more dangerous. And since the iPhone is the most advanced phone ever, it will be a highly visible target.\r\n\r\n\r\nSome companies are already taking action. Nokia, for example, is not allowing any applications to be loaded onto some of their newest phones unless they have a digital signature that can be traced back to a known developer. While this makes such a phone less than “totally open,” we believe it is a step in the right direction. We are working on an advanced system which will offer developers broad access to natively program the iPhone’s amazing software platform while at the same time protecting users from malicious programs.\r\n\r\n\r\nWe think a few months of patience now will be rewarded by many years of great third party applications running on safe and reliable iPhones.\r\n\r\n\r\nSteve\r\n\r\n\r\nP.S.: The SDK will also allow developers to create applications for iPod touch. [Oct 17, 2007]\r\n\r\n\r\nKälla: http://www.apple.com/hotnews", + "html": "
En av de hetaste potatisarna på Internet de senaste månaderna har varit Apples val att inte tillåta tredjepartsprogram i iPhone och iPod Touch. Detta faktum har fått många att protestera och olika kodgrupper har tävlat om vem som snabbast kan hacka Apples mjukvara.
Idag bekräftade dock Steve Jobs, via Apples hemsida, att Apple inte alls har något emot tredjepartskod samt att ett SDK (för både iPhone och iPod Touch) kommer att släppas senast i februari. Anledningen till att det dröjt är enligt Steve att de velat hantera säkerhetsproblemen som tredjepartskod kan medföra. Det kommer alltså förmodligen inte röra sig om en total upplåsning av mjukvaran, men förhoppningsvis tillräckligt mycket för att ge utvecklare ordentligt med spelrum.
Förhoppningsvis innebär detta många trevliga och lagliga applikationer i våra framtida äppellurar!
Third Party Applications on the iPhone
Let me just say it: We want native third party applications on the iPhone, and we plan to have an SDK in developers’ hands in February. We are excited about creating a vibrant third party developer community around the iPhone and enabling hundreds of new applications for our users. With our revolutionary multi-touch interface, powerful hardware and advanced software architecture, we believe we have created the best mobile platform ever for developers.
It will take until February to release an SDK because we’re trying to do two diametrically opposed things at once—provide an advanced and open platform to developers while at the same time protect iPhone users from viruses, malware, privacy attacks, etc. This is no easy task. Some claim that viruses and malware are not a problem on mobile phones—this is simply not true. There have been serious viruses on other mobile phones already, including some that silently spread from phone to phone over the cell network. As our phones become more powerful, these malicious programs will become more dangerous. And since the iPhone is the most advanced phone ever, it will be a highly visible target.
Some companies are already taking action. Nokia, for example, is not allowing any applications to be loaded onto some of their newest phones unless they have a digital signature that can be traced back to a known developer. While this makes such a phone less than “totally open,” we believe it is a step in the right direction. We are working on an advanced system which will offer developers broad access to natively program the iPhone’s amazing software platform while at the same time protecting users from malicious programs.
We think a few months of patience now will be rewarded by many years of great third party applications running on safe and reliable iPhones.
Steve
P.S.: The SDK will also allow developers to create applications for iPod touch. [Oct 17, 2007]
Källa: http://www.apple.com/hotnews", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Apple släpper SDK till iPhone i vinter", + "meta_description": "läppas senast i februari och att säkerhetsproblem med tredjepartskod är anledningen till att det dröjt.", + "author_id": 1085, + "created_at": 1192660560000, + "created_by": 1085, + "updated_at": 1192660560000, + "updated_by": 1085, + "published_at": 1192660560000, + "published_by": 1085 + }, + { + "id": 132, + "title": "Webbaserad version av TPTEST", + "slug": "webbaserad-version-av-tptest", + "markdown": "\r\n\r\n\r\nKonsumentverket, Post- och Telestyrelsen och domännamnsregistret .SE har tidigare skapat det utmärkta programmet TPTEST för att göra tester av hastighet i nätet. Man måste dock ladda ner TPTEST och installera på sin dator, och det innehåller ganska många krångliga val. \r\n\r\n\r\nNu tipsar Tommy k Johansson på sin blogg om att det har kommit en helt ny version som är helt webbaserad. Bredbandskollen.se innehåller inga krånliga installationer - bara att trycka på testknappen.\r\n\r\n\r\nDet samlas redan nu in statistik från varje test, men den är inte offentlig och kan bara användas för att benchmarka sina egna körningar mot varandra. Det självklara nästa steget tycker jag är att publicera statistisk över körningar från olika internetleverantörer, kanske ordnat per område. Det är nog fler än jag som tänker att allt inte alltid står rätt till med ens uppkoppling, och det skulle ju vara ett utmärkt verktyg för att få internetleverantörerna att höja sin kvalitet.\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/bredbandskollen.png)", + "html": "
Konsumentverket, Post- och Telestyrelsen och domännamnsregistret .SE har tidigare skapat det utmärkta programmet TPTEST för att göra tester av hastighet i nätet. Man måste dock ladda ner TPTEST och installera på sin dator, och det innehåller ganska många krångliga val.
Nu tipsar Tommy k Johansson på sin blogg om att det har kommit en helt ny version som är helt webbaserad. Bredbandskollen.se innehåller inga krånliga installationer - bara att trycka på testknappen.
Det samlas redan nu in statistik från varje test, men den är inte offentlig och kan bara användas för att benchmarka sina egna körningar mot varandra. Det självklara nästa steget tycker jag är att publicera statistisk över körningar från olika internetleverantörer, kanske ordnat per område. Det är nog fler än jag som tänker att allt inte alltid står rätt till med ens uppkoppling, och det skulle ju vara ett utmärkt verktyg för att få internetleverantörerna att höja sin kvalitet.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1193228220000, + "created_by": 6, + "updated_at": 1193228220000, + "updated_by": 6, + "published_at": 1193228220000, + "published_by": 6 + }, + { + "id": 136, + "title": "Mer frihet för användare och applikationer i communities", + "slug": "mer-frihet-for-anvandare-och-applikationer-i-communities", + "markdown": "\r\n\r\n\r\nGoogle släppte igår specifikationen på en ny öppen standard för integration av applikationer i sociala medier (communities) kallad OpenSocial. Fördelen med att ha en öppen standard för detta är många: \r\n\r\n\r\nApplikationstillverkarna kan utveckla applikationer som kan köras i många communities samtidigt.\r\nUtvecklarna av communities behöver bara stödja ett format för att få många applikationer från dag ett.\r\nAnvändarna kan välja fritt mellan olika communities och ändå ha kvar sin historik och känna igen sig i applikationerna.\r\n\r\n\r\nEn av de stora framgångarna för t.ex. FaceBook är ju att de tillåter externa utvecklare att utveckla nya applikationer som tillför mervärde för både användarna, applikationsutvecklarna men framför allt FaceBook.\r\n\r\n\r\nStödet är redan stort på nätet och det intressanta att följa är om Facebook kommer att anamma denna standard – min gissning är att de kommer hålla kvar så länge de kan i sin egen standard då det är deras största konkurrensfördel och för att OpenSocial tillåter mer anpassningar än Facebooks API. Dessutom kan man se detta som en framryckning av Google som inte kommer låta Facebook fortsätta ta så stor andel av denna intressanta marknad. Google har ju ett eget nätverk som heter Orkut som självklart redan stöder denna standard.\r\n\r\n\r\nTekniskt sett är API:t helt byggt i Javascript/AJAX och vill man se ett enkelt kodexempel kan man titta här:http://code.google.com/apis/opensocial/articles/firstgadget.html (Hello World)\r\n\r\n\r\nLäs mer om OpenSocial här:http://code.google.com/apis/opensocial/\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/opensocial.png)", + "html": "
Google släppte igår specifikationen på en ny öppen standard för integration av applikationer i sociala medier (communities) kallad OpenSocial. Fördelen med att ha en öppen standard för detta är många:
- Applikationstillverkarna kan utveckla applikationer som kan köras i många communities samtidigt.
- Utvecklarna av communities behöver bara stödja ett format för att få många applikationer från dag ett.
- Användarna kan välja fritt mellan olika communities och ändå ha kvar sin historik och känna igen sig i applikationerna.
En av de stora framgångarna för t.ex. FaceBook är ju att de tillåter externa utvecklare att utveckla nya applikationer som tillför mervärde för både användarna, applikationsutvecklarna men framför allt FaceBook.
Stödet är redan stort på nätet och det intressanta att följa är om Facebook kommer att anamma denna standard – min gissning är att de kommer hålla kvar så länge de kan i sin egen standard då det är deras största konkurrensfördel och för att OpenSocial tillåter mer anpassningar än Facebooks API. Dessutom kan man se detta som en framryckning av Google som inte kommer låta Facebook fortsätta ta så stor andel av denna intressanta marknad. Google har ju ett eget nätverk som heter Orkut som självklart redan stöder denna standard.
Tekniskt sett är API:t helt byggt i Javascript/AJAX och vill man se ett enkelt kodexempel kan man titta här:
http://code.google.com/apis/opensocial/articles/firstgadget.html (Hello World)
Läs mer om OpenSocial här:
http://code.google.com/apis/opensocial/
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "es.", + "author_id": 1087, + "created_at": 1194003360000, + "created_by": 1087, + "updated_at": 1194003360000, + "updated_by": 1087, + "published_at": 1194003360000, + "published_by": 1087 + }, + { + "id": 137, + "title": "Resultat: Hur står det till med dina backuper?", + "slug": "resultat-hur-star-det-till-med-dina-backuper", + "markdown": "\r\n\r\n\r\nBackuper? En gång brände jag semesterbilder till en CD... tror jag...: 19\r\nPå jobbet görs det backuper regelbundet: 19\r\nHemma görs det backuper regelbundet: 13\r\nAntal som svarat: 36\r\n\r\n\r\nDet var väl inte så oväntat att det finns en bättre beredskap runt om på företag än hemma, men skillnaden är mindre än väntat. Det är förvånansvärt många av er som saknar ordentlig backup på jobbet, medan det är förhållandevis många som gör ordentliga backuper hemma. Den information man har hemma har ju blivit allt mer värdefull - vi är många som har i princip alla våra foton från livet i digital form, inget man vill förlora om hårddisken skulle gå sönder.\r\n\r\n\r\nMed en syster som just har haft inbrott och fått sin laptop stulen vill jag också påminna er som är familjens datorkunniga person att inte glömma nära och kära. Cobian är ett riktigt bra gratis backupprogram som väl täcker hemmabehov med smarta funktioner som inkrementella backuper, backuper till FTP och automatiska mailrapporter. Det är mycket enklare att använda än Windows inbyggda backupprogram.\r\n\r\n\r\nFör professionella backupbehov som kan centraliseras och har större krav på återställningstider, datasäkerhet och hantering av öppna filer, kanske också med applikationer som SQL Server, Exchange och SharePoint rekommenderar vi en professionell lösning, t.ex. Symantec Backup Exec. Fråga oss om du vill veta mer!\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/backup-tape.jpg)", + "html": "
- Backuper? En gång brände jag semesterbilder till en CD... tror jag...: 19
- På jobbet görs det backuper regelbundet: 19
- Hemma görs det backuper regelbundet: 13
- Antal som svarat: 36
Det var väl inte så oväntat att det finns en bättre beredskap runt om på företag än hemma, men skillnaden är mindre än väntat. Det är förvånansvärt många av er som saknar ordentlig backup på jobbet, medan det är förhållandevis många som gör ordentliga backuper hemma. Den information man har hemma har ju blivit allt mer värdefull - vi är många som har i princip alla våra foton från livet i digital form, inget man vill förlora om hårddisken skulle gå sönder.
Med en syster som just har haft inbrott och fått sin laptop stulen vill jag också påminna er som är familjens datorkunniga person att inte glömma nära och kära. Cobian är ett riktigt bra gratis backupprogram som väl täcker hemmabehov med smarta funktioner som inkrementella backuper, backuper till FTP och automatiska mailrapporter. Det är mycket enklare att använda än Windows inbyggda backupprogram.
För professionella backupbehov som kan centraliseras och har större krav på återställningstider, datasäkerhet och hantering av öppna filer, kanske också med applikationer som SQL Server, Exchange och SharePoint rekommenderar vi en professionell lösning, t.ex. Symantec Backup Exec. Fråga oss om du vill veta mer!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1194859740000, + "created_by": 6, + "updated_at": 1194859740000, + "updated_by": 6, + "published_at": 1194859740000, + "published_by": 6 + }, + { + "id": 138, + "title": "Här fungerar laglig nedladdning på riktigt", + "slug": "har-fungerar-laglig-nedladdning-pa-riktigt", + "markdown": "\r\n\r\n\r\nIDG rapporterar idag att spelbranschen går mot ett rekordår 2007. Det säljs massor av spelkonsoller, men också massor av spel - och ungefär hälften av de spel som säljs är spel till PC. Detta trot att spelbranschen har alltid har behövt kämpa mot piratkopiering, långt innan format som MP3 alls var uppfunna (eller finns det kanske t.o.m. ett omvänt samband här – kan stor spridning via piratkopiering samtidigt driva försäljningen? Intressant, men en fråga för ett annat blogginlägg).\r\n\r\n\r\nSpelleverantörerna har precis film- och musikleverantörer börjat distribuera sina verk digitalt. Det finns dock en stor skillnad: där musik- och filmtjänsterna känns som en sämre sätt att köpa produkterna. Man får dem visserligen snabbt, men i sämre kvalitet (mp3) och med kopieringsskydd med oöverskådliga följder för hur produkten faktiskt kan användas (kan jag spela mina Itunes-låtar i min mobiltelefon? Hur mycket skadestånd kan jag få betala om min vattenstämplade film av misstag råkar läcka ut på nätet?).\r\n\r\n\r\nSpeltjänsterna erbjuder istället något mer än den traditionella distributionen. Ett exempel är Steam, den största nedladdningstjänsten för spel som distributören Valve står bakom. För någon jul sedan fick jag spelet Half-Life 2 i present, ett helt vanligt spel på DVD-ROM i paket. Jag installerade spelet och fick med Steam på köpet – inte utan viss irritation ska erkännas. Jag registrerade ett Steam-konto och Half-Life 2 registrerades som ett av mina spel (med serienumret). Den stora ahaupplevelsen kom för mig för snart ett år sen när jag köpte ny dator. En av de första grejerna man gör med sin nya dator är förstås att ta fram något bra spel för att häpna över den nya prestandan. Problemet var bara att jag inte kunde hitta Half-Life 2-skivan... Asken stod i hyllan, men innehöll bara en manual. Plötsligt insåg jag att spelet ju var registrerat på Steam. Jag installerade Steam på nya datorn och loggade in med mailadress och lösenord – och vips kunde jag ladda ner hela spelet. Det är i exakt samma version som det på skivan, och visst, det tog nog en arbetsdag ungefär att ladda ner, men det funkar precis som det ska. När det sen kom en fortsättning var det bara att ladda ner den också, med lite rabatt eftersom man köpt föregångaren.\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/steam-logo.jpg)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/crysis_banner_v5.png)\r\n\r\n\r\nEtt annat exempel är EA Downloader som värdens störa distributör Electronic Arts står bakom. 16 november släpps det omtalade Crysis som ska vrida sista prestandadroppen ur alla idag existerande datorer, men redan nu kan man ladda ner spelet till sin dator. Det är låst och väntar på en aktiveringsnyckel, men du kan börja spela 00:00 på releasedagen (om inte ryktet är sant som säger att det blir release redan imorgon för de som laddat ner).\r\n\r\n\r\nVisst, jag vet att spel och musik inte är exakt samma sorts produkt, och man kan inte jämföra dem rakt av - men jag lovar att det finns mycket musikbranschen skulle kunna lära sig av spelbranschen!\r\n\r\n", + "html": "
IDG rapporterar idag att spelbranschen går mot ett rekordår 2007. Det säljs massor av spelkonsoller, men också massor av spel - och ungefär hälften av de spel som säljs är spel till PC. Detta trot att spelbranschen har alltid har behövt kämpa mot piratkopiering, långt innan format som MP3 alls var uppfunna (eller finns det kanske t.o.m. ett omvänt samband här – kan stor spridning via piratkopiering samtidigt driva försäljningen? Intressant, men en fråga för ett annat blogginlägg).
Spelleverantörerna har precis film- och musikleverantörer börjat distribuera sina verk digitalt. Det finns dock en stor skillnad: där musik- och filmtjänsterna känns som en sämre sätt att köpa produkterna. Man får dem visserligen snabbt, men i sämre kvalitet (mp3) och med kopieringsskydd med oöverskådliga följder för hur produkten faktiskt kan användas (kan jag spela mina Itunes-låtar i min mobiltelefon? Hur mycket skadestånd kan jag få betala om min vattenstämplade film av misstag råkar läcka ut på nätet?).
Speltjänsterna erbjuder istället något mer än den traditionella distributionen. Ett exempel är Steam, den största nedladdningstjänsten för spel som distributören Valve står bakom. För någon jul sedan fick jag spelet Half-Life 2 i present, ett helt vanligt spel på DVD-ROM i paket. Jag installerade spelet och fick med Steam på köpet – inte utan viss irritation ska erkännas. Jag registrerade ett Steam-konto och Half-Life 2 registrerades som ett av mina spel (med serienumret). Den stora ahaupplevelsen kom för mig för snart ett år sen när jag köpte ny dator. En av de första grejerna man gör med sin nya dator är förstås att ta fram något bra spel för att häpna över den nya prestandan. Problemet var bara att jag inte kunde hitta Half-Life 2-skivan... Asken stod i hyllan, men innehöll bara en manual. Plötsligt insåg jag att spelet ju var registrerat på Steam. Jag installerade Steam på nya datorn och loggade in med mailadress och lösenord – och vips kunde jag ladda ner hela spelet. Det är i exakt samma version som det på skivan, och visst, det tog nog en arbetsdag ungefär att ladda ner, men det funkar precis som det ska. När det sen kom en fortsättning var det bara att ladda ner den också, med lite rabatt eftersom man köpt föregångaren.
Ett annat exempel är EA Downloader som värdens störa distributör Electronic Arts står bakom. 16 november släpps det omtalade Crysis som ska vrida sista prestandadroppen ur alla idag existerande datorer, men redan nu kan man ladda ner spelet till sin dator. Det är låst och väntar på en aktiveringsnyckel, men du kan börja spela 00:00 på releasedagen (om inte ryktet är sant som säger att det blir release redan imorgon för de som laddat ner).
Visst, jag vet att spel och musik inte är exakt samma sorts produkt, och man kan inte jämföra dem rakt av - men jag lovar att det finns mycket musikbranschen skulle kunna lära sig av spelbranschen!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "ckats med digital distribution där film- och musikbransch fortsättningsvis går bet.", + "author_id": 6, + "created_at": 1194976920000, + "created_by": 6, + "updated_at": 1194976920000, + "updated_by": 6, + "published_at": 1194976920000, + "published_by": 6 + }, + { + "id": 144, + "title": "Fiffig funktion för att göra skärmdumpar i Vista", + "slug": "fiffig-funktion-for-att-gora-skarmdumpar-i-vista", + "markdown": "\r\n\r\n\r\nInbyggt i Vista finns ett riktigt fiffigt program för att göra skärmdumpar. Det heter Snipping Tool (vet inte riktigt vad det kan heta på svenska). Med det kan man göra skärmdumpar av hela skärmen, ett fönster, en rektangel eller ett område man ritar på fri hand. Sedan lägger man enkelt till markeringar, t.ex. överstrykningar eller egna små ritningar och kan direkt maila iväg skärmdumpen eller spara den i alla vanliga bildformat.\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/snip.png)\r\n\r\n\r\nDet enda som fattas är en inbyggd funktion för att lägga till text...\r\n\r\n\r\nDu hittar Snipping Tool under accessories/tillbehör i startmenyn och kan läsa mer om verktyget här.\r\n\r\n", + "html": "
Inbyggt i Vista finns ett riktigt fiffigt program för att göra skärmdumpar. Det heter Snipping Tool (vet inte riktigt vad det kan heta på svenska). Med det kan man göra skärmdumpar av hela skärmen, ett fönster, en rektangel eller ett område man ritar på fri hand. Sedan lägger man enkelt till markeringar, t.ex. överstrykningar eller egna små ritningar och kan direkt maila iväg skärmdumpen eller spara den i alla vanliga bildformat.
Det enda som fattas är en inbyggd funktion för att lägga till text...
Du hittar Snipping Tool under accessories/tillbehör i startmenyn och kan läsa mer om verktyget här.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "inbyggt program som gör processen extremt kort.", + "author_id": 6, + "created_at": 1195639020000, + "created_by": 6, + "updated_at": 1195639020000, + "updated_by": 6, + "published_at": 1195639020000, + "published_by": 6 + }, + { + "id": 145, + "title": "Amazon släpper E-bok", + "slug": "amazon-slapper-e-bok", + "markdown": "\r\n\r\n\r\nAmazon släppte i dagarna sin egen hårdvara för att läsa e-böcker, Amazon Kindle. I praktiken är det en monokrom 6-tumsskärm med en upplösning på 800x600 och ett linuxbaserat operativsystem. Kindle skeppas med 256MB minne, utbyggbart med SD, batteriet skall enl Amazon hålla ca 30h. Inbyggt trådlöst nätverk (Sprint EVDO) skall också göra det möjligt att köpa böcker direkt från Amazon.\r\n\r\n\r\nKindle är framförallt anpassad för att visa Amazons egna proprietära format (AZW), men skall även kunna visa Mobipocket och oformaterad text. Amazon verkar också tillhandahålla möjlighet att konvertera en drös andra filformat via en emailtjänst, förmodligen mot en kostnad. E-böckerna hos Amazon verkar kosta ca $10.\r\n\r\n\r\nDet roliga är att det börjar ta fart på allvar med e-böcker, Amazon har redan ca 90.000 titlar till försäljning. Det tråkiga är att utvecklingen leds av innehållsägarna, vilket gör att vi riskerar att få samma problem med DRM och proprietära format som musikbranchen dragits med. Att Amazon tagit fram ett eget filformat känns som helt fel väg att gå, och man lär få problem att läsa Amazons böcker på någon annan läsare än Kindle (tex Sonys Reader). Bokbranchen borde verkligen enas om ett standardformat, även om det kommer knäckas (it will). Om alternativet är att kunderna måste köpa en hårdvara per bokaffär så kommer kunderna att ledsna helt och känna att det är ok att piratkopiera.\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/kindle.png)", + "html": "
Amazon släppte i dagarna sin egen hårdvara för att läsa e-böcker, Amazon Kindle. I praktiken är det en monokrom 6-tumsskärm med en upplösning på 800x600 och ett linuxbaserat operativsystem. Kindle skeppas med 256MB minne, utbyggbart med SD, batteriet skall enl Amazon hålla ca 30h. Inbyggt trådlöst nätverk (Sprint EVDO) skall också göra det möjligt att köpa böcker direkt från Amazon.
Kindle är framförallt anpassad för att visa Amazons egna proprietära format (AZW), men skall även kunna visa Mobipocket och oformaterad text. Amazon verkar också tillhandahålla möjlighet att konvertera en drös andra filformat via en emailtjänst, förmodligen mot en kostnad. E-böckerna hos Amazon verkar kosta ca $10.
Det roliga är att det börjar ta fart på allvar med e-böcker, Amazon har redan ca 90.000 titlar till försäljning. Det tråkiga är att utvecklingen leds av innehållsägarna, vilket gör att vi riskerar att få samma problem med DRM och proprietära format som musikbranchen dragits med. Att Amazon tagit fram ett eget filformat känns som helt fel väg att gå, och man lär få problem att läsa Amazons böcker på någon annan läsare än Kindle (tex Sonys Reader). Bokbranchen borde verkligen enas om ett standardformat, även om det kommer knäckas (it will). Om alternativet är att kunderna måste köpa en hårdvara per bokaffär så kommer kunderna att ledsna helt och känna att det är ok att piratkopiera.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1195647240000, + "created_by": 1085, + "updated_at": 1195647240000, + "updated_by": 1085, + "published_at": 1195647240000, + "published_by": 1085 + }, + { + "id": 147, + "title": "Resultat: Ska du köpa en iPhone?", + "slug": "resultat-ska-du-kopa-en-iphone", + "markdown": "\r\n\r\n\r\nDet blir ju som bekant inga iPhones i Sverige innan jul om man inte väljer att importera själv. Men hur starkt är suget i Sverige? Enligt vår ovetenskapliga undersökning så är svaret \"mittemellan\". Det är ganska många som längtar efter en Sverigelansering, men många vill hellre ha en annan telefon.\r\n\r\n\r\nFörra veckan tog nya rykten fart om en 3G-variant av iPhone första halvåret 2008. Enligt Prylfeber förväntar sig spanska Telefonica att kunna sälja en 3G-iPhone redan i maj 2008. Om det är sant kommer kanske nuvarande iPhone 2G aldrig att börja säljas i Sverige, och därmed kanske vi får lite rätt i vår egen spekulation trots allt.\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/polliphone.png)", + "html": "
Det blir ju som bekant inga iPhones i Sverige innan jul om man inte väljer att importera själv. Men hur starkt är suget i Sverige? Enligt vår ovetenskapliga undersökning så är svaret \"mittemellan\". Det är ganska många som längtar efter en Sverigelansering, men många vill hellre ha en annan telefon.
Förra veckan tog nya rykten fart om en 3G-variant av iPhone första halvåret 2008. Enligt Prylfeber förväntar sig spanska Telefonica att kunna sälja en 3G-iPhone redan i maj 2008. Om det är sant kommer kanske nuvarande iPhone 2G aldrig att börja säljas i Sverige, och därmed kanske vi får lite rätt i vår egen spekulation trots allt.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1196085660000, + "created_by": 6, + "updated_at": 1196085660000, + "updated_by": 6, + "published_at": 1196085660000, + "published_by": 6 + }, + { + "id": 148, + "title": "15 tips för att få ditt nyhetsbrev att komma igenom spam-filtren", + "slug": "15-tips-for-att-fa-ditt-nyhetsbrev-att-komma-igenom-spam-filtren", + "markdown": "\r\n\r\n\r\n\r\nAnvänd inte enbart bilder. Att lägga hela innehållet i en bild för att spam-filtren inte skulle kunna läsa innehållet var väldigt populärt ett tag bland spammare, vilket gör att många filter direkt rensar bort epost som bara innehåller bilder. Dessutom har c:a 40% av användarna visning av bilder avstängt i sina epostprogram.\r\n\r\nAnvänd inte för lite text. Om ett mail innehåller väldigt lite text i kombination med en bild fångas det lätt av samma regler som i punkt 1 ovan.\r\n\r\nUpprepa inte ämnesraden - särskilt inte i rubriker och länkar\r\n\r\nUndvik stora typsnitt - större grad än 12 punkter i rubriker och länkar kan ge spampoäng\r\n\r\nUndvik Arial storlek 2/10 punkter. Mycket spam innehåller en bild med budskapet och en nonsenstext i arial 10 punkter.\r\n\r\nAnvänd inte uteslutande versaler, särskilt i ämnesraden.\r\n\r\nUndvik många teckenfärger\r\n\r\n\r\nUndvik vissa ord. Ord som \"kontakt\" och \"kontaktformulär\" kan ge spampoäng. Detta är ett problem framför allt på engelska, men filtren blir kontinuerligt mer anpassade även för andra språk.\r\n\r\nUndvik för många utropstecken\r\n\r\n\r\nSkapa inte för avancerad layout. Nyhetsbrev med många tabeller, omfattande HTML-kod etc. kan ge spam-poäng\r\n\r\nFrontpage och DreamWeaver kan ge spampoäng. Redigeringsprogram för HTML har en tendens att lagra information om sig själva (alltså vilket program som har skapat HTML-koden) vilket kan ge spampoäng. Om du använder ett redigeringsverktyg kan du själv ta bort sådana referenser i koden.\r\n\r\nAnvänd inte fältet hemlig kopia. Hemlig kopia (BCC) är en indikation på att ett epostmeddelande har sänts till många mottagare. Om det är möjligt är det bättre att skicka ut nyhetsbrevet som ett separat meddelande till varje mottagare.\r\n\r\nAnvänd inte fältet kopia av samma skäl som ovan.\r\n\r\nUndvik dynamiska IP-nummer. De flesta vanliga bredbandsuppkopplingar, särskilt för privatabonnemang, delar ut en ny adress varje gång man ansluter. Vissa spam-filter tolkar detta som ett försök att dölja varifrån utskicket kommer.\r\n\r\nKontrollera ditt IP-nummer. Kontroller att ditt IP-nummer inte har hamnat i någon av de stora svartlistesföretagens (som SpamCop eller MAPS) databaser.\r\n\r\n\r\nDessa utmärkta tips kom till oss i ett nyhetsbrev från SamLogic som säljer verktyg för epostutskick. Enda överraskningen var att det kom på papper via posten istället för som ett epostnyhetsbrev...\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/spam_boy.png)", + "html": "
Använd inte enbart bilder. Att lägga hela innehållet i en bild för att spam-filtren inte skulle kunna läsa innehållet var väldigt populärt ett tag bland spammare, vilket gör att många filter direkt rensar bort epost som bara innehåller bilder. Dessutom har c:a 40% av användarna visning av bilder avstängt i sina epostprogram.
Använd inte för lite text. Om ett mail innehåller väldigt lite text i kombination med en bild fångas det lätt av samma regler som i punkt 1 ovan.
Upprepa inte ämnesraden - särskilt inte i rubriker och länkar
Undvik stora typsnitt - större grad än 12 punkter i rubriker och länkar kan ge spampoäng
Undvik Arial storlek 2/10 punkter. Mycket spam innehåller en bild med budskapet och en nonsenstext i arial 10 punkter.
Använd inte uteslutande versaler, särskilt i ämnesraden.
Undvik många teckenfärger
Undvik vissa ord. Ord som \"kontakt\" och \"kontaktformulär\" kan ge spampoäng. Detta är ett problem framför allt på engelska, men filtren blir kontinuerligt mer anpassade även för andra språk.
Undvik för många utropstecken
Skapa inte för avancerad layout. Nyhetsbrev med många tabeller, omfattande HTML-kod etc. kan ge spam-poäng
Frontpage och DreamWeaver kan ge spampoäng. Redigeringsprogram för HTML har en tendens att lagra information om sig själva (alltså vilket program som har skapat HTML-koden) vilket kan ge spampoäng. Om du använder ett redigeringsverktyg kan du själv ta bort sådana referenser i koden.
Använd inte fältet hemlig kopia. Hemlig kopia (BCC) är en indikation på att ett epostmeddelande har sänts till många mottagare. Om det är möjligt är det bättre att skicka ut nyhetsbrevet som ett separat meddelande till varje mottagare.
Använd inte fältet kopia av samma skäl som ovan.
Undvik dynamiska IP-nummer. De flesta vanliga bredbandsuppkopplingar, särskilt för privatabonnemang, delar ut en ny adress varje gång man ansluter. Vissa spam-filter tolkar detta som ett försök att dölja varifrån utskicket kommer.
Kontrollera ditt IP-nummer. Kontroller att ditt IP-nummer inte har hamnat i någon av de stora svartlistesföretagens (som SpamCop eller MAPS) databaser.
Dessa utmärkta tips kom till oss i ett nyhetsbrev från SamLogic som säljer verktyg för epostutskick. Enda överraskningen var att det kom på papper via posten istället för som ett epostnyhetsbrev...
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1196098920000, + "created_by": 6, + "updated_at": 1196098920000, + "updated_by": 6, + "published_at": 1196098920000, + "published_by": 6 + }, + { + "id": 157, + "title": "Resultat: Vilket är ditt favorit-OS just nu?", + "slug": "resultat-vilket-ar-ditt-favorit-os-just-nu", + "markdown": "\r\n\r\n\r\nEn jämn omröstning skulle jag säga. Förhållandet Vista/Leopard avspeglar ganska väl försäljningssiffrorna som senast jag såg dem låg ganska lika. Att det är lite Vista-övertag här är kanske inte så konstigt - vi skriver ju mycket om .NET och andra Microsoft-tekniker.\r\n\r\n\r\nMer intressant är egentligen att jämföra med vilka operativsystem ni läsare faktiskt använder (enligt Google Analytics, med oss på Iteam borträknade):\r\n\r\n\r\nWindows XP: 64,79%\r\nWindows Vista: 25,06%\r\nMacOSX (alla versioner): 5,03%\r\nLinux (alla distributioner): 1,90%\r\n\r\n\r\nHedersomnämnande till den person som har gjort ett besök sedan starten med sin iPhone :-).\r\n\r\n\r\nListan skiljer sig väldigt från omröstningsresultatet. Men det är ju också många faktorer som styr vilket operativsystem man använder - kostnad, vilken hårdvara man har tillgänglig och policies på arbetsplatser.\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/os-vote.png)", + "html": "
En jämn omröstning skulle jag säga. Förhållandet Vista/Leopard avspeglar ganska väl försäljningssiffrorna som senast jag såg dem låg ganska lika. Att det är lite Vista-övertag här är kanske inte så konstigt - vi skriver ju mycket om .NET och andra Microsoft-tekniker.
Mer intressant är egentligen att jämföra med vilka operativsystem ni läsare faktiskt använder (enligt Google Analytics, med oss på Iteam borträknade):
- Windows XP: 64,79%
- Windows Vista: 25,06%
- MacOSX (alla versioner): 5,03%
- Linux (alla distributioner): 1,90%
Hedersomnämnande till den person som har gjort ett besök sedan starten med sin iPhone :-).
Listan skiljer sig väldigt från omröstningsresultatet. Men det är ju också många faktorer som styr vilket operativsystem man använder - kostnad, vilken hårdvara man har tillgänglig och policies på arbetsplatser.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1197556920000, + "created_by": 6, + "updated_at": 1197556920000, + "updated_by": 6, + "published_at": 1197556920000, + "published_by": 6 + }, + { + "id": 160, + "title": "Tekniken.nus bästa julklappstips", + "slug": "teknikennus-basta-julklappstips", + "markdown": "\r\n\r\n\r\nAllt det som är bra med iPhone - stor touch-skärm, filmvisning, WLAN, webbläsare, som vanligt paketerat i Apples grymma design. Finns till skillnad från iPhone tillgänglig redan nu, även i Sverige, med inbyggt minne på 8 eller 16 GB.\r\n\r\n\r\n\r\nhttp://www.apple.com/ipodtouch/\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/ipod-touch-video.png)\r\n\r\n\r\nEn väckarklocka som via ett armband mäter när det fysiologiskt passar bäst att väcka dig, inom den tidsperiod du har ställt in (t.ex. \"mellan 7:00 och 7:30\"). Gör att klockan ringer när det passar din sömncykel och att du (typ) alltid vaknar utvilad!\r\n\r\n\r\n\r\nFinns på Dustin\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/axbo.png)\r\n\r\n\r\nOne Laptop Per Child (OLPC) är ett projekt för att utrusta barnen i världens utvecklingsländer med datorer, något som kommer att vara absolut nödvändigt för hjälpa dessa länder vidare i utvecklingen. Målet är att alla skolbarn ska få en egen. Om du skänker $200 så kommer en laptop att byggas och skickas till ett skolbarn, om du skänker $399 så får du dessutom en egen att ge till ett barn i din närhet.\r\n\r\nhttp://laptopgiving.org/en/index.php\r\n \r\n![Bild](http://tekniken.nu/uploads/xo.png)\r\n\r\n\r\nEtt problem många lär känna igen sig i är att ta hand om alla sina växande mängder digitala data - t.ex. alla de foton man tar med sin digitalkamera. Till släkt och vänner som har filer att vara rädda om är en tjänst för nätbackup som Diino.se en perfekt julklapp.\r\n\r\n\r\n\r\nhttp://www.diino.se\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/diino_purple_large.png)\r\n\r\n\r\nMediespelare med touchscreen på 4,3\" som har WLAN, visar film i DVD-upplösning i många format, visar PDF-filer och kan spela in från TV med ett tillbehör. Finns med hårddisk upp till 160 GB och är den perfekta prylen på en långtråkig resa.\r\n\r\n\r\n\r\nhttp://www.archos.com\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/archos605.png)\r\n\r\n\r\nFör den som vill liva upp julledigheten lite finns ett paket med två radiostyrda helikoptrar gjorda för inomhusflygning! Helikoptrarna är utrustade med IR-sensor och IR-kanon - när en helikopter blir träffad stannar stjärtrotorn och helikoptern störtar.\r\n\r\n\r\n\r\nFinns på Teknikmagasinet\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/silverlit.png)\r\n\r\n\r\nMX Air är en mus som är gjord för att hållas fritt i luften, perfekt för att styra t.ex. en dator kopplad till TV:n. Man håller den som en fjärrkontroll (med handflatan under och tummen ovanpå) och den är förvånansvärt lätthanterad när man övat sig lite. MX Air går just nu under det putslustiga namnet \"MX-pekaren\" på kontoret.\r\n\r\n\r\nMer info hos Logitech\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/mxair.png)\r\n\r\n\r\nEn perfekt present till en kompis eller släkting som spelar elgitarr är hörlursförstärkaren amPlug. Den är ungefär stor som en tändsticksask, går på batterier och har uttag för både hörlurar och ingång för MP3-spelare om man vill ha backtracks. amPlug finns i tre varianter beroende på vilket musik man spelar - AC30, Classic Rock och Metal.\r\n\r\n\r\n\r\nhttp://www.voxamps.co.uk/amplug/\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/amplug.png)", + "html": "
Allt det som är bra med iPhone - stor touch-skärm, filmvisning, WLAN, webbläsare, som vanligt paketerat i Apples grymma design. Finns till skillnad från iPhone tillgänglig redan nu, även i Sverige, med inbyggt minne på 8 eller 16 GB.
http://www.apple.com/ipodtouch/
En väckarklocka som via ett armband mäter när det fysiologiskt passar bäst att väcka dig, inom den tidsperiod du har ställt in (t.ex. \"mellan 7:00 och 7:30\"). Gör att klockan ringer när det passar din sömncykel och att du (typ) alltid vaknar utvilad!
One Laptop Per Child (OLPC) är ett projekt för att utrusta barnen i världens utvecklingsländer med datorer, något som kommer att vara absolut nödvändigt för hjälpa dessa länder vidare i utvecklingen. Målet är att alla skolbarn ska få en egen. Om du skänker $200 så kommer en laptop att byggas och skickas till ett skolbarn, om du skänker $399 så får du dessutom en egen att ge till ett barn i din närhet.
http://laptopgiving.org/en/index.php
Ett problem många lär känna igen sig i är att ta hand om alla sina växande mängder digitala data - t.ex. alla de foton man tar med sin digitalkamera. Till släkt och vänner som har filer att vara rädda om är en tjänst för nätbackup som Diino.se en perfekt julklapp.
Mediespelare med touchscreen på 4,3\" som har WLAN, visar film i DVD-upplösning i många format, visar PDF-filer och kan spela in från TV med ett tillbehör. Finns med hårddisk upp till 160 GB och är den perfekta prylen på en långtråkig resa.
För den som vill liva upp julledigheten lite finns ett paket med två radiostyrda helikoptrar gjorda för inomhusflygning! Helikoptrarna är utrustade med IR-sensor och IR-kanon - när en helikopter blir träffad stannar stjärtrotorn och helikoptern störtar.
MX Air är en mus som är gjord för att hållas fritt i luften, perfekt för att styra t.ex. en dator kopplad till TV:n. Man håller den som en fjärrkontroll (med handflatan under och tummen ovanpå) och den är förvånansvärt lätthanterad när man övat sig lite. MX Air går just nu under det putslustiga namnet \"MX-pekaren\" på kontoret.
Mer info hos Logitech
En perfekt present till en kompis eller släkting som spelar elgitarr är hörlursförstärkaren amPlug. Den är ungefär stor som en tändsticksask, går på batterier och har uttag för både hörlurar och ingång för MP3-spelare om man vill ha backtracks. amPlug finns i tre varianter beroende på vilket musik man spelar - AC30, Classic Rock och Metal.
http://www.voxamps.co.uk/amplug/
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1197988380000, + "created_by": 6, + "updated_at": 1197988380000, + "updated_by": 6, + "published_at": 1197988380000, + "published_by": 6 + }, + { + "id": 161, + "title": "IE8 kommer och den följer standarder", + "slug": "ie8-kommer-och-den-foljer-standarder", + "markdown": "\r\nEnligt utvecklingsteamet för Internet Explorer har utvecklingen av nya versionen av Microsofts webbläsare nu kommit passerat en viktig milstolpe. IE8 har klarat av \"the acid test\" som är ett test av hur webbläsaren följer CSS-standarder. Microsoft har ju med rätta blivit kritiserat för att välja egna lösningar istället för att följa standarder och har nog känt av den senaste tidens konkurrens från bland andra FireFox. Det glädjer oss webbutvecklare som framöver får en enklare vardag när alla browsers stöder samma standarder.\r\nNär IE8 planeras att släppas är ännu oklart.\r\n\r\nSe intervju med utvecklingsteamet på Channel 9.\r\n\r\n![Bild](http://tekniken.nu/uploads/internetexplorer.gif)", + "html": "
Enligt utvecklingsteamet för Internet Explorer har utvecklingen av nya versionen av Microsofts webbläsare nu kommit passerat en viktig milstolpe. IE8 har klarat av \"the acid test\" som är ett test av hur webbläsaren följer CSS-standarder. Microsoft har ju med rätta blivit kritiserat för att välja egna lösningar istället för att följa standarder och har nog känt av den senaste tidens konkurrens från bland andra FireFox. Det glädjer oss webbutvecklare som framöver får en enklare vardag när alla browsers stöder samma standarder.
När IE8 planeras att släppas är ännu oklart.
Se intervju med utvecklingsteamet på Channel 9.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1087, + "created_at": 1198150680000, + "created_by": 1087, + "updated_at": 1198150680000, + "updated_by": 1087, + "published_at": 1198150680000, + "published_by": 1087 + }, + { + "id": 167, + "title": "Resultat: Julklappsläget", + "slug": "resultat-julklappslaget", + "markdown": "\r\n\r\n\r\nMånga väntar med sina inköp, vissa med godmodighet andra med en viss stress :-).\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/julklappar.png)", + "html": "Många väntar med sina inköp, vissa med godmodighet andra med en viss stress :-).
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1199799420000, + "created_by": 6, + "updated_at": 1199799420000, + "updated_by": 6, + "published_at": 1199799420000, + "published_by": 6 + }, + { + "id": 169, + "title": "Macbook Air - Världens tunnaste laptop?", + "slug": "macbook-air---varldens-tunnaste-laptop", + "markdown": "\r\n\r\n\r\nSteve Jobs höll idag sin årliga keynote på Macworld Expo, något som blivit synonymt med en lansering av banbrytande nyheter från Apple. I år blev det en laptop, en tunn sådan.\r\n\r\n\r\nMacbook Air är alltså senaste tillskottet i Apples familj bärbara datorer. Enligt Apple rör det sig om den tunnaste bärbara datorn i världen, knappa två centimeter som tjockast. Som vanligt är det en riktigt snygg pjäs Apples designers fått ur sig.\r\n\r\n\r\nUnder huven sitter dock inga haktappargrejer, en Core 2 Duo på 1,6 eller 1,8 GHz. Det enda som imponerar är att styrplattan har sk multitouch, samt att man kan få en solid state hårddisk som tillval.\r\n\r\n\r\nSer fram emot att få klämma på en snart!\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/macbookair.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/design_gal01_20080115.jpg)\r\n\r\n\r\n\r\n", + "html": "
Steve Jobs höll idag sin årliga keynote på Macworld Expo, något som blivit synonymt med en lansering av banbrytande nyheter från Apple. I år blev det en laptop, en tunn sådan.
Macbook Air är alltså senaste tillskottet i Apples familj bärbara datorer. Enligt Apple rör det sig om den tunnaste bärbara datorn i världen, knappa två centimeter som tjockast. Som vanligt är det en riktigt snygg pjäs Apples designers fått ur sig.
Under huven sitter dock inga haktappargrejer, en Core 2 Duo på 1,6 eller 1,8 GHz. Det enda som imponerar är att styrplattan har sk multitouch, samt att man kan få en solid state hårddisk som tillval.
Ser fram emot att få klämma på en snart!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1200430800000, + "created_by": 1085, + "updated_at": 1200430800000, + "updated_by": 1085, + "published_at": 1200430800000, + "published_by": 1085 + }, + { + "id": 171, + "title": "Solid state på frammarsch – men varning för varierande kvalitet!", + "slug": "solid-state-pa-frammarsch--men-varning-for-varierande-kvalitet", + "markdown": "\r\n\r\n\r\nSolid state diskar (SSD) är hårddiskar som använder sig av minneskretsar istället för traditionella magnetskivor. Fördelarna med dessa diskar är många. En hårddisk\r\nutan rörliga delar har högre tillförlitlighet, drar mindre ström och kan vara\r\nflera gånger snabbare än en vanlig hårddisk. SSD är nu också kraftigt på väg ned i pris och de flesta datortillverkare har börjat erbjuda dem som alternativ på framförallt bärbara datorer. Att vi står inför ett generationsskifte inom hårddiskar känns väldigt tydligt.\r\n\r\n\r\nHär är det dock läge för en varning, SSD-enheterna\r\ntillverkas med två olika tekniker, SLC och MLC. För närvarande är SLC i snitt\r\ntre gånger snabbare än MLC på grund av en bättre arkitektur. SLC-tekniken ger\r\nockså mycket högre tillförlitlighet. \r\n\r\n\r\nSom vanligt är det bättre alternativet dyrare. Om du vill\r\nvara tidig med SSD-baserad lagring gäller alltså att noga läsa på om produkten\r\nförst!\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/ssd.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/ssd_compare.png)", + "html": "
Solid state diskar (SSD) är hårddiskar som använder sig av minneskretsar istället för traditionella magnetskivor. Fördelarna med dessa diskar är många. En hårddisk
utan rörliga delar har högre tillförlitlighet, drar mindre ström och kan vara
flera gånger snabbare än en vanlig hårddisk. SSD är nu också kraftigt på väg ned i pris och de flesta datortillverkare har börjat erbjuda dem som alternativ på framförallt bärbara datorer. Att vi står inför ett generationsskifte inom hårddiskar känns väldigt tydligt.
Här är det dock läge för en varning, SSD-enheterna
tillverkas med två olika tekniker, SLC och MLC. För närvarande är SLC i snitt
tre gånger snabbare än MLC på grund av en bättre arkitektur. SLC-tekniken ger
också mycket högre tillförlitlighet.
Som vanligt är det bättre alternativet dyrare. Om du vill
vara tidig med SSD-baserad lagring gäller alltså att noga läsa på om produkten
först!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "med stor skillnad i hastighet och tillförlitlighet.", + "author_id": 1088, + "created_at": 1200568860000, + "created_by": 1088, + "updated_at": 1200568860000, + "updated_by": 1088, + "published_at": 1200568860000, + "published_by": 1088 + }, + { + "id": 178, + "title": "Squeezebox Duet", + "slug": "squeezebox-duet", + "markdown": "\r\n\r\n\r\nSqueezebox är i mina ögon det absolut bästa produktvalet för den som på ett smidigt sätt vill kunna lyssna på sin (lagliga) MP3-samling i sin ordinarie musikanläggning. Genom att installera en servermjukvara på sin dator får man tillgång till allt musikinnehåll via fjärrkontroll i soffan, samt ett helt godkänt webbgränssnitt för att bygga spellistor etc. Det finns en handfull konkurrenter, men Squeezebox brukar oftast ta hem de tester som görs. Jag har haft deras första trådlösa modell i ett antal år och har alltid varit ruggigt nöjd.\r\n\r\n\r\nFör något år sedan köpte Logitech upp företaget bakom Squeezebox (Slim Devices) och sedan dess har det varit tämligen tyst. Men nu kommer första riktiga resultatet av samarbetet: Squeezebox Duet.\r\n\r\n\r\nDen stora skillnaden i Duet är att spelaren bara blivit en svart låda att placera i stereohyllan, displayen har istället flyttats till fjärrkontrollen som även den försetts med trådlöst nätverk. Den nya färgdisplayen ser riktigt fin ut och förhoppningsvis är gränssnittet utformat på ett trevligt ipod-aktigt sätt.\r\n\r\n\r\nSqueezebox Duet kostar $399 i USA, så i Sverige lär vi väl få betala upp emot 4000:-.\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/squeezeboxduet1.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/squeezeboxduet2.png)", + "html": "
Squeezebox är i mina ögon det absolut bästa produktvalet för den som på ett smidigt sätt vill kunna lyssna på sin (lagliga) MP3-samling i sin ordinarie musikanläggning. Genom att installera en servermjukvara på sin dator får man tillgång till allt musikinnehåll via fjärrkontroll i soffan, samt ett helt godkänt webbgränssnitt för att bygga spellistor etc. Det finns en handfull konkurrenter, men Squeezebox brukar oftast ta hem de tester som görs. Jag har haft deras första trådlösa modell i ett antal år och har alltid varit ruggigt nöjd.
För något år sedan köpte Logitech upp företaget bakom Squeezebox (Slim Devices) och sedan dess har det varit tämligen tyst. Men nu kommer första riktiga resultatet av samarbetet: Squeezebox Duet.
Den stora skillnaden i Duet är att spelaren bara blivit en svart låda att placera i stereohyllan, displayen har istället flyttats till fjärrkontrollen som även den försetts med trådlöst nätverk. Den nya färgdisplayen ser riktigt fin ut och förhoppningsvis är gränssnittet utformat på ett trevligt ipod-aktigt sätt.
Squeezebox Duet kostar $399 i USA, så i Sverige lär vi väl få betala upp emot 4000:-.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1202295600000, + "created_by": 1085, + "updated_at": 1202295600000, + "updated_by": 1085, + "published_at": 1202295600000, + "published_by": 1085 + }, + { + "id": 182, + "title": "Omröstningen: Vilket format vinner?", + "slug": "omrostningen-vilket-format-vinner", + "markdown": "\r\n\r\n\r\nVi frågade om vilket format som kommer vinna filmkriget - här är resultatet! Helt tippat tror de flesta att Blu-ray kommer gå vinnande ur striden. Sedan frågan ställdes har ännu fler tecken dykt upp som avgör hela frågan, bland annat har SF och Scanbox valt att bara distribuera Blu-ray i Sverige. De senaste nyheterna säger att en av HD DVD-lägrets starkast förkämpar kommer att ge upp kampen - Toshiba planerar att lägga ner tillverkningen av HD DVD-spelare.\r\n\r\n\r\nAtt HD DVD har förlorat kriget känns uppenbart, men själv tycker jag dock att det är för tidigt att säga att Blu-ray har vunnit. Som Tommy K Johansson påpekade i sin blogg för några veckor sedan så är den helt digitala distributionen (nedladdning, inga plastskivor inblandade) den intressantaste kanalen och den som rimligen borde vara största hotet mot Blu-ray.\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/hdbluray.png)", + "html": "
Vi frågade om vilket format som kommer vinna filmkriget - här är resultatet! Helt tippat tror de flesta att Blu-ray kommer gå vinnande ur striden. Sedan frågan ställdes har ännu fler tecken dykt upp som avgör hela frågan, bland annat har SF och Scanbox valt att bara distribuera Blu-ray i Sverige. De senaste nyheterna säger att en av HD DVD-lägrets starkast förkämpar kommer att ge upp kampen - Toshiba planerar att lägga ner tillverkningen av HD DVD-spelare.
Att HD DVD har förlorat kriget känns uppenbart, men själv tycker jag dock att det är för tidigt att säga att Blu-ray har vunnit. Som Tommy K Johansson påpekade i sin blogg för några veckor sedan så är den helt digitala distributionen (nedladdning, inga plastskivor inblandade) den intressantaste kanalen och den som rimligen borde vara största hotet mot Blu-ray.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1203333540000, + "created_by": 6, + "updated_at": 1203333540000, + "updated_by": 6, + "published_at": 1203333540000, + "published_by": 6 + }, + { + "id": 187, + "title": "Första betaversionen av Internet Explorer 8 finns nu att ladda ner", + "slug": "forsta-betaversionen-av-internet-explorer-8-finns-nu-att-ladda-ner", + "markdown": "\r\n\r\n\r\nNu när konkurrensen från andra webbläsare som FireFox och Safari har börjat bli hårdare så har Microsoft lovat att nya versioner av Internet Explorer komma oftare. Detta verkar besannas i och med att första betaversionen av Internet Explorer 8 idag har lagts upp för nedladdning.\r\n\r\n\r\nSom vi tidigare skrivit om klarade utvecklingsversionen standardtestet ACID2 och Microsofts eget IE-team har också berättat om en helt ny syn på att följa standarder (i korthet kommer standardbeteendet i IE8 vara det som följer standarder bäst istället för att standardbeteendet skulle likna IE6/IE7 för bakåtkompatibilitet som man tänkt tidigare).\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/ie8.png)", + "html": "
Nu när konkurrensen från andra webbläsare som FireFox och Safari har börjat bli hårdare så har Microsoft lovat att nya versioner av Internet Explorer komma oftare. Detta verkar besannas i och med att första betaversionen av Internet Explorer 8 idag har lagts upp för nedladdning.
Som vi tidigare skrivit om klarade utvecklingsversionen standardtestet ACID2 och Microsofts eget IE-team har också berättat om en helt ny syn på att följa standarder (i korthet kommer standardbeteendet i IE8 vara det som följer standarder bäst istället för att standardbeteendet skulle likna IE6/IE7 för bakåtkompatibilitet som man tänkt tidigare).
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "t ladda ner för den som vill testa första betaversionen!", + "author_id": 6, + "created_at": 1204810800000, + "created_by": 6, + "updated_at": 1204810800000, + "updated_by": 6, + "published_at": 1204810800000, + "published_by": 6 + }, + { + "id": 188, + "title": "Apple släpper iPhone SDK samt specar Mobile OSX 2.0", + "slug": "apple-slapper-iphone-sdk-samt-specar-mobile-osx-20", + "markdown": "\r\n\r\n\r\nIdag släpper Apple såväl sitt SDK till iPhone/iPod Touch som specar på version 2.0 av operativsystemet Mobile OSX, och det är en imponerande lista av funktioner som finns tillgängliga. Bland annat finns tillgång till \"Location Core\" som är ett api för GPS och cellposition, Exchange Active Sync och Cisco vpn klient inbyggt i operativsystemet. Vidare finns tillgång till OpenGL ES vilket är en lightversion av OpenGL för mobila klienter.\r\n\r\n\r\nDet finns även verktyg så som iPhone simulator så det kittlar ju i fingrarna att börja testa utveckla någon roligt redan nu!\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/iphone.png)", + "html": "
Idag släpper Apple såväl sitt SDK till iPhone/iPod Touch som specar på version 2.0 av operativsystemet Mobile OSX, och det är en imponerande lista av funktioner som finns tillgängliga. Bland annat finns tillgång till \"Location Core\" som är ett api för GPS och cellposition, Exchange Active Sync och Cisco vpn klient inbyggt i operativsystemet. Vidare finns tillgång till OpenGL ES vilket är en lightversion av OpenGL för mobila klienter.
Det finns även verktyg så som iPhone simulator så det kittlar ju i fingrarna att börja testa utveckla någon roligt redan nu!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1087, + "created_at": 1204885800000, + "created_by": 1087, + "updated_at": 1204885800000, + "updated_by": 1087, + "published_at": 1204885800000, + "published_by": 1087 + }, + { + "id": 193, + "title": "Nya och bättre kodexempel", + "slug": "nya-och-battre-kodexempel", + "markdown": "\r\n\r\n\r\nTack vare att min kollega Erik hittade ett otroligt fiffigt JavaScript för att syntax highlighting så har tekniken.nu numera fina och ytterst läsbara kodexempel. Här är ett exempel:\r\n\r\n\r\n```prettyprint lang-c-sharp\r\nclass Hello\r\n{\r\n\tpublic static void Main()\r\n\t{\r\n\t\tConsole.WriteLine(\"Pretty code!\");\r\n\t}\r\n}\r\n```\r\n\r\n\r\n\r\n(En stund under releasen så pekade siten på vår utvecklingsdatabas. Ledsen om någons RSS har fått konstiga artiklar och konstigt kodade åäö, nu fungerar allt som det ska igen!). \r\n\r\n", + "html": "
Tack vare att min kollega Erik hittade ett otroligt fiffigt JavaScript för att syntax highlighting så har tekniken.nu numera fina och ytterst läsbara kodexempel. Här är ett exempel:
(En stund under releasen så pekade siten på vår utvecklingsdatabas. Ledsen om någons RSS har fått konstiga artiklar och konstigt kodade åäö, nu fungerar allt som det ska igen!).
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1207583940000, + "created_by": 6, + "updated_at": 1207583940000, + "updated_by": 6, + "published_at": 1207583940000, + "published_by": 6 + }, + { + "id": 195, + "title": "Nyheter från RSA", + "slug": "nyheter-fran-rsa", + "markdown": "\r\n\r\n\r\nRSA håller i veckorna sina partnerkonferenser i Europa och USA och lanserar i samband med dem ett antal större nyheter för 2008. Här är ett axplock:\r\n\r\nEnhancements to RSA Data Loss Prevention (DLP) Suite \r\n\r\nExpanded Partnership Between Cisco and RSA \r\n\r\nIntegration between EMC’s Voyence Control and RSA’s enVision™ products \r\n\r\nNext phase of RSA’s Identity Assurance solution \r\n\r\nLaunch of RSA® Authentication Manager 7.1 \r\n\r\nLaunch of RSA® Key Manager for the Datacenter \r\n\r\nEMC’s launch of 5 new information-centric security services \r\n\r\n\r\n\r\nFramförallt intressant är att gamla trotjänaren i SecureID plattformen - Authentication Manager 6.1 - uppgraderas till version 7.1. Med på featurelistan är SMS-tokens samt nytt utökat webGUI. En fullständig belysning av produktuppgraderingen kommer så fort vi hunnit uppgradera!\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/14555__rsa_security.png)", + "html": "
RSA håller i veckorna sina partnerkonferenser i Europa och USA och lanserar i samband med dem ett antal större nyheter för 2008. Här är ett axplock:
Framförallt intressant är att gamla trotjänaren i SecureID plattformen - Authentication Manager 6.1 - uppgraderas till version 7.1. Med på featurelistan är SMS-tokens samt nytt utökat webGUI. En fullständig belysning av produktuppgraderingen kommer så fort vi hunnit uppgradera!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1207656000000, + "created_by": 1085, + "updated_at": 1207656000000, + "updated_by": 1085, + "published_at": 1207656000000, + "published_by": 1085 + }, + { + "id": 197, + "title": "Backup Exec 12 - Värt att uppgradera?", + "slug": "backup-exec-12---vart-att-uppgradera", + "markdown": "\r\n\r\n\r\nSymantec släppte Backup Exec 12 i slutet av februari, vi har kollat på nyheterna i Windowsversionen.\r\n\r\n\r\nSpontant är det stöd för Windows Server 2008 som är den stora nyheten, men det finns några fler intressanta förändringar:\r\n\r\n\r\nAdvanced Open File Option och Intelligent Disaster Recovery ingår numera i grundlicenser från att tidigare varit tillvalsagenter. Man skall även kunna utvärdera tillägsfunktioner efter att man aktiverat grundlicensen, något som tidigare inte var möjligt. Integration med Virtual Server kan också visa sig värdefull om man arbetar mycket med virtualisering.\r\n\r\n\r\nSymantec Protection Network är namnet på Symantecs satsning på Onlinebackup. Integration mot onlinelagringen finns med i BE12. Det här kan vara intressant att titta mer på om man är ute efter en onlinebackuplösning som integrerar med befintlig backupstruktur. Läs mer om SPN hos Symantec.\r\n\r\n\r\nHär är hela listan med nya funktioner:\r\n\r\nWindows Server 2008 support (both as a remote system, and as a media server) \r\n\r\nWindows Server 2008 Core support (as a remote system only, and not with Exchange, Sharepoint or SQL agent) \r\n\r\nSupport for Microsoft Virtual Server (backups up VSS snapshots of virtual machines) \r\n\r\nT10 hardware encryption support \r\n\r\nYou can now evaluate options after licensing Backup Exec \r\n\r\nImproved Calendar view \r\n\r\nAlert to renew Backup Exec support contract \r\n\r\nAdvanced Open File Option and Intelligent Disaster Recovery are now included \r\n\r\nEnterprise Vault Agent (Enterprise Vault is an information archiving solution from Symantec.) \r\n\r\nExchange Off-Host backups are now supported \r\n\r\nIntegration with the Symantec Protection Network online backup service. \r\n\r\nIntegration with Symantec Endpoint Protection. \r\n\r\nBackup to disk folders storing Granular Restore Technology data now adhere to media set rules. \r\n\r\n![Bild](http://tekniken.nu/uploads/symantec-logo.png)", + "html": "
Symantec släppte Backup Exec 12 i slutet av februari, vi har kollat på nyheterna i Windowsversionen.
Spontant är det stöd för Windows Server 2008 som är den stora nyheten, men det finns några fler intressanta förändringar:
Advanced Open File Option och Intelligent Disaster Recovery ingår numera i grundlicenser från att tidigare varit tillvalsagenter. Man skall även kunna utvärdera tillägsfunktioner efter att man aktiverat grundlicensen, något som tidigare inte var möjligt. Integration med Virtual Server kan också visa sig värdefull om man arbetar mycket med virtualisering.
Symantec Protection Network är namnet på Symantecs satsning på Onlinebackup. Integration mot onlinelagringen finns med i BE12. Det här kan vara intressant att titta mer på om man är ute efter en onlinebackuplösning som integrerar med befintlig backupstruktur. Läs mer om SPN hos Symantec.
Här är hela listan med nya funktioner:
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1088, + "created_at": 1207930200000, + "created_by": 1088, + "updated_at": 1207930200000, + "updated_by": 1088, + "published_at": 1207930200000, + "published_by": 1088 + }, + { + "id": 199, + "title": "Linksys-router föds på nytt med open source-firmware", + "slug": "linksys-router-fods-pa-nytt-med-open-source-firmware", + "markdown": "\r\n\r\n\r\nEfter att jag bytte router från en Netgear till en Linksys WRT54GL (eller Cisco heter de väl egentligen nuförtiden) så började några småsaker krångla. Bland annat slutade min IP-telefonibox från D-link att fungera helt som den skulle. Eftersom min kollega Magnus Rygart redan hade testat och var nöjd med en open source-variant av firmware för Linksysen som heter DD-WRT så tänkte jag att det kanske också skulle lösa mina problem.\r\n\r\n\r\nDet man får med den nya firmwaren är bland annat:\r\n\r\n\r\n Stöd för att reservera DHCP-adresser\r\n Massa av inbyggda tjänster (SNMP, syslog, SSH, telnet)\r\n Stöd för virtuella LAN\r\n Funktioner för att ändra signalstyrka\r\n Överklockning av den inbyggda processorn\r\n Bättre Quality of Service\r\n Wake on LAN\r\n IPv6\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/wrt54gl.png)\r\n\r\n\r\nSagt och gjort - jag laddade ner senaste stabila versionen av DD-WRT\r\n(v23SP2) och installerade. Man måste göra installationen i två steg\r\neftersom den nya firmwaren inte ryms i minnet om man försöker\r\nuppgradera inifrån Linksys originalfirmware. Såhär gör man:\r\n\r\n\r\nLadda ner miniversionen av DD-WRT.\r\nUppgradera routern till miniversionen med den inbyggda uppgraderingsfunktion i routerns webbgränssnitt.\r\nGör\r\nen reset (tryck in resetknappen, dra ur sladden, stoppa tillbaka, vänta\r\n30s, släpp reset). Detta är ett viktigt moment - hade några svettiga\r\nminuter där routern inte svarade och jag inte hade kommit ihåg att läsa\r\nhela instruktionen, och förstås inte kunde surfa upp den igen.\r\nUppgradera\r\nroutern till standardversionen av DD-WRT (det finns en VPN-version och\r\nen VOIP-version, de behöver du bara om du ska köra VPN-server eller\r\nSIP-server på själva routern).\r\n\r\n\r\n\r\n\r\nEfter uppgradering hade jag ett nytt fint gränssnitt med massor av nya funktioner. Ganska snabbt (efter c:a 30 minuter) förbyttes dock glädjen i irritation - att surfa på webbsidor slutade i princip helt att fungera. Konstigt nog fortsatte dock en fjärrstyrning som var igång att fungera alldeles utmärkt. Lite Googlande senare kunde jag konstatera att version 23 av DD-WRT tydligen har lite problem med att antalet IP-anslutningar är begränsat. Det i kombination med en applikation som ger upphov till många anslutningar, t.ex. en BitTorrent-klient som utorrent, gör att anslutningarna lätt tar slut. Den uppenbara lösningen - att ställa ner antalet anslutningar i utorrent - hjälper tyvärr inte, eftersom den anslutningarna kommer utifrån och utorrent inte kan avvisa dem på routernivå. När anslutningen har avvisats av applikationen så kommer det att ta en stund för routern att känna av det och under den tiden kommer antalet anslutningar att slå i taket.\r\n\r\n\r\nVersion 24 beta av DD-WRT har bättre funktioner för att kontrollera anslutningar, så jag installerade den istället. Jag ställde upp antalet samtidiga anslutningar från 500 till 1000, jag lät utorrent ligga kvar på 250 anslutningar och sänkte timeouttiden för IP-anslutningar ganska rejält. Nu ligger antalet aktiva anslutningar på c:a 500 av 1000 och routern fungerar fint.\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/dd-wrt-ports.png)\r\n\r\n\r\nNu fungerar allt fint! En av de nya funktioner jag gillar mest är Wake on LAN. Det betyder att routern kan skicka ett s.k. \"Magic Packet\" som gör att en dator på det lokala nätverket sätts igång, trots att den tidigare var helt avstängd. Jag har haft min hemmadator påslagen på dagarna rätt mycket, ifall man skulle behöva några filer eller testa en webbplats från ett annat nät än kontorets. Det har dock känts lite onödigt och miljöovänligt. Nu kan jag fjärrlogga in på routern och slå på datorn ifall jag behöver den.\r\n\r\n\r\nAlltsomallt är DD-WRT ett riktigt lyft för WRT54GL. Om du är beredd på lite strul i installation och konfiguration så kommer du att få en mycket bättre router. Nu återstår bara för mig att undersöka om mitt originalproblem är löst - kommer SIP-boxen att kunna ansluta?\r\n\r\n", + "html": "
Efter att jag bytte router från en Netgear till en Linksys WRT54GL (eller Cisco heter de väl egentligen nuförtiden) så började några småsaker krångla. Bland annat slutade min IP-telefonibox från D-link att fungera helt som den skulle. Eftersom min kollega Magnus Rygart redan hade testat och var nöjd med en open source-variant av firmware för Linksysen som heter DD-WRT så tänkte jag att det kanske också skulle lösa mina problem.
Det man får med den nya firmwaren är bland annat:
- Stöd för att reservera DHCP-adresser
- Massa av inbyggda tjänster (SNMP, syslog, SSH, telnet)
- Stöd för virtuella LAN
- Funktioner för att ändra signalstyrka
- Överklockning av den inbyggda processorn
- Bättre Quality of Service
- Wake on LAN
- IPv6
Sagt och gjort - jag laddade ner senaste stabila versionen av DD-WRT
(v23SP2) och installerade. Man måste göra installationen i två steg
eftersom den nya firmwaren inte ryms i minnet om man försöker
uppgradera inifrån Linksys originalfirmware. Såhär gör man:
- Ladda ner miniversionen av DD-WRT.
- Uppgradera routern till miniversionen med den inbyggda uppgraderingsfunktion i routerns webbgränssnitt.
- Gör
en reset (tryck in resetknappen, dra ur sladden, stoppa tillbaka, vänta
30s, släpp reset). Detta är ett viktigt moment - hade några svettiga
minuter där routern inte svarade och jag inte hade kommit ihåg att läsa
hela instruktionen, och förstås inte kunde surfa upp den igen. - Uppgradera
routern till standardversionen av DD-WRT (det finns en VPN-version och
en VOIP-version, de behöver du bara om du ska köra VPN-server eller
SIP-server på själva routern).
Efter uppgradering hade jag ett nytt fint gränssnitt med massor av nya funktioner. Ganska snabbt (efter c:a 30 minuter) förbyttes dock glädjen i irritation - att surfa på webbsidor slutade i princip helt att fungera. Konstigt nog fortsatte dock en fjärrstyrning som var igång att fungera alldeles utmärkt. Lite Googlande senare kunde jag konstatera att version 23 av DD-WRT tydligen har lite problem med att antalet IP-anslutningar är begränsat. Det i kombination med en applikation som ger upphov till många anslutningar, t.ex. en BitTorrent-klient som utorrent, gör att anslutningarna lätt tar slut. Den uppenbara lösningen - att ställa ner antalet anslutningar i utorrent - hjälper tyvärr inte, eftersom den anslutningarna kommer utifrån och utorrent inte kan avvisa dem på routernivå. När anslutningen har avvisats av applikationen så kommer det att ta en stund för routern att känna av det och under den tiden kommer antalet anslutningar att slå i taket.
Version 24 beta av DD-WRT har bättre funktioner för att kontrollera anslutningar, så jag installerade den istället. Jag ställde upp antalet samtidiga anslutningar från 500 till 1000, jag lät utorrent ligga kvar på 250 anslutningar och sänkte timeouttiden för IP-anslutningar ganska rejält. Nu ligger antalet aktiva anslutningar på c:a 500 av 1000 och routern fungerar fint.
Nu fungerar allt fint! En av de nya funktioner jag gillar mest är Wake on LAN. Det betyder att routern kan skicka ett s.k. \"Magic Packet\" som gör att en dator på det lokala nätverket sätts igång, trots att den tidigare var helt avstängd. Jag har haft min hemmadator påslagen på dagarna rätt mycket, ifall man skulle behöva några filer eller testa en webbplats från ett annat nät än kontorets. Det har dock känts lite onödigt och miljöovänligt. Nu kan jag fjärrlogga in på routern och slå på datorn ifall jag behöver den.
Alltsomallt är DD-WRT ett riktigt lyft för WRT54GL. Om du är beredd på lite strul i installation och konfiguration så kommer du att få en mycket bättre router. Nu återstår bara för mig att undersöka om mitt originalproblem är löst - kommer SIP-boxen att kunna ansluta?
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "irmware med helt nya funktioner öppnades en helt ny värld!", + "author_id": 6, + "created_at": 1208339220000, + "created_by": 6, + "updated_at": 1208339220000, + "updated_by": 6, + "published_at": 1208339220000, + "published_by": 6 + }, + { + "id": 202, + "title": "Inget SP3 för XP denna gång...", + "slug": "inget-sp3-for-xp-denna-gang", + "markdown": "\r\n\r\n\r\nWindows XP servicepack 3 skulle enligt plan ha släppts igår kväll, men i elfte timmen upptäckte Microsoft ett kompatabilitetsproblem med den för gemene man okända produkten Microsoft Dynamics Retail Management System (RMS). Problemet ansågs tydligen tillräckligt allvarligt för att skjuta hela släppet på obestämd tid.\r\n\r\n\r\nVi som fortfarande installerar en och annan Windows XP åt kunder ser fram emot att få alla säkerhetspatchar sedan SP2 i ett och samma paket, som det är idag kan Windows Update patchning lätt ta 40 minuter på en nyinstallerad XP SP2.\r\n\r\n\r\nKälla: IDG\r\n\r\n\r\n\r\nFotnot: TechReef länkar till den här filen på Microsofts egen nedladdningsserver, som ser ut att vara den osläppta SP3: \"windowsxp-kb936929-sp3-x86-enu.exe\". Jag har dock inte testat den, så labbmiljöer endast...\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/vista.png)", + "html": "
Windows XP servicepack 3 skulle enligt plan ha släppts igår kväll, men i elfte timmen upptäckte Microsoft ett kompatabilitetsproblem med den för gemene man okända produkten Microsoft Dynamics Retail Management System (RMS). Problemet ansågs tydligen tillräckligt allvarligt för att skjuta hela släppet på obestämd tid.
Vi som fortfarande installerar en och annan Windows XP åt kunder ser fram emot att få alla säkerhetspatchar sedan SP2 i ett och samma paket, som det är idag kan Windows Update patchning lätt ta 40 minuter på en nyinstallerad XP SP2.
Källa: IDG
Fotnot: TechReef länkar till den här filen på Microsofts egen nedladdningsserver, som ser ut att vara den osläppta SP3: \"windowsxp-kb936929-sp3-x86-enu.exe\". Jag har dock inte testat den, så labbmiljöer endast...
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1085, + "created_at": 1209576600000, + "created_by": 1085, + "updated_at": 1209576600000, + "updated_by": 1085, + "published_at": 1209576600000, + "published_by": 1085 + }, + { + "id": 203, + "title": "Google Translate nu på svenska!", + "slug": "google-translate-nu-pa-svenska", + "markdown": "\r\n\r\n\r\nIDG berättar idag om att Google Translate har kommit på svenska. Som frekvent användare av Altavistas Babelfish (bland annat för att översätta från kinesiska och japanska) så har jag varit lite skeptisk till Translate, som jag tycker har varit lite sämre. Men nu har Google hittat sin killer app - i alla fall för oss svenskar: översättning till och från svenska!\r\n\r\n\r\nVisst blir det fel ibland som med all maskinöversättning, men jag tycker att följande slumpvis valda stycke från DNs webbupplaga är riktigt imponerande:\r\n\r\nHan påpekar att deka-BDE är bioackumulerande, det vill säga ämnet lagras i kroppen hos levande organismer. Det kan skada nervsystemet och reproduktionen, och är möjligen också cancerframkallande.\r\n\r\nblir\r\n\r\n\r\n\r\nHe points out that deca-BDE are bioaccumulative, that is to say the substance is stored in the body of living organisms. It can damage the nervous system and reproduction, and is possibly carcinogenic.\r\n\r\n\r\n\r\nSjälvklart finns i god webb 2.0-anda också funktioner för att rätta felaktiga översättningar och skicka in som feedback.\r\n\r\n\r\nTesta själv detta inlägg översatt till engelska.\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/google_logo.png)", + "html": "
IDG berättar idag om att Google Translate har kommit på svenska. Som frekvent användare av Altavistas Babelfish (bland annat för att översätta från kinesiska och japanska) så har jag varit lite skeptisk till Translate, som jag tycker har varit lite sämre. Men nu har Google hittat sin killer app - i alla fall för oss svenskar: översättning till och från svenska!
Visst blir det fel ibland som med all maskinöversättning, men jag tycker att följande slumpvis valda stycke från DNs webbupplaga är riktigt imponerande:
Han påpekar att deka-BDE är bioackumulerande, det vill säga ämnet lagras i kroppen hos levande organismer. Det kan skada nervsystemet och reproduktionen, och är möjligen också cancerframkallande.
blir
He points out that deca-BDE are bioaccumulative, that is to say the substance is stored in the body of living organisms. It can damage the nervous system and reproduction, and is possibly carcinogenic.
Självklart finns i god webb 2.0-anda också funktioner för att rätta felaktiga översättningar och skicka in som feedback.
Testa själv detta inlägg översatt till engelska.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "rän nu, när Translate har fått stöd för svenska!", + "author_id": 6, + "created_at": 1210262700000, + "created_by": 6, + "updated_at": 1210262700000, + "updated_by": 6, + "published_at": 1210262700000, + "published_by": 6 + }, + { + "id": 206, + "title": "Vista på eller av?", + "slug": "vista-pa-eller-av", + "markdown": "\r\n\r\n\r\nVista väcker starka åsikter! Cirka 60% av de röstande vill ha eller har Vista, men SP1 verkar inte ha påverkat den åsikten i någon större omfattning (kan väl inte påstå att jag har märkt någon större skillnad efter installationen heller precis). 40% vill inte ha Vista.\r\n\r\n\r\nGlöm inte att rösta på den nya frågan som handlar om mobiltelefoner!\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/vistasp1.png)", + "html": "
Vista väcker starka åsikter! Cirka 60% av de röstande vill ha eller har Vista, men SP1 verkar inte ha påverkat den åsikten i någon större omfattning (kan väl inte påstå att jag har märkt någon större skillnad efter installationen heller precis). 40% vill inte ha Vista.
Glöm inte att rösta på den nya frågan som handlar om mobiltelefoner!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1211565240000, + "created_by": 6, + "updated_at": 1211565240000, + "updated_by": 6, + "published_at": 1211565240000, + "published_by": 6 + }, + { + "id": 207, + "title": "Nya funktioner i Google Maps och Google Earth direkt i webbläsaren", + "slug": "nya-funktioner-i-google-maps-och-google-earth-direkt-i-webblasaren", + "markdown": "\r\n\r\n\r\nFör några dagar sedan uttökade Google sin Google Maps med möjligheten att enkelt visa bilder och information från Wikipedia direkt i webbläsaren. En ny knapp vid namn \"More...\" finns uppe i högra hörnet vilken ger tillgång till dessa funktioner. Det blir riktigt snyggt med svå bilder utspridda kartan.\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/gmaps-small2.png)\r\n\r\n\r\nIdag släppte de även en webbläsarplugin för Google Earth (det fristående programmet som visar en 3d-rendering av jordklotet). Än så länge bara tillgänglig för Windows, och fortfarande i utvecklingsstadiet, men redan nu ganska stabil och snabb. På utvecklingssiten för Google Earth API har de även demos där de gör olika mashups, bl.a. ett där man får köra omkring med en mjölkbil i 3d-världen.\r\n\r\n\r\nDet nya API:et är såpass likt det befintliga API som finns för Google Maps att Google hävdar att om man redan använder Maps så skall det enkelt gå att byta över till Earth.\r\n\r\n\r\n\r\nDet här släpps samtidigt som Google har sin stora I/O-konferens), vars fokus är just på mashups och nya användingar av olika webbkomponenter. Förmodligen kommer vi inom snart se många mer innovativa användingsområden för Google Earth i webbläsare.\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/gmaps2.png)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/gmaps3.png)", + "html": "
För några dagar sedan uttökade Google sin Google Maps med möjligheten att enkelt visa bilder och information från Wikipedia direkt i webbläsaren. En ny knapp vid namn \"More...\" finns uppe i högra hörnet vilken ger tillgång till dessa funktioner. Det blir riktigt snyggt med svå bilder utspridda kartan.
Idag släppte de även en webbläsarplugin för Google Earth (det fristående programmet som visar en 3d-rendering av jordklotet). Än så länge bara tillgänglig för Windows, och fortfarande i utvecklingsstadiet, men redan nu ganska stabil och snabb. På utvecklingssiten för Google Earth API har de även demos där de gör olika mashups, bl.a. ett där man får köra omkring med en mjölkbil i 3d-världen.
Det nya API:et är såpass likt det befintliga API som finns för Google Maps att Google hävdar att om man redan använder Maps så skall det enkelt gå att byta över till Earth.
Det här släpps samtidigt som Google har sin stora I/O-konferens), vars fokus är just på mashups och nya användingar av olika webbkomponenter. Förmodligen kommer vi inom snart se många mer innovativa användingsområden för Google Earth i webbläsare.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": " i webbläsaren.", + "author_id": 1086, + "created_at": 1212069480000, + "created_by": 1086, + "updated_at": 1212069480000, + "updated_by": 1086, + "published_at": 1212069480000, + "published_by": 1086 + }, + { + "id": 209, + "title": "Första tjuvtitten på Android", + "slug": "forsta-tjuvtitten-pa-android", + "markdown": "\r\n\r\n\r\nGoogle tycker att det saknas en vettig mobil plattform som kan hantera applikationer med avancerade webbgränssnitt. Därför har man startat projektet Android - ett Linuxbaserat operativsystem för mobiltelefoner, open source och med ett kraftfullt API. Webbläsaren har man valt att basera på Webkit, samma renderingsplattform som används i Safari. Stora mobiltillverkare som Samsung, LG och HTC har redan meddelat att de kommer att släppa Android-baserade mobiler.\r\n\r\n\r\nPå Googles I/O-konferens visades en prototyp av en Android-mobil för första gången (spola fram till c:a 23 minuter för Android-delen):\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/androiddemo.png)", + "html": "
Google tycker att det saknas en vettig mobil plattform som kan hantera applikationer med avancerade webbgränssnitt. Därför har man startat projektet Android - ett Linuxbaserat operativsystem för mobiltelefoner, open source och med ett kraftfullt API. Webbläsaren har man valt att basera på Webkit, samma renderingsplattform som används i Safari. Stora mobiltillverkare som Samsung, LG och HTC har redan meddelat att de kommer att släppa Android-baserade mobiler.
På Googles I/O-konferens visades en prototyp av en Android-mobil för första gången (spola fram till c:a 23 minuter för Android-delen):
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1212144900000, + "created_by": 6, + "updated_at": 1212144900000, + "updated_by": 6, + "published_at": 1212144900000, + "published_by": 6 + }, + { + "id": 210, + "title": "iPhone 3G i Sverige 11 juli!", + "slug": "iphone-3g-i-sverige-11-juli", + "markdown": "\r\n\r\n\r\nDen nya iPhone som alla har spekulerat om (även vi - redan 10 september förra året, även\r\nom ryktet då var falskt) utannonserades på Apples keynote-presentation\r\ni förrgår kväll. Den nya iPhonen kommer att ha:\r\n\r\n\r\n3G (HSPDA, aka \"Turbo-3G\")\r\nInbyggd GPS\r\nNy mjukvara med en massa fiffiga funktioner för utvecklare, iPhone 2.0 (gamla iPhones och iPod Touch kan uppgraderas till 2.0)\r\nBättre stöd för Office och Exchange\r\nLägre pris\r\n\r\n\r\nSverige\r\nhar placerats i listan över de 22 länder som kommer att få den nya\r\niPhonen först - redan 11 juli, vilket är mycket tidigare än vad jag\r\nsjälv hade gissat på. Telia är den operatör som kommer att få ensamrätt\r\nunder en period. I USA kostar iPhone 3G $199 men måste köpas ihop med\r\nett abonnemang med bindningstid, och så kommer det gissningsvis att\r\nvara även här.\r\n\r\n\r\nFör den som inte orkar titta på 107 minuter Steve Jobs så har\r\nbloggen Mahalo Daily klippt ihop en version på 60 sekunder som\r\ninnehåller det viktigaste (hittad på både Digg och Macfeber).\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/iphone3g.png)\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n", + "html": "
Den nya iPhone som alla har spekulerat om (även vi - redan 10 september förra året, även
om ryktet då var falskt) utannonserades på Apples keynote-presentation
i förrgår kväll. Den nya iPhonen kommer att ha:
- 3G (HSPDA, aka \"Turbo-3G\")
- Inbyggd GPS
- Ny mjukvara med en massa fiffiga funktioner för utvecklare, iPhone 2.0 (gamla iPhones och iPod Touch kan uppgraderas till 2.0)
- Bättre stöd för Office och Exchange
- Lägre pris
Sverige
har placerats i listan över de 22 länder som kommer att få den nya
iPhonen först - redan 11 juli, vilket är mycket tidigare än vad jag
själv hade gissat på. Telia är den operatör som kommer att få ensamrätt
under en period. I USA kostar iPhone 3G $199 men måste köpas ihop med
ett abonnemang med bindningstid, och så kommer det gissningsvis att
vara även här.
För den som inte orkar titta på 107 minuter Steve Jobs så har
bloggen Mahalo Daily klippt ihop en version på 60 sekunder som
innehåller det viktigaste (hittad på både Digg och Macfeber).
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1213202580000, + "created_by": 6, + "updated_at": 1213202580000, + "updated_by": 6, + "published_at": 1213202580000, + "published_by": 6 + }, + { + "id": 212, + "title": "SQL Server 2008 finns nu som Release Candidate", + "slug": "sql-server-2008-finns-nu-som-release-candidate", + "markdown": "\r\n\r\n\r\n\r\nJohan Lindfors tipsar på sin blogg om att det förra veckan släpptes en s.k. Release Candidate av SQL Server 2008. En RC är en version som enligt plan ska bli den skarpa versionen om inga buggar hittas. Hittar man fel försöker man igen och släpper en ny RC till dess att man är nöjd (FireFox 3 hann t.ex. komma upp i RC3, som nu är den skarpa versionen). Microsoft kallar den här versionen för RC0 vilket väl får vittna om att det ändå inte är så sannolikt att det blir just den här versionen som släpps senare i år.\r\n\r\n\r\nEtt axplock i salig röra över nya funktioner i SQL Server 2008:\r\n\r\n\r\nKryptering den lagrade information på disken (utan att applikationer som använder databasen behöver känna till eller anpassas för det)\r\nInbyggd komprimering av backuper\r\nIntegration med filsystemet - man kan specificera att vissa kolumner ska lagras som filer, kan vara fiffigt för t.ex. dokument och bilder som lagras i databasen. Detta sker helt transparent för applikationerna.\r\nMöjlighet att tilldela SQL Servern fler CPU:er under drift\r\nBättre övervakning och styrning av prestanda\r\nIntellisense (kommandohjälp) i Management Studio\r\nEn ny datumtyp med stöd för tidzoner och endast datum eller endast tid\r\nÄndringshantering - man kan spåra ändringar i tabeller över tid\r\nNytt SQL-kommando: MERGE. MERGE gör UPDATE om raden redan finns och INSERT om den inte finns.\r\nDatatyper för geografiska data och geometriska data\r\nBättre stöd för XML\r\nIntegrerad fulltextsökning (inga externa tjänster behövs längre)\r\nNya indextyper\r\nInbyggt stöd för Reporting Services (IIS behövs inte längre) som numera också kan producera Word-rapporter\r\nStar Join (be mig inte förklara :-))\r\nMöjlighet att skicka in tabeller som argument till funktioner\r\nSQL Server 2008 RC0 har en tidsbegränsning på 180 dagar. Ladda ner och testa här!\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/logo_sql_2008_microsoft_2.jpg)", + "html": "
Johan Lindfors tipsar på sin blogg om att det förra veckan släpptes en s.k. Release Candidate av SQL Server 2008. En RC är en version som enligt plan ska bli den skarpa versionen om inga buggar hittas. Hittar man fel försöker man igen och släpper en ny RC till dess att man är nöjd (FireFox 3 hann t.ex. komma upp i RC3, som nu är den skarpa versionen). Microsoft kallar den här versionen för RC0 vilket väl får vittna om att det ändå inte är så sannolikt att det blir just den här versionen som släpps senare i år.
Ett axplock i salig röra över nya funktioner i SQL Server 2008:
- Kryptering den lagrade information på disken (utan att applikationer som använder databasen behöver känna till eller anpassas för det)
- Inbyggd komprimering av backuper
- Integration med filsystemet - man kan specificera att vissa kolumner ska lagras som filer, kan vara fiffigt för t.ex. dokument och bilder som lagras i databasen. Detta sker helt transparent för applikationerna.
- Möjlighet att tilldela SQL Servern fler CPU:er under drift
- Bättre övervakning och styrning av prestanda
- Intellisense (kommandohjälp) i Management Studio
- En ny datumtyp med stöd för tidzoner och endast datum eller endast tid
- Ändringshantering - man kan spåra ändringar i tabeller över tid
- Nytt SQL-kommando: MERGE. MERGE gör UPDATE om raden redan finns och INSERT om den inte finns.
- Datatyper för geografiska data och geometriska data
- Bättre stöd för XML
- Integrerad fulltextsökning (inga externa tjänster behövs längre)
- Nya indextyper
- Inbyggt stöd för Reporting Services (IIS behövs inte längre) som numera också kan producera Word-rapporter
- Star Join (be mig inte förklara :-))
- Möjlighet att skicka in tabeller som argument till funktioner
- SQL Server 2008 RC0 har en tidsbegränsning på 180 dagar. Ladda ner och testa här!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1213871100000, + "created_by": 6, + "updated_at": 1213871100000, + "updated_by": 6, + "published_at": 1213871100000, + "published_by": 6 + }, + { + "id": 214, + "title": "Storleken har betydelse", + "slug": "storleken-har-betydelse", + "markdown": "\r\n\r\n\r\nMed tjänsten sizeeasy kan man enkelt jämföra olika sakers storlek. Det finns ett antal färdiga referensobjekt som en tändsticksask, en kortlek, ett A4-papper, en TV-apparat och en innerdörr (!). Man kan också enkelt mata in egna objekt, som kan visas bredvid varandra i 3D eller lagda ovanpå varandra i någon av de tre dimensionerna.\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/sizeeasy.png)\r\n\r\n\r\nNär man har matat in ett gäng objekt man är nöjd med kan man spara jämförelsen som då får en egen adress, som den ovan: http://www.sizeasy.com/page/size_comparison/14707-iPhone-3G-vs-Touch-Pro-vs-Xperia-vs-MTeoR-vs-Touch-Diamond. Man kan också titta på andras jämförelser - jag kan skvallra om att jämförelser med iPhone är ganska populära.\r\n\r\n", + "html": "
Med tjänsten sizeeasy kan man enkelt jämföra olika sakers storlek. Det finns ett antal färdiga referensobjekt som en tändsticksask, en kortlek, ett A4-papper, en TV-apparat och en innerdörr (!). Man kan också enkelt mata in egna objekt, som kan visas bredvid varandra i 3D eller lagda ovanpå varandra i någon av de tre dimensionerna.
När man har matat in ett gäng objekt man är nöjd med kan man spara jämförelsen som då får en egen adress, som den ovan: http://www.sizeasy.com/page/size_comparison/14707-iPhone-3G-vs-Touch-Pro-vs-Xperia-vs-MTeoR-vs-Touch-Diamond. Man kan också titta på andras jämförelser - jag kan skvallra om att jämförelser med iPhone är ganska populära.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "te testa en telefon i verkligheten så kan man åtminstone jämföra den med andra telefoner med den smarta tjänsten sizeeasy.", + "author_id": 6, + "created_at": 1215534600000, + "created_by": 6, + "updated_at": 1215534600000, + "updated_by": 6, + "published_at": 1215534600000, + "published_by": 6 + }, + { + "id": 215, + "title": "iPhone 3G - Jesustelefon?", + "slug": "iphone-3g---jesustelefon", + "markdown": "\r\n\r\n\r\nEfter några semesterveckors intensivt användande tänkte jag dela med mig av mina erfarenheter till eventuella spekulanter för nästa leverans.\r\n\r\n\r\nFörst och främst, det första intrycket av telefonen är att den är grymt genomarbetad! Active sync konfigurerades på tre sekunder och är fullt integrerat i telefonen. Tangent- bordet är till en början svårt att skriva på men efter en stunds tragglande går det riktigt fort att skriva sina meningar.\r\n\r\n\r\nNär man använt iphonen en stund och sedan provar en vanlig gammal telefon så inser man att det inte finns någon återvändo. Detta är annat än en ny telefon.\r\n\r\n\r\nAllt prat om nackdelarna kan riskera att överskugga den revolutionerande telefon som detta ändå är. Men det finns ändå några brister som man bör känna till:\r\n\r\nDen går ej att använda som modem. Bluetooth profilen som finns stödjer endast handsfree. \r\n\r\nCut&paste. Finns ännu inte, det spekuleras om varför men jag gissar att de inte kan få till det tillräckligt enkelt och utan konflikt med tex navigation och multitouch. \r\n\r\nBilladdare för iPod/iPhone 2G fungerar ej, Apple har frångått den gamla firewire laddningspinnen och laddar nu endast på usb pinnen vilket inte stöds av någon billaddare utom Belkins men det kommer nog snart bli bättre, men håll utkik efter detta innan du investerar i ny docka eller laddare. \r\n\r\nGPS:en är inte så tillförlitlig, man måste vara utomhus för att få täckning men då är den grym. Att den inte ersätter en vanlig bil gps är det många som varit irriterade över men fördelen med att kunna i realtid få fram sökresultat från Google när man går eller kör bil bygger ett nytt begär. Jag hade tex en aktiv sökning igång efter systembolag när jag var påväg till Smögen och inväntade ett som var nära vägen. Sökningen resulterade i fallande nålar på kartan när jag körde. Riktigt coolt! \r\n\r\nKalendern är inte tillräckligt avancerad, man kan tex inte dra och släppa ett möte utan behöver klicka och redigera. Man kan inte heller se översikt över en vecka. \r\n\r\nTodos (uppgifter) synkas ej, det finns inte ens en todo applikation. \r\n\r\nToyota Prius telefonbok synkroniseras ej från iPhone, tydligen gäller samma sak med mercedes men detta skall eventuellt vara löst iom 2.01 releasen. \r\n\r\nMMS går ej att varken skicka eller ta emot men det kommer antagligen en ny applikation för detta inom kort. Dessutom verkar jpeg formatet som kameran bifogar sina bilder med inte riktigt vara kompatibelt med sony ericsson telefoner, så för oss som suttit med en Sony Ericsson M600 och äntligen ska kunna ta bilder och skicka till nära och kära är skillnaden inte så stor. \r\n\r\nDet saknas också en generell filhanterare för att kunna flytta filer, arrangera om och skicka via bluetooth etc, men återigen : när apple inte hittat en enkel lösning så väntar dom hellre, och det hedrar dem! \r\n\r\n![Bild](http://tekniken.nu/uploads/iphone.png)", + "html": "
Efter några semesterveckors intensivt användande tänkte jag dela med mig av mina erfarenheter till eventuella spekulanter för nästa leverans.
Först och främst, det första intrycket av telefonen är att den är grymt genomarbetad! Active sync konfigurerades på tre sekunder och är fullt integrerat i telefonen. Tangent- bordet är till en början svårt att skriva på men efter en stunds tragglande går det riktigt fort att skriva sina meningar.
När man använt iphonen en stund och sedan provar en vanlig gammal telefon så inser man att det inte finns någon återvändo. Detta är annat än en ny telefon.
Allt prat om nackdelarna kan riskera att överskugga den revolutionerande telefon som detta ändå är. Men det finns ändå några brister som man bör känna till:
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1087, + "created_at": 1218452400000, + "created_by": 1087, + "updated_at": 1218452400000, + "updated_by": 1087, + "published_at": 1218452400000, + "published_by": 1087 + }, + { + "id": 216, + "title": "iPhone 3G: Världens bästa telefon", + "slug": "iphone-3g-varldens-basta-telefon", + "markdown": "\r\n\r\n\r\nSåhär en månad efter inköpet och tillbaka på jobbet känns det som att det är dags för en utvärdering av min nya telefon: iPhone 3G. Jag kan direkt säga att iPhone är den bästa telefon jag har haft! Den känns som ett otroligt stort steg från min förra telefon, som inte alls var dålig (hoppet till iPhone känns större än det förra verkliga generationsskiftet, som för mig var mellan en svartvit Nokia 6210 till SonyEricssons revolutionerande T610 med färgskärm, GPRS och kamera).\r\n\r\n\r\n\r\n\r\n\r\n## Bäst\r\n\r\n\r\nHelheten\r\n\r\niPhone känns extremt genomarbetad. Exteriören, det sjukt snygga och funktionella gränssnittet och applikationerna gör iPhone till något helt unikt. Man blir fortfarande lika glad när man tar fram sin telefon efter att ha haft den en månad. Den växlar snabbt mellan 3G och WLAN, att konfigurera och läsa mail med bilagor av olika slag är enkelt. Den har en riktigt stor och bra skärm, men trots yttermåtten är den så platt att den ligger extremt bra i fickan - man tänker inte på att den är där. Jag som regelbundet har tittat på film och TV-serier på en mobil med högst hälften så stor skärm tidigare, tycker förstås att den stora skärmen är en av de riktigt stora fördelarna (även om det inte är unikt för iPhone på något sätt). \r\n\r\n\r\n\r\n\r\nSafari\r\n\r\nAtt surfa på iPhone är något helt annat än vanligt mobilsurfande. En i princip fullfjädrad Safari gör att man kan surfa på nästan alla sidor som man kan med sin vanliga dator, till och med vissa Internetbanker. Den smarta zoomfunktionen gör att man får överblick över webbplatser på ett sätt som ofta tappas helt på andra mobiltelefoner. Det finns inget Flash-stöd, men det har åtminstone jag inte lidit över så särskilt. Det har ryktats om stöd för Flash och Java, så det hoppas jag kommer inom kort.\r\n\r\n\r\n\r\n\r\nApp Store\r\n\r\nApple har fått mycket kritik från utvecklare för att den inbyggda mjukvarudistributionsplattformen App Store är krånglig att få med sina alster i, och jag kan bara hålla med. Men trots detta är App Store en riktig vinnare för slutanvändaren. Det är oerhört simpelt att bläddra eller söka fram program som är gratis eller kostar väldigt lite. Under mina fyra veckor med iPhone har jag redan installerat fler applikationer än under 4 år med olika Windows Mobile-enheter. Man vet att applikationerna man laddar ner kommer att fungera, och man behöver inte leta själv och på samma sätt lita på att olika tillverkare håller vad de lovar i kompatibilitet.\r\n\r\n\r\n## Sämst\r\n\r\n\r\nDet sämsta med iPhone är att är den är låst. Apple har satt ihop ett attraktivt paket med många kraftfulla funktioner, men passar det inte så kan du som användare inte göra särskilt mycket åt det. Ett exempel är applikationer - man kan bara installera via App Store, det går inte att erbjuda en applikation för nedladdning via en webbplats eller liknande.\r\n\r\n\r\nEtt annat exempel är att alla musik- och videofiler måste överföras via Itunes. Itunes är en ny och väldigt hemsk bekantskap - jag måste säga att jag verkligen hatar Itunes. Förutom att det är extremt prestandakrävande och långsamt (iaf i Windows) så kan man bara synkronisera sin iPhone med en Itunes-installation. Om du vill ta med dig musik från kontoret är det bara att glömma om du synkar din telefon med Itunes hemma. Om du vill ha egna ringsignaler så går det just nu genom att man pysslar lite och döper om filer, men det har varit spärrat i vissa versioner av Itunes och vem vet när det spärras igen.\r\n\r\n\r\nSom om inte den tekniska låsningen skulle räcka har Apple har dessutom låst sig till en enda operatör i varje land. Det här är verkligen inte konsumentvänligt! Jag hoppas att Apple ändrar sig på den här punkten och inte dödar en plattform genom ett alltför stort kontrollbehov (titta bara på hur det gick för Sony PSP).\r\n\r\n\r\n## Summering\r\n\r\n\r\nTrots den stora invändningen ovan är jag helt såld på den här telefonen, om det inte framgått redan. Mitt råd: köp en så fort det går!\r\n\r\n\r\n\r\nJag är inget Apple-fan alls sen tidigare (jag har fortfarande mardrömmar om viktiga labbar som gick förlorade när jag pluggade för att applikationerna inte kunde öka sin minnesmängd efter att man startat dem - här pratar vi System 7 - och ibland fick \"för lite minne för att kunna spara arbetet\"). Men iPhone är så bra att jag gladeligen accepterar alla de små saker som är dumma och kan göras mycket bättre och bara ser den fantastiska helheten.\r\n\r\n\r\n## 10 saker jag önskar mig av/till iPhone:\r\n\r\nRiktig filhantering där man kan komma åt alla filer från datorn, utan den dumma omvägen via Itunes.\r\nÅÄÖ som egna knappar på tangentbordet\r\nNavigeringsprogram med turn-by-turn\r\nStöd för Safari på Skandiabanken\r\nLjus- och kontrastinställningar när man spelar video i iPod-applikationen\r\nRemote Desktop-klient (VNC finns redan)\r\nEtt riktigt bra Formel 1-spel\r\nMöjlighet att själv välja ifall man vill skala om bilder som bifogas i mail\r\nVridbar mailklient (alla andra program går ju att vrida på)\r\nSmartare autotext (just nu stjälper den den lika ofta som den hjälper)\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/iphone.png)", + "html": "
Såhär en månad efter inköpet och tillbaka på jobbet känns det som att det är dags för en utvärdering av min nya telefon: iPhone 3G. Jag kan direkt säga att iPhone är den bästa telefon jag har haft! Den känns som ett otroligt stort steg från min förra telefon, som inte alls var dålig (hoppet till iPhone känns större än det förra verkliga generationsskiftet, som för mig var mellan en svartvit Nokia 6210 till SonyEricssons revolutionerande T610 med färgskärm, GPRS och kamera).
Bäst
Helheten
iPhone känns extremt genomarbetad. Exteriören, det sjukt snygga och funktionella gränssnittet och applikationerna gör iPhone till något helt unikt. Man blir fortfarande lika glad när man tar fram sin telefon efter att ha haft den en månad. Den växlar snabbt mellan 3G och WLAN, att konfigurera och läsa mail med bilagor av olika slag är enkelt. Den har en riktigt stor och bra skärm, men trots yttermåtten är den så platt att den ligger extremt bra i fickan - man tänker inte på att den är där. Jag som regelbundet har tittat på film och TV-serier på en mobil med högst hälften så stor skärm tidigare, tycker förstås att den stora skärmen är en av de riktigt stora fördelarna (även om det inte är unikt för iPhone på något sätt).
Safari
Att surfa på iPhone är något helt annat än vanligt mobilsurfande. En i princip fullfjädrad Safari gör att man kan surfa på nästan alla sidor som man kan med sin vanliga dator, till och med vissa Internetbanker. Den smarta zoomfunktionen gör att man får överblick över webbplatser på ett sätt som ofta tappas helt på andra mobiltelefoner. Det finns inget Flash-stöd, men det har åtminstone jag inte lidit över så särskilt. Det har ryktats om stöd för Flash och Java, så det hoppas jag kommer inom kort.
App Store
Apple har fått mycket kritik från utvecklare för att den inbyggda mjukvarudistributionsplattformen App Store är krånglig att få med sina alster i, och jag kan bara hålla med. Men trots detta är App Store en riktig vinnare för slutanvändaren. Det är oerhört simpelt att bläddra eller söka fram program som är gratis eller kostar väldigt lite. Under mina fyra veckor med iPhone har jag redan installerat fler applikationer än under 4 år med olika Windows Mobile-enheter. Man vet att applikationerna man laddar ner kommer att fungera, och man behöver inte leta själv och på samma sätt lita på att olika tillverkare håller vad de lovar i kompatibilitet.
Sämst
Det sämsta med iPhone är att är den är låst. Apple har satt ihop ett attraktivt paket med många kraftfulla funktioner, men passar det inte så kan du som användare inte göra särskilt mycket åt det. Ett exempel är applikationer - man kan bara installera via App Store, det går inte att erbjuda en applikation för nedladdning via en webbplats eller liknande.
Ett annat exempel är att alla musik- och videofiler måste överföras via Itunes. Itunes är en ny och väldigt hemsk bekantskap - jag måste säga att jag verkligen hatar Itunes. Förutom att det är extremt prestandakrävande och långsamt (iaf i Windows) så kan man bara synkronisera sin iPhone med en Itunes-installation. Om du vill ta med dig musik från kontoret är det bara att glömma om du synkar din telefon med Itunes hemma. Om du vill ha egna ringsignaler så går det just nu genom att man pysslar lite och döper om filer, men det har varit spärrat i vissa versioner av Itunes och vem vet när det spärras igen.
Som om inte den tekniska låsningen skulle räcka har Apple har dessutom låst sig till en enda operatör i varje land. Det här är verkligen inte konsumentvänligt! Jag hoppas att Apple ändrar sig på den här punkten och inte dödar en plattform genom ett alltför stort kontrollbehov (titta bara på hur det gick för Sony PSP).
Summering
Trots den stora invändningen ovan är jag helt såld på den här telefonen, om det inte framgått redan. Mitt råd: köp en så fort det går!
Jag är inget Apple-fan alls sen tidigare (jag har fortfarande mardrömmar om viktiga labbar som gick förlorade när jag pluggade för att applikationerna inte kunde öka sin minnesmängd efter att man startat dem - här pratar vi System 7 - och ibland fick \"för lite minne för att kunna spara arbetet\"). Men iPhone är så bra att jag gladeligen accepterar alla de små saker som är dumma och kan göras mycket bättre och bara ser den fantastiska helheten.
10 saker jag önskar mig av/till iPhone:
- Riktig filhantering där man kan komma åt alla filer från datorn, utan den dumma omvägen via Itunes.
- ÅÄÖ som egna knappar på tangentbordet
- Navigeringsprogram med turn-by-turn
- Stöd för Safari på Skandiabanken
- Ljus- och kontrastinställningar när man spelar video i iPod-applikationen
- Remote Desktop-klient (VNC finns redan)
- Ett riktigt bra Formel 1-spel
- Möjlighet att själv välja ifall man vill skala om bilder som bifogas i mail
- Vridbar mailklient (alla andra program går ju att vrida på)
- Smartare autotext (just nu stjälper den den lika ofta som den hjälper)
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1218561420000, + "created_by": 6, + "updated_at": 1218561420000, + "updated_by": 6, + "published_at": 1218561420000, + "published_by": 6 + }, + { + "id": 220, + "title": "Microsoft SQL Server 2008 i skarp version", + "slug": "microsoft-sql-server-2008-i-skarp-version", + "markdown": "\r\n\r\n\r\nNu finns SQL Server 2008 äntligen i skarp version att ladda ner.\r\n\r\n\r\n\r\nViktigt att hålla koll på om man ska installera det är att det kräver .NET Framework 3.5. Kör du vista och vill använda Express-versionen måste du ha .NET Framework 3.5 SP1.\r\n\r\n\r\n\r\nBland dom största nyheterna för utvecklare (i Management Studio) är:\r\n\r\n\r\n\r\nIntellisense, d.v.s. nu behöver man inte komma ihåg alla tabellnamn och kolumnnamn utantill utan får hjälp av editorn.\r\nNamnge flikarna i query editor så man slipper dom helt intetsägande namnen.\r\n\r\n\r\n\r\nNär man kopierar SQL-resultaten går det att få med rubrikerna både när man väljer rader men även om man väljer enskilda celler, det lär spara en del tid när man vill göra en enkel export till Excel.\r\n\r\n\r\n\r\nPrestanda, Senaste versionerna har ju varit seg som sirap så det är skönt att se att det finns med en hel del prestandafixar i nyheterna.\r\n\r\n\r\n\r\nInbyggd debugger! Nu går det alltså att debugga en SQL-fråga, detta har tidigare bara varit möjligt inifrån Visual Studio men nu är det möjligt direkt inifrån Management Studio.\r\n\r\n\r\nAndra nyheter i SQL Server 2008 har vi berättat om tidigare\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/logo_sql_2008_microsoft_2.jpg)", + "html": "
Nu finns SQL Server 2008 äntligen i skarp version att ladda ner.
Viktigt att hålla koll på om man ska installera det är att det kräver .NET Framework 3.5. Kör du vista och vill använda Express-versionen måste du ha .NET Framework 3.5 SP1.
Bland dom största nyheterna för utvecklare (i Management Studio) är:
- Intellisense, d.v.s. nu behöver man inte komma ihåg alla tabellnamn och kolumnnamn utantill utan får hjälp av editorn.
- Namnge flikarna i query editor så man slipper dom helt intetsägande namnen.
- När man kopierar SQL-resultaten går det att få med rubrikerna både när man väljer rader men även om man väljer enskilda celler, det lär spara en del tid när man vill göra en enkel export till Excel.
- Prestanda, Senaste versionerna har ju varit seg som sirap så det är skönt att se att det finns med en hel del prestandafixar i nyheterna.
- Inbyggd debugger! Nu går det alltså att debugga en SQL-fråga, detta har tidigare bara varit möjligt inifrån Visual Studio men nu är det möjligt direkt inifrån Management Studio.
Andra nyheter i SQL Server 2008 har vi berättat om tidigare
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1089, + "created_at": 1219145100000, + "created_by": 1089, + "updated_at": 1219145100000, + "updated_by": 1089, + "published_at": 1219145100000, + "published_by": 1089 + }, + { + "id": 221, + "title": "HTC Touch Diamond - första intrycket", + "slug": "htc-touch-diamond---forsta-intrycket", + "markdown": "\r\n\r\n\r\nDå min tidigare telefon var en Sony Ericsson K750i kommer alla jämförelser ske mot den telefonen och eftersom jag aldrig tidigare använt en windows mobile telefon så får man se mig som en absolut nybörjare.\r\n\r\n\r\n## Uppackning och installation\r\n\r\n\r\nTelefonen kommer i en pyramidformad låda som definitivt sticker ut ur mängden. Efter att ha svurit lite över hur hårt igentejpat locket var så uppenbarade sig telefonen och gav sitt första intryck. Den är hälften så tjock som min gamla mobil, c:a 0,5 cm bredare och aning kortare. Allt detta gör att den passar väldigt bra i jeansfickan trots att den delar plats med en (Onico) snusdosa. Min gamla telefon passade inte alls lika bra utan kändes aning klumpig.\r\n\r\n\r\n\r\nInnan jag kunde använda telefonen var jag tvungen att ladda den vilket tog c:a 2 timmar (normalt ska en full laddning från tom ta ca 3 timmar men batteriet är delvis laddat från fabrik). Under tiden förberedde jag mig genom att säkerhetskopiera kontakterna på simkortet (bara utifall att...) och ladda ner de program och uppdateringar jag behövde. Eftersom jag hade läst en del om telefonen innan så visste jag vikten av att ha ett nytt ROM (alltså firmware) eftersom prestandan var under all kritik i tidigare versioner, så jag valde att installera det nya rommet innan jag testade nånting alls. Då telefonen hade ett svenskt rom och jag ville ha engelskt (av gammal vana) så krävdes en del pill och hack (se hur man gör på http://www.modmydiamond.info) för att få in det nya rommet.\r\n\r\n## Gränssnittet\r\n\r\nTelefonen använder Windows Mobile 6.1 i grunden men kör även sitt eget gränsnitt som heter TouchFlow 3D ovanpå. Windows Mobile lider ganska mycket av att det är gjort för att styra med en tunn pennspets istället för fingarna. Touchflow är gjort specifikt för den här mobilen och är anpassad till den höga upplösningen och för fingerstyrning. Dock hamnar man ofta i windows mobile läget och där kan det vara svårt att pricka de små knapparna med fingrarna. Med telefonen medföljer med en penna med det känns ju nesligt att ta fram den för att trycka på ett par knappar.\r\n\r\n## Hårdvaran\r\n\r\nDen 2.5\" stora skärmen på 640x480 är imponerande skarp och ser verkligen grym ut trots att den bara har 65 000 färger. Under den grymma skärmen sitter det ett gäng knappar: hemknappen, tillbakaknappen, svara(ok) och lägg på(avbryt) samt en snurrplatta i mitten. Knapparna har en lite underlig känsla, nästan som dom gamla ZX Spectrum-tangentborden. Längst upp sitter på/av/sov-knappen och den sticker verkligen inte ut mer än nödvändigt och klarar knappt att man trycker med den köttiga delen av fingerspetsen, detsamma gäller volymknapparna på sidan som också är aning hårda att trycka in. Inbyggt är också en accerelometer som gör det möjligt att styra mjukvaran med att vinkla mobilen.\r\n\r\n## Som telefon\r\n\r\nFör att kunna använda kontakterna på SIM-kortet importerade jag dem via en SIM-kortsmanager, detta resulterade dock i att alla telefonnummer fick en egen rad (hade 2-3 telefonnummer per kontakt tidigare) så det blev lite rörigt. Jag lade upp 2 av dom vanligaste numren som favorit i Touchflow och där gick det enklare att hitta förstås. Under dom kortare samtal jag ringt både med och utan det medföljande headset så upplevde jag ljudet som aning kallt och lätt metalliskt vilket jag också märkt när jag testat lyssna på musik (bara genom headsetet då förstås).\r\n\r\n## Väckarklocka\r\n\r\nEftersom jag använde min gamla telefon som väckarklocka var jag förstås tvungen att använda denna funktionen också - därav den egna rubriken. Glädjande är att man kan lägg upp flera olika repeterande larm (bra om man vill ha en tid för att hinna med måndagsmötet och en annan tid för resten av arbetsveckan). Jag vaknade innan väckaren som vanligt och märkte att larmsignalen var rätt tyst, så den måste jag kolla på ikväll. Ville snooza en stund som vanligt och hittade under menyn där bl.a. snooze var med (d.v.s. inte helt intitutivt och kräver lite fingerfärdighet) och där kom faktiskt en positiv överraskning, det gick att välja flera snoozelängder som t.ex. 5, 10, 15 eller 20 minuter så nu behöver man inte dubbelsnooza för att få sova 20 minuter till!\r\n\r\n## Nästa blogpost\r\n\r\nEftersom detta bara är första intrycket från en helt ovan användare utan igentliga referenspunkter så räknar jag med att behöva en inkörning på några veckor för att hitta styrkorna och svagheterna i telefonen så om några veckor kommer en ny recension där jag går igenom hur bra/dålig telefonen faktiskt är.\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/htc_touch_diamond.png)", + "html": "
Då min tidigare telefon var en Sony Ericsson K750i kommer alla jämförelser ske mot den telefonen och eftersom jag aldrig tidigare använt en windows mobile telefon så får man se mig som en absolut nybörjare.
Uppackning och installation
Telefonen kommer i en pyramidformad låda som definitivt sticker ut ur mängden. Efter att ha svurit lite över hur hårt igentejpat locket var så uppenbarade sig telefonen och gav sitt första intryck. Den är hälften så tjock som min gamla mobil, c:a 0,5 cm bredare och aning kortare. Allt detta gör att den passar väldigt bra i jeansfickan trots att den delar plats med en (Onico) snusdosa. Min gamla telefon passade inte alls lika bra utan kändes aning klumpig.
Innan jag kunde använda telefonen var jag tvungen att ladda den vilket tog c:a 2 timmar (normalt ska en full laddning från tom ta ca 3 timmar men batteriet är delvis laddat från fabrik). Under tiden förberedde jag mig genom att säkerhetskopiera kontakterna på simkortet (bara utifall att...) och ladda ner de program och uppdateringar jag behövde. Eftersom jag hade läst en del om telefonen innan så visste jag vikten av att ha ett nytt ROM (alltså firmware) eftersom prestandan var under all kritik i tidigare versioner, så jag valde att installera det nya rommet innan jag testade nånting alls. Då telefonen hade ett svenskt rom och jag ville ha engelskt (av gammal vana) så krävdes en del pill och hack (se hur man gör på http://www.modmydiamond.info) för att få in det nya rommet.
Gränssnittet
Telefonen använder Windows Mobile 6.1 i grunden men kör även sitt eget gränsnitt som heter TouchFlow 3D ovanpå. Windows Mobile lider ganska mycket av att det är gjort för att styra med en tunn pennspets istället för fingarna. Touchflow är gjort specifikt för den här mobilen och är anpassad till den höga upplösningen och för fingerstyrning. Dock hamnar man ofta i windows mobile läget och där kan det vara svårt att pricka de små knapparna med fingrarna. Med telefonen medföljer med en penna med det känns ju nesligt att ta fram den för att trycka på ett par knappar.
Hårdvaran
Den 2.5\" stora skärmen på 640x480 är imponerande skarp och ser verkligen grym ut trots att den bara har 65 000 färger. Under den grymma skärmen sitter det ett gäng knappar: hemknappen, tillbakaknappen, svara(ok) och lägg på(avbryt) samt en snurrplatta i mitten. Knapparna har en lite underlig känsla, nästan som dom gamla ZX Spectrum-tangentborden. Längst upp sitter på/av/sov-knappen och den sticker verkligen inte ut mer än nödvändigt och klarar knappt att man trycker med den köttiga delen av fingerspetsen, detsamma gäller volymknapparna på sidan som också är aning hårda att trycka in. Inbyggt är också en accerelometer som gör det möjligt att styra mjukvaran med att vinkla mobilen.
Som telefon
För att kunna använda kontakterna på SIM-kortet importerade jag dem via en SIM-kortsmanager, detta resulterade dock i att alla telefonnummer fick en egen rad (hade 2-3 telefonnummer per kontakt tidigare) så det blev lite rörigt. Jag lade upp 2 av dom vanligaste numren som favorit i Touchflow och där gick det enklare att hitta förstås. Under dom kortare samtal jag ringt både med och utan det medföljande headset så upplevde jag ljudet som aning kallt och lätt metalliskt vilket jag också märkt när jag testat lyssna på musik (bara genom headsetet då förstås).
Väckarklocka
Eftersom jag använde min gamla telefon som väckarklocka var jag förstås tvungen att använda denna funktionen också - därav den egna rubriken. Glädjande är att man kan lägg upp flera olika repeterande larm (bra om man vill ha en tid för att hinna med måndagsmötet och en annan tid för resten av arbetsveckan). Jag vaknade innan väckaren som vanligt och märkte att larmsignalen var rätt tyst, så den måste jag kolla på ikväll. Ville snooza en stund som vanligt och hittade under menyn där bl.a. snooze var med (d.v.s. inte helt intitutivt och kräver lite fingerfärdighet) och där kom faktiskt en positiv överraskning, det gick att välja flera snoozelängder som t.ex. 5, 10, 15 eller 20 minuter så nu behöver man inte dubbelsnooza för att få sova 20 minuter till!
Nästa blogpost
Eftersom detta bara är första intrycket från en helt ovan användare utan igentliga referenspunkter så räknar jag med att behöva en inkörning på några veckor för att hitta styrkorna och svagheterna i telefonen så om några veckor kommer en ny recension där jag går igenom hur bra/dålig telefonen faktiskt är.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1089, + "created_at": 1219248960000, + "created_by": 1089, + "updated_at": 1219248960000, + "updated_by": 1089, + "published_at": 1219248960000, + "published_by": 1089 + }, + { + "id": 224, + "title": "Google släpper en egen webbläsare", + "slug": "google-slapper-en-egen-webblasare", + "markdown": "\r\n\r\n\r\nEtt mycket löst rykte från förra året har visat sig bli verklighet\r\nsnabbare än någon hade trott. Google kommer att släppa en egen\r\nwebbläsare med namnet Google Chrome. Lanseringen kommer snart, kanske\r\nredan imorgon onsdag.\r\n\r\n\r\nGoogle Chrome kommer att bygga på webkit,\r\nsamma renderingsmotor som Apples Safari är byggd på. Utöver detta har\r\nman lagt till en helt egen inpluggad motor för JavaScript och ett\r\nmycket mer avancerat sätt att se på hur interna processer och trådar\r\noch deras minne ska hanteras än vad som finns i andra webbläsare. Allt förklaras i en mycket pedagogisk men\r\nkanske lite långdragen serietidning(!).\r\n\r\n\r\nOrsaken till att Google vill ha en egen webbläsare är officiellt sett\r\ninte riktigt uttalad. Man kan dock dra en del slutsatser av det som sas på lanseringskonferensen för Googles mobilplattform Android. Där\r\nframhöll man behovet av en mobil webbplattform som man vet klarar av\r\natt köra de applikationer som (enligt Google) utgör den stora delen av\r\nsurfandet nuförtiden. Analogt kan man tänka sig att man vill erbjuda en\r\nstabil webbläsare för kontorsbruk där man har lagt extra kraft på det\r\nsom behövs för att köra Google Documents och liknande webbapplikationer\r\n- sådant som processhantering, minneshantering och JavaScript-hastighet.\r\n\r\n\r\nKonkurrens är alltid bra, så vi är spända på att se hur Google\r\nChrome kommer att fungera. Samtidigt kan man ju som webbutvecklare\r\nibland fundera över hur mycket dyrare alla webbprojekt blir per ny\r\nwebbläsare som ska stödjas...\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/google_chrome.png)", + "html": "
Ett mycket löst rykte från förra året har visat sig bli verklighet
snabbare än någon hade trott. Google kommer att släppa en egen
webbläsare med namnet Google Chrome. Lanseringen kommer snart, kanske
redan imorgon onsdag.
Google Chrome kommer att bygga på webkit,
samma renderingsmotor som Apples Safari är byggd på. Utöver detta har
man lagt till en helt egen inpluggad motor för JavaScript och ett
mycket mer avancerat sätt att se på hur interna processer och trådar
och deras minne ska hanteras än vad som finns i andra webbläsare. Allt förklaras i en mycket pedagogisk men
kanske lite långdragen serietidning(!).
Orsaken till att Google vill ha en egen webbläsare är officiellt sett
inte riktigt uttalad. Man kan dock dra en del slutsatser av det som sas på lanseringskonferensen för Googles mobilplattform Android. Där
framhöll man behovet av en mobil webbplattform som man vet klarar av
att köra de applikationer som (enligt Google) utgör den stora delen av
surfandet nuförtiden. Analogt kan man tänka sig att man vill erbjuda en
stabil webbläsare för kontorsbruk där man har lagt extra kraft på det
som behövs för att köra Google Documents och liknande webbapplikationer
- sådant som processhantering, minneshantering och JavaScript-hastighet.
Konkurrens är alltid bra, så vi är spända på att se hur Google
Chrome kommer att fungera. Samtidigt kan man ju som webbutvecklare
ibland fundera över hur mycket dyrare alla webbprojekt blir per ny
webbläsare som ska stödjas...
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "ra processer och JavaScript.", + "author_id": 6, + "created_at": 1220359500000, + "created_by": 6, + "updated_at": 1220359500000, + "updated_by": 6, + "published_at": 1220359500000, + "published_by": 6 + }, + { + "id": 225, + "title": "Teknikfrågan: Vilken blir din nästa mobiltelefon?", + "slug": "teknikfragan-vilken-blir-din-nasta-mobiltelefon", + "markdown": "\r\n\r\n\r\nUngefär dött lopp mellan iPhone 3G och de nya Windows Mobile-mobilerna, där Windows Mobile har ett litet övertag.\r\n\r\n\r\nSvar att notera bland fritextsvaren: \"Sony Ericsson\", \"har redan en iPhone\", \"Nokia N96\", \"Android\" och \"Ingen alls\"\r\n\r\n\r\nSom ni säkert har märkt så har iaf två av tekniken.nus skribenter valt iPhone (och de exempellösa hyllningarna vet inga gränser) och en har valt HTC Touch Diamond.\r\n\r\n\r\nGlöm inte att svara på den nya frågan om Google Chrome\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/mobilfragan.png)", + "html": "
Ungefär dött lopp mellan iPhone 3G och de nya Windows Mobile-mobilerna, där Windows Mobile har ett litet övertag.
Svar att notera bland fritextsvaren: \"Sony Ericsson\", \"har redan en iPhone\", \"Nokia N96\", \"Android\" och \"Ingen alls\"
Som ni säkert har märkt så har iaf två av tekniken.nus skribenter valt iPhone (och de exempellösa hyllningarna vet inga gränser) och en har valt HTC Touch Diamond.
Glöm inte att svara på den nya frågan om Google Chrome
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 6, + "created_at": 1220440200000, + "created_by": 6, + "updated_at": 1220440200000, + "updated_by": 6, + "published_at": 1220440200000, + "published_by": 6 + }, + { + "id": 226, + "title": "Gör en egen ringsingnal till iPhone", + "slug": "gor-en-egen-ringsingnal-till-iphone", + "markdown": "\r\n\r\n\r\nFixa en egen ringsignal på iPhone såhär:\r\n\r\n\r\nPlocka fram en valfri MP3-fil. Se till att den är max 30 sekunder lång.\r\nImportera filen i Itunes.\r\nHögerklicka på filen och välj \"Konvertera till AAC-format\r\nLeta upp var den konverterade filen har hamnat. Vanligen ligger den på ett krångligt ställe i din användarprofil. Den är dock lätt att hitta om du högerklickar på filen och väljer \"Visa information\", och sen högerklickar på sökvägen och väljer \"visa i windows-utforskaren\"\r\nDöp om filen från minfil.m4a till minfil.m4r\r\nImportera filen på nytt, och nu har den blivit en ringsignal som kan synkas till telefonen!\r\n\r\n\r\nDet är rätt snålt av Apple att det här inte är en inbyggd funktion i Itunes tycker jag. Det här tricket har dessutom varit avstängt i vissa versioner av Itunes - så passa på medan det fortfarande funkar!\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/itunes.png)", + "html": "
Fixa en egen ringsignal på iPhone såhär:
- Plocka fram en valfri MP3-fil. Se till att den är max 30 sekunder lång.
- Importera filen i Itunes.
- Högerklicka på filen och välj \"Konvertera till AAC-format
- Leta upp var den konverterade filen har hamnat. Vanligen ligger den på ett krångligt ställe i din användarprofil. Den är dock lätt att hitta om du högerklickar på filen och väljer \"Visa information\", och sen högerklickar på sökvägen och väljer \"visa i windows-utforskaren\"
- Döp om filen från minfil.m4a till minfil.m4r
- Importera filen på nytt, och nu har den blivit en ringsignal som kan synkas till telefonen!
Det är rätt snålt av Apple att det här inte är en inbyggd funktion i Itunes tycker jag. Det här tricket har dessutom varit avstängt i vissa versioner av Itunes - så passa på medan det fortfarande funkar!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "går finns det ett trick som gör att man slipper det!", + "author_id": 6, + "created_at": 1220441820000, + "created_by": 6, + "updated_at": 1220441820000, + "updated_by": 6, + "published_at": 1220441820000, + "published_by": 6 + }, + { + "id": 227, + "title": "Nja, jag använder nog hellre Internet Explorer", + "slug": "nja-jag-anvander-nog-hellre-internet-explorer", + "markdown": "\r\n\r\n\r\nI användarvillkoren för Googles nya webbläsare Google Chrome så tar sig Google lite väl stora friheter tycker jag. Följande paragraf finns med i de licensvillkor man måste godkänna för att använda Google Chrome. Jag vill ju inte att Google ska ha rätt att reproducera och ändra material som jag skickar in till olika webbplatser jag besöker, eller intranät för den delen. Om anledningen och syftet är att göra reklam gör det mig ännu mindre sugen. \r\n\r\n\r\n\r\nOm jag vore författare och klistrade in mitt manus i webmailen och mailade till en kollega skulle rent teoretiskt Google kunna visa manuset fritt till resten av världen utan att jag ger min tillåtelse. \r\n\r\n\r\n\r\n\r\n11.1 Du behåller upphovsrätten och alla andra rättigheter som du redan har för innehåll som du skickar, lägger upp eller visar på eller via tjänsterna. Genom att skicka, lägga upp eller visa innehållet beviljar du Google en evig, ouppsägbar, världsomspännande, royaltyfri och icke-exklusiv licens att reproducera, anpassa, ändra, översätta, publicera, distribuera och offentligt utföra eller visa allt innehåll som du skickar, lägger upp eller visar på eller via tjänsterna. Denna licens har det enda syftet att göra det möjligt för Google att visa, distribuera och göra reklam för tjänsterna och kan återkallas för vissa tjänster enligt definitionen i tjänsternas ytterligare villkor.\r\n\r\n\r\n\r\n\r\nDon’t be evil Google!\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/incognito.png)", + "html": "
I användarvillkoren för Googles nya webbläsare Google Chrome så tar sig Google lite väl stora friheter tycker jag. Följande paragraf finns med i de licensvillkor man måste godkänna för att använda Google Chrome. Jag vill ju inte att Google ska ha rätt att reproducera och ändra material som jag skickar in till olika webbplatser jag besöker, eller intranät för den delen. Om anledningen och syftet är att göra reklam gör det mig ännu mindre sugen.
Om jag vore författare och klistrade in mitt manus i webmailen och mailade till en kollega skulle rent teoretiskt Google kunna visa manuset fritt till resten av världen utan att jag ger min tillåtelse.
11.1 Du behåller upphovsrätten och alla andra rättigheter som du redan har för innehåll som du skickar, lägger upp eller visar på eller via tjänsterna. Genom att skicka, lägga upp eller visa innehållet beviljar du Google en evig, ouppsägbar, världsomspännande, royaltyfri och icke-exklusiv licens att reproducera, anpassa, ändra, översätta, publicera, distribuera och offentligt utföra eller visa allt innehåll som du skickar, lägger upp eller visar på eller via tjänsterna. Denna licens har det enda syftet att göra det möjligt för Google att visa, distribuera och göra reklam för tjänsterna och kan återkallas för vissa tjänster enligt definitionen i tjänsternas ytterligare villkor.
Don’t be evil Google!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": "", + "author_id": 1087, + "created_at": 1220485860000, + "created_by": 1087, + "updated_at": 1220485860000, + "updated_by": 1087, + "published_at": 1220485860000, + "published_by": 1087 + }, + { + "id": 230, + "title": "Canon släpper en efterlängtad uppföljare till EOS 5D", + "slug": "canon-slapper-en-efterlangtad-uppfoljare-till-eos-5d", + "markdown": "\r\n\r\nCanon EOS 5D släpptes 2005 och var en mindre revolution - den första systemkameran för konsumentmarknaden med en fullstor bildsensor (de flesta systemkameror för konsumentmarknaden har en mindre sensor av samma storlek som APS-kameror). Efter det hände inte mycket, fram till det att Nikon tidigare i år släppte sin fullsensormodell D700. \r\n\r\nIgår kunde man läsa på Fotofeber att Canon nu äntligen har släppt sin nya fullsensorkamera under det fantasifulla namnet EOS 5D Mark II till i princip exakt samma pris som D700 (26 000:-). Det här med systemkameror är precis som med operativsystem lite som religion – man har/gillar antingen Nikon eller Canon. Själv är jag en Canon-människa, men jag tycker ändå att man rent objektivt bara kan imponeras av specifikationerna:\r\n21,1 megapixelISO-tal upp till 25 600Videoinspelning i HD (1080, 30fps, upp till 29 minuter per klipp)Magnesiumhus\r\n![Bild](http://tekniken.nu/uploads/633573373285857679-EOS 5D Mark II.png)\r\n\r\nUppdatering: Gizmodo har fått tag i bilder där man har testat videofunktionen: http://gizmodo.com/5052767/a-taste-of-the-canon-5d-mark-iis-mindblowing-full-hd-video. Bilderna är alltså skärmdumpar från videon, inte fotografier. Verkar helt sjukt lovande!\r\n", + "html": "
Canon EOS 5D släpptes 2005 och var en mindre revolution - den första systemkameran för konsumentmarknaden med en fullstor bildsensor (de flesta systemkameror för konsumentmarknaden har en mindre sensor av samma storlek som APS-kameror). Efter det hände inte mycket, fram till det att Nikon tidigare i år släppte sin fullsensormodell D700.
Igår kunde man läsa på Fotofeber att Canon nu äntligen har släppt sin nya fullsensorkamera under det fantasifulla namnet EOS 5D Mark II till i princip exakt samma pris som D700 (26 000:-). Det här med systemkameror är precis som med operativsystem lite som religion – man har/gillar antingen Nikon eller Canon. Själv är jag en Canon-människa, men jag tycker ändå att man rent objektivt bara kan imponeras av specifikationerna:
- 21,1 megapixel
- ISO-tal upp till 25 600
- Videoinspelning i HD (1080, 30fps, upp till 29 minuter per klipp)
- Magnesiumhus
Uppdatering: Gizmodo har fått tag i bilder där man har testat videofunktionen: http://gizmodo.com/5052767/a-taste-of-the-canon-5d-mark-iis-mindblowing-full-hd-video. Bilderna är alltså skärmdumpar från videon, inte fotografier. Verkar helt sjukt lovande!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Canon släpper en efterlängtad uppföljare till EOS 5D", + "meta_description": "", + "author_id": 6, + "created_at": 1221740528000, + "created_by": 6, + "updated_at": 1221740528000, + "updated_by": 6, + "published_at": 1221740528000, + "published_by": 6 + }, + { + "id": 233, + "title": "Ikväll kommer den - HTC Dream är första Android-telefonen", + "slug": "ikvall-kommer-den---htc-dream-ar-forsta-android-telefonen", + "markdown": "\r\n\r\nSom vi har berättat om tidigare så har Google utvecklat Android, en Linux-baserad Open Source-plattform för mobiltelefoner. Det var länge oklart när de första telefonerna skulle dyka upp, men för några veckor sen annonserade HTC att deras telefon Dream skulle bli först. Oväntat nog har lanseringen tidigarelagts, och HTC Dream ska officiellt lanseras redan ikväll!\r\n\r\nIDG har tagit del av en läckt specifikationslista:\r\n\r\nUtfällbart tangentbordSkärm på 480x320 med 65 000 färger (samma som iPhone alltså, även om den till ytan är mindre)Processor med två kärnorGPSKamera på 3,1 megapixelPlats för minneskort upp till 8 GBStöd för Gmail, Youtube och Google MapsMått: 116 x 54 x 16 mmVikt: 150g\r\n\r\nSjälv tycker jag att den är riktigt ful (den svarta är lite bättre än den 80-talsdatorfärgade som först visades). Oavsett utseendet så känns det här dock som en otroligt spännande början på en ny era inom mobiltelefoner. Mitt tips är att hela mobilmarknaden kommer att domineras av Windows Mobile, iPhone och Android ganska snart. Egenutvecklade mobil-OS kommer att vara alldeles för dyra, och jag tror att vi är i början till slutet för Symbian, även om de är stora nu.\r\n\r\n![Bild](http://tekniken.nu/uploads/633577650189824448-htcdream.png)", + "html": "Som vi har berättat om tidigare så har Google utvecklat Android, en Linux-baserad Open Source-plattform för mobiltelefoner. Det var länge oklart när de första telefonerna skulle dyka upp, men för några veckor sen annonserade HTC att deras telefon Dream skulle bli först. Oväntat nog har lanseringen tidigarelagts, och HTC Dream ska officiellt lanseras redan ikväll!
IDG har tagit del av en läckt specifikationslista:
- Utfällbart tangentbord
- Skärm på 480x320 med 65 000 färger (samma som iPhone alltså, även om den till ytan är mindre)
- Processor med två kärnor
- GPS
- Kamera på 3,1 megapixel
- Plats för minneskort upp till 8 GB
- Stöd för Gmail, Youtube och Google Maps
- Mått: 116 x 54 x 16 mm
- Vikt: 150g
Själv tycker jag att den är riktigt ful (den svarta är lite bättre än den 80-talsdatorfärgade som först visades). Oavsett utseendet så känns det här dock som en otroligt spännande början på en ny era inom mobiltelefoner. Mitt tips är att hela mobilmarknaden kommer att domineras av Windows Mobile, iPhone och Android ganska snart. Egenutvecklade mobil-OS kommer att vara alldeles för dyra, och jag tror att vi är i början till slutet för Symbian, även om de är stora nu.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Ikväll kommer den - HTC Dream är första Android-telefonen", + "meta_description": "", + "author_id": 6, + "created_at": 1222168218000, + "created_by": 6, + "updated_at": 1222168218000, + "updated_by": 6, + "published_at": 1222168218000, + "published_by": 6 + }, + { + "id": 234, + "title": "Minibärbar - den nya datortrenden?", + "slug": "minibarbar---den-nya-datortrenden", + "markdown": "\r\nDet kommer allt fler pyttesmå bärbara datorer. Den här nya klassen av ultraportabla bärbara, som ibland kallas Netbooks, har i regel väldigt små yttermått, låg vikt, lågt pris (3000-4000 är inte ovanligt) och levereras i regel med en Linux-variant eller med Windows XP (Vista är oftast lite för resurskrävande). Jag tror att tanken är en sån här dator ska vara ett komplement, en verkligt mobil arbetsplats som det inte ska vara jobbigt att alltid ha med sig, men kanske inte är någons enda dator. Först ut var ASUS Eee PC, och nu har den fått en uppsjö uppföljare från både kända och okända tillverkare. Trenden började redan i slutet av förra året, men med senaste tidens produktregn i den här kategorin verkar den vara här för att stanna.\r\n\r\nTommy K Johansson har skrivit en hel kavalkad av blogginlägg om Netbooks (här är ett urval):\r\n\r\nhttp://blogg.tkj.se/toshiba-nb100/\r\n\r\nhttp://blogg.tkj.se/lg-x110-sverige/\r\n\r\nhttp://blogg.tkj.se/samsung-nc10/\r\n\r\nhttp://blogg.tkj.se/lg-netbook-x110/\r\n\r\nhttp://blogg.tkj.se/hp-2133-mini-note/\r\n\r\nhttp://blogg.tkj.se/msi-wind-test/\r\n\r\nhttp://blogg.tkj.se/dell-ultraportabel-bilder/\r\n\r\nhttp://blogg.tkj.se/dell-umpc/\r\n\r\nhttp://blogg.tkj.se/kopa-asus-eee-pc-901/\r\n\r\nhttp://blogg.tkj.se/category/hardvara/asus-eee-pc/\r\n\r\nhttp://blogg.tkj.se/category/hardvara/acer-aspire-one/\r\n\r\nhttp://blogg.tkj.se/arets-julklapp-2008-minidator/\r\n\r\nhttp://blogg.tkj.se/minidatorer-populara/\r\n![Bild](http://tekniken.nu/uploads/633577855830854100-eee-pc-1.jpg)", + "html": "Det kommer allt fler pyttesmå bärbara datorer. Den här nya klassen av ultraportabla bärbara, som ibland kallas Netbooks, har i regel väldigt små yttermått, låg vikt, lågt pris (3000-4000 är inte ovanligt) och levereras i regel med en Linux-variant eller med Windows XP (Vista är oftast lite för resurskrävande). Jag tror att tanken är en sån här dator ska vara ett komplement, en verkligt mobil arbetsplats som det inte ska vara jobbigt att alltid ha med sig, men kanske inte är någons enda dator. Först ut var ASUS Eee PC, och nu har den fått en uppsjö uppföljare från både kända och okända tillverkare. Trenden började redan i slutet av förra året, men med senaste tidens produktregn i den här kategorin verkar den vara här för att stanna.
Tommy K Johansson har skrivit en hel kavalkad av blogginlägg om Netbooks (här är ett urval):
http://blogg.tkj.se/toshiba-nb100/
http://blogg.tkj.se/lg-x110-sverige/
http://blogg.tkj.se/samsung-nc10/
http://blogg.tkj.se/lg-netbook-x110/
http://blogg.tkj.se/hp-2133-mini-note/
http://blogg.tkj.se/msi-wind-test/
http://blogg.tkj.se/dell-ultraportabel-bilder/
http://blogg.tkj.se/dell-umpc/
http://blogg.tkj.se/kopa-asus-eee-pc-901/
http://blogg.tkj.se/category/hardvara/asus-eee-pc/
http://blogg.tkj.se/category/hardvara/acer-aspire-one/
http://blogg.tkj.se/arets-julklapp-2008-minidator/
http://blogg.tkj.se/minidatorer-populara/",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "Minibärbar - den nya datortrenden?",
+ "meta_description": "",
+ "author_id": 6,
+ "created_at": 1222188782000,
+ "created_by": 6,
+ "updated_at": 1222188782000,
+ "updated_by": 6,
+ "published_at": 1222188782000,
+ "published_by": 6
+ },
+ {
+ "id": 235,
+ "title": "Saknat stöd för ActiveSync gör Android G1 till en ren konsumentlur?",
+ "slug": "saknat-stod-for-activesync-gor-android-g1-till-en-ren-konsumentlur",
+ "markdown": "\r\n\r\nSom ingen lär ha missat lanserade Google och T-mobile i veckan den första telefonen baserad på operativsystemet Android. Efter att allt mer av specifikationerna släppts börjar det bli tydligt att man inte haft företagsanvändarna i fokus, utan att man snarare i denna första generation byggt en konsumenttelefon. Framförallt är det avsaknaden av stöd för Exchange ActiveSync som gör den kraftigt begränsad som mobil plattform för allt annat än de minsta företagen.\r\n\r\nDet är oklart om detta rör sig om licensproblematik, ofärdig mjukvara eller ett konkurrensmässigt vägval. Gmail (som Android synkar med) som företagsplattform är dock ännu långt ifrån Exchange, tekniskt så väl som informationssäkerhetsmässigt.\r\n\r\nOm man vill ta upp kampen om företagsanvändarna med Symbian, Windows Mobile och iPhone så är detta något som Android-teamet borde ha högst upp på sin lista att åtgärda.\r\n\r\n![Bild](http://tekniken.nu/uploads/633578528966451276-Android-logo.png)",
+ "html": "
Som ingen lär ha missat lanserade Google och T-mobile i veckan den första telefonen baserad på operativsystemet Android. Efter att allt mer av specifikationerna släppts börjar det bli tydligt att man inte haft företagsanvändarna i fokus, utan att man snarare i denna första generation byggt en konsumenttelefon. Framförallt är det avsaknaden av stöd för Exchange ActiveSync som gör den kraftigt begränsad som mobil plattform för allt annat än de minsta företagen.
Det är oklart om detta rör sig om licensproblematik, ofärdig mjukvara eller ett konkurrensmässigt vägval. Gmail (som Android synkar med) som företagsplattform är dock ännu långt ifrån Exchange, tekniskt så väl som informationssäkerhetsmässigt.
Om man vill ta upp kampen om företagsanvändarna med Symbian, Windows Mobile och iPhone så är detta något som Android-teamet borde ha högst upp på sin lista att åtgärda.
Adobes Creative Suite med extremt populära applikationer som PhotoShop, Illustrator och Premiere släpps i ny version. Adobe har nu officiellt meddelat att man kommer att släppa version CS4 under hösten och vad den kommer innehålla. Det finns massor av nya funktioner i alla applikationerna, men den största nyheten (åtminstone för en tekniker) är att Adobe har byggt in stöd för användning av grafikkortets processor. I tidigare versioner har datorns CPU fått göra allt arbete, men i CS4 används också grafikkortet. Stödet är baserat på OpenGL och i PhotoShop funkar det med de flesta nya grafikkort. I Premiere krävs ett grafikkort baserat på Nvidias Quadro-processor.
Skillnaden kommer inte att märkas i slutresultatet men kommer att göra programmen mycket snabbare att arbeta med. I PhotoShop används grafikkortet för att rotera och skala om bilder i realtid, och till kantutjämning och HDR-bearbetning. Jag tror dock att den största skillnaden kommer märkas i Premiere – ett grafikkort med hårdvarustöd för HD-video borde kunna göra under för förhandgranskning av övergångar och liknande.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Adobe släpper CS4 under hösten", + "meta_description": "", + "author_id": 6, + "created_at": 1222340630000, + "created_by": 6, + "updated_at": 1222340630000, + "updated_by": 6, + "published_at": 1222340630000, + "published_by": 6 + }, + { + "id": 238, + "title": "Därför är DRM så urbota dumt", + "slug": "darfor-ar-drm-sa-urbota-dumt", + "markdown": "\r\n\r\nI dagarna kommer Wal-Mart att stänga av sina DRM-servrar, alltså de som sköter koperingsskyddet på köpta musikfiler. Sedan i februari har Wal-Mart slutat lägga kopieringsskydd på den musik de säljer digitalt, och det är förstås bra! Problemet är bara alla de som gick i ”fällan” att köpa musik tidigare. Deras musikfiler kommer att bli obrukbara inom två veckor. Sedan tidigare har Yahoos och Microsofts musikaffärer tagit bort DRM och samma problem har drabbat deras kunder, som har fått tipset att bränna ut alla köpta filer på ljud-CD för att de inte ska bli meningslösa skräpfiler på hårddisken. Varför envisas stora företag med försöka stävja illegal nedladdning genom att behandla dem som faktiskt betalar med rent förakt?\r\n\r\n\r\n\r\nDen stora frågan är nu när Apple ska inse samma sak – bara en liten del av musiken i Itunes ingår i Itunes plus och är därmed DRM-fri.\r\n\r\n![Bild](http://tekniken.nu/uploads/633582954538700004-drmdeathwatch.gif)", + "html": "I dagarna kommer Wal-Mart att stänga av sina DRM-servrar, alltså de som sköter koperingsskyddet på köpta musikfiler. Sedan i februari har Wal-Mart slutat lägga kopieringsskydd på den musik de säljer digitalt, och det är förstås bra! Problemet är bara alla de som gick i ”fällan” att köpa musik tidigare. Deras musikfiler kommer att bli obrukbara inom två veckor. Sedan tidigare har Yahoos och Microsofts musikaffärer tagit bort DRM och samma problem har drabbat deras kunder, som har fått tipset att bränna ut alla köpta filer på ljud-CD för att de inte ska bli meningslösa skräpfiler på hårddisken. Varför envisas stora företag med försöka stävja illegal nedladdning genom att behandla dem som faktiskt betalar med rent förakt?
Den stora frågan är nu när Apple ska inse samma sak – bara en liten del av musiken i Itunes ingår i Itunes plus och är därmed DRM-fri.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Därför är DRM så urbota dumt", + "meta_description": "", + "author_id": 6, + "created_at": 1222698653000, + "created_by": 6, + "updated_at": 1222698653000, + "updated_by": 6, + "published_at": 1222698653000, + "published_by": 6 + }, + { + "id": 240, + "title": "Xperia kommer på fredag", + "slug": "xperia-kommer-pa-fredag", + "markdown": "\r\n\r\nPå fredag kommer Sony Ericssons nya flaggskepp Xperia X1 att släppas i affärerna. Den har attraktiva specifikationer och många har väntat på att den ska släppas (och den var den telefon som jag själv väntade mest på innan jag valde en iPhone):\r\n\r\n\r\n\r\nWindows Mobile (6.1) med eget gränssnitt ovanpåUtdragbart tangentbord trots ganska behändiga måttTouchskärm i widescreen med den grymma upplösningen 800 x 480 (65k färger)GPSMinneskortsplats (vilket t.ex. både iPhone och HTC Touch Diamond har missat)Kamera på 3,2 megapixel med lampaBluetooth med stereo\r\n\r\nIDG har gjort första testet i Sverige av den skarpa versionen av Xperia X1. De är överlag nöjda med allt utom prestanda. De och vi hoppas att detta kommer att lösa sig med kommande firmware-uppgraderingar, det gjorde enorma skillnader på HTC Touch Diamond i alla fall (och X1 är ju som bekant byggd av HTC).\r\n\r\n![Bild](http://tekniken.nu/uploads/633589847629332159-xperiax1.jpg)", + "html": "På fredag kommer Sony Ericssons nya flaggskepp Xperia X1 att släppas i affärerna. Den har attraktiva specifikationer och många har väntat på att den ska släppas (och den var den telefon som jag själv väntade mest på innan jag valde en iPhone):
- Windows Mobile (6.1) med eget gränssnitt ovanpå
- Utdragbart tangentbord trots ganska behändiga mått
- Touchskärm i widescreen med den grymma upplösningen 800 x 480 (65k färger)
- GPS
- Minneskortsplats (vilket t.ex. både iPhone och HTC Touch Diamond har missat)
- Kamera på 3,2 megapixel med lampa
- Bluetooth med stereo
IDG har gjort första testet i Sverige av den skarpa versionen av Xperia X1. De är överlag nöjda med allt utom prestanda. De och vi hoppas att detta kommer att lösa sig med kommande firmware-uppgraderingar, det gjorde enorma skillnader på HTC Touch Diamond i alla fall (och X1 är ju som bekant byggd av HTC).
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Xperia kommer på fredag", + "meta_description": "", + "author_id": 6, + "created_at": 1223387962000, + "created_by": 6, + "updated_at": 1223387962000, + "updated_by": 6, + "published_at": 1223387962000, + "published_by": 6 + }, + { + "id": 241, + "title": "Högst upp på önskelistan: Canon 5D Mark II", + "slug": "hogst-upp-pa-onskelistan-canon-5d-mark-ii", + "markdown": "\r\nFör oss som har hakade på full-HD racet har redan behövt köpa ny LCD-TV, Playstation 3, HD-box, HD-programkort, HD videokamera – med andra ord – vi har redan behövt lägga ut en hel del pengar för att få se våra pixlar i allra högsta upplösning. I dagarna blev vår framtida plånbok ännu tunnare för nu har Canon släppt det som nu hamnar högst upp på önskelistan: Canon 5D Mark II. Det låter inte så mycket men de tekniska specifikationerna är fantastiska och framför allt: den här systemkameran har videoinspelningsstöd i full HD upplösning, dvs 1080p. Nikon har också släppt sin D90 som har HD inspelning men tyvärr bara i 720p.\r\n\r\nNär jag 2005 köpte min Canon D20 så sade jag till mig själv att det är helt klart värt pengarna för det här är en kamera jag faktiskt kan ha i tio år och jag kunde inte då drömma om att jag redan tre år senare skulle överväga att köpa en ny kamera för 23 000 kr, speciellt inte då jag också däremellan hunnit köpa en full-HD videokamera.. Vad är det då som gör att man blir så sugen?\r\n\r\nPoängen är att man nu för första gången som amatör kan börja spela in filmer som får samma känsla som en riktig bio-film, speciellt med fokusdjup och ljuskänslighet. Titta på den här filmen så förstår ni vad jag menar: (självklart gjord med proffsljus, tio olika proffsobjektiv osv) \r\n\r\nhttp://blog.vincentlaforet.com/\r\n\r\nKameran kommer till Sverige senare i höst. Vi på tekniken skulle gärna få en provkamera och labba med, Canon, lyssnar ni?\r\n\r\nChristian Landgren", + "html": "För oss som har hakade på full-HD racet har redan behövt köpa ny LCD-TV, Playstation 3, HD-box, HD-programkort, HD videokamera – med andra ord – vi har redan behövt lägga ut en hel del pengar för att få se våra pixlar i allra högsta upplösning. I dagarna blev vår framtida plånbok ännu tunnare för nu har Canon släppt det som nu hamnar högst upp på önskelistan: Canon 5D Mark II. Det låter inte så mycket men de tekniska specifikationerna är fantastiska och framför allt: den här systemkameran har videoinspelningsstöd i full HD upplösning, dvs 1080p. Nikon har också släppt sin D90 som har HD inspelning men tyvärr bara i 720p.
När jag 2005 köpte min Canon D20 så sade jag till mig själv att det är helt klart värt pengarna för det här är en kamera jag faktiskt kan ha i tio år och jag kunde inte då drömma om att jag redan tre år senare skulle överväga att köpa en ny kamera för 23 000 kr, speciellt inte då jag också däremellan hunnit köpa en full-HD videokamera.. Vad är det då som gör att man blir så sugen?
Poängen är att man nu för första gången som amatör kan börja spela in filmer som får samma känsla som en riktig bio-film, speciellt med fokusdjup och ljuskänslighet. Titta på den här filmen så förstår ni vad jag menar: (självklart gjord med proffsljus, tio olika proffsobjektiv osv)
http://blog.vincentlaforet.com/
Kameran kommer till Sverige senare i höst. Vi på tekniken skulle gärna få en provkamera och labba med, Canon, lyssnar ni?
Christian Landgren",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "Högst upp på önskelistan: Canon 5D Mark II",
+ "meta_description": null,
+ "author_id": 1087,
+ "created_at": 1223387964000,
+ "created_by": 1087,
+ "updated_at": 1223387964000,
+ "updated_by": 1087,
+ "published_at": 1223387964000,
+ "published_by": 1087
+ },
+ {
+ "id": 246,
+ "title": "Ett rum med fokus på att skriva",
+ "slug": "ett-rum-med-fokus-pa-att-skriva",
+ "markdown": "\r\n\r\nOffice-programmen får i varje version nya funktioner, många är bra men det finns en stark motrörelse som tycker att nya funktioner, knappar och blinkande lampor stör den kreativa processen – särskilt när det gäller skrivande – mer än det hjälper författaren. Konkret har detta tagit sig uttryck i nya ordbehandlare som bara fokuserar på texten. De tar upp hela skärmen för att dölja alla andra applikationer som kan pocka på uppmärksamheten, och har i regel svart bakgrund och grön text (någonstans finns också en stark retroinfluens). Första varianten heter WriteRoom och finns till MacOSX, och senare har en Windows-variant kommit som heter Dark Room.\r\n\r\n\r\n\r\nFör den som vill testa den här metoden att skriva men inte lämna sin vanliga ordbehandlare så finns nu ett tillägg som Johan Lindfors tipsar om som ger Word 2007 en WriteRoom-vy! Jag har inte testat att installera den än, men fungerar den så är det bästa av två världar. Jag gillar verkligen idén med WriteRoom, men jag vill också ha rättstavning, möjlighet att göra textformattering (när själva skrivprocessen är klar), svensk rättstavning och allt annat man är van vid.\r\n\r\nTillägget heter WriteSpace och hämtas här. Den är än så länge inte i skarp version, så se till att spara dokument ordentligt innan du testar.\r\n\r\n![Bild](http://tekniken.nu/uploads/633594910264480593-margin1.png)",
+ "html": "
Office-programmen får i varje version nya funktioner, många är bra men det finns en stark motrörelse som tycker att nya funktioner, knappar och blinkande lampor stör den kreativa processen – särskilt när det gäller skrivande – mer än det hjälper författaren. Konkret har detta tagit sig uttryck i nya ordbehandlare som bara fokuserar på texten. De tar upp hela skärmen för att dölja alla andra applikationer som kan pocka på uppmärksamheten, och har i regel svart bakgrund och grön text (någonstans finns också en stark retroinfluens). Första varianten heter WriteRoom och finns till MacOSX, och senare har en Windows-variant kommit som heter Dark Room.
För den som vill testa den här metoden att skriva men inte lämna sin vanliga ordbehandlare så finns nu ett tillägg som Johan Lindfors tipsar om som ger Word 2007 en WriteRoom-vy! Jag har inte testat att installera den än, men fungerar den så är det bästa av två världar. Jag gillar verkligen idén med WriteRoom, men jag vill också ha rättstavning, möjlighet att göra textformattering (när själva skrivprocessen är klar), svensk rättstavning och allt annat man är van vid.
Tillägget heter WriteSpace och hämtas här. Den är än så länge inte i skarp version, så se till att spara dokument ordentligt innan du testar.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Ett rum med fokus på att skriva", + "meta_description": "g som ger Word en sån här avskalad skrivarmiljö.", + "author_id": 6, + "created_at": 1223894226000, + "created_by": 6, + "updated_at": 1223894226000, + "updated_by": 6, + "published_at": 1223894226000, + "published_by": 6 + }, + { + "id": 247, + "title": "Silverlight 2 släppt idag", + "slug": "silverlight-2-slappt-idag", + "markdown": "\r\n\r\nNu finns äntligen ett bra alternativ till Flash för oss dotnet-utvecklare. Redan förra året släpptes Silverlight 1.0 men det var en release främst för att konkurrera med Flash som videospelare då det inte följde med några vanliga kontroller alls och då programmeringsstödet var begränsat till Javascript. Version 2 bygger på en dotnet-miljö d.v.s. ger stöd för C#/VB, dessutom följer det med mängder av användbara kontroller vilket gör det möjligt att bygga kompletta webbapplikationer utan att behöva skriva en enda rad kod html/javascript/css (förutom för att starta Silverlight-applikationen förstås).\r\n## Varför Silverlight istället för Flash?\r\nC#/VB-programmerare kan ta sin kunskap och använda den direkt i klientmiljön utan att behöva lära sig ett nytt språk.\r\n\r\nVisual Studio är inte bara en riktigt bra utvecklingsmiljö även gratis (Expressversionen).\r\n\r\nAlla kontroller i Silverlight har ett standardutseende, men till skillnad från i HTML finns det inga Windows-kontroller i botten. Det gör det mycket enkelt att skapa sina egna teman och utseenden, så det är enklare än nånsin att skräddarsy utseendet på sin applikation utan att behöva bygga sina egna lösningar som sällan fungerar exakt som man förväntar sig (som t.ex. scrollbars som inte reagerar på mushjul t.ex.)\r\n\r\nÅteranvända kod och kunskap: då grunden är dotnet så är många bibliotek identiska vilket gör att man inte behöver fundera hur man t.ex. jämför datum eller sorterar en lista.\r\n\r\nInbyggt stöd för LINQ som kanske är den största nyheten i dotnet sen, tja nånsin!\r\n## Varför Flash istället för Silverlight?\r\nFlash finns på nästan alla datorer så länge man inte använder den absolut senaste versionen och detta gör det riskfritt att använda till även mer grundläggande funktioner medan Silverlight i dagsläget är främst användbart till icke-kritiska sajter som t.ex spel och nöjen samt intranät där man har kontroll över installerad mjukvara. Detta kommer förstås att förändras, så om ett år bör det vara OK även på mer publika sajter.\r\n\r\nSilverlight har ett begränsat Linux-stöd i form a Mono-projektet Moonlight som än så länge inte är redo för skarp användning även om detta kommer lösa sig med tiden.\r\n## Varför VARKEN Flash eller Silverlight?\r\nÄven om Visual Studio Express är gratis så ”kräver” mer avancerade animeringar Blend (ingen vill väl försöka göra Disney-liknande animationer genom att hacka XML i notepad?), vilket också är problemet med Flash som också kostar en hel del pengar.\r\n\r\nDe sajter som har större fokus på innehåll än funktioner bör fortfarande byggas i ren och framtidssäker HTML då detta stöds av alla webbläsare och alla webbläsande maskiner (t.ex. mobiler). Dessutom så föredrar fortfarande sökmotorer ren och enkel html.\r\n\r\nOm du har som krav att alla oavsett webbläsare, operativsystem och bredbandsuppkoppling skall kunna använda din sajt så har du heller inget val, även om Flash/Silverlight bara är några megabyte stora nerladdningar så kan det vara tekniskt omöjligt att installera (folk kör fortfarande Windows 95 och många har begränsade rättigheter på jobbet att installera tilläggsprogram).\r\n\r\nDå Javascript-biblioteken blivit riktigt avancerade idag (se t.ex. Extjs) så finns det nästan ingenting numera som är omöjligt utan Flash eller Silverlight, så man måste väga utvecklingstid, tillgänglighet och slutkundsupplevelse (nedladdningstider, svarstider och liknande).\r\n## Framtiden för Silverlight\r\nDå det är en helt ny teknik som främst riktar sig till utvecklare och inte slutkund så kommer mer tekniskt riktade sajter bli de första som använder Silverlight i nån större utsträckning. Min gissning är spelsajter och grafiskt tunga reklamsajter för t.ex. nya biofilmer i första läget för att sedan dyka upp i mer seriösa sajter som t.ex. webbshoppar.\r\n\r\nTyvärr finns det inget stöd för 3D i denna version men med lite tur så kommer det i nästa version. Detta skulle verkligen kunna ge en stor fördel över rena HTML-/Javascript-sajter och kommer att bli nödvändigt för att kunna tävla med Flash som är på gång med grundläggande 3D.\r\n## Användbara Silverlight-länkar\r\nSilverlights plugin finns att ladda ner på microsoft.com men den mest användbara länken idag är är silverlight.net som innehåller allt som behövs för att lära sig utveckla sajter i Silverlight och innehåller dessutom mängder av exempel (även om det kan bli tunt med exempel första dagarna som funkar i skarpa versionen då betan och skarpa inte är kompatibla).\r\n\r\n![Bild](http://tekniken.nu/uploads/633595753314463065-Sl_v_rgb_r.png)", + "html": "Nu finns äntligen ett bra alternativ till Flash för oss dotnet-utvecklare. Redan förra året släpptes Silverlight 1.0 men det var en release främst för att konkurrera med Flash som videospelare då det inte följde med några vanliga kontroller alls och då programmeringsstödet var begränsat till Javascript. Version 2 bygger på en dotnet-miljö d.v.s. ger stöd för C#/VB, dessutom följer det med mängder av användbara kontroller vilket gör det möjligt att bygga kompletta webbapplikationer utan att behöva skriva en enda rad kod html/javascript/css (förutom för att starta Silverlight-applikationen förstås).
Varför Silverlight istället för Flash?
C#/VB-programmerare kan ta sin kunskap och använda den direkt i klientmiljön utan att behöva lära sig ett nytt språk.
Visual Studio är inte bara en riktigt bra utvecklingsmiljö även gratis (Expressversionen).
Alla kontroller i Silverlight har ett standardutseende, men till skillnad från i HTML finns det inga Windows-kontroller i botten. Det gör det mycket enkelt att skapa sina egna teman och utseenden, så det är enklare än nånsin att skräddarsy utseendet på sin applikation utan att behöva bygga sina egna lösningar som sällan fungerar exakt som man förväntar sig (som t.ex. scrollbars som inte reagerar på mushjul t.ex.)
Återanvända kod och kunskap: då grunden är dotnet så är många bibliotek identiska vilket gör att man inte behöver fundera hur man t.ex. jämför datum eller sorterar en lista.
Inbyggt stöd för LINQ som kanske är den största nyheten i dotnet sen, tja nånsin!
Varför Flash istället för Silverlight?
Flash finns på nästan alla datorer så länge man inte använder den absolut senaste versionen och detta gör det riskfritt att använda till även mer grundläggande funktioner medan Silverlight i dagsläget är främst användbart till icke-kritiska sajter som t.ex spel och nöjen samt intranät där man har kontroll över installerad mjukvara. Detta kommer förstås att förändras, så om ett år bör det vara OK även på mer publika sajter.
Silverlight har ett begränsat Linux-stöd i form a Mono-projektet Moonlight som än så länge inte är redo för skarp användning även om detta kommer lösa sig med tiden.
Varför VARKEN Flash eller Silverlight?
Även om Visual Studio Express är gratis så ”kräver” mer avancerade animeringar Blend (ingen vill väl försöka göra Disney-liknande animationer genom att hacka XML i notepad?), vilket också är problemet med Flash som också kostar en hel del pengar.
De sajter som har större fokus på innehåll än funktioner bör fortfarande byggas i ren och framtidssäker HTML då detta stöds av alla webbläsare och alla webbläsande maskiner (t.ex. mobiler). Dessutom så föredrar fortfarande sökmotorer ren och enkel html.
Om du har som krav att alla oavsett webbläsare, operativsystem och bredbandsuppkoppling skall kunna använda din sajt så har du heller inget val, även om Flash/Silverlight bara är några megabyte stora nerladdningar så kan det vara tekniskt omöjligt att installera (folk kör fortfarande Windows 95 och många har begränsade rättigheter på jobbet att installera tilläggsprogram).
Då Javascript-biblioteken blivit riktigt avancerade idag (se t.ex. Extjs) så finns det nästan ingenting numera som är omöjligt utan Flash eller Silverlight, så man måste väga utvecklingstid, tillgänglighet och slutkundsupplevelse (nedladdningstider, svarstider och liknande).
Framtiden för Silverlight
Då det är en helt ny teknik som främst riktar sig till utvecklare och inte slutkund så kommer mer tekniskt riktade sajter bli de första som använder Silverlight i nån större utsträckning. Min gissning är spelsajter och grafiskt tunga reklamsajter för t.ex. nya biofilmer i första läget för att sedan dyka upp i mer seriösa sajter som t.ex. webbshoppar.
Tyvärr finns det inget stöd för 3D i denna version men med lite tur så kommer det i nästa version. Detta skulle verkligen kunna ge en stor fördel över rena HTML-/Javascript-sajter och kommer att bli nödvändigt för att kunna tävla med Flash som är på gång med grundläggande 3D.
Användbara Silverlight-länkar
Silverlights plugin finns att ladda ner på microsoft.com men den mest användbara länken idag är är silverlight.net som innehåller allt som behövs för att lära sig utveckla sajter i Silverlight och innehåller dessutom mängder av exempel (även om det kan bli tunt med exempel första dagarna som funkar i skarpa versionen då betan och skarpa inte är kompatibla).
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Silverlight 2 släppt idag", + "meta_description": "r bland .NET-utvecklare. Men vad innebär det egentligen?", + "author_id": 1089, + "created_at": 1223978531000, + "created_by": 1089, + "updated_at": 1223978531000, + "updated_by": 1089, + "published_at": 1223978531000, + "published_by": 1089 + }, + { + "id": 248, + "title": "Snart släpps XBMC Atlantis", + "slug": "snart-slapps-xbmc-atlantis", + "markdown": "\r\n\r\nFör den oinsatte är Xbox Media Center (XBMC) den kanske äldsta och mest ambitiösa open source-baserade mediacentermjukvaran som finns. Som namnet antyder började den utvecklas till moddade första generationens Xbox-konsoler c:a 2002, och har sedan vidareutvecklats i högt tempo genom åren till att idag vara den kanske mest fullfjädrade mediacenterlösningen som finns.\r\n\r\nI och med att Xbox blivit en åldrad och begränsad hårdvara har XBMC på senare tid portats till Mac, Linux och Windows, och eftersom att Xboxen saknar HD-utgångar så är det även i dessa nya miljöer som produktens framtid kommer ligga. I samband med detta har man också kommit över de tveksamma moraliska aspekter man tidigare dragits med (att det krävts en moddad Xbox), något som alltid arbetat emot projektet och hindrat det från att få den uppmärksamhet det förtjänat. Dock känns kanske namnet nu lite förlegat...\r\n\r\nI oktober skall den första stabila \"cross-platform\" versionen släppas, Codename \"Atlantis\" - en version som länge varit under utveckling och testning. Inför denna release har projektet varit stoppat för ny funktionalitet en längre tid, men några nyheter kommer dyka upp:\r\n\r\n1. Först och främst kommer ett nytt HD-skin (PM3.HD), som bygger på det snygga skinnet \"Project Mayhem 3\". Bilder nedan.\r\n\r\n2. Den andra nyheten är \"XBMC Live\", vilket är en isolerad bootbar version av XBMC som kan köras direkt från en CD eller USB-minne, utan att påverka datorns hårddisk. Perfekt för att testa en hårdvara, eller för att sätta upp en tillfällig medialösning.\r\n\r\n3. Sist ut kommer XBMC för Mac att stödja integration med iTunes och iPhoto. Jag är inte säker på exakt hur detta kommer se ut, eller om det innebär att man kan spela DRM-skyddat iTunesinnehåll.\r\n\r\nXBMC Atlantis finns sedan några veckor i en betaversion: http://xbmc.org/download/\r\n\r\nM3 hade i sitt senaste nummer en stor artikel om olika alternativ för Mediacenterlösningar, av någon anledning missade man denna gång helt att nämna XBMC bland mjukvarualternativen vilket förvånar. Jag förutspår att XBMC inom mycket kort kommer vara referensen när det gäller Medialösningar, det krävs ju en hel del arbete att jobba ikapp sex års utveckling och testning... Själv kör jag XBMC sedan 2002 på min gamla Xbox (jag var med på den tiden som det hette XBMP - Xbox Media Player), men kollegornas lovord om hur bra det fungerar på en Mac Mini får mig att känna att det snart kanske börjar bli dags att pensionera krysslådan efter lång och trogen tjänst (tår i ögat).\r\n\r\n![Bild](http://tekniken.nu/uploads/main_logo_3d.png)\r\n\r\nFler skärmdumpar.\r\n", + "html": "För den oinsatte är Xbox Media Center (XBMC) den kanske äldsta och mest ambitiösa open source-baserade mediacentermjukvaran som finns. Som namnet antyder började den utvecklas till moddade första generationens Xbox-konsoler c:a 2002, och har sedan vidareutvecklats i högt tempo genom åren till att idag vara den kanske mest fullfjädrade mediacenterlösningen som finns.
I och med att Xbox blivit en åldrad och begränsad hårdvara har XBMC på senare tid portats till Mac, Linux och Windows, och eftersom att Xboxen saknar HD-utgångar så är det även i dessa nya miljöer som produktens framtid kommer ligga. I samband med detta har man också kommit över de tveksamma moraliska aspekter man tidigare dragits med (att det krävts en moddad Xbox), något som alltid arbetat emot projektet och hindrat det från att få den uppmärksamhet det förtjänat. Dock känns kanske namnet nu lite förlegat...
I oktober skall den första stabila \"cross-platform\" versionen släppas, Codename \"Atlantis\" - en version som länge varit under utveckling och testning. Inför denna release har projektet varit stoppat för ny funktionalitet en längre tid, men några nyheter kommer dyka upp:
1. Först och främst kommer ett nytt HD-skin (PM3.HD), som bygger på det snygga skinnet \"Project Mayhem 3\". Bilder nedan.
2. Den andra nyheten är \"XBMC Live\", vilket är en isolerad bootbar version av XBMC som kan köras direkt från en CD eller USB-minne, utan att påverka datorns hårddisk. Perfekt för att testa en hårdvara, eller för att sätta upp en tillfällig medialösning.
3. Sist ut kommer XBMC för Mac att stödja integration med iTunes och iPhoto. Jag är inte säker på exakt hur detta kommer se ut, eller om det innebär att man kan spela DRM-skyddat iTunesinnehåll.
XBMC Atlantis finns sedan några veckor i en betaversion: http://xbmc.org/download/
M3 hade i sitt senaste nummer en stor artikel om olika alternativ för Mediacenterlösningar, av någon anledning missade man denna gång helt att nämna XBMC bland mjukvarualternativen vilket förvånar. Jag förutspår att XBMC inom mycket kort kommer vara referensen när det gäller Medialösningar, det krävs ju en hel del arbete att jobba ikapp sex års utveckling och testning... Själv kör jag XBMC sedan 2002 på min gamla Xbox (jag var med på den tiden som det hette XBMP - Xbox Media Player), men kollegornas lovord om hur bra det fungerar på en Mac Mini får mig att känna att det snart kanske börjar bli dags att pensionera krysslådan efter lång och trogen tjänst (tår i ögat).
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Snart släpps XBMC Atlantis", + "meta_description": "", + "author_id": 1085, + "created_at": 1223980969000, + "created_by": 1085, + "updated_at": 1223980969000, + "updated_by": 1085, + "published_at": 1223980969000, + "published_by": 1085 + }, + { + "id": 257, + "title": "Flash i 64 bitar", + "slug": "flash-i-64-bitar", + "markdown": "\r\n\r\nAlla som kört 64-bitars desktop ett tag har förmodligen upptäckt att det finns två webbtekniker som desvärre saknar stöd: Flash och Java webb plugin. Resultatet av detta är att man antingen får använda en wrapper-komponent för att kunna köra 32-bitars plugins (”nspluginwrapper” på Linux) eller helt enkelt kör en 32-bitars variant av hela webbläsaren (så är det t.ex. på Windows, där standard-IE på 64-bitars Vista är 32 bitar, även om det finns en undangömd 64-bitarsversion).\r\n\r\nNu verkar det emellertid som om Adobe till slut börjar få ordning på soppan och har en beta version av 64-bitars Flash tillgänglig. Än så länge finns den bara för Linux, men när den väl är skarp så är förmodligen Windows- och OSX-versioner inte långt borta. Lite oklart vad som var så svårt, men det mesta tyder på att huvudproblemet var att Tamarin, den virtuella Javascript-maskinen, var hårdkodad att bara producera 32-bitarskod.\r\n\r\nPå Java-sidan finns det också hopp. Senaste officiella infon från Sun är att Java 6 update 12, vilken är beräknad till tidigt 2009, kommer att innehålla en 64-bitars webb-plugin. Mer info här.\r\n\r\n![Bild](http://tekniken.nu/uploads/633626954944097080-flash-logo.png)", + "html": "
Alla som kört 64-bitars desktop ett tag har förmodligen upptäckt att det finns två webbtekniker som desvärre saknar stöd: Flash och Java webb plugin. Resultatet av detta är att man antingen får använda en wrapper-komponent för att kunna köra 32-bitars plugins (”nspluginwrapper” på Linux) eller helt enkelt kör en 32-bitars variant av hela webbläsaren (så är det t.ex. på Windows, där standard-IE på 64-bitars Vista är 32 bitar, även om det finns en undangömd 64-bitarsversion).
Nu verkar det emellertid som om Adobe till slut börjar få ordning på soppan och har en beta version av 64-bitars Flash tillgänglig. Än så länge finns den bara för Linux, men när den väl är skarp så är förmodligen Windows- och OSX-versioner inte långt borta. Lite oklart vad som var så svårt, men det mesta tyder på att huvudproblemet var att Tamarin, den virtuella Javascript-maskinen, var hårdkodad att bara producera 32-bitarskod.
På Java-sidan finns det också hopp. Senaste officiella infon från Sun är att Java 6 update 12, vilken är beräknad till tidigt 2009, kommer att innehålla en 64-bitars webb-plugin. Mer info här.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Flash i 64 bitar", + "meta_description": "", + "author_id": 1086, + "created_at": 1227098694000, + "created_by": 1086, + "updated_at": 1227098694000, + "updated_by": 1086, + "published_at": 1227098694000, + "published_by": 1086 + }, + { + "id": 259, + "title": "Styr Squeezecenter från din iPhone / iPod Touch", + "slug": "styr-squeezecenter-fran-din-iphone--ipod-touch", + "markdown": "\r\n\r\nÄntligen meddelar utvecklarna bakom iPeng att de släppt första versionen av sin iPhoneapplikation för att styra Squeezecenter till Apples App Store. iPeng har tidigare erbjudit ett webbaserad interface för Sqeezecenter, men pga begränsningar i Safari så blev det aldrig speciellt bra. Utvecklingen av applikationsvarianten har varit igång ett tag och nu är den som sagt släppt. Priset ligger på 75kr.\r\n\r\nFunktioner (klippt ur pressreleasen):\r\nExplore your music library at unprecedented ease: Browse your library categories at our wingtips and select one of “play”, “add” or “add next”. And do that on any level that has playable content with the “touch-and-hold” gesture. Available Categories are Albums, Artists, Genres, Playlists & Favorites.NowPlaying screen with multi-page controls: Let’s you do all player related activities in one placePlay Internet Radio, Music Services and Podcasts: Everything that can be accessed through SqueezeCenter can be accessed through iPeng. Including Search, Artwork and all the other goodies. With the same playback functionality as for the library (as available for streaming content)Manage, simultaneously control and synchronize all your Squeezebox™ players and servers with iPeng’s MultiPlayer control: iPeng’s MultiPlayer control now is the main dashboard to select , manage and control your players. And Servers.Manage your playlist: Re-order and directly play the Tracks on the current playlist.Have full control over your player features: shuffle, repeat, rate songs, love and ban tracks for music services and much more. On the overlay of the artwork screen. Just as you know it from iPeng.Full localization through SqueezeCenter: iPeng itself is currently English only, but most menu items and texts are fully localized as of your server setting.\r\nSqueezebox™ är en hårdvarubaserad musiklösning som gör det möjligt att spela upp ditt MP3-arkiv i din stereo. Genom att installera en servermjukvara (Squeezecenter) i din dator kan Squeezeboxen streama musiken över tex trådlöst nätverk. Det finns ett antal liknande system på marknaden, men Squeezebox har varit med länge och tar ofta hem fina priser i genren, framförallt för att man satsat ordentligt på att få högkvalitativt ljud (i boxen sitter en 24-bitars Burr-Brown™ DAC).\r\n\r\nProdukten utvecklades av USA-baserade SlimDevices som köptes upp av Logitech 2006.\r\n\r\nMer om Squeezebox och Squeezecenter hos SlimDevices.\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/ipeng_logo.png)", + "html": "Äntligen meddelar utvecklarna bakom iPeng att de släppt första versionen av sin iPhoneapplikation för att styra Squeezecenter till Apples App Store. iPeng har tidigare erbjudit ett webbaserad interface för Sqeezecenter, men pga begränsningar i Safari så blev det aldrig speciellt bra. Utvecklingen av applikationsvarianten har varit igång ett tag och nu är den som sagt släppt. Priset ligger på 75kr.
Funktioner (klippt ur pressreleasen):
- Explore your music library at unprecedented ease: Browse your library categories at our wingtips and select one of “play”, “add” or “add next”. And do that on any level that has playable content with the “touch-and-hold” gesture. Available Categories are Albums, Artists, Genres, Playlists & Favorites.
- NowPlaying screen with multi-page controls: Let’s you do all player related activities in one place
- Play Internet Radio, Music Services and Podcasts: Everything that can be accessed through SqueezeCenter can be accessed through iPeng. Including Search, Artwork and all the other goodies. With the same playback functionality as for the library (as available for streaming content)
- Manage, simultaneously control and synchronize all your Squeezebox™ players and servers with iPeng’s MultiPlayer control: iPeng’s MultiPlayer control now is the main dashboard to select , manage and control your players. And Servers.
- Manage your playlist: Re-order and directly play the Tracks on the current playlist.
- Have full control over your player features: shuffle, repeat, rate songs, love and ban tracks for music services and much more. On the overlay of the artwork screen. Just as you know it from iPeng.
- Full localization through SqueezeCenter: iPeng itself is currently English only, but most menu items and texts are fully localized as of your server setting.
Squeezebox™ är en hårdvarubaserad musiklösning som gör det möjligt att spela upp ditt MP3-arkiv i din stereo. Genom att installera en servermjukvara (Squeezecenter) i din dator kan Squeezeboxen streama musiken över tex trådlöst nätverk. Det finns ett antal liknande system på marknaden, men Squeezebox har varit med länge och tar ofta hem fina priser i genren, framförallt för att man satsat ordentligt på att få högkvalitativt ljud (i boxen sitter en 24-bitars Burr-Brown™ DAC).
Produkten utvecklades av USA-baserade SlimDevices som köptes upp av Logitech 2006.
Mer om Squeezebox och Squeezecenter hos SlimDevices.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Styr Squeezecenter från din iPhone / iPod Touch", + "meta_description": "", + "author_id": 1085, + "created_at": 1227708580000, + "created_by": 1085, + "updated_at": 1227708580000, + "updated_by": 1085, + "published_at": 1227708580000, + "published_by": 1085 + }, + { + "id": 261, + "title": "Vill du också blogga på tekniken.nu?", + "slug": "vill-du-ocksa-blogga-pa-teknikennu", + "markdown": "\r\n\r\nTekniken.nu skrivs av Iteams konsulter och just nu söker vi duktiga drivna personer till både till vårt team av utvecklare och teamet av tekniker, så är du grym på C# och Ajax eller Exchange och Windows 2008 är chansen stor att du kan komma med i vårt team och få börja labba med ny teknik och skriva bloggar och samtidigt bygga vinnande system!\r\n\r\nLäs mer om tjänsterna på Iteam.se:http://www.iteam.se/work_at_iteam\r\n\r\nOch här:\r\n\r\nServiceinriktad IT-tekniker\r\n\r\nSmart och kreativ systemutvecklare\r\n\r\nVälkommen!\r\n\r\n// Christian Landgren\r\n\r\n![Bild](http://tekniken.nu/uploads/633645033962338060-img_logo_big.png)", + "html": "Tekniken.nu skrivs av Iteams konsulter och just nu söker vi duktiga drivna personer till både till vårt team av utvecklare och teamet av tekniker, så är du grym på C# och Ajax eller Exchange och Windows 2008 är chansen stor att du kan komma med i vårt team och få börja labba med ny teknik och skriva bloggar och samtidigt bygga vinnande system!
Läs mer om tjänsterna på Iteam.se:
http://www.iteam.se/work_at_iteam
Smart och kreativ systemutvecklare
Välkommen!
// Christian Landgren
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Vill du också blogga på tekniken.nu?", + "meta_description": "", + "author_id": 1087, + "created_at": 1228907700000, + "created_by": 1087, + "updated_at": 1228907700000, + "updated_by": 1087, + "published_at": 1228907700000, + "published_by": 1087 + }, + { + "id": 263, + "title": "FW: Mail to self: Har det här hänt? :)", + "slug": "fw-mail-to-self-har-det-har-hant-", + "markdown": "\r\n\r\nI januari 2007 kåserade jag i en blog om olika trender/nyheter jag trodde skulle hända inom ett år, nu har det snart gått två år och här är nuvarande status:\r\n\r\n1. Laglig film och tv med BitTorrent som distribution och full HDTV kvalitet till rimlig kostnad startar\r\n\r\nHeadWeb erbjuder numera HD-film distribuerat via BitTorrent till en rimlig kostnad (läs mer på : http://www.headweb.com/sv/client)\r\n\r\n2. Windows Vista på Mac hårdvara - Apple tar stora marknadsandelar från Dell\r\n\r\nApple har numera 10,6% marknadsandel för laptops i USA jämfört med 6,6% för ett år sedan – dock är det osagt om folk verkligen installerar Vista på dem?\r\n\r\n3. Windows Mobile på Nokia eller Sony Ericsson mobil\r\n\r\nXperia – Windows Mobile på en Sony Ericsson.\r\n\r\n4. Första spelet med Raytracing släpps :)\r\n\r\nTyvärr, ett år till? Det verkar dock röra på sig, läs mer om Quake 4 med Ray Tracing här: http://www.pcper.com/article.php?aid=506 och se demo på Quake 3 RT här:\r\n\r\n\r\n\r\n5. WPF/E får ett nytt namn och börjar användas av Google för något coolt projekt\r\n\r\nWPF/E heter numera coola Silverlight men har inte börjat användas ordentligt än. Vi väntar fortfarande på den riktigt coola killer-appen!\r\n\r\n6. Någon större svensk mediaprofil (Birgersson, Stael eller Niklas Zennström) startar ett svenskt gratis trådlöst bredbandsnätverk\r\n\r\nTyvärr inget trådlöst nätverk än av Birgersson eller Stael, men det kanske kommer Wimax-nät istället?\r\n\r\n7. Microsoft släpper sin första SIP-växel som blir succé för småföretag\r\n\r\nTyvärr ingen SIP-växel än.\r\n\r\n8. Sverige återtar platsen som IT-nation nr 1\r\n\r\nSverige ligger numera fyra på listan (2007 låg vi sjua) http://global.bsa.org/2008eiu/study/2008-eiu-study.pdf\r\n\r\n9. Google börjar indexera torrentsajter i realtid och får massiv kritik från RIAA\r\n\r\nJapp, Google indexerar numera alla torrentsajter varje timme så det går bra att söka torrents via Google, dock har inte RIAA upptäckt detta än.\r\n\r\n10. Bränsleceller börjar slå igenom\r\n\r\nTyvärr, vi fortsätter vänta på bränsleceller.\r\n\r\nDet som däremot har hänt är:\r\nApple har gett sig in i mobilmarknaden och släppt en fantastisk mobil - Apple iPhone.Google har släppt ett mobiloperativsystem som HTC har byggt in i sin G1 och som både Motorola och Sony Ericsson sneglar på.Mer som vi missat? Lägg gärna till viktiga händelser i kommentarerna nedan!\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/633645053481244310-image001.png@01C95AB7.FE8565C0__image001.png)", + "html": "I januari 2007 kåserade jag i en blog om olika trender/nyheter jag trodde skulle hända inom ett år, nu har det snart gått två år och här är nuvarande status:
1. Laglig film och tv med BitTorrent som distribution och full HDTV kvalitet till rimlig kostnad startar
HeadWeb erbjuder numera HD-film distribuerat via BitTorrent till en rimlig kostnad (läs mer på : http://www.headweb.com/sv/client)
2. Windows Vista på Mac hårdvara - Apple tar stora marknadsandelar från Dell
Apple har numera 10,6% marknadsandel för laptops i USA jämfört med 6,6% för ett år sedan – dock är det osagt om folk verkligen installerar Vista på dem?
3. Windows Mobile på Nokia eller Sony Ericsson mobil
Xperia – Windows Mobile på en Sony Ericsson.
4. Första spelet med Raytracing släpps :)
Tyvärr, ett år till? Det verkar dock röra på sig, läs mer om Quake 4 med Ray Tracing här: http://www.pcper.com/article.php?aid=506 och se demo på Quake 3 RT här:
5. WPF/E får ett nytt namn och börjar användas av Google för något coolt projekt
WPF/E heter numera coola Silverlight men har inte börjat användas ordentligt än. Vi väntar fortfarande på den riktigt coola killer-appen!
6. Någon större svensk mediaprofil (Birgersson, Stael eller Niklas Zennström) startar ett svenskt gratis trådlöst bredbandsnätverk
Tyvärr inget trådlöst nätverk än av Birgersson eller Stael, men det kanske kommer Wimax-nät istället?
7. Microsoft släpper sin första SIP-växel som blir succé för småföretag
Tyvärr ingen SIP-växel än.
8. Sverige återtar platsen som IT-nation nr 1
Sverige ligger numera fyra på listan (2007 låg vi sjua) http://global.bsa.org/2008eiu/study/2008-eiu-study.pdf
9. Google börjar indexera torrentsajter i realtid och får massiv kritik från RIAA
Japp, Google indexerar numera alla torrentsajter varje timme så det går bra att söka torrents via Google, dock har inte RIAA upptäckt detta än.
10. Bränsleceller börjar slå igenom
Tyvärr, vi fortsätter vänta på bränsleceller.
Det som däremot har hänt är:
- Apple har gett sig in i mobilmarknaden och släppt en fantastisk mobil - Apple iPhone.
- Google har släppt ett mobiloperativsystem som HTC har byggt in i sin G1 och som både Motorola och Sony Ericsson sneglar på.
- Mer som vi missat? Lägg gärna till viktiga händelser i kommentarerna nedan!
Denna fantastiska produkt gör att du kan spela upp din musik från iTunes till alla rum i ditt hem. Du kanske har mediadatorn i arbetsrummet men vill kunna lyssna på musiken i vardagsrummet. Detta är den perfekta julklappen till den som redan har följt Magnus Tjernelds julklappstips från förra året och köpt en iPod Touch eller stått i kö i somras och köpt iPhone eller kanske får en iPhone i julklapp? Hur som helst kan denna lyckliga julklappsmottagare nu styra all musik med hjälp av programmet Remote som finns gratis att ladda ner på iTunes Store, direkt i det programmet kan du nu välja vilket rum din musik ska spelas i:
http://www.apple.com/se/airportexpress/features/airtunes.html
Allt ljud går utan sladdar i högsta möjliga digitala kvalitet och kopplas in till stereon med den optiska utgången. Som ett plus i kanten kan dessutom Airport Express förlänga ditt trådlösa nätverk om du råkar ha en nätverkssladd i närheten eller göra tvärtom, dela ut ditt (eller grannens?) trådlösa nätverk till dina sladdbaserad nätverksenheter. Har du en skrivare så kan du koppla in den i USB uttaget och dela ut den på nätverket utan sladdar.
Den stöder alla moderna standarder inklusive 802.11n vilket har betydligt högre räckvidd och bandbredd. Funkar både för PC och Mac.
Tips är också att ta med Airport Express på resan så gör du enkelt om vilket nätverksuttag till ditt personliga trådlösa nätverk utan konfigurationer.
Skicka gärna tips på julklappsrim för en Airport Express i kommentarerna nedan!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Dagens julklappstips: Airport Express", + "meta_description": "", + "author_id": 1087, + "created_at": 1229083398000, + "created_by": 1087, + "updated_at": 1229083398000, + "updated_by": 1087, + "published_at": 1229083398000, + "published_by": 1087 + }, + { + "id": 265, + "title": "Dagens julklappstips: Spotify", + "slug": "dagens-julklappstips-spotify", + "markdown": "\r\n\r\nDet är ju nästan töntigt att framhålla Spotify och därmed sälla sig till alla andra (teknik)bloggare i Sverige, men man kan ju inte låta bli! Spotify är gratis för den som har fått en inbjudan, men kostar 99:-/månad för den som inte är bland de utvalda – och då slipper man dessutom reklamavbrotten, som jag misstänker kommer bli alltmer frekventa framöver. Vi på tekniken.nu har tjatat länge o men tjänst där man kan prenumerera på musik, och nu har den äntligen kommit!\r\n\r\nDet är med en viss känsla av overklighet som man faktiskt lagligt kan lyssna på nästan vilken musik man vill omedelbart. Spotifys katalog är inte komplett, men hittills har den bara gått bet på det extremt hårda testet ”Fönt ja en körv så höpper ja i älva” – i övrigt har allt dykt upp i sökresultaten. Man kan lägga upp spellistor och enkelt skicka länkar till både spellistorna och enskilda låtar (om mottagaren har ett konto). För de som har kommit förbi självändamålet i att ha en massa plastaskar att visa upp för sina gäster så är detta den perfekta tjänsten.\r\n\r\nSpotify Premium heter månadsprenumerationen som kostar 99:-/månad, och den kan köpas som presentkort. Vad bättre som present än nyckeln till en oändlig källa till musik, både ny och gammal! Eftersom det är en månadsprenumeration så blir den också lätt att anpassa den till alla julklappsbudgetar.\r\n\r\nFinns det inget dåligt med Spotify då? Jo, det är klart att det finns några saker som man önskar sig:\r\n\r\niPhone-applikation – utan mobila möjligheter så måste man ju ändå skaffa musik man kan ta med sigBättre rekommendationer – jag är lite överraskad att det inte finns fler möjligheter att få förslag på ny musik, men det är alldeles säkert på gång.Volymnivån – tyvärr har Spotify normaliserat alla låtar till en ganska låg nivå, vilket gör att man måste dra på ganska bra. Systemljuden blir onödigt höga i jämförelse och har man ett klent ljudkort kan ljudkvaliteten bli lidande när man måste maxa uteffekten.\r\n\r\nTrots ovanstående – Spotify är en grym julklapp till musikintresserade släktingar och vänner!\r\n\r\n![Bild](http://tekniken.nu/uploads/633650376701340156-spotify.png)", + "html": "Det är ju nästan töntigt att framhålla Spotify och därmed sälla sig till alla andra (teknik)bloggare i Sverige, men man kan ju inte låta bli! Spotify är gratis för den som har fått en inbjudan, men kostar 99:-/månad för den som inte är bland de utvalda – och då slipper man dessutom reklamavbrotten, som jag misstänker kommer bli alltmer frekventa framöver. Vi på tekniken.nu har tjatat länge o men tjänst där man kan prenumerera på musik, och nu har den äntligen kommit!
Det är med en viss känsla av overklighet som man faktiskt lagligt kan lyssna på nästan vilken musik man vill omedelbart. Spotifys katalog är inte komplett, men hittills har den bara gått bet på det extremt hårda testet ”Fönt ja en körv så höpper ja i älva” – i övrigt har allt dykt upp i sökresultaten. Man kan lägga upp spellistor och enkelt skicka länkar till både spellistorna och enskilda låtar (om mottagaren har ett konto). För de som har kommit förbi självändamålet i att ha en massa plastaskar att visa upp för sina gäster så är detta den perfekta tjänsten.
Spotify Premium heter månadsprenumerationen som kostar 99:-/månad, och den kan köpas som presentkort. Vad bättre som present än nyckeln till en oändlig källa till musik, både ny och gammal! Eftersom det är en månadsprenumeration så blir den också lätt att anpassa den till alla julklappsbudgetar.
Finns det inget dåligt med Spotify då? Jo, det är klart att det finns några saker som man önskar sig:
- iPhone-applikation – utan mobila möjligheter så måste man ju ändå skaffa musik man kan ta med sig
- Bättre rekommendationer – jag är lite överraskad att det inte finns fler möjligheter att få förslag på ny musik, men det är alldeles säkert på gång.
- Volymnivån – tyvärr har Spotify normaliserat alla låtar till en ganska låg nivå, vilket gör att man måste dra på ganska bra. Systemljuden blir onödigt höga i jämförelse och har man ett klent ljudkort kan ljudkvaliteten bli lidande när man måste maxa uteffekten.
Trots ovanstående – Spotify är en grym julklapp till musikintresserade släktingar och vänner!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Dagens julklappstips: Spotify", + "meta_description": "", + "author_id": 6, + "created_at": 1229440869000, + "created_by": 6, + "updated_at": 1229440869000, + "updated_by": 6, + "published_at": 1229440869000, + "published_by": 6 + }, + { + "id": 266, + "title": "Dagens julklappstips: Bärbar dator", + "slug": "dagens-julklappstips-barbar-dator", + "markdown": "\r\n\r\nNu undrar ni förmodligen vad jag menar med att något så gammalt som en laptop skulle vara årets julklapp, men självklart pratar vi här om två nya väldigt populära nya bärbara segment: Budget- och minilaptops.\r\n\r\n\r\n# Minilaptop / ULCPC / NetBook\r\nEfter att Asus släppte sin Eee PC förra året har dessa små ”surfdatorer” har exploderat i popularitet under 2008 och alla datortillverkare värda namnet har sett till att få in minst en i sortimentet. Vi pratar här om ytterst små, lätta och billiga bärbara datorer som i huvudsak är anpassade för att websurf och mail och som samtidigt är enklare att ta med sig på semestern. Prestandan i dessa datorer är oftast betydligt lägre än i vanliga bärbara, men alldeles tillräcklig för avsedda ändamål. Tex har Intels nya Atom-serie här blivit populär.\r\n\r\nMicrosoft har satt följande hårdvarukrav på datorer som kvalificerar som en ULCPC:\r\n\r\n\r\nMinne: 1 GB RAM eller mindreSkärm: 10.2\" eller mindreLagring: 80 GB traditionell hårddisk eller 16 GB SSDGrafik: DirectX version 9 GPU eller lägreStrömförsörjning: Advanced Configuration and Power Interface (ACPI)Övrigt: Ingen tablet PC-funktionalitet\r\nOfta är dessa förinstallerade med lätta linuxdistributioner men Microsoft har också fått en ny marknad för Windows XP Home, och valt att förlänga operativsystemets garanti för ULCPCs.\r\n\r\n\r\n\r\n\r\n\r\nExempel: HP 2133, kostar ca 4000:- inkl moms.\r\n# Budgetlaptop\r\nFör den som tycker att en minilaptop inte riktigt fyller hela behovet och som gärna vill ha lite mer prestanda och större skärm så finns det numera gott om budgetlaptops som håller riktigt hög kvalitet. Grundförutsättningarna här är att man vill ha en vettig processor , minst 1GB RAM, >100GB hårddisk, operativsystem och en 15” skärm men inte betala mer än 3995:- inkl moms.\r\n\r\nJag köpte under året en HP 530 som gav mig allt ovanstående. Efter att dessutom konfigurerat upp den att dual-boota Windows Vista Home Basic och Mandriva Linux så har jag fått en grymt mångsidig dator som lämpar sig perfekt till allt utom tungt grafikarbete och spel.\r\n\r\n\r\n\r\nExempel: HP 530, kostar också ca 4000:- inkl moms.\r\n\r\n![Bild](http://tekniken.nu/uploads/633651963452275438-ASUS_Eee_White_Alt-small.png)", + "html": "Nu undrar ni förmodligen vad jag menar med att något så gammalt som en laptop skulle vara årets julklapp, men självklart pratar vi här om två nya väldigt populära nya bärbara segment: Budget- och minilaptops.
Minilaptop / ULCPC / NetBook
Efter att Asus släppte sin Eee PC förra året har dessa små ”surfdatorer” har exploderat i popularitet under 2008 och alla datortillverkare värda namnet har sett till att få in minst en i sortimentet. Vi pratar här om ytterst små, lätta och billiga bärbara datorer som i huvudsak är anpassade för att websurf och mail och som samtidigt är enklare att ta med sig på semestern. Prestandan i dessa datorer är oftast betydligt lägre än i vanliga bärbara, men alldeles tillräcklig för avsedda ändamål. Tex har Intels nya Atom-serie här blivit populär.
Microsoft har satt följande hårdvarukrav på datorer som kvalificerar som en ULCPC:
- Minne: 1 GB RAM eller mindre
- Skärm: 10.2\" eller mindre
- Lagring: 80 GB traditionell hårddisk eller 16 GB SSD
- Grafik: DirectX version 9 GPU eller lägre
- Strömförsörjning: Advanced Configuration and Power Interface (ACPI)
- Övrigt: Ingen tablet PC-funktionalitet
Ofta är dessa förinstallerade med lätta linuxdistributioner men Microsoft har också fått en ny marknad för Windows XP Home, och valt att förlänga operativsystemets garanti för ULCPCs.
Exempel: HP 2133, kostar ca 4000:- inkl moms.
Budgetlaptop
För den som tycker att en minilaptop inte riktigt fyller hela behovet och som gärna vill ha lite mer prestanda och större skärm så finns det numera gott om budgetlaptops som håller riktigt hög kvalitet. Grundförutsättningarna här är att man vill ha en vettig processor , minst 1GB RAM, >100GB hårddisk, operativsystem och en 15” skärm men inte betala mer än 3995:- inkl moms.
Jag köpte under året en HP 530 som gav mig allt ovanstående. Efter att dessutom konfigurerat upp den att dual-boota Windows Vista Home Basic och Mandriva Linux så har jag fått en grymt mångsidig dator som lämpar sig perfekt till allt utom tungt grafikarbete och spel.
Exempel: HP 530, kostar också ca 4000:- inkl moms.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Dagens julklappstips: Bärbar dator", + "meta_description": "", + "author_id": 1085, + "created_at": 1229599544000, + "created_by": 1085, + "updated_at": 1229599544000, + "updated_by": 1085, + "published_at": 1229599544000, + "published_by": 1085 + }, + { + "id": 267, + "title": "Sista bastionen faller - all musik på Itunes blir DRM-fri", + "slug": "sista-bastionen-faller---all-musik-pa-itunes-blir-drm-fri", + "markdown": "\r\n\r\nSom vi tidigare har skrivit om så har flera distributörer av digital musik tagit bort DRM (det digitala kopieringsskyddet) och stängt av servrarna som hanterar det, ibland med tråkiga följder för kunderna.\r\n\r\n\r\n\r\nPå keynote-föreläsningen från MacWorld 2009 som hölls igår annonserade Apple att DRM ska försvinna även från Itunes! Det är glädjande att även världens största digitala skivbutik har tagit sitt förnuft till fånga (även om Apple själva har hävdat att det är skivbolagen som inte har velat släppa DRM). Innan detta kvartal är slut så kommer all musik att vara DRM-fri, och den musik man köpt sedan tidigare kan ”uppgraderas” för c:a en mindre summa per låt. I praktiken innebär det att man som kund kan flytta musiken till andra datorer, spela den på icke-ipods och känna sig rätt säker på att den går att spela även i en framtid där Itunes och/eller Apple skulle försvinna från marknaden.\r\n\r\nJag är själv väldigt nöjd med detta beslut från Apple och skivbolagen, och hoppas att det kommer att driva på att vi i Sverige får tillgång till Itunes video-delar och att även de blir DRM-fria (det är bara musiken som påverkas i nuläget). Jag tror att det huvudsakligen är Spotify och liknande tjänster har drivit på förändringen. Ett annat bidragande skäl kan vara att det faktiskt är dyrt att driva och underhålla de servrar som måste finnas tillgängliga för att hantera licenser och liknande för DRM.\r\n\r\n![Bild](http://tekniken.nu/uploads/633669244302711006-PNG-iTunes.png-256x256.png)", + "html": "Som vi tidigare har skrivit om så har flera distributörer av digital musik tagit bort DRM (det digitala kopieringsskyddet) och stängt av servrarna som hanterar det, ibland med tråkiga följder för kunderna.
På keynote-föreläsningen från MacWorld 2009 som hölls igår annonserade Apple att DRM ska försvinna även från Itunes! Det är glädjande att även världens största digitala skivbutik har tagit sitt förnuft till fånga (även om Apple själva har hävdat att det är skivbolagen som inte har velat släppa DRM). Innan detta kvartal är slut så kommer all musik att vara DRM-fri, och den musik man köpt sedan tidigare kan ”uppgraderas” för c:a en mindre summa per låt. I praktiken innebär det att man som kund kan flytta musiken till andra datorer, spela den på icke-ipods och känna sig rätt säker på att den går att spela även i en framtid där Itunes och/eller Apple skulle försvinna från marknaden.
Jag är själv väldigt nöjd med detta beslut från Apple och skivbolagen, och hoppas att det kommer att driva på att vi i Sverige får tillgång till Itunes video-delar och att även de blir DRM-fria (det är bara musiken som påverkas i nuläget). Jag tror att det huvudsakligen är Spotify och liknande tjänster har drivit på förändringen. Ett annat bidragande skäl kan vara att det faktiskt är dyrt att driva och underhålla de servrar som måste finnas tillgängliga för att hantera licenser och liknande för DRM.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Sista bastionen faller - all musik på Itunes blir DRM-fri", + "meta_description": "", + "author_id": 6, + "created_at": 1231327629000, + "created_by": 6, + "updated_at": 1231327629000, + "updated_by": 6, + "published_at": 1231327629000, + "published_by": 6 + }, + { + "id": 269, + "title": "Vänta lite med Chrome 2.0", + "slug": "vanta-lite-med-chrome-20", + "markdown": "\r\n\r\nGoogle har släppte för några veckor sedan sin webbläsare Chrome i skarp version. Tydligen spelar det stor roll för många IT-avdelningar att det inte står ”beta” någonstans på applikationer man rullar ut som en del av sitt standardpaket. Google ligger dock inte på latsidan bara för att första skarpa versionen är klar – man kan redan nu testa Chrome version 2.0. De här efterlängtade funktionerna har dykt upp i senaste versionen:\r\nAutokomplettering i formulärRiktig zoom-funktion (den zoomar hela sidan som i alla andra moderna browsers, inte genom att bara öka typsnitten som i Chrome 1)Profiler för att kunna köra Chrome med olika uppsättningar inställningarStöd för GreaseMonkey, vilket är öppningen för användarskapade plugins av den typ som har gjort FireFox så populärDiverse uppdateringar i kärnan (både webkit och javascriptmotorn V8).\r\nI samband med att skarpa version 1 och version 2 ”pre-beta” släpptes så har alla användare flyttats ett hack upp i versionskanalerna. De som tidigare hörde till kanalen ”beta”, d.v.s. det stora flertalet, hör nu till ”stable”. De som hörde till ”dev” hör nu till ”beta” och får betaversioner av version 1.0. För att få den nya Chrome 2.0 så måste man själv flytta till den nya dev-kanalen. Det gör man med Chrome channel-changer 2.0\r\n\r\n (den gamla funkar inte längre).\r\n\r\nSom den early adopter man är så kunde jag inte låta bli att flytta över till dev-kanalen för att få den nyaste Chrome-versionen. Tvärt om mot vad man är van vid så fungerar den dock inte alls så felfritt som man skulle önska (säkert därför man kallar den för ”pre-beta”). Förutom ett par renderingsbuggar som man kan leva med så har den stora problem med att bilder försvinner från webbsidorna. Jag har inte lyckats hitta något mönster – ibland försvinner de vid mouseover och ibland när man växlar tab. Mitt råd är att oavsett om du gillar Chrome och använder den som din standardwebbläsare eller har den som testmiljö vid webbutveckling så är det vettigt att vänta lite innan du går över till dev-kanalen.\r\n\r\n![Bild](http://tekniken.nu/uploads/633679678138376136-chromelogo.png)", + "html": "Google har släppte för några veckor sedan sin webbläsare Chrome i skarp version. Tydligen spelar det stor roll för många IT-avdelningar att det inte står ”beta” någonstans på applikationer man rullar ut som en del av sitt standardpaket. Google ligger dock inte på latsidan bara för att första skarpa versionen är klar – man kan redan nu testa Chrome version 2.0. De här efterlängtade funktionerna har dykt upp i senaste versionen:
- Autokomplettering i formulär
- Riktig zoom-funktion (den zoomar hela sidan som i alla andra moderna browsers, inte genom att bara öka typsnitten som i Chrome 1)
- Profiler för att kunna köra Chrome med olika uppsättningar inställningar
- Stöd för GreaseMonkey, vilket är öppningen för användarskapade plugins av den typ som har gjort FireFox så populär
- Diverse uppdateringar i kärnan (både webkit och javascriptmotorn V8).
I samband med att skarpa version 1 och version 2 ”pre-beta” släpptes så har alla användare flyttats ett hack upp i versionskanalerna. De som tidigare hörde till kanalen ”beta”, d.v.s. det stora flertalet, hör nu till ”stable”. De som hörde till ”dev” hör nu till ”beta” och får betaversioner av version 1.0. För att få den nya Chrome 2.0 så måste man själv flytta till den nya dev-kanalen. Det gör man med Chrome channel-changer 2.0
(den gamla funkar inte längre).
Som den early adopter man är så kunde jag inte låta bli att flytta över till dev-kanalen för att få den nyaste Chrome-versionen. Tvärt om mot vad man är van vid så fungerar den dock inte alls så felfritt som man skulle önska (säkert därför man kallar den för ”pre-beta”). Förutom ett par renderingsbuggar som man kan leva med så har den stora problem med att bilder försvinner från webbsidorna. Jag har inte lyckats hitta något mönster – ibland försvinner de vid mouseover och ibland när man växlar tab. Mitt råd är att oavsett om du gillar Chrome och använder den som din standardwebbläsare eller har den som testmiljö vid webbutveckling så är det vettigt att vänta lite innan du går över till dev-kanalen.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Vänta lite med Chrome 2.0", + "meta_description": "\"-version än så länge, så vill du ha en pålitlig webbläsare är det bättre att vänta.", + "author_id": 6, + "created_at": 1232371012000, + "created_by": 6, + "updated_at": 1232371012000, + "updated_by": 6, + "published_at": 1232371012000, + "published_by": 6 + }, + { + "id": 271, + "title": "Några tips för Windows 7 beta", + "slug": "nagra-tips-for-windows-7-beta", + "markdown": "\r\n\r\nWindows 7 har som de flesta säkert känner till släppts i publik betaversion. Den har beskrivits som en av de mest kompletta betaversionerna som Microsoft någonsin har släppt. Det mesta tycks redan vara på plats, och prestandan känns redan bättre än Vistas. Jag är benägen att hålla med, men det finns en del saker som inte fungerar riktigt. Här är mina tips!\r\n\r\nGrafikkort\r\n\r\nJag hade jätteproblem med att installera drivrutiner för mitt ATI-kort. ATI har släppt en beta för Windows 7, problemet är bara att den inte stödjer mitt gamla 1950 PRO. Jag försökte ett antal gånger utan framgång innan jag till slut såg att mitt grafikkort inte fanns med i listan. Näst bäst kändes den senaste drivrutinen för Vista x64, men den ville inte heller installeras ordentligt via ATIs eget installationsprogram. Därför fick jag göra såhär:\r\n\r\n\r\nLadda ner drivrutinerna och Catalyst Control Center som två separata installationerPacka upp drivrutinernaInstallera drivrutinerna via Windows egna funktioner (öppna Device Manager, välja Update Driver, Have Disk och så vidare)Installera CCC med hjälp av installationsprogrammet (det fungerade bra)\r\n\r\n\r\nWindows Media Center\r\n\r\nMedia center liknar Vistas Media Center ganska mycket, lite uppfräschat grafiskt. Windows 7 har ett inbyggt stöd för DivX/XviD som är riktigt bra, det enda som fattas är egentligen bara stöd för textning och riktigt gamla DivX-kodningar (version 3 funkar inte). Däremot finns tvärt emot ryktena inget stöd för MKV. Jag gissar att det kommer, men tills vidare måste man installera fler codecs och splitters. Tvärt emot min grundfilosofi så valde jag ett färdigt codec-pack. Media Center verkar lite selektivt med vilka codecs den bryr sig om – den verkar använda den nya splittern (eftersom MKV-filer funkar) men den inbyggda h264-codecen.\r\n\r\nEn sak jag hade glömt när det gäller inställningen av Media Center som är likadan i Vista är inställningen av upplösning på TVn. Om man som jag fortfarande har en tjock-TV (ta det lugnt, den är på väg att bytas ut :-) ) så gäller det att inte välja att den är ansluten via S-Videokabel, trots att den är det. Om man inte väljer att TVn är ansluten via DVI så får man inte välja upplösning av någon anledning.\r\n\r\nDet enda strulet med Media Center jag har haft är med inspelningsservicen som slänger .NET-felmeddelanden varje gång jag startar Media Center. Ingenting som hindrar funktionen, men lite irriterande. Den rapporterade buggen som förstör MP3-filer har fått en HotFix som man får automatiskt via Windows Update när man installerar Windows 7.\r\n\r\nLjudkort\r\n\r\nJag har ett Terratec 7.1-ljudkort som jag köpte enbart eftersom det har en optisk utgång. Terratec har fått mycket skäll för bristfälliga drivrutiner, men det fungerade faktiskt helt felfritt med Vista-drivrutinerna. Inte nog med det, ”AC3 passthrough” som skickar en surroundsignal direkt till förstärkaren utan omkodning fungerar plötsligt fint! (fick det aldrig att funka bra i Vista).\r\n\r\nGoogle Chrome\r\n\r\nChrome fungerar inte av sig själv på x64 (varken Windows 7 eller Vista). Det är som tur är lätt att åtgärda:\r\n\r\n\r\nHögerklicka på Chrome-ikonenI Target-fältet, lägg till ”--in-process-plugins”: ”C:\\Users\\MyUserName\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe --in-process-plugins”\r\n\r\n\r\nNågra fotnoter\r\n\r\nJag valde att gå från 32-bitars Vista till 64-bitars Windows 7, så vissa av de problem jag stötte kanske jag skulle ha fått även om jag hade bytt till Vista x64. Jag hade också ett problem med att det första användarkontot jag skapade av någon anledning gick sönder efter ett kort tag – Media Center ville inte starta, ljudkortets kontrollpanel hängde sig varje gång, Outlook hängde sig etc. När jag skapade ett nytt användarkonto försvann alla de problemen.\r\n\r\n![Bild](http://tekniken.nu/uploads/633691686685725180-202px-Windows_Media_Center_logo.png)", + "html": "Windows 7 har som de flesta säkert känner till släppts i publik betaversion. Den har beskrivits som en av de mest kompletta betaversionerna som Microsoft någonsin har släppt. Det mesta tycks redan vara på plats, och prestandan känns redan bättre än Vistas. Jag är benägen att hålla med, men det finns en del saker som inte fungerar riktigt. Här är mina tips!
Grafikkort
Jag hade jätteproblem med att installera drivrutiner för mitt ATI-kort. ATI har släppt en beta för Windows 7, problemet är bara att den inte stödjer mitt gamla 1950 PRO. Jag försökte ett antal gånger utan framgång innan jag till slut såg att mitt grafikkort inte fanns med i listan. Näst bäst kändes den senaste drivrutinen för Vista x64, men den ville inte heller installeras ordentligt via ATIs eget installationsprogram. Därför fick jag göra såhär:
- Ladda ner drivrutinerna och Catalyst Control Center som två separata installationer
- Packa upp drivrutinerna
- Installera drivrutinerna via Windows egna funktioner (öppna Device Manager, välja Update Driver, Have Disk och så vidare)
- Installera CCC med hjälp av installationsprogrammet (det fungerade bra)
Windows Media Center
Media center liknar Vistas Media Center ganska mycket, lite uppfräschat grafiskt. Windows 7 har ett inbyggt stöd för DivX/XviD som är riktigt bra, det enda som fattas är egentligen bara stöd för textning och riktigt gamla DivX-kodningar (version 3 funkar inte). Däremot finns tvärt emot ryktena inget stöd för MKV. Jag gissar att det kommer, men tills vidare måste man installera fler codecs och splitters. Tvärt emot min grundfilosofi så valde jag ett färdigt codec-pack. Media Center verkar lite selektivt med vilka codecs den bryr sig om – den verkar använda den nya splittern (eftersom MKV-filer funkar) men den inbyggda h264-codecen.
En sak jag hade glömt när det gäller inställningen av Media Center som är likadan i Vista är inställningen av upplösning på TVn. Om man som jag fortfarande har en tjock-TV (ta det lugnt, den är på väg att bytas ut :-) ) så gäller det att inte välja att den är ansluten via S-Videokabel, trots att den är det. Om man inte väljer att TVn är ansluten via DVI så får man inte välja upplösning av någon anledning.
Det enda strulet med Media Center jag har haft är med inspelningsservicen som slänger .NET-felmeddelanden varje gång jag startar Media Center. Ingenting som hindrar funktionen, men lite irriterande. Den rapporterade buggen som förstör MP3-filer har fått en HotFix som man får automatiskt via Windows Update när man installerar Windows 7.
Ljudkort
Jag har ett Terratec 7.1-ljudkort som jag köpte enbart eftersom det har en optisk utgång. Terratec har fått mycket skäll för bristfälliga drivrutiner, men det fungerade faktiskt helt felfritt med Vista-drivrutinerna. Inte nog med det, ”AC3 passthrough” som skickar en surroundsignal direkt till förstärkaren utan omkodning fungerar plötsligt fint! (fick det aldrig att funka bra i Vista).
Google Chrome
Chrome fungerar inte av sig själv på x64 (varken Windows 7 eller Vista). Det är som tur är lätt att åtgärda:
- Högerklicka på Chrome-ikonen
- I Target-fältet, lägg till ”--in-process-plugins”: ”C:\\Users\\MyUserName\\AppData\\Local\\Google\\Chrome\\Application\\chrome.exe --in-process-plugins”
Några fotnoter
Jag valde att gå från 32-bitars Vista till 64-bitars Windows 7, så vissa av de problem jag stötte kanske jag skulle ha fått även om jag hade bytt till Vista x64. Jag hade också ett problem med att det första användarkontot jag skapade av någon anledning gick sönder efter ett kort tag – Media Center ville inte starta, ljudkortets kontrollpanel hängde sig varje gång, Outlook hängde sig etc. När jag skapade ett nytt användarkonto försvann alla de problemen.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Några tips för Windows 7", + "meta_description": " så här kommer några tips på vägen.", + "author_id": 6, + "created_at": 1233571867000, + "created_by": 6, + "updated_at": 1233571867000, + "updated_by": 6, + "published_at": 1233571867000, + "published_by": 6 + }, + { + "id": 273, + "title": "Foxmarks: världens bästa bokmärkessynkroniserare", + "slug": "foxmarks-varldens-basta-bokmarkessynkroniserare", + "markdown": "\r\n\r\nÄnda sedan webbens begynnelse har det varit ett problem att man surfar på flera datorer och att ens bokmärken ganska snart spretar åt olika håll. Ofta vill jag spara en sida jag har hittat på jobbet för att läsa ordentligt hemma och tvärt om. Det finns och har funnits en massa webbplatser som erbjuder bokmärkeshantering som en webbsida, och det var ju faktiskt så begreppet hemsida uppstod – det var en sida som man själv hade kodat ihop i HTML som innehöll ens viktigaste länkarna. Jag tycker dock att bokmärken på en webbsida fungerar rätt dåligt, jag vill ha mina bokmärken i själva webbläsaren.\r\n\r\n\r\n\r\nSom tur är så finns det en lösning, som är riktigt bra! Den heter Foxmarks. Foxmarks började som en plugin till FireFox och den har jag använt flitigt i över ett år. Det fina är att Foxmarks nu har kommit för Internet Explorer och Safari också! Förutom ett webbläsartillägg som hanterar synkroniseringen av bokmärkena får man också tillgång sina bokmärken som en länksida (lösningen jag sågade ovan), ifall man sitter på en dator där man inte vill/kan installera tilläget. Foxmarks kan också synkronisera sparade lösenord mellan datorer.\r\n\r\nDet enda smolket i glädjebägaren är att Foxmarks inte finns för Chrome, men enligt Foxmarks blog kommer detta i den nära framtiden!\r\n\r\n![Bild](http://tekniken.nu/uploads/633697753877144671-foxmarks.PNG)", + "html": "Ända sedan webbens begynnelse har det varit ett problem att man surfar på flera datorer och att ens bokmärken ganska snart spretar åt olika håll. Ofta vill jag spara en sida jag har hittat på jobbet för att läsa ordentligt hemma och tvärt om. Det finns och har funnits en massa webbplatser som erbjuder bokmärkeshantering som en webbsida, och det var ju faktiskt så begreppet hemsida uppstod – det var en sida som man själv hade kodat ihop i HTML som innehöll ens viktigaste länkarna. Jag tycker dock att bokmärken på en webbsida fungerar rätt dåligt, jag vill ha mina bokmärken i själva webbläsaren.
Som tur är så finns det en lösning, som är riktigt bra! Den heter Foxmarks. Foxmarks började som en plugin till FireFox och den har jag använt flitigt i över ett år. Det fina är att Foxmarks nu har kommit för Internet Explorer och Safari också! Förutom ett webbläsartillägg som hanterar synkroniseringen av bokmärkena får man också tillgång sina bokmärken som en länksida (lösningen jag sågade ovan), ifall man sitter på en dator där man inte vill/kan installera tilläget. Foxmarks kan också synkronisera sparade lösenord mellan datorer.
Det enda smolket i glädjebägaren är att Foxmarks inte finns för Chrome, men enligt Foxmarks blog kommer detta i den nära framtiden!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Foxmarks: världens bästa bokmärkessynkroniserare", + "meta_description": "", + "author_id": 6, + "created_at": 1234178586000, + "created_by": 6, + "updated_at": 1234178586000, + "updated_by": 6, + "published_at": 1234178586000, + "published_by": 6 + }, + { + "id": 277, + "title": "Äntligen: Aftonbladet uppmanar till uppgradering från IE6", + "slug": "antligen-aftonbladet-uppmanar-till-uppgradering-fran-ie6", + "markdown": "\r\n\r\nSom utvecklare så kämpar vi fortfarande dagligen med att testa våra webbplatser i en uppsjö av olika webbläsare. Värst är IE6, som skiljer sig mest från de andra i hur den tolkar HTML och CSS. Den börjar ju bli ganska rejält till åren, så det är inte så konstigt. Konstigare är att så många användare och företag fortfarande håller fast vid den.\r\n\r\nDärför är det extra glädjande med en kampanj som startade i Norge med bland annat dagstidningen Verdens Gang som nu Aftonbladet har hoppat på! Såhär ser det ut när man surfar till Aftonbladet med IE6:\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/633707291283107022-IE_logo.png)\r\n\r\nTack för tipset från Oh so hightech: \r\n\r\nhttp://ohsohightech.se/norge-startar-uppgradera-internet-explorer-6-kampanj/\r\n", + "html": "Som utvecklare så kämpar vi fortfarande dagligen med att testa våra webbplatser i en uppsjö av olika webbläsare. Värst är IE6, som skiljer sig mest från de andra i hur den tolkar HTML och CSS. Den börjar ju bli ganska rejält till åren, så det är inte så konstigt. Konstigare är att så många användare och företag fortfarande håller fast vid den.
Därför är det extra glädjande med en kampanj som startade i Norge med bland annat dagstidningen Verdens Gang som nu Aftonbladet har hoppat på! Såhär ser det ut när man surfar till Aftonbladet med IE6:
Tack för tipset från Oh so hightech:
http://ohsohightech.se/norge-startar-uppgradera-internet-explorer-6-kampanj/
Igår avgjordes EPiServer Awards 2009 på bästa galamanér. Närmare 400 personer fick se oss ta hem priset för bästa intranät, och vi är förstås omåttligt glada och stolta!
Best Web Site
BYGGMax, utvecklad av Cloud Nine
Stockholm Stad, utvecklad av Creuna The Absolut Company, utvecklad av Iteam Community of Sweden, utvecklad av Getupdated 3onDisplay, utvecklad Ottoboni Stort grattis till alla de andra vinnarna! Vi vill tacka vår kund The Absolut Company för att vi har fått förtroendet att utveckla ABSOLUT FORUM, och även våra samarbetspartners i projektet: Supernative, Pronto, Springtime och Subset.Best Web Site Public Sector
Best Intranet
Best Online Social Community
Best Innovation
Nästa uppdatering av iPhone OS kommer att vara stor. De uppdateringar som har släpts hittills har varit nya versioner av iPhone OS 2, men nästa steg kommer att vara iPhone OS 3. Förhoppningarna har varit stora på både det ena och det andra, men nu ikväll svensk tid så vet vi – nu har nämligen Apple hållit sin officiella presentation.
De stora nyheterna som alla väntat på:
- Klipp och klistra! Kanske den mest efterlängtade versionen av alla på iPhone? En rolig detalj är att man skakar på telefonen för att ångra urklipp och inklistringar som blivit fel :-).
- Widescreenläge på tangentbordet i mail, SMS och anteckningar
- Push – något som skulle ha varit med redan från början i iPhone 3G. Apple har nu definitivt valt push framför att låta tredjepartsprogram vara igång i bakgrunden, eftersom det drar mer batteri.
- Stöd för MMS.
- Riktig GPS-navigering med turn by turn
Annat som också kommer i iPhone OS 3.0:
- Möjlighet för utvecklare att integrera Google Maps direkt i sina applikationer
- Nya sätt att ta betalt – mikrobetalningar inifrån applikationer
- Funktioner för att koppla ihop två iPhones (för att spela spel mot varandra t.ex.)
- Bättre hårdvarustöd, bland annat för stereoljud via BlueTooth
- Massor av nyheter i SDK:et, bland annat för streamat ljud och video.
- Diktafon
- En global sökfunktion för all information i telefonen (kontakter, möten, mail, anteckningar etc.)
De funktioner som har diskuterats mest på bloggar och i olika forum har därmed till största del kommit med. Den enda som jag direkt ser saknas är videoinspelning. Det återstår också att se om min personliga favorit åäö som egna knappar på tangentbordet finns med, men jag har inte så höga förhoppningar.
Totalt sett är dock iPhone 3.0 en mycket välkommen uppgradering med riktigt bra funktioner som man knappt kan vänta på! Vänta får man dock göra, uppgraderingen kommer inte förrän i sommar.
Mer detaljer finns på Engadgets liveblog från Apples presentation. Tänk på att läsa nerifrån och upp bara – jag blev rätt förvirrad när jag började läsa baklänges i kronologin :-).
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "iPhone OS 3.0 - nu är det officiellt!", + "meta_description": "versionen släpps.", + "author_id": 6, + "created_at": 1237319874000, + "created_by": 6, + "updated_at": 1237319874000, + "updated_by": 6, + "published_at": 1237319874000, + "published_by": 6 + }, + { + "id": 284, + "title": "Bästa lösningen för webbaserad RSS-läsning", + "slug": "basta-losningen-for-webbaserad-rss-lasning", + "markdown": "\r\n\r\nDet finns många alternativ för den som vill läsa RSS-feeds. Det finns fristående läsare som FeedReader och SharpReader, det finns inbyggt stöd i webbläsare som FireFox och IE, och det finns gadgets för t.ex. Vista. För mig har dock Google Reader visat sig vara den smartaste och bästa lösningen. Varför?\r\n\r\nKräver ingen installation av extra programKlarar många RSS-standarderBra stöd för kategorisering och mapparIntegration med Feedburner som gör det lätt att lägga till nya flödenFunktion för att kommentera i Reader (inte i källans kommentarsfunktioner) och dela kommentarerna med vännerViktigast: bra version för iPhone. Det är riktigt bra att få samma flöde i telefonen som på datorn. Poster man har läst och flaggat upp som favoriter följer sömlöst med mellan plattformarna.\r\nNackdelar då? Google Reader har vad jag vet ingen alertfunktion som visar när nya poster har kommit in. För mig är det dock bara en fördel, jag har sedan länge stängt av alla notifieringar som går att stänga av (Outlook etc.) eftersom de stör fokus och koncentration när man arbetar. Den enda notifierare jag har igång är den jag har byggt själv som visar nästa låt som spelas i kontorets musiksystem :-).\r\n\r\nJag hörde ett rykte om att Reader är en av de tjänster som Google funderar på att göra sig av med. Hoppas verkligen att det inte blir så!\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/633746136445186676-RSS icon.png)", + "html": "Det finns många alternativ för den som vill läsa RSS-feeds. Det finns fristående läsare som FeedReader och SharpReader, det finns inbyggt stöd i webbläsare som FireFox och IE, och det finns gadgets för t.ex. Vista. För mig har dock Google Reader visat sig vara den smartaste och bästa lösningen. Varför?
- Kräver ingen installation av extra program
- Klarar många RSS-standarder
- Bra stöd för kategorisering och mappar
- Integration med Feedburner som gör det lätt att lägga till nya flöden
- Funktion för att kommentera i Reader (inte i källans kommentarsfunktioner) och dela kommentarerna med vänner
- Viktigast: bra version för iPhone. Det är riktigt bra att få samma flöde i telefonen som på datorn. Poster man har läst och flaggat upp som favoriter följer sömlöst med mellan plattformarna.
Nackdelar då? Google Reader har vad jag vet ingen alertfunktion som visar när nya poster har kommit in. För mig är det dock bara en fördel, jag har sedan länge stängt av alla notifieringar som går att stänga av (Outlook etc.) eftersom de stör fokus och koncentration när man arbetar. Den enda notifierare jag har igång är den jag har byggt själv som visar nästa låt som spelas i kontorets musiksystem :-).
Jag hörde ett rykte om att Reader är en av de tjänster som Google funderar på att göra sig av med. Hoppas verkligen att det inte blir så!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Bästa lösningen för webbaserad RSS-läsning", + "meta_description": "viktigast av allt: riktigt bra iPhone-version!", + "author_id": 6, + "created_at": 1239016843000, + "created_by": 6, + "updated_at": 1239016843000, + "updated_by": 6, + "published_at": 1239016843000, + "published_by": 6 + }, + { + "id": 292, + "title": "Så bra är iPhone OS 3.0", + "slug": "sa-bra-ar-iphone-os-30", + "markdown": "\r\n\r\nI juni kommer den nya version av iPhones operativsystem. Om man är registrerad utvecklare har man dock tillgång till det redan nu, i betaversion. Det är ju en sak med en lång lista med funktioner men en annan hur de faktiskt fungerar - så hur bra är iPhone OS 3.0 egentligen?\r\n\r\nDet första man slås av när man har installerat 3.0 är... mest ingenting. För att vara en version som har så många nya funktioner så hade man på något sätt väntat sig en större förändring. När man använder telefonen som vanligt börjar man dock upptäcka att de nya funktionerna är riktigt, riktigt bra.\r\n\r\nHär är mina favoriter:\r\n## Bättre tangentbord\r\nTangentbordet har funnits i landscape-version sedan länge, men bara i vissa applikationer. Det har känns väldigt fånigt att den mest tangentbordsintensiva applikationen – mail – inte har haft landscape-stöd. I OS 3.0 finns det dock, och inte nog med det. Åäö har blivit egna riktiga tangenter! Det kan tyckas vara en liten ändring, men för mig har det gjort extremt stor skillnad. Att skriva mail på telefonen har gått från att vara något som man drar sig för till att bli nästan lika bra som på en telefon med riktigt utdragbart tangentbord. Mycket bra!\r\n## Serverbaserad sökning i mail\r\nTelefonen synkar max 200 mail per mailbox, och har dessutom en tidsspärr för hur gamla mail som kommer med. Vanligtvis räcker det bra, men ofta behöver man tillgång till gamla mail. Nu finns funktionen att söka i hela ens serverkonto (om man är kopplad till Exchange) i alla mappar. Helt suveränt!\r\n\r\n\r\n## Massor med småsaker\r\nMånga har längtat efter klipp-och-klistra. För mig har det aldrig varit någon killer app, men visst är det bekvämt och en funktion man förväntar sig att hitta.\r\n\r\nAtt koppla upp en laptop med telefonen är också bra, fast eftersom jag inte har någon laptop är den kanske inte viktigast för mig.\r\n\r\nEn annan sak som är ny är spolning i mediefiler. Tidigare har det varit en hastighet, som ofta är för snabb. Spolar man i en långfil så innebär varje pixel minst 30 sekunders hopp vilket ofta är för långt och kräver grym pekfingersprecision. Med 3.0 kan man genom att dra fingret i höjdled kan man anpassa spolningshastigheten till väldigt finkorning.\r\n\r\n\r\n\r\nAndra saker som MMS, push etc. har jag inte haft möjlighet att testa än.\r\n## Buggar\r\nVisst finns det buggar, inte så konstigt eftersom det är en beta. Värsta buggen är att den gröna Call-knappen i telefonfönstret är borta ungefär varannan gång jag ska använda den. Det går bra att mata in siffror, men det finns inget sätt att sätta igång samtalet. Det går däremot bra att ringa via telefonboken. En omstart av telefonen trollar fram knappen igen.\r\n\r\nI sammanfattning kan jag bara säga att jag är väldigt nöjd med OS 3.0. Uppgradera så snart du får möjlighet!\r\n\r\n![Bild](http://tekniken.nu/uploads/633761825576050675-iphone-os 3.png)", + "html": "I juni kommer den nya version av iPhones operativsystem. Om man är registrerad utvecklare har man dock tillgång till det redan nu, i betaversion. Det är ju en sak med en lång lista med funktioner men en annan hur de faktiskt fungerar - så hur bra är iPhone OS 3.0 egentligen?
Det första man slås av när man har installerat 3.0 är... mest ingenting. För att vara en version som har så många nya funktioner så hade man på något sätt väntat sig en större förändring. När man använder telefonen som vanligt börjar man dock upptäcka att de nya funktionerna är riktigt, riktigt bra.
Här är mina favoriter:
Bättre tangentbord
Tangentbordet har funnits i landscape-version sedan länge, men bara i vissa applikationer. Det har känns väldigt fånigt att den mest tangentbordsintensiva applikationen – mail – inte har haft landscape-stöd. I OS 3.0 finns det dock, och inte nog med det. Åäö har blivit egna riktiga tangenter! Det kan tyckas vara en liten ändring, men för mig har det gjort extremt stor skillnad. Att skriva mail på telefonen har gått från att vara något som man drar sig för till att bli nästan lika bra som på en telefon med riktigt utdragbart tangentbord. Mycket bra!
Serverbaserad sökning i mail
Telefonen synkar max 200 mail per mailbox, och har dessutom en tidsspärr för hur gamla mail som kommer med. Vanligtvis räcker det bra, men ofta behöver man tillgång till gamla mail. Nu finns funktionen att söka i hela ens serverkonto (om man är kopplad till Exchange) i alla mappar. Helt suveränt!
Massor med småsaker
Många har längtat efter klipp-och-klistra. För mig har det aldrig varit någon killer app, men visst är det bekvämt och en funktion man förväntar sig att hitta.
Att koppla upp en laptop med telefonen är också bra, fast eftersom jag inte har någon laptop är den kanske inte viktigast för mig.
En annan sak som är ny är spolning i mediefiler. Tidigare har det varit en hastighet, som ofta är för snabb. Spolar man i en långfil så innebär varje pixel minst 30 sekunders hopp vilket ofta är för långt och kräver grym pekfingersprecision. Med 3.0 kan man genom att dra fingret i höjdled kan man anpassa spolningshastigheten till väldigt finkorning.
Andra saker som MMS, push etc. har jag inte haft möjlighet att testa än.
Buggar
Visst finns det buggar, inte så konstigt eftersom det är en beta. Värsta buggen är att den gröna Call-knappen i telefonfönstret är borta ungefär varannan gång jag ska använda den. Det går bra att mata in siffror, men det finns inget sätt att sätta igång samtalet. Det går däremot bra att ringa via telefonboken. En omstart av telefonen trollar fram knappen igen.
I sammanfattning kan jag bara säga att jag är väldigt nöjd med OS 3.0. Uppgradera så snart du får möjlighet!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Så bra är iPhone OS 3.0", + "meta_description": "en annan hur de faktiskt fungerar - så hur bra är iPhone OS 3.0 egentligen?", + "author_id": 6, + "created_at": 1240585756000, + "created_by": 6, + "updated_at": 1240585756000, + "updated_by": 6, + "published_at": 1240585756000, + "published_by": 6 + }, + { + "id": 295, + "title": "Uppgradera från Windows 7 beta till RC", + "slug": "uppgradera-fran-windows-7-beta-till-rc", + "markdown": "\r\nEgentligen är det inte meningen att man ska kunna uppgradera till Windows 7 RC från något annat än en ren Vista-installation. För de av oss om har installerat Windows 7 beta känns det ju dock träligt att behöva göra en hel ominstallation nu och en till när den skarpa versionen kommer i oktober. Som tur är så är installationsprogrammet för RC-versionen ganska lättlurat:\r\n\r\nhttp://www.nirmaltv.com/2009/05/02/how-to-upgrade-from-windows-7-beta-to-rc-build/\r\n\r\n(jag har dock ännu inte testat själv att uppgradera, så inga garantier utlovas för att det ska funka felfritt).\r\n![Bild](http://tekniken.nu/uploads/633772222063954562-windows72.png)", + "html": "Egentligen är det inte meningen att man ska kunna uppgradera till Windows 7 RC från något annat än en ren Vista-installation. För de av oss om har installerat Windows 7 beta känns det ju dock träligt att behöva göra en hel ominstallation nu och en till när den skarpa versionen kommer i oktober. Som tur är så är installationsprogrammet för RC-versionen ganska lättlurat:
http://www.nirmaltv.com/2009/05/02/how-to-upgrade-from-windows-7-beta-to-rc-build/
(jag har dock ännu inte testat själv att uppgradera, så inga garantier utlovas för att det ska funka felfritt).",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "Uppgradera från Windows 7 beta till RC",
+ "meta_description": "",
+ "author_id": 6,
+ "created_at": 1241625406000,
+ "created_by": 6,
+ "updated_at": 1241625406000,
+ "updated_by": 6,
+ "published_at": 1241625406000,
+ "published_by": 6
+ },
+ {
+ "id": 297,
+ "title": "Äntligen stöd för tillägg i Google Chrome",
+ "slug": "antligen-stod-for-tillagg-i-google-chrome",
+ "markdown": "\r\n\r\nI den nyaste utvecklarversionen av Chrome så har Google utökat funktionerna med extensions, alltså små tillägg som skapas av tredjepartsutvecklare som gör webbläsaren bättre. FireFox har länge varit kungen på extensions och har tusentals fantastiska tillägg för allt mellan att debugga webbsidor och navigera lättare på Kanye Wests webbplats (hmm...).\r\n\r\nSjälv har jag tyckt att just tillägg har varit det som har saknats från Chrome, men nu finns alltså API:et på plats. Om du vill testa själv, gör såhär:\r\n\r\n\r\nVäxla över Chrome till utvecklarkanalen med Chrome Channel Changer. Det betyder att du oftare får nya versioner och snabbare får ny funktionalitet, men som samtidigt är mindre genomtestade.Ändra genvägen som startar Chrome och lägg till –enable-extensions (två bindestreck först)Testa något av de två exemplen för Gmail och Google Reader som Google själva har byggtVänta på nya grymma tillägg som garanterat är på väg!\r\n\r\n\r\nMina 10 önsketillägg (som finns och inte finns till andra webbläsare)\r\n\r\n\r\nXmarks – grym bokmärkessynkare som finns till FireFox, IE och Safariutorrent – lägga till torrents och hålla koll på nedladdningar på en annan dator (finns redan till FireFox)FireBug – Javascript-debugger och nätverksmonitorGoogle Reader – exemplet gör bara att man kan lägga till feeds, jag vill ha en notifierFacebook notifierCoolIrisSip-uppringare – som går att koppla till vår sip-växel, gör telefonnummer klickbara och ringer med hjälpa av vanliga telefonenBlogga detta på Tekniken – en knapp som automatiskt skapar ramverket till ett blogginlägg utifrån en site man står påAdd this – snabblänkar för att posta på Facebook, Twitter, Tumblr what have youFireshot – grymt skärmpdumpsverktyg som finns för FireFox\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/633779831969469733-Google_Chrome_Browser_logo_ico_by_xplight.png)",
+ "html": "
I den nyaste utvecklarversionen av Chrome så har Google utökat funktionerna med extensions, alltså små tillägg som skapas av tredjepartsutvecklare som gör webbläsaren bättre. FireFox har länge varit kungen på extensions och har tusentals fantastiska tillägg för allt mellan att debugga webbsidor och navigera lättare på Kanye Wests webbplats (hmm...).
Själv har jag tyckt att just tillägg har varit det som har saknats från Chrome, men nu finns alltså API:et på plats. Om du vill testa själv, gör såhär:
- Växla över Chrome till utvecklarkanalen med Chrome Channel Changer. Det betyder att du oftare får nya versioner och snabbare får ny funktionalitet, men som samtidigt är mindre genomtestade.
- Ändra genvägen som startar Chrome och lägg till –enable-extensions (två bindestreck först)
- Testa något av de två exemplen för Gmail och Google Reader som Google själva har byggt
- Vänta på nya grymma tillägg som garanterat är på väg!
Mina 10 önsketillägg (som finns och inte finns till andra webbläsare)
- Xmarks – grym bokmärkessynkare som finns till FireFox, IE och Safari
- utorrent – lägga till torrents och hålla koll på nedladdningar på en annan dator (finns redan till FireFox)
- FireBug – Javascript-debugger och nätverksmonitor
- Google Reader – exemplet gör bara att man kan lägga till feeds, jag vill ha en notifier
- Facebook notifier
- CoolIris
- Sip-uppringare – som går att koppla till vår sip-växel, gör telefonnummer klickbara och ringer med hjälpa av vanliga telefonen
- Blogga detta på Tekniken – en knapp som automatiskt skapar ramverket till ett blogginlägg utifrån en site man står på
- Add this – snabblänkar för att posta på Facebook, Twitter, Tumblr what have you
- Fireshot – grymt skärmpdumpsverktyg som finns för FireFox
Flera av stora siter som Google och Hulu har gjort särskilda gränssnitt anpassade för att fungera bra på en TV, t.ex. via Wii eller PS3. Nu har turen kommit till Youtube. Youtube XL är ett gränssnitt med extra stora knappar, typsnitt etc. särskild gjort för att funka på större tittavstånd än det brukar vara till datorskärmen. Välkommet tycker jag som med jämna mellanrum febrilt försöker pricka fullskärmsknappen när man kör Youtube på TV:n.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Youtube lanserar TV-gränssnitt", + "meta_description": "", + "author_id": 6, + "created_at": 1244018500000, + "created_by": 6, + "updated_at": 1244018500000, + "updated_by": 6, + "published_at": 1244018500000, + "published_by": 6 + }, + { + "id": 301, + "title": "Bästa sättet att göra en Flickr-slideshow", + "slug": "basta-sattet-att-gora-en-flickr-slideshow", + "markdown": "\r\n\r\nJag funderade länge innan jag valde var jag ska lägga mina foton, och kom till slut fram till att Flickr var rätt val för mig. Här var kriterierna som fick mig att betala för ett pro-konto:\r\nEtablerat och tryggt (ägs av Yahoo)Lätt att hantera – applikation för batchuppladdning t.ex.Oändligt (ja faktiskt) med utrymme för bilderSparar originalversionerna av bilderna så att jag samtidigt kan ha det som både fotoalbum och backupRättigheter för att styra vilka bilder som ska vara publika och vilka som bara ska visas för inloggade vänner eller släktingarLätt att djuplänka direkt till bilder om man vill posta på ett diskussionsforum eller liknandeBra API så att man kan använda bilderna lite varstans (eller bygga egna mashups)\r\nFlickrs egen slideshowfunktion som ju också har fullskärmsläge kan du bädda in i vilken webbsida som helst:\r\n\r\nGör såhär:\r\nStarta din slideshow på Flickr, tryck på ShareKopiera det som står i fältet ”Grab the embed HTML”. Om du vill kan du clicka på Customize och bestämma storlek och lite annat på flashen.3a) Klistra in embedkoden på din webbsida.3b) Överkurs: om du är lite händig så funkar det även bra att bara klippa ut adressen till flashen och flashVars. Det gör att det går bra att använda t.ex. SWFObject för att rita ut flashen.\r\nSåhär blir det:\r\n\r\n\r\n \r\n\r\nTips på mändger av andra Flickr-applikationer: http://www.quickonlinetips.com/archives/2005/03/great-flickr-tools-collection/\r\n\r\n![Bild](http://tekniken.nu/uploads/633797285203242309-flickrhai.png)", + "html": "Jag funderade länge innan jag valde var jag ska lägga mina foton, och kom till slut fram till att Flickr var rätt val för mig. Här var kriterierna som fick mig att betala för ett pro-konto:
- Etablerat och tryggt (ägs av Yahoo)
- Lätt att hantera – applikation för batchuppladdning t.ex.
- Oändligt (ja faktiskt) med utrymme för bilder
- Sparar originalversionerna av bilderna så att jag samtidigt kan ha det som både fotoalbum och backup
- Rättigheter för att styra vilka bilder som ska vara publika och vilka som bara ska visas för inloggade vänner eller släktingar
- Lätt att djuplänka direkt till bilder om man vill posta på ett diskussionsforum eller liknande
- Bra API så att man kan använda bilderna lite varstans (eller bygga egna mashups)
Flickrs egen slideshowfunktion som ju också har fullskärmsläge kan du bädda in i vilken webbsida som helst:
Gör såhär:
- Starta din slideshow på Flickr, tryck på Share
- Kopiera det som står i fältet ”Grab the embed HTML”. Om du vill kan du clicka på Customize och bestämma storlek och lite annat på flashen.
- 3a) Klistra in embedkoden på din webbsida.
- 3b) Överkurs: om du är lite händig så funkar det även bra att bara klippa ut adressen till flashen och flashVars. Det gör att det går bra att använda t.ex. SWFObject för att rita ut flashen.
Såhär blir det:
Tips på mändger av andra Flickr-applikationer: http://www.quickonlinetips.com/archives/2005/03/great-flickr-tools-collection/
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Bästa sättet att göra en Flickr-slideshow", + "meta_description": "", + "author_id": 6, + "created_at": 1244131719000, + "created_by": 6, + "updated_at": 1244131719000, + "updated_by": 6, + "published_at": 1244131719000, + "published_by": 6 + }, + { + "id": 302, + "title": "Windows 7-tips för Vista-användaren", + "slug": "windows-7-tips-for-vista-anvandaren", + "markdown": "\r\n## ”Billig ny dator”\r\n\r\n\r\nOavsett vad dåliga recensioner och tveksamma benchmarks säger så upplevs Windows 7 som snabbare än vista i alla lägen och i många fall snabbare än XP även i benchmarks. Vill du att datorn ska kännas som en ny dator så kommer en Windows 7 uppgradering sannolikt vara värd pengarna.\r\n## Nya trix för fönsterhantering\r\nAtt dra fönster mot kanterna vänster och höger gör att fönstret maximerar och tar halva skärmen, detta kan vara smidigt om man vill ha två fönster precis bredvid varann.\r\n\r\nDrar man fönstret rakt upp mot översta kanten av skärmen maximeras fönstret.\r\n\r\nMaximera på höjden, dubbelklicka på övre kanten av fönstret eller dra den rakt upp till kanten så maximeras fönstret på höjden, perfekt för webbsurfning!\r\n\r\nTa tag i ett fönster och skaka på det så minimeras alla andra fönster. Skaka på det igen så kommer de tillbaka.\r\n## Taskbaren\r\nNya taskbaren är en hybrid av snabbstartsikoner och program som är igång. Programmen som är igång visas med en ram, de andra visas utan ram. Du behöver alltså inte göra skillnad när du vill öppna ett program, klicka på ikonen och då kör den igång programmet eller växlar till det. Om programmet har flera fönster visas en solfjäder av dom öppna fönstren och du kan klicka direkt på det fönstret du vill åt (det är som alt-tab fast per applikation).\r\n\r\nStänga öppna fönster\r\n\r\nI solfjädern finns förutom krysset också möjlighet att stänga med mitten musknapp .\r\n\r\nÖppna en till version av programmet\r\n\r\nKorta versionen är mitten musknappen klicka på ikonen. Mediumversionen är Crtrl + musklick på ikonen. Långa versionen är högerklicka ikonen och klicka sen på applikationens namn.\r\n\r\nNagla fast program i taskbaren.\r\n\r\nHögerklicka på programmet och välj pin to taskbar så finns det alltid tillgängligt.\r\n## Andra trevliga nyheter\r\nGPU-komprimering av film till mobilen – Finns ej i RC versionen men skall komma när skarpa släpps 22 oktober.Mobile Center – Hantera alla mobiler med ett gränssnitt för att t.ex. föra över bilder, synka kontakter osv. Kräver stöd av mobiltillverkaren förstås men ger ett homogent intryck istället för halvtaskigt utvecklade applikationen från tillverkare X.Ribbon i wordpad och paint – Känns helt plötsligt moderna! Men tipset är fortfarande att istället för paint använda paint.net för bättre funktionalitet också helt gratis.Avancerad kalkylator – Kan användas för att t.ex beräkna lånekostnader och sånt som man tidigare ofta valt Excel för.Avancerad felsökning för sleep och hybernate – ”powercfg.exe -ENERGY –OUTPUT”Billig ny dator”
Oavsett vad dåliga recensioner och tveksamma benchmarks säger så upplevs Windows 7 som snabbare än vista i alla lägen och i många fall snabbare än XP även i benchmarks. Vill du att datorn ska kännas som en ny dator så kommer en Windows 7 uppgradering sannolikt vara värd pengarna.
Nya trix för fönsterhantering
Att dra fönster mot kanterna vänster och höger gör att fönstret maximerar och tar halva skärmen, detta kan vara smidigt om man vill ha två fönster precis bredvid varann.
Drar man fönstret rakt upp mot översta kanten av skärmen maximeras fönstret.
Maximera på höjden, dubbelklicka på övre kanten av fönstret eller dra den rakt upp till kanten så maximeras fönstret på höjden, perfekt för webbsurfning!
Ta tag i ett fönster och skaka på det så minimeras alla andra fönster. Skaka på det igen så kommer de tillbaka.
Taskbaren
Nya taskbaren är en hybrid av snabbstartsikoner och program som är igång. Programmen som är igång visas med en ram, de andra visas utan ram. Du behöver alltså inte göra skillnad när du vill öppna ett program, klicka på ikonen och då kör den igång programmet eller växlar till det. Om programmet har flera fönster visas en solfjäder av dom öppna fönstren och du kan klicka direkt på det fönstret du vill åt (det är som alt-tab fast per applikation).
Stänga öppna fönster
I solfjädern finns förutom krysset också möjlighet att stänga med mitten musknapp .
Öppna en till version av programmet
Korta versionen är mitten musknappen klicka på ikonen. Mediumversionen är Crtrl + musklick på ikonen. Långa versionen är högerklicka ikonen och klicka sen på applikationens namn.
Nagla fast program i taskbaren.
Högerklicka på programmet och välj pin to taskbar så finns det alltid tillgängligt.
Andra trevliga nyheter
- GPU-komprimering av film till mobilen – Finns ej i RC versionen men skall komma när skarpa släpps 22 oktober.
- Mobile Center – Hantera alla mobiler med ett gränssnitt för att t.ex. föra över bilder, synka kontakter osv. Kräver stöd av mobiltillverkaren förstås men ger ett homogent intryck istället för halvtaskigt utvecklade applikationen från tillverkare X.
- Ribbon i wordpad och paint – Känns helt plötsligt moderna! Men tipset är fortfarande att istället för paint använda paint.net för bättre funktionalitet också helt gratis.
- Avancerad kalkylator – Kan användas för att t.ex beräkna lånekostnader och sånt som man tidigare ofta valt Excel för.
- Avancerad felsökning för sleep och hybernate – ”powercfg.exe -ENERGY –OUTPUT <path\\filename>” ny switch som ger en html rapport över möjliga problem.
Idag är startdagen på WWDC, Apples utvecklarkonferens som har blivit synonymt med stora nyheter från företaget. Förra året var det på detta event som de nya iPhone 3G telefonerna presenterades. Så vad tror man kommer presenteras idag då?
Garanterat:
- iPhone 3.0 – ny mjukvara med copy paste osv, vi har tidigare skrivit och testat om nyheterna här på tekniken.nu
- Demonstration av nya Apples nya operativsystem Snow Leopard (och spikat släppdatum i höst). Troligtvis är det hastighet som är den stora nyheten – jag själv hoppas på något nytt i gränssnittet, t ex 3D desktop..
- Quicktime kommer demonstreras med de nyheter som läckt ut (så som skärminspelning och stöd för massor av moderna codecs samt att allt numera är ”Pro”)
Antagligen:
- Ny snabbare iPhone – Det absolut mest säkra är att det kommer nya modeller med 32gb och matt baksida – det troliga är att Apple kommer att fokusera på snabbheten, både snabbare processor och snabbare inbyggt bredband. Magnetisk kompass och videostöd är också väldigt troligt samt bättre kamera med autofokus. Utöver det vet ingen säkert, OLED skärm vore riktigt kul (drar mindre ström och är ljusstarkare) och många rykten säger att det kommer en billigare variant men där tror jag nog mer på en stor prissänkning på nuvarande 8gb modell snarare. Förhoppningsvis finns telefonerna redan tillverkade så det inte dröjer länge innan vi behöver stå i kö på Kungsgatan ;)
- Trådlös videostreaming – Podcasts kan ju numera streamas och förhoppningsvis kommer även video (hyrfilm och tv-serier) släppas för trådlös försäljning.
Hoppas:
- Hyrfilm för resten av världen – Usa har ju sen länge kunnat köpa och hyra film. Storbritannien och Tyskland har fått den nyheten under senaste året och nu hoppas jag verkligen på att vi i Sverige ska kunna få en möjlighet att vara lagliga trots att vi vill titta på 24 och Lost samtidigt som de nya avsnitten kommer ut.
- MacBook mini – Apples svar på alla Intel atom-baserade laptops – billiga strömsnåla och baserade på Apples operativsystem – Förhoppningsvis med pekskärm och garanterat med inbyggd 3G. Väldigt osäkert eftersom de redan släppt MacBook Air – men man vet aldrig med Apple!
Följ händelsen live via Twitter: http://twitter.com/macrumors - börjar klockan 19:00 svensk tid!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Äntligen ny iPhone!", + "meta_description": "", + "author_id": 1087, + "created_at": 1244460779000, + "created_by": 1087, + "updated_at": 1244460779000, + "updated_by": 1087, + "published_at": 1244460779000, + "published_by": 1087 + }, + { + "id": 305, + "title": "Skapa enkäter med Google Docs", + "slug": "skapa-enkater-med-google-docs", + "markdown": "\r\n\r\nJag upptäckte av en slump via en läsarundersökning på Prylfeber att Google Docs har fått en ny funktion: frågeformulär. Med hjälp av formulären i Google Docs så kan du:\r\n\r\n\r\nSkapa formuläret med olika frågetyper: flervalsfrågor (välj en med radioknapper eller drop down-meny), flervalsfrågor (välj flera med kryssrutor), fritext, gradera 1-5.Välja bland färdiga grafiska utseenden på formuläret ellerKanske viktigast: bädda in formuläret i din egen webbsidaBjuda in svarande via epostFå ut alla svar som ett kalkylblad (i Google Spreadsheets och därmed också i Excel)Få en sammanställning av alla svar, som man också kan göra tillgänglig för de som svarar\r\n\r\n\r\nDet enda som jag inte har hittat är ett sätt att se till att begränsa så att varje person bara kan svara en gång, eller på andra sätt begränsa vilka som kan svara. Om det fixas (kanske redan är löst och jag inte kan hitta det) så är det här en tjänst som är lika bra som de enkättjänster som man får betala rejält för varje gång man använder.\r\n\r\nSom demonstration på hur det fungerar – var med i tekniken.nus första läsarundersökning:\r\n\r\n\r\nLoading...\r\n\r\n![Bild](http://tekniken.nu/uploads/633802256937753036-googlesummary.PNG)", + "html": "Jag upptäckte av en slump via en läsarundersökning på Prylfeber att Google Docs har fått en ny funktion: frågeformulär. Med hjälp av formulären i Google Docs så kan du:
- Skapa formuläret med olika frågetyper: flervalsfrågor (välj en med radioknapper eller drop down-meny), flervalsfrågor (välj flera med kryssrutor), fritext, gradera 1-5.
- Välja bland färdiga grafiska utseenden på formuläret eller
- Kanske viktigast: bädda in formuläret i din egen webbsida
- Bjuda in svarande via epost
- Få ut alla svar som ett kalkylblad (i Google Spreadsheets och därmed också i Excel)
- Få en sammanställning av alla svar, som man också kan göra tillgänglig för de som svarar
Det enda som jag inte har hittat är ett sätt att se till att begränsa så att varje person bara kan svara en gång, eller på andra sätt begränsa vilka som kan svara. Om det fixas (kanske redan är löst och jag inte kan hitta det) så är det här en tjänst som är lika bra som de enkättjänster som man får betala rejält för varje gång man använder.
Som demonstration på hur det fungerar – var med i tekniken.nus första läsarundersökning:
Rapporteringen efter Apples keynote på WWDC häromdagen har inte helt otippat mest kommit att handla om iPhone (OS 3.0 och nya modellen 3Gs). Men en nyhet som också presenterades och som jag tycker är väl värd att lyfta fram är att OSX iom nya versionen \"Snow Leopard\" får fullt stöd för Exchange Server i applikationerna Mail, Address Book och iCal.
Visserligen har Microsoft erbjudit Exchange stöd i OSX ett tag med produkten Entourage, men de flesta Macanvändare jag jobbat med föredrar Apples egna program. Dessutom så kostar Entourage licenspengar, medans detta Exchangestöd ingår i operativet \"gratis\". Bra nyheter för Macanvändare i Windowsmiljöer med andra ord!
Läs mer om Exchangestödet i OSX hos Apple.
Vill du ha ett lätt sätt att länka till din Facebook-profil? Imorgon inför Facebook användarnamn som direkt länkar till en profil – så nu u kan du äntligen få t.ex. http//www.facebook.com/1337h@xx0r som adress till allt om dig själv. 6:01 svensk tid imorgon (lördag 13 juni) öppnar funktionen och kön till populära användarnamn förväntas bli ungefär som till Springsteen-konserterna förra veckan. Vissa svenska bloggare har redan meddelat att väckarklockan står på 05:50 imorgon, orkar du tälta utanför Facebook imorgon för att få ett bra användarnamn?
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Imorgon inför Facebook användarnamn", + "meta_description": "1 imorgon öppnas funktionen.", + "author_id": 6, + "created_at": 1244801794000, + "created_by": 6, + "updated_at": 1244801794000, + "updated_by": 6, + "published_at": 1244801794000, + "published_by": 6 + }, + { + "id": 309, + "title": "Linksys gamla arbetshäst WRT54GL har fått en efterföljare", + "slug": "linksys-gamla-arbetshast-wrt54gl-har-fatt-en-efterfoljare", + "markdown": "\r\n\r\nEn favorit på tekniken.nu är Linksys WRT54GL som har varit lite av standardvalet när det gäller router hemma eller på det lilla kontoret. Med open source-firmware som DD-WRT får man också en grym massa nya funktioner, som normalt kräver stora hårdvaruinvesteringar om man ska köpa dem färdiga – något som vi har skrivit om tidigare och som även IDG har skrivit om nyligen.\r\n\r\nSweclockers rapporterar idag att Cisco har släppt en uppföljare - Linksys WRT160NL. Förutom ett kraftigt förnyat utseende så har WRT160NL:\r\nTrådlöst 802.11n (draft 2.0)4 trådbundna 100 MBit ethernet-portarStorage Link för anslutning av extern hårddisk via USB 2.0UNPNPAV för att strömma mediefiler400 MHz-processor (WRT54GL har en på 200MHz)32 MB minne (mot 16MB i WRT54GL)\r\nDD-WRT och OpenWRT finns inte för WRT160NL än, men jag skulle tro att det bara är en tidsfråga i och med att Linksys original-firmware är Linux-baserad.\r\n\r\nEn annan reflektion är att WRT160NL har en Cisco-logga på ovansidan, och att Linksys webbsida har bytt adress till www.linksysbycisco.com. Frågan är om hemmavarumärket Linksys är på väg att försvinna...\r\n\r\nWRT160BL finns redan att köpa och kostar från 866:- inklusive moms.\r\n\r\n![Bild](http://tekniken.nu/uploads/633814495455454590-wrt160nl.png)", + "html": "En favorit på tekniken.nu är Linksys WRT54GL som har varit lite av standardvalet när det gäller router hemma eller på det lilla kontoret. Med open source-firmware som DD-WRT får man också en grym massa nya funktioner, som normalt kräver stora hårdvaruinvesteringar om man ska köpa dem färdiga – något som vi har skrivit om tidigare och som även IDG har skrivit om nyligen.
Sweclockers rapporterar idag att Cisco har släppt en uppföljare - Linksys WRT160NL. Förutom ett kraftigt förnyat utseende så har WRT160NL:
- Trådlöst 802.11n (draft 2.0)
- 4 trådbundna 100 MBit ethernet-portar
- Storage Link för anslutning av extern hårddisk via USB 2.0
- UNPNPAV för att strömma mediefiler
- 400 MHz-processor (WRT54GL har en på 200MHz)
- 32 MB minne (mot 16MB i WRT54GL)
DD-WRT och OpenWRT finns inte för WRT160NL än, men jag skulle tro att det bara är en tidsfråga i och med att Linksys original-firmware är Linux-baserad.
En annan reflektion är att WRT160NL har en Cisco-logga på ovansidan, och att Linksys webbsida har bytt adress till www.linksysbycisco.com. Frågan är om hemmavarumärket Linksys är på väg att försvinna...
WRT160BL finns redan att köpa och kostar från 866:- inklusive moms.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Linksys gamla arbetshäst WRT54GL har fått en efterföljare", + "meta_description": "", + "author_id": 6, + "created_at": 1245852745000, + "created_by": 6, + "updated_at": 1245852745000, + "updated_by": 6, + "published_at": 1245852745000, + "published_by": 6 + }, + { + "id": 311, + "title": "Äntligen en standard på mobilladdare", + "slug": "antligen-en-standard-pa-mobilladdare", + "markdown": "\r\n\r\nLite otippat men väldigt efterlängtat så har nu ett stort antal mobiltillverkare enats om att använda micro-USB som interface för att ladda mobiltelefonen. Det såg länge ut som att Apple i vanlig ordning skulle gå sin egen väg, men nu är även de med! Från och med 2010 ska Apple, LG, Motorola, NEC, Nec, Nokia, Qualcomm, RIM (Blackberry), Samsung, Sony Ericsson och TI börja leverera alla sina telefoner med laddning via micro-USB. HTC och säkert fler gör det redan.\r\n\r\nÄntligen!\r\n\r\nKälla: Mobilfeber\r\n\r\n![Bild](http://tekniken.nu/uploads/633818866724418073-B2C_Micro USB Data Cable - SKN6238A_lg.png)", + "html": "Lite otippat men väldigt efterlängtat så har nu ett stort antal mobiltillverkare enats om att använda micro-USB som interface för att ladda mobiltelefonen. Det såg länge ut som att Apple i vanlig ordning skulle gå sin egen väg, men nu är även de med! Från och med 2010 ska Apple, LG, Motorola, NEC, Nec, Nokia, Qualcomm, RIM (Blackberry), Samsung, Sony Ericsson och TI börja leverera alla sina telefoner med laddning via micro-USB. HTC och säkert fler gör det redan.
Äntligen!
Källa: Mobilfeber
Det är sällan det står någonting om virus eller andra farligheter för Mac men nu har det tydligen uppkommit en för iPhone.
Enligt Charlie Miller så går det att via ett sms ta över någon annans iPhone.
Man skall enligt honom kunna via SMS installera program som sedan kan användas för att skicka vidare information till annan server/telefon.
Lite SciFi kanske man kan tycka men betänk då att det är ganska vanligt för våra operatörer att skicka installationsinformation via SMS till våra telefoner, en sådan enkelt sak som informationen att få MMS i min gamla Nokia fick jag via SMS från telia,
http://www.engadget.com/2009/07/02/apple-patching-nasty-iphone-sms-vulnerability/
Hur man faktiskt kan gå tillväga skall mr Miller redovisa på ett kommande konvent i USA kallat Black Hat
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Ta över en iPhone via SMS?", + "meta_description": "", + "author_id": 1091, + "created_at": 1246613680000, + "created_by": 1091, + "updated_at": 1246613680000, + "updated_by": 1091, + "published_at": 1246613680000, + "published_by": 1091 + }, + { + "id": 316, + "title": "MindMeister - Gratis online mindmapping", + "slug": "mindmeister---gratis-online-mindmapping", + "markdown": "\r\n\r\nJag har länge använt Mindjets fantastiska program MindManager för att strukturera mitt tänkande både yrkesmässigt och privat. MindManager är en fantastisk applikation, men en stor nackdel är att den just är en applikation. Jag använder i min vardag ett antal olika datorer och har saknat ett bra sätt att få tillgång till mina mindmaps oavsett vilken dator jag sitter på.\r\n\r\nPlats på scen för MindMeister!\r\n\r\n\r\n\r\nMindMeister är ett väl fungerande onlinealternativ till MindManager, som på ett snyggt sätt klarar av de flesta funktionerna i MindManager samt drar nytta av att vara en webapplikation genom att tillföra teamfunktioner. Siten har varit publik sedan 2007 och nuvarande versionen (2.0) lanserades i april förra året så det här kan vara old news för många, men jag hade helt missat dess existens.\r\n\r\nAtt skapa mindmaps är grymt smidigt, och är man van vid MindManager så är de flesta tangentbordskommandon identiska (Insert skapar ny nivå, Enter ny rad etc). En smart funktion är möjligheten att dela mindmaps mellan fler användare och i realtid kunna editera samma mindmap, grymt bra på projektmöten, brainstorms etc.\r\n\r\nEn annan grym tillämpning är att MindMeister har en iPhone applikation i betastadie som kommer låta användaren komma åt och redigera sina mindmaps i sin iPhone/iPod touch.\r\n\r\n\r\n\r\nMindMeister har också en Widget som ger möjligheten att snabbt skjuta in en tanke i sin standardkarta.\r\n\r\nExportmöjligheter finns till en massa olika format (PDF, Outline RTF, JPG, Mindmister.mind, Freemind.mm & MindManager.mmap).\r\n\r\nGratisversionen av tjänsten tillåter sex samtidiga mindmaps, vilket i mitt fall är mer än väl. Vill man dock låsa upp lite fler funktioner såsom export tillexempel brandad företagsversion med egen domän, offlineläge via Google Gears eller exportmöjlighet till Mindmanager så finns betalversioner för $4 (Premium) eller $6 (Business) per månad, samt en studentversion för $15 per år.\r\n\r\nDet här är ett lysande exempel på hur en webapplikation ger mervärde jämfört med en befintlig traditionell applikation. Rekommenderas varmt!\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/633834294657561226-mindmeister.jpg)", + "html": "Jag har länge använt Mindjets fantastiska program MindManager för att strukturera mitt tänkande både yrkesmässigt och privat. MindManager är en fantastisk applikation, men en stor nackdel är att den just är en applikation. Jag använder i min vardag ett antal olika datorer och har saknat ett bra sätt att få tillgång till mina mindmaps oavsett vilken dator jag sitter på.
Plats på scen för MindMeister!
MindMeister är ett väl fungerande onlinealternativ till MindManager, som på ett snyggt sätt klarar av de flesta funktionerna i MindManager samt drar nytta av att vara en webapplikation genom att tillföra teamfunktioner. Siten har varit publik sedan 2007 och nuvarande versionen (2.0) lanserades i april förra året så det här kan vara old news för många, men jag hade helt missat dess existens.
Att skapa mindmaps är grymt smidigt, och är man van vid MindManager så är de flesta tangentbordskommandon identiska (Insert skapar ny nivå, Enter ny rad etc). En smart funktion är möjligheten att dela mindmaps mellan fler användare och i realtid kunna editera samma mindmap, grymt bra på projektmöten, brainstorms etc.
En annan grym tillämpning är att MindMeister har en iPhone applikation i betastadie som kommer låta användaren komma åt och redigera sina mindmaps i sin iPhone/iPod touch.
MindMeister har också en Widget som ger möjligheten att snabbt skjuta in en tanke i sin standardkarta.
Exportmöjligheter finns till en massa olika format (PDF, Outline RTF, JPG, Mindmister.mind, Freemind.mm & MindManager.mmap).
Gratisversionen av tjänsten tillåter sex samtidiga mindmaps, vilket i mitt fall är mer än väl. Vill man dock låsa upp lite fler funktioner såsom export tillexempel brandad företagsversion med egen domän, offlineläge via Google Gears eller exportmöjlighet till Mindmanager så finns betalversioner för $4 (Premium) eller $6 (Business) per månad, samt en studentversion för $15 per år.
Det här är ett lysande exempel på hur en webapplikation ger mervärde jämfört med en befintlig traditionell applikation. Rekommenderas varmt!
Microsoft har via sin devblog bekräftat att RTM versionen (Release To Market) av Windows 7 kommer att släppas i augusti. Till skillnad från RC:n så kommer (såklart) inte RTM versionen att
släppas till allmänheten utan endast till partners,
Technet/MSDN-prenumeranter och kunder med gällande SA-avtal. Beroende på partnernivå och/eller avtal får man vänta olika länge:
- ISV, IHV, Technet och MSDN prenumeranter kommer kunna ladda hem den via MSDN den 6:e augusti.
- Företagskunder med gällande SA får tillgång till RTM den 7:e augusti.
- Microsoft Gold och Certified partners kan hämta RTM den 16:e augusti.
- Microsoft Action Pack prenumeraner får vänta till den 23:e augusti.
Precis som när RC:n släpptes kommer det förmodligen inte uppgradering att officiellt stödjas, men med lite tur så fungerar samma trick som gällde vid uppgradering från Beta till RC. Vi bloggar om det när vi testat.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Windows 7 RTM släpps om två veckor", + "meta_description": "", + "author_id": 1085, + "created_at": 1248300039000, + "created_by": 1085, + "updated_at": 1248300039000, + "updated_by": 1085, + "published_at": 1248300039000, + "published_by": 1085 + }, + { + "id": 318, + "title": "Iphone 3GS är här och den säljs av alla operatörer", + "slug": "iphone-3gs-ar-har-och-den-saljs-av-alla-operatorer", + "markdown": "\r\n\r\nIdag är den stora årliga julafton för alla Apple fans, idag är nämligen dagen då alla kan köpa den nya iPhone 3GS - uppdateringen på en av världens mest uppmärksammade telefoner. Uppdateringen handlar som vi tidigare har berättat om hastighet. Telefonen startar snabbare, internet går snabbare, operativsystemet är optimerat osv. Nyhet är också kameran som är bättre och kan nu spela in video, en inbyggd kompass gör det möjligt för nya gränssnitt som kallas \"Augmented reality\" där man kan lägga en \"overlay\" ovanför den vanliga kamerabilden med information om objekt eller personer. Man kan sammanfatta uppdateringen som en grundnivå att bygga sjukt läckra applikationer och spel med. \r\nNytt är också att den nya telefonen nu säljs inte bara av Telia och Telenor utan även Tre, så för alla som har tre som favoritoperatör går det nu bra att köpa telefonen på tre.se.\r\nVi på tekniken.nu var inbjudna att medverka på Telias förhandsvisning igår torsdag men på grund av semestrar och dålig framförhållning av Telia gick det inte få till men vi ser fram emot att hämta ut våra nya telefoner när semestern är över ;-)\r\nNyhetsvärdet av dagens lanseringen är väl inte jättehögt med tanke på att telefonen har funnits i USA sen i början av juli och nyheterna i den presenterades redan i början av juni men för mig personligen ser jag väldigt mycket fram emot att få den nya telefonen eftersom min kära iPhone 3G blev stulen i Monaco i maj. \r\nFrån semestern hälsar vi på tekniken.nu er alla en glad sommar och njut ordentligt av era nya telefoner!\r\n\r\n![Bild](http://tekniken.nu/uploads/iphone.png)", + "html": "Idag är den stora årliga julafton för alla Apple fans, idag är nämligen dagen då alla kan köpa den nya iPhone 3GS - uppdateringen på en av världens mest uppmärksammade telefoner. Uppdateringen handlar som vi tidigare har berättat om hastighet. Telefonen startar snabbare, internet går snabbare, operativsystemet är optimerat osv. Nyhet är också kameran som är bättre och kan nu spela in video, en inbyggd kompass gör det möjligt för nya gränssnitt som kallas \"Augmented reality\" där man kan lägga en \"overlay\" ovanför den vanliga kamerabilden med information om objekt eller personer. Man kan sammanfatta uppdateringen som en grundnivå att bygga sjukt läckra applikationer och spel med.
Nytt är också att den nya telefonen nu säljs inte bara av Telia och Telenor utan även Tre, så för alla som har tre som favoritoperatör går det nu bra att köpa telefonen på tre.se.
Vi på tekniken.nu var inbjudna att medverka på Telias förhandsvisning igår torsdag men på grund av semestrar och dålig framförhållning av Telia gick det inte få till men vi ser fram emot att hämta ut våra nya telefoner när semestern är över ;-)
Nyhetsvärdet av dagens lanseringen är väl inte jättehögt med tanke på att telefonen har funnits i USA sen i början av juli och nyheterna i den presenterades redan i början av juni men för mig personligen ser jag väldigt mycket fram emot att få den nya telefonen eftersom min kära iPhone 3G blev stulen i Monaco i maj.
Från semestern hälsar vi på tekniken.nu er alla en glad sommar och njut ordentligt av era nya telefoner!
En av de funktioner jag saknar mest i Chrome är synkronisering av bokmärken. För FireFox, IE och Safari finns Xmarks som löser uppgiften utmärkt, men till Chrome finns ingenting. Nu meddelar dock Chromes utvecklingsteam att en synkroniseringsfunktion för användardata i Chrome är på väg. Först ut är bokmärken, men senare kommer även annat att kunna synkroniseras (som sparade lösenord). En skillnad mot t.ex. Xmarks är att Chromes synkronisering kommer att använda Google Talk. Det betyder, förutom att kommunikationen använder ett välanvänt protokoll, att synkroniseringen sker med push. I samma ögonblick som man lägger till ett bokmärke i Chrome på en dator så läggs det också till på dina andra datorer (om Chrome är igång). Att ha tillgång till samma bokmärken på vilken dator man än sitter är den enda funktionen jag egentligen saknar sen jag bytte standardwebbläsare från FireFox, så jag hoppas att de snabbar på med utvecklingen!
Källa: Ars Technica",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "Google Chrome får synkronisering av bokmärken",
+ "meta_description": "",
+ "author_id": 6,
+ "created_at": 1250161735000,
+ "created_by": 6,
+ "updated_at": 1250161735000,
+ "updated_by": 6,
+ "published_at": 1250161735000,
+ "published_by": 6
+ },
+ {
+ "id": 320,
+ "title": "Synka din iPhone med iTunes på flera datorer",
+ "slug": "synka-din-iphone-med-itunes-pa-flera-datorer",
+ "markdown": "\r\n\r\nEn sak jag har har stört mig på ända sedan jag köpte min iPhone är att man bara kan använda den med en dator. Om man synkar sin iPhone med hemmadatorn går det inte att lägga till låtar på jobbdatorn t.ex. Inte ens om man stänger av synkläget och väljer att hantera musik och film manuellt så kan man använda mer än en dator, trots att det fungerar bra med t.ex. iPod Touch som ju kör nära nog identisk programvara. Det finns dock ett trick som får telefonen att tro att den synkar med samma iTunes-bibliotek trots att man kopplar den till olika datorer.\r\n\r\n\r\n\r\nTricket är att ändra ID:t på iTunes-biblioteken så att de blir samma på de två (eller fler) datorerna. ID:t lagras på två ställen, ett som är lätt att ändra i en XML-fil och ett mer komplicerat i en binärfil. Här finns en guide till hur man gör. Jag testade med Hex-programmet XVI32 men fick det inte att fungera riktigt (den hittade inte mitt ID), men det gick bättre med Hex Editor Neo som också finns i gratisversion.\r\n\r\nJag synkar inte film och musik till min telefon utan kör manuellt och det funkar bra med två datorer. Om jag har fattat det rätt så ska det fungera även om man synkar, men bara på en dator (på de andra får man köra manuella metoden). Lycka till!\r\n\r\n![Bild](http://tekniken.nu/uploads/633863615147414916-Itunes logo Transparent- 2.png)",
+ "html": "
En sak jag har har stört mig på ända sedan jag köpte min iPhone är att man bara kan använda den med en dator. Om man synkar sin iPhone med hemmadatorn går det inte att lägga till låtar på jobbdatorn t.ex. Inte ens om man stänger av synkläget och väljer att hantera musik och film manuellt så kan man använda mer än en dator, trots att det fungerar bra med t.ex. iPod Touch som ju kör nära nog identisk programvara. Det finns dock ett trick som får telefonen att tro att den synkar med samma iTunes-bibliotek trots att man kopplar den till olika datorer.
Tricket är att ändra ID:t på iTunes-biblioteken så att de blir samma på de två (eller fler) datorerna. ID:t lagras på två ställen, ett som är lätt att ändra i en XML-fil och ett mer komplicerat i en binärfil. Här finns en guide till hur man gör. Jag testade med Hex-programmet XVI32 men fick det inte att fungera riktigt (den hittade inte mitt ID), men det gick bättre med Hex Editor Neo som också finns i gratisversion.
Jag synkar inte film och musik till min telefon utan kör manuellt och det funkar bra med två datorer. Om jag har fattat det rätt så ska det fungera även om man synkar, men bara på en dator (på de andra får man köra manuella metoden). Lycka till!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Synka din iPhone med iTunes på flera datorer", + "meta_description": "", + "author_id": 6, + "created_at": 1250764714000, + "created_by": 6, + "updated_at": 1250764714000, + "updated_by": 6, + "published_at": 1250764714000, + "published_by": 6 + }, + { + "id": 321, + "title": "Mindmeisters iPhoneapplikation släppt", + "slug": "mindmeisters-iphoneapplikation-slappt", + "markdown": "\r\n\r\nIdag släpper Mindmeister (tankekarteverktyget som vi tidigare skrivit om) sin officiella iPhoneapplikation. För 49 kronor får man tillgång till följande funktioner:\r\n\r\nCreate, view, and edit mapsonline and offline\r\nSeamlessly sync maps with your online MindMeister account\r\nShare maps directly from the device\r\nFull drag & drop support\r\nZoom in and out\r\nAdd children and sibling nodes\r\nSupport for icons, colors, styles\r\nFavorites and pending maps\r\nGeistesblitz view to quickly insert ideas\r\nUse with or without MindMeister account\r\n\r\nKänns som en given investering om man använder mindmeister och äger en iPhone / iPod Touch. Jag har dock inte testat själv ännu, men om den håller ens i närheten av samma kvalitet som webversionen så bör den vara mycket bra.\r\n\r\n\r\n\r\n \r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/633834294657561226-mindmeister.jpg)", + "html": "Idag släpper Mindmeister (tankekarteverktyget som vi tidigare skrivit om) sin officiella iPhoneapplikation. För 49 kronor får man tillgång till följande funktioner:
Känns som en given investering om man använder mindmeister och äger en iPhone / iPod Touch. Jag har dock inte testat själv ännu, men om den håller ens i närheten av samma kvalitet som webversionen så bör den vara mycket bra.
Apple har de senaste två åren gjort ungefär samma sak som Microsoft – städat i sin bakomliggande kod. Microsoft har precis blivit klara med sitt operativsystem Windows 7 som är Windows Vista men städat från onödig kod och optimerat för hastighet. Idag släpper Apple sitt nya operativsystem Apple OS X Snow Leopard som är en städad variant av deras tidigare operativsystem Apple OS X Leopard.
Nyheterna är få i gränssnittet men under huven finns det destå mer:
- Hela operativsystemet är nu i 64-bit. Alla centrala delar är omskrivna för att dra nytta av hela minnet – tidigare var t.ex. Finder 32-bit och kunde inte använda mer än 3gb av det installerade internminnet.
- OpenCL – alla datorer som säljs numera har en väldigt kraftfull extraprocessor i grafikkortet som inte används annat än när du spelar spel – men nu kan utvecklare skriva applikationer som utnyttjar denna processor och koden skrivs på samma sätt som all övrig kod vilket gör att te.x. mediauppspelning, kodning av filmer osv kommer kunna gå mycket snabbare framöver.
- Inbyggd multitrådning – En stor utmaning för utvecklare är att utnyttja hela kraften i datorn på ett jämnt sätt. Processorn i en dator är ju numera uppdelad i flera interna kärnor som kör koden helt separat men en stor utmaning för utvecklare är att dela upp koden i lagom stora uppdrag som drar jämnt på alla processorerna. Numera finns det en ”Grand Central Dispatch” inbyggd i kärnan som hanterar denna utmaning och ska avlasta programmen från detta dilemma vilket kommer ge stor effekt för t ex mediauppspelning. Det populära mediauppspelningsprogrammet VLC till exempel kan endast använda 50% av processorkraften i en dual core processor vilket gör att min mac-mini hemma inte klarar av 1080p i mkv-container men andra program (PLEX) klarar av att spela upp 1080p galant på grund av bättre uppdelning av kärnorna.
- Inbyggt Exchange-stöd som låter applikationer som iCal, Mail och adressboken synkroniseras direkt mot en Exchange-server. Rykten säger också att addressboken uppdaterar status från Twitter och Facebook.
- Hela installationen är bantad – mest på grund av slopat stöd för PowerPC processorerna men även en hel del annat gammalt är bortrensat. Alla skrivardrivrutiner hämtas till exempel numera direkt från nätet istället för att skickas med installationsskivan. Enligt Apple får du nu 7 gb extra på hårddisken när du uppgraderat.
Vi på tekniken.nu gillar att de stora företagen nu vågar prioritera den bakomliggande tekniken så mycket att det blir egna produktversioner med så mycket ståhej som det ändå är kring denna lansering utan att behöva göra om hela användargränssnittet. Vi ser ju såklart dock fram emot vad som nu kommer byggas på detta snabba och stabila ramverk. Kan man våga att få önska sig ett nytt 3D-gränssnitt som liknar gränssnittet i Minority Report som nästa operativsystem från innovatörerna i Cupertino?
På ytan kan Windows 7 verka likt Vista, men i praktiken är det mycket som skiljer. Förutom de små ändringarna i gränssnittet (automatisk fönstermaximering, bättre taskbar etc.) så finns massor av andra förbättringar och nyheter som man kanske inte upptäcker direkt. Tech Radar har samlat 18 av dem! Här är en kort sammanfattning:
- Skaka fönster för att minimera alla andra fönster
Ta tag i titelraden och skaka ett fönster så minimeras alla andra fönster. Skaka igen så kommer de tillbaka - Snabblistor
Om man högerklickar på ett program i aktivitetsfältet (det som på engelska heter task bar) så visas en meny med de vanligaste kommandona för programmet. Man kan t.ex. ändra status i Messenger eller öppna någon av de senast besökta sidorna i Chrome utan att behöva öppna programmets fönster. - Snabbgranska öppna fönster
Om man håller muspekaren över en program i aktivitetsfältet så visas tumnaglar för alla öppna fönster för det programmet. - Docka fönster
Dra ett fönster mot kanten av skärmen så ändras dess storlek så att det täcker hela eller halva skärmen - XP-läge
Windows 7 har en specialvariant av Virtual PC som gör att det går att köra inkompatibla gamla program i Windows XP-läge. XP-läget ingår inte i grundinstallationen utan det måste man ladda ner separat (gratis). - Lättare att växla mellan skärmar
Tryck ner Win+P för att välja hur dina skärmar, ansluten projektor etc. ska visa bilden från datorn. - Bättre hantering av anslutna enheter
Devices and printers på startmenyn visar bra översikt och gör enhetsrelateradefunktioner lättare att komma åt. - Bättre kontroll på notifieringsfältet
Fältet bredvid klockan i aktivitetsfältet kan styras mycket bättre – du kan ta bort volymikonen t.ex. om du har lust. - Probleminspelare
Windows 7 innehåller ett inspelningsläge som gör skärmdumpar och små förklarande texter. Perfekt om du behöver hjälpa kunder eller vänner och bekanta med datorproblem. - Bättre zoom-verktyg
Nya zoomen har en zoomruta vid muspekaren istället för att ta upp en stor del av skärmen (som den gjorde i tidigare Windows-versioner) - Snabbare musikspelare
Windows 7 innehåller en förhandsgranskare för musik som startar blixtsnabbt (en lightversion av Windows Media Player) - Förenklade funktioner för hemmanätverk
Med homegroup ska det bli enklare att koppla ihop datorerna hemma - Streamingfunktioner
Om man använder homegroup-funktionerna så kan man lätt streama t.ex. musik från en dator till en annan. - Bättre säkerhetsnotifieringar
Security Center har blivit Action Center, och har blivit mycket bättre på att samla ihop information och varningar och inte störa så mycket hela tiden. - Bättre kontroll över programmen på aktivitetsfältet
Utöver att man får tillgång till fler funktioner så är det lättare att hantera vilka program som ska synas permanent i aktivitetsfältet. På det sättet är nya aktivitetsfältet en kombination av det gamla och quick launch (de ikoner som låg permanen brevid startknappen i XP och Vista). - Nya touchfunktioner
Bättre stöd för datorer med touchskärm. - Inbyggd ISO-brännare
Om man dubbelklickar på en diskavbildning i ISO-format så innehåller Windows 7 en inbyggd applikation för att bränna den till en skiva. ISO-filer är ganska vanligt om man ska installera större saker, t.ex. Visual Studio eller ett service pack. - Kalibrering
Windows 7 har inbyggda funktioner för att kalibrera t.ex. en HDTV som man kopplar till datorn.
Tech Radars artikel innehåller grundligare beskrivningar av de 18 punkterna. Om det inte räcker så har de dessutom en artikel med 50 tips och tricks för Windows 7!
Dagens stora tekniknyhet är att Apple, tvärt emot vad många förutspådde, nu har godkänt Spotify för iPhone. Inom några dagar så kommer applikationen att finnas tillgänglig för nedladdning. Det kommer krävas att man har ett premiumkonto (99:-/mån) och applikationen kommer troligen bara att släppas i de länder där Spotify finns tillgängligt på dator. Hur stor är den här nyheten då? Ganska stor skulle jag säga, om man tittar bara på ett axplock av de tidningar och bloggar som redan har rapporterat om nyheten:
Wired
Financial Times
Lifehacker
Gizmodo
CNN
SVD IT
DN
DI/Expressen
Aftonbladet
IDG
Nikke index
Tommy K Johansson
Din IT-kunskap
omiPhone
För mig är det här ett verkligt sundhetstecken från musikindustrin - man verkar äntligen vilja låta sina kunderna ta del av de senaste årens teknikutveckling utan att riskera åtal. Jag hoppas att ett stort antal nya betalande Spotify-kunder också kan hjälpa till att lösa problemet med artisterna tydligen får ganska lite betalt per spelad låt.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Spotify godkänt i iPhone App Store", + "meta_description": "", + "author_id": 6, + "created_at": 1251453774000, + "created_by": 6, + "updated_at": 1251453774000, + "updated_by": 6, + "published_at": 1251453774000, + "published_by": 6 + }, + { + "id": 325, + "title": "Skapa ett typsnitt av din handstil", + "slug": "skapa-ett-typsnitt-av-din-handstil", + "markdown": "\r\n\r\nAtt skapa nya typsnitt är normalt sett en enormt arbetskrävande process som också kräver goda kunskaper i specialprogram. Men nu finns en ny tjänst som heter fontcapture som gör om din handstil till ett typsnitt på ett väldigt enkelt sätt. Man laddar ner ett PDF-formulär där man fyller i bokstäver och siffror och några specialtecken. Totalt ägnade jag max 3 minuter och detta och fick ändå ett typsnitt som jag är riktigt nöjd med! Hade jag läst instruktionen ordentligt och använt en svart tuschpenna istället för en blå bläckpenna och hade hållit mig lite mer till de stödlinjer som fanns :-).\r\n\r\nSåhär blev det:\r\n\r\n\r\n\r\nTypsnittet ser betydligt bättre ut när man skriver ut det jämfört med hur det ser ut på skärmen. Kan säkert bero på att jag använde en för tunn penna i fel färg.\r\n\r\nTesta här: www.fontcapture.com\r\n\r\nKälla: Lifehacker\r\n\r\n![Bild](http://tekniken.nu/uploads/633873281839212466-fontcapture.PNG)", + "html": "Att skapa nya typsnitt är normalt sett en enormt arbetskrävande process som också kräver goda kunskaper i specialprogram. Men nu finns en ny tjänst som heter fontcapture som gör om din handstil till ett typsnitt på ett väldigt enkelt sätt. Man laddar ner ett PDF-formulär där man fyller i bokstäver och siffror och några specialtecken. Totalt ägnade jag max 3 minuter och detta och fick ändå ett typsnitt som jag är riktigt nöjd med! Hade jag läst instruktionen ordentligt och använt en svart tuschpenna istället för en blå bläckpenna och hade hållit mig lite mer till de stödlinjer som fanns :-).
Såhär blev det:
Typsnittet ser betydligt bättre ut när man skriver ut det jämfört med hur det ser ut på skärmen. Kan säkert bero på att jag använde en för tunn penna i fel färg.
Testa här: www.fontcapture.com
Källa: Lifehacker
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Skapa ett typsnitt av din handstil", + "meta_description": null, + "author_id": 6, + "created_at": 1251731383000, + "created_by": 6, + "updated_at": 1251731383000, + "updated_by": 6, + "published_at": 1251731383000, + "published_by": 6 + }, + { + "id": 326, + "title": "Blogga i din egen handstil", + "slug": "blogga-i-din-egen-handstil", + "markdown": "\r\n\r\n\r\n@font-face {\r\n font-family: MyCustomFont;\r\n src: url(\"Anders8.eot\") /* EOT file for IE */\r\n}\r\n@font-face {\r\n font-family: MyCustomFont;\r\n src: url(\"Anders8.ttf\") /* TTF file for CSS3 browsers */\r\n}\r\n.handwriting\r\n{\r\nfont-family:MyCustomFont,Arial;\r\nfont-size:18px;\r\nwidth:350px;\r\n}\r\n\r\n\r\nHej och välkommen till en typsnittsspecial på tekniken.nu. Det här stycket är skrivet i min egen handstil, med ett typsnitt som du inte behöver ladda ner eller installera på din dator – om du har en ny version av någon av de vanliga webbläsarna. Om du inte har det kan du se exempel på hur det ser ut i bilden bredvid det här stycket.\r\n\r\nAtt använda särskilda typsnitt på webben har hittills varit väldigt svårt. Man har snällt fått hålla sig till den typsnitt som alla eller det stora flertalet har installerade på sin dator – Arial, Verdana och Times i princip – eller använda trick som bildrubriker eller flashrubriker. Nu har det dock äntligen kommit en teknik för att använda egna typsnitt, som fungerar eller snart kommer att fungera i nästan alla webbläsare. Med hjälp av tekniken som kallas @font-face kan man nu få Internet Explorer, Safari och nyaste versionen av FireFox att visa riktiga typsnitt på webbsidor, utan att de behöver installeras i användarens dator (tekniken finns också i Chrome men är tillfälligt avstängd, och kommer i version 10 av Opera som släpps idag). Den stora fördelen med riktiga typsnitt är att man dels sparar mycket bandbredd jämfört med bildrubriker och flashrubriker, att den fungerar som vanlig text med klipp-och-klistra, samt framför allt: man kan använda den till brödtext.\r\n\r\n\r\n\r\n\r\n\r\nEn annan typsnittsnyhet är webbtjänsten fontcapture som skapar ett typsnitt av din handstil. Att skapa ett eget typsnitt är traditionellt sett en tidsödande process som kräver mycket tid och kunskaper i specialprogram. Med fontcapture är allt däremot lätt. Man laddar ner ett PDF-formulär där man fyller i bokstäver, siffror och några specialtecken i 140 rutor – kan låta mycket, men det tar max 10 minuter, även om man gör det väldigt noggrannt. Du scannar formuläret och laddar upp det till fontcapture – och vips har du en eget typsnitt som du kan använda t.ex. i Word.\r\n \r\n\r\nVarför inte knyta ihop dessa två funktioner? Vilken modebloggartjej skulle t.ex. inte vilja ha sin blogg i sin egen handstil? Dessutom är det ju garanterat licensfritt - det är ju din handstil! Det är inte svårt, såhär gör man steg för steg:\r\n\r\n1) Skapa ditt eget typsnitt med fontcapture. Följ instruktionerna så går allt enkelt. Tips: använd en svart tuschpenna som inte har för smal spets. Var ganska noga med att hålla dig till stödlinjerna som finns.\r\n\r\n2) Typsnittet du har skapat i punkt 1 är i True-Type-format (.ttf). Det går att använda direkt i t.ex. Word.\r\n\r\n3) För att använda typsnittet på webben behöver du typsnittet i ytterligare ett format – OET. Här finns en bra webbtjänst för att konvertera typsnitt från TTF till OET.\r\n\r\n4) Nu till själva CSS-magin. Infoga följande kod i dina CSS-mallar:\r\n\r\n![Bild](http://tekniken.nu/uploads/633874092048491466-image002.png)\r\n```prettyprint lang-html\r\n\r\n```\r\n\r\n\r\n5) I koden kan du nu enkelt använda ditt nya typsnitt:Lorem ipsum dolor sit amet
\r\n\r\n6) Ladda upp båda typsnittsvarianterna (TTF och OET) till webbservern.\r\n\r\nÄr det då säkert att det är bästa valet av typsnitt för din webbplats är din egen handstil? För att citera Spindelmannens farbror: \"With great power comes great responsibility\". Bara för att man kan göra en sak betyder inte att man måste ;-)\r\n\r\nTips för Chrome-användare: om du vill aktivera @font-face, lägg till --enable-remote-fonts i genvägen som startar Chrome.\r\n\r\n@font-face stöds i följande webbläsare:\r\nInternet Explorer: IE6 och senareFireFox: 3.5 och senareSafari: 3.1 och senareChrome: 3 och senare (med --enable-remote-fonts)Opera: 10 och senareTack för mig och lycka till!\r\n", + "html": "Hej och välkommen till en typsnittsspecial på tekniken.nu. Det här stycket är skrivet i min egen handstil, med ett typsnitt som du inte behöver ladda ner eller installera på din dator – om du har en ny version av någon av de vanliga webbläsarna. Om du inte har det kan du se exempel på hur det ser ut i bilden bredvid det här stycket.
Att använda särskilda typsnitt på webben har hittills varit väldigt svårt. Man har snällt fått hålla sig till den typsnitt som alla eller det stora flertalet har installerade på sin dator – Arial, Verdana och Times i princip – eller använda trick som bildrubriker eller flashrubriker. Nu har det dock äntligen kommit en teknik för att använda egna typsnitt, som fungerar eller snart kommer att fungera i nästan alla webbläsare. Med hjälp av tekniken som kallas @font-face kan man nu få Internet Explorer, Safari och nyaste versionen av FireFox att visa riktiga typsnitt på webbsidor, utan att de behöver installeras i användarens dator (tekniken finns också i Chrome men är tillfälligt avstängd, och kommer i version 10 av Opera som släpps idag). Den stora fördelen med riktiga typsnitt är att man dels sparar mycket bandbredd jämfört med bildrubriker och flashrubriker, att den fungerar som vanlig text med klipp-och-klistra, samt framför allt: man kan använda den till brödtext.
En annan typsnittsnyhet är webbtjänsten fontcapture som skapar ett typsnitt av din handstil. Att skapa ett eget typsnitt är traditionellt sett en tidsödande process som kräver mycket tid och kunskaper i specialprogram. Med fontcapture är allt däremot lätt. Man laddar ner ett PDF-formulär där man fyller i bokstäver, siffror och några specialtecken i 140 rutor – kan låta mycket, men det tar max 10 minuter, även om man gör det väldigt noggrannt. Du scannar formuläret och laddar upp det till fontcapture – och vips har du en eget typsnitt som du kan använda t.ex. i Word.
Varför inte knyta ihop dessa två funktioner? Vilken modebloggartjej skulle t.ex. inte vilja ha sin blogg i sin egen handstil? Dessutom är det ju garanterat licensfritt - det är ju din handstil! Det är inte svårt, såhär gör man steg för steg:
1) Skapa ditt eget typsnitt med fontcapture. Följ instruktionerna så går allt enkelt. Tips: använd en svart tuschpenna som inte har för smal spets. Var ganska noga med att hålla dig till stödlinjerna som finns.
2) Typsnittet du har skapat i punkt 1 är i True-Type-format (.ttf). Det går att använda direkt i t.ex. Word.
3) För att använda typsnittet på webben behöver du typsnittet i ytterligare ett format – OET. Här finns en bra webbtjänst för att konvertera typsnitt från TTF till OET.
4) Nu till själva CSS-magin. Infoga följande kod i dina CSS-mallar:
5) I koden kan du nu enkelt använda ditt nya typsnitt:
<p class=”handwriting”>Lorem ipsum dolor sit amet</p>
6) Ladda upp båda typsnittsvarianterna (TTF och OET) till webbservern.
Är det då säkert att det är bästa valet av typsnitt för din webbplats är din egen handstil? För att citera Spindelmannens farbror: \"With great power comes great responsibility\". Bara för att man kan göra en sak betyder inte att man måste ;-)
Tips för Chrome-användare: om du vill aktivera @font-face, lägg till --enable-remote-fonts i genvägen som startar Chrome.
@font-face stöds i följande webbläsare:
- Internet Explorer: IE6 och senare
- FireFox: 3.5 och senare
- Safari: 3.1 och senare
- Chrome: 3 och senare (med --enable-remote-fonts)
- Opera: 10 och senare
Tack för mig och lycka till!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Blogga i din egen handstil!", + "meta_description": "t för att skapa ett typsnitt av din handstil - kan det bli personligare?", + "author_id": 6, + "created_at": 1251812404000, + "created_by": 6, + "updated_at": 1251812404000, + "updated_by": 6, + "published_at": 1251812404000, + "published_by": 6 + }, + { + "id": 329, + "title": "Google Analytics kan visa diagram i fem dimensioner", + "slug": "google-analytics-kan-visa-diagram-i-fem-dimensioner", + "markdown": "\r\n\r\nEn traditionellt svår nöt att knäcka är hur man visar flerdimensionell data på en skärm som är två dimensioner. Google Analytics har löst detta genom en graf som de kallar Motion Charts. Motion Charts kan visa data i fem dimensioner:\r\n\r\nXYFärgStorlekTid/Animation\r\n\r\nGenom att lägga olika data på olika axlar/dimensioner kan man hitta mönster som annars skulle varit omöjliga att se – väldigt spännande.\r\n\r\nFunktionen finns tillgänglig på flera rapporter i Analytics och man kommer åt den genom att klicka på knappen Visualize ovanför grafen:\r\n\r\n\r\n\r\nSe demo på Motion Charts här:\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/633876624092493716-image001.png@01CA2D53.43242C20__image001.png)", + "html": "En traditionellt svår nöt att knäcka är hur man visar flerdimensionell data på en skärm som är två dimensioner. Google Analytics har löst detta genom en graf som de kallar Motion Charts. Motion Charts kan visa data i fem dimensioner:
- X
- Y
- Färg
- Storlek
- Tid/Animation
Genom att lägga olika data på olika axlar/dimensioner kan man hitta mönster som annars skulle varit omöjliga att se – väldigt spännande.
Funktionen finns tillgänglig på flera rapporter i Analytics och man kommer åt den genom att klicka på knappen Visualize ovanför grafen:
Se demo på Motion Charts här:
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Google Analytics kan visa diagram i fem dimensioner", + "meta_description": "", + "author_id": 1087, + "created_at": 1252065607000, + "created_by": 1087, + "updated_at": 1252065607000, + "updated_by": 1087, + "published_at": 1252065607000, + "published_by": 1087 + }, + { + "id": 331, + "title": "Spotify släppt både till Apple App Store och Android Market", + "slug": "spotify-slappt-bade-till-apple-app-store-och-android-market", + "markdown": "\r\n\r\nSom vi och alla andra rapporterade förra veckan så godkändes Spotifys mobilklient av Apple för lansering via App Store, och idag är applikationen tillgänglig. En glad nyhet för alla Androidanvändare är att applikationen samtidigt även släpps på Android Market.\r\n\r\nJag antar att detta kommer innebära en enorm ökning av antalet premiumkonton hos Spotify, då ett sådant krävs för att njuta musiken via mobilapplikationerna.\r\n\r\nLäs mer på Spotify Mobile\r\n\r\n(Härnäst hoppas jag nu på officiell integration med Logitech Squeezecenter.)\r\n\r\n![Bild](http://tekniken.nu/uploads/633879151471480066-image001.png@01CA2FA3.9A191430__image001.png)\r\nUpdate: Efter att en kollega snabbtestat kan vi meddela att iPhonevarianten känns grymt snabb och med ett välpolerat gränssnitt.\r\n\r\n", + "html": "Som vi och alla andra rapporterade förra veckan så godkändes Spotifys mobilklient av Apple för lansering via App Store, och idag är applikationen tillgänglig. En glad nyhet för alla Androidanvändare är att applikationen samtidigt även släpps på Android Market.
Jag antar att detta kommer innebära en enorm ökning av antalet premiumkonton hos Spotify, då ett sådant krävs för att njuta musiken via mobilapplikationerna.
Läs mer på Spotify Mobile
(Härnäst hoppas jag nu på officiell integration med Logitech Squeezecenter.)
Foratweet.com heter en tjänst som sköter din kampanj och hjälper dig att få ut ditt budskap samtidigt som du kan få statistik på hur bra det går. Vattenfall har hoppat på detta och skänker pengar till välgörenhet för varje Twitterinlägg om deras välgörenhet. Om du vill starta din egen virala kampanj kan du använda tjänsten Foratweet.com. Gissningsvis är detta endast roligt en liten stund till och kommer antagligen självdö på samma sätt som kedjebrev men en liten stund till kan man ta enkla poänger genom denna tjänst.
Gör en sökning på Vattenfall på Twitter så ser du hur snabbt detta får genomslag:
http://twitter.com/#search?q=vattenfall%20childhood
För att skapa egen kampanj går du till:
http://foratweet.com/campaign/edit
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Starta egna kampanjer på Twitter", + "meta_description": null, + "author_id": 1087, + "created_at": 1252318347000, + "created_by": 1087, + "updated_at": 1252318347000, + "updated_by": 1087, + "published_at": 1252318347000, + "published_by": 1087 + }, + { + "id": 333, + "title": "Nvidia ION 330 + XBMC = Mediacenter i världsklass", + "slug": "nvidia-ion-330--xbmc--mediacenter-i-varldsklass", + "markdown": "\r\n\r\nFör den oinsatte är Xbox Media Center (XBMC) den kanske äldsta och mest ambitiösa open source-baserade mediacentermjukvaran som finns. Som namnet antyder började den utvecklas till moddade första generationens Xbox-konsoler c:a 2002, och har sedan vidareutvecklats i högt tempo genom åren till att idag vara den kanske mest fullfjädrade mediacenterlösningen som finns.\r\n\r\n\r\n\r\n\r\n\r\nI och med att Xbox blivit en åldrad och begränsad hårdvara har XBMC på senare tid portats till Mac, Linux och Windows. Dock har det saknats en optimal hårdvara att köra XBMC (förutom möjligtvis Mac Mini, men den har varit omotiverbart dyr som mediacenter), det stora problemet har varit att XBMC gör sin videoavkodning i CPU, vilket krävt en kraftfull Core2Duo processor för att klara full HD upplösning. Med kraftfull processor kommer mycket värme och behov av kraftfulla fläktar som snabbt går på högvarv när man börjar se på film.\r\n\r\nI november 2008 släppte Nvidia ett linux/unix-API som möjliggör videoavkodning direkt i grafikkortet - VDPAU. Det här har XBMC dragit nytta av och stöd för VDPAU finns i XBMC sedan Mars 2009. Allt som saknats har bara varit ett chipset i miniformat med ett tillräckligt kraftfullt Nvidia-GPU för att klara full HD via VDPAU. Plats på scen för Nvidia ION!\r\n\r\nNvidia ION är en moderkortsplattform som kombinerar ett Geforce 9400M med Intels strömsnåla Atom processor (som vi vanligtvis ser i Netbooks). Kombinationen är som gjord för att köra XBMC: en strömsnål (ej speciellt värmealstrande) processor och ett GPU som klarar full HD avkodning via VDPAU. ION 330 är den rekommenderade modellen, där dubbelkärniga Intel Atom 330 ingår.\r\n\r\nEtt flertal tillverkare har börjat bygga miniformatsdatorer på ION 330, Asrock har tex paketerat ION 330 i en snygg låda med HDMI-utgång:\r\n\r\n\r\n\r\nAsrock ION 330 kostar ca 3000 kr (inkl moms) och hanterar XBMC fint som fisken!\r\n\r\nSmidigaste sättet att installera är att ladda hem XBMC Live och köra installation direkt från skivan. Lite fler bloggar om installation och konfiguration kommer snart här på Tekniken.nu, tills dess är Google din vän.\r\n\r\nEfter en olycklig mellanperiod med en Popcorn Hour känns det fantastiskt att ha XBMC tillbaka. Jag har bara hunnit testköra några dagar, men temperaturerna håller sig helt inom rimliga gränser och ljudvolymen har inte varit några problem. Dock behöver man komplettera Asrocklådan med en fjärrkontroll och IR-sensor vilket av någon anledning inte medföljer, här rekommenderas Microsofts MCE fjärrkontroller som stödjs \"out-of-the-box\", eller den klassiska xbox-fjärrkontrollen om man är sugen på lite meckande (mer om det i en separat blogg).\r\n\r\n![Bild](http://tekniken.nu/uploads/xbmcion.png)", + "html": "För den oinsatte är Xbox Media Center (XBMC) den kanske äldsta och mest ambitiösa open source-baserade mediacentermjukvaran som finns. Som namnet antyder började den utvecklas till moddade första generationens Xbox-konsoler c:a 2002, och har sedan vidareutvecklats i högt tempo genom åren till att idag vara den kanske mest fullfjädrade mediacenterlösningen som finns.
I och med att Xbox blivit en åldrad och begränsad hårdvara har XBMC på senare tid portats till Mac, Linux och Windows. Dock har det saknats en optimal hårdvara att köra XBMC (förutom möjligtvis Mac Mini, men den har varit omotiverbart dyr som mediacenter), det stora problemet har varit att XBMC gör sin videoavkodning i CPU, vilket krävt en kraftfull Core2Duo processor för att klara full HD upplösning. Med kraftfull processor kommer mycket värme och behov av kraftfulla fläktar som snabbt går på högvarv när man börjar se på film.
I november 2008 släppte Nvidia ett linux/unix-API som möjliggör videoavkodning direkt i grafikkortet - VDPAU. Det här har XBMC dragit nytta av och stöd för VDPAU finns i XBMC sedan Mars 2009. Allt som saknats har bara varit ett chipset i miniformat med ett tillräckligt kraftfullt Nvidia-GPU för att klara full HD via VDPAU. Plats på scen för Nvidia ION!
Nvidia ION är en moderkortsplattform som kombinerar ett Geforce 9400M med Intels strömsnåla Atom processor (som vi vanligtvis ser i Netbooks). Kombinationen är som gjord för att köra XBMC: en strömsnål (ej speciellt värmealstrande) processor och ett GPU som klarar full HD avkodning via VDPAU. ION 330 är den rekommenderade modellen, där dubbelkärniga Intel Atom 330 ingår.
Ett flertal tillverkare har börjat bygga miniformatsdatorer på ION 330, Asrock har tex paketerat ION 330 i en snygg låda med HDMI-utgång:
Asrock ION 330 kostar ca 3000 kr (inkl moms) och hanterar XBMC fint som fisken!
Smidigaste sättet att installera är att ladda hem XBMC Live och köra installation direkt från skivan. Lite fler bloggar om installation och konfiguration kommer snart här på Tekniken.nu, tills dess är Google din vän.
Efter en olycklig mellanperiod med en Popcorn Hour känns det fantastiskt att ha XBMC tillbaka. Jag har bara hunnit testköra några dagar, men temperaturerna håller sig helt inom rimliga gränser och ljudvolymen har inte varit några problem. Dock behöver man komplettera Asrocklådan med en fjärrkontroll och IR-sensor vilket av någon anledning inte medföljer, här rekommenderas Microsofts MCE fjärrkontroller som stödjs \"out-of-the-box\", eller den klassiska xbox-fjärrkontrollen om man är sugen på lite meckande (mer om det i en separat blogg).
Det nya ordet på allas läppar den senaste tiden är ”Realtidswebben” eller ”Realtime web”. Konceptet är gammalt men till slut verkar det som om många aktörer nu hänger på och siktar på att göra tjänster och information tillgänglig i realtid. Först var tidningen Wired att inse storheten med realtidswebben - i en artikel från 1997 visionerar tidningen om hur internet kommer att se ut inom några år när alla nyheter pushas ut till användare o.s.v.
Som alltid tar saker längre tid än man tror och i detta fall tog det ungefär 10 år innan webben hade hunnit anpassa sig till de tekniska och politiska ställningstaganden som krävs för att i realtid kunna pusha ut nyheter, mail, bloggar osv. Ett viktigt steg på vägen till realtidswebben var/är RSS som numera är standard för att publicera sitt nyhetsinnehåll. Även om RSS kan kännas som realtid så bygger det ändå tekniskt på att man hämtar samma information om och om igen och jämför om något har ändrats. Dock finns det tilläggstjänster/tekniker som baseras på RSS och tillför ett realtidslager, exempel på dessa är Trackback, Ping, Twingly.
Realtidswebben innebär i praktiken att man får uppdateringar direkt när de händer och behöver inte ladda om sidan, ungefär som en chat. Rent tekniskt är skillnaden att istället för att skicka flera anrop i minuten för att se om någonting har hänt så ligger ett långt anrop igång och väntar på att något händer på servern och man sparar därmed resurser från både klient och server som inte behöver hantera samma innehåll hela tiden. Realtidswebben möjliggörs genom att de flesta stora webbplatserna lanserar API:er för att kommunicera i realtid med deras webbtjänster. Störst på området är Twitter som på sin webbplats i realtid visar nya inlägg kring vissa ämnen och nu lanserar de också sitt Streaming API för att få realtidsfeed på allt som skrivs på Twitter om ett visst ämne. Alla stora nyhetsbolag börjar därför också både prenumerera på nyheter kring vissa heta ämnen och får desa nyheter i realtid samt också publicerar utdrag av viktiga händelser via Twitter. Digg.com har också länge haft realtidsvisualisering av sitt innehåll som vi tidigare berättat om.
I dagarna släpper Google också sin efterlängtade och hyllade tjänst Google Wave som har realtid som sitt största ledord. Vad Google självklart hoppas på är att detta ska bli en naturlig byggsten för realtidsinformation så att all realtidskommunikation går via deras plattformar istället för den stora konkurrenterna Twitter eller Facebook. Vi på tekniken har fått tillgång till Google Wave och kommer publicera tester av detta här när vi tittat närmare på detta rent tekniskt.
På det personliga planet har realtidswebben inneburit att våra mailprogram har direktkontakt med mailservern istället för att kolla efter nya mail varje kvart. Microsoft var här först med sin Microsoft Exchange Server för företag och med hjälp av tekniken ActiveSync som släpptes för flera år sedan blev det för första gången möjligt att få sina mail i realtid i mobilen i fickan. Microsofts teknik ActiveSync har numera även licensierats till de stora konkurrenterna Googles Gmail och IBM’s Lotus Notus och Apple har i och med sitt senaste operativsystem Snow Leopard fått stöd för Exchange-server.
Det händer väldigt mycket på detta området och det är väldigt spännande att se byggblocken växa fram och alla stora spelare kommer göra allt för att just deras tjänster ska bli ”standard” för att leverera realtidsinformationen mellan systemen och ut till användarna. Tipsa gärna nedan i kommentarerna på andra tjänster som bidrar till realtidswebben!
Vårt bidrag till realtidswebben är datingcommunityn Shakemyworld.com som är helt i realtid, allt som händer på sajten kommuniceras till övriga medlemmar via realtids API. Om du också vill utveckla realtidstjänster i C# kan har vi tidigare skrivit om hur du bygger ett realtids-API i AJAX med hjälp av C# eller så ansöker om att jobba på teknikbyrån Iteam ;)
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Realtidswebben, det nya web 3.0?", + "meta_description": "", + "author_id": 1087, + "created_at": 1254399900000, + "created_by": 1087, + "updated_at": 1254399900000, + "updated_by": 1087, + "published_at": 1254399900000, + "published_by": 1087 + }, + { + "id": 345, + "title": "Drivrutiner, uppgraderarens gissel - tips på fyra drivrutinsproblem i Windows 7 och deras lösningar", + "slug": "drivrutiner-uppgraderarens-gissel---tips-pa-fyra-drivrutinsproblem-i-windows-7-och-deras-losningar", + "markdown": "\r\n\r\nMitt track record när det gäller installationer av Windows är inte så starkt. När jag skulle installera Vista på min dator hemma för några år sedan så vägrade installationen gå igång från DVD-skivan – varje uppstart resulterade i en blåskärm. Jag fick installera XP först och uppgradera, mot bättre vetande men som enda möjlighet. Vistainstallationen blev OK, men att starta s.k. managed shortcuts (sådana som skapas av t.ex. Office och inte pekar på en filsökväg utan på ett magiskt id) gick aldrig i den installationen.\r\n\r\nMin första Windows 7 beta-installation gick bättre, men mitt första användarkonto blev det något fel på vilket gjorde att jag inte kunde installera någonting. Ett nytt användarkonto senare var allt så gott som bra, utom att Media Center hängde sig vid avslut varje gång och startade upp sig själv igen (bara en gång som tur var). Jag uppgraderade Windows 7 till RC, vilket gick bra men inte löste Media Center-problemet. När jag skulle installera Windows 7 RTM på jobbet så stannade den upp c:a 10 minuter mellan varje moment, medan kollegornas installationer tickade på och var klara på en tredjedel av tiden. När installationen väl var klar funkade den fint dock.\r\n\r\nJag uppgraderade till Windows 7 RTM hemma igår – det gick inte bra :-). Efter installationen gick ett fåtal program att starta ordentligt. Största delen (IE, Chrome, FireFox, Office-programmen etc.) startade men visade inga fönster. Så det fick bli en fullständig ominstallation – lika så bra kanske... Men jag hade lyckats glömma bort några av de fiffiga tricks som hade fått igång alla mina enheter, som tillverkarna i vissa fall har bestämt är för gamla för Windows 7. Så här kommer de bästa råden från en som har fått en Windows 7-installationsförbannelse över sig:\r\n## Grafikkort: ATI X1950 Pro\r\nProblem: Med Microsofts inbyggda drivrutin så funkar allt fint – förutom att man inte kan ställa in overscan på TV out. För mig som har en gammal TV så blir detta lite katastrofalt, med svarta sorgkanter på alla sidor. ATI har bestämt att 1950 Pro är så gammalt att det inte behöver stödjas i de nya versionerna av Catalyst.\r\n\r\nLösning: I Windows 7 beta försökte jag installera Catalyst och lyckades lite halvdant. Jag fick in drivrutinen till slut och ett skakigt men ibland fungerande Catalyst Control Center som åtminstone funkade tillräckligt länge för att ställa in overscan. Nu lagom till Windows 7 RTM har man släppt en s.k. Legacy driver som egentligen bara är till för Vista men som funkar fint i Windows 7. Man varnas om att den inte har stöd för Windows nya grafikkortsdrivrutinsarkitektur (jorå 32 bokstäver) WDDM. Jag har inte märkt några nackdelar, och för mig är det mer värt hursomhelst att få bra TV out.\r\n## Ljudkort: Terratec Aureon 7.1 PCI (och säkerligen även 5.1 PCI)\r\nProblem: Terratec var ganska tidigt ut med 64-bitarsdrivrutiner till Vista, vilket förstås var bra. Från och med Windows 7 beta (fram till och med RTM) så har det dock funnits ett problem. Drivrutinerna funkar fint, men kontrollpanelen fungerar inte. När man startar den så hänger sig datorn i princip helt. Muspekaren går att flytta litegrann, om man har tålamod att vänta 5 minuter varje gång man rör musen. Jag misstänker att något i kontrollpanelen drar 100% CPU i själva drivrutinen, för inte ens Task Manager går att öppna.\r\n\r\nLösning: Efter lite efterforskning så kom jag fram till att Terratec har byggt sina ljudkort med kretsar från Taiwanesiska C Media. I Aureon 7.1 PCI sitter en modifierad C Media-krets som heter 8738. Det visar sig att C Medias egen referensdrivrutin, som också innehåller kontrollpanelen, fungerar fint i Windows 7 x64! Tips till OEM-tillverkare: lägg inte in en massa egna onödiga grejer i drivrutinerna om ni inte orkar hålla jämna steg med originaltillverkaren.\r\n## Externt ljudkort (m.m.): Line6 Monkey\r\nProblem: Line6 är ett företag som gör väldigt trevliga gitarrprodukter, t.ex. multieffekter som Pod X3 Live och USB-ljudkort för gitarrer som Toneport UX2. I Windows 7 x64 funkar dock inte nedladdnings- och inställningsprogrammet Monkey. Drivrutinerna för USB funkar, så att spela in o.s.v. går bra, men att ändra inställningar, uppdatera firmware och annat går inte.\r\n\r\nLösning: Problemet uppstod i Monkey 1.27. Installerar man version 1.26 så funkar allt fint! All annan Line6-programvara kan installeras i senaste version, bara man behåller version 1.26 av Monkey. Line6 behöver jobba lite på drivrutinerna också – även om de i regel funkar så har jag fått flera blåskärmar där det uttryckligen står att det är deras drivrutiner som har kraschat.\r\n## Windows Media Center\r\nProblem: OK, Media Center är ingen hårdvara och det är inte drivrutiner som krånglar – men det kan passa här ändå. Media Center sägs ha stöd för MKV-filer. De funkar dock inte att spela upp. Dessutom kan man hur många codecs och filter man än installerar (t.ex. ffdshow och directvobsub) inte få till textning till filmer i Media Center, trots att det fungerar i Windows Media Player.\r\n\r\nLösning: Orsaken till att ffdshow och andra codecs och filter inte fungerar i Media Center är att Windows 7 innehåller en helt ny arkitektur för video- och ljudavkodning som heter Microsoft Media Foundation (MMF). MMF använder helt enkelt inte DirectShows codecs och filters. Det enklaste sättet att få Media Center att använda DirectShow är genom att ladda ner ett codec-paket som heter Windows 7 Codecs. I normala fall skulle jag avråda från codec-paket, men i det här fallet är det så komplicerat att få till själv att Windows 7 Codecs är enklare. Dessutom finns det en utmärkt kontrollpanel där du kan bestämma själv helt och hållet vilka komponenter som ska användas (glöm inte X64 components om du kör 64-bitars Windows 7). Finns det några nackdelar med denna lösning? Jag tycker själv att Windows 7s inbyggda MMF-codecs ger bättre bildkvalitet än t.ex. ffdshow. Om du inte absolut behöver textning t.ex. så kan du lika gärna fortsätta använda MMF. Knäppast av allt är att MMF faktiskt klarar HD-formatet x264 med bravur, men behöver en s.k. splitter för att klara filformatet MKV. En sån splitter ingår också i Windows 7 Codecs.\r\n\r\nTill ovanstående tillverkares försvar ska sägas att Windows 7 inte släpps officiellt förrän om 17 dagar, 22 oktober. Än så länge är det bara vi som är Microsoft-partners som har tillgång till RTM-versionen.\r\n\r\nHar du några egna tips på saker som har krånglat när du har installerat Windows 7? Ännu bättre – har du lösningen på de problemen? Maila till tekniken.nu så ska vi se till att dina tips kommer resten av världen tillgodo också!\r\n\r\n![Bild](http://tekniken.nu/uploads/633903368504358693-windows7-home-premium.png)", + "html": "Mitt track record när det gäller installationer av Windows är inte så starkt. När jag skulle installera Vista på min dator hemma för några år sedan så vägrade installationen gå igång från DVD-skivan – varje uppstart resulterade i en blåskärm. Jag fick installera XP först och uppgradera, mot bättre vetande men som enda möjlighet. Vistainstallationen blev OK, men att starta s.k. managed shortcuts (sådana som skapas av t.ex. Office och inte pekar på en filsökväg utan på ett magiskt id) gick aldrig i den installationen.
Min första Windows 7 beta-installation gick bättre, men mitt första användarkonto blev det något fel på vilket gjorde att jag inte kunde installera någonting. Ett nytt användarkonto senare var allt så gott som bra, utom att Media Center hängde sig vid avslut varje gång och startade upp sig själv igen (bara en gång som tur var). Jag uppgraderade Windows 7 till RC, vilket gick bra men inte löste Media Center-problemet. När jag skulle installera Windows 7 RTM på jobbet så stannade den upp c:a 10 minuter mellan varje moment, medan kollegornas installationer tickade på och var klara på en tredjedel av tiden. När installationen väl var klar funkade den fint dock.
Jag uppgraderade till Windows 7 RTM hemma igår – det gick inte bra :-). Efter installationen gick ett fåtal program att starta ordentligt. Största delen (IE, Chrome, FireFox, Office-programmen etc.) startade men visade inga fönster. Så det fick bli en fullständig ominstallation – lika så bra kanske... Men jag hade lyckats glömma bort några av de fiffiga tricks som hade fått igång alla mina enheter, som tillverkarna i vissa fall har bestämt är för gamla för Windows 7. Så här kommer de bästa råden från en som har fått en Windows 7-installationsförbannelse över sig:
Grafikkort: ATI X1950 Pro
Problem: Med Microsofts inbyggda drivrutin så funkar allt fint – förutom att man inte kan ställa in overscan på TV out. För mig som har en gammal TV så blir detta lite katastrofalt, med svarta sorgkanter på alla sidor. ATI har bestämt att 1950 Pro är så gammalt att det inte behöver stödjas i de nya versionerna av Catalyst.
Lösning: I Windows 7 beta försökte jag installera Catalyst och lyckades lite halvdant. Jag fick in drivrutinen till slut och ett skakigt men ibland fungerande Catalyst Control Center som åtminstone funkade tillräckligt länge för att ställa in overscan. Nu lagom till Windows 7 RTM har man släppt en s.k. Legacy driver som egentligen bara är till för Vista men som funkar fint i Windows 7. Man varnas om att den inte har stöd för Windows nya grafikkortsdrivrutinsarkitektur (jorå 32 bokstäver) WDDM. Jag har inte märkt några nackdelar, och för mig är det mer värt hursomhelst att få bra TV out.
Ljudkort: Terratec Aureon 7.1 PCI (och säkerligen även 5.1 PCI)
Problem: Terratec var ganska tidigt ut med 64-bitarsdrivrutiner till Vista, vilket förstås var bra. Från och med Windows 7 beta (fram till och med RTM) så har det dock funnits ett problem. Drivrutinerna funkar fint, men kontrollpanelen fungerar inte. När man startar den så hänger sig datorn i princip helt. Muspekaren går att flytta litegrann, om man har tålamod att vänta 5 minuter varje gång man rör musen. Jag misstänker att något i kontrollpanelen drar 100% CPU i själva drivrutinen, för inte ens Task Manager går att öppna.
Lösning: Efter lite efterforskning så kom jag fram till att Terratec har byggt sina ljudkort med kretsar från Taiwanesiska C Media. I Aureon 7.1 PCI sitter en modifierad C Media-krets som heter 8738. Det visar sig att C Medias egen referensdrivrutin, som också innehåller kontrollpanelen, fungerar fint i Windows 7 x64! Tips till OEM-tillverkare: lägg inte in en massa egna onödiga grejer i drivrutinerna om ni inte orkar hålla jämna steg med originaltillverkaren.
Externt ljudkort (m.m.): Line6 Monkey
Problem: Line6 är ett företag som gör väldigt trevliga gitarrprodukter, t.ex. multieffekter som Pod X3 Live och USB-ljudkort för gitarrer som Toneport UX2. I Windows 7 x64 funkar dock inte nedladdnings- och inställningsprogrammet Monkey. Drivrutinerna för USB funkar, så att spela in o.s.v. går bra, men att ändra inställningar, uppdatera firmware och annat går inte.
Lösning: Problemet uppstod i Monkey 1.27. Installerar man version 1.26 så funkar allt fint! All annan Line6-programvara kan installeras i senaste version, bara man behåller version 1.26 av Monkey. Line6 behöver jobba lite på drivrutinerna också – även om de i regel funkar så har jag fått flera blåskärmar där det uttryckligen står att det är deras drivrutiner som har kraschat.
Windows Media Center
Problem: OK, Media Center är ingen hårdvara och det är inte drivrutiner som krånglar – men det kan passa här ändå. Media Center sägs ha stöd för MKV-filer. De funkar dock inte att spela upp. Dessutom kan man hur många codecs och filter man än installerar (t.ex. ffdshow och directvobsub) inte få till textning till filmer i Media Center, trots att det fungerar i Windows Media Player.
Lösning: Orsaken till att ffdshow och andra codecs och filter inte fungerar i Media Center är att Windows 7 innehåller en helt ny arkitektur för video- och ljudavkodning som heter Microsoft Media Foundation (MMF). MMF använder helt enkelt inte DirectShows codecs och filters. Det enklaste sättet att få Media Center att använda DirectShow är genom att ladda ner ett codec-paket som heter Windows 7 Codecs. I normala fall skulle jag avråda från codec-paket, men i det här fallet är det så komplicerat att få till själv att Windows 7 Codecs är enklare. Dessutom finns det en utmärkt kontrollpanel där du kan bestämma själv helt och hållet vilka komponenter som ska användas (glöm inte X64 components om du kör 64-bitars Windows 7). Finns det några nackdelar med denna lösning? Jag tycker själv att Windows 7s inbyggda MMF-codecs ger bättre bildkvalitet än t.ex. ffdshow. Om du inte absolut behöver textning t.ex. så kan du lika gärna fortsätta använda MMF. Knäppast av allt är att MMF faktiskt klarar HD-formatet x264 med bravur, men behöver en s.k. splitter för att klara filformatet MKV. En sån splitter ingår också i Windows 7 Codecs.
Till ovanstående tillverkares försvar ska sägas att Windows 7 inte släpps officiellt förrän om 17 dagar, 22 oktober. Än så länge är det bara vi som är Microsoft-partners som har tillgång till RTM-versionen.
Har du några egna tips på saker som har krånglat när du har installerat Windows 7? Ännu bättre – har du lösningen på de problemen? Maila till tekniken.nu så ska vi se till att dina tips kommer resten av världen tillgodo också!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Drivrutiner, uppgraderarens gissel - tips på fyra drivrutinsproblem i Windows 7 och deras lösningar", + "meta_description": "", + "author_id": 6, + "created_at": 1254740049000, + "created_by": 6, + "updated_at": 1254740049000, + "updated_by": 6, + "published_at": 1254740049000, + "published_by": 6 + }, + { + "id": 347, + "title": "Marketplace för Windows Mobile - första intrycket", + "slug": "marketplace-for-windows-mobile---forsta-intrycket", + "markdown": "\r\n\r\nIdag släpps de första officiella Windows Mobile 6.5-telefonerna i världen och i samband med detta släpps även Marketplace som är Microsofts motsvarighet till iPhones App Store. Här kommer mitt första famlande intryck.\r\n\r\n\r\n\r\nInstallationen är på c:a 600 kb och tar nån sekund att installera via wifi och efter några sekunders koll på att man har den senaste versionen är det bara att börja surfa runt bland de applikationer som finns.\r\n\r\nFörmodligen är det lite problem med att det är alltför många som kopplar upp sig alltför snabbt just nu då jag fått trycka retry hela tiden. Jag har inte den officiella 6.5-versionen så en del av problemen jag märkt kan förstås komma från buggar i telefonen också.\r\n\r\nNär man väl hittat nåt program/spel som känns lockande får man logga in med sitt Live-konto för att att köpa/ladda ner. Här fick jag också massa felmedelanden om att marketplace inte kunde komma åt Windows Live ID-tjänsten så det märks att det är första dagenn och dom inte räknat med trycket. Det släppte efter stund och jag fick ett nytt litet biljardspel i telefonen. Installationen gick smärtfritt och programmet dök upp i startmenyn under games så det var bara att börja spela direkt.\r\n\r\nSjälva kategoriseringen och presentationen av de olika programmen är enkelt och tydligt, men det är alldeles för få alternativ och framförallt gratis såna. Just nu är ju förstås en del kategorier rätt meningslösa som t.ex. ”Most popular” och ”What’s new” , men i övrigt så verkar det som den är anpassad för att behålla en vettig struktur även när det blir tusentals applikationer då det går att kategorisera även spel i flera underkategorier.\r\n\r\nEnligt de andra tester jag läst verkar utbudet variera stort mellan olika länder. Då mitt rom är nån engelsk variant är det svårt att säga om det utbud jag ser kommer att gälla i den svenska versionen, men just nu finns c:a 70 spel och ett 90 tal applikationer i olika kategorier vilket förhoppningsvis kommer att öka snabbt nu när den faktiskt släppts. Rykten har snackat om att det skulle finnas c:a 600 vid lanseringen så det finns fortfarande möjlighet att det ser bättre ut redan imorgon.\r\n\r\nDå alla andra på jobbet kör iPhone (utom en rebell som valt Android) som har haft en bra appstore under lång tid och även nykomligen Android har redan en bra online-butik, så känns det skönt att äntligen som numera ensam Windows Mobile-kille ha en central plats att hitta nåt kul till min telefon. Tiden får avgöra om jag kommer fortsätta vara den som har den tråkiga telefonen utan vettigt utbud eller om jag också kommer bli den som sitter och pillar på telefonen vid varje lugn stund för att få min nästa underhållningsfix.\r\n\r\n![Bild](http://tekniken.nu/uploads/633904275575798668-windows-marketplace-ofc-03.jpg)", + "html": "Idag släpps de första officiella Windows Mobile 6.5-telefonerna i världen och i samband med detta släpps även Marketplace som är Microsofts motsvarighet till iPhones App Store. Här kommer mitt första famlande intryck.
Installationen är på c:a 600 kb och tar nån sekund att installera via wifi och efter några sekunders koll på att man har den senaste versionen är det bara att börja surfa runt bland de applikationer som finns.
Förmodligen är det lite problem med att det är alltför många som kopplar upp sig alltför snabbt just nu då jag fått trycka retry hela tiden. Jag har inte den officiella 6.5-versionen så en del av problemen jag märkt kan förstås komma från buggar i telefonen också.
När man väl hittat nåt program/spel som känns lockande får man logga in med sitt Live-konto för att att köpa/ladda ner. Här fick jag också massa felmedelanden om att marketplace inte kunde komma åt Windows Live ID-tjänsten så det märks att det är första dagenn och dom inte räknat med trycket. Det släppte efter stund och jag fick ett nytt litet biljardspel i telefonen. Installationen gick smärtfritt och programmet dök upp i startmenyn under games så det var bara att börja spela direkt.
Själva kategoriseringen och presentationen av de olika programmen är enkelt och tydligt, men det är alldeles för få alternativ och framförallt gratis såna. Just nu är ju förstås en del kategorier rätt meningslösa som t.ex. ”Most popular” och ”What’s new” , men i övrigt så verkar det som den är anpassad för att behålla en vettig struktur även när det blir tusentals applikationer då det går att kategorisera även spel i flera underkategorier.
Enligt de andra tester jag läst verkar utbudet variera stort mellan olika länder. Då mitt rom är nån engelsk variant är det svårt att säga om det utbud jag ser kommer att gälla i den svenska versionen, men just nu finns c:a 70 spel och ett 90 tal applikationer i olika kategorier vilket förhoppningsvis kommer att öka snabbt nu när den faktiskt släppts. Rykten har snackat om att det skulle finnas c:a 600 vid lanseringen så det finns fortfarande möjlighet att det ser bättre ut redan imorgon.
Då alla andra på jobbet kör iPhone (utom en rebell som valt Android) som har haft en bra appstore under lång tid och även nykomligen Android har redan en bra online-butik, så känns det skönt att äntligen som numera ensam Windows Mobile-kille ha en central plats att hitta nåt kul till min telefon. Tiden får avgöra om jag kommer fortsätta vara den som har den tråkiga telefonen utan vettigt utbud eller om jag också kommer bli den som sitter och pillar på telefonen vid varje lugn stund för att få min nästa underhållningsfix.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Marketplace för Windows Mobile - första intrycket", + "meta_description": "", + "author_id": 1089, + "created_at": 1254830756000, + "created_by": 1089, + "updated_at": 1254830756000, + "updated_by": 1089, + "published_at": 1254830756000, + "published_by": 1089 + }, + { + "id": 352, + "title": "Remote Desktop på iPhone - nu med stöd för Vista och Windows 7", + "slug": "remote-desktop-pa-iphone---nu-med-stod-for-vista-och-windows-7", + "markdown": "\r\n\r\nEn av de första applikationerna i App Store var Remote Desktop, ett fjärrstyrningsprogram för Windows. Tyvärr fungerade det bara på Windows XP och Server 2003, eftersom det från och med Vista och Server 2008 finns en helt ny version av fjärrskrivbordet som använder ett annat protokoll. Glädjande nog kom en uppgradering igår som klarar både Vista, Windows 7 och Server 2008!\r\n\r\n\r\n\r\nDet fungerar förvånande väl att fjärrstyra en dator trots iPhonens mycket mindre skärm och även över 3G. Det kanske inte är ett arbetsverktyg som jag skulle använda dagligen, men med iPhonens inbyggda VPN-stöd så är detta ett bra katastrofkit där man kan fjärrstyra en server varifrån som helst.\r\n\r\nFinns i gratis liteversion och en betalversion för 45 kronor som har bättre stöd för tangentbord och mus.\r\n\r\nRemote Desktop Lite: http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=288362576&mt=8\r\n\r\nRemote Desktop: http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=288362053&mt=8\r\n\r\n![Bild](http://tekniken.nu/uploads/633906773883473482-RDP.PNG)", + "html": "En av de första applikationerna i App Store var Remote Desktop, ett fjärrstyrningsprogram för Windows. Tyvärr fungerade det bara på Windows XP och Server 2003, eftersom det från och med Vista och Server 2008 finns en helt ny version av fjärrskrivbordet som använder ett annat protokoll. Glädjande nog kom en uppgradering igår som klarar både Vista, Windows 7 och Server 2008!
Det fungerar förvånande väl att fjärrstyra en dator trots iPhonens mycket mindre skärm och även över 3G. Det kanske inte är ett arbetsverktyg som jag skulle använda dagligen, men med iPhonens inbyggda VPN-stöd så är detta ett bra katastrofkit där man kan fjärrstyra en server varifrån som helst.
Finns i gratis liteversion och en betalversion för 45 kronor som har bättre stöd för tangentbord och mus.
Remote Desktop Lite: http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=288362576&mt=8
Remote Desktop: http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=288362053&mt=8
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Remote Desktop på iPhone - nu med stöd för Vista och Windows 7", + "meta_description": "", + "author_id": 6, + "created_at": 1255080588000, + "created_by": 6, + "updated_at": 1255080588000, + "updated_by": 6, + "published_at": 1255080588000, + "published_by": 6 + }, + { + "id": 354, + "title": "Testat: Solid State Drive OCZ Vertex 30gb", + "slug": "testat-solid-state-drive-ocz-vertex-30gb", + "markdown": "\r\n\r\nPriserna för Solid State-hårddiskar börjar äntligen närma sig rimliga nivåer. Förra gången vi testade en SSD var det med tveksamma resultat. Överföringshastigheten var snabb, oftast. Ibland tog det dock stopp och disken verkade vänta på något innan den tog fart igen. Att använda Outlook (i cached Exchange mode) ställde till stora problem med fler stopp än annars.\r\n\r\nDen SSD vi testade då var byggd av Samsung, inbyggd i en Dell-laptop. Vi har nu haft möjlighet att testa en disk från OCZ. Vårt testexemplar är på 30gb vilket verkligen är på gränsen om man vill köra Windows 7 som tar upp hälften av utrymmet direkt.\r\n\r\nDisken känns som ett kvalitétsbygge med stilrent svart metallchassi. Den följer standard och passar perfekt i 2,5” diskplatser.\r\n\r\nMitt första test var att koppla in hårddisken i en av våra äldre laptops och installera Windows 7. Uppstarten av Windows tar runt 20 sekunder från avstängd till fungerande start-meny. Hastigheten i mina första tester blev inte så extrem som jag trodde, disken nådde taket vid 130mb/sek. Jag installerade om och testade i gamla Windows XP, samma resultat. Insåg att den gamla datorn kör SATA I, inte SATA II, det var alltså antagligen styrenheten för hårddisken som satte stopp.\r\n\r\nOCZ Vertex 30gb, Windows 7 x64 (SATA150):\r\n\r\n\r\n\r\nSiffrorna ovan är fortfarande extremt imponerande för att vara i en laptop. Vanliga mekaniska hårddiskar i laptops brukar snitta runt 65mb/sek. I mitt tycke är det alltså en väldigt bra uppgradering även för äldre laptops, givet att de är starka nog för Windows 7 i övrigt. Förutom hastighet har vi även två andra stora fördelar mot mekaniska diskar, strömförbrukning och stötkänslighet.\r\n\r\nJag kopplade därefter in OCZ-disken i min stationära dator av modernare snitt. Siffrorna såg genast bättre ut. Läshastigheten ligger stadigt på 220mb/sek och skrivhastigheten på 150mb/sek.\r\n\r\nOCZ Vertex 30gb, Windows 7 x64 (nästan exakt samma i övriga operativsystem)\r\n\r\n\r\n\r\nJag testade även i Windows Server 2008 R2, Windows 7 x86 och Windows XP, resultaten rör sig knappt mellan de olika operativsystemen. Värt att nämna är att inget av operativsystemen kräver drivrutiner för installation på SSD, den känns igen som vilken SATA-hårddisk som helst. Jag testade också Outlook i cached Exchange mode vilket nu fungerade fläckfritt!\r\n\r\nSom jämförelse har jag min vanliga Samsung Spinpoint 1TB hårddisk som jag använder i vanliga fall. Samsung-hårddisken ligger ganska stadigt på 90mb/sek, mindre än halva läshastigheten alltså! Det är dock inte bara läs- och skrivhastighet som avgör hur snabbt det går, intressant är också accesstiden, det vill säga tiden det tar för disken att hitta rätt data innan den börjar läsa eller skriva. För SSD disken tar det i snitt 0,2ms där det för min mekaniska disk springer iväg till 12ms, vilket gör en del skillnad när det handlar om att läsa fragmenterad data.\r\n\r\nSamsung Spinpoint 1TB, Windows 7 x64\r\n\r\n\r\n\r\nFrågan kvarstår dock huruvida det är intressant att använda hårddisken på daglig basis. En SSD hårddisk klarar av ett begränsat antal skrivningar till samma yta på disken. Detta löser tillverkarna genom att markera de datablock som blivit för välanvända så att de inte skrivs till igen. Detta gör att disken krymper sakta men säkert om den används mycket.\r\n\r\nDet gäller därför att se till att det inte skrivs onödig data till din SSD. Som onödigt räknas nu defragmentering då SSD har så kort accesstid oavsett var på disken datan ligger. Se också till att ha tillräckligt med RAM i datorn så att en Pagefile inte behövs på hårddisken, detta går då att stänga av i Windows.\r\n\r\nJag rekommenderar också Windows 7 (eller Server 2008 R2) som har inbyggt stöd för funktionen TRIM, något som saknas i alla tidigare operativsystem. Mer om TRIM-funktionen på Wikipedia.\r\n\r\nDen disken jag har behövde firmware-uppdateras, något som krävde att all data togs bort och att man vet vad man sysslar med. Uppgraderingen skulle förbättra stödet för TRIM-kommandot och lösa en del fel.\r\n\r\nSom slutsats kan sägas att tekniken är i princip mogen för gemene man. Det är fortfarande några småsaker som uppdatering och fininställningar i windows som gör att det fortfarande är en entusiastprodukt.\r\n\r\nFörutom det har vi förstås priset, cirka 25kr/gb jämfört med 0,7kr/gb för en mekanisk hårddisk. Inom ett halvår tror jag dock att tekniken kommer att vara helt klar för användning, både vad gäller pris och användarvänlighet.\r\n\r\n![Bild](http://tekniken.nu/uploads/633909521605255632-image001.png)", + "html": "Priserna för Solid State-hårddiskar börjar äntligen närma sig rimliga nivåer. Förra gången vi testade en SSD var det med tveksamma resultat. Överföringshastigheten var snabb, oftast. Ibland tog det dock stopp och disken verkade vänta på något innan den tog fart igen. Att använda Outlook (i cached Exchange mode) ställde till stora problem med fler stopp än annars.
Den SSD vi testade då var byggd av Samsung, inbyggd i en Dell-laptop. Vi har nu haft möjlighet att testa en disk från OCZ. Vårt testexemplar är på 30gb vilket verkligen är på gränsen om man vill köra Windows 7 som tar upp hälften av utrymmet direkt.
Disken känns som ett kvalitétsbygge med stilrent svart metallchassi. Den följer standard och passar perfekt i 2,5” diskplatser.
Mitt första test var att koppla in hårddisken i en av våra äldre laptops och installera Windows 7. Uppstarten av Windows tar runt 20 sekunder från avstängd till fungerande start-meny. Hastigheten i mina första tester blev inte så extrem som jag trodde, disken nådde taket vid 130mb/sek. Jag installerade om och testade i gamla Windows XP, samma resultat. Insåg att den gamla datorn kör SATA I, inte SATA II, det var alltså antagligen styrenheten för hårddisken som satte stopp.
OCZ Vertex 30gb, Windows 7 x64 (SATA150):
Siffrorna ovan är fortfarande extremt imponerande för att vara i en laptop. Vanliga mekaniska hårddiskar i laptops brukar snitta runt 65mb/sek. I mitt tycke är det alltså en väldigt bra uppgradering även för äldre laptops, givet att de är starka nog för Windows 7 i övrigt. Förutom hastighet har vi även två andra stora fördelar mot mekaniska diskar, strömförbrukning och stötkänslighet.
Jag kopplade därefter in OCZ-disken i min stationära dator av modernare snitt. Siffrorna såg genast bättre ut. Läshastigheten ligger stadigt på 220mb/sek och skrivhastigheten på 150mb/sek.
OCZ Vertex 30gb, Windows 7 x64 (nästan exakt samma i övriga operativsystem)
Jag testade även i Windows Server 2008 R2, Windows 7 x86 och Windows XP, resultaten rör sig knappt mellan de olika operativsystemen. Värt att nämna är att inget av operativsystemen kräver drivrutiner för installation på SSD, den känns igen som vilken SATA-hårddisk som helst. Jag testade också Outlook i cached Exchange mode vilket nu fungerade fläckfritt!
Som jämförelse har jag min vanliga Samsung Spinpoint 1TB hårddisk som jag använder i vanliga fall. Samsung-hårddisken ligger ganska stadigt på 90mb/sek, mindre än halva läshastigheten alltså! Det är dock inte bara läs- och skrivhastighet som avgör hur snabbt det går, intressant är också accesstiden, det vill säga tiden det tar för disken att hitta rätt data innan den börjar läsa eller skriva. För SSD disken tar det i snitt 0,2ms där det för min mekaniska disk springer iväg till 12ms, vilket gör en del skillnad när det handlar om att läsa fragmenterad data.
Samsung Spinpoint 1TB, Windows 7 x64
Frågan kvarstår dock huruvida det är intressant att använda hårddisken på daglig basis. En SSD hårddisk klarar av ett begränsat antal skrivningar till samma yta på disken. Detta löser tillverkarna genom att markera de datablock som blivit för välanvända så att de inte skrivs till igen. Detta gör att disken krymper sakta men säkert om den används mycket.
Det gäller därför att se till att det inte skrivs onödig data till din SSD. Som onödigt räknas nu defragmentering då SSD har så kort accesstid oavsett var på disken datan ligger. Se också till att ha tillräckligt med RAM i datorn så att en Pagefile inte behövs på hårddisken, detta går då att stänga av i Windows.
Jag rekommenderar också Windows 7 (eller Server 2008 R2) som har inbyggt stöd för funktionen TRIM, något som saknas i alla tidigare operativsystem. Mer om TRIM-funktionen på Wikipedia.
Den disken jag har behövde firmware-uppdateras, något som krävde att all data togs bort och att man vet vad man sysslar med. Uppgraderingen skulle förbättra stödet för TRIM-kommandot och lösa en del fel.
Som slutsats kan sägas att tekniken är i princip mogen för gemene man. Det är fortfarande några småsaker som uppdatering och fininställningar i windows som gör att det fortfarande är en entusiastprodukt.
Förutom det har vi förstås priset, cirka 25kr/gb jämfört med 0,7kr/gb för en mekanisk hårddisk. Inom ett halvår tror jag dock att tekniken kommer att vara helt klar för användning, både vad gäller pris och användarvänlighet.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Testat: Solid State Drive OCZ Vertex 30gb", + "meta_description": "", + "author_id": 1088, + "created_at": 1255355360000, + "created_by": 1088, + "updated_at": 1255355360000, + "updated_by": 1088, + "published_at": 1255355360000, + "published_by": 1088 + }, + { + "id": 355, + "title": "MDI får känselspröt", + "slug": "mdi-far-kanselsprot", + "markdown": "\r\n\r\nNu börjar det hända saker på ett av de mest eftersatta områdena: hur vi som människor faktiskt interagerar med våra datorer - MDI.\r\n\r\nFärgskärmen och datormusen är ju de största genombrotten på detta område men man kan ju knappast säga att dessa är nya uppfinningar. Skärmen har blivit plattare och musen något mer ergonomisk men så mycket mer har inte hänt.\r\n\r\nDe senaste åren har det dock börjat röra på sig, Apple har banat väg för touchskärmen genom sin iPod Touch och iPhone, mobiltillverkare världen över har varit snabba att haka på men för de stationära datorerna har vi ännu inte sett så mycket av denna touch-hysteri.\r\n\r\nDetta tills nu då det i ganska rask takt kommit upp ett par nya intressanta saker.\r\n\r\nApple har lämnat in en patentansökan om ett helt nytt gränssnitt där man använder alla 10 fingrar för att styra/kommunicera med sin dator10/GUI har tagit fram ett helt nytt sätt att hantera skärmen genom att man med sina händer och i olika finger kombinationer utför olika kommandon\r\n\r\nDessa två tillsammans gör att det nu känns som att vi faktiskt är på väg att ta nästa steg i interaktionen med våra datorer. När man tänker efter så är det ganska begränsande att vi i vårat dagliga liv inte kan använda oss av alla de dimensioner vi har när vi använder oss av våra datorer. Detta område måste förbättras och jag tror att det kommer att hända mycket den närmaste tiden inom MDI.\r\n\r\nApples patentansökan gås igenom här: http://www.engadget.com/2009/10/02/apple-seeks-to-take-multitouch-where-its-never-been-before-in-n/\r\n\r\n10/GUI har en intressant video här: http://ignco.de/199\r\n\r\n![Bild](http://tekniken.nu/uploads/633911970928897582-apple-multitouch-app-2.jpg)", + "html": "Nu börjar det hända saker på ett av de mest eftersatta områdena: hur vi som människor faktiskt interagerar med våra datorer - MDI.
Färgskärmen och datormusen är ju de största genombrotten på detta område men man kan ju knappast säga att dessa är nya uppfinningar. Skärmen har blivit plattare och musen något mer ergonomisk men så mycket mer har inte hänt.
De senaste åren har det dock börjat röra på sig, Apple har banat väg för touchskärmen genom sin iPod Touch och iPhone, mobiltillverkare världen över har varit snabba att haka på men för de stationära datorerna har vi ännu inte sett så mycket av denna touch-hysteri.
Detta tills nu då det i ganska rask takt kommit upp ett par nya intressanta saker.
- Apple har lämnat in en patentansökan om ett helt nytt gränssnitt där man använder alla 10 fingrar för att styra/kommunicera med sin dator
- 10/GUI har tagit fram ett helt nytt sätt att hantera skärmen genom att man med sina händer och i olika finger kombinationer utför olika kommandon
Dessa två tillsammans gör att det nu känns som att vi faktiskt är på väg att ta nästa steg i interaktionen med våra datorer. När man tänker efter så är det ganska begränsande att vi i vårat dagliga liv inte kan använda oss av alla de dimensioner vi har när vi använder oss av våra datorer. Detta område måste förbättras och jag tror att det kommer att hända mycket den närmaste tiden inom MDI.
Apples patentansökan gås igenom här: http://www.engadget.com/2009/10/02/apple-seeks-to-take-multitouch-where-its-never-been-before-in-n/
10/GUI har en intressant video här: http://ignco.de/199
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "MDI får känselspröt", + "meta_description": "", + "author_id": 1091, + "created_at": 1255600292000, + "created_by": 1091, + "updated_at": 1255600292000, + "updated_by": 1091, + "published_at": 1255600292000, + "published_by": 1091 + }, + { + "id": 356, + "title": "Synkronisera filer mellan alla dina datorer och iPhone", + "slug": "synkronisera-filer-mellan-alla-dina-datorer-och-iphone", + "markdown": "\r\n\r\nDropbox är en webbtjänst för att lagra filer. En webbdisk är ju inte direkt något revolutionerande, storheten med Dropbox är istället hur allt är implementerat och hur enkelt det är att använda. Såhär funkar det:\r\n## Webbdelen\r\nDu har ett konto på Dropbox. 2 GB får du gratis, för $10 per månad får du 50GB och för $20 får du 100GB. Inte nog med att Dropbox lagrar dina filer, även gamla versioner sparas (så långt utrymmet räcker) vilket gör att du alltid kan få tillbaka raderade filer. Utöver säker lagring för dig själv så kan du dela ut valda foldrar så att folk i omvärlden kan hämta filer. Även inbyggd fotoalbumfunktion finns.\r\n## Datordelen\r\nPå datorn installerar du Dropbox applikation, som finns för Windows, MacOSX och Linux. Applikationen skapar en magisk folder – när man lägger filer i den mappen så laddas de automatiskt upp till Dropbox. Om du har applikationen installerad på flera datorer så synkas alla uppladdade filer även till Dropbox-mappen på de datorerna.\r\n\r\n\r\n## iPhone-delen\r\nDropbox har också en gratis iPhone-applikation. Med den så kan man enkelt komma åt alla filer som är synkade med Dropbox. Om man har filer i lämpliga format (t.ex. MP3) så kan man lyssna på dem direkt från applikationen. Man kan också ta bilder med mobilkameran och synka till Dropbox.\r\n\r\n\r\n\r\nTillsammans blir detta lösningen på en mängd problem som man stöter på i sin datorvardag: hur ska man lätt dela med sig av filer som är för stora för epost, hur kommer man lätt åt viktiga filer på någon annans dator och hur tar man lättast med sig dokument på telefonen.\r\n\r\nOm du vill testa kan du göra det här:https://www.getdropbox.com/referrals/NTI1MDgzNzQ5. Om du använder den länken så kommer jag att få lite extra utrymme i min Dropbox (och även du som registrerar dig tror jag).\r\n\r\n![Bild](http://tekniken.nu/uploads/Dropbox.png)", + "html": "Dropbox är en webbtjänst för att lagra filer. En webbdisk är ju inte direkt något revolutionerande, storheten med Dropbox är istället hur allt är implementerat och hur enkelt det är att använda. Såhär funkar det:
Webbdelen
Du har ett konto på Dropbox. 2 GB får du gratis, för $10 per månad får du 50GB och för $20 får du 100GB. Inte nog med att Dropbox lagrar dina filer, även gamla versioner sparas (så långt utrymmet räcker) vilket gör att du alltid kan få tillbaka raderade filer. Utöver säker lagring för dig själv så kan du dela ut valda foldrar så att folk i omvärlden kan hämta filer. Även inbyggd fotoalbumfunktion finns.
Datordelen
På datorn installerar du Dropbox applikation, som finns för Windows, MacOSX och Linux. Applikationen skapar en magisk folder – när man lägger filer i den mappen så laddas de automatiskt upp till Dropbox. Om du har applikationen installerad på flera datorer så synkas alla uppladdade filer även till Dropbox-mappen på de datorerna.
iPhone-delen
Dropbox har också en gratis iPhone-applikation. Med den så kan man enkelt komma åt alla filer som är synkade med Dropbox. Om man har filer i lämpliga format (t.ex. MP3) så kan man lyssna på dem direkt från applikationen. Man kan också ta bilder med mobilkameran och synka till Dropbox.
Tillsammans blir detta lösningen på en mängd problem som man stöter på i sin datorvardag: hur ska man lätt dela med sig av filer som är för stora för epost, hur kommer man lätt åt viktiga filer på någon annans dator och hur tar man lättast med sig dokument på telefonen.
Om du vill testa kan du göra det här:https://www.getdropbox.com/referrals/NTI1MDgzNzQ5. Om du använder den länken så kommer jag att få lite extra utrymme i min Dropbox (och även du som registrerar dig tror jag).
När första versionen av Android släpptes var vår största kritik att inbyggt stöd för Exchange Active Sync saknades. Cyniska som vi är antar vi att detta var ett medvetet val från Google som hellre ville tvinga över användarna till Googles företagstjänster. Tredjepartsprodukter har visserligen fyllt tomrummet, och telefontillverkaren HTC insåg snabbt att deras kundsegment inte ens skulle överväga produkten om Active Sync inte fanns med och byggde därför in eget Exchangestöd i sina Androidlurar.
Den senaste tiden har Active Sync gjort stora nya landvinningar, framförallt iom att IBM valt plattformen för mobilsynk mot kommande versionen av Domino / Lotus Notes. Apple byggde också in Exchangestöd i sitt senaste operativ Snow Leopard och iPhone har sedan länge stöd för Active Sync.
Google verkar nu också ha insett att en Smartphone utan Active Sync inte är så \"smart\", och bekräftar nu enligt mobilbloggen Brighthand att kommande version 2.0, även kallad Eclair, kommer ha inbyggt stöd för Active Sync. Bättre sent än aldrig!
Android 2.0 har ännu inget bekräftat releasedatum, version 1.6 (Donut) har precis släppts.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Android 2.0 får inbyggt stöd för Active Sync?", + "meta_description": "", + "author_id": 1085, + "created_at": 1255950961000, + "created_by": 1085, + "updated_at": 1255950961000, + "updated_by": 1085, + "published_at": 1255950961000, + "published_by": 1085 + }, + { + "id": 361, + "title": "Äntligen ny modell för e-legitimationer", + "slug": "antligen-ny-modell-for-e-legitimationer", + "markdown": "\r\n\r\nDen statliga E-delegationen har nu kommit med sitt förslag till hur e-legitimationerna ska fungera i framtiden. De beskriver dagens system som framgångsrikt men samtidigt behäftat med en rad problem. Jag kan bara hålla med, på båda punkterna. Det är fantastiskt att man kan deklarera, ordna personbevis och logga in på t.ex. CSN med samma inloggning! Det är inte lika fullt fantastiskt att tekniken hela tiden springer ifrån BankID som utvecklar den tekniska lösningen, vilket gör att nya versioner av webbläsare och operativsystem plötsligt står helt utan möjlighet att använda e-legtimation. Ett annat problem i den gamla lösningen är att den som vill implementera inloggning med e-legitimation måste ha en fullständig lösning hos sig.\r\n\r\n\r\n\r\nDen nya lösningen kommer att bygga ut dagens lösning med s.k. federation av identiteter. Det betyder att man kan separera den som tillhandahåller en tjänst (t.ex. CSN) från den som tillhandahåller själva e-legitimationen och inloggningskontrollen (t.ex. banken). Det här är samma idé som när man kan använda sitt Facebook-konto för att skriva kommentarer på en blogg, utan att att bloggen själv behöver ha en hel Facebook-inloggning. Detta kommer göra det mycket billigare för fler aktörer att implementera inloggning med e-legitimation utan att de behöver lägga enorma pengar på att implementera och säkra upp inloggningen. I den nya modellen kommer det att både finnas statligaidentitetsintygsgivare som Skatteverket och privata, som bankerna. Man kommer också att kunna skaffa en e-tjänstelegitimation som man kan använda som representant för ett företag eller organisation. Alltihop kommer att byggas på den öppna standarden SAML. 2012 ska det nya systemet vara i drift.\r\n\r\nLäs mer om den nya lösningen på idg.se.\r\n\r\nJag är stolt över att bo i ett land som tar digitala identiteter och e-legitimationer på allvar, och detta känns som ett bra och naturligt nästa steg. Tänk om man hade bott i t.ex. USA där digitala deklarationer har stoppats (i Kalifornien) eftersom de ansågs förstöra marknaden för leverantörer av skatteprogram...\r\n\r\n![Bild](http://tekniken.nu/uploads/633915616288250630-leg.png)", + "html": "Den statliga E-delegationen har nu kommit med sitt förslag till hur e-legitimationerna ska fungera i framtiden. De beskriver dagens system som framgångsrikt men samtidigt behäftat med en rad problem. Jag kan bara hålla med, på båda punkterna. Det är fantastiskt att man kan deklarera, ordna personbevis och logga in på t.ex. CSN med samma inloggning! Det är inte lika fullt fantastiskt att tekniken hela tiden springer ifrån BankID som utvecklar den tekniska lösningen, vilket gör att nya versioner av webbläsare och operativsystem plötsligt står helt utan möjlighet att använda e-legtimation. Ett annat problem i den gamla lösningen är att den som vill implementera inloggning med e-legitimation måste ha en fullständig lösning hos sig.
Den nya lösningen kommer att bygga ut dagens lösning med s.k. federation av identiteter. Det betyder att man kan separera den som tillhandahåller en tjänst (t.ex. CSN) från den som tillhandahåller själva e-legitimationen och inloggningskontrollen (t.ex. banken). Det här är samma idé som när man kan använda sitt Facebook-konto för att skriva kommentarer på en blogg, utan att att bloggen själv behöver ha en hel Facebook-inloggning. Detta kommer göra det mycket billigare för fler aktörer att implementera inloggning med e-legitimation utan att de behöver lägga enorma pengar på att implementera och säkra upp inloggningen. I den nya modellen kommer det att både finnas statligaidentitetsintygsgivare som Skatteverket och privata, som bankerna. Man kommer också att kunna skaffa en e-tjänstelegitimation som man kan använda som representant för ett företag eller organisation. Alltihop kommer att byggas på den öppna standarden SAML. 2012 ska det nya systemet vara i drift.
Läs mer om den nya lösningen på idg.se.
Jag är stolt över att bo i ett land som tar digitala identiteter och e-legitimationer på allvar, och detta känns som ett bra och naturligt nästa steg. Tänk om man hade bott i t.ex. USA där digitala deklarationer har stoppats (i Kalifornien) eftersom de ansågs förstöra marknaden för leverantörer av skatteprogram...
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Äntligen ny modell för e-legitimationer", + "meta_description": "att erbjuda inloggning med e-legitimation.", + "author_id": 6, + "created_at": 1255964828000, + "created_by": 6, + "updated_at": 1255964828000, + "updated_by": 6, + "published_at": 1255964828000, + "published_by": 6 + }, + { + "id": 362, + "title": "En bra PDF-lösning utan Adobe", + "slug": "en-bra-pdf-losning-utan-adobe", + "markdown": "\r\n\r\nPDF är på många sätt ett bra format – man kan göra dokument med typsnitt som inte finns på mottagarens dator, man kan göra formulära som läsaren kan fylla i etc. Det jag oftast vill göra med PDF-filer är:\r\n\r\nLäsa och skriva utFylla i formulär och sparaSkapa PDF:er genom att skriva ut, t.ex. från Word\r\n\r\nMed Adobes egen gratisläsare Adobe Reader så kan man göra en av punkterna ovan, hjälpligt. Att läsa PDF-filer och skriva ut dem fungerar bra. Däremot undrar man varför det krävs en enorm applikation som dessutom startar väldigt långsamt och har åtminstone en hjälpapplikation som ligger och tär på minnet hela tiden. Formulär kan man visserligen fylla i, men man kan inte spara de ifyllda värdena utan bara skriva ut det ifyllda formuläret och hoppas att man aldrig behöver gå tillbaka och göra ändringar.\r\n\r\nVill man kunna göra alla punkterna ovan behöver man köpversionen av Adobe Acrobat, det räcker med standardversionen som ”bara” kostar 4 625 SEK plus moms.\r\n\r\nAlternativa lösningar?\r\n\r\nFör att lösa punkt 1 och 2 rekommenderar jag Foxit Reader. Den är helt gratis, startar blixtsnabbt och klarar av att spara ifyllda formulär. Jag har hittills inte hittat någon PDF som den inte klarar, och den har precis som Adobe Reader plugins för de vanliga webbläsarna.\r\n\r\nFör att lösa punkt 3 rekommenderar jag Pdf995. Den installerar en skrivardrivrutin som gör att man kan skriva ut till en PDF-fil från alla program som kan skriva ut. Den är gratis i reklamversion, och vill man slippa de ganska irriterande reklamfönstren så köper man en licens för facila $10.\r\n\r\nBåda leverantörerna har också en massa andra PDF-produkter (som jag inte har testat):\r\n\r\nFoxit har förutom sin gratisläsare en massa olika paket för den som behöver skapa PDF:er, t.ex. PDF Creator för $30 som gör samma sak som PDF995, PDF Editor för $99 där man kan ändra i färdiga PDF-filer, PDF Form Designer för $79 för att skapa formulär och PDF Phantom för $129 som innehåller alltihop.\r\n\r\nPdf995 har PdfEdit995 för att skapa PDF:er (lite som Acrobat Distiller tror jag) och Signature995 för att signera dem – båda två samt Pdf995 ovan för totalt $20.\r\n\r\n![Bild](http://tekniken.nu/uploads/633916571915344785-Gnome-pdf.png)", + "html": "PDF är på många sätt ett bra format – man kan göra dokument med typsnitt som inte finns på mottagarens dator, man kan göra formulära som läsaren kan fylla i etc. Det jag oftast vill göra med PDF-filer är:
- Läsa och skriva ut
- Fylla i formulär och spara
- Skapa PDF:er genom att skriva ut, t.ex. från Word
Med Adobes egen gratisläsare Adobe Reader så kan man göra en av punkterna ovan, hjälpligt. Att läsa PDF-filer och skriva ut dem fungerar bra. Däremot undrar man varför det krävs en enorm applikation som dessutom startar väldigt långsamt och har åtminstone en hjälpapplikation som ligger och tär på minnet hela tiden. Formulär kan man visserligen fylla i, men man kan inte spara de ifyllda värdena utan bara skriva ut det ifyllda formuläret och hoppas att man aldrig behöver gå tillbaka och göra ändringar.
Vill man kunna göra alla punkterna ovan behöver man köpversionen av Adobe Acrobat, det räcker med standardversionen som ”bara” kostar 4 625 SEK plus moms.
Alternativa lösningar?
För att lösa punkt 1 och 2 rekommenderar jag Foxit Reader. Den är helt gratis, startar blixtsnabbt och klarar av att spara ifyllda formulär. Jag har hittills inte hittat någon PDF som den inte klarar, och den har precis som Adobe Reader plugins för de vanliga webbläsarna.
För att lösa punkt 3 rekommenderar jag Pdf995. Den installerar en skrivardrivrutin som gör att man kan skriva ut till en PDF-fil från alla program som kan skriva ut. Den är gratis i reklamversion, och vill man slippa de ganska irriterande reklamfönstren så köper man en licens för facila $10.
Båda leverantörerna har också en massa andra PDF-produkter (som jag inte har testat):
Foxit har förutom sin gratisläsare en massa olika paket för den som behöver skapa PDF:er, t.ex. PDF Creator för $30 som gör samma sak som PDF995, PDF Editor för $99 där man kan ändra i färdiga PDF-filer, PDF Form Designer för $79 för att skapa formulär och PDF Phantom för $129 som innehåller alltihop.
Pdf995 har PdfEdit995 för att skapa PDF:er (lite som Acrobat Distiller tror jag) och Signature995 för att signera dem – båda två samt Pdf995 ovan för totalt $20.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "En bra PDF-lösning utan Adobe", + "meta_description": " minne/hårddisk/CPU-tid!", + "author_id": 6, + "created_at": 1256060391000, + "created_by": 6, + "updated_at": 1256060391000, + "updated_by": 6, + "published_at": 1256060391000, + "published_by": 6 + }, + { + "id": 363, + "title": "Facebook Share får utökad funktionalitet", + "slug": "facebook-share-far-utokad-funktionalitet", + "markdown": "\r\n\r\nFacebook har länge givit webmasters (heter det fortfarande så?) och bloggare möjligheten att låta besökare enkelt lägga ut en länk till den aktuella sidan på Facebook via en liten FB-knapp. Enkel och självklar funktion som inte alls är unik för FB, faktum är att i stort sett alla sociala medier har något liknande. Nu har man dock gjort en vidareutveckling av funktionen så att ikonen dels kan visa hur många gånger sidan länkats på FB, och dessutom kan man få detaljerad info om hur många gånger länken kommenterats, gillats, klickats på etc. Ganska fiffigt!\r\n\r\nSå här ser nya Facebook Share ut:\r\n\r\n![Bild](http://tekniken.nu/uploads/facebook-logo.jpg)\r\n\r\n\r\n\r\n\r\nFör att få mer detaljerad statistik om länkens mottagande på FB integrerar \r\nman antingen mot Facebooks API och ropar på links.getStats eller så kör man \r\nen FQL fråga mot tabellen \r\nlink_stat. \r\nResultatet av API-anropet är XML-formaterat och gällande just denna sida ser det just nu ut så här:\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nDela gärna med dig av denna sida på FB och se hur informationen uppdateras i realtid ;)\r\n\r\n\r\nDen stora fördelen med detta är att man ganska enkelt kan koda en funktion som i realtid visar hur många som gillat en viss sida på FB.\r\n\r\n\r\nLäs mer om funktionen på FBs devblog:\r\n\r\n\r\nhttp://developers.facebook.com/news.php?blog=1&story=323\r\n", + "html": "Facebook har länge givit webmasters (heter det fortfarande så?) och bloggare möjligheten att låta besökare enkelt lägga ut en länk till den aktuella sidan på Facebook via en liten FB-knapp. Enkel och självklar funktion som inte alls är unik för FB, faktum är att i stort sett alla sociala medier har något liknande. Nu har man dock gjort en vidareutveckling av funktionen så att ikonen dels kan visa hur många gånger sidan länkats på FB, och dessutom kan man få detaljerad info om hur många gånger länken kommenterats, gillats, klickats på etc. Ganska fiffigt!
Så här ser nya Facebook Share ut:
För att få mer detaljerad statistik om länkens mottagande på FB integrerar
man antingen mot Facebooks API och ropar på links.getStats eller så kör man
en FQL fråga mot tabellen
link_stat.
Resultatet av API-anropet är XML-formaterat och gällande just denna sida ser det just nu ut så här:
Dela gärna med dig av denna sida på FB och se hur informationen uppdateras i realtid ;)
Den stora fördelen med detta är att man ganska enkelt kan koda en funktion som i realtid visar hur många som gillat en viss sida på FB.
Läs mer om funktionen på FBs devblog:
http://developers.facebook.com/news.php?blog=1&story=323
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Facebook Share får utökad funktionalitet", + "meta_description": "", + "author_id": 1085, + "created_at": 1256631600000, + "created_by": 1085, + "updated_at": 1256631600000, + "updated_by": 1085, + "published_at": 1256631600000, + "published_by": 1085 + }, + { + "id": 365, + "title": "Sanningen om Voddler", + "slug": "sanningen-om-voddler", + "markdown": "\r\n\r\nSom flera medier har rapporterat (bland annat Feber) om så ska videotjänsten Voddler släppas idag. Via bredbandsbolaget har jag fått ett konto och har nu kunnat testa det som kallas för film- och TV-världens Spotify. Vad är då intrycken?\r\n\r\n\r\n## Tekniken\r\nVoddler har en egen spelare som man installerar på sin dator. Som standard så startar den i fullskärm på den primära skärmen. Om man vill köra den på en sekundär skärm – som en ansluten TV – så får man ändra i genvägen som startar programmet (ta bort kommandoradsargumentet –fs så startar Voddler i fönsterläge). Om man drar fönstret till TV:n och trycker alt + enter så växlar applikationen till fullskärmsläge på rätt skärm, precis som XBMC. Bildytan blev alldeles för stor, men som tur var kan man ställa in hur stort overscan-området ska vara, precis som i XMBC. Hmm, en liten misstanke började gro i min hjärna. Sen hände det här:\r\n\r\n\r\n\r\nDagens scoop? Voddlers spelar ÄR XBMC. Jag tycker att det är ett oerhört smart val, att ta ett beprövat och omtyckt koncept och paketera istället för att bygga allt själv. T.o.m. min Media Center-fjärr fungerar hjälpligt i Voddler helt utan att jag behöver göra något.\r\n## Kvalitet och känsla\r\nKvaliteten på uppspelningen är riktigt bra, 720p streamat och ljud i AC3 5.1 som funkar fint att skicka direkt till hemmabioreceivern. Den känsla jag har haft med vanliga XBMC finns kvar, ibland är programmet lite oresponsivt och buggigt. Det kommer säkert bli bättre med tiden. Ett problem som är större och mer akut för Voddler tror jag är kapacitetsrelaterat på serversidan: ofta startar inte filmerna. Man får se några minuter reklam (som alltid funkar av någon anledning) och sen kommer man ofta bara tillbaka till filmmenyn. Om man trycker på att starta filmen igen får man vackert vänta sig igenom reklamen igen och hoppas att det går bättre. När filmen väl startar känns det ändå värt det, kvaliteten är som sagt riktigt grym och man kan pausa och spola etc som vanligt.\r\n## Utbudet\r\nUtbudet är ganska klent än så länge, men Voddler har enligt uppgift nyligen tecknat avtal med Paramount, Disney, Miramax, Touchstone och Dreamworks. Detta verkar lovande, men framgången kommer helt att hänga på utbudet och jag tror att det är extremt viktigt att få med stora TV-bolag så att TV-serier kommer med. Hur Voddler ska finansieras är lite oklart, men en gissning är att det blir samma modell som på Spotify; gratisvariant med reklam och en betalvariant utan. Med ett bra utbud har Voddler alla chanser att revolutionera den här branschen på samma sätt som Spotify har väckt skivindustrin ur sin bakåtsträvande dvala.\r\n\r\nFortsättningen blir spännande!\r\n\r\n![Bild](http://tekniken.nu/uploads/633923224003908505-voddler_1.jpg)", + "html": "Som flera medier har rapporterat (bland annat Feber) om så ska videotjänsten Voddler släppas idag. Via bredbandsbolaget har jag fått ett konto och har nu kunnat testa det som kallas för film- och TV-världens Spotify. Vad är då intrycken?
Tekniken
Voddler har en egen spelare som man installerar på sin dator. Som standard så startar den i fullskärm på den primära skärmen. Om man vill köra den på en sekundär skärm – som en ansluten TV – så får man ändra i genvägen som startar programmet (ta bort kommandoradsargumentet –fs så startar Voddler i fönsterläge). Om man drar fönstret till TV:n och trycker alt + enter så växlar applikationen till fullskärmsläge på rätt skärm, precis som XBMC. Bildytan blev alldeles för stor, men som tur var kan man ställa in hur stort overscan-området ska vara, precis som i XMBC. Hmm, en liten misstanke började gro i min hjärna. Sen hände det här:
Dagens scoop? Voddlers spelar ÄR XBMC. Jag tycker att det är ett oerhört smart val, att ta ett beprövat och omtyckt koncept och paketera istället för att bygga allt själv. T.o.m. min Media Center-fjärr fungerar hjälpligt i Voddler helt utan att jag behöver göra något.
Kvalitet och känsla
Kvaliteten på uppspelningen är riktigt bra, 720p streamat och ljud i AC3 5.1 som funkar fint att skicka direkt till hemmabioreceivern. Den känsla jag har haft med vanliga XBMC finns kvar, ibland är programmet lite oresponsivt och buggigt. Det kommer säkert bli bättre med tiden. Ett problem som är större och mer akut för Voddler tror jag är kapacitetsrelaterat på serversidan: ofta startar inte filmerna. Man får se några minuter reklam (som alltid funkar av någon anledning) och sen kommer man ofta bara tillbaka till filmmenyn. Om man trycker på att starta filmen igen får man vackert vänta sig igenom reklamen igen och hoppas att det går bättre. När filmen väl startar känns det ändå värt det, kvaliteten är som sagt riktigt grym och man kan pausa och spola etc som vanligt.
Utbudet
Utbudet är ganska klent än så länge, men Voddler har enligt uppgift nyligen tecknat avtal med Paramount, Disney, Miramax, Touchstone och Dreamworks. Detta verkar lovande, men framgången kommer helt att hänga på utbudet och jag tror att det är extremt viktigt att få med stora TV-bolag så att TV-serier kommer med. Hur Voddler ska finansieras är lite oklart, men en gissning är att det blir samma modell som på Spotify; gratisvariant med reklam och en betalvariant utan. Med ett bra utbud har Voddler alla chanser att revolutionera den här branschen på samma sätt som Spotify har väckt skivindustrin ur sin bakåtsträvande dvala.
Fortsättningen blir spännande!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Sanningen om Voddler", + "meta_description": "", + "author_id": 6, + "created_at": 1256725599000, + "created_by": 6, + "updated_at": 1256725599000, + "updated_by": 6, + "published_at": 1256725599000, + "published_by": 6 + }, + { + "id": 366, + "title": "Google Maps Navigation", + "slug": "google-maps-navigation", + "markdown": "\r\n\r\nGoogle bekräftade igår att kommande Android 2.0 släpps med nya Google Maps Navigation, vilket i praktiken innebär att programmet byggs ut till en komplett GPS-mjukara. Google tar på så sätt på allvar upp kampen med giganter som bla TomTom, Garmin och Navigon.\r\n\r\nNytt är funktioner som sk \"turn-by-turn navigation\" dvs att programmet berättar när det är dags att svänga, röststyrning (endast på engelska inledningsvis), integration med Street View för att visa hur nästa sväng ser ut och ett antal andra fiffiga funktioner som demonstreras i videon nedan. Den stora konkurrensfördelen kommer nog dock bli de överlägsna sökfunktionerna som Google Maps har jämfört med konkurrenterna, att den kommer vara gratis skadar ju inte heller...\r\n\r\nGMN är än så länge bara bekräftat för Android 2.0, men förhoppningsvis lär inte iPhone-användarna bli lottlösa heller.\r\n\r\nLäs Googles pressrelease\r\n\r\nFotnot: TomToms aktie föll nästan 40% direkt efter Googles pressrelease.\r\n\r\n![Bild](http://tekniken.nu/uploads/633924107792447553-google-maps-navigation.png)\r\n\r\n\r\n", + "html": "Google bekräftade igår att kommande Android 2.0 släpps med nya Google Maps Navigation, vilket i praktiken innebär att programmet byggs ut till en komplett GPS-mjukara. Google tar på så sätt på allvar upp kampen med giganter som bla TomTom, Garmin och Navigon.
Nytt är funktioner som sk \"turn-by-turn navigation\" dvs att programmet berättar när det är dags att svänga, röststyrning (endast på engelska inledningsvis), integration med Street View för att visa hur nästa sväng ser ut och ett antal andra fiffiga funktioner som demonstreras i videon nedan. Den stora konkurrensfördelen kommer nog dock bli de överlägsna sökfunktionerna som Google Maps har jämfört med konkurrenterna, att den kommer vara gratis skadar ju inte heller...
GMN är än så länge bara bekräftat för Android 2.0, men förhoppningsvis lär inte iPhone-användarna bli lottlösa heller.
Fotnot: TomToms aktie föll nästan 40% direkt efter Googles pressrelease.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Google Maps Navigation", + "meta_description": "", + "author_id": 1085, + "created_at": 1256813978000, + "created_by": 1085, + "updated_at": 1256813978000, + "updated_by": 1085, + "published_at": 1256813978000, + "published_by": 1085 + }, + { + "id": 367, + "title": "Voddler ur användarperspektiv", + "slug": "voddler-ur-anvandarperspektiv", + "markdown": "\r\n\r\nHar tv- och filmindustrin äntligen vaknat?\r\n\r\nJag upplever att tv- film- och musikindustrin är hopplöst fast i det förgångna. De jagar folk som laddar ner deras material olagligt. Att de vill ha betalt för sina alster är förvisso inte konstigt, men det märkliga är att de har så svårt att se teknikens möjligheter. Det känns som att de fortfarande vill ha kvar vinylskivor, kassettband och VHS-band. Om de bara kunde lära sig att samarbeta med nya tekniska aktörer som exempelvis The Pirate Bay, som ju erbjuder en distributionsform som på många sätt är mycket smidigare och snabbare än de traditionella distributionskanalerna, skulle den nya tekniken kunna utnyttjas på ett bättre sätt. Det är som sagt var självklart att folk ska ha betalt för det arbete de utför, men det står inte i kontrast till smidigare, billigare och rent av gratis användarupplevelse för användarna. Spotify är en tjänst som tar steg i rätt riktning. För att undvika stämning och hotbrev från musikindustrin lät grundarna av tjänsten de stora jättarna inom musikindustrin köpa in sig i företaget till en löjligt låg summa. Det kanske är en framtida lösning på liknande problem. Man får tillgång till det material som användarna vill ha, utan att riskera dyra och tidskrävande rättegångar.\r\n\r\n\r\n\r\nVoddler är en filmtjänst som kallats filmens Spotify. Hur de har löst betalningsfrågan till upphovsrättshavarna, vet jag inte, men klart är att de verkar ha avtal med relativt många filmbolag. För deras uppsättning filmer är, om inte fantastisk, så ändå hyfsat fyllig. Framför allt med tanke på hur nystartad tjänsten är. Det märks att tjänsten fortfarande är i betastadiet, då det förekommer en del barnsjukdomar. Som exempel kan nämnas problem med att återställa lösenord. Samtidigt har de ännu inte fått ut några TV-serier, trots att det finns ett sådant menyval. På sajtens forum fick frågande användare i augusti svaret att tv-serierna ska läggas ut inom en snar framtid. Då det fortfarande inte skett, frågar sig en del lite ironiskt hur länge ”en snar framtid” är för Voddler. \r\n\r\nBildkvaliten är hög (har testat på en 22 tums lcd-monitor), och det går att välja placering av bilden, textningen, och uppskalningen av bilden. Filmerna finns uppdelade i vanligt förekommande genrer. Det som drar ner betyget på tjänsten är att man av någon anledning inte kan navigera med musen. Det är oerhört störande om man exempelvis vill pausa filmen. Det hade varit mycket skönare att kunna sköta det via en trådlös mus, istället för ett trådlöst tangentbord eller att behöva gå upp och sköta det från skrivbordet. Tangentvalen kändes inte helt logiska, och det tog en stund att komma in i de grundläggande funktionerna. Det här tycker jag att Voddler ska se till att ändra på, då det kraftigt försämrar användarupplevelsen. Det är dessutom ett problem för de användare som av någon anledning har svårt att hantera ett tangentbord.\r\n\r\n\r\n\r\nTrots att denna betaversion har sina brister, så är det helt klart ett steg i rätt riktning. I nuläget är det gratis att se filmerna, men det lär antagligen ändras när tjänsten kommer i skarpt läge. Det ska bli intressant att se hur det går för denna tjänst. I motsats till vad tv- och filmindustrin tycks tro, tror jag att tjänster som Voddler kommer att öka mångfalden i tv- och filmproduktionen. Som det är nu styrs marknaden av ett fåtal stora aktörer. Mindre spelare har svårt att få komma in på planen och göra sin röst hörd. De har svårt att få distribution på sina verk. Men med en tjänst som Voddler borde rimligtvis marknaden för smala independent film- och tvskapare öka. Det hoppas jag på i alla fall. För bra film och tv styrs inte av hur stor budget de har, utan hur starkt innehållet är. Det är något som de stora bjässarna verkar ha missat, när de skapar monstruöst dyra filmer, men som har ett innehåll som är lika tunt som The Pirate Bay-grundarnas argument.\r\n\r\n![Bild](http://tekniken.nu/uploads/633924107804791145-image002.jpg)", + "html": "
Har tv- och filmindustrin äntligen vaknat?
Jag upplever att tv- film- och musikindustrin är hopplöst fast i det förgångna. De jagar folk som laddar ner deras material olagligt. Att de vill ha betalt för sina alster är förvisso inte konstigt, men det märkliga är att de har så svårt att se teknikens möjligheter. Det känns som att de fortfarande vill ha kvar vinylskivor, kassettband och VHS-band. Om de bara kunde lära sig att samarbeta med nya tekniska aktörer som exempelvis The Pirate Bay, som ju erbjuder en distributionsform som på många sätt är mycket smidigare och snabbare än de traditionella distributionskanalerna, skulle den nya tekniken kunna utnyttjas på ett bättre sätt. Det är som sagt var självklart att folk ska ha betalt för det arbete de utför, men det står inte i kontrast till smidigare, billigare och rent av gratis användarupplevelse för användarna. Spotify är en tjänst som tar steg i rätt riktning. För att undvika stämning och hotbrev från musikindustrin lät grundarna av tjänsten de stora jättarna inom musikindustrin köpa in sig i företaget till en löjligt låg summa. Det kanske är en framtida lösning på liknande problem. Man får tillgång till det material som användarna vill ha, utan att riskera dyra och tidskrävande rättegångar.
Voddler är en filmtjänst som kallats filmens Spotify. Hur de har löst betalningsfrågan till upphovsrättshavarna, vet jag inte, men klart är att de verkar ha avtal med relativt många filmbolag. För deras uppsättning filmer är, om inte fantastisk, så ändå hyfsat fyllig. Framför allt med tanke på hur nystartad tjänsten är. Det märks att tjänsten fortfarande är i betastadiet, då det förekommer en del barnsjukdomar. Som exempel kan nämnas problem med att återställa lösenord. Samtidigt har de ännu inte fått ut några TV-serier, trots att det finns ett sådant menyval. På sajtens forum fick frågande användare i augusti svaret att tv-serierna ska läggas ut inom en snar framtid. Då det fortfarande inte skett, frågar sig en del lite ironiskt hur länge ”en snar framtid” är för Voddler.
Bildkvaliten är hög (har testat på en 22 tums lcd-monitor), och det går att välja placering av bilden, textningen, och uppskalningen av bilden. Filmerna finns uppdelade i vanligt förekommande genrer. Det som drar ner betyget på tjänsten är att man av någon anledning inte kan navigera med musen. Det är oerhört störande om man exempelvis vill pausa filmen. Det hade varit mycket skönare att kunna sköta det via en trådlös mus, istället för ett trådlöst tangentbord eller att behöva gå upp och sköta det från skrivbordet. Tangentvalen kändes inte helt logiska, och det tog en stund att komma in i de grundläggande funktionerna. Det här tycker jag att Voddler ska se till att ändra på, då det kraftigt försämrar användarupplevelsen. Det är dessutom ett problem för de användare som av någon anledning har svårt att hantera ett tangentbord.
Trots att denna betaversion har sina brister, så är det helt klart ett steg i rätt riktning. I nuläget är det gratis att se filmerna, men det lär antagligen ändras när tjänsten kommer i skarpt läge. Det ska bli intressant att se hur det går för denna tjänst. I motsats till vad tv- och filmindustrin tycks tro, tror jag att tjänster som Voddler kommer att öka mångfalden i tv- och filmproduktionen. Som det är nu styrs marknaden av ett fåtal stora aktörer. Mindre spelare har svårt att få komma in på planen och göra sin röst hörd. De har svårt att få distribution på sina verk. Men med en tjänst som Voddler borde rimligtvis marknaden för smala independent film- och tvskapare öka. Det hoppas jag på i alla fall. För bra film och tv styrs inte av hur stor budget de har, utan hur starkt innehållet är. Det är något som de stora bjässarna verkar ha missat, när de skapar monstruöst dyra filmer, men som har ett innehåll som är lika tunt som The Pirate Bay-grundarnas argument.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Voddler ur användarperspektiv", + "meta_description": "", + "author_id": 1092, + "created_at": 1256816520000, + "created_by": 1092, + "updated_at": 1256816520000, + "updated_by": 1092, + "published_at": 1256816520000, + "published_by": 1092 + }, + { + "id": 373, + "title": "ASRock släpper uppdaterad Nettop 330 med wlan och fjärrkontroll", + "slug": "asrock-slapper-uppdaterad-nettop-330-med-wlan-och-fjarrkontroll", + "markdown": "\r\n\r\nVi skrev för ett tag sedan om ASRock Nettop ION 330, en utmärkt HTPC för mediacentret XBMC. Två av de stora minustecknen med enheten var dock avsaknad av trådlöst nätverk och Fjärrkontroll (såväl som inbyggd IR-mottagare). Asrock visar att de tar till sig av kritiken och har snabbt fått ut en uppdaterad version, Nettop ION 330HT, med såväl wlan som IR-mottagare och medföljande fjärrkontroll. Några hundralappar till får man betala, men helt klart jämförbart med att köpa en MCE fjärrkontroll och IR-mottagare separat och så mycket snyggare med integrerad mottagare.\r\n\r\nEn grym produkt som nu blivit ännu bättre, grattis till alla er som väntat!\r\n\r\n \r\n\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/xbmcion.png)", + "html": "Vi skrev för ett tag sedan om ASRock Nettop ION 330, en utmärkt HTPC för mediacentret XBMC. Två av de stora minustecknen med enheten var dock avsaknad av trådlöst nätverk och Fjärrkontroll (såväl som inbyggd IR-mottagare). Asrock visar att de tar till sig av kritiken och har snabbt fått ut en uppdaterad version, Nettop ION 330HT, med såväl wlan som IR-mottagare och medföljande fjärrkontroll. Några hundralappar till får man betala, men helt klart jämförbart med att köpa en MCE fjärrkontroll och IR-mottagare separat och så mycket snyggare med integrerad mottagare.
En grym produkt som nu blivit ännu bättre, grattis till alla er som väntat!
Extensions (insticksprogram) för Google Chrome har funnits ganska länge i developer-kanalen. De har inte varit så många och inte så användbara – en förklaring är förstås att inte så många kör utvecklarversionen, och man har också varit tvungen att själv aktivera funktionen med kommandoradsargument i genvägen som startar Chrome.
Nyligen släppte Google på stöd för extensions i beta-kanalen. Detta har gjort att mängden Chrome-extensions formligen har exploderat. Med betaversioner av Chrome för MacOS och Linux så har Google tagit nästa naturliga steg och öppnat en officiell webbplats för extensions, på samma sätt som FireFox har haft redan från starten.
På Chrome Extension Gallery hittar man ett stort antal extensions, sorterade efter kategori, popularitet eller betyg. Här är mina fem favoriter:
- Google Reader Checker – en liten ikon med antal olästa RSS-inlägg på Google Reader
- Chromed Bird – en Twitter-extension som visar nya tweets och som du kan twittra från direkt
- gPDF – öppnar alla PDF-länkar i Google Viewer istället för i Adobe Reader eller någon annan extern applikation. Sjukt mycket enklare, och dessutom funkar det bättre än t.ex. Adobe Reader som hälften av gångerna vägrar öppna PDF-filer.
- FlashBlock – har aldrig kört det i någon webbläsare tidigare, men ett behagligt lugn sprider sig t.o.m. över Aftonbladet. Har funktioner för att vitlista siter etc.
- Speed Tracer – visar och loggar prestanda för webbsidor. Dels visas laddningstider, men även HTML-tolkning, utritning och layout är med.
Om du inte redan använder tjänsten MindMeister så finns det ingen ursäkt giltig annat än att du inte visste om att den finns (och i och med att läser Tekniken.nu så det är ju lite konstigt ;-) – men hur som helst ska du i så fall registrera ett konto och börja använda både MindMeister på webben och i din iPhone.
Vad jag inte tidigare visste tidigare är att du kan starta en mind map genom att maila direkt till MindMeister – detta är oerhört kraftfullt när du t ex får bugglistor från kunder eller synpunkter, anteckningar från möten osv. Skälet till att jag inte visste detta innan är antagligen att dom döpt funktionen till det väldigt obegripliga ”Geistesblitz Email”.
Det finns två olika mailadresser – en för nya mindmaps och en för gamla, om du mailar till en gammal så skriver du bara namnet på den gamla mind mapen i ärenderaden i ditt mail – väldigt enkelt och sparar mycket tid.
Skriv ner dina punkter i en någorlunda strukturerad form och skicka den till den emailadress som står under ”My Account > Settings > Geistesblitz Email”, tex:
Buggar hemsidan:
Startsidan
Loggan är för liten
Scriptfel i navigeringen
Typsnittet är för lite
Använd Arial 15px för rubriker
Använd Palatino Linotype 12px för brödtext
Produktsidan
Visa priserna både i EUR och SEK
Större bilder
Lightbox ska vara vit
Vilket resulterar i följande fina strukturerade mind map:
Och använder man de inbyggda att-göra ikonerna kan man få ett enkelt men lättanvänt projektstyrningssystem där både projektmedlemmar och kund i realtid kan följa vad som händer i sitt projekt:
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "MindMeister kan parsa email", + "meta_description": "m", + "author_id": 1087, + "created_at": 1264456097000, + "created_by": 1087, + "updated_at": 1264456097000, + "updated_by": 1087, + "published_at": 1264456097000, + "published_by": 1087 + }, + { + "id": 382, + "title": "Internet 2009 i nummer", + "slug": "internet-2009-i-nummer", + "markdown": "\r\n\r\nHär kommer ett litet länktips: Pingdom har ställt samman massor av intressant Internet-statistik för 2009. Många saker är klart intressanta; tex att IIS (Microsofts webserver) backat hela 22% och att Apache således är ohotat i topp med 47% av marknaden.\r\n\r\nÄven skräpposten fortsätter att växa, +24% jämfört med 2008. 84% av alla mail som skickas klassas som skräppost.\r\n\r\nKolla in hela listan hos Pingdom.\r\n\r\n![Bild](http://tekniken.nu/uploads/634000528993656117-pie-chart-icon.png)", + "html": "Här kommer ett litet länktips: Pingdom har ställt samman massor av intressant Internet-statistik för 2009. Många saker är klart intressanta; tex att IIS (Microsofts webserver) backat hela 22% och att Apache således är ohotat i topp med 47% av marknaden.
Även skräpposten fortsätter att växa, +24% jämfört med 2008. 84% av alla mail som skickas klassas som skräppost.
Kolla in hela listan hos Pingdom.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Internet 2009 i nummer", + "meta_description": "", + "author_id": 1085, + "created_at": 1264421700000, + "created_by": 1085, + "updated_at": 1264421700000, + "updated_by": 1085, + "published_at": 1264421700000, + "published_by": 1085 + }, + { + "id": 383, + "title": "Typekit - ny molntjänst för typsnitt på webben", + "slug": "typekit---ny-molntjanst-for-typsnitt-pa-webben", + "markdown": "\r\n\r\nSom vi tidigare har skrivit om går det numera bra att använda vanliga typsnitt på webbplatser vilket är väldigt efterlängtat eftersom alternativet att skapa bildrubriker har varit så tidsödande och gjort webben svårare och otillgängligare. Eftersom typsnittsbranschen är väldigt gammal och konservativ har det dock varit svårt att få till licensavtal för de vanliga typsnitten så även om det tekniskt går att använda vanliga typsnitt på webben så är det inte möjligt på grund av licensbegränsningar.\r\n\r\n\r\n\r\nNu har det kommit en webbtjänst som har gjort det hela mycket enklare genom att de har samlat alla typsnitt som går att använda på webben och säljer dessa samt står för hela hanteringen av hosting och länkning så att varje webbläsare får rätt kommandon för att fungera korrekt – det enda du som utvecklare behöver göra är att klistra in en liten kodsnutt och sedan använder du typsnitten som vanligt!\r\n\r\nDessutom har tjänsten en gratisvariant som går att testa och har en lång rad typsnitt som faktiskt är riktigt fina – titta själv på typekit.com/\r\n", + "html": "Som vi tidigare har skrivit om går det numera bra att använda vanliga typsnitt på webbplatser vilket är väldigt efterlängtat eftersom alternativet att skapa bildrubriker har varit så tidsödande och gjort webben svårare och otillgängligare. Eftersom typsnittsbranschen är väldigt gammal och konservativ har det dock varit svårt att få till licensavtal för de vanliga typsnitten så även om det tekniskt går att använda vanliga typsnitt på webben så är det inte möjligt på grund av licensbegränsningar.
Nu har det kommit en webbtjänst som har gjort det hela mycket enklare genom att de har samlat alla typsnitt som går att använda på webben och säljer dessa samt står för hela hanteringen av hosting och länkning så att varje webbläsare får rätt kommandon för att fungera korrekt – det enda du som utvecklare behöver göra är att klistra in en liten kodsnutt och sedan använder du typsnitten som vanligt!
Dessutom har tjänsten en gratisvariant som går att testa och har en lång rad typsnitt som faktiskt är riktigt fina – titta själv på typekit.com/
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Typekit - ny molntjänst för typsnitt på webben", + "meta_description": "", + "author_id": 1087, + "created_at": 1264698954000, + "created_by": 1087, + "updated_at": 1264698954000, + "updated_by": 1087, + "published_at": 1264698954000, + "published_by": 1087 + }, + { + "id": 384, + "title": "Nu kommer HTML5 - döden för Flash?", + "slug": "nu-kommer-html5---doden-for-flash", + "markdown": "\r\n\r\nOm man bara utgår från namnet kan man tro att det bara är en ny version av HTML, men HTML5 innehåller mycket mer än man kan tro. De viktigaste nyheterna är (och de två första är de som är extremt viktiga och spännande):\r\n\r\n\r\n\r\nCanvas-objektet som möjliggör utritning av objekt i s.k. immediate mode (där programmeraren kan ha full kontroll på vad som ritas och när)Inbyggt stöd för video och ljud utan pluginsEn lokal databas (så att program kan lagra saker i webbläsaren)Redigering av sidorDrag and dropJavascript-anrop mellan olika sidorHantera/manipulera surfhistorik i webbläsarenHantera/manipulera inställningar för MIME-typer och protokoll\r\n\r\nDe två första är särskilt intressanta eftersom det i princip är de två funktionerna som utgör existensberättigandet för Adobe Flash – animeringar och videouppspelning. Flera proffstyckare har redan förutspått att detta innebär slutet för Flash. Om det är sant ska jag låta vara osagt, men visst känns det som att HTML5 löser väldigt många av de uppgifter man hittills har behövt plugins för. Än så länge är dock Flash ohotat i och med att HTML5 bara finns i Chrome, Opera och Safari. När standarden klubbas av W3C (snart) förväntar åtminstone jag mig att stöd kommer i fler webbläsare.\r\n\r\nFör den som kör Chrome eller Safari så finns redan en massa HTML5-demos som man kan testa:\r\n\r\nCanvas-experiment: http://9elements.com/io/projects/html5/canvas/En grym videospelare (testa zoomen): http://jilion.com/sublime/videoVimeo har en HTML5-variant på sin spelare: www.vimeo.com/\r\n\r\n![Bild](http://tekniken.nu/uploads/634013214770367624-html5.png)", + "html": "Om man bara utgår från namnet kan man tro att det bara är en ny version av HTML, men HTML5 innehåller mycket mer än man kan tro. De viktigaste nyheterna är (och de två första är de som är extremt viktiga och spännande):
- Canvas-objektet som möjliggör utritning av objekt i s.k. immediate mode (där programmeraren kan ha full kontroll på vad som ritas och när)
- Inbyggt stöd för video och ljud utan plugins
- En lokal databas (så att program kan lagra saker i webbläsaren)
- Redigering av sidor
- Drag and drop
- Javascript-anrop mellan olika sidor
- Hantera/manipulera surfhistorik i webbläsaren
- Hantera/manipulera inställningar för MIME-typer och protokoll
De två första är särskilt intressanta eftersom det i princip är de två funktionerna som utgör existensberättigandet för Adobe Flash – animeringar och videouppspelning. Flera proffstyckare har redan förutspått att detta innebär slutet för Flash. Om det är sant ska jag låta vara osagt, men visst känns det som att HTML5 löser väldigt många av de uppgifter man hittills har behövt plugins för. Än så länge är dock Flash ohotat i och med att HTML5 bara finns i Chrome, Opera och Safari. När standarden klubbas av W3C (snart) förväntar åtminstone jag mig att stöd kommer i fler webbläsare.
För den som kör Chrome eller Safari så finns redan en massa HTML5-demos som man kan testa:
Canvas-experiment: http://9elements.com/io/projects/html5/canvas/
En grym videospelare (testa zoomen): http://jilion.com/sublime/video
Vimeo har en HTML5-variant på sin spelare: www.vimeo.com/
Windows Mobile 7 Series presenterades igår och internet har svämmat över av kommentarer. Efter att ha väntat på det här i närmare 2 år nu är det skönt att se att dom faktiskt har nåt att presentera.
Överlag så verkar de flesta positiva och det finns en hel del bra och dåligt som vi redan kan dra slutsatser om men också en hel del som kommer att visas sig först när SDKn släpps.
Vad vi vet numera
Gränssnittet som kallas Metro ser ut ungefär som Zune fast med en ny typ av startsida som består av applets/widgets kallade tiles (tydligen så räckte inte dom vanliga orden till) och dom har helt skippat de klassiska ikonerna som alla andra mobiler har.
Telefonerna kommer tillverkas av partners t.ex. HTC som med WM 6.5 men med större krav på telefonen när det gäller funktioner och prestanda (t.ex. kapacitiv skärm och GPS är nämnt), det krävs också 5 hårdvaruknappar (tillbaka, start, sök, kamera och ström) medan tangentbord är valfritt.
Flashstöd kommer inte finnas med i lanseringen men p.g.a. tidsbrist och inte av något principsak. Det ska dyka upp så fort Adobe fått ihop en fungerade port.
Telefonen skall komma \"holiday 2010\" vilket torde betyda nånstans kring oktober-november.
Den bygger på helt ny kod (som väntat) och är därför inte kompatibel med WM 6.5-applikationerna. Dock kommer båda versionerna samexistera där WM 7 riktar sig till \"high-end\"-telefonerna vilket i praktiken torde betyda alla telefoner med en större skärm, där 6.5 är mer anpassad till mindre skärmar och inte heller kräver tryckkänslig skärm.
Telefonen har allt man förväntar sig numera som Facebook-integration, sökmotor (Bing), kartor/gps funktioner (också Bing) samt musik/video med motsvarande datordel (zune-plattformen igen) och förstås hela officepaketet i en mobilanpassad version.
De visade inga spel i presentationen men den kommer att få spel liknande zune och nån typ av integration mot xbox-världen.
Oavsett vad man tycker om gränssnittet så är det numera en modern plattform som ser ut att kunna tävla på lika villkor med de andra OSen direkt från fabriken.
Vad som ännu bara är spekulativt
Det enda som är sagt om SDKn ännu är att den kommer att släppas (i nån form) på Mix 2010 som börjar 15:e mars och först då kommer telefonens potential att visas. Detta kommer avgöra om telefonen stannar vid att vara en telefon med inbyggda funktioner eller om den kommer att bli en plattform liknande iPhone, vilket verkar vara deras Microsofts mål.
Hur telefonen ser ut som standard är ju i det närmaste ointressant numera så länge som den går att skräddarsy efter behov av tillverkare, utvecklare eller slutanvändaren själv. Vid ett tillfälle i presentationen sades något om att de ville ha ett tydligt och gemensamt gränssnitt och de satsade på utökningbarhet istället för att ersättningsbarhet och det kan betyda att det inte går att byta ut utseendet helt (det lär gå inofficiellt förstås men du kan nog inte köpa en telefon med ett gränssnitt som inte liknar standardvarianten).
Att utvecklingsmiljön / SDKn bygger på C# och .NET är så gott som 100% säkert men om gränssnittet bygger på Silverlight eller om det är en egen miljö kan ingen säga säkert ännu.
Det har ännu inte nämts nåt specifikt om multitasking men det verkar finnas lite begränsningar.
Inget har heller nämnts om marketplace (dvs Microsofts version av AppStore) men detta lär också diskuteras på Mix 2010.
http://www.windowsphone7series.com/
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Windows Mobile 7 Series", + "meta_description": "", + "author_id": 1089, + "created_at": 1266316062000, + "created_by": 1089, + "updated_at": 1266316062000, + "updated_by": 1089, + "published_at": 1266316062000, + "published_by": 1089 + }, + { + "id": 390, + "title": "Mindjet Catalyst", + "slug": "mindjet-catalyst", + "markdown": "\r\n\r\nVi har tidigare skrivit ett par artiklar om verktyget Mindmeister som är ett otroligt bra verktyg för brainstorming och för att strukturera sitt arbete genom att skapa mindmaps. Det finns en hel del alternativ till Mindmeister men inget som riktigt tar upp kampen med dem på allvar förrän nu.\r\n\r\nMindjet har haft ett liknande verktyg ett bra tag men ganska nyligen lanserade de ett alternativ till Mindmeister, Catalyst!\r\n\r\nDeras föregångare var en nedladdningsbar applikation men Catalyst är en onlinetjänst och det är ett stort steg framåt.\r\n\r\nCatalyst kan man använda till t.ex:\r\n\r\n\r\nAtt planera projektMötesagendorTo-Do listorBrainstorming\r\nSå här ser deras mindmap vy ut:\r\n\r\n\r\n\r\n\r\n\r\nDet finns en hel del likheter mellan MindMeister och Mindjets Catalys. Det som är bra med Catalyst är att det har stöd för videokonferenser samt att de infört workspaces.\r\n\r\nEn workspace kan ha flera mindmaps och bifogade filer dvs. de har lagt till en nivå över mindmaps som fungerar som en samlingsplats för ett projekt.\r\n\r\nSå här ser deras workspace vy ut:\r\n\r\n\r\n\r\nSå tips, kolla upp Catalyst och avgör själv vilken av Mindmeister och Catalyst som är bäst!\r\n\r\nhttps://www.mindjet.com/products/mindjet-catalyst/overview\r\n\r\n![Bild](http://tekniken.nu/uploads/634032136771261935-image002.jpg)", + "html": "Vi har tidigare skrivit ett par artiklar om verktyget Mindmeister som är ett otroligt bra verktyg för brainstorming och för att strukturera sitt arbete genom att skapa mindmaps. Det finns en hel del alternativ till Mindmeister men inget som riktigt tar upp kampen med dem på allvar förrän nu.
Mindjet har haft ett liknande verktyg ett bra tag men ganska nyligen lanserade de ett alternativ till Mindmeister, Catalyst!
Deras föregångare var en nedladdningsbar applikation men Catalyst är en onlinetjänst och det är ett stort steg framåt.
Catalyst kan man använda till t.ex:
- Att planera projekt
- Mötesagendor
- To-Do listor
- Brainstorming
Så här ser deras mindmap vy ut:
Det finns en hel del likheter mellan MindMeister och Mindjets Catalys. Det som är bra med Catalyst är att det har stöd för videokonferenser samt att de infört workspaces.
En workspace kan ha flera mindmaps och bifogade filer dvs. de har lagt till en nivå över mindmaps som fungerar som en samlingsplats för ett projekt.
Så här ser deras workspace vy ut:
Så tips, kolla upp Catalyst och avgör själv vilken av Mindmeister och Catalyst som är bäst!
https://www.mindjet.com/products/mindjet-catalyst/overview
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Mindjet Catalyst", + "meta_description": "", + "author_id": 1094, + "created_at": 1267618800000, + "created_by": 1094, + "updated_at": 1267618800000, + "updated_by": 1094, + "published_at": 1267618800000, + "published_by": 1094 + }, + { + "id": 396, + "title": "Multitasking kan komma i iPhone OS 4.0", + "slug": "multitasking-kan-komma-i-iphone-os-40", + "markdown": "\r\n\r\nMultitasking – att kunna köra flera program samtidigt – är något som iPhone-ägare har velat ha redan från starten. Det finns inga egentliga hinder för att göra det, Apples egna applikationer som mail och iPod gör det redan. Men det är i nuläget inte möjligt att köra flera program från tredjepartstillverkare, utan att man jailbreakar sin telefon. Apples skäl för hindret är att fler applikationer igång gör telefonen långsam och drar mer batterier, och ökar också möjligheterna för virusliknande applikationer att vara igång utan att användaren märker det.\r\n\r\n\r\n\r\nNu verkar det som om Apple kanske släpper på sin hårda policy, enligt Ars Technica som får ses som en trovärdig källa (även om de inte på något sätt har fått det officiellt bekräftat). I iPhone OS 4.0 ska det tydligen finnas en processhanterare, vilket skulle vara helt meningslöst om det inte gick att köra flera program samtidigt. Om ryktet är sant så misstänker jag att det är iPad som har drivit på beslutet. Det är ju bara larvigt att man inte kan sitta på ett café och skriva blogginlägg och samtidigt lyssna på Spotify eller hålla koll på Twitter.\r\n\r\nVia http://mac.collected.info/ via Ars Technica.\r\n\r\n \r\n\r\n![Bild](http://tekniken.nu/uploads/634039824228154559-steve-jobs-iphone.png)", + "html": "Multitasking – att kunna köra flera program samtidigt – är något som iPhone-ägare har velat ha redan från starten. Det finns inga egentliga hinder för att göra det, Apples egna applikationer som mail och iPod gör det redan. Men det är i nuläget inte möjligt att köra flera program från tredjepartstillverkare, utan att man jailbreakar sin telefon. Apples skäl för hindret är att fler applikationer igång gör telefonen långsam och drar mer batterier, och ökar också möjligheterna för virusliknande applikationer att vara igång utan att användaren märker det.
Nu verkar det som om Apple kanske släpper på sin hårda policy, enligt Ars Technica som får ses som en trovärdig källa (även om de inte på något sätt har fått det officiellt bekräftat). I iPhone OS 4.0 ska det tydligen finnas en processhanterare, vilket skulle vara helt meningslöst om det inte gick att köra flera program samtidigt. Om ryktet är sant så misstänker jag att det är iPad som har drivit på beslutet. Det är ju bara larvigt att man inte kan sitta på ett café och skriva blogginlägg och samtidigt lyssna på Spotify eller hålla koll på Twitter.
Via http://mac.collected.info/ via Ars Technica.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Multitasking kan komma i iPhone OS 4.0", + "meta_description": "", + "author_id": 6, + "created_at": 1268385622000, + "created_by": 6, + "updated_at": 1268385622000, + "updated_by": 6, + "published_at": 1268385622000, + "published_by": 6 + }, + { + "id": 399, + "title": "Filmavkodning på grafikkortet i nya XBMC för Windows", + "slug": "filmavkodning-pa-grafikkortet-i-nya-xbmc-for-windows", + "markdown": "\r\n\r\nASROCK ION och liknande små mediedatorer som är gjorda för att koppla till TV:n har oftast en CPU som är för klen för att spela upp filmer i 1080p. De klarar sig ändå genom att ta hjälp av grafikkortet. Med grafikkortsstödd uppspelning så går CPU:n sällan upp över 25 procents belastning, till och med på en Atom-processor med två kärnor i blygsamma 1,6 GHz. I Windows heter den funktionen DXVA – DirectX Video Acceleration. Den stöds av de flesta nya grafikkort från ATI och Nvidia (men kontrollera detta noga om du tänker göra ett inköp!). I Linux heter funktionen VDPAU – Video Decode and Presentation API for UNIX – och fungerar bara på Nvidia-kort.\r\n\r\nHittills har mjukvarustödet för GPU-avkodning av film varit lite knapphändigt, man har hittills kunnat välja på att köra XBMC med VDPAU under Linux eller Media Player Classic med DXVA i Windows. Utrustad med mycket tålamod har man också kunnat få XBMC att starta Media Player Classic automatiskt när man startar en film, men det har varken varit särskilt enkelt eller transparent (det förstör känslan lite när ens fina mediecenter minimeras och ett annat program startar istället).\r\n\r\nDärför är det mycket glädjande att nyaste versionen av XBMC har fått stöd för DXVA! Jag är lite osäker på vilken i version som detta stöd först dök upp, men jag laddade ner den senaste nightly build jag kunde hitta och den fungerar stabilt och bra.\r\n\r\nGör så här:\r\n\r\nLadda ner senaste versionen av XBMCGå in i Settings -> Video -> Render method och välj DXVA (kan ha lite fel på exakta namnen på menyvalen, har ingen XBMC framför mig)Njut av helt hackfri uppspelning av filmer i 1080p\r\n\r\n![Bild](http://tekniken.nu/uploads/634048630700213097-xbmc_main.jpg)", + "html": "
ASROCK ION och liknande små mediedatorer som är gjorda för att koppla till TV:n har oftast en CPU som är för klen för att spela upp filmer i 1080p. De klarar sig ändå genom att ta hjälp av grafikkortet. Med grafikkortsstödd uppspelning så går CPU:n sällan upp över 25 procents belastning, till och med på en Atom-processor med två kärnor i blygsamma 1,6 GHz. I Windows heter den funktionen DXVA – DirectX Video Acceleration. Den stöds av de flesta nya grafikkort från ATI och Nvidia (men kontrollera detta noga om du tänker göra ett inköp!). I Linux heter funktionen VDPAU – Video Decode and Presentation API for UNIX – och fungerar bara på Nvidia-kort.
Hittills har mjukvarustödet för GPU-avkodning av film varit lite knapphändigt, man har hittills kunnat välja på att köra XBMC med VDPAU under Linux eller Media Player Classic med DXVA i Windows. Utrustad med mycket tålamod har man också kunnat få XBMC att starta Media Player Classic automatiskt när man startar en film, men det har varken varit särskilt enkelt eller transparent (det förstör känslan lite när ens fina mediecenter minimeras och ett annat program startar istället).
Därför är det mycket glädjande att nyaste versionen av XBMC har fått stöd för DXVA! Jag är lite osäker på vilken i version som detta stöd först dök upp, men jag laddade ner den senaste nightly build jag kunde hitta och den fungerar stabilt och bra.
Gör så här:
- Ladda ner senaste versionen av XBMC
- Gå in i Settings -> Video -> Render method och välj DXVA (kan ha lite fel på exakta namnen på menyvalen, har ingen XBMC framför mig)
- Njut av helt hackfri uppspelning av filmer i 1080p
Idag har Spotify släppt en uppdatering för sin iPhone-applikation. Nyheterna i den är inte revolutionerande, men några som jag verkligen har väntat på och några nice-to-haves (i urval):
- Koppling till Last.fm precis som i desktopapplikationen
- Kan öppna länkar, t.ex. från Facebook-appen
- Skapa, redigera och dela playlists
- Kommer alltid ihåg vad man spelade senast
- Albuminfo med recensioner
- Markera låtar och album som favoriter
Last.fm-kopplingen är min favorit bland de nya funktionerna, jag har hittat massor med ny musik genom den. I och med att jag nästan bara använder Spotify på telefonen nuförtiden så har det blivit lite tunt med det tidigare.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Uppdaterad Spotify-klient för iPhone", + "meta_description": "", + "author_id": 6, + "created_at": 1270036336000, + "created_by": 6, + "updated_at": 1270036336000, + "updated_by": 6, + "published_at": 1270036336000, + "published_by": 6 + }, + { + "id": 403, + "title": "Gör om en gammal dator till en NAS", + "slug": "gor-om-en-gammal-dator-till-en-nas", + "markdown": "\r\n\r\nMarknaden för nätverkshårddiskar (NAS) för hemmamarknaden har formligen exploderat. De flesta har två till fyra diskplatser och kör någon form av Linux. Vissa erbjuder också möjlighet att installera nya applikationer för Itunes-kopplingar, BitTorrent och webbserver. När jag började leta efter en lämplig NAS dit hem så slogs jag dock av tre saker: det finns ingen standard för operativsystem vilket gör att man kan komma att känna sig låst vid en föråldrad lösning, de flesta låter ganska mycket trots att de är gjorda för hemmabruk och de är dyra i förhållande till den hårdvara man får.\r\n\r\n\r\nEn gammal standardlösning är att använda en dator som NAS istället. Att skicka filer över ett nätverkskort kräver inte så särskilt hög prestanda, särskilt om man kan klara sig med 100 Mbps (vilket räcker utmärkt för att t.ex. spela filmer i 1080p).\r\n\r\n\r\nSagt och gjort – i jobbets dataskrotshög fanns en fullt fungerande gammal Dell GX150. En liten, tyst låda för kontorsbruk med en hopplöst omodern Pentium III-processor på 800 MHz. Genom att plundra en likadan i samma hög lyckades jag få ihop 512 MB RAM. Att installera Windows på en sån dator känns både onödigt prestandakrävande och dyrt, så jag valde Ubuntu istället. Det var några år sen jag körde Linux på någon av mina datorer, så det var lite spännande att se vad som har hänt i den världen.\r\n\r\n\r\nUbuntu fungerar över förväntan på en så gammal dator! Med hela den grafiska miljön laddad så skulle den nästan kunna funka som surfdator, om man har lite tålamod. Framför allt så levererar den filer i 10MB/s, vilket i princip är den maximala gränsen för ett nätverkskort på 100MBps. Processorn är då belastad till c:a 40 procent.\r\n\r\n\r\nSåhär gjorde jag:\r\n\r\n\r\n1) Förstärka hårdvaran. Med en ensam IDE-disk på 40GB så var datorn inte riktigt utrustad för att vara filserver. Därför köpte jag en SATA-kontroller (med RAID) och en 1TB SATA-disk.\r\n\r\n\r\n2) Installera Ubuntu, jag rekommenderar den senaste versionen (i skrivande stund 9.10). Det finns en server-version av Ubuntu som kan verka lämplig för en NAS, men den innehåller inget grafiskt gränssnitt och i princip inga förinstallerade applikationer eller tjänster. Mitt tips är att välja desktop-versionen om du inte redan är en van Linux-administration (och i så fall har du säkert en filserver med Linux redan). Till min stora glädje så fungerade SATA-kortet direkt, inga problem med drivrutiner eller något sånt.\r\n\r\n\r\n3) Aktivera fjärrstyrning. Eftersom du troligen vill köra din NAS utan tangentbord, mus och skärm är en av de viktigaste funktionerna för att kunna administrera den att kunna ansluta till den från en annan dator. Fjärrstyrning aktiveras såhär:\r\n\r\n\r\n\r\n\r\n\r\nOtippat nog så är det VNC som är standard för fjärrstyrning och installeras automatiskt i Ubuntu. Jag har alltid sett VNC som ett hobbyprotokoll som är ganska osäkert, men jag kanske har gamla fördomar :-). Valfri VNC-klient i Windows, Linux eller MacOSX funkar alltså fint för fjärrstyrning.\r\n\r\n\r\n4) Installera SSH. Detta är inte ett krav, men det är skönt att ha en fallback om fjärrstyrningen skulle sluta fungera.\r\n\r\n\r\n5) Konfigurera Samba. Samba är Linux-implementationen för Windows-nätverk, det är via Samba som du kommer att ansluta dina övriga datorer. Detta visade sig vara otippat krångligt eftersom båda de Samba-konfigureringsapplikationer man kan installera via Ubuntu Software Center är trasiga och man till slut måste fixa det sista för hand i inställningsfilerna.\r\n\r\n\r\nMed allt på plats så har du en tyst dator som levererar filer över nätverket och som dessutom har uppgraderingsmöjligheter och ett bra stöd för nya applikationer och tjänster.\r\n\r\n\r\nFör- och nackdelar med att bygga en egen NAS istället för att köpa en färdig:\r\n\r\n\r\nFördelar\r\n\r\n\r\nBillig\r\nFlexibel\r\nTyst (om du utgår från en tyst dator)\r\n\r\n\r\nNackdelar\r\n\r\n\r\nIngen hot-swap av diskar (byta diskar under drift)\r\nKräver eget arbete, både i hårdvara och mjukvara\r\nTillgång till support\r\n\r\n\r\n \r\n\r\n![Bild](http://tekniken.nu/uploads/634064072575903976-image001.png)", + "html": "
Marknaden för nätverkshårddiskar (NAS) för hemmamarknaden har formligen exploderat. De flesta har två till fyra diskplatser och kör någon form av Linux. Vissa erbjuder också möjlighet att installera nya applikationer för Itunes-kopplingar, BitTorrent och webbserver. När jag började leta efter en lämplig NAS dit hem så slogs jag dock av tre saker: det finns ingen standard för operativsystem vilket gör att man kan komma att känna sig låst vid en föråldrad lösning, de flesta låter ganska mycket trots att de är gjorda för hemmabruk och de är dyra i förhållande till den hårdvara man får.
En gammal standardlösning är att använda en dator som NAS istället. Att skicka filer över ett nätverkskort kräver inte så särskilt hög prestanda, särskilt om man kan klara sig med 100 Mbps (vilket räcker utmärkt för att t.ex. spela filmer i 1080p).
Sagt och gjort – i jobbets dataskrotshög fanns en fullt fungerande gammal Dell GX150. En liten, tyst låda för kontorsbruk med en hopplöst omodern Pentium III-processor på 800 MHz. Genom att plundra en likadan i samma hög lyckades jag få ihop 512 MB RAM. Att installera Windows på en sån dator känns både onödigt prestandakrävande och dyrt, så jag valde Ubuntu istället. Det var några år sen jag körde Linux på någon av mina datorer, så det var lite spännande att se vad som har hänt i den världen.
Ubuntu fungerar över förväntan på en så gammal dator! Med hela den grafiska miljön laddad så skulle den nästan kunna funka som surfdator, om man har lite tålamod. Framför allt så levererar den filer i 10MB/s, vilket i princip är den maximala gränsen för ett nätverkskort på 100MBps. Processorn är då belastad till c:a 40 procent.
Såhär gjorde jag:
1) Förstärka hårdvaran. Med en ensam IDE-disk på 40GB så var datorn inte riktigt utrustad för att vara filserver. Därför köpte jag en SATA-kontroller (med RAID) och en 1TB SATA-disk.
2) Installera Ubuntu, jag rekommenderar den senaste versionen (i skrivande stund 9.10). Det finns en server-version av Ubuntu som kan verka lämplig för en NAS, men den innehåller inget grafiskt gränssnitt och i princip inga förinstallerade applikationer eller tjänster. Mitt tips är att välja desktop-versionen om du inte redan är en van Linux-administration (och i så fall har du säkert en filserver med Linux redan). Till min stora glädje så fungerade SATA-kortet direkt, inga problem med drivrutiner eller något sånt.
3) Aktivera fjärrstyrning. Eftersom du troligen vill köra din NAS utan tangentbord, mus och skärm är en av de viktigaste funktionerna för att kunna administrera den att kunna ansluta till den från en annan dator. Fjärrstyrning aktiveras såhär:
Otippat nog så är det VNC som är standard för fjärrstyrning och installeras automatiskt i Ubuntu. Jag har alltid sett VNC som ett hobbyprotokoll som är ganska osäkert, men jag kanske har gamla fördomar :-). Valfri VNC-klient i Windows, Linux eller MacOSX funkar alltså fint för fjärrstyrning.
4) Installera SSH. Detta är inte ett krav, men det är skönt att ha en fallback om fjärrstyrningen skulle sluta fungera.
5) Konfigurera Samba. Samba är Linux-implementationen för Windows-nätverk, det är via Samba som du kommer att ansluta dina övriga datorer. Detta visade sig vara otippat krångligt eftersom båda de Samba-konfigureringsapplikationer man kan installera via Ubuntu Software Center är trasiga och man till slut måste fixa det sista för hand i inställningsfilerna.
Med allt på plats så har du en tyst dator som levererar filer över nätverket och som dessutom har uppgraderingsmöjligheter och ett bra stöd för nya applikationer och tjänster.
För- och nackdelar med att bygga en egen NAS istället för att köpa en färdig:
Fördelar
- Billig
- Flexibel
- Tyst (om du utgår från en tyst dator)
Nackdelar
- Ingen hot-swap av diskar (byta diskar under drift)
- Kräver eget arbete, både i hårdvara och mjukvara
- Tillgång till support
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Gör om en gammal dator till en NAS", + "meta_description": "", + "author_id": 6, + "created_at": 1270810456000, + "created_by": 6, + "updated_at": 1270810456000, + "updated_by": 6, + "published_at": 1270810456000, + "published_by": 6 + }, + { + "id": 404, + "title": "De gömda nyheterna i iPhone OS4", + "slug": "de-gomda-nyheterna-i-iphone-os4", + "markdown": "\r\n\r\nIngen har väl undgått att iPhone OS 4 innehåller stöd för bakgrundsprocesser och att man kan gruppera ihop applikationer i foldrar. Åtminstone det förstnämnda är ju extremt efterlängtat, men lite snopet är det ju att inga applikationer har uppdaterats med stöd för bakgrundskörning. Spotify väntar jag personligen allra mest på.\r\n\r\n\r\nMen det finns många andra små, små saker som också är nya. Gizmodo har gjort en ordentlig genomgång. Några av dem i urval:\r\n\r\n\r\nMöjlighet att stänga av datatrafik över mobilnätet\r\nValbar storlek på bilder som skickas i mail\r\nZoom i kameran\r\nRättstavning\r\nTrådning av konversationer i mail\r\nSpelning av video direkt på webbsidor (istället för att hoppa till Quicktime-applikationen)\r\n\r\n\r\nHär är hela Gizmodos lista.\r\n\r\n![Bild](http://tekniken.nu/uploads/634068483203384658-email_photos_resize.jpg)", + "html": "
Ingen har väl undgått att iPhone OS 4 innehåller stöd för bakgrundsprocesser och att man kan gruppera ihop applikationer i foldrar. Åtminstone det förstnämnda är ju extremt efterlängtat, men lite snopet är det ju att inga applikationer har uppdaterats med stöd för bakgrundskörning. Spotify väntar jag personligen allra mest på.
Men det finns många andra små, små saker som också är nya. Gizmodo har gjort en ordentlig genomgång. Några av dem i urval:
- Möjlighet att stänga av datatrafik över mobilnätet
- Valbar storlek på bilder som skickas i mail
- Zoom i kameran
- Rättstavning
- Trådning av konversationer i mail
- Spelning av video direkt på webbsidor (istället för att hoppa till Quicktime-applikationen)
Här är hela Gizmodos lista.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "De gömda nyheterna i iPhone OS4", + "meta_description": "", + "author_id": 6, + "created_at": 1271251519000, + "created_by": 6, + "updated_at": 1271251519000, + "updated_by": 6, + "published_at": 1271251519000, + "published_by": 6 + }, + { + "id": 406, + "title": "Äntligen nya sätt att betala", + "slug": "antligen-nya-satt-att-betala", + "markdown": "\r\n\r\nDet finns många tillfällen då jag stör mig på att företag inte hängt med i utvecklingen och gör det krångligt för sina kunder.\r\n\r\n\r\nJag tänker t.ex. på parkeringsautomater, som fram tills för något år sedan, endast tillät betalning med mynt. Det är ju inte särskilt troligt att folk har 120 kronor i mynt för en hel dags parkering. Nu har ju som tur var de flesta parkeringsautomaterna uppgraderats till att acceptera betalkort och SMS som betalning.\r\n\r\n\r\nEtt område som fortfarande är ganska hopplöst efter är varuautomater. Det händer ibland att jag vill köpa något att dricka eller äta i varuautomaterna i tunnelbanan. Men eftersom att jag i princip gör alla mina inköp med Visa-kort så är det väldigt sällan som jag har kontanter i plånboken. Härom dagen var jag i ett sådant läge. Stod där framför en automat, men hade inte tillräckligt med pengar för att göra ett inköp. Att betala med kort var fortfarande inte möjligt.\r\n\r\n\r\nDäremot så hade de infört betalning via SMS. Jag skrev automatens kod samt beloppet för varan jag skulle köpa, och skickade till deras nummer.\r\n\r\n\r\nInom några sekunder uppdaterades automatens display till att visa min betalda kredit, och jag kunde köpa min vara. Det blev ett påslag på 3 kronor för denna form av betalning, vilket jag tycker är lite fånigt. Det är ju trots allt så att de ökar sin försäljning på att erbjuda denna form av betalning.\r\n\r\n\r\nUtan möjligheten att betala med SMS hade jag inte gjort mitt inköp. Därför borde det ju vara så att priset för att underhålla det systemet bakas in i den ökade försäljningen. Men denna invändning till trots, så tycker jag att det är väldigt positivt att se ett företag ta steget mot en mer användarvänlig värld.\r\n\r\n![Bild](http://tekniken.nu/uploads/634085782495208132-selecta.png)", + "html": "Det finns många tillfällen då jag stör mig på att företag inte hängt med i utvecklingen och gör det krångligt för sina kunder.
Jag tänker t.ex. på parkeringsautomater, som fram tills för något år sedan, endast tillät betalning med mynt. Det är ju inte särskilt troligt att folk har 120 kronor i mynt för en hel dags parkering. Nu har ju som tur var de flesta parkeringsautomaterna uppgraderats till att acceptera betalkort och SMS som betalning.
Ett område som fortfarande är ganska hopplöst efter är varuautomater. Det händer ibland att jag vill köpa något att dricka eller äta i varuautomaterna i tunnelbanan. Men eftersom att jag i princip gör alla mina inköp med Visa-kort så är det väldigt sällan som jag har kontanter i plånboken. Härom dagen var jag i ett sådant läge. Stod där framför en automat, men hade inte tillräckligt med pengar för att göra ett inköp. Att betala med kort var fortfarande inte möjligt.
Däremot så hade de infört betalning via SMS. Jag skrev automatens kod samt beloppet för varan jag skulle köpa, och skickade till deras nummer.
Inom några sekunder uppdaterades automatens display till att visa min betalda kredit, och jag kunde köpa min vara. Det blev ett påslag på 3 kronor för denna form av betalning, vilket jag tycker är lite fånigt. Det är ju trots allt så att de ökar sin försäljning på att erbjuda denna form av betalning.
Utan möjligheten att betala med SMS hade jag inte gjort mitt inköp. Därför borde det ju vara så att priset för att underhålla det systemet bakas in i den ökade försäljningen. Men denna invändning till trots, så tycker jag att det är väldigt positivt att se ett företag ta steget mot en mer användarvänlig värld.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Äntligen nya sätt att betala", + "meta_description": "", + "author_id": 1092, + "created_at": 1272981448000, + "created_by": 1092, + "updated_at": 1272981448000, + "updated_by": 1092, + "published_at": 1272981448000, + "published_by": 1092 + }, + { + "id": 409, + "title": "Spelutveckling med XNA", + "slug": "spelutveckling-med-xna", + "markdown": "\r\n\r\nAtt skapa spel till Windows, Windows mobile och Xbox kan vara både enkelt och snabbt. Det går dessutom att göra gratis. Tekniken som används kallas XNA och är Microsofts plattform för spelutveckling. Om man redan har Visual Studio installerat räcker det med att installera ett add-on som heter XNA Game Studio. Man kan välja en version för Windows mobile 7 och en för övriga plattformar. Har man inte Visual Studio går det bra att installera Visual C# Express Edition. Ladda ner XNA här!\r\n\r\n\r\nI Visual Studio/Visual C# Express finns nu möjligheten att skapa ett nytt spelprojekt via File > New project > XNA Game studio 3.1. Då har man tillgång till ett flertal olika projekttyper: Windows Game, Xbox Game, Plattformer starter kit\r\n\r\n\r\nAtt skapa sitt första spel är ganska enkelt. I korthet är processen att du skapar grafikobjekt som du fyller med innehåll.\r\n\r\n\r\nGrafiken ska sedan skrivas ut på skärmen, vilket sker i Draw-metoden. Här kan du göra en kontroll så att det inte blir för många objekt som visas samtidigt. Du kan även välja att slumpa ut värden som hastighet, storlek och riktning. \r\n\r\n\r\n\r\nI Update-metoden sköter du logiken, som exempelvis vad som händer om två objekt kolliderar.I update metoden hanterar du även vad som ska ske vid knapptryckningar. Du anger om hastigheten ska ändras, hur många objekt (fiender, kanonkulor) som kan vara på skärmen samtidigt och i vilken riktning objekten kan röra sig. Här kan du även göra ändringar i en spelares fysiska förutsättningar. Om spelaren exempelvis nått en viss poängnivå, kan man tillåta spelaren att hoppa högre, springa fortare eller bli större. Om spelaren nått slutet av en bana, kan man ändra bilden i bakgrundsgrafikobjektet.\r\n\r\n\r\nOm du har erfarenhet av att jobba med Flash kommer du säkert att känna igen vissa koncept. Man arbetar mycket med X och Y koordinater och grafik som man förflyttar i olika riktningar. Det är enkelt att komma igång, och det finns mångra bra tutorials (exempelvishttp://creators.xna.com/en-US/education/gettingstarted/bg2d/chapter1 ochhttp://creators.xna.com/en-US/education/gettingstarted/bg3d/chapter1). Det finns även många bra starter kits , som gör att du får en bra grund att stå på i ditt spelbyggande.\r\n\r\n\r\nTrots att det är enkelt att komma igång, så tycker jag ändå att det saknas en del grundläggande hjälpfunktioner. En sak som mig veterligen inte finns, är en Collision-klass, som kan användas för att beräkna om objekt kolliderar med varandra. Som det är nu måste man skriva den logiken själv. Det känns som en av de viktigaste bultarna i de flesta spel. Denna Collision-klass skulle kunna ha ett antal metoder för olika typer av kollisionshantering (Exempelvis Alpha, Block och Border).\r\n", + "html": "Att skapa spel till Windows, Windows mobile och Xbox kan vara både enkelt och snabbt. Det går dessutom att göra gratis. Tekniken som används kallas XNA och är Microsofts plattform för spelutveckling. Om man redan har Visual Studio installerat räcker det med att installera ett add-on som heter XNA Game Studio. Man kan välja en version för Windows mobile 7 och en för övriga plattformar. Har man inte Visual Studio går det bra att installera Visual C# Express Edition. Ladda ner XNA här!
I Visual Studio/Visual C# Express finns nu möjligheten att skapa ett nytt spelprojekt via File > New project > XNA Game studio 3.1. Då har man tillgång till ett flertal olika projekttyper: Windows Game, Xbox Game, Plattformer starter kit
Att skapa sitt första spel är ganska enkelt. I korthet är processen att du skapar grafikobjekt som du fyller med innehåll.
Grafiken ska sedan skrivas ut på skärmen, vilket sker i Draw-metoden. Här kan du göra en kontroll så att det inte blir för många objekt som visas samtidigt. Du kan även välja att slumpa ut värden som hastighet, storlek och riktning.
I Update-metoden sköter du logiken, som exempelvis vad som händer om två objekt kolliderar.
I update metoden hanterar du även vad som ska ske vid knapptryckningar. Du anger om hastigheten ska ändras, hur många objekt (fiender, kanonkulor) som kan vara på skärmen samtidigt och i vilken riktning objekten kan röra sig. Här kan du även göra ändringar i en spelares fysiska förutsättningar. Om spelaren exempelvis nått en viss poängnivå, kan man tillåta spelaren att hoppa högre, springa fortare eller bli större. Om spelaren nått slutet av en bana, kan man ändra bilden i bakgrundsgrafikobjektet.
Om du har erfarenhet av att jobba med Flash kommer du säkert att känna igen vissa koncept. Man arbetar mycket med X och Y koordinater och grafik som man förflyttar i olika riktningar. Det är enkelt att komma igång, och det finns mångra bra tutorials (exempelvishttp://creators.xna.com/en-US/education/gettingstarted/bg2d/chapter1 ochhttp://creators.xna.com/en-US/education/gettingstarted/bg3d/chapter1). Det finns även många bra starter kits , som gör att du får en bra grund att stå på i ditt spelbyggande.
Trots att det är enkelt att komma igång, så tycker jag ändå att det saknas en del grundläggande hjälpfunktioner. En sak som mig veterligen inte finns, är en Collision-klass, som kan användas för att beräkna om objekt kolliderar med varandra. Som det är nu måste man skriva den logiken själv. Det känns som en av de viktigaste bultarna i de flesta spel. Denna Collision-klass skulle kunna ha ett antal metoder för olika typer av kollisionshantering (Exempelvis Alpha, Block och Border).
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Spelutveckling med XNA", + "meta_description": "", + "author_id": 1092, + "created_at": 1274809337000, + "created_by": 1092, + "updated_at": 1274809337000, + "updated_by": 1092, + "published_at": 1274809337000, + "published_by": 1092 + }, + { + "id": 415, + "title": "Rullbar mobilskärm!", + "slug": "rullbar-mobilskarm", + "markdown": "\r\n\r\nSony har utvecklat en mobilskärm som är ihoprullbar. Skärmen som är 4,1 tum har en upplösning på 420 * 240 pixlar. Den kan visa 16 miljoner färger och har en kontrastratio på 1000:1.\r\n\r\n\r\n\r\nDet här är en väldigt intressant utveckling. Min gissning och dröm är att det, inom en inte allt för avlägsen framtid, kommer att finnas skärmar som är utdragbara. Alltså skärmar som man kan öka och minska storleken på, ungefär som man kan göra med webbläsarfönster. Tänk vad smidigt det skulle vara att kunna dra ut sin mobilskärm till att bli en skärm stor nog att se på film tillsammans med sina vänner. Och tänk vad smidigt när man ska hålla föredrag eller presentationer.\r\n\r\nDen här skärmen, om än i en konceptfas, visar mot en framtid där mobiltelefonerna tar över allt fler funktioner som idag sköts med datorer, tv, radio och papper. Tänk vad skönt att ersätta tv, datorer, radio och papper mot en enda mobil!\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/634105757351380032-image001.png@01CAFD8F.6688EA40__image001.png)", + "html": "Sony har utvecklat en mobilskärm som är ihoprullbar. Skärmen som är 4,1 tum har en upplösning på 420 * 240 pixlar. Den kan visa 16 miljoner färger och har en kontrastratio på 1000:1.
Det här är en väldigt intressant utveckling. Min gissning och dröm är att det, inom en inte allt för avlägsen framtid, kommer att finnas skärmar som är utdragbara. Alltså skärmar som man kan öka och minska storleken på, ungefär som man kan göra med webbläsarfönster. Tänk vad smidigt det skulle vara att kunna dra ut sin mobilskärm till att bli en skärm stor nog att se på film tillsammans med sina vänner. Och tänk vad smidigt när man ska hålla föredrag eller presentationer.
Den här skärmen, om än i en konceptfas, visar mot en framtid där mobiltelefonerna tar över allt fler funktioner som idag sköts med datorer, tv, radio och papper. Tänk vad skönt att ersätta tv, datorer, radio och papper mot en enda mobil!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Rullbar mobilskärm!", + "meta_description": "", + "author_id": 1092, + "created_at": 1274984280000, + "created_by": 1092, + "updated_at": 1274984280000, + "updated_by": 1092, + "published_at": 1274984280000, + "published_by": 1092 + }, + { + "id": 420, + "title": "Chrome och Opera växer snabbast", + "slug": "chrome-och-opera-vaxer-snabbast", + "markdown": "\r\n\r\nI den senaste rapporten från Net Applications som håller koll på det globala webbanvändandet så sjunker marknadsandelen för Internet Explorer och FireFox, medan Chrome och Opera växer mest. IE har hamnat under 60 procentsstrecket och FireFox är under 25, medan Chrome har kommit upp i 7,05 procent. Intressant är att IE8 är den enskilda webbläsarversion som växer snabbast, men det räcker inte för att kompensera för det enorma tappet i de andra IE-versionerna.\r\n\r\n\r\n\r\nMer detaljer finns hos Ars Technica.\r\n\r\n![Bild](http://tekniken.nu/uploads/634110692050480931-browser_share_0510-thumb-640xauto-14293.png)", + "html": "I den senaste rapporten från Net Applications som håller koll på det globala webbanvändandet så sjunker marknadsandelen för Internet Explorer och FireFox, medan Chrome och Opera växer mest. IE har hamnat under 60 procentsstrecket och FireFox är under 25, medan Chrome har kommit upp i 7,05 procent. Intressant är att IE8 är den enskilda webbläsarversion som växer snabbast, men det räcker inte för att kompensera för det enorma tappet i de andra IE-versionerna.
Mer detaljer finns hos Ars Technica.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Chrome och Opera växer snabbast", + "meta_description": "", + "author_id": 6, + "created_at": 1275472404000, + "created_by": 6, + "updated_at": 1275472404000, + "updated_by": 6, + "published_at": 1275472404000, + "published_by": 6 + }, + { + "id": 428, + "title": "Två bra nyheter i Chrome", + "slug": "tva-bra-nyheter-i-chrome", + "markdown": "\r\n\r\nI utvecklarkanalen för Chrome har två riktigt bra funktioner dykt upp:\r\n\r\n\r\n## Synkronisering av extensions\r\nChrome har sedan tidigare synkronisering av bokmärken, lösenord och inställningar. Det är väldigt bekvämt att få samma miljö hemma som på jobbet, men en sak har saknats: synkroniseringa av extensions (tillägg som AdBlock, AddThis, utvecklarverktyg och mycket annat). I den nyaste versionen av Chrome finns det möjlighet att synka även dessa. Gör såhär:\r\n\r\nLadda ner senaste utvecklarversionen av Chrome (byt med Chrome Channel Changer om du kör stabila eller betakanalen)Lägg till följande i genvägen som startar Chrome: --enable-sync-extensionsI Options->Synced, kryssa i Extensions\r\n\r\nJag ska i ärlighetens namn säga att det inte funkar felfritt än, men det är bara en tidsfråga innan synkroniseringen funkar lika bra som den för bokmärken\r\n## Inbyggd PDF-visare\r\nJag vet inte varför, men att visa PDF-filer från webben verkar vara en riktigt knepig uppgift. Om man kör med Adobe Reader så körs ett enormt resurkrävande program igång som inte särskilt sällan får för sig att visa modala dialogrutor längst bak, så att man tror att webbläsaren har hängt sig. Med t.ex. Foxit Reader fungerar det lite bättre, men åtminstone i Chrome så visas PDF:erna högst varannan gång, de andra 50 procenten så hänger den fliken helt och hållet. \r\n\r\nFrån och med nu finns dock en lättviktsläsare för PDF inbyggd i Chrome! Efter att ha uppdaterat (se ovan) så går du in i Extensions och aktiverar PDF-läsaren. Läsaren har egentligen inga funktioner alls utöver att visa PDF:en, men hittills har den visat alla PDF:er korrekt och är extremt snabb och snäll mot datorns resurser.\r\n\r\n![Bild](http://tekniken.nu/uploads/634128091861335681-chrome-dev.png)", + "html": "I utvecklarkanalen för Chrome har två riktigt bra funktioner dykt upp:
Synkronisering av extensions
Chrome har sedan tidigare synkronisering av bokmärken, lösenord och inställningar. Det är väldigt bekvämt att få samma miljö hemma som på jobbet, men en sak har saknats: synkroniseringa av extensions (tillägg som AdBlock, AddThis, utvecklarverktyg och mycket annat). I den nyaste versionen av Chrome finns det möjlighet att synka även dessa. Gör såhär:
- Ladda ner senaste utvecklarversionen av Chrome (byt med Chrome Channel Changer om du kör stabila eller betakanalen)
- Lägg till följande i genvägen som startar Chrome: --enable-sync-extensions
- I Options->Synced, kryssa i Extensions
Jag ska i ärlighetens namn säga att det inte funkar felfritt än, men det är bara en tidsfråga innan synkroniseringen funkar lika bra som den för bokmärken
Inbyggd PDF-visare
Jag vet inte varför, men att visa PDF-filer från webben verkar vara en riktigt knepig uppgift. Om man kör med Adobe Reader så körs ett enormt resurkrävande program igång som inte särskilt sällan får för sig att visa modala dialogrutor längst bak, så att man tror att webbläsaren har hängt sig. Med t.ex. Foxit Reader fungerar det lite bättre, men åtminstone i Chrome så visas PDF:erna högst varannan gång, de andra 50 procenten så hänger den fliken helt och hållet.
Från och med nu finns dock en lättviktsläsare för PDF inbyggd i Chrome! Efter att ha uppdaterat (se ovan) så går du in i Extensions och aktiverar PDF-läsaren. Läsaren har egentligen inga funktioner alls utöver att visa PDF:en, men hittills har den visat alla PDF:er korrekt och är extremt snabb och snäll mot datorns resurser.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Två bra nyheter i Chrome", + "meta_description": "", + "author_id": 6, + "created_at": 1277212385000, + "created_by": 6, + "updated_at": 1277212385000, + "updated_by": 6, + "published_at": 1277212385000, + "published_by": 6 + }, + { + "id": 430, + "title": "Varför jag väntar på Windows Phone 7", + "slug": "varfor-jag-vantar-pa-windows-phone-7", + "markdown": "\r\n\r\nJag är den enda på jobbet som inte gått över till iphone utan jag håller kvar vid min i det här laget uråldriga HTC Touch Diamond. Här är anledningarna till varför jag väntar på Microsofts nästa mobil-OS.\r\n\r\nEftersom telefonerna inte finns ännu är det förstås lite av en chansning att redan nu bestämma sig för wp7 men här finns några anledningar varför jag tror att det kan vara rätt beslut.\r\n## Hårdvara\r\nDe största tillverkarna av smartphones som idag tillverkar wm6.x- och android-telefoner kommer också tillverka wp7-mobiler och det finns förstås ingen anledning varför dessa skulle bygga sämre telefoner rent hårdvarumässigt. Kort sagt redan idag finns telefoner vars hårdvara är riktigt bra och det kommer att bli bättre så väljer man mellan android och wp7 så är det inte hårdvaran man behöver välja mellan.\r\n## Silverlight\r\nTrots att silverlight i grunden är en otroligt smidig teknik för att bygga gränsnitt så finns få applikationer och sajter idag. Jag tror dock att den här telefonen är det som krävs för att väcka intresset och att kommer att få se en flora av riktigt snygga och väl fungerande applikationer. Tidigare windows mobile-applikationer har ju mest gått från riktigt tråkig windows 3.11 look till gräsligt fult när programmerarna gjort om gränsnitten så gått de kunnat. Nu finns verkyg i form av Microsoft Blend så att designers utan kostnad och utan teknisk kunskap kan hjälpa till att designa applikationerna.\r\n## Spel\r\nGivetvis är det lite tidigt säga att det kommer att bli en grym spelplattform men tekniken finns definitivt där. XNA med C# och directx 9 i botten kommer göra det enkelt att porta spel mellan windows, xbox 360 och wp7 och det lär tilltala både proffsutvecklarna och hobbyutvecklarna. Det som behövs för att garantera framgång är att några större speltillverkare fokuserar på telefonen och här har ju microsoft lyckats förr (dock inte angående telefonerna).\r\n## Saknade funktioner och killer funktioner\r\nAndroid är flexibelt när det gäller konfiguration men det var gamla wm6.x också. Skillnaden mellan slutkonfigurationerna är så stora att man knappt kan säga vad som är i botten längre och här kommer definitivt wp7 sticka ut på samma sätt som iphone. Om man gillar att sitta på kvällen och pixelputta telefonen så är det nog fel mobil. Kör man vaniljvarianten av windows och spenderar tiden med att jobba, spela eller se film istället för installera och bygga egna skins så är man nog mer rätt målgrupp.\r\n\r\nDet saknas vissa funktioner som andra telefoner har som t.ex multitasking och detta betyder att vissa typer av applikationer kommer tyvärr vara omöjliga att bygga som t.ex egen musikspelare som spelar i bakgrunden medan man jobbar, exempelvis spotify. I de flesta fall kommer telefonen att bete sig som om multitasking finns, du kan t.ex sätta igång en uppgift på telefonen och få en notifiering när det är klart så länge själva jobbet kan utföras på en server istället för på själva telefonen. De inbyggda programmen har stöd för multitasking så att spela musik medan man kollar mailen kommer vara möjligt ändå.\r\n\r\nNån typ av multitaskning kommer nästan garanterat komma vid en senare version och ärligt talat så verkar ju iphone ha klarat sig okey fram till 4an så förhoppningsvis så klarar sig wp7 ett tag iaf.\r\n\r\nDet kommer inte vara världens mest avancerade telefon om man kollar på rena funktioner. Den kommer att ha brister och den kommer att begränsningar men den kommer också ha en del unika saker och åtminstone en del av dom som t.ex c#, xna och silverlight kommer locka utvecklare och med bra stöd för utvecklare så kommer telefonen få mängder av applikationer och spel.\r\n\r\nTelefonen kommer ha stöd för uppdatering direkt från microsoft (tänk windows update) och windows phone 7 kommer snart bli windows phone 7.1 och 7.5 och 8.0 och det finns gott om tid att fylla ut luckorna.\r\n## Grisen i säcken\r\nJag har aldrig ens rört en betaversion annat än en titt på emulatorn och lite videos så det är svårt att veta om jag kommer uppskatta flödet och detaljerna på telefonen så det är förvisso en gris i en säck, men grisen kan c# och silverlight och den är snygg även utan läppstift och enligt tidiga recensioner snabb och väloljad så jag kommer nog bli ganska nöjd. Nu är det bara att vänta på en skarp telefon och välja tillverkare bland LG , Asus, HTC, Samsung, Dell och kanske nån fler. Kanske nån typ av uppföljare till Samsung Galaxy S vore nice.\r\n", + "html": "Jag är den enda på jobbet som inte gått över till iphone utan jag håller kvar vid min i det här laget uråldriga HTC Touch Diamond. Här är anledningarna till varför jag väntar på Microsofts nästa mobil-OS.
Eftersom telefonerna inte finns ännu är det förstås lite av en chansning att redan nu bestämma sig för wp7 men här finns några anledningar varför jag tror att det kan vara rätt beslut.
Hårdvara
De största tillverkarna av smartphones som idag tillverkar wm6.x- och android-telefoner kommer också tillverka wp7-mobiler och det finns förstås ingen anledning varför dessa skulle bygga sämre telefoner rent hårdvarumässigt. Kort sagt redan idag finns telefoner vars hårdvara är riktigt bra och det kommer att bli bättre så väljer man mellan android och wp7 så är det inte hårdvaran man behöver välja mellan.
Silverlight
Trots att silverlight i grunden är en otroligt smidig teknik för att bygga gränsnitt så finns få applikationer och sajter idag. Jag tror dock att den här telefonen är det som krävs för att väcka intresset och att kommer att få se en flora av riktigt snygga och väl fungerande applikationer. Tidigare windows mobile-applikationer har ju mest gått från riktigt tråkig windows 3.11 look till gräsligt fult när programmerarna gjort om gränsnitten så gått de kunnat. Nu finns verkyg i form av Microsoft Blend så att designers utan kostnad och utan teknisk kunskap kan hjälpa till att designa applikationerna.
Spel
Givetvis är det lite tidigt säga att det kommer att bli en grym spelplattform men tekniken finns definitivt där. XNA med C# och directx 9 i botten kommer göra det enkelt att porta spel mellan windows, xbox 360 och wp7 och det lär tilltala både proffsutvecklarna och hobbyutvecklarna. Det som behövs för att garantera framgång är att några större speltillverkare fokuserar på telefonen och här har ju microsoft lyckats förr (dock inte angående telefonerna).
Saknade funktioner och killer funktioner
Android är flexibelt när det gäller konfiguration men det var gamla wm6.x också. Skillnaden mellan slutkonfigurationerna är så stora att man knappt kan säga vad som är i botten längre och här kommer definitivt wp7 sticka ut på samma sätt som iphone. Om man gillar att sitta på kvällen och pixelputta telefonen så är det nog fel mobil. Kör man vaniljvarianten av windows och spenderar tiden med att jobba, spela eller se film istället för installera och bygga egna skins så är man nog mer rätt målgrupp.
Det saknas vissa funktioner som andra telefoner har som t.ex multitasking och detta betyder att vissa typer av applikationer kommer tyvärr vara omöjliga att bygga som t.ex egen musikspelare som spelar i bakgrunden medan man jobbar, exempelvis spotify. I de flesta fall kommer telefonen att bete sig som om multitasking finns, du kan t.ex sätta igång en uppgift på telefonen och få en notifiering när det är klart så länge själva jobbet kan utföras på en server istället för på själva telefonen. De inbyggda programmen har stöd för multitasking så att spela musik medan man kollar mailen kommer vara möjligt ändå.
Nån typ av multitaskning kommer nästan garanterat komma vid en senare version och ärligt talat så verkar ju iphone ha klarat sig okey fram till 4an så förhoppningsvis så klarar sig wp7 ett tag iaf.
Det kommer inte vara världens mest avancerade telefon om man kollar på rena funktioner. Den kommer att ha brister och den kommer att begränsningar men den kommer också ha en del unika saker och åtminstone en del av dom som t.ex c#, xna och silverlight kommer locka utvecklare och med bra stöd för utvecklare så kommer telefonen få mängder av applikationer och spel.
Telefonen kommer ha stöd för uppdatering direkt från microsoft (tänk windows update) och windows phone 7 kommer snart bli windows phone 7.1 och 7.5 och 8.0 och det finns gott om tid att fylla ut luckorna.
Grisen i säcken
Jag har aldrig ens rört en betaversion annat än en titt på emulatorn och lite videos så det är svårt att veta om jag kommer uppskatta flödet och detaljerna på telefonen så det är förvisso en gris i en säck, men grisen kan c# och silverlight och den är snygg även utan läppstift och enligt tidiga recensioner snabb och väloljad så jag kommer nog bli ganska nöjd. Nu är det bara att vänta på en skarp telefon och välja tillverkare bland LG , Asus, HTC, Samsung, Dell och kanske nån fler. Kanske nån typ av uppföljare till Samsung Galaxy S vore nice.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Varför jag väntar på Windows Phone 7", + "meta_description": "", + "author_id": 1089, + "created_at": 1281351913000, + "created_by": 1089, + "updated_at": 1281351913000, + "updated_by": 1089, + "published_at": 1281351913000, + "published_by": 1089 + }, + { + "id": 432, + "title": "Framtidens mobiltelefon", + "slug": "framtidens-mobiltelefon", + "markdown": "\r\n\r\nMobiltelefonens betydelse och användningsområden har förändrats kraftigt senaste 5 åren. Här spekulerar jag fritt på vad jag tror kommer närmaste åren och små irritationsmoment som borde gå lösa redan nu med befintlig teknik.\r\n\r\n\r\n## Tillbehör som pluggas in i usb porten\r\nMidi-interface – plugga in synthar, trummaskiner och annat både för in- och uppspelning på proffsnivå.Spelkontroller – handkontroller, joysticks och rattar men också mer skräddarsydda typ guitarrherogitarrenSkrivare och skanners – gör telefonen till en riktig kontorsmaskinTangentbord/möss – i kombination med extern skärm har man en liten dator i fickan.\r\n## Röststyrning/Artificiell intelligens\r\nNu pratar jag inte om den begränsade typ \"ring person\" eller \"starta program\" utan ett mer naturligt språk ungefär som om man pratar med nån i andra änden. Istället för att starta en applikation för att kolla avstånd mellan två orter eller hur långt du sprungit senaste rundan så kan du fråga. Det här lär bli bättre och bättre men än så länge är det lite sci-fi.\r\n## TV/Montitor-ut\r\nDetta finns redan men inte speciellt omfattande. Tanken skulle vara att telefonen skulle bli en komplett media och underhållningshub även till hemmabio/fester osv. Som sagt, finns redan men inte särskilt utbrett.\r\n## Sladdar ersätts helt av WIFI/bluetooth eller motsvarande\r\nAll kommunikation med extern hårdvara som tv, musikanläggningar, skrivare och dyl kommer förstås bli trådlöst men det krävs en global standard och det är några år bort.\r\n## Optisk zoom\r\nDet är helt klart dags för mobilkameran att få optisk zoom. Det måste gå bygga ett linssystem på bredden/höjden istället för djupet alternativt nån typ av holografiska linser (som man läste om i vetenskapens värld på i början av 90-talet..)\r\n## Puffskydd!\r\nDet är ju hel t bizzart att det måste vara absolut vindstilla för att det ska gå prata. Hur svårt ska det vara att bygga in en skumgummibit framför mikrofonen?\r\n## Matt glas\r\nDet är väldigt sällan man vill se sig själv när man styr telefonen.\r\n## Tunn i fickan men greppvänlig i handen\r\nDet borde inte vara omöjligt att bygga en tunn och platt telefon som går att göra större/ mer greppvänlig när man håller den i handen. Detta borde gå göra utan att böja/vika skärmen som förstås kräver lite mer tekniska framsteg.\r\n## Smartare notifieringar\r\nNär telefonen ligger på ett bord och det ringer så låter ju vibratorn mer än ringsignalen och det är ju inte direkt ett harmoniskt ljud. Slå helt enkelt av vibratorn om telefonen ligger stilla horisontellt.\r\n\r\nRingsignaler borde analysera bakgrundsljudet och förstärka de frekvenser som behövs för att ljudet ska höras tydligt. Vet inte hur många gånger man bara hört ett skumt pip och upptäkt att resten av melodin försvunnit bland bakgrundsljudet.\r\n\r\nVibrationer fungerar bara när telefonen ligger bra mot huden men när man har telefonen i lösare tyg så känns inte vibrationer, telefonen borde istället studsa med större rörelser så att man upplever att nån rycker i tyget istället.\r\n## Stänga av displayen vid rätt tillfällen\r\nNär man visar nåt ett kvitto t.ex från ett sms ska ju telefonen inte stänga av sig. Helst vill man då kanske låsa touchdelen och låta den stanna i enbart visningsläge.\r\n\r\nFatta när telefonen är i fickan och minska antalet fickringningar, kanske genom nån typ av säkring som många pistoler har dvs det går inte skjuta om du inte håller handen runt kolven.\r\n## En elektriskt ledande penna och en skärm som fattar hur hårt man trycker\r\nVisst, det går att styra mobiler med fingar och korv (länk) men det vore praktiskt att kunna använda en penna till teckningar och underskrifter. Rent praktiskt borde man redan idag på befintliga telefoner kunna skapa en penna som över bluetooth skickar över hur hårt man trycker.\r\n## Uppgraderingsbara och standardiserade telefoner\r\nNu pratar jag inte om mjukvara (iaf inte enbart) utan hårdvara. Det borde gå bygga en komponentbaserad telefon där man kan uppgradera cpu, kamera, batteri, högtalare, tangentbord och skärm separat. På så sätt skulle det räcka med en modell med tillbehör för varje generation av telefoner istället för 5-10 modeller per tillverkar som bara har små förändringar. Guld vore förstås att kunna köpa t.ex kameran av canon, tangentbordet från razor eller logitech osv.\r\n## Headset med kamera\r\nSkulle göra det möjligt att filma hela sitt liv om man nu skulle vilja det. Mer praktiskt och användbart vore det dock för support dvs visa personen i andra änden vad du ser på, klart mer användbart än att visa sitt eget ansikte.\r\n## Betalningsmedel och nyckel\r\nDet finns lösningar idag för att betala med sms men det är rätt begränsat än så länge. Givetvis vill man kunna betala på krogen också och varför inte kunna ge pengar till en kompis med mobilen?\r\n\r\nSamma teknik för att hantera pengatransaktioner borde fungera även för låsa upp dörrar. Vad smidigt det vore att kunna skicka ett sms till kompisen som ger hans mobil rätt att låsa upp hemdörren. Genom att kombinera med t.ex tillåtna tider och datum samt möjlighet att välja hur många gånger nyckeln funkar har man dessutom nåt som är ofantligt mycket smidigare än vanliga nycklar eller nyckelkort.\r\n## 3D med kantutjämning (Anti-aliasing)\r\nNu börjar 3D grafiken se klart mycket bättre ut, men varför är kantutjämning så ovanligt, visst tar det mer prestanda men det ser ju otroligt mycket bättre ut och då offrar man ju hellre några polygoner.\r\n## Nostalgispel\r\nHela 80- och 90-talet skapades det grymma spel med begränsad hårdvara. Sett till prestanda och upplösning så borde det komma en enorm våg med gamla C64 och Amiga spel som anpassats till mobilen. Tror de flesta vana datorspelare skulle kunna räkna upp åtminstone 20 klassiska spel dom saknar på rak arm och rotar man lite i kassettlådan så skulle man nog komma upp i 100 lätt.\r\n", + "html": "Mobiltelefonens betydelse och användningsområden har förändrats kraftigt senaste 5 åren. Här spekulerar jag fritt på vad jag tror kommer närmaste åren och små irritationsmoment som borde gå lösa redan nu med befintlig teknik.
Tillbehör som pluggas in i usb porten
- Midi-interface – plugga in synthar, trummaskiner och annat både för in- och uppspelning på proffsnivå.
- Spelkontroller – handkontroller, joysticks och rattar men också mer skräddarsydda typ guitarrherogitarren
- Skrivare och skanners – gör telefonen till en riktig kontorsmaskin
- Tangentbord/möss – i kombination med extern skärm har man en liten dator i fickan.
Röststyrning/Artificiell intelligens
Nu pratar jag inte om den begränsade typ \"ring person\" eller \"starta program\" utan ett mer naturligt språk ungefär som om man pratar med nån i andra änden. Istället för att starta en applikation för att kolla avstånd mellan två orter eller hur långt du sprungit senaste rundan så kan du fråga. Det här lär bli bättre och bättre men än så länge är det lite sci-fi.
TV/Montitor-ut
Detta finns redan men inte speciellt omfattande. Tanken skulle vara att telefonen skulle bli en komplett media och underhållningshub även till hemmabio/fester osv. Som sagt, finns redan men inte särskilt utbrett.
Sladdar ersätts helt av WIFI/bluetooth eller motsvarande
All kommunikation med extern hårdvara som tv, musikanläggningar, skrivare och dyl kommer förstås bli trådlöst men det krävs en global standard och det är några år bort.
Optisk zoom
Det är helt klart dags för mobilkameran att få optisk zoom. Det måste gå bygga ett linssystem på bredden/höjden istället för djupet alternativt nån typ av holografiska linser (som man läste om i vetenskapens värld på i början av 90-talet..)
Puffskydd!
Det är ju hel t bizzart att det måste vara absolut vindstilla för att det ska gå prata. Hur svårt ska det vara att bygga in en skumgummibit framför mikrofonen?
Matt glas
Det är väldigt sällan man vill se sig själv när man styr telefonen.
Tunn i fickan men greppvänlig i handen
Det borde inte vara omöjligt att bygga en tunn och platt telefon som går att göra större/ mer greppvänlig när man håller den i handen. Detta borde gå göra utan att böja/vika skärmen som förstås kräver lite mer tekniska framsteg.
Smartare notifieringar
När telefonen ligger på ett bord och det ringer så låter ju vibratorn mer än ringsignalen och det är ju inte direkt ett harmoniskt ljud. Slå helt enkelt av vibratorn om telefonen ligger stilla horisontellt.
Ringsignaler borde analysera bakgrundsljudet och förstärka de frekvenser som behövs för att ljudet ska höras tydligt. Vet inte hur många gånger man bara hört ett skumt pip och upptäkt att resten av melodin försvunnit bland bakgrundsljudet.
Vibrationer fungerar bara när telefonen ligger bra mot huden men när man har telefonen i lösare tyg så känns inte vibrationer, telefonen borde istället studsa med större rörelser så att man upplever att nån rycker i tyget istället.
Stänga av displayen vid rätt tillfällen
När man visar nåt ett kvitto t.ex från ett sms ska ju telefonen inte stänga av sig. Helst vill man då kanske låsa touchdelen och låta den stanna i enbart visningsläge.
Fatta när telefonen är i fickan och minska antalet fickringningar, kanske genom nån typ av säkring som många pistoler har dvs det går inte skjuta om du inte håller handen runt kolven.
En elektriskt ledande penna och en skärm som fattar hur hårt man trycker
Visst, det går att styra mobiler med fingar och korv (länk) men det vore praktiskt att kunna använda en penna till teckningar och underskrifter. Rent praktiskt borde man redan idag på befintliga telefoner kunna skapa en penna som över bluetooth skickar över hur hårt man trycker.
Uppgraderingsbara och standardiserade telefoner
Nu pratar jag inte om mjukvara (iaf inte enbart) utan hårdvara. Det borde gå bygga en komponentbaserad telefon där man kan uppgradera cpu, kamera, batteri, högtalare, tangentbord och skärm separat. På så sätt skulle det räcka med en modell med tillbehör för varje generation av telefoner istället för 5-10 modeller per tillverkar som bara har små förändringar. Guld vore förstås att kunna köpa t.ex kameran av canon, tangentbordet från razor eller logitech osv.
Headset med kamera
Skulle göra det möjligt att filma hela sitt liv om man nu skulle vilja det. Mer praktiskt och användbart vore det dock för support dvs visa personen i andra änden vad du ser på, klart mer användbart än att visa sitt eget ansikte.
Betalningsmedel och nyckel
Det finns lösningar idag för att betala med sms men det är rätt begränsat än så länge. Givetvis vill man kunna betala på krogen också och varför inte kunna ge pengar till en kompis med mobilen?
Samma teknik för att hantera pengatransaktioner borde fungera även för låsa upp dörrar. Vad smidigt det vore att kunna skicka ett sms till kompisen som ger hans mobil rätt att låsa upp hemdörren. Genom att kombinera med t.ex tillåtna tider och datum samt möjlighet att välja hur många gånger nyckeln funkar har man dessutom nåt som är ofantligt mycket smidigare än vanliga nycklar eller nyckelkort.
3D med kantutjämning (Anti-aliasing)
Nu börjar 3D grafiken se klart mycket bättre ut, men varför är kantutjämning så ovanligt, visst tar det mer prestanda men det ser ju otroligt mycket bättre ut och då offrar man ju hellre några polygoner.
Nostalgispel
Hela 80- och 90-talet skapades det grymma spel med begränsad hårdvara. Sett till prestanda och upplösning så borde det komma en enorm våg med gamla C64 och Amiga spel som anpassats till mobilen. Tror de flesta vana datorspelare skulle kunna räkna upp åtminstone 20 klassiska spel dom saknar på rak arm och rotar man lite i kassettlådan så skulle man nog komma upp i 100 lätt.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Framtidens mobiltelefon", + "meta_description": "", + "author_id": 1089, + "created_at": 1283169751000, + "created_by": 1089, + "updated_at": 1283169751000, + "updated_by": 1089, + "published_at": 1283169751000, + "published_by": 1089 + }, + { + "id": 438, + "title": "SoundCloud - bästa molntjänsten för egen musik", + "slug": "soundcloud---basta-molntjansten-for-egen-musik", + "markdown": "\r\n\r\nIbland hittar man en ny tjänst och inser att de har gjort allt rätt. SoundCloud är precis en sån tjänst. På SoundCloud kan man ladda upp ljud och egen musik för enkel distribution, istället för att ladda upp på Yousendit eller Sprend som många gör idag. Fördelen med SoundCloud är att istället för lösryckta filer så får du allt samlat på ett ställe, med en bra spelare o.s.v. De stora fördelarna med SoundCloud jämfört med andra liknande tjänster:\r\nBra gratisabonnemang med 120 minuters utrymme (nästa steg ger 240 minuter och kostar €29 per år)Byggt med modern webbteknik, allra mest imponerande är spelaren som ser ut som Flash men är gjord helt i HTML och JavaScript, och fungerar utmärkt t.ex. på iPhone!Bra embedfunktioner, inklusive stöd för Wordpressbloggar som ligger på Wordpress.comAPI baserat på REST med enkla HTTP-liknande kommandon för att hämta och ändra information, istället för krångliga web services eller (huga!) C-bibliotek.Officiell iPhone-app (kostar 7 kronor) och tredjeparts Android-app. Behövs egentligen inte eftersom webbspelaren funkar fint, men är förstås enklare och snyggare.Direkta kopplingar till andra webbtjänster och applikationer där man direkt kan ladda upp sina alster till SoundCloud. Ett sånt exempel är AmpKit för iPhone.Sociala funktioner med användare, följare och grupper för att hitta nya lyssnare och nya produktioner.\r\nSåhär ser den inbäddade spelaren ut:\r\n\r\n\r\n Anders Bornholm - To Tame a Land Cover by osiris8\r\n\r\n![Bild](http://tekniken.nu/uploads/634199711763660560-soundcloud.PNG)", + "html": "Ibland hittar man en ny tjänst och inser att de har gjort allt rätt. SoundCloud är precis en sån tjänst. På SoundCloud kan man ladda upp ljud och egen musik för enkel distribution, istället för att ladda upp på Yousendit eller Sprend som många gör idag. Fördelen med SoundCloud är att istället för lösryckta filer så får du allt samlat på ett ställe, med en bra spelare o.s.v. De stora fördelarna med SoundCloud jämfört med andra liknande tjänster:
- Bra gratisabonnemang med 120 minuters utrymme (nästa steg ger 240 minuter och kostar €29 per år)
- Byggt med modern webbteknik, allra mest imponerande är spelaren som ser ut som Flash men är gjord helt i HTML och JavaScript, och fungerar utmärkt t.ex. på iPhone!
- Bra embedfunktioner, inklusive stöd för Wordpressbloggar som ligger på Wordpress.com
- API baserat på REST med enkla HTTP-liknande kommandon för att hämta och ändra information, istället för krångliga web services eller (huga!) C-bibliotek.
- Officiell iPhone-app (kostar 7 kronor) och tredjeparts Android-app. Behövs egentligen inte eftersom webbspelaren funkar fint, men är förstås enklare och snyggare.
- Direkta kopplingar till andra webbtjänster och applikationer där man direkt kan ladda upp sina alster till SoundCloud. Ett sånt exempel är AmpKit för iPhone.
- Sociala funktioner med användare, följare och grupper för att hitta nya lyssnare och nya produktioner.
Såhär ser den inbäddade spelaren ut:
Anders Bornholm - To Tame a Land Cover by osiris8
Igår släpptes så den första betaversionen av iOS 4.2 för iPad som möjliggör ett svenskt tangentbord och multitasking. Till slut är därmed iPad en helt mogen produkt även i Sverige. Att använda den utan svenskt tangentbord och multitasking har varit kanon men något knöligt.
Vad är då poängen med en iPad - vad ska man ha den till? Ja - Hm. Den löser inga gamla problem men den har skapat sitt eget självändamål. I mitt hem finns det redan en hel del datorer (alla macar visar det sig - jag var ju en PC förut men nu är jag tydligen en Mac). När man har behov av att surfa finns det oftast en dator att använda sig av men ändå kommer iPad fram hela tiden - nu har jag haft den i någon månad så nyhetens behag borde ha lagt sig vid det här laget.
Jag tänker lite på det som hände i köken i mitten på 90 talet - ni kommer ihåg - när morgon-tv-programmen kom - just det - köks-TVn. iPaden skulle jag säga är en hybrid av soff-surfare och köksbords-surfare. iPad har skapat ett nytt användningsområde eller nytt medium som är här för att stanna. I princip alla hårdvarutillverkare kämpar mot klockan för att hinna få ut sina alternativ lagom till julhandeln. Apple ryktas komma med en något mindre variant som troligtvis kommer vara billigare och vara som hybrid mellan iPod Touch och iPad. Det är välkommet men formatet 9,7 tum är helt lagom tycker jag.
Mina primära användningsområden
- Frukostdator. Surfa på nyheter vid frukostbordet. Perfekt användningsområde! Laptopen är för klumpig och känslig. Här önskar jag att Svd skulle släppa en App som tar deras tryckta version men i iPad format - precis som Wired har gjort med mycket gott resultat.
- Soffdator. Surfa i TV-soffan - här kan man tänka sig att laptopen skulle funka lika bra, men eftersom paddan startar så snabbt och inte har någon fläkt eller störande ljud för sig är den klockren som soff-dator.
- Arbetstillbehör. Mail- och kalendertillbehör. Perfekt när man jobbar vid den vanliga datorn är att ha mailen och kalendern lättillgängliga på iPad. Mailklienten är riktigt bra och har allt man behöver för det vardagliga.
- Pappaledighetsdator. Ha med till parken - detta kan ju upplevas som lite kontroversiellt men när man är pappaledig finns det faktiskt vissa tidpunkter då man faktiskt är ledig. Problemet är att tidpunkterna inte riktigt kommer i följd och man kan inte riktigt räkna med dem men dom finns där. Då är iPad perfekt sätt att snabbt utnyttja en kort paus.
- Barnprograms-TV. När barnen ska försöka sova eller man själv behöver en kort paus är iPad det perfekta barnprograms-TVn. Oavsett var du är - i bilen, på stranden, i sängen eller i soffan funkar det alltid att ta fram ett avsnitt av Fåret Shaun eller Pippi på Youtube. Iphone är helt ok för detta syftet om man bara har ett barn som ska titta men för två barn blir det för mycket bråk om den lilla telefonen - plus att man ofta behöver dom här pauserna när man behöver ta ett viktigt samtal.
- Mediacenter/multifjärrkontroll. Om man har nöjet att ha en Mac-mini kopplad till sin hemmabio har man nu i sin hand den perfekta multifjärrkontrollen. Installera Plex/nine på mac-mini och köp programmet PLEX på App store och du har hela ditt musik, film och tv bibliotek tillgängligt överallt där du har tillgång till WIFI. Även 3G men bildkvaliten är för dålig för att det ska vara njutbart. Med hjälp av denna ultimata kombination kan du nu antingen välja film/tv-avsnitt i soffan eller välja att titta på hela avsnittet i iPad från sängen. Du kanske börjar titta på en film i soffan på stora TVn men går sen till sängen och lägger barnen och kan sedan titta vidare precis där du slutade.
- Powerpoint-platta. På Apple-svenska heter Powerpoint Keynote men det funkar exakt likadant. Dock är den anpassade varianten av Keynote riktigt bra på iPad. Här kommer verkligen multi-touch till sin rätt. Att flytta på rubriker, bilder och grafer, att gemensamt bygga upp en presentation genom att skapa den tillsammans med en iPad är fantastiskt kul och enkelt. Idén med att skicka runt en platta ger glädje på ett annat sätt än att skjuta en laptop mellan två personer.
- Spelplatta. Självklart är det också en grym spel-dator om man har tid. Jag har endast spelat Real Racing, Solitaire och Risk så jag kan inte säga att det är mitt primära syfte men jag är säker på att jag hade resonerat annorlunda för tio år sen.
Några inte så lämpliga användningsområden
- Pendlings-TV - Jag tog med mig \"paddan\" på tunnelbanan en morgon och började titta på ett avsnitt av (lagligt nedladdad) Entourage. Det visade sig vara en rätt pinsam historia då det är betydligt mycket fler sex-scener än man tror och folk runt omkring dig uppfattar bra vad som händer i ögonvrån. Nä - där är iPhone 4 ett bättre och behändigare val.
- Ordbehandlare - nu har jag precis installerat senaste uppdateringen så det här kanske ändrar sig - men att skriva långa texter på iPad är ingen höjdare. Man behöver då ha ett externt tangentbord och då faller lite poängen och man kan hellre skaffa sig en riktigt dator.
- e-Bokläsare - I den svenska bokaffären i iBook finns det inte mycket att hämta förutom några riktigt gamla gratis \"open-source\" böcker. Här är det som vanligt rättigheterna som är problemet och det kommer antagligen/förhoppningsvis lösa sig till lanseringen i Sverige. Om man har ett amerikanskt iTunes konto så går det däremot utmärkt att köpa böcker från tusentals internationella författare. Att läsa på en iPad är dock inte vad jag hade hoppats på - man blir ganska snabbt uttråkad och läshastigheten är inte den bästa på en skärm. Man vill hellre surfa. Böcker passar än så länge bättre på papper. ;)
Några önskemål på förbättringar
- Fotoorganiserare - Det tidsödande jobbet att sortera, välja ut och ta bort bilder från sitt fotoalbum hade varit väldigt bra om det kunde göras direkt i foto-applikationen på iPad (och iPhone också) - här hoppas jag att Apple jobbar vidare. Kartfunktionen och att iPhoto ansikten i fotobiblioteket visas är kanonkul när man snabbt ska hitta bilder i sitt arkiv.
- Kalendern - ger en väldigt bra översikt och har till skillnad från sin iPhone motsvarighet även veckovy. Att Apple har struntat i multitouch funktioner för att bläddra mellan dagar och zooma mellan dag, vecka och månad förstår jag inte alls. Det går inte ens att klicka på en tidpunkt för att boka ny tid eller flytta på en befintlig bokning vilket hade varit helt fantastiskt. Jag hoppas att Apple har en kommande uppdatering på kalendern för i 4.2 finns det tyvärr ännu inget nytt på den fronten.
Vad är nytt i iOS 4.2?
- Multitasking (växla mellan program på samma sätt som i iOS 4 på iPhone). Nu kan man köra Spotify och spel samtidigt.
- Svenskt tangentbord - äntligen!
- AirPlay - skicka musik och film trådlöst till högtalare och tv. Detta går inte att testa än.
- Game Center - samla poäng när du spelar dataspel och dela med dina kompisar. Tyvärr är själva registreringsprocessen och bjuda in kompisar inte så smidig som den kunde varit (facebook-koppling hade varit att föredra).
- Justering av ljusstyrka i snabbmenyn - väldigt praktiskt vid godnattstunden!
- Ljud av-knappen är numera en ljud av-knapp.
- Att låsa riktningen på iPad gör man nu precis som på iPhone i snabbmenyn.
- Mappar på hemskärmen - äntligen får man lite struktur!
- Utskrift via trådlös uppkoppling - jag har inte riktigt saknat den här men kanske att man kan skriva ut bilder eller mail - tja..
- Söka direkt på sidor i Safari - längst ner finns det numera en sökbar - väldigt bra för längre sidor.
Vilken version ska man välja?
När du står inför valet mellan WIFI eller 3G så säger jag helt klart 3G. Användningsområdet sträcker sig långt mycket längre än till soffan och sängen. Att ha med sig Internet på platta är en underbar känsla och slipper du krånglet med tekniken eller begräsningar till olika WIFI-nätverk så är det helt klart värt det. Om du tecknar ett tvillingabbonamang på Telia som i dagsläget kostar 40kr/mån så får du surfa på samma abonnemang som ditt vanliga abonnemang och har du obegränsad data på det är du home safe. Obs, för att använda 3G på iPad behöver du ställa in en s.k APN vilket tidigare gick att göra direkt i iPad inställningar men som nu behöver en s.k mobileprovision fil som installeras via iTunes. Mer om det inom kort.
Hur mycket minne behöver man?
Jag valde 64 GB men det behövs absolut inte mer än 32GB. Det mesta du behöver går att hämta trådlöst förutom bildbiblioteket som bör ha en hel del plats då bilderna skalas om till att passa iPads något större skärm.
När kommer iPad?
Ingen vet men numera är Apple i kapp i sin produktion med efterfrågan vilket tyder på att den är redo att lanseras på nya marknader. Troligtvis kommer den släppas någon gång i oktober/november i samband med att den skarpa versionen av iOS 4.2 släpps.
Tills dess går det bra att köpa paddan hos svenska importörer t ex www.ventor.se som jag köpte ifrån.
Jag har tidigare bloggat en del om tekniken i Windows Phone 7, men eftersom nästan alla rykten och nyheter kommit från den amerikanska sidan så har det tunt om information om en svensk lansering.
http://www.winmobile.se har intervjuat Peter Wissinger som är nordisk affärsområdeschef för windows phone. Läser man intervjun och skummar lite i Peters egen blogg http://wissinger.wordpress.com/ så verkar det definitivt som väntan snart är över.
Det kommer säljas telefoner i Sverige i oktober (YES!) men exakt datum är lite mer flytande.
Operativet kommer släppas på engelska här, men telefonen stöder svenska tecken. Tangenbordet kräver dock att man håller nere t.ex ”O” för att välja ”Ö” och ”A” för Å/Ä. Förhoppningsvis kommer nya tangentbordslayouter senare.
Tjänsterna som Xbox Live och Zune kommer förmodligen vara kraftigt begränsade vid lanseringen eftersom sverige inte är en av de officella lanseringsländerna. Marketplace lär sannolikt också ha sina begränsningar vid lanseringen.
Telefonen kommer bara stöda GSM och motsvarande 3G-variant, och inte CDMA. För oss i Sverige är det inga problem eftersom vi inte har några CDMA-nät. Däremot är det en stor nyhet i USA eftersom vissa operatörer bara har stöd för CDMA.
Intervjun innehåller också dessa spännande ord som kan betyda nästan vad som helst :
”Ja, det är helt enkelt så att vi vill överraska både vad gäller mjukvara och hårdvara Jag kan väl säga så pass mycket att det vid lansering kommer mer nyheter om Windows Phone 7 som vi ännu inte pratat om” -- Peter Wissinger
Läs hela intervjun här http://www.winmobile.se/index.php/?p=1480
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Sverigepremiär för Windows Phone 7", + "meta_description": "", + "author_id": 1089, + "created_at": 1285154158000, + "created_by": 1089, + "updated_at": 1285154158000, + "updated_by": 1089, + "published_at": 1285154158000, + "published_by": 1089 + }, + { + "id": 446, + "title": "Hover Zoom - briljant lightbox-tillägg till Chrome", + "slug": "hover-zoom---briljant-lightbox-tillagg-till-chrome", + "markdown": "\r\n\r\nLightboxar och fiffiga mouse over-funktioner som automatiskt visar en större version av en bild kan spara många klick när man tittar på bilder i ett fotoalbum eller bara vill ha en förhandsvy. Hittills har man varit beroende av att den som har byggt en webbplats också har implementerat en sån funktion, men med det nya smart tillägget Hoover Zoom till Chrome så kan man få funktionen i princip var som helst. Jag installerade det lite som en kul grej men jag upptäcker att jag har nytta av det varje dag, framför allt på Flickr och Facebook. Funkar fint även här på Tekniken!\r\n\r\n\r\n\r\n\r\n\r\nInstallera Hoover Zoom här.\r\n\r\n![Bild](http://tekniken.nu/uploads/634217883957615986-hoverzoom2.png)", + "html": "Lightboxar och fiffiga mouse over-funktioner som automatiskt visar en större version av en bild kan spara många klick när man tittar på bilder i ett fotoalbum eller bara vill ha en förhandsvy. Hittills har man varit beroende av att den som har byggt en webbplats också har implementerat en sån funktion, men med det nya smart tillägget Hoover Zoom till Chrome så kan man få funktionen i princip var som helst. Jag installerade det lite som en kul grej men jag upptäcker att jag har nytta av det varje dag, framför allt på Flickr och Facebook. Funkar fint även här på Tekniken!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Hover Zoom - briljant lightbox-tillägg till Chrome", + "meta_description": "", + "author_id": 6, + "created_at": 1286191594000, + "created_by": 6, + "updated_at": 1286191594000, + "updated_by": 6, + "published_at": 1286191594000, + "published_by": 6 + }, + { + "id": 447, + "title": "Batteriproblem i iPhone 4?", + "slug": "batteriproblem-i-iphone-4", + "markdown": "\r\n\r\nHar du också lagt telefonen på laddning till 100% för att efter några timmar, upptäcka att du endast har en fjärdedels batteritid kvar? Troligtvis är det någon av dina applikationer som orsakar detta. Nedan finner du ett par enkla åtgärder som hjälpte mig att lösa problemet:\r\nStarta multi-tasking – Dubbelklicka på Home-knappen. Här får du upp alla dina apps som körs i multi-taskingläge.Håll fingret intryck på en av dina appar tills ikonerna börjar vobbla. Nu finns det en röd liten symbol längst upp till vänster på alla applikationerna. För att stänga din trycker du på den röda symbolen (jag stängde samtliga):Alternativt: starta om telefonen. Vänta tills telefonen startats om. Ladda upp telefonen igen och du är nu klar! Hoppas detta hjälpte även dig!\r\nÖvriga tips för att maximera batteri-tiden:\r\nStäng av 3G och använd Edge (lägre bandbredd).Avaktivera Push-mail och sätt synkningen på manuell eller en vald tidsintervall.Stäng av Wifi och aktivera det endast när du behöver använda det.Stäng av Location Services och aktivera endast efter behov.Stäng av Bluetooth.Sänk din Brightness.Lås din iPhone när du inte använder den och sätt Auto-Lock på 1 minut (som är det minsta).\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/634220391107474738-image001.jpg@01CB65FE.6D1E9350__image001.jpg)", + "html": "Har du också lagt telefonen på laddning till 100% för att efter några timmar, upptäcka att du endast har en fjärdedels batteritid kvar? Troligtvis är det någon av dina applikationer som orsakar detta. Nedan finner du ett par enkla åtgärder som hjälpte mig att lösa problemet:
- Starta multi-tasking – Dubbelklicka på Home-knappen. Här får du upp alla dina apps som körs i multi-taskingläge.
- Håll fingret intryck på en av dina appar tills ikonerna börjar vobbla. Nu finns det en röd liten symbol längst upp till vänster på alla applikationerna. För att stänga din trycker du på den röda symbolen (jag stängde samtliga):
- Alternativt: starta om telefonen. Vänta tills telefonen startats om. Ladda upp telefonen igen och du är nu klar! Hoppas detta hjälpte även dig!
Övriga tips för att maximera batteri-tiden:
- Stäng av 3G och använd Edge (lägre bandbredd).
- Avaktivera Push-mail och sätt synkningen på manuell eller en vald tidsintervall.
- Stäng av Wifi och aktivera det endast när du behöver använda det.
- Stäng av Location Services och aktivera endast efter behov.
- Stäng av Bluetooth.
- Sänk din Brightness.
- Lås din iPhone när du inte använder den och sätt Auto-Lock på 1 minut (som är det minsta).
Nu har betaversionen av ASP.NET MVC 3-ramverket släpps. Tidigare fanns endast en preview men nu är det en äkta beta med go live-licens, vilket innebär att den räknas som tillräckligt stabil och tillförlitlig att faktiskt bygga produktionssajter med.
En av nyheterna i MVC 3 jämfört med MVC 2 är stödet för Razor motorn som gör vyerna enklare att koda för oss vana C#-programmerare som inte vill lära oss ytterligare ett nytt taggbaserat språk utan föredrar vanliga if-else och foreach.
MVC har gått från att kännas relativt experimentellt i första versionen till genomtänkt och användbar på bara drygt ett år.
Inlärningströskeln för den som känner sig lagom avancerad med webforms var rätt hög med MVC 1.0 men tack vare en nu ganska mogen, logisk och genomtänkt struktur blir man snabbt produktiv.
Läs mer om nyheterna i betaversionen:
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "ASP.NET MVC 3 nu i betaversion", + "meta_description": "", + "author_id": 1089, + "created_at": 1286442311000, + "created_by": 1089, + "updated_at": 1286442311000, + "updated_by": 1089, + "published_at": 1286442311000, + "published_by": 1089 + }, + { + "id": 450, + "title": "Tips för en fungerande community", + "slug": "tips-for-en-fungerande-community", + "markdown": "\r\n\r\nEn ganska vanlig idé när man skapar en ny community är att bara den kommer på plats så kommer den sakta att börja leva. Man bygger ofta rigorösa funktioner för att hantera sökning och filtrering i de enorma informationsmängder som ser framför sig, tillsammans med funktioner för att anmäla opassande innehåll, spåra IP-adresser och liknande. Man förväntar sig att ens fantastiska idé ska sprida sig som ringar på vattnet av sig själv.\r\n\r\nInget kunde vara mer fel. Oavsett om det gäller ett enkelt diskussionsforum eller nästa Facebook så är framgångsrika communities ett resultat av hårt arbete (och ibland en del tur). Här är några tips på hur man ska fokusera på rätt saker:\r\n\r\n1) Tänk på communityn som om den var en bondgård. Det spelar ingen roll om du har en perfekt plöjd åker, sår du ingenting och ingen rensar ogräs så kommer inget värt att skörda att växa där. I början kommer skörden vara mindre än det du sådde, det är helt normalt.\r\n\r\n2) Hitta eldsjälen. Du själv eller någon annan måste brinna för communityn och vara villig att lägga ner mycket tid. Det handlar om att starta diskussioner, svara på frågor, synas och ge communityn en personlig prägel, och även att marknadsföra externt (t.ex. genom att synas i andra communities). Det är särskilt viktigt i början, senare kan medlemmarna sköta mer av det jobbet.\r\n\r\n3) Lyft rätt medlemmar. Vissa medlemmar är viktigare än andra, och det är viktigt att de får erkännande, t.ex. som officiella ambassadörer eller experter. Glöm dock inte att alla har något att bidra med.\r\n\r\n4) Sätt medlemmarna i beslutsposition. Ett stort medbestämmande stimulerar till aktivitet. Dessutom avlastar det den som driver communityn, d.v.s. du.\r\n\r\n5) Stimulera relationerna mellan medlemmarna.Utan relationer blir en community i bästa fall bara en marknad där man byter kunskap och tjänster med varandra utan engagemang. Då blir det också lätt att medlemmarna bara byter marknad, inget håller dem kvar.\r\n\r\n6) Hitta det som motiverar aktivitet. Försök lyssna och analysera och hitta det som triggar medlemmarna att engagera sig mer. Blanda dock inte ihop aktivitet med ändlösa och meningslösa diskussioner.\r\n\r\n7) En bra community ger medlemmarna möjlighet att utvecklas som personer. Det kan vara genom ett större anseende, de känslomässiga band som knyts mellan medlemmarna – något som ger effekt i livet utanför communityn.\r\n\r\n8) Var tydlig. Ingenting säger att en community måste vara en demokrati där beslut fattas via konsensus, men det kommer att bli mycket problem om medlemmarna känner sig orättvist eller godtyckligt behandlade. Var tydlig och konsekvent, och ha en uppsättning regler som är lätt åtkomliga där det framgår vad som är tillåtet och inte i form av innehåll, uppförande gentemot andra medlemmar, \r\n\r\nInspiration hämtad från bland annat 9 ways to build a Twitter community with substance och 10 key guiding principles for online community building and engagement via Jerry Silfwer (a.k.a Doktor Spinn).\r\n\r\n![Bild](http://tekniken.nu/uploads/634221275651700170-community-712702.jpg)", + "html": "En ganska vanlig idé när man skapar en ny community är att bara den kommer på plats så kommer den sakta att börja leva. Man bygger ofta rigorösa funktioner för att hantera sökning och filtrering i de enorma informationsmängder som ser framför sig, tillsammans med funktioner för att anmäla opassande innehåll, spåra IP-adresser och liknande. Man förväntar sig att ens fantastiska idé ska sprida sig som ringar på vattnet av sig själv.
Inget kunde vara mer fel. Oavsett om det gäller ett enkelt diskussionsforum eller nästa Facebook så är framgångsrika communities ett resultat av hårt arbete (och ibland en del tur). Här är några tips på hur man ska fokusera på rätt saker:
1) Tänk på communityn som om den var en bondgård. Det spelar ingen roll om du har en perfekt plöjd åker, sår du ingenting och ingen rensar ogräs så kommer inget värt att skörda att växa där. I början kommer skörden vara mindre än det du sådde, det är helt normalt.
2) Hitta eldsjälen. Du själv eller någon annan måste brinna för communityn och vara villig att lägga ner mycket tid. Det handlar om att starta diskussioner, svara på frågor, synas och ge communityn en personlig prägel, och även att marknadsföra externt (t.ex. genom att synas i andra communities). Det är särskilt viktigt i början, senare kan medlemmarna sköta mer av det jobbet.
3) Lyft rätt medlemmar. Vissa medlemmar är viktigare än andra, och det är viktigt att de får erkännande, t.ex. som officiella ambassadörer eller experter. Glöm dock inte att alla har något att bidra med.
4) Sätt medlemmarna i beslutsposition. Ett stort medbestämmande stimulerar till aktivitet. Dessutom avlastar det den som driver communityn, d.v.s. du.
5) Stimulera relationerna mellan medlemmarna.Utan relationer blir en community i bästa fall bara en marknad där man byter kunskap och tjänster med varandra utan engagemang. Då blir det också lätt att medlemmarna bara byter marknad, inget håller dem kvar.
6) Hitta det som motiverar aktivitet. Försök lyssna och analysera och hitta det som triggar medlemmarna att engagera sig mer. Blanda dock inte ihop aktivitet med ändlösa och meningslösa diskussioner.
7) En bra community ger medlemmarna möjlighet att utvecklas som personer. Det kan vara genom ett större anseende, de känslomässiga band som knyts mellan medlemmarna – något som ger effekt i livet utanför communityn.
8) Var tydlig. Ingenting säger att en community måste vara en demokrati där beslut fattas via konsensus, men det kommer att bli mycket problem om medlemmarna känner sig orättvist eller godtyckligt behandlade. Var tydlig och konsekvent, och ha en uppsättning regler som är lätt åtkomliga där det framgår vad som är tillåtet och inte i form av innehåll, uppförande gentemot andra medlemmar,
Inspiration hämtad från bland annat 9 ways to build a Twitter community with substance och 10 key guiding principles for online community building and engagement via Jerry Silfwer (a.k.a Doktor Spinn).
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Tips för en fungerande community", + "meta_description": "", + "author_id": 6, + "created_at": 1286530764000, + "created_by": 6, + "updated_at": 1286530764000, + "updated_by": 6, + "published_at": 1286530764000, + "published_by": 6 + }, + { + "id": 451, + "title": "Förslag på ny standard: högerklicka på logga och få högupplöst fil", + "slug": "forslag-pa-ny-standard-hogerklicka-pa-logga-och-fa-hogupplost-fil", + "markdown": "\r\n\r\nOfta behöver man ett företags logotyp för att infoga i mallar, presentationer, mail o.s.v. Tyvärr är det ofta krångligt att hitta fram till högupplösta versioner, trots att vettiga marknadsavdelningar vill att man hellre använder de högupplösta varianterna av logotypen än att ta en dålig jpg från hemsidan. Det är rätt vanligt att man helt enkelt går in på företagets officiella hemsida och sparar ner logotypen från ramverket för att det är enklast. Det blir inte speciellt bra resultat, särskilt inte på utskrifter.\r\n\r\nSedan länge finns det en de-facto standard som säger att man alltid ska kunna klicka på logotypen för att komma tillbaka till startsidan och numera är det så vedertaget att många därför tar bort Start från navigationer och menyer. Jag vill härmed föreslå ett tillägg till denna standard.\r\n\r\nMitt förslag till alla webbutvecklare där ute är att göra det möjligt för besökaren att högerklicka på logotypen och då få en fråga om användaren vill ladda ner en högupplöst variant av logotypen och då antingen leverera filen direkt eller länka till olika varianter av logotypen inklusive riktlinjer för användningen.\r\n\r\nEnklaste implementationen är att lägga in följande kod för att länka vidare till det rätta stället i strukturen, i vårt fall ligger logotypen under /press/logos_and_images.\r\n\r\noncontextmenu=\"if (confirm('Vill du ladda ner vår högupplösta logotyp?')) { document.location='/press/logos_and_images'; return false}\"\r\n\r\nalternativt att skicka EPS direkt:\r\n\r\noncontextmenu=\"if (confirm('Vill du ladda ner vår logotyp i EPS format?')){ document.location='/images/logo.eps'; return false}\"\r\n\r\nPusha om du håller med om att det ska bli en standard! Eller kommentera nedan för tillägg/justeringar.\r\n\r\n![Bild](http://tekniken.nu/uploads/634224974418618650-800px-Coca-Cola_logo.svg.png)", + "html": "Ofta behöver man ett företags logotyp för att infoga i mallar, presentationer, mail o.s.v. Tyvärr är det ofta krångligt att hitta fram till högupplösta versioner, trots att vettiga marknadsavdelningar vill att man hellre använder de högupplösta varianterna av logotypen än att ta en dålig jpg från hemsidan. Det är rätt vanligt att man helt enkelt går in på företagets officiella hemsida och sparar ner logotypen från ramverket för att det är enklast. Det blir inte speciellt bra resultat, särskilt inte på utskrifter.
Sedan länge finns det en de-facto standard som säger att man alltid ska kunna klicka på logotypen för att komma tillbaka till startsidan och numera är det så vedertaget att många därför tar bort Start från navigationer och menyer. Jag vill härmed föreslå ett tillägg till denna standard.
Mitt förslag till alla webbutvecklare där ute är att göra det möjligt för besökaren att högerklicka på logotypen och då få en fråga om användaren vill ladda ner en högupplöst variant av logotypen och då antingen leverera filen direkt eller länka till olika varianter av logotypen inklusive riktlinjer för användningen.
Enklaste implementationen är att lägga in följande kod för att länka vidare till det rätta stället i strukturen, i vårt fall ligger logotypen under /press/logos_and_images.
oncontextmenu=\"if (confirm('Vill du ladda ner vår högupplösta logotyp?')) { document.location='/press/logos_and_images'; return false}\"
alternativt att skicka EPS direkt:
oncontextmenu=\"if (confirm('Vill du ladda ner vår logotyp i EPS format?')){ document.location='/images/logo.eps'; return false}\"
Pusha om du håller med om att det ska bli en standard! Eller kommentera nedan för tillägg/justeringar.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Förslag på ny standard: högerklicka på logga och få högupplöst fil", + "meta_description": "", + "author_id": 1087, + "created_at": 1286900641000, + "created_by": 1087, + "updated_at": 1286900641000, + "updated_by": 1087, + "published_at": 1286900641000, + "published_by": 1087 + }, + { + "id": 452, + "title": "Att köpa en Windows Phone 7", + "slug": "att-kopa-en-windows-phone-7", + "markdown": "\r\n\r\nEftersom jag är på väg att köpa en Windows Phone 7 telefon så har jag förberett mig genom att titta på vilka telefoner som finns och vilka parametrar man bör ta hänsyn till.\r\n\r\n\r\n\r\nDen 21:a oktober går det att köpa telefoner i Sverige. Här är de parametrar man bör ta hänsyn till och lite grundinformation om de modeller som går att köpa.\r\n\r\nEn viktig punkt att ta hänsyn till är om man som tidig svensk kan leva med begränsningar som gäller de länder som inte är officiella lanseringsländer. Här sticker några grejer ut som t.ex inga svenska menyer, tangentbordet har ingen svensk rättstavning, onlinetjänsterna kan vara begränsade o.s.v. Dessa problem och begränsningar kommer mest sannolikt lösas inom ett halvår eller så men det kommer förstås vara jobbigare i början.\r\n## Version av operativ systemet\r\nDå alla telefoner kommer ha samma version av operativsystemet och det inte finns nån splittring som t.ex Android har så behöver man inte välja telefon baserat på vilken version den har eller hur bra företaget är på att uppdatera versioner på sina existerande telefoner. Operativsystemet är på engelska just nu.\r\n## Mjukvara som skiljer sig mellan tillverkarna\r\nTillverkarna har möjlighet att skicka med specifik mjukvara men har inte möjlighet att ändra själva grundfunktionerna i telefonen eller gräsnittet vilket gör att man inte behöver välja bort en telefon om man inte gillar hur dom anpassar sina gränsnitt. Vilka applikationer som följer med kan dock ge tillverkarna lite extra poäng om dom lyckas leverera nåt unikt som inte går att köpa löst.\r\n\r\nHTC har byggt en hub som liknar deras vanliga Sense-gränsnitt. Här har dom fläskat på med mängder av animeringar för den som vill flasha lite med sin telefon.\r\n\r\nLG har byggt in eget stöd för DLNA, dvs media delning samt en augmented reality applikation och röst-till-text för att kunna t.ex twittra genom att tala med telefonen.\r\n## Prestanda\r\nHär kan det skilja sig på ett par punkter och det kommer krävas en del benchmarks för att hitta en tydlig vinnare bland tillverkarna. Det som främst kan skilja sig är mängden ram, hastigheten på flashminnet och grafikchipset. Här får man vänta på benchmarks innan man hittar vinnaren. Av de tidiga recensioner jag läst och videos jag sett flyter dock allt bra på alla telefonerna.\r\n## Lagringsutrymme\r\nMininivån är satt lågt på 8 GB utrymme på telefonerna och tidiga rykten har visat att de flesta telefonerna kommer stanna på mininivån, en klar showstopper för de flesta. En del telefoner kommer gå att utöka med SD-kort. Av lanseringstelefonerna är det bara LG som verkar komma med 16 GB som standard. Då det finns 25 GB utrymme på skydrive att synka till gratis så kanske 8 GB kan räcka men det kommer kännas trångt.\r\n## Skärm\r\nUpplösningen kommer vara samma bland alla telefoner men kvaliten och storleken kommer variera. Kvalitetsmässigt verkar Samsung ta täten genom sin amoled på sin Omnia 7. Storleken på skärmen kommer ju avgöra storleken på telefonen så här får man hitta en bra balans och det krävs nog att man håller telefonen i handen innan man bestämmer sig.\r\n## Byggkvalitet\r\nKänslan är ju viktig, det ska inte knaka i fogarna när man klämmer lite på telefonen och här får man antingen läsa recensioner eller testa klämma lite själv på telefonerna. Knapparnas kvalitet och känsla är ju också viktig eftersom en hel del av navigationen på WP7 går via de tre standardknapparna under skärmen.\r\n## Utseende\r\nGivetvis en smaksak, här så har alla tillverkarna möjlighet att göra nåt snyggt genom att skala ner allt till gärna ett minimum och låta kanterna vara kantiga. Här tycker jag Samsungs Omnia 7 är riktigt snygg.\r\n## Tangentbord eller inte\r\nJag värdesätter en tunnare mobil framför en med fysiskt tangentbord. Mjukvarutangentbordet kommer sannolikt också att gå uppgradera till åäö i framtiden så risken är stor att hårdvarutangentbordet kommer kännas osmidigt snart. Vid lanseringen kommer ingen telefon ha hårdvarutangentbord men fler telefoner lär dyka upp senare.\r\n## Kamera/video\r\nHär kan det skilja sig både upplösning, blixt och funktioner. 5 megapixel bilder är mininum och alla kan spela in 720p video. Här har jag sett tidiga tester som tyvärr visar att samsung komprimerar videon lite väl hårt samt tappar lite frames.\r\n## Pris\r\nDet lär inte vara speciellt billiga mobiler eftersom minsta specifikationen säger att alla kommer vara i övre prestandasegmentet.\r\n## 4 telefoner\r\nVid lanseringen i sverige kommer det att finnnas 4 olika telefoner att köpa från 3 olika tillverkare. Här är listan samt det som som sticker ut hos varje mobil:\r\n\r\nHTC 7 Trophy – sannolikt billigaste\r\n\r\nHTC 7 Mozart – 8 MP kamera, Xenon blixt\r\n\r\nLG Optimus 7 – 16GB lagringsutrymme som standard\r\n\r\nSamsung Omnia 7 – exklusiv för operatören 3. Har 4 tum super amoled skärm\r\n## Slutsats\r\nTelefonerna är väldigt lika varann både funktions- och utseendemässigt och det är i princip en smaksak vilken telefon man fastnar för. Jag har själv fastnat för Samsung Omnia 7 pga av dess fina skärm och kantiga utseende men får se om det går att köpa den olåst eller låsa upp den hos 3.\r\n\r\nOrkar man vänta så lär det dyka upp fler modeller närmaste månaderna.\r\n", + "html": "Eftersom jag är på väg att köpa en Windows Phone 7 telefon så har jag förberett mig genom att titta på vilka telefoner som finns och vilka parametrar man bör ta hänsyn till.
Den 21:a oktober går det att köpa telefoner i Sverige. Här är de parametrar man bör ta hänsyn till och lite grundinformation om de modeller som går att köpa.
En viktig punkt att ta hänsyn till är om man som tidig svensk kan leva med begränsningar som gäller de länder som inte är officiella lanseringsländer. Här sticker några grejer ut som t.ex inga svenska menyer, tangentbordet har ingen svensk rättstavning, onlinetjänsterna kan vara begränsade o.s.v. Dessa problem och begränsningar kommer mest sannolikt lösas inom ett halvår eller så men det kommer förstås vara jobbigare i början.
Version av operativ systemet
Då alla telefoner kommer ha samma version av operativsystemet och det inte finns nån splittring som t.ex Android har så behöver man inte välja telefon baserat på vilken version den har eller hur bra företaget är på att uppdatera versioner på sina existerande telefoner. Operativsystemet är på engelska just nu.
Mjukvara som skiljer sig mellan tillverkarna
Tillverkarna har möjlighet att skicka med specifik mjukvara men har inte möjlighet att ändra själva grundfunktionerna i telefonen eller gräsnittet vilket gör att man inte behöver välja bort en telefon om man inte gillar hur dom anpassar sina gränsnitt. Vilka applikationer som följer med kan dock ge tillverkarna lite extra poäng om dom lyckas leverera nåt unikt som inte går att köpa löst.
HTC har byggt en hub som liknar deras vanliga Sense-gränsnitt. Här har dom fläskat på med mängder av animeringar för den som vill flasha lite med sin telefon.
LG har byggt in eget stöd för DLNA, dvs media delning samt en augmented reality applikation och röst-till-text för att kunna t.ex twittra genom att tala med telefonen.
Prestanda
Här kan det skilja sig på ett par punkter och det kommer krävas en del benchmarks för att hitta en tydlig vinnare bland tillverkarna. Det som främst kan skilja sig är mängden ram, hastigheten på flashminnet och grafikchipset. Här får man vänta på benchmarks innan man hittar vinnaren. Av de tidiga recensioner jag läst och videos jag sett flyter dock allt bra på alla telefonerna.
Lagringsutrymme
Mininivån är satt lågt på 8 GB utrymme på telefonerna och tidiga rykten har visat att de flesta telefonerna kommer stanna på mininivån, en klar showstopper för de flesta. En del telefoner kommer gå att utöka med SD-kort. Av lanseringstelefonerna är det bara LG som verkar komma med 16 GB som standard. Då det finns 25 GB utrymme på skydrive att synka till gratis så kanske 8 GB kan räcka men det kommer kännas trångt.
Skärm
Upplösningen kommer vara samma bland alla telefoner men kvaliten och storleken kommer variera. Kvalitetsmässigt verkar Samsung ta täten genom sin amoled på sin Omnia 7. Storleken på skärmen kommer ju avgöra storleken på telefonen så här får man hitta en bra balans och det krävs nog att man håller telefonen i handen innan man bestämmer sig.
Byggkvalitet
Känslan är ju viktig, det ska inte knaka i fogarna när man klämmer lite på telefonen och här får man antingen läsa recensioner eller testa klämma lite själv på telefonerna. Knapparnas kvalitet och känsla är ju också viktig eftersom en hel del av navigationen på WP7 går via de tre standardknapparna under skärmen.
Utseende
Givetvis en smaksak, här så har alla tillverkarna möjlighet att göra nåt snyggt genom att skala ner allt till gärna ett minimum och låta kanterna vara kantiga. Här tycker jag Samsungs Omnia 7 är riktigt snygg.
Tangentbord eller inte
Jag värdesätter en tunnare mobil framför en med fysiskt tangentbord. Mjukvarutangentbordet kommer sannolikt också att gå uppgradera till åäö i framtiden så risken är stor att hårdvarutangentbordet kommer kännas osmidigt snart. Vid lanseringen kommer ingen telefon ha hårdvarutangentbord men fler telefoner lär dyka upp senare.
Kamera/video
Här kan det skilja sig både upplösning, blixt och funktioner. 5 megapixel bilder är mininum och alla kan spela in 720p video. Här har jag sett tidiga tester som tyvärr visar att samsung komprimerar videon lite väl hårt samt tappar lite frames.
Pris
Det lär inte vara speciellt billiga mobiler eftersom minsta specifikationen säger att alla kommer vara i övre prestandasegmentet.
4 telefoner
Vid lanseringen i sverige kommer det att finnnas 4 olika telefoner att köpa från 3 olika tillverkare. Här är listan samt det som som sticker ut hos varje mobil:
HTC 7 Trophy – sannolikt billigaste
HTC 7 Mozart – 8 MP kamera, Xenon blixt
LG Optimus 7 – 16GB lagringsutrymme som standard
Samsung Omnia 7 – exklusiv för operatören 3. Har 4 tum super amoled skärm
Slutsats
Telefonerna är väldigt lika varann både funktions- och utseendemässigt och det är i princip en smaksak vilken telefon man fastnar för. Jag har själv fastnat för Samsung Omnia 7 pga av dess fina skärm och kantiga utseende men får se om det går att köpa den olåst eller låsa upp den hos 3.
Orkar man vänta så lär det dyka upp fler modeller närmaste månaderna.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Att köpa en Windows Phone 7", + "meta_description": "", + "author_id": 1089, + "created_at": 1287056016000, + "created_by": 1089, + "updated_at": 1287056016000, + "updated_by": 1089, + "published_at": 1287056016000, + "published_by": 1089 + }, + { + "id": 454, + "title": "Samsung omnia 7 - Första intrycket", + "slug": "samsung-omnia-7---forsta-intrycket", + "markdown": "\r\n\r\nEn helt ny mobil som inte liknar nånting jag tidigare haft och här kommer intryck från första dagarna.\r\n\r\nEftersom jag följt nyheter och bloggar sen windows phone 7 presenterades så är det inte så mycket nyheter. Jag har dessutom lekt lite med emulatorn och har då fått en viss känsla hur telefonen är strukturerad. Att hålla telefonen i handen och dessutom nu med kompletta funktioner är dock en annan sak, här är mina första intryck.\r\n## Förpackning\r\nLådan var liten, snygg och väldigt optimalt packad, det följde med en usb sladd, en pytteliten laddare och ett headset som är av in-ear modell.\r\n## Känslan hårdvara\r\nDen är väldigt stor jämfört med min gamla HTC Diamond Touch, ungefär lika platt och väger ungefär lika mycket men den får min gamla telefon att se ut som en leksak.\r\n\r\nSkärmen har en extrem svärta och väldigt mättade färger. Av nån anledning så ser jpg bilder lite hårt komprimerade ut men vet inte om det beror på ursprungsbilderna, hårdvaran eller mjukvaran men det är nåt jag inte sett nån annan nämna så det kanske är mina bilder som det är fel på. Text kan p.ga super amoleds pixelstruktur få en lätt diffus kant, inget som stör om man inte tittar noga på små texter men är man känslig och läser mycket text kan amoled vara fel val.\r\n\r\nTouchkontrollerna för ”back” och ”sök” är känsliga och alldeles för lätta att komma åt av misstag och det är nog den största nackdelen jag hittat hittills med själva handhavandet av samsung telefonen.\r\n\r\nEn brist med den här telefonen jämfört med min gamla htc är att det inte finns nån indikators som visar att man har missade samtal eller ett oläst sms genom att snegla på mobilen utan man måste trycka på powerknappen för att tända skärmen. Det pajar lite av WP7s ”Glance and Go” koncept.\r\n## Manual\r\nJag fuskade lite och skummade bara igenom manualen väldigt snabbt eftersom jag kände att jag redan visste tillräckligt mycket om operativsystemet. Viktigt här är att den inte nämner hur man får igång marketplace i sverige, se nästa rubrik för att veta hur man ska göra.\r\n## Första uppstarten\r\nDet första man gör är lägga in ett Live konto och här är det viktigt att lägga in ett som är registrerat med ett land som telefonen officiellt är lanserad i och det innebär att man inte kan använda sitt svenska konto. Här är det enklast att följa den här guiden så kan man komma åt marketplace och allt annat viktigt http://www.winmobile.se/index.php/?p=1621.\r\n\r\nNär man väl lagt till det första kontot kan man lägga till sina vanliga hotmail/facebook konton för att få in alla kontakter.\r\n## SMS\r\nTangentbordet har inte svenska tecken på knapparna utan kräver att man håller in A och O för åäö och den saknar också möjlighet att rättstava och ge förslag på svenska så man måste ha den funktionen avstängd tills vidare. Det kommer att komma förmodligen i januari/februari så det är bara att vänta. Det går riktigt snabbt att skriva ändå så det är inget man stör sig på alltför mycket.\r\n## Surfa\r\nHar bara tagit några stickprov men browsern verkar fungera ungefär lika bra som ie7/ie8 på datorn, dvs den saknar ”wow” men den gör det den ska. Skroll och zoom går snabbt och mjukt så den upplevs inte särskilt långsam.\r\n## Marketplace\r\nDet märks att det fortfarande är en sprillans ny mobil, marketplace har nu ca 2000 apps/spel men eftersom för få personer varit in och röstat än så länge är det fortfarande svårt att veta vad som är bra och vad som är dåligt.\r\n\r\nRating funktionen är landsspecifik och eftersom jag valt USA som land och den precis lanserats där så kommer det snart bli lättare att hitta de bra sakerna och de dåliga kommer att snabbt sorteras bort.\r\n\r\nÄn så länge har jag inte testat köpa nåt men jag kommer nog satsa på ett Zune pass för musiken vid ett senare tillfälle.\r\n## Slutsats\r\nTelefonen är blixtrande snabb, allt går mjukt och fint, den är som många beskrivit en fröjd att använda. Den känns enkel att använda och aldrig komplicerad. Följ instruktionerna för att få igång marketplace, annars så förlorar man en stor del av vad telefonen är kapabel till.\r\n\r\nSkärmen har en otrolig svärta, det går verkligen inte se att den är igång ens när man sitter i ett kolsvart rum men har nackdelen att färgerna är nästan för mättade och att framförallt mindre text kan vara lite oskarpare än en vanlig LCD.\r\n\r\nOperativssystemet är snabbht och smidigt, man får verkligen känslan att man aldrig behöver vänta på att den ska reagera på nånting alls utom när den hämtar data över nätet förstås.\r\n\r\nTouchkontrollerna är för lätta att komma åt och den saknar nån typ av sms/missat samtal indikator men i övrigt känns hårdvaran riktigt trevlig.\r\n\r\nNu ska jag använda den lite mer utförligt och kommer med fler synpunkter och tips i ett framtida blogginlägg.\r\n\r\nHär är lite andra länkar som innehåller bra saker för den som vill lära sig lite mer om hur man kan använda telefonen på bästa sätt i sverige men också bra nyhetssidor för WP7.\r\n\r\nhttp://www.igandlive.com/2010/08/03/hr-r-microsofts-spotify-itunes-rdio-ddare-och-s-hr-gr-du-fr-att-f-den-i-sverige-nu/\r\n\r\nhttp://wissinger.wordpress.com/2010/10/24/windows-phone-7-tips-och-tricks/\r\n\r\nhttp://www.winmobile.se/\r\n\r\nhttp://wmpoweruser.com/\r\n\r\n![Bild](http://tekniken.nu/uploads/samsung-omnia-7.png)", + "html": "En helt ny mobil som inte liknar nånting jag tidigare haft och här kommer intryck från första dagarna.
Eftersom jag följt nyheter och bloggar sen windows phone 7 presenterades så är det inte så mycket nyheter. Jag har dessutom lekt lite med emulatorn och har då fått en viss känsla hur telefonen är strukturerad. Att hålla telefonen i handen och dessutom nu med kompletta funktioner är dock en annan sak, här är mina första intryck.
Förpackning
Lådan var liten, snygg och väldigt optimalt packad, det följde med en usb sladd, en pytteliten laddare och ett headset som är av in-ear modell.
Känslan hårdvara
Den är väldigt stor jämfört med min gamla HTC Diamond Touch, ungefär lika platt och väger ungefär lika mycket men den får min gamla telefon att se ut som en leksak.
Skärmen har en extrem svärta och väldigt mättade färger. Av nån anledning så ser jpg bilder lite hårt komprimerade ut men vet inte om det beror på ursprungsbilderna, hårdvaran eller mjukvaran men det är nåt jag inte sett nån annan nämna så det kanske är mina bilder som det är fel på. Text kan p.ga super amoleds pixelstruktur få en lätt diffus kant, inget som stör om man inte tittar noga på små texter men är man känslig och läser mycket text kan amoled vara fel val.
Touchkontrollerna för ”back” och ”sök” är känsliga och alldeles för lätta att komma åt av misstag och det är nog den största nackdelen jag hittat hittills med själva handhavandet av samsung telefonen.
En brist med den här telefonen jämfört med min gamla htc är att det inte finns nån indikators som visar att man har missade samtal eller ett oläst sms genom att snegla på mobilen utan man måste trycka på powerknappen för att tända skärmen. Det pajar lite av WP7s ”Glance and Go” koncept.
Manual
Jag fuskade lite och skummade bara igenom manualen väldigt snabbt eftersom jag kände att jag redan visste tillräckligt mycket om operativsystemet. Viktigt här är att den inte nämner hur man får igång marketplace i sverige, se nästa rubrik för att veta hur man ska göra.
Första uppstarten
Det första man gör är lägga in ett Live konto och här är det viktigt att lägga in ett som är registrerat med ett land som telefonen officiellt är lanserad i och det innebär att man inte kan använda sitt svenska konto. Här är det enklast att följa den här guiden så kan man komma åt marketplace och allt annat viktigt http://www.winmobile.se/index.php/?p=1621.
När man väl lagt till det första kontot kan man lägga till sina vanliga hotmail/facebook konton för att få in alla kontakter.
SMS
Tangentbordet har inte svenska tecken på knapparna utan kräver att man håller in A och O för åäö och den saknar också möjlighet att rättstava och ge förslag på svenska så man måste ha den funktionen avstängd tills vidare. Det kommer att komma förmodligen i januari/februari så det är bara att vänta. Det går riktigt snabbt att skriva ändå så det är inget man stör sig på alltför mycket.
Surfa
Har bara tagit några stickprov men browsern verkar fungera ungefär lika bra som ie7/ie8 på datorn, dvs den saknar ”wow” men den gör det den ska. Skroll och zoom går snabbt och mjukt så den upplevs inte särskilt långsam.
Marketplace
Det märks att det fortfarande är en sprillans ny mobil, marketplace har nu ca 2000 apps/spel men eftersom för få personer varit in och röstat än så länge är det fortfarande svårt att veta vad som är bra och vad som är dåligt.
Rating funktionen är landsspecifik och eftersom jag valt USA som land och den precis lanserats där så kommer det snart bli lättare att hitta de bra sakerna och de dåliga kommer att snabbt sorteras bort.
Än så länge har jag inte testat köpa nåt men jag kommer nog satsa på ett Zune pass för musiken vid ett senare tillfälle.
Slutsats
Telefonen är blixtrande snabb, allt går mjukt och fint, den är som många beskrivit en fröjd att använda. Den känns enkel att använda och aldrig komplicerad. Följ instruktionerna för att få igång marketplace, annars så förlorar man en stor del av vad telefonen är kapabel till.
Skärmen har en otrolig svärta, det går verkligen inte se att den är igång ens när man sitter i ett kolsvart rum men har nackdelen att färgerna är nästan för mättade och att framförallt mindre text kan vara lite oskarpare än en vanlig LCD.
Operativssystemet är snabbht och smidigt, man får verkligen känslan att man aldrig behöver vänta på att den ska reagera på nånting alls utom när den hämtar data över nätet förstås.
Touchkontrollerna är för lätta att komma åt och den saknar nån typ av sms/missat samtal indikator men i övrigt känns hårdvaran riktigt trevlig.
Nu ska jag använda den lite mer utförligt och kommer med fler synpunkter och tips i ett framtida blogginlägg.
Här är lite andra länkar som innehåller bra saker för den som vill lära sig lite mer om hur man kan använda telefonen på bästa sätt i sverige men också bra nyhetssidor för WP7.
http://wissinger.wordpress.com/2010/10/24/windows-phone-7-tips-och-tricks/
Jag har inte använt telefonen som en recensent som testar varje funktion var för sig och koncentrerar sig på varje liten del utan jag har använt telefonen i dagligt bruk som en ”vanlig svensson”. Min recension kommer alltså inte peta på varje detalj utan bara på sådant jag faktiskt använt.
Halkig
Som många recensenter skrivit så är baksidan ganska hal och känns nästan som teflon. Än har jag inte tappat telefonen men det känns inte alltid tryggt när man fiskar upp den ur fickan. Någon typ av gummering på baksidan skulle lösa problemet och här letar jag bara rätt material så när jag hittar det kommer jag klistra på det själv.
Kameran
Nu har jag inte använt kameran särskilt många gånger än men generellt så blir bilder på nära håll med blixt helt utfrätta. Att välja HDR hjälper lite vid knepig blixtbilder men störigt nog måste man välja om HDR varje gång man öppnar kameran igen. Detta känns klart som en bugg och fixas förhoppningsvis.
Strulet med upplåsningen från 3
När jag låste upp den från 3 så fungerade telefonen med Telia, dock med undantaget att 3G inte går igång så än så länge får jag leva med bara wifi. Så vitt jag förstått kommer sannolikt en hård reset lösa problemet men det betyder ju att konfigurerar om telefonen och synka över innehåll igen och det har jag inte haft tid med än. MMS fungerar inte heller och detta ska tydligen inte gå lösa alls ännu med samsungs telefoner. Här väntar jag på en lösning från Samsung eller Microsoft.
Allt som 3 skräddarsytt utom splashskärmen som visas direkt när man startar telefonen går att ta bort. Splashskärmen är förstås störig men påverkar inte den dagliga användningen. Här väntar jag också på nån lösning även om det är mindre kritiskt förstås.
Osvenskt
Att telefonen i sig är på engelska är ju inget problem utan snarare något jag ser som positivt. Att ha autokorrigering på tangentbordet på svenska vore schysst men är inte heller direkt kritiskt.
Marketplace går att komma åt om man följer rekommendationerna i min tidigare blogg http://tekniken.nu/nyheter-och-trender/samsung-omnia-7---forsta-intrycket. Dock fungerar inte kreditkortet om man inte har tur att ha ett postnummer vars siffror finns som startsiffror i nån ort i USA. Det verkar det som det är enklare att registrera kreditkort om man registrerar sitt live konto i England än i USA. Här har jag valt att just nu att inte köpa några applikationer utan vänta tills marketplace dyker upp i Sverige och att då resetta min telefon och sätta upp svenska kontot istället.
Skärmen
Färgerna och svärtan är imponerande. Texten går bra att läsa även om den inte är lika skarp som en traditionell skärm p.g.a pixelplaceringarna på super amoled. Ett problem som däremot visar sig vid vissa tillfällen är att skärmen inte klarar toningar (gradients) särskilt bra. En mjuk övergång från en färg till en annan kan skapa band som liknar dom man får om man har för få färger att välja på. Vet inte hur detta kan uppstå då skärmen enligt spec ska klara 16.7 miljoner färger. Detta går förhoppningsvis lösas med en mjukvarufix.
Multitasking
Musik kan spelas i bakgrunden och med hjälp av notifieringar klarar man de flesta behov av multitasking. Tyvärr så använder inte messengerklienten (ej skriven av microsoft) notifieringar utan kör helt enkelt bara när den är i förgrunden. Messenger skulle förstås kunna använda notifiering på samma sätt som när man får SMS man får bara hoppas att utvecklaren bygger in det själv.
Rykten säger att uppdateringen som kommer i början av 2011 kommer innehålla en utökad multitasking så här får man vänta och se.
Musik
För att kunna lyssna på musik på min korta promenad till och från jobbet så köpte jag ett par nya Sennheizer mx170 som är av gamsla stuket med en liten muff i örat för en dryg hundring för att ha vanliga lurar istället för såna som invaderar hela hörselgången. Med dessa hörlurar låter luren riktigt bra och den klarar driva ganska hög volym.
Att byta låt kräver att man klickar på skärmen, sedann volymkontrollen och sedan på framåt- eller bakåtikonerna som visas längst upp. Alla andra mobiler jag använt har kunnat byta låt med ett långt klick på volymkontrollen. Här hoppas jag på en mjukvarufix, man vill ju inte ta av sig handskarna i onödan på vintern.
Dålig kvalitet på 3:e parts appar/spel
Det finns just nu ca 4000 appar/spel på marketplace. Av dessa så har jag ca 20 appar och ca 5 spel installerade på min telefon som ”är nåt att ha”. Om jag kunde registrera mitt kreditkort skulle jag ha lite bättre urval men det är ändå skrämmande dåligt.
Man önskar att Microsoft hade en regel som säger att en applikation som släpps på marketplace måste:
A) Ha minst 100 rader kod (appar som har en knapp som spelar ett enda ljud eller som visar en enda bild borde förbjudas)
B) Tillföra mer än de exempelapplikationer Microsoft släppte första dagen. Det finns t.ex en utmärkt och gratis unitconverter från Microsoft som kan hantera alla tänkbara mått, ändå ser man utvecklare som släpper applikationer som bara översätter mellan t.ex celsius och kelvin.
C) Ha en potentiell målgrupp som är större än 1000 personer. Har sett appar som bara visar t.ex schemat för ett event i en specifik lokal i USA. En sådan app borde inte finnas på den publika marketplace alls.
D) Skilja sig från utvecklarens tidigare applikationer. Detta för att undvika dumheter som 20 olika appar från samma tillverkare som bara t.ex visar olika citat om olika områden där det enda som skiljer sig är ikonen och datakällan.
Det här är förstås en tidsfråga, skräp kommer alltid finnas men mängden kvalitetsappar ökar varje vecka.
Stabilitet
Själva telefonen och de inbyggda applikationerna är väldigt stabila med ett enda undantag. Marketplaceapplikationen som båda hackar ibland och kan låsa sig så mycket att den inte går att starta igen (resten av telefonen fungerar dock fortfarande). Lösning på marketplacebuggen är en enkel 15 sekunders omstart av telefonen men det är förstås störigt att behöva starta om telefonen typ en gång i veckan bara för detta.
Väldigt nöjd
Det är förstås enklast att skriva om de problem man har men även om det inte framgår så tydligt av texten så är jag väldigt nöjd med telefonen. Även om det förstås fattas vissa roliga och användbara funktioner så är telefonen skön att använda, den hindrar en inte från att utföra sina uppgifter utan ser till att hålla sig ur vägen.
Givetvis så hoppas man på många förbättringar och nya funktioner i uppdateringen som ska komma snart, men precis som med Windows 7 så känner man att ett servicepack vore bra men jag måste inte absolut ha ett precis nu.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "En månad med Windows Phone 7", + "meta_description": "", + "author_id": 1089, + "created_at": 1291904464000, + "created_by": 1089, + "updated_at": 1291904464000, + "updated_by": 1089, + "published_at": 1291904464000, + "published_by": 1089 + }, + { + "id": 461, + "title": "Fix för MMS på upplåst Samsung Omnia 7 från Tre", + "slug": "fix-for-mms-pa-upplast-samsung-omnia-7-fran-tre", + "markdown": "\r\n\r\nDet här blir en kort men efterlängtad blogg om felaktiga MMS-inställningar i Windows Phone 7. Eftersom Tre hade ensamrätt på Samsung Omnia 7 köpte de flesta sin telefon från dem och låste sedan upp den för att återgå till sin vanliga operatör. Problemet som då uppstod var att MMS-inställningarna i telefonen var låsta till Tre och inte gick att ändra.\r\n\r\nNu har Samsung äntligen släppt en uppdaterad version av sin app Network Profile (du hittar den under Samsung Zone i marketplace) som gör det möjligt att låsa upp MMS-inställningarna.\r\n\r\nEfter installation behöver du bara starta appen och välja den operatör du bytt till i listan och sedan har du fungerande MMS igen!\r\n\r\n![Bild](http://tekniken.nu/uploads/634284344596892386-samsung-omnia-7.png)", + "html": "Det här blir en kort men efterlängtad blogg om felaktiga MMS-inställningar i Windows Phone 7. Eftersom Tre hade ensamrätt på Samsung Omnia 7 köpte de flesta sin telefon från dem och låste sedan upp den för att återgå till sin vanliga operatör. Problemet som då uppstod var att MMS-inställningarna i telefonen var låsta till Tre och inte gick att ändra.
Nu har Samsung äntligen släppt en uppdaterad version av sin app Network Profile (du hittar den under Samsung Zone i marketplace) som gör det möjligt att låsa upp MMS-inställningarna.
Efter installation behöver du bara starta appen och välja den operatör du bytt till i listan och sedan har du fungerande MMS igen!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Fix för MMS på upplåst Samsung Omnia 7 från Tre", + "meta_description": "", + "author_id": 1089, + "created_at": 1292837658000, + "created_by": 1089, + "updated_at": 1292837658000, + "updated_by": 1089, + "published_at": 1292837658000, + "published_by": 1089 + }, + { + "id": 463, + "title": "Nu kan du handla mat med mobilen!", + "slug": "nu-kan-du-handla-mat-med-mobilen", + "markdown": "\r\n\r\nMatbutiken MatHem har blivit utsedd till bästa svenska matbutik på nätet av Internet World, i dagarna släpptes en app för iphone som gör att du enkelt kan beställa varor direkt från telefonen.\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/mathem.png)", + "html": "Matbutiken MatHem har blivit utsedd till bästa svenska matbutik på nätet av Internet World, i dagarna släpptes en app för iphone som gör att du enkelt kan beställa varor direkt från telefonen.
Internet är fullt av öppna programvaror som får distribueras fritt och modifieras av alla, däremot finns det inte mycket fri grafik vilket är synd. The Noun Project försöker ändra på det genom att producera enkla symboler som är gratis och öppna. Symbolerna ska vara kulturellt och språkligt obundna och försöker visualisera både traditionella objekt som båtar, bilar, snöflingor etc men också nya företeelser som trådlösa nätverk, lågenergilampor, dela eller varför inte en Segway?
Min favorit är denna snygga lekplatsikon:
Symbolerna är väldigt snygga och känns klassiska och passar ihop – alla finns att ladda ner gratis i det vektorbaserade formatet (svg).
Kolla själva och ladda ner här:
http://www.thenounproject.com/
Hitta iOS-apparna till din iPhone och iPad med en sökmotor online, som är mycket kraftfullare än iTunes inbyggda sök.
UQuery har ett liknande användargränssnitt som Google, men låter dig även filtrera resultaten med olika villkor. Det finns många kraftfulla filter, t.ex. kan man söka mellan olika priser eller om man bara vill ha gratisappar.
En av de främsta funktionerna på sidan, som är tydligt uttalat av dem själva, är snabbhet i söket och resultaten.",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "UQuery - AppStore sökmotor",
+ "meta_description": "",
+ "author_id": 1096,
+ "created_at": 1297069373000,
+ "created_by": 1096,
+ "updated_at": 1297069373000,
+ "updated_by": 1096,
+ "published_at": 1297069373000,
+ "published_by": 1096
+ },
+ {
+ "id": 486,
+ "title": "Aktuellt om Windows Phone 7",
+ "slug": "aktuellt-om-windows-phone-7",
+ "markdown": "\r\n\r\nHär kommer en summering av de senaste tidernas nyheter om Windows Phone 7, både aktuellt och vad som väntas under året.\r\n## För utvecklarna\r\nSå har begränsningen med 5 gratis applikationer ändrats till 100 applikationer. Detta innebär i praktiken att vi kommer att få se fler gratis spel/appar men också tyvärr att det kommer bli fler massproducerade appar där endast ikoner och texter kommer ändras.\r\n## Mer än 9000 applikationer och spel\r\nDet finns förstås fortfarande luckor i utbudet men det är inte direkt nån brist på applikationer längre. Givetvis så är en hel drös spel bara skräp främst bland gratisvarianterna men är man villig och kan betala 99 cent dvs ca 6.40 kronor för sina spel så finns det många med hög kvalitet.\r\n## Uppdatering i mars\r\nEn uppdatering med klipp och klistra samt prestanda och buggfixar är på gång (kanske 8:e mars). Just nu så finns en föruppdatering som är till för att förbereda telefonen för den riktiga uppdateringen att ladda ner men om du som jag har en Samsung Omnia 7 är det rekommenderat att vänta på en nyare uppdatering då denna föruppdatering kan strula för just samsung mobilerna.\r\n## Andra halvåret kommer det en massiv uppdatering med bl.a:\r\nSvenskt stöd för telefonen är planerat till och här är bara spikat tangentbord och OS stöd men det finns anledning att tro att det i samband med detta kan komma stöd för marketplace och x-box live stöd också.\r\n\r\nMultitasking i telefonen. Implementationen verkar bli att håller man ner bakåtknappen i några sekunder så dyker applikationerna man kör upp med stora skärmbilder som man kan scrolla sig igenom. Hur mycket applikationerna får göra i bakgrunden är dock inte helt klart men det verkar inte vara helt fri multitasking utan det blir sannolikt ett antal API:er som öppnas upp så att applikationen kan spela musik och lyssna på GPSer och dylikt.\r\n\r\nTwitter i People Hubben och Officedokument kan synkas mot Skydrive vilket gör det enklare att dela dokument och ger 25 gb gratis utrymme.\r\n\r\nInternet Explorer 9 i telefonen. Här kommer mobilbrowsern att få en supermodern browser med HTML 5 stöd och GPU acceleration. Om inte de andra mobilerna gör nåt drastiskt närmaste halvåret så kommer Windows Phone 7 ha den snabbaste webbläsaren av alla. Inget nytt har sagts om Adobe Flash stöd men det verkar sannolikt att flashstöd kommer komma i samband med IE9.\r\n## Sajttips\r\nFör att hänga med vad som händer på svenska fronten så finns ingen bättre källa än Microsoft Phones nordiska affärsområdeschef Peter Wissingers blog http://wissinger.wordpress.com/.\r\n\r\nEn annan svensk nyhetsblog http://www.winmobile.se/.\r\n\r\nDe bästa engelska windowsphone bloggarna är http://wmpoweruser.com/ och http://wpcentral.com/\r\n\r\n![Bild](http://tekniken.nu/uploads/wp7.jpg)",
+ "html": "
Här kommer en summering av de senaste tidernas nyheter om Windows Phone 7, både aktuellt och vad som väntas under året.
För utvecklarna
Så har begränsningen med 5 gratis applikationer ändrats till 100 applikationer. Detta innebär i praktiken att vi kommer att få se fler gratis spel/appar men också tyvärr att det kommer bli fler massproducerade appar där endast ikoner och texter kommer ändras.
Mer än 9000 applikationer och spel
Det finns förstås fortfarande luckor i utbudet men det är inte direkt nån brist på applikationer längre. Givetvis så är en hel drös spel bara skräp främst bland gratisvarianterna men är man villig och kan betala 99 cent dvs ca 6.40 kronor för sina spel så finns det många med hög kvalitet.
Uppdatering i mars
En uppdatering med klipp och klistra samt prestanda och buggfixar är på gång (kanske 8:e mars). Just nu så finns en föruppdatering som är till för att förbereda telefonen för den riktiga uppdateringen att ladda ner men om du som jag har en Samsung Omnia 7 är det rekommenderat att vänta på en nyare uppdatering då denna föruppdatering kan strula för just samsung mobilerna.
Andra halvåret kommer det en massiv uppdatering med bl.a:
Svenskt stöd för telefonen är planerat till och här är bara spikat tangentbord och OS stöd men det finns anledning att tro att det i samband med detta kan komma stöd för marketplace och x-box live stöd också.
Multitasking i telefonen. Implementationen verkar bli att håller man ner bakåtknappen i några sekunder så dyker applikationerna man kör upp med stora skärmbilder som man kan scrolla sig igenom. Hur mycket applikationerna får göra i bakgrunden är dock inte helt klart men det verkar inte vara helt fri multitasking utan det blir sannolikt ett antal API:er som öppnas upp så att applikationen kan spela musik och lyssna på GPSer och dylikt.
Twitter i People Hubben och Officedokument kan synkas mot Skydrive vilket gör det enklare att dela dokument och ger 25 gb gratis utrymme.
Internet Explorer 9 i telefonen. Här kommer mobilbrowsern att få en supermodern browser med HTML 5 stöd och GPU acceleration. Om inte de andra mobilerna gör nåt drastiskt närmaste halvåret så kommer Windows Phone 7 ha den snabbaste webbläsaren av alla. Inget nytt har sagts om Adobe Flash stöd men det verkar sannolikt att flashstöd kommer komma i samband med IE9.
Sajttips
För att hänga med vad som händer på svenska fronten så finns ingen bättre källa än Microsoft Phones nordiska affärsområdeschef Peter Wissingers blog http://wissinger.wordpress.com/.
En annan svensk nyhetsblog http://www.winmobile.se/.
De bästa engelska windowsphone bloggarna är http://wmpoweruser.com/ och http://wpcentral.com/
Det dyker upp många nya appar och spel varje dag och det finns alltid nåt nytt kul som är värt att testa så det finns ingen risk att man tröttnar på utbudet i första taget.
Börja gärna med att tanka ner applikationen ”Marketplace Search” så är det enklare att hitta appar och spel då du slipper alla musikträffar när du söker.
Har du någon favorit som inte finns med i listan? Tipsa mig och andra med hjälp av kommentarsfunktionen nedan!
Spel - 30 st
Flowerz – enda gratis xbox live spelet
AlphaJax Free– Alfapet i telefonen, endast engelska ord men hur kul som helst.
Babble Plus – Bygga ihop ord med bokstäver som faller, engelska ord men kul och svårt.
Blackjack Metro – Blackjack på telefonen
BlockBuster – Breakout spel
ByeByeBrain Lite – Döda zombies i ett riktigt snyggt ”tower defense” spel.
Chickens Can Dream – Riktigt snyggt spel där man ska ta sig genom en bana snabbt och oskadd.
Chicks’n Vixens - Liknar Angry Birds
Final Approach Free – Landa plan
Flood Control Free – Puzzelspel
Hangman Free – Hänga gubbe på engelska
Hooked on Darts – Dartspel, dvs kasta pil
Ice Ball – liknar laser bikes där man ska bygga igen en studsande boll
Impossible Shoota – Shootem up
Krashlander Free – Åk skidor och försök krasha på spektakulära sätt
Metro Blocks Free – En snygg tetrisklon
Nom Nom Worm – Masken fast styrd med accelerometer
Pandemic – Pusselspel med baktierier
Pirates Ahoy – Liknar fruit ninja fast med pirat tema
Satalaunch – skicka satelliter mot ett mål fast ta hänsyn till gravitation
Simple Couplers – Pusselspel
SkyDiver Classic – Precisionslanda i retro stil
Solitaire – Klassiska kortspelet
Steam Castle – Missile command i ny skrud
Spin Crisis – Rulla runt en bana
Table Tiles – Ordspel på engelska
TextTextRevolution – Skriv snabbt
Ultra Fill – lås in studsande bollar fast på nytt sätt
Unite – Rulla bollar runt en bana
Word Tangle Free – Ordspel på engelska
Appar - 28 st
3D Brain – lär dig mer om hjärnan
Adobe Reader – Ett måste för att läsa PDF
Beezz - Twitterklient
Bigoven - Receptsamling
Dailymotion – Stor samling online videos
eBay – Auktionssajtens officiella app
Facebook – Mer komplett än inbyggda stödet
Flickr from Yahoo! – Håll koll på fotografier på nätet
Flixter – Allt om ny film
IMDb – Mest kompletta film/skådis databasen
Level – Enkelt vattenpass
Lyrics – Hitta texten till låtar
Marketplace Search - Just nu den bästa appen för att söka i marketplace.
Messenger by Miyowa – Live messenger på telefonen
MSN Video – Videos liknande youtube
MusicShark – Ickeofficiell grooveshark klient
Network Profile – Om du låst upp en tre telefon och vill ha tillbaka MMS stöd
Podcasts! – Ljud och video i mängder av kategorier
Project Emporia – Smart nyhetsflöde
Shazam – Hitta låten som just nu spelas
STHLM commute – Håll koll på stockholms lokaltrafik
Stockholm Travel – Håll koll på stockholms lokaltrafik
Twitter – Officiella twitterklienten
The weather Channel - Väder
WikiPanda – Wikipedia app
WordPress – Administrera din wordpressblog
YouTube – Ett måste för att spela youtubefilmer
YouTube Lazy worm – Bläddra smidigt bland youtubefilmerna
På resa i utlandet kan man snabbt ruinera sig genom att använda sin mobil för att ringa hem. Det finns dock flera sätt att komma undan riktigt billigt, så länge man har tillgång till trådlöst internet.
1) Snygga sättet
Det riktigt snygga sättet är att ringa med VOIP med din mobil, det kan du använda om du har ett telefonnummer anslutet till en SIP-växel. Så fungerar våra telefonnummer på Iteam, och jag har samma lösning hemma via Alltele. Med en SIP-applikation på telefonen (t.ex. Fring) så loggar jag in som vanligt på mitt nummer över internet och kan sen ringa samtal i Sverige till samma taxa som om jag satt på kontoret eller hemma. Det är en ganska skön känsla att sitta på hotellrummet i Tokyo och prata med Sverige i 40 minuter utan att bry sig om kostnaden. Första gången jag testade detta var jag lite paranoid och startade om telefonen utan att mata in pinkoden, bara för att vara säker på att ingenting gick via telefonnätet.
2) Lätta sättet
Skaffa en VOIP-applikation till din mobil, t.ex. Skype eller Fring, och teckna deras abonnemang för att kunna ringa till vanliga abonnemang.
I båda varianterna kommer du att betala 15-20 öre per minut för samtal till fast telefon och 1-2 kronor per minut för mobilsamtal till Sverige. Som jämförelse kan nämnas att t.ex. Telia tar 22 kronor per minut för att ringa hem från USA och Japan och 28 kronor per minut om du ringer en kollega eller familjemedlem som befinner sig i något av de länderna samtidigt som du ...
3) Gratissättet
Med Skype på telefonen kan du ringa helt gratis till andra med Skype. Detta är det smartaste sättet på pappret, men jag känner inte en enda människa som jag vet alltid har Skype igång, headset tillgängligt etc.
Nackdelar då? Utan trådlöst internet funkar det förstås inte. Var extremt noga med att du inte råkar ringa VOIP-samtal över roamad 3G, det kan bli väldigt dyrt. I Tokyo fanns t.ex. förbluffande många öppna nät överallt (i synnerhet i närheten av bostäder), medan det är ganska tunnsått här i Stockholm. En annan nackdel jag har stött på är att ljudet kan lagga lite.
Frågan är vad telebolagen håller på med. Det kan omöjligen vara 100 gånger så dyrt för dem att vidarebefordra ett samtal via (troligtvis) samma nät som man själv kan använda i princip gratis...
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Ring billigt på resan", + "meta_description": "", + "author_id": 6, + "created_at": 1301307300000, + "created_by": 6, + "updated_at": 1301307300000, + "updated_by": 6, + "published_at": 1301307300000, + "published_by": 6 + }, + { + "id": 505, + "title": "Glöm killer apps - du behöver en killer app store", + "slug": "glom-killer-apps---du-behover-en-killer-app-store", + "markdown": "\r\nEfter att ha tillbringat några kvällar med att sätta upp en WordPress-blogg har jag insett vad som kan avgöra skillnaden mellan en framgångsrik och en misslyckad plattform. Inbyggt i WordPress finns en plugin store med tiotusentals plugins som laddas ner och installeras automatiskt, precis lika lätt som i iPhones app store. Vips har man stöd för att visa Tweets baserat på användarnamn och hashtag, listor med relaterade postningar och automatisk taggning som slår upp förslag både ur den egna bloggen och från stora siter som Yahoo och visar dem i ett 3D-moln.\r\n\r\nMan har i åratal för både traditionella plattformar (operativsystem, publiceringsplattformar etc.) och för multifunktionella webbplatser (intranät, portaler etc) pratat om ”the killer app”, applikationen eller tillämpningen som gör att användarna både vill och bara måste komma tillbaka regelbundet. Det är förstås fortfarande relevant, men kanske är vägen dit inte att lägga pannan i djupa veck på sin egen kammare utan istället att se till att användarna kan skapa killer apps åt dig. \r\n\r\niPhones app store är det uppenbara exemplet, utan den är jag säker på att iPhone aldrig hade blivit den succé den är idag. Ett oanpassningsbart operativsystem som kräver att du kör crapware som Itunes på din dator, för några år sen hade jag bara skrattat åt idén. Men all flexibilitet och anpassning du behöver kommer direkt via appar som oftast är gratis eller i det närmaste gratis. Jag kan bara jämföra med tiden då jag hade en Windows CE-mobil. Man kunde jaga applikationer en hel dag och bara hitta några få, som i regel var väldigt dyra, saknade testversion och som man bara kunde hoppas var kompatibel med just ens egen variant på pekskärm/pekskärmslös, operativsystemsversion etc. Alla mobiltillverkar har följt efter, det går inte att konkurrera utan. Samsungs nya TV har en app store.\r\n\r\nEn ofärdig tanke har dykt upp i mitt huvud – kanske kan man tillämpa detta även på andra typer av plattformar? Tänk ett stort företags intranät där man låter användarna knåpa ihop egna tillämpningar och göra dem lätta att dra och släppa in på startsidan. Kanske blir Växjö-kontorets tidrapporteringsdiagram det alla vill se, eller Karlstads automatiska formulär för semesteransökningar? Majoriteten av användarna i normala företags intranät är ju inte utvecklare, men kanske räcker de som finns och kanske kan man hitta på ett smart sätt där intresserade icke-utvecklare kan sätta ihop egna tillämpningar med enkla verktyg?\r\n![Bild](http://tekniken.nu/uploads/634408008292197781-picture-24.png)", + "html": "Efter att ha tillbringat några kvällar med att sätta upp en WordPress-blogg har jag insett vad som kan avgöra skillnaden mellan en framgångsrik och en misslyckad plattform. Inbyggt i WordPress finns en plugin store med tiotusentals plugins som laddas ner och installeras automatiskt, precis lika lätt som i iPhones app store. Vips har man stöd för att visa Tweets baserat på användarnamn och hashtag, listor med relaterade postningar och automatisk taggning som slår upp förslag både ur den egna bloggen och från stora siter som Yahoo och visar dem i ett 3D-moln.
Man har i åratal för både traditionella plattformar (operativsystem, publiceringsplattformar etc.) och för multifunktionella webbplatser (intranät, portaler etc) pratat om ”the killer app”, applikationen eller tillämpningen som gör att användarna både vill och bara måste komma tillbaka regelbundet. Det är förstås fortfarande relevant, men kanske är vägen dit inte att lägga pannan i djupa veck på sin egen kammare utan istället att se till att användarna kan skapa killer apps åt dig.
iPhones app store är det uppenbara exemplet, utan den är jag säker på att iPhone aldrig hade blivit den succé den är idag. Ett oanpassningsbart operativsystem som kräver att du kör crapware som Itunes på din dator, för några år sen hade jag bara skrattat åt idén. Men all flexibilitet och anpassning du behöver kommer direkt via appar som oftast är gratis eller i det närmaste gratis. Jag kan bara jämföra med tiden då jag hade en Windows CE-mobil. Man kunde jaga applikationer en hel dag och bara hitta några få, som i regel var väldigt dyra, saknade testversion och som man bara kunde hoppas var kompatibel med just ens egen variant på pekskärm/pekskärmslös, operativsystemsversion etc. Alla mobiltillverkar har följt efter, det går inte att konkurrera utan. Samsungs nya TV har en app store.
En ofärdig tanke har dykt upp i mitt huvud – kanske kan man tillämpa detta även på andra typer av plattformar? Tänk ett stort företags intranät där man låter användarna knåpa ihop egna tillämpningar och göra dem lätta att dra och släppa in på startsidan. Kanske blir Växjö-kontorets tidrapporteringsdiagram det alla vill se, eller Karlstads automatiska formulär för semesteransökningar? Majoriteten av användarna i normala företags intranät är ju inte utvecklare, men kanske räcker de som finns och kanske kan man hitta på ett smart sätt där intresserade icke-utvecklare kan sätta ihop egna tillämpningar med enkla verktyg?",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "Glöm killer apps - du behöver en killer app store",
+ "meta_description": " borde det gälla även funktionalitet och inte bara innehåll?",
+ "author_id": 6,
+ "created_at": 1305204300000,
+ "created_by": 6,
+ "updated_at": 1305204300000,
+ "updated_by": 6,
+ "published_at": 1305204300000,
+ "published_by": 6
+ },
+ {
+ "id": 506,
+ "title": "Chrome får inbyggd PDF-skrivare",
+ "slug": "chrome-far-inbyggd-pdf-skrivare",
+ "markdown": "\r\n\r\nGoogle Chrome upphör aldrig att förvåna, på ett postivt sätt!\r\n\r\nIdag när jag skulle skriva ut upptäckte jag en PDF-skrivare i listan jag aldrig sett förut. En snabb Googling senare visar det sig att utvecklarkanalen för Chrome har fått en PDF-skrivarfunktion inbyggd direkt i webbläsaren. Det är en funktion som jag använder väldigt ofta och det är extremt skönt att inte behöva installera den separat på varje dator (och betala för den).\r\n\r\n\r\n\r\n\r\n\r\nI ärlighetens namn så blev det en ganska stor PDF-fil och kvaliteten blev inte helt 100. Men jag är övertygad om att detta kommer att vara slipat på till dess att funktionen letar sig fram till beta- och stable-kanalerna.\r\n\r\n![Bild](http://tekniken.nu/uploads/chrome_print.jpg)",
+ "html": "
Google Chrome upphör aldrig att förvåna, på ett postivt sätt!
Idag när jag skulle skriva ut upptäckte jag en PDF-skrivare i listan jag aldrig sett förut. En snabb Googling senare visar det sig att utvecklarkanalen för Chrome har fått en PDF-skrivarfunktion inbyggd direkt i webbläsaren. Det är en funktion som jag använder väldigt ofta och det är extremt skönt att inte behöva installera den separat på varje dator (och betala för den).
I ärlighetens namn så blev det en ganska stor PDF-fil och kvaliteten blev inte helt 100. Men jag är övertygad om att detta kommer att vara slipat på till dess att funktionen letar sig fram till beta- och stable-kanalerna.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Chrome får inbyggd PDF-skrivare", + "meta_description": "", + "author_id": 6, + "created_at": 1306144200000, + "created_by": 6, + "updated_at": 1306144200000, + "updated_by": 6, + "published_at": 1306144200000, + "published_by": 6 + }, + { + "id": 508, + "title": "Webbläsare genom tiderna", + "slug": "webblasare-genom-tiderna", + "markdown": "\r\n\r\nSchemat visar hur populära olika webbläsare har varit genom tiderna. Själv saknar jag Mosaic lite i toppen...\r\n\r\n\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/633707291283107022-IE_logo.png)", + "html": "Schemat visar hur populära olika webbläsare har varit genom tiderna. Själv saknar jag Mosaic lite i toppen...
Igår presenterades Mango med så många nyheter att det nästan är löjligt. Här är en lista över de viktigaste enligt mitt tycke.
Massor med ny funktionalitet
Multitasking och Taskswitching– Att endast kunna backa i historiken utan att kunna gå framåt i historiken har känts osmidigt, nu kan man välja fritt och det ser ut att funka mycket bra och smidigt.
Förbättringar i poeple hubben – Stöd för Twitter samt att det nu är möjligt att gruppera och samla olika kontakter.
Office 365 och Skydrive i office hubben - Enklare att jobba med mobil/dator på samma dokument utan att behöva en egen sharepoint server.
Internet Explorer 9 mobile – Snabb och modern webbläsare med bra html 5 stöd och prestanda som är bättre än motståndarna.
Flera livetiles per applikation och djuplänkning – Kommer öka värdet på livetiles för de flesta applikationer.
Fler språk (inklusive svenska) – Jag föredrar engelskt menysystem men svensk rättstavning och ett helsvenskt tangentbord är förstås efterlängtat.
Stöd för privata och beta marketplace - Ett måste för att kunna slå igenom på företagsmarknaden.
Länkade inboxar – Just nu ”slösar” jag bort två tiles på min telefon, hotmail och outlook och här skulle jag förstås vilja ha en gemensam siffra eftersom båda mailboxarna är lika viktiga.
1500 nya API inklusive direkt åtkomst till kamera och gyro/kompass, socket etc – Möjliggör en stor mängd nya typer av applikationer.
Kameran kommer ihåg inställningarna – Nån har hittat denna doldis i emulatorn, äntligen säger alla.
Bing Vision – Det här är faktiskt hur coolt som helst. Sök med hjälp av kameran, stöder streckkoder böcker, dvds och mer. Översätt text från bilder.
Tasks från outlook – Det finns förstås alternativa todo listor men det är skönt att inte lägga till beroenden från ytterliga tjänster.
Lync stöd – Har inte använt lync än men detta verkar onekligen som en bra grej.
Inbyggt stöd för messenger och facebook chat – Har dessutom intelligent switchining så att telefonen kan välja hur kommunikationen ska gå.
Facebook checkin – Nu har jag aldrig checkat in överhuvudtaget men det kan förstås bli mer intressant när mer och mer information aggregeras.
Egna ringsignaler – Jag gillar iofs ringsignalerna som följer med men det vore förstås kul att få välja egna.
+ etc m.m osv så mycket att det nästan känns övermäktigt att sätta sig in i alla delar!
Titta själv
För den som vill ha informationen lättsmält i videoform så kan man få en 10 minuteres executive summary av Joe Belfiore här.
Med så här många nya funktioner kan man nästan tro att det inte finns nåt alls inbyggt i telefonen idag. Det är lätt att anse att nuvarande versionen igentligen släpptes för tidigt men samtidigt förstår man varför det var viktigt att släppa en tidig då det redan finns många utvecklare och där Microsoft haft en stabil grund att stå på vilket gjort att det gått så snabbt att bygga vidare.
Mango kommer göra att det känns som en helt ny mobil och den kommer definitvt ikapp både Android och iPhone när det gäller funktioner samt tillför unika aspekter som inte finns nån annanstans.
Ett utvecklarsläpp på g?
Ryktet säger att det kan dyka upp nåt sätt för utvecklare att installera mango redan innan den släpps för allmänheten, annars är det hösten som gäller.
Närmaste dagarna/veckorna kommer det att dyka upp fler detaljer allteftersom emulatorn från SDK:n analyseras och låses upp. Det är onekligen en spännande höst som kommer.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Mangonyheter - 24:e maj", + "meta_description": "", + "author_id": 1089, + "created_at": 1306318500000, + "created_by": 1089, + "updated_at": 1306318500000, + "updated_by": 1089, + "published_at": 1306318500000, + "published_by": 1089 + }, + { + "id": 514, + "title": "Översätt med Wikipedia", + "slug": "oversatt-med-wikipedia", + "markdown": "\r\n\r\nNär man översätter texter från svenska till engelska tycker jag ofta att vanliga meningar och grammatiska konstruktioner flyter på bra, men där man fastnar är på specifika ord och uttryck. Tyda.se tycker jag är det bästa svensk-engelska onlinelexikonet, med både möjlighet att föreslå nya ord och uttalshjälp. Men ibland är ett lexikon inte tillräckligt, särskilt när det gäller fackuttryck. Wikipedia har två funktioner som jag använder mycket när ett lexikon inte räcker till:\r\n1) Visa sidan på engelska:\r\nPå alla sidor på svenska Wikipedia som har en mostsvarande sida på engelska (eller andra språk) så finns direktlänkar till de andra språkversionerna längst ner till vänster:\r\n\r\n\r\n\r\nDenna funktion använder jag otroligt ofta, särskilt för affärstermer och musiktermer (tonart heter key på engelska för övrigt)\r\n2) Wikipedias systersite Wiktionary har en lista på svenska talesätt, med översättningar till engelska:\r\nhttp://en.wiktionary.org/wiki/Category:Swedish_idioms\r\n\r\n\r\n3) Wiktionarys motsvarande sida med engelska talesätt kan också vara en hjälp ifall man tror att man har rätt uttryck men vill dubbelkolla:\r\nhttp://en.wiktionary.org/wiki/Category:English_idioms\r\n\r\n![Bild](http://tekniken.nu/uploads/634423480488248461-image001.png@01CC1B83.8E302F50__image001.png)", + "html": "När man översätter texter från svenska till engelska tycker jag ofta att vanliga meningar och grammatiska konstruktioner flyter på bra, men där man fastnar är på specifika ord och uttryck. Tyda.se tycker jag är det bästa svensk-engelska onlinelexikonet, med både möjlighet att föreslå nya ord och uttalshjälp. Men ibland är ett lexikon inte tillräckligt, särskilt när det gäller fackuttryck. Wikipedia har två funktioner som jag använder mycket när ett lexikon inte räcker till:
1) Visa sidan på engelska:
På alla sidor på svenska Wikipedia som har en mostsvarande sida på engelska (eller andra språk) så finns direktlänkar till de andra språkversionerna längst ner till vänster:
Denna funktion använder jag otroligt ofta, särskilt för affärstermer och musiktermer (tonart heter key på engelska för övrigt)
2) Wikipedias systersite Wiktionary har en lista på svenska talesätt, med översättningar till engelska:
http://en.wiktionary.org/wiki/Category:Swedish_idioms
3) Wiktionarys motsvarande sida med engelska talesätt kan också vara en hjälp ifall man tror att man har rätt uttryck men vill dubbelkolla:
http://en.wiktionary.org/wiki/Category:English_idioms
Det har gjorts många försök att ersätta kontanter men tyvärr med lagom gott resultat, gissningsvis på grund av att tekniken varit för krånglig och att konsumenterna inte varit redo. Nu verkar det dock som att framtiden börjar hinna ifatt oss och till slut börjar kanske konsumenterna inse att vi är redo att börja betala med mobilen och tekniken för att göra det enkelt finns nu på plats.
Near Field Communication
Tekniken som används kallas för NFC och står för Near Field Communication vilket är ett samlingsnamn på ett flertal tekniker som är designade för att bara ha en räckvidd på några centimeter. NFC väntas användas både för att betala i butiker men också för att kunna överföra pengar mellan varandra. Betalar gör man genom att vifta med telefonen i närheten av NFC läsaren och därefter får man godkänna beloppet på sin egen telefon.
Testas i New York
Google har nyligen lanserat Google Wallet och kommer nu påbörja en testperiod i New York där NFC som finns inbyggd i deras Androidbaserade mobil Nexus S kommer att användas:
http://www.bloomberg.com/news/2011-05-24/google-to-unveil-mobile-payment-service.html
Inför detta har alla kortterminaler i New York bytts ut till en med en NFC läsare högst upp. Tanken är att man betalar med mobilen genom att vifta med den ovanför NFC läsaren som på bild här från McDonalds, alla Starbucks och större kedjor.
Ett alternativ från Square
Igår presenterade Square en tjänst för mobila betalningar kallat Square Register och Square Card Chase där man kan betala med hjälp av sin mobil, Square erbjuder sedan tidigare en liten fyrkantig kortläsare som man kopplar in i sin mobil och därefter kan vem som helst ta betalt med kreditkort, man kan även överföra pengar mellan varandra. Nu ger sig alltså även Square in i matchen om din plånbok. Square drivs av en av skaparna till Twitter Jack Dorsey.
Läs mer om Square och Card Chase här:
https://squareup.com/cardcase#new-york
Vad ska Apple göra?
Ryktet går att Apple inte kommer ha NFC inbyggt i nästa iPhone 5, vad det betyder vet man inte än – kanske har de en annan lösning på gång? Att Apple skulle stå utanför detta är svårt att tro och att de skulle ha råd att vänta till nästa år och låta konkurrenterna hinna före är inte heller troligt speciellt eftersom de redan har en betalningslösning inbyggd i telefonen med sin App Store och iTunes kopplat till användarnas kreditkort.
Som vanligt dröjer det innan ny teknik som involverar antingen rättigheter eller pengar kommer till Sverige och vilka svenska banker som är redo för detta är svårt att se men förhoppningsvis följer de denna utveckling och är beredda på att ge sig in i kampen om din nya plånbok?
Tills dess kommer denna svenska tjänst finnas tillgänglig, kortläsare för iPhone med stöd för smarta kort:
Christian Landgren, New York ;)
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Kampen om din nya plånbok - mobilen!", + "meta_description": "", + "author_id": 1087, + "created_at": 1307442720000, + "created_by": 1087, + "updated_at": 1307442720000, + "updated_by": 1087, + "published_at": 1307442720000, + "published_by": 1087 + }, + { + "id": 516, + "title": "Kvalitet, kvantitet eller unikitet?", + "slug": "kvalitet-kvantitet-eller-unikitet", + "markdown": "\r\n\r\nNu är Mango (dvs Windows Phone 7.5), iPhone 5 och Android 3.1 snart på gång och alla OS börjar ha alla grundläggande funktioner så det är dags att börja skilja dem åt baserat på nånting annat än bara antal funktioner.\r\n\r\nKollar man på de tre stora OSen för mobiler och vad som skiljer dom åt och vad man ska titta på när man väljer telefon så kan man ganska tydligt se en uppdelning i tre delar.\r\n## Kvantitet – Android\r\nHär ser man att fokus är på tekniska möjligheter och många inbyggda funktioner. Det går att byta ut allt och alla utvecklare har tillgång till allt. Alla telefontillverkare har fri möjlighet att byta ut gränsnitt och välja vad som ska ingå men är också ansvarig för att släppa uppdateringar vilket gör att du kan fastna med en gammal version av OSet bara för att tillverkaren hellre släpper massa nya modeller än tar hand om dom gamla. Ett givet val för den som vill pilla med minsta detaljerna på sin telefon och som gärna spenderar tid med att konfigurera och personalisera sin telefon.\r\n## Kvalitet – iPhone\r\niPhone har under lång tid satsat på kvalitet både hård och mjukvarumässigt. Hellre låsa in och begränsa funktioner så länge de som finns inbyggda fungerar som de ska. Det märks dock att ju fler funktioner och fler varianter av hårdvaran tär på kvalitén. Kvalitet märks även på utbudet av applikationer/spel, här finns några riktiga kvalitetstitlar även om det förstås finns mycket skräp också. Vill man ha tillgång till ett massivt urval av snygga appar så är iPhone enda valet just nu.\r\n## Unikitet – Windows Phone 7\r\niPhone har sina ikoner och oftast realistist gränssnitt med rattar, glas, trä och papper. Android spretar lite beroende på tillverkare och applikationerna har sina egna stilar men här sticker WP7 ut genom att genomgående vara enkelt, stilrent, elegant och även de flesta apparna följer metro designen. Funktionsmässigt ligger den efter just nu men när Mango kommer i höst hinner den i fatt med råge. Största styrkan är att den är genomtänkt, designad utifrån användaren, extremt lätt att utveckla till och alla delar hänger ihop på ett snyggt sätt. Välj WP7 redan nu om du är utvecklare men vänta på Mango som kommer i höst om du och saknar nåt du absolut måste ha i nuvarande versionen, annars kan du köpa en idag nu och uppgradera gratis till Mango om några månader.\r\n## Finns det något OS som är bättre än alla andra?\r\nDet finns inget enkelt svar längre utan vi lever i en ganska lyxig tid där vi kan välja fritt mellan 3 olika system som alla passar olika personer och personlighetstyper. Redan innan Android kom så fanns en trogen skara användare, nästan alla som har en iPhone 4 kommer givetsvis köpa en iPhone 5 även om den skulle vara dubbelt så stor, hälften så snabb och dubbelt så dyr som alla andra märken, WP7 har inte hittat hela sin målgrupp ännu men det kommer ändras i samband med Mango speciellt eftersom den först då kommer får en riktig lansering i sverige.\r\n\r\nIntressant nog så känns det likadant med desktop OS och webbläsare. Linux, MacOS och Windows känns alla ”feature complete” och likadant med Firefox, Chrome och IE (9). Det handlar nu om smak och livsstil, ingen kan vara på bäst på allt och ingen är dålig på samma sätt som tidigare när chrome saknade massa finesser, ie var slö och svår att utveckla mot och linux var oanvändarvänlig.\r\n\r\nPersonligen så kommer jag sannolikt köra Windows 8 och Windows Phone 8 när dom kommer och jag har slutat tycka att det var bättre förr...\r\n\r\n![Bild](http://tekniken.nu/uploads/634425155318151790-mobileOS.png)", + "html": "Nu är Mango (dvs Windows Phone 7.5), iPhone 5 och Android 3.1 snart på gång och alla OS börjar ha alla grundläggande funktioner så det är dags att börja skilja dem åt baserat på nånting annat än bara antal funktioner.
Kollar man på de tre stora OSen för mobiler och vad som skiljer dom åt och vad man ska titta på när man väljer telefon så kan man ganska tydligt se en uppdelning i tre delar.
Kvantitet – Android
Här ser man att fokus är på tekniska möjligheter och många inbyggda funktioner. Det går att byta ut allt och alla utvecklare har tillgång till allt. Alla telefontillverkare har fri möjlighet att byta ut gränsnitt och välja vad som ska ingå men är också ansvarig för att släppa uppdateringar vilket gör att du kan fastna med en gammal version av OSet bara för att tillverkaren hellre släpper massa nya modeller än tar hand om dom gamla. Ett givet val för den som vill pilla med minsta detaljerna på sin telefon och som gärna spenderar tid med att konfigurera och personalisera sin telefon.
Kvalitet – iPhone
iPhone har under lång tid satsat på kvalitet både hård och mjukvarumässigt. Hellre låsa in och begränsa funktioner så länge de som finns inbyggda fungerar som de ska. Det märks dock att ju fler funktioner och fler varianter av hårdvaran tär på kvalitén. Kvalitet märks även på utbudet av applikationer/spel, här finns några riktiga kvalitetstitlar även om det förstås finns mycket skräp också. Vill man ha tillgång till ett massivt urval av snygga appar så är iPhone enda valet just nu.
Unikitet – Windows Phone 7
iPhone har sina ikoner och oftast realistist gränssnitt med rattar, glas, trä och papper. Android spretar lite beroende på tillverkare och applikationerna har sina egna stilar men här sticker WP7 ut genom att genomgående vara enkelt, stilrent, elegant och även de flesta apparna följer metro designen. Funktionsmässigt ligger den efter just nu men när Mango kommer i höst hinner den i fatt med råge. Största styrkan är att den är genomtänkt, designad utifrån användaren, extremt lätt att utveckla till och alla delar hänger ihop på ett snyggt sätt. Välj WP7 redan nu om du är utvecklare men vänta på Mango som kommer i höst om du och saknar nåt du absolut måste ha i nuvarande versionen, annars kan du köpa en idag nu och uppgradera gratis till Mango om några månader.
Finns det något OS som är bättre än alla andra?
Det finns inget enkelt svar längre utan vi lever i en ganska lyxig tid där vi kan välja fritt mellan 3 olika system som alla passar olika personer och personlighetstyper. Redan innan Android kom så fanns en trogen skara användare, nästan alla som har en iPhone 4 kommer givetsvis köpa en iPhone 5 även om den skulle vara dubbelt så stor, hälften så snabb och dubbelt så dyr som alla andra märken, WP7 har inte hittat hela sin målgrupp ännu men det kommer ändras i samband med Mango speciellt eftersom den först då kommer får en riktig lansering i sverige.
Intressant nog så känns det likadant med desktop OS och webbläsare. Linux, MacOS och Windows känns alla ”feature complete” och likadant med Firefox, Chrome och IE (9). Det handlar nu om smak och livsstil, ingen kan vara på bäst på allt och ingen är dålig på samma sätt som tidigare när chrome saknade massa finesser, ie var slö och svår att utveckla mot och linux var oanvändarvänlig.
Personligen så kommer jag sannolikt köra Windows 8 och Windows Phone 8 när dom kommer och jag har slutat tycka att det var bättre förr...
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Kvalitet, kvantitet eller unikitet?", + "meta_description": "", + "author_id": 1089, + "created_at": 1307529120000, + "created_by": 1089, + "updated_at": 1307529120000, + "updated_by": 1089, + "published_at": 1307529120000, + "published_by": 1089 + }, + { + "id": 521, + "title": "iOS 5: Befintliga appar i fara", + "slug": "ios-5-befintliga-appar-i-fara", + "markdown": "\r\n\r\nI och med Apples uppdateringen till iOS 5 så släpps många nya funktioner som konkurrerar med, eller rent av direkt krockar med existerande appar på marknaden.\r\n\r\nDet är allmänt känt att det är en farlig affärsmodell för en tredjepartsutvecklare att utveckla mot andra applikationer eller plattformar där ens mjukvara ligger väldigt nära den inbyggda funktionaliteten. Vare sig det är atttäta hål i funktionaliteten eller lägga till funktionalitet som vore väldigt lätt för platformsleverantören själv att lägga till. Oftast ligger mycket av denna funktionalitet redan i leverantörens tidsplan för åtgärder.\r\n\r\nDet är helt enkelt en farlig kamp mot klockan där tredjepartsutvecklaren hela tiden har den överhängande risken av att platformsutvecklaren kommer ikapp dem med funktionalitet som hotar deras egen mjukvara.\r\n\r\nMed Apples lansering av iOS 5 är detta mer uppenbart än någonsin.\r\n\r\nHär är en genomgång av nya funktioner i iOS 5 som potentiellt krockar med specifika appar eller typer av appar.\r\n## Notification Center\r\n\r\n\r\nAlla alerts på en plats.\r\n\r\n\r\n\r\nAppar i fara: Inga direkt, möjligen smått väder- och finans-appar, men de har oftast nischfunktioner som uppväger.\r\n## iMessage\r\n\r\n\r\nAlla meddelanden på en plats. iPad och iPod Touch får meddelandefunktionalitet. Vissa har kallat det FaceTime för meddelanden.\r\n\r\nAppar i fara: Alla appar som skickar gratismeddelanden över Wifi eller 3G. WhatApp Messenger, PingChat, eBuddy Messenger, IM+, m.m. Många kan uppväga med integration mot olika chat-nätverk, såsom Windows Live Messenger, Google Chat, Yahoo! Messenger, m.m.\r\n\r\nÖvrigt: Detta är även ett stort hot mot operatörerna, som kan komma att missa en extremt stor mängd SMS över mobilnätet, som nu kommer gå som data istället.\r\n## Reminders\r\n\r\n\r\nEn app för Att-Göra-listor, som kan synkroniseras mot iCal, Outlook och iCloud.\r\n\r\nAppar i fara: Det finns en uppsjö av appar för Att-Göra-listor, såsom Wunderlist, Awesome Note, Evernote och många, många fler. Många appar i denna kategori erbjuder många mervärden och speciella funktioner, men frågan är om det kommer vara värt för den vanliga användaren när Apple nu erbjuder en inbyggd app.\r\n## Twitter\r\n\r\n\r\nDjup integration mot Twitter direkt i iOS 5. Logga in på ett ställe i iOS och använd över hela plattformen.\r\n\r\nAppar i fara: Alla Twitter-klienter där ute, såsom TweetDeck, Twitterrific, TwitBird, Echofon och väldigt många fler. Vissa appar i kategorin har även integration mot andra plattformar, såsom Facebook, som kan uppväga detta. De olika Twitter-klienterna har oftast helt olika sätt att visa upp samma information mellan sig och det ökar chansen att folk hittar en egen favorit utöver standard-klienten. Men problemet med att en inbyggd klient oftast går först för vanliga användare gör att användandet av tredjeparts-klienter potentiellt kan minska drastiskt.\r\n## Camera\r\n\r\n\r\nDen inbyggda appen för kameran får ny funktionalitet. Man kommer kunna öppna Camera-appen via Låsskärmen, men dessutom ta bild genom att trycka på Volym Upp-knappen och slutligen synkronisera alla bilder via iCloud.\r\n\r\n \r\n\r\n\r\n\r\nAppar i fara: Framförallt kommer Camera+ vara ganska upprörda, då de stängdes av från AppStore under en längre tid för att de lagt till funktionaliteten att ta bild via Volym Upp-knappen. Annars är det väl olika fotodelnings-appar som hamnar i farozonen, men också appar som synkroniserar filer till molnet, t.ex. Dropbox.\r\n## Photos\r\n\r\n\r\nFörbättrad bildförbättring. Nu kan man i appen förbättra bilder genom beskärning, rotation, ta bort röda ögon och automatisk bildförbättring.\r\n\r\nAppar i fara: Det finns flera appar som i princip blir helt onödiga i och med denna funktionalitet. Detta gäller främst nisch-appar såsom diverse appar för beskärning, rotation och de som tar bort röda ögon. Väldigt många av dessa är en-funktions-appar.\r\n## Safari\r\n\r\n\r\nFörbättrad webläsare. Det är inte främst webbläsaren i sig som är den stora nyheten utan kringfunktionerna i den, såsom Safari Reader som visar webartiklar utan reklam och andra element omkring, för bättre läsning utan distraktioner. Reading List gör att man kan spara sidor för att läsa senare, som använder iCloud för att hålla detta synkroniserat. På iPad får man även flikar direkt i webbläsaren.\r\n\r\nAppar i fara: Detta är ett direkt hot mot Instapaper och Read It Later, som har ovan funktionalitet som kärnverksamhet, men också tekniker som Readability inbyggt, som gör innehåll mer läsbar utan massa distraktioner omkring sidan. Den enda punkt dessa produkter har som övertag är att de inte bara fungerar i en Apple-miljö, utan överallt.\r\n\r\nSkaparen av Instapaper har vinklat detta till något positivt, då han ser detta som en mainstreamprodukt som kan göra folk intresserade av funktionaliteten och när de vill ha en \"bättre\" premiumprodukt så kommer de vända sig till Instapaper.\r\n## Summering\r\n\r\n\r\nMånga skulle kanske påstå att Apple, i och med iOS 5, gör sig till konkurrent med många av sina egna tredjepartsutvecklare och kommer att orsaka dem stora förluster i intäkter.\r\n\r\nFörmodligen kan några appar som krockar med funktionalitet som kommer med iOS 5 att gå under och kanske sluta utvecklas eller helt dras tillbaka från AppStore. Men som sagt ovan så har dessa tredjepartsutvecklare hela tiden vetat vad de gett sig in på genom att nischa in sig på funktionalitet som de vetat att Apple närsomhelst kunnat lansera eller förbättra. De får se till att njuta av sina framgångar hela vägen fram till nu och antingen utveckla sina produkter eller lägga ner.\r\n\r\nDe tredjepartsutvecklare som bidrar med mervärde och speciell funktionalitet har inget att frukta här, utan kanske t.o.m. har en möjlighet i lanseringar som detta, genom att den stora allmänheten exponeras för en funktionalitet och blir intresserade, men vill ha något som Apple inte erbjuder och hittar då lätt till bättre premiumtjänster hos tredjeparter.\r\n\r\n![Bild](http://tekniken.nu/uploads/634430524403008708-iOS5.png)", + "html": "I och med Apples uppdateringen till iOS 5 så släpps många nya funktioner som konkurrerar med, eller rent av direkt krockar med existerande appar på marknaden.
Det är allmänt känt att det är en farlig affärsmodell för en tredjepartsutvecklare att utveckla mot andra applikationer eller plattformar där ens mjukvara ligger väldigt nära den inbyggda funktionaliteten. Vare sig det är atttäta hål i funktionaliteten eller lägga till funktionalitet som vore väldigt lätt för platformsleverantören själv att lägga till. Oftast ligger mycket av denna funktionalitet redan i leverantörens tidsplan för åtgärder.
Det är helt enkelt en farlig kamp mot klockan där tredjepartsutvecklaren hela tiden har den överhängande risken av att platformsutvecklaren kommer ikapp dem med funktionalitet som hotar deras egen mjukvara.
Med Apples lansering av iOS 5 är detta mer uppenbart än någonsin.
Här är en genomgång av nya funktioner i iOS 5 som potentiellt krockar med specifika appar eller typer av appar.
Notification Center
Appar i fara: Inga direkt, möjligen smått väder- och finans-appar, men de har oftast nischfunktioner som uppväger.
iMessage
Alla meddelanden på en plats. iPad och iPod Touch får meddelandefunktionalitet. Vissa har kallat det FaceTime för meddelanden.
Appar i fara: Alla appar som skickar gratismeddelanden över Wifi eller 3G. WhatApp Messenger, PingChat, eBuddy Messenger, IM+, m.m. Många kan uppväga med integration mot olika chat-nätverk, såsom Windows Live Messenger, Google Chat, Yahoo! Messenger, m.m.
Övrigt: Detta är även ett stort hot mot operatörerna, som kan komma att missa en extremt stor mängd SMS över mobilnätet, som nu kommer gå som data istället.
Reminders
En app för Att-Göra-listor, som kan synkroniseras mot iCal, Outlook och iCloud.
Appar i fara: Det finns en uppsjö av appar för Att-Göra-listor, såsom Wunderlist, Awesome Note, Evernote och många, många fler. Många appar i denna kategori erbjuder många mervärden och speciella funktioner, men frågan är om det kommer vara värt för den vanliga användaren när Apple nu erbjuder en inbyggd app.
Djup integration mot Twitter direkt i iOS 5. Logga in på ett ställe i iOS och använd över hela plattformen.
Appar i fara: Alla Twitter-klienter där ute, såsom TweetDeck, Twitterrific, TwitBird, Echofon och väldigt många fler. Vissa appar i kategorin har även integration mot andra plattformar, såsom Facebook, som kan uppväga detta. De olika Twitter-klienterna har oftast helt olika sätt att visa upp samma information mellan sig och det ökar chansen att folk hittar en egen favorit utöver standard-klienten. Men problemet med att en inbyggd klient oftast går först för vanliga användare gör att användandet av tredjeparts-klienter potentiellt kan minska drastiskt.
Camera
Den inbyggda appen för kameran får ny funktionalitet. Man kommer kunna öppna Camera-appen via Låsskärmen, men dessutom ta bild genom att trycka på Volym Upp-knappen och slutligen synkronisera alla bilder via iCloud.
Appar i fara: Framförallt kommer Camera+ vara ganska upprörda, då de stängdes av från AppStore under en längre tid för att de lagt till funktionaliteten att ta bild via Volym Upp-knappen. Annars är det väl olika fotodelnings-appar som hamnar i farozonen, men också appar som synkroniserar filer till molnet, t.ex. Dropbox.
Photos
Förbättrad bildförbättring. Nu kan man i appen förbättra bilder genom beskärning, rotation, ta bort röda ögon och automatisk bildförbättring.
Appar i fara: Det finns flera appar som i princip blir helt onödiga i och med denna funktionalitet. Detta gäller främst nisch-appar såsom diverse appar för beskärning, rotation och de som tar bort röda ögon. Väldigt många av dessa är en-funktions-appar.
Safari
Förbättrad webläsare. Det är inte främst webbläsaren i sig som är den stora nyheten utan kringfunktionerna i den, såsom Safari Reader som visar webartiklar utan reklam och andra element omkring, för bättre läsning utan distraktioner. Reading List gör att man kan spara sidor för att läsa senare, som använder iCloud för att hålla detta synkroniserat. På iPad får man även flikar direkt i webbläsaren.
Appar i fara: Detta är ett direkt hot mot Instapaper och Read It Later, som har ovan funktionalitet som kärnverksamhet, men också tekniker som Readability inbyggt, som gör innehåll mer läsbar utan massa distraktioner omkring sidan. Den enda punkt dessa produkter har som övertag är att de inte bara fungerar i en Apple-miljö, utan överallt.
Skaparen av Instapaper har vinklat detta till något positivt, då han ser detta som en mainstreamprodukt som kan göra folk intresserade av funktionaliteten och när de vill ha en \"bättre\" premiumprodukt så kommer de vända sig till Instapaper.
Summering
Många skulle kanske påstå att Apple, i och med iOS 5, gör sig till konkurrent med många av sina egna tredjepartsutvecklare och kommer att orsaka dem stora förluster i intäkter.
Förmodligen kan några appar som krockar med funktionalitet som kommer med iOS 5 att gå under och kanske sluta utvecklas eller helt dras tillbaka från AppStore. Men som sagt ovan så har dessa tredjepartsutvecklare hela tiden vetat vad de gett sig in på genom att nischa in sig på funktionalitet som de vetat att Apple närsomhelst kunnat lansera eller förbättra. De får se till att njuta av sina framgångar hela vägen fram till nu och antingen utveckla sina produkter eller lägga ner.
De tredjepartsutvecklare som bidrar med mervärde och speciell funktionalitet har inget att frukta här, utan kanske t.o.m. har en möjlighet i lanseringar som detta, genom att den stora allmänheten exponeras för en funktionalitet och blir intresserade, men vill ha något som Apple inte erbjuder och hittar då lätt till bättre premiumtjänster hos tredjeparter.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "iOS 5: Befintliga appar i fara", + "meta_description": "", + "author_id": 1096, + "created_at": 1307456100000, + "created_by": 1096, + "updated_at": 1307456100000, + "updated_by": 1096, + "published_at": 1307456100000, + "published_by": 1096 + }, + { + "id": 522, + "title": "Mitt liv i molnet", + "slug": "mitt-liv-i-molnet", + "markdown": "\r\n\r\nAtt placera sina data i molnet, eller på internet som vi sa för några år sedan, har gått från abstrakt hype till ett ovärderligt sätt att kombinera säker lagring, åtkomst överallt och enkla funktioner för att ge andra tillgång till valda delar av ditt digitala liv. Här är mina favoritmolntjänster!\r\n## Dropbox\r\nDropbox är en generell molntjänst för filer. Man installerar en applikation på sin dator (Windows, Mac eller Linux) som skapar en synkroniserad mapp. Allt som läggs i den mappen synkroniseras automatiskt till Dropbox webbtjänst, och till alla andra datorer där du har Dropbox installerat. Genom ett enkelt högerklick skapar du en hemlig länk till en utvald fil som du kan skicka till någon. Det finns också inbyggda funktioner för att visa foton i album. Självklart finns en iPhone-app som gör att du alltid har tillgång till dina filer även mobilt och kan dela ut dem direkt därifrån (det mesta hämtas över nätet men du kan välja att spara vissa filer lokalt om du vill ha tillgång till dem när du saknar uppkoppling). 2 GB utrymme får man gratis. Jag använder Dropbox till att spara privata dokument (inskannade fakturor, personbevis etc.), lite bilder, hela mitt privata Subversion-repository, mina musikprojekt (Reaper-projektfiler och tillhörande ljudfiler) och en Liberkey-installation med applikationer som går att köra utan installation. Dropbox har vi bloggat om tidigare.\r\n\r\nNackdelar: 2G gratisutrymme räcker inte långt (man kan dock få mer gratis genom referrals), det har också varit lite hallå om att Dropbox har lämnat ut sparade filer till amerikanska myndigheter.\r\n\r\nAlternativ: iCloud, Sugar Sync\r\n## Evernote\r\nEvernote är en tjänst för att spara olika typer av anteckningar, vanlig text, inskannade dokument, foton etc. Allt synkas till webben, och det finns förstås en iPhone-app och en applikation till datorn. Till skillnad från Dropbox så är filerna alltid tillgängliga offline i Evernote utan att du behöver göra något extra. En av de coolaste funktionerna i Evernote är att det körs automatisk OCR på alla foton, vilket gör att text i skannade eller fotade dokument blir sökbar. Det finns också en extension till Chrome som presenterar sökresultat från Evernote varje gång du söker på Google.\r\n\r\nNackdelar: OCR görs bara för sökning (OCR:ad text går inte att komma åt).\r\n\r\nAlternativ: Springpad, Simplenote, PlainText, Google Notebook\r\n## Backblaze\r\nBackblaze är en backuptjänst som kopierar hela din dator till molnet. Man installerar en liten applikation som kontinuerligt synkar filerna till webbtjänsten. Man kan när som helst via webbgränssnittet hämta filerna till valfri dator, vilket gör det till en tjänst där du kan komma åt filer utöver själva backupen. Första backupen tar väldigt lång tid (kan ta upp till en månad), men sen funkar det väldigt smärtfritt. Backblaze har vi bloggat om tidigare.\r\n\r\nNackdelar: Kostar pengar (fast bara $4 per månad)\r\n\r\nAlternativ: Mozy, Carbonite\r\n## SoundCloud\r\nSoundCloud är en molntjänst för musik. Den är inte mest avsedd som backup, utan mer för att kunna exponera sina alster och dela dem med andra. Spelaren är gjord i HTML5 och funkar därmed på iPhone och iOS (det finns även en iPhone-app) och kvaliteten på filerna är riktigt bra (många andra tjänster komprimerar och förstör låtarna ganska mycket). 120 minuter musik får man lagra gratis, och det finns massor av sociala funktioner som grupper, vänner och meddelanden. Det finns också en riktigt bra spelare för FaceBook, och många röster tror att en bandpage på FaceBook med SoundCloud-spelare kommer att bli den givna ersättaren för Myspace. SoundCloud har vi bloggat om tidigare.\r\n\r\nNackdelar: Inte så många möjligheter att styla sin profil (snarare fördel?), inte så mycket utrymme gratis.\r\n\r\nAlternativ: SoundClick, Reverbnation\r\n## Flickr\r\nFlickr känner nog de flesta till, en av de mest etablerade tjänsterna för foton. Jag tycker att Flickr är bättre än konkurrenterna. Flickr har väldigt mycket användare och är därmed spritt och välkänt. Det finns ett bra API som har banat väg för mängder av tredjepartstillämpningar och integrationer av olika slag. Flickr har också bra stöd för hemliga länkar där man kan dela dolda album med utvalda och fullständig copyright-hantering där man kan erbjuda sina foton för köp. Med ett betalkonto får man oändligt med utrymme, så Flickr kan funka bra även som säkerhetsbackup för alla ens foton.\r\n\r\nNackdelar: Inte så bra iPhone-stöd, lite meckig sortering av foton.\r\n\r\nAlternativ: Picasa\r\n## Fler?\r\nVilka är dina favoritmolntjänster? Posta i kommentarerna!\r\n\r\n![Bild](http://tekniken.nu/uploads/634430524446602179-cloud-6.jpg)", + "html": "Att placera sina data i molnet, eller på internet som vi sa för några år sedan, har gått från abstrakt hype till ett ovärderligt sätt att kombinera säker lagring, åtkomst överallt och enkla funktioner för att ge andra tillgång till valda delar av ditt digitala liv. Här är mina favoritmolntjänster!
Dropbox
Dropbox är en generell molntjänst för filer. Man installerar en applikation på sin dator (Windows, Mac eller Linux) som skapar en synkroniserad mapp. Allt som läggs i den mappen synkroniseras automatiskt till Dropbox webbtjänst, och till alla andra datorer där du har Dropbox installerat. Genom ett enkelt högerklick skapar du en hemlig länk till en utvald fil som du kan skicka till någon. Det finns också inbyggda funktioner för att visa foton i album. Självklart finns en iPhone-app som gör att du alltid har tillgång till dina filer även mobilt och kan dela ut dem direkt därifrån (det mesta hämtas över nätet men du kan välja att spara vissa filer lokalt om du vill ha tillgång till dem när du saknar uppkoppling). 2 GB utrymme får man gratis. Jag använder Dropbox till att spara privata dokument (inskannade fakturor, personbevis etc.), lite bilder, hela mitt privata Subversion-repository, mina musikprojekt (Reaper-projektfiler och tillhörande ljudfiler) och en Liberkey-installation med applikationer som går att köra utan installation. Dropbox har vi bloggat om tidigare.
Nackdelar: 2G gratisutrymme räcker inte långt (man kan dock få mer gratis genom referrals), det har också varit lite hallå om att Dropbox har lämnat ut sparade filer till amerikanska myndigheter.
Alternativ: iCloud, Sugar Sync
Evernote
Evernote är en tjänst för att spara olika typer av anteckningar, vanlig text, inskannade dokument, foton etc. Allt synkas till webben, och det finns förstås en iPhone-app och en applikation till datorn. Till skillnad från Dropbox så är filerna alltid tillgängliga offline i Evernote utan att du behöver göra något extra. En av de coolaste funktionerna i Evernote är att det körs automatisk OCR på alla foton, vilket gör att text i skannade eller fotade dokument blir sökbar. Det finns också en extension till Chrome som presenterar sökresultat från Evernote varje gång du söker på Google.
Nackdelar: OCR görs bara för sökning (OCR:ad text går inte att komma åt).
Alternativ: Springpad, Simplenote, PlainText, Google Notebook
Backblaze
Backblaze är en backuptjänst som kopierar hela din dator till molnet. Man installerar en liten applikation som kontinuerligt synkar filerna till webbtjänsten. Man kan när som helst via webbgränssnittet hämta filerna till valfri dator, vilket gör det till en tjänst där du kan komma åt filer utöver själva backupen. Första backupen tar väldigt lång tid (kan ta upp till en månad), men sen funkar det väldigt smärtfritt. Backblaze har vi bloggat om tidigare.
Nackdelar: Kostar pengar (fast bara $4 per månad)
SoundCloud
SoundCloud är en molntjänst för musik. Den är inte mest avsedd som backup, utan mer för att kunna exponera sina alster och dela dem med andra. Spelaren är gjord i HTML5 och funkar därmed på iPhone och iOS (det finns även en iPhone-app) och kvaliteten på filerna är riktigt bra (många andra tjänster komprimerar och förstör låtarna ganska mycket). 120 minuter musik får man lagra gratis, och det finns massor av sociala funktioner som grupper, vänner och meddelanden. Det finns också en riktigt bra spelare för FaceBook, och många röster tror att en bandpage på FaceBook med SoundCloud-spelare kommer att bli den givna ersättaren för Myspace. SoundCloud har vi bloggat om tidigare.
Nackdelar: Inte så många möjligheter att styla sin profil (snarare fördel?), inte så mycket utrymme gratis.
Alternativ: SoundClick, Reverbnation
Flickr
Flickr känner nog de flesta till, en av de mest etablerade tjänsterna för foton. Jag tycker att Flickr är bättre än konkurrenterna. Flickr har väldigt mycket användare och är därmed spritt och välkänt. Det finns ett bra API som har banat väg för mängder av tredjepartstillämpningar och integrationer av olika slag. Flickr har också bra stöd för hemliga länkar där man kan dela dolda album med utvalda och fullständig copyright-hantering där man kan erbjuda sina foton för köp. Med ett betalkonto får man oändligt med utrymme, så Flickr kan funka bra även som säkerhetsbackup för alla ens foton.
Nackdelar: Inte så bra iPhone-stöd, lite meckig sortering av foton.
Alternativ: Picasa
Fler?
Vilka är dina favoritmolntjänster? Posta i kommentarerna!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Mitt liv i molnet", + "meta_description": "", + "author_id": 6, + "created_at": 1307697600000, + "created_by": 6, + "updated_at": 1307697600000, + "updated_by": 6, + "published_at": 1307697600000, + "published_by": 6 + }, + { + "id": 524, + "title": "Smidigt meddela ankomsttid med Telia Navigator", + "slug": "smidigt-meddela-ankomsttid-med-telia-navigator", + "markdown": "\r\n\r\nOm du använder Telia Navigator när du kör bil (eller åker kollektivt) till nästa familjemiddag så kan du enkelt hålla dina nära och kära uppdaterade om när du anländer. Du kan dela med dig av din position och beräknade rutt genom SMS, Email, Twitter eller Facebook. Mottagaren kan då enkelt se var du är och när du kommer fram.\r\n\r\nI din telefon ser du den numera ”klassiska” navigatorn som guidar dig rätt\r\n\r\nOch dina nära och kära ser följande bild i sin telefon. Karta med din position, avstånd kvar samt beräknad ankomsttid uppdateras var 5e minut.\r\n\r\n\r\n\r\nEnkelt och praktiskt. Perfekt inför midsommar – så att nubben inte hinner bli varm – och potatisen inte bli kall.\r\n\r\n![Bild](http://tekniken.nu/uploads/634431349703829739-image002.png@01CC25C3.2C7ECE20__image002.png)", + "html": "Om du använder Telia Navigator när du kör bil (eller åker kollektivt) till nästa familjemiddag så kan du enkelt hålla dina nära och kära uppdaterade om när du anländer. Du kan dela med dig av din position och beräknade rutt genom SMS, Email, Twitter eller Facebook. Mottagaren kan då enkelt se var du är och när du kommer fram.
I din telefon ser du den numera ”klassiska” navigatorn som guidar dig rätt
Och dina nära och kära ser följande bild i sin telefon. Karta med din position, avstånd kvar samt beräknad ankomsttid uppdateras var 5e minut.
Enkelt och praktiskt. Perfekt inför midsommar – så att nubben inte hinner bli varm – och potatisen inte bli kall.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Smidigt meddela ankomsttid med Telia Navigator till iPhone", + "meta_description": "", + "author_id": 1097, + "created_at": 1308318600000, + "created_by": 1097, + "updated_at": 1308318600000, + "updated_by": 1097, + "published_at": 1308318600000, + "published_by": 1097 + }, + { + "id": 535, + "title": "Semestersammanfattning av WP7", + "slug": "semestersammanfattning-av-wp7", + "markdown": "\r\n\r\nDet börjar vara svårt att hänga med i alla WP7 nyheterna nu och det lär bli ännu svårare när Mango släpps. Här har jag försökt sammanfatta de största nyheterna senaste månaderna.\r\n\r\n\r\n## Svårt att köpa en telefon\r\nÄven där WP7 är lanserad officellt är det nästan omöjligt att faktiskt köpa en telefon. Det är inte brist på hårdvaran utan kunskapen/fördomarna hos återförsäljarna. Många tolkar WP7 som Windows Mobile 6 med plattare ikoner och då är det inte konstigt att man avråder. Förhoppningsvis så kommer det ändras när fler och fler faktiskt upptäcker att det är en grym ny plattform. Av ren nyfiken gick jag fram till det jättestora bordet på El-Giganten på kungsgatan i stockholm och tittade igenom det stora utbudet och hittade en(1) WP7 mobil gömd i högen knappt märkt så att man ens såg att det var en Windows Phone 7 mobil. Det är förstås brist på roliga modeller och framförallt i sverige och även här så kommer hösten med nya modeller speciellt anpassade efter Mango.\r\n## Svensk mobil\r\nKöper man en WP7 idag så kommer den vara på engelska rakt igenom inklusive rättstavning och tangentbord (även om åäö går att få fram genom långa tryck på a och o). Med Mango så kommer man få tillgång till andra språk i rättstavning och tangentbord men själva Oset ska tydligen kräva en OEM flashning dvs nåt man inte kan göra själv. Vill du ha en 100%ig svensk mobil så bör du vänta. Kan du leva med engelska menyer, eller som jag väljer engelska med flit då jag förstår termerna bättre så kan du köpa en redan idag och veta att det går fullt utmärkt att använda den på svenska redan idag (vissa undantag finns gällande marketplace och sånt men det går ta sig runt det mesta).\r\n## 24000+ applikationer 7000+ utvecklare\r\nDet har tyvärr dykt upp en hel del \"spam\" appar i form av hundratals appar som i princip bara skiljer sig på ikonen och vilken url den hämtar rss data. Plockar man bort alla dessa så finns det dock mycket fler kvalitetsspel och appar än tidigare. Luckorna som finns kommer sannolikt tätas när Mango kommer senare i år då nya APIer kommer att möjliggöra mängder av nya typer av applikationer.\r\n## Hela 77 Xbox Live spel\r\nAtt ett spel har stöd för achivements kanske inte alla bryr sig om men det är generellt väldigt hög kvalitet på dessa titlar och 77 stycken att välja på gör att alla nog kan hitta sin favorit.\r\n\r\nNågra av de hetaste titlarna:\r\n\r\nAngry birdsPlants VS ZombiesPAC-MAN Championship Edition DXDoodle JumpSuper Monkey BallTiki Towers\r\n## När kommer Mango?\r\nDet finns inga säkra källor men det ryktas om september/oktober. Förhoppningsvis går utrullningen smidigare än NODO som tydligen fortfarande inte är ute till alla telefoner i alla länder ännu.\r\n\r\nKommer man få tillgång till Mango som utvecklare innan telefonerna släpps?\r\n\r\nJa, redan idag finns beta verktyg och registrerade användarehar nu fått tillgång till Mango via Microsoft Connect.Det är inte helt utan risker då en uppdaterad telefon tappar sin vanliga support och den nya supporten för uppdaterade telefoner inte kommit igång ännu. Uppdaterade telefoner hamnar också utanför den vanliga uppdateringssnurran så innan mango kommer skarpt kommer man behöva återställa en backup till innan man uppdaterade.\r\n\r\nLäs mer på officiella bloggen\r\n\r\nEn uppdaterad lista över alla funktioner som är kända som kommer med Mango\r\n\r\nMobiletechworld har en bra sammanfattning över alla nya funktioner som kommer med Mango.\r\n\r\n![Bild](http://tekniken.nu/uploads/634450289895495892-mango-sommar.png)", + "html": "Det börjar vara svårt att hänga med i alla WP7 nyheterna nu och det lär bli ännu svårare när Mango släpps. Här har jag försökt sammanfatta de största nyheterna senaste månaderna.
Svårt att köpa en telefon
Även där WP7 är lanserad officellt är det nästan omöjligt att faktiskt köpa en telefon. Det är inte brist på hårdvaran utan kunskapen/fördomarna hos återförsäljarna. Många tolkar WP7 som Windows Mobile 6 med plattare ikoner och då är det inte konstigt att man avråder. Förhoppningsvis så kommer det ändras när fler och fler faktiskt upptäcker att det är en grym ny plattform. Av ren nyfiken gick jag fram till det jättestora bordet på El-Giganten på kungsgatan i stockholm och tittade igenom det stora utbudet och hittade en(1) WP7 mobil gömd i högen knappt märkt så att man ens såg att det var en Windows Phone 7 mobil. Det är förstås brist på roliga modeller och framförallt i sverige och även här så kommer hösten med nya modeller speciellt anpassade efter Mango.
Svensk mobil
Köper man en WP7 idag så kommer den vara på engelska rakt igenom inklusive rättstavning och tangentbord (även om åäö går att få fram genom långa tryck på a och o). Med Mango så kommer man få tillgång till andra språk i rättstavning och tangentbord men själva Oset ska tydligen kräva en OEM flashning dvs nåt man inte kan göra själv. Vill du ha en 100%ig svensk mobil så bör du vänta. Kan du leva med engelska menyer, eller som jag väljer engelska med flit då jag förstår termerna bättre så kan du köpa en redan idag och veta att det går fullt utmärkt att använda den på svenska redan idag (vissa undantag finns gällande marketplace och sånt men det går ta sig runt det mesta).
24000+ applikationer 7000+ utvecklare
Det har tyvärr dykt upp en hel del \"spam\" appar i form av hundratals appar som i princip bara skiljer sig på ikonen och vilken url den hämtar rss data. Plockar man bort alla dessa så finns det dock mycket fler kvalitetsspel och appar än tidigare. Luckorna som finns kommer sannolikt tätas när Mango kommer senare i år då nya APIer kommer att möjliggöra mängder av nya typer av applikationer.
Hela 77 Xbox Live spel
Att ett spel har stöd för achivements kanske inte alla bryr sig om men det är generellt väldigt hög kvalitet på dessa titlar och 77 stycken att välja på gör att alla nog kan hitta sin favorit.
Några av de hetaste titlarna:
- Angry birds
- Plants VS Zombies
- PAC-MAN Championship Edition DX
- Doodle Jump
- Super Monkey Ball
- Tiki Towers
När kommer Mango?
Det finns inga säkra källor men det ryktas om september/oktober. Förhoppningsvis går utrullningen smidigare än NODO som tydligen fortfarande inte är ute till alla telefoner i alla länder ännu.
Kommer man få tillgång till Mango som utvecklare innan telefonerna släpps?
Ja, redan idag finns beta verktyg och registrerade användarehar nu fått tillgång till Mango via Microsoft Connect.Det är inte helt utan risker då en uppdaterad telefon tappar sin vanliga support och den nya supporten för uppdaterade telefoner inte kommit igång ännu. Uppdaterade telefoner hamnar också utanför den vanliga uppdateringssnurran så innan mango kommer skarpt kommer man behöva återställa en backup till innan man uppdaterade.
Läs mer på officiella bloggen
En uppdaterad lista över alla funktioner som är kända som kommer med Mango
Mobiletechworld har en bra sammanfattning över alla nya funktioner som kommer med Mango.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Semestersammanfattning av WP7", + "meta_description": "", + "author_id": 1089, + "created_at": 1309432188000, + "created_by": 1089, + "updated_at": 1309432188000, + "updated_by": 1089, + "published_at": 1309432188000, + "published_by": 1089 + }, + { + "id": 541, + "title": "På en global marknad är volym viktigare än pris", + "slug": "pa-en-global-marknad-ar-volym-viktigare-an-pris", + "markdown": "\r\nAllt mer pekar på att en vinnande strategi för att sälja produkter, framför allt digitala, är att sänka priset per enhet. Det första och största exemplet är iPhone App Store. Innan den lanserades hade jag bland annat en Windows-telefon, och där var det nästan omöjligt att skaffa appar (eller applikationer som det hette på den tiden :-) ). Att det var en spretig plattform där man på egen hand behövde hitta applikationer med stöd för just sin telefonvariant var förstås ett stort problem, men en ännu större tröskel var priset. Att betala 149:- för en applikation som hanterar att göra-listor, och som man dessutom inte kunde testa innan, kändes extremt motigt. När App Store kom fanns massor av gratisappar som stimulerade beteende att skaffa nya program till sin telefon. Det viktigaste var dock prissättningen, massor av riktigt bra appar kostade mellan 7 och 35 kronor. Det populäraste spelet till iPhone, Angry Birds, kostar bara 7:- men har genererat enorma intäkter till sin skapare.\r\n\r\nNästa marknad som verkar vara på tur är operativsystem. Vi har redan sett svag men tydlig trend där licenser för operativsystem har gått ner i pris. Att köpa en laglig licens för Windows har t.ex. blivit mycket billigare än det var för 10 år sedan. Den stora revolutionen verkar dock komma nu, och även här går Apple i bräschen. För 229:- får man en uppgradering av MacOSX som man dessutom får installera på alla sina registrerade Macar. Jag tror att Microsoft kommer att följa efter, och jag tror att de båda kommer tjäna mycket pengar på detta. Digitala produkter kan som bekant kopieras och det sätter delar av de normala marknadsmekanismerna ur funktion – potentiella konsumenter kan helt enkelt välja att inte köpa produkten utan att helt enkelt skaffa den gratis (olagligt och omoraliskt – men praktiskt väldigt lätt). Denna variant på the long tail är en enorm potentiell marknad som inte finns för andra produkter. Genom att sänka priset på sin produkt så kan man öppna den potentiella marknaden och skapa en totalt sett högre volym än man hade när produkten var dyrare. Och med digitala produkter är marginalkostnaden för att producera fler enheter i princip 0.\r\n\r\nNågra som inte har fattat det här är skivbolagen. De har krampaktigt hållit sig kvar vid gamla affärsmodeller och bara konstaterat att det är fel att det finns piratkopiering istället för att öppna den potentiella marknaden (illegala nedladdare) med nya erbjudanden. När skivbolagen först började testa att distribuera sin musik digitalt hade låtarna i princip exakt samma pris som om man köpt CD-skivan. Man kom också på att digitala filer kan kopieras, och lade ner enorma resurser på kopieringsskydd som bara ställde till problem för de betalande kunderna. Undrar någon varför det inte blev en succé? Nu när det sakta börjar komma alternativ som liknar App Store-tänket, t.ex. Spotify, sätter sig många skivbolag på bakhasorna. Senast i raden är Century Media Records som har dragit tillbaka all sin musik från Spotify, och dessutom skickatett snipigt svar om att de minsann också behöver pengar till mat och hyra till en bloggare som frågat. Det Century Media inte förstår är att Spotify framför allt kan hjälpa till att öppna den potentiella marknaden av illegala nedladdare, inte kannibalisera på de som köper skivor.\r\n\r\nMen, kan man invända, Apple och Microsoft tjänar ju pengar på andra saker. Kanske kan de välja att gå back på operativsystem för att istället tjäna på pengar på hårdvara eller andra mjukvaruprodukter? Visst är det så, fast jag tror att operativsystemen till lägre pris kommer att vara lönsamma i sig själva. Och även för skivbolagen finns det ju andra intänktskällor. Piratkopieringen har gjort att man redan nu tjänar mer på konserter och merchandise än på musiken. Spotify och andra nya erbjudanden kan öka lönsamheten på musiken, det är jag övertygad om, men då är det dags att ta av skygglapparna.\r\n![Bild](http://tekniken.nu/uploads/634486698006205087-stock-market-volume.jpg)", + "html": "Allt mer pekar på att en vinnande strategi för att sälja produkter, framför allt digitala, är att sänka priset per enhet. Det första och största exemplet är iPhone App Store. Innan den lanserades hade jag bland annat en Windows-telefon, och där var det nästan omöjligt att skaffa appar (eller applikationer som det hette på den tiden :-) ). Att det var en spretig plattform där man på egen hand behövde hitta applikationer med stöd för just sin telefonvariant var förstås ett stort problem, men en ännu större tröskel var priset. Att betala 149:- för en applikation som hanterar att göra-listor, och som man dessutom inte kunde testa innan, kändes extremt motigt. När App Store kom fanns massor av gratisappar som stimulerade beteende att skaffa nya program till sin telefon. Det viktigaste var dock prissättningen, massor av riktigt bra appar kostade mellan 7 och 35 kronor. Det populäraste spelet till iPhone, Angry Birds, kostar bara 7:- men har genererat enorma intäkter till sin skapare.
Nästa marknad som verkar vara på tur är operativsystem. Vi har redan sett svag men tydlig trend där licenser för operativsystem har gått ner i pris. Att köpa en laglig licens för Windows har t.ex. blivit mycket billigare än det var för 10 år sedan. Den stora revolutionen verkar dock komma nu, och även här går Apple i bräschen. För 229:- får man en uppgradering av MacOSX som man dessutom får installera på alla sina registrerade Macar. Jag tror att Microsoft kommer att följa efter, och jag tror att de båda kommer tjäna mycket pengar på detta. Digitala produkter kan som bekant kopieras och det sätter delar av de normala marknadsmekanismerna ur funktion – potentiella konsumenter kan helt enkelt välja att inte köpa produkten utan att helt enkelt skaffa den gratis (olagligt och omoraliskt – men praktiskt väldigt lätt). Denna variant på the long tail är en enorm potentiell marknad som inte finns för andra produkter. Genom att sänka priset på sin produkt så kan man öppna den potentiella marknaden och skapa en totalt sett högre volym än man hade när produkten var dyrare. Och med digitala produkter är marginalkostnaden för att producera fler enheter i princip 0.
Några som inte har fattat det här är skivbolagen. De har krampaktigt hållit sig kvar vid gamla affärsmodeller och bara konstaterat att det är fel att det finns piratkopiering istället för att öppna den potentiella marknaden (illegala nedladdare) med nya erbjudanden. När skivbolagen först började testa att distribuera sin musik digitalt hade låtarna i princip exakt samma pris som om man köpt CD-skivan. Man kom också på att digitala filer kan kopieras, och lade ner enorma resurser på kopieringsskydd som bara ställde till problem för de betalande kunderna. Undrar någon varför det inte blev en succé? Nu när det sakta börjar komma alternativ som liknar App Store-tänket, t.ex. Spotify, sätter sig många skivbolag på bakhasorna. Senast i raden är Century Media Records som har dragit tillbaka all sin musik från Spotify, och dessutom skickatett snipigt svar om att de minsann också behöver pengar till mat och hyra till en bloggare som frågat. Det Century Media inte förstår är att Spotify framför allt kan hjälpa till att öppna den potentiella marknaden av illegala nedladdare, inte kannibalisera på de som köper skivor.
Men, kan man invända, Apple och Microsoft tjänar ju pengar på andra saker. Kanske kan de välja att gå back på operativsystem för att istället tjäna på pengar på hårdvara eller andra mjukvaruprodukter? Visst är det så, fast jag tror att operativsystemen till lägre pris kommer att vara lönsamma i sig själva. Och även för skivbolagen finns det ju andra intänktskällor. Piratkopieringen har gjort att man redan nu tjänar mer på konserter och merchandise än på musiken. Spotify och andra nya erbjudanden kan öka lönsamheten på musiken, det är jag övertygad om, men då är det dags att ta av skygglapparna.",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "På en global marknad är volym viktigare än pris",
+ "meta_description": "",
+ "author_id": 6,
+ "created_at": 1313401500000,
+ "created_by": 6,
+ "updated_at": 1313401500000,
+ "updated_by": 6,
+ "published_at": 1313401500000,
+ "published_by": 6
+ },
+ {
+ "id": 545,
+ "title": "Ett år med WP7, NODO och Mango",
+ "slug": "ett-ar-med-wp7-nodo-och-mango",
+ "markdown": "\r\n\r\nÄven om jag inte ägt en WP7 ett helt år ännu så har den definitivt haft en plats i mitt liv i minst ett år och här försöker jag sammanfatta det året.\r\n## Innan oktober när telefonen fanns på riktigt\r\nFörsta delen av året spenderades väntandes och längtandes. Jag hade förstås inte bestämt mig helt och hållet för vilken telefon jag ville ha men visste att WM6.5 var hopplöst ute, Iphone kändes inte rätt och alla andra telefontillverkare fortsatte på sin gamla taktik som var att släppa 6-7 modeller varje år och ignorera allt gammalt så fort dom kom ut i butik och att app-utbuden var rent ut sagt kassa.\r\n\r\nDen enskilt största anledningen till att jag väntade och hade hopp för WP7 var .NET och silverlight stödet eftersom jag i många år varit en .NET utvecklare och har förstås varit sugen på att utveckla för mobiler i många år men undvikit det då tidigare mobiler hade ganska dåliga verktyg och var väldigt begränsade.\r\n## När telefonen fanns att köpa\r\nNär telefonen släpptes i sverige så var det inofficiellt och med några få modeller och få återförsäljare. Enda sättet att köpa en Samsung Omnia 7 var att köpa den hos 3 och sedan låsa upp den. Under 2 veckor så hade jag den som en leksakstelefon innan jag kunde stoppa in mitt telia simkort och helt överge min gamla telefon.\r\n\r\nI början fanns knappt nåt alls i marketplace och de få spel och program som fanns var dåliga både rent kvalitetsmässigt men också innehållsmässigt vilket var naturligt eftersom det faktiskt tar tid att göra bra spel och appar.\r\n\r\nSamsung och Telia var tyvärr inte en bra kombination. När telefonen låstes upp så var det fortfarande dolda inställningar som gjorde att MMS inte gick att skicka och det tog månader innan Samsung släppte en fix. Mottagna samtal blev ibland robotsamtal och ibland helt tysta (detta är fortfarande inte löst för alla utan bara för vissa betatestare av en ny firmware som lär släppas på bredare front snart).\r\n\r\nKapacitiva knappar retade mig redan från första dagen och det har tyvärr inte blivit mycket bättre även om samsung numera slår av de kapacitiva knapparna när man nuddar resten av skärmen.\r\n## Tiden med Originalet/NODO\r\nDet börjar finnas gott om applikationer och spel nu och även en hel del topp spel som portats från iphone även om det fortfarande finns gott om spel på iphone som slår allt som finns till WP7. Inbyggda funktionerna som kalender, mail, sms, webbläsare, office osv har funkat ypperligt men förstås haft några begränsningar som man ibland märkt av, dock så har allt inbyggt fungerat till 100% utom marketplace, som innan NODO uppdateringen hade en förmåga att krasha.\r\n\r\nJag har varit väldigt nöjd med WP7 även om jag förstås längtat efter Mango för att få en ännu kraftfullare telefon och en som kändes komplett jämfört med konkurenterna.\r\n## Mango beta 2\r\nJust nu har jag precis tagit mig i kragen och registrerat mig som WP7 utvecklare både för att kunna uppdatera till Mango Beta 2 och givetvis för att kunna utveckla appar och spel på hemmafronten.\r\n\r\nKostnaden för att registrera sig är 650 kronor per år och då får man förstås möjligheten att tjäna in dom pengarna om man skulle ha lite tur och få ihop en applikation som säljer.\r\n\r\nTyvärr är Mango en ganska tråkig uppdatering eftersom allt bara ”är som det ska”, allt är bara bättre och allt flyter på som om det vore självklart. När man använder telefonen första tiden och letar nyheter så fastnar man i själva informationen istället för gränsnittet så på många sätt så är det som man bara upptäckt fler saker som alltid funnits där. Jag förstår varför iPhone- och Androidanvändare ser telefonen som tråkig, det finns inget onödigt, inga häftiga 3D effekter alls utan en knapp är gjord för att tryckas på, inte stirras på och text är gjord för att läsas. Det är skönt att MS fortsätter på sitt spår och inte smyger in onödiga effekter för att blidka dom som bara vill ha nåt nytt och glittrande hela tiden.\r\n\r\nMed Mango så har telefonen gått från att vara riktigt bra, men med vissa begränsningar och vissa störningsmoment, till att bli mycket grym och funktionsrik. Med den sömlösa integratonen mot Facebook, Twitter, Messenger och LinkedIn så har jag numera stenkoll på allt i en och samma vy utan att flippa mellan ett par olika appar. jag kan också lätt kolla på en specifik person för att se vad han/hon gjort senaste tiden och även se hur vi två kommunicerat oavsett om det varit telefonsamtal, facebookkommentarer, twitterinlägg eller sms.\r\n\r\nEftersom marketplace för Mangospecifika appar inte öppnat än så är det bara de inbyggda apparna som faktiskt utnyttjar Mango fullt ut så det finns förstås mycket nytt att upptäcka även i framtiden.\r\n## Mango i sverige\r\nDå jag köpte telefonen lade jag in ett amerikanskt Live-konto för att kunna komma åt marketplace då den styrs av första kontot man lägger in i telefonen och svenska marketplace ännu inte fanns. Nu när Mango kommer så har svenska marketplace öppnats men har bara ett litet urval jämfört med det amerikanska dock med fördelen att man kan registrera sitt kontokort och faktiskt komma åt köpesapparna vilket inte gått tidigare.\r\n\r\nJag har valt att vänta med att byta till mitt svenska livekonto ett tag till. Svenska marketplace kommer nog fyllas på ganska snabbt när väl Mango versionen av marketplace öppnar och det finns just idag få anledningar att köra ”svenskt” även om jag självklart kommer att byta när man faktiskt får nytta av att vara svensk på riktigt istället för som idag amerikan med lite drag av australienare(för att få metriska mått i t.ex kartor). Att byta livekonto kommer i princip att innbära att jag behöver resetta telefonen och då förlora sms historik som varken synkas till datorn eller molnet och appar/spel som jag installerat. Foton och filmer är redan synkade till datorn och kontakter, telefonnummer och mail är sparat i mitt vanliga livekonto så det kommer inte ta många minuter innan telefonen är som den ska igen.\r\n\r\nPå min andra blog http://blog.windowsphoneplace.com/ så har jag sammanställt en lista över alla appar och spel som jag har installerat på min telefon komplett med praktiska zune länkar så att min reset och ominstallation ska gå så smidigt som möjligt. När jag gjorde listan kollade jag också igenom vilka som fanns tillgängliga i svenska marketplace och det var ca hälften så än så länge håller jag kvar mitt amerikanska konto. Jag försöker uppdatera listan då och då för att hålla koll när det är dags att gå över men just nu är det alldeles för få tillgängliga appar, bara ca hälften i dagsläget.\r\n\r\nRedan idag med Mango betan så kan man äntligen välja svenskt tangentbord med svensk rättstavning så telefonen är numera riktigt skön att skriva med.\r\n\r\nFörhoppningsvis så får återförsäljarna lite bättre koll på Mango än dom haft tidigare, många har t.ex trott att det varit Windows Mobile 6.5 + med större knappar. Dom borde skämmas faktiskt, ungefär som att rekommendera att folk inte köper iPhone för att Newton styrdes med penna och var lite småkass.\r\n## Närmaste tiden\r\nNu är det bara veckor(?) kvar tills det kommer telefoner med Mango förinstallerat och detta kommer vara Windows Phones stora genombrott. Förutom att hårdvaran kommer vara i klass med alla andra premium mobiler (telefonerna i nuvarande generation har rent specifikationsmässigt ganska tråkig hårdvara) så kommer både Microsoft och tillverkarna lansera plattformen på en större och bredare skala både internationellt och i Sverige där den ännu inte officiellt lanserats. Det blir också spännande att se vad Nokia kommer med och hur dom kommer att lyckas marknadsföra sig.\r\n\r\nNär marketplace för Mango öppnar officiellt (september?) så kommer den vanliga cykeln ske, dvs först kommer det dyka upp appar som använder de nya APIerna och möjligheterna men ganska yxigt från början. Redan vid årskiftet så torde det komma riktigt välskrivna appar som verkligen drar nytta av den nya plattformen och då kommer Mango till sin rätt.\r\n## Nästa år\r\nNästa år är definitvt Windows Phones år. Misstänker starkt att det kommer en explosion av användare närmaste månaderna och att det kommer leda till att fler mjukvarutillverkare kommer fokusera på plattformen. Idag kommer endast ett fåtal stora spel och appar till wp7 och i många fall så känns det halvhjärtat och det är förstås förståeligt då det ännu inte blivit direkt lönsamt att lägga ner alltför mycket tid då även en framgångsrik app inte drar in stora pengar.\r\n\r\nNästa år kommer man förstås börja längta efter Apollo som är arbetsnamnet på nästa stora uppdatering till telefonen. Jag gissar att Apollo kommer släppas september 2012, kom ihåg att du hörde det här först!\r\n\r\n![Bild](http://tekniken.nu/uploads/634496040328456063-wp7-year.png)",
+ "html": "
Även om jag inte ägt en WP7 ett helt år ännu så har den definitivt haft en plats i mitt liv i minst ett år och här försöker jag sammanfatta det året.
Innan oktober när telefonen fanns på riktigt
Första delen av året spenderades väntandes och längtandes. Jag hade förstås inte bestämt mig helt och hållet för vilken telefon jag ville ha men visste att WM6.5 var hopplöst ute, Iphone kändes inte rätt och alla andra telefontillverkare fortsatte på sin gamla taktik som var att släppa 6-7 modeller varje år och ignorera allt gammalt så fort dom kom ut i butik och att app-utbuden var rent ut sagt kassa.
Den enskilt största anledningen till att jag väntade och hade hopp för WP7 var .NET och silverlight stödet eftersom jag i många år varit en .NET utvecklare och har förstås varit sugen på att utveckla för mobiler i många år men undvikit det då tidigare mobiler hade ganska dåliga verktyg och var väldigt begränsade.
När telefonen fanns att köpa
När telefonen släpptes i sverige så var det inofficiellt och med några få modeller och få återförsäljare. Enda sättet att köpa en Samsung Omnia 7 var att köpa den hos 3 och sedan låsa upp den. Under 2 veckor så hade jag den som en leksakstelefon innan jag kunde stoppa in mitt telia simkort och helt överge min gamla telefon.
I början fanns knappt nåt alls i marketplace och de få spel och program som fanns var dåliga både rent kvalitetsmässigt men också innehållsmässigt vilket var naturligt eftersom det faktiskt tar tid att göra bra spel och appar.
Samsung och Telia var tyvärr inte en bra kombination. När telefonen låstes upp så var det fortfarande dolda inställningar som gjorde att MMS inte gick att skicka och det tog månader innan Samsung släppte en fix. Mottagna samtal blev ibland robotsamtal och ibland helt tysta (detta är fortfarande inte löst för alla utan bara för vissa betatestare av en ny firmware som lär släppas på bredare front snart).
Kapacitiva knappar retade mig redan från första dagen och det har tyvärr inte blivit mycket bättre även om samsung numera slår av de kapacitiva knapparna när man nuddar resten av skärmen.
Tiden med Originalet/NODO
Det börjar finnas gott om applikationer och spel nu och även en hel del topp spel som portats från iphone även om det fortfarande finns gott om spel på iphone som slår allt som finns till WP7. Inbyggda funktionerna som kalender, mail, sms, webbläsare, office osv har funkat ypperligt men förstås haft några begränsningar som man ibland märkt av, dock så har allt inbyggt fungerat till 100% utom marketplace, som innan NODO uppdateringen hade en förmåga att krasha.
Jag har varit väldigt nöjd med WP7 även om jag förstås längtat efter Mango för att få en ännu kraftfullare telefon och en som kändes komplett jämfört med konkurenterna.
Mango beta 2
Just nu har jag precis tagit mig i kragen och registrerat mig som WP7 utvecklare både för att kunna uppdatera till Mango Beta 2 och givetvis för att kunna utveckla appar och spel på hemmafronten.
Kostnaden för att registrera sig är 650 kronor per år och då får man förstås möjligheten att tjäna in dom pengarna om man skulle ha lite tur och få ihop en applikation som säljer.
Tyvärr är Mango en ganska tråkig uppdatering eftersom allt bara ”är som det ska”, allt är bara bättre och allt flyter på som om det vore självklart. När man använder telefonen första tiden och letar nyheter så fastnar man i själva informationen istället för gränsnittet så på många sätt så är det som man bara upptäckt fler saker som alltid funnits där. Jag förstår varför iPhone- och Androidanvändare ser telefonen som tråkig, det finns inget onödigt, inga häftiga 3D effekter alls utan en knapp är gjord för att tryckas på, inte stirras på och text är gjord för att läsas. Det är skönt att MS fortsätter på sitt spår och inte smyger in onödiga effekter för att blidka dom som bara vill ha nåt nytt och glittrande hela tiden.
Med Mango så har telefonen gått från att vara riktigt bra, men med vissa begränsningar och vissa störningsmoment, till att bli mycket grym och funktionsrik. Med den sömlösa integratonen mot Facebook, Twitter, Messenger och LinkedIn så har jag numera stenkoll på allt i en och samma vy utan att flippa mellan ett par olika appar. jag kan också lätt kolla på en specifik person för att se vad han/hon gjort senaste tiden och även se hur vi två kommunicerat oavsett om det varit telefonsamtal, facebookkommentarer, twitterinlägg eller sms.
Eftersom marketplace för Mangospecifika appar inte öppnat än så är det bara de inbyggda apparna som faktiskt utnyttjar Mango fullt ut så det finns förstås mycket nytt att upptäcka även i framtiden.
Mango i sverige
Då jag köpte telefonen lade jag in ett amerikanskt Live-konto för att kunna komma åt marketplace då den styrs av första kontot man lägger in i telefonen och svenska marketplace ännu inte fanns. Nu när Mango kommer så har svenska marketplace öppnats men har bara ett litet urval jämfört med det amerikanska dock med fördelen att man kan registrera sitt kontokort och faktiskt komma åt köpesapparna vilket inte gått tidigare.
Jag har valt att vänta med att byta till mitt svenska livekonto ett tag till. Svenska marketplace kommer nog fyllas på ganska snabbt när väl Mango versionen av marketplace öppnar och det finns just idag få anledningar att köra ”svenskt” även om jag självklart kommer att byta när man faktiskt får nytta av att vara svensk på riktigt istället för som idag amerikan med lite drag av australienare(för att få metriska mått i t.ex kartor). Att byta livekonto kommer i princip att innbära att jag behöver resetta telefonen och då förlora sms historik som varken synkas till datorn eller molnet och appar/spel som jag installerat. Foton och filmer är redan synkade till datorn och kontakter, telefonnummer och mail är sparat i mitt vanliga livekonto så det kommer inte ta många minuter innan telefonen är som den ska igen.
På min andra blog http://blog.windowsphoneplace.com/ så har jag sammanställt en lista över alla appar och spel som jag har installerat på min telefon komplett med praktiska zune länkar så att min reset och ominstallation ska gå så smidigt som möjligt. När jag gjorde listan kollade jag också igenom vilka som fanns tillgängliga i svenska marketplace och det var ca hälften så än så länge håller jag kvar mitt amerikanska konto. Jag försöker uppdatera listan då och då för att hålla koll när det är dags att gå över men just nu är det alldeles för få tillgängliga appar, bara ca hälften i dagsläget.
Redan idag med Mango betan så kan man äntligen välja svenskt tangentbord med svensk rättstavning så telefonen är numera riktigt skön att skriva med.
Förhoppningsvis så får återförsäljarna lite bättre koll på Mango än dom haft tidigare, många har t.ex trott att det varit Windows Mobile 6.5 + med större knappar. Dom borde skämmas faktiskt, ungefär som att rekommendera att folk inte köper iPhone för att Newton styrdes med penna och var lite småkass.
Närmaste tiden
Nu är det bara veckor(?) kvar tills det kommer telefoner med Mango förinstallerat och detta kommer vara Windows Phones stora genombrott. Förutom att hårdvaran kommer vara i klass med alla andra premium mobiler (telefonerna i nuvarande generation har rent specifikationsmässigt ganska tråkig hårdvara) så kommer både Microsoft och tillverkarna lansera plattformen på en större och bredare skala både internationellt och i Sverige där den ännu inte officiellt lanserats. Det blir också spännande att se vad Nokia kommer med och hur dom kommer att lyckas marknadsföra sig.
När marketplace för Mango öppnar officiellt (september?) så kommer den vanliga cykeln ske, dvs först kommer det dyka upp appar som använder de nya APIerna och möjligheterna men ganska yxigt från början. Redan vid årskiftet så torde det komma riktigt välskrivna appar som verkligen drar nytta av den nya plattformen och då kommer Mango till sin rätt.
Nästa år
Nästa år är definitvt Windows Phones år. Misstänker starkt att det kommer en explosion av användare närmaste månaderna och att det kommer leda till att fler mjukvarutillverkare kommer fokusera på plattformen. Idag kommer endast ett fåtal stora spel och appar till wp7 och i många fall så känns det halvhjärtat och det är förstås förståeligt då det ännu inte blivit direkt lönsamt att lägga ner alltför mycket tid då även en framgångsrik app inte drar in stora pengar.
Nästa år kommer man förstås börja längta efter Apollo som är arbetsnamnet på nästa stora uppdatering till telefonen. Jag gissar att Apollo kommer släppas september 2012, kom ihåg att du hörde det här först!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Ett år med WP7, NODO och Mango", + "meta_description": "", + "author_id": 1089, + "created_at": 1314008100000, + "created_by": 1089, + "updated_at": 1314008100000, + "updated_by": 1089, + "published_at": 1314008100000, + "published_by": 1089 + }, + { + "id": 554, + "title": "10 bra anledningar att ha en iPad på jobbet", + "slug": "10-bra-anledningar-att-ha-en-ipad-pa-jobbet", + "markdown": "\r\nAtt anteckna med på möten. Ipadens storlek och batteritid gör den optimal för anteckningar. Använd Evernote (app) och du kan även spara och söka i dina anteckningar senare och från datorn.Att använda för brainstorming och dokumentation av hierarkiska strukturer (App: Mindmeister)Använda för sitt intranät. Att ha intranätet alltid tillgängligt bredvid skrivbordet är enormt kraftfullt.Videokonferens. Skype på iPad fungerar ypperligt bra för videokonferenser (Facetime är ett bra alternativ). Jobbar du hemifrån kan du ändå vara med på möten via din ipad.Tidredovisning, gör en anpassad sida på ert intranät där du och dina kollegor kan redovisa er tid på ipaden. Då kan ni redovisa tiden på bussen hem eller i fikarummet. ( Eller gör som Iteam, tidredovisa genom kalendern.)Använd som Twitterläsare. Att företag behöver vara i framkant på sociala webben är inget nytt. Twitters iPad-app är fantastiskt bra och gör att du kan hålla koll på Twitter åt företaget och åt dig själv i samma app. Appen stöder flera inloggade konton.Visa rapporter. Ipadens skärm är väldigt bra på att bläddra genom rapporter. På detta sätt behöver du inte skriva ut alla ekonomiska rapporter eller whitepapers du läser. Maila till dig själv och ta upp dem på din iPad. Pdf, Word, excel, powerpoint. Alla format stöds.Keynote. Gör enkla presentationer eller visa powerpoints på iPad. Bra för säljare som har personliga möten med kunder men kan ändå visa powerpoint i ett personligare format.Säljverktyg. Om din organisation använder Salesforce eller SAP finns det färdiga appar för att hämta och bearbeta data på iPad. Fler leverantörer börjar leverera liknande lösningar till sina affärssystem och CRM system. Du kan även be Iteam bygga skräddarsydda appar till just din organisation.Bra för er image. Det upplevs som positivt av både personal och kunder att ha tillgång till senaste tekniken. Miljön sparas när färre papper behöver skrivas ut och ditt företag upplevs som en intressant arbetsgivare och leverantör.\r\nDet är mitt bidrag till din chef, lycka till!\r\nFölj mig på twitter för mer tips om iPad, nyheter i iOS och andra teknikspaningar: @urvader\r\n\r\n![Bild](http://tekniken.nu/uploads/iPad-business.jpg)", + "html": "- Att anteckna med på möten. Ipadens storlek och batteritid gör den optimal för anteckningar. Använd Evernote (app) och du kan även spara och söka i dina anteckningar senare och från datorn.
- Att använda för brainstorming och dokumentation av hierarkiska strukturer (App: Mindmeister)
- Använda för sitt intranät. Att ha intranätet alltid tillgängligt bredvid skrivbordet är enormt kraftfullt.
- Videokonferens. Skype på iPad fungerar ypperligt bra för videokonferenser (Facetime är ett bra alternativ). Jobbar du hemifrån kan du ändå vara med på möten via din ipad.
- Tidredovisning, gör en anpassad sida på ert intranät där du och dina kollegor kan redovisa er tid på ipaden. Då kan ni redovisa tiden på bussen hem eller i fikarummet. ( Eller gör som Iteam, tidredovisa genom kalendern.)
- Använd som Twitterläsare. Att företag behöver vara i framkant på sociala webben är inget nytt. Twitters iPad-app är fantastiskt bra och gör att du kan hålla koll på Twitter åt företaget och åt dig själv i samma app. Appen stöder flera inloggade konton.
- Visa rapporter. Ipadens skärm är väldigt bra på att bläddra genom rapporter. På detta sätt behöver du inte skriva ut alla ekonomiska rapporter eller whitepapers du läser. Maila till dig själv och ta upp dem på din iPad. Pdf, Word, excel, powerpoint. Alla format stöds.
- Keynote. Gör enkla presentationer eller visa powerpoints på iPad. Bra för säljare som har personliga möten med kunder men kan ändå visa powerpoint i ett personligare format.
- Säljverktyg. Om din organisation använder Salesforce eller SAP finns det färdiga appar för att hämta och bearbeta data på iPad. Fler leverantörer börjar leverera liknande lösningar till sina affärssystem och CRM system. Du kan även be Iteam bygga skräddarsydda appar till just din organisation.
- Bra för er image. Det upplevs som positivt av både personal och kunder att ha tillgång till senaste tekniken. Miljön sparas när färre papper behöver skrivas ut och ditt företag upplevs som en intressant arbetsgivare och leverantör.
Det är mitt bidrag till din chef, lycka till!
Följ mig på twitter för mer tips om iPad, nyheter i iOS och andra teknikspaningar: @urvader
Hur svårt kan det vara att hitta en inköpsliste-app där du och din sambo kan dela inköpslista, och hålla dom synkroniserade med varandra? En App där du kan hantera flera listor – en för matinköp, en för kläder och kanske ytterligare en för möbler och prylar? En app där du kan ordna varorna i kategorier precis så som du själva vill? En app där du kan ladda upp egna ikoner för att snabbt se vilken shoppinglista som är vilken? En app där du kanske till och med kan lägga in priser på varorna och på så sätt veta vad inköpslistan kommer att kosta innan man kliver in i affären?
En app som uppfyller allt detta finns!
En sökning i App Store visar att intresset för att utveckla inköpsappar är stort. Listan löper sida ner och sida upp – men jag har alla fall bara funnit en app som håller måttet. ShoppingList av Werner Freytag.
Vinnaren so far: ShoppingList av Werner Freytag.
Den är inte särskilt dyr, och med ett extra tillägg på 7kr så kan du synka listor med vänner och familj. Synken använder sig av Dropbox, vilket kräver att en utav er måste ha ett Dropboxkonto – men det är ju en app som du bör ha ändå – om inte så är det ett bra skäl till att skaffa den.
Tydliga och bra listor. Priser och kategorier lägger du förslagsvis upp allt eftersom du shoppar. En bonuseffekt av den här appen är att du lär dig mer om vad varor kostar – vad är dyrt, vad är billigt. Det är alla fall något som jag själv känner att jag fått mycket bättre pejl på med hjälp av den här inköpsappen.
Under inställningar så ställer du in det Dropbox-konto som skall användas för synkroniseringen av listorna mellan de iOS-enheter du vill koppla ihop.
Lycka till med shoppandet!
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Du och din sambo kan ha synkroniserade inköpslistor", + "meta_description": "", + "author_id": 1097, + "created_at": 1315403100000, + "created_by": 1097, + "updated_at": 1315403100000, + "updated_by": 1097, + "published_at": 1315403100000, + "published_by": 1097 + }, + { + "id": 568, + "title": "Idag är Den stora iPhonedagen", + "slug": "idag-ar-den-stora-iphonedagen", + "markdown": "\r\n\r\nI dag presenterar Apple sina nyheter kring den nya iPhonen. Vanligtvis sker det i juni och telefonen börjar levereras i juli men detta året har datumen förskjutits och förväntningarna har då också ökats.\r\n\r\nDet finns många bra sajter som samlat alla rykten och trots att Apple brukar vara duktiga på att överraska och hålla sina produkter hemliga brukar man få en rätt bra bild av vad som kommer presenteras av ryktena.\r\n\r\nTyvärr är det många rykten som förutsäger att Apple bara presenterar en uppgraderad iPhone 4S, dvs samma format som iPhone 4 men med snabbare processor och bättre kamera. En indikation på att det faktiskt inte blir en iPhone 5 är att det är den 4:e oktober och inte 5:e – Apple brukar använda sådana signaler för att sänka/höja förväntningarna. Jag gissar och hoppas dock att det kommer ske större förändringar än så. Applefans är bra på att släppa bilder i förväg på deras drömtelefoner och här är min favorit (tunnare och större skärm):\r\n\r\n\r\n\r\nDet vi med stor sannolikhet kan säga är:\r\n\r\n1. Bättre kamera (8 MP) \r\n\r\n2. Snabbare processor\r\n\r\n3. Mer minne (1 GB)\r\n\r\n4. Större utrymme (max 64/128 GB)\r\n\r\nFörhoppningsvis:\r\n\r\n5. Större skärm\r\n\r\n6. Tunnare\r\n\r\nSom vanligt finns det många rykten som säger att Apple planerar att släppa en billigare telefon för att slå sig in på fler marknadssegment men jag tror nog i så fall att de sänker priserna på de tidigare modellerna snarare än att gör en ny nischprodukt med sämre kvalitet (t ex plast istället för glas).\r\n## AI kommer skapa nya användningsmönster\r\nEtt intressant rykte är att Apple till slut kommer göra användning av sitt köp av bolaget bakom appen Siri och samarbetet med Dragon Software som gör röststyrning. Det finns bilder i tidiga betaversioner av iOS som pekar på att röststyrningen kommer ha en mer central roll, i kombination med mer avancerad artificiell intelligens ryktas det att man ska kunna beställa bord på restauranger, få tågtider eller hjälp att hitta till närmaste bankomat bara med hjälp av rösten. Dessutom ryktas det finnas möjlighet att komponera mail och sms med rösten.\r\n\r\nKlockan 7 ikväll kan du följa det live här:\r\n\r\nhttp://www.engadget.com/2011/10/04/apples-lets-talk-iphone-keynote-liveblog/\r\n\r\n![Bild](http://tekniken.nu/uploads/634533383001700834-image001.jpg@01CC8277.3BAB4160__image001.jpg)", + "html": "I dag presenterar Apple sina nyheter kring den nya iPhonen. Vanligtvis sker det i juni och telefonen börjar levereras i juli men detta året har datumen förskjutits och förväntningarna har då också ökats.
Det finns många bra sajter som samlat alla rykten och trots att Apple brukar vara duktiga på att överraska och hålla sina produkter hemliga brukar man få en rätt bra bild av vad som kommer presenteras av ryktena.
Tyvärr är det många rykten som förutsäger att Apple bara presenterar en uppgraderad iPhone 4S, dvs samma format som iPhone 4 men med snabbare processor och bättre kamera. En indikation på att det faktiskt inte blir en iPhone 5 är att det är den 4:e oktober och inte 5:e – Apple brukar använda sådana signaler för att sänka/höja förväntningarna. Jag gissar och hoppas dock att det kommer ske större förändringar än så. Applefans är bra på att släppa bilder i förväg på deras drömtelefoner och här är min favorit (tunnare och större skärm):
Det vi med stor sannolikhet kan säga är:
1. Bättre kamera (8 MP)
2. Snabbare processor
3. Mer minne (1 GB)
4. Större utrymme (max 64/128 GB)
Förhoppningsvis:
5. Större skärm
6. Tunnare
Som vanligt finns det många rykten som säger att Apple planerar att släppa en billigare telefon för att slå sig in på fler marknadssegment men jag tror nog i så fall att de sänker priserna på de tidigare modellerna snarare än att gör en ny nischprodukt med sämre kvalitet (t ex plast istället för glas).
AI kommer skapa nya användningsmönster
Ett intressant rykte är att Apple till slut kommer göra användning av sitt köp av bolaget bakom appen Siri och samarbetet med Dragon Software som gör röststyrning. Det finns bilder i tidiga betaversioner av iOS som pekar på att röststyrningen kommer ha en mer central roll, i kombination med mer avancerad artificiell intelligens ryktas det att man ska kunna beställa bord på restauranger, få tågtider eller hjälp att hitta till närmaste bankomat bara med hjälp av rösten. Dessutom ryktas det finnas möjlighet att komponera mail och sms med rösten.
Klockan 7 ikväll kan du följa det live här:
http://www.engadget.com/2011/10/04/apples-lets-talk-iphone-keynote-liveblog/
Det är enkelt att hitta anledningar till att köpa iPhone eller Android. Man kan lätt hänvisa till iPhones stora utbud av appar eller Androids öppna arkitektur som gör det möjligt att få den att göra nästan allt, inklusive se ut som WP7 om man skulle vilja det.
Det som gör WP7 så unik i sammanhanget är att det inte är antalet features eller några enskilda saker som går att peka ut (android = valfrihet och öppenhet, iphone = många bra appar) utan att det är dom små sakerna som gör det. Summan av allt är så mycket större än alla delar. Här försöker jag gå igenom en del av funktionerna som gör WP7 unik även om det förstås finns appar till andra mobiler som gör delvis liknande saker och säkert har en och annan funktion som WP7 saknar.
Enhetlighet, enkelhet
En av plattformens styrka är hur enkelt och enhetligt allt ser ut och fungerar. Det kan förstås ses som tråkigt men gör att telefonen blir extremt lätt att hantera och gör att fokus hamnar på innehållet. Smaken är förstås olika och det kan förstås ta tid att vänja sig vid det avskalade men när man väl insett hur skönt det är att titta på platta ytor med ren och lättläst text istället för 3D-liknande saker med texturer och ikoner så vill man knappast ha nåt annat.
Unika funktioner
Nu när alla telefoner börjar ha samma grundläggande funktioner är det förstås svårare att peka ut vad som är unikt. Nåt som sticker ut är hur mycket som är integrerat i telefonen och hur lätt det är att komma igång. Lägg till konton från facebook, live, twitter och Exchange och länka ihop kontakterna så får du direkt upp bild när nån ringer och du kan snabbt se när din kollega twittrade senast. Snabbt och enkelt.
Framtiden är ljus
Just nu är WP7 en parentes med bara nån procents andel men det kommer definivt ändras när Mango telefonerna släpps (vissa modeller om några veckor, andra kommer senare) och här kommer Nokia göra största skillnaden. Sannolikt så är det årets julklapp (efter bakmaskinen förstås J).
Prestanda
Kollar man på ren hårdvara är det en rätt svag plattform. Eftersom gränsnittet är hårdvaruaccelererat så är det dock en väldigt mjuk upplevelse. Nästan alla som testat telefonerna blir imponerad över hur mjukt allt rör sig.
Har stöd för Exchange, Hotmail, Gmail , Yahoo! Mail och förstås POP/Imap. Kan visa trådade diskussioner och det går att länka ihop flera konton som då visas i en gemensam vy.
Office
Från smidiga anteckningar med Onenote till mer komplicerade powerpoints/excel/Word dokument som synkas med Skydrive, sharepoint eller Office 365 gör att telefonen kan bli en del av ditt naturliga jobbflöde.
People hubben
Integrerar Twitter, Facebook, Live och Linkedin så att du får ett nyhetsflöde som visar alla källor oberoende av varifrån de kommer. När du postar en nyhet så kan du dessutom välja vilka tjänster du vill posta till.
Välj ut en person och se alla facebookinlägg, tweets och all kommunikationshistorik med dig oavsett om det varit telefonsamtal, sms eller chatinlägg.
Själklart finns det dedikerade appar att ladda ner men telefonens styrka är integrationen.
Kalender
Kalendern har stöd för Exchange, Facebook, Google och Live. Summerar enkelt alla dina kalendrar och låter dig lägga bokningar på valfri. Har också stöd för TODOs i Exchange och Hotmail.
Chat
Du kan växla mellan SMS/Live messenger och facebook chat inom samma konversation. Du kan helt enkelt alltid vara online (om du vill förstås)
Och några anledningar varför man inte ska skaffa en... ännu!
Du kommer vara ganska ensam ett tag till. Om det är viktigt för dig att kunna spela samma spel som kollegorna/vännerna så kan det vara värt att vänta ett tag (tills dina kompisar inser hur bra WP7 är...)
Flugor som t.ex WordFeud kommer du att missa eller åtminstone vara sen med i många fall. I samband med att plattformen blir mer populär kommer det förstås dyka upp flugor som bara finns på WP7 också så det kommer ändras.
Det är ännu ett rätt begränsat antal modeller att välja bland. I första generationen fanns bara 4 olika modeller att köpa i sverige (2 olika HTC, en LG och en Samsung) och några få till som gick att direktimportera. Nu i första skedet verkar det komma några modeller till men i princip så rör det sig om en eller två per tillverkare och det är defintivt få high-end utan de flesta hamnar nånstans i mitten på pris segmentet. Om nån månad så ger sig Nokia in och då kommer det finnas fler modeller att välja på.
Det saknas fortfarande en del tjänster i sverige. Zune Pass som ger obegränsat med music för en smärre månadskostnad liknande itunes/spotify har inte kommit än och Bing som är sökmotorn har inte t.ex sin scout som gör att man kan hitta t.ex restauranger i närheten.
Så...köpa eller inte?
Det dyker snart upp nya intressanta telefoner och det är ett givet köp om du är ute efter en bra mobil och smartphone som i princip bara saknar lite branchstöd just nu men räkna med att det kommer vända snart.
Enda missnöjet jag haft med min mobil senaste året är att Samsung Omnia 7 och Telia har varit fullt av dålig mottagning och sporadisk datatrafik och det har förstås varit trist att inte kunna wordfeuda med kollegorna.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Varför ska du skaffa en Windows Phone 7.5 Mango?", + "meta_description": "", + "author_id": 1089, + "created_at": 1317742200000, + "created_by": 1089, + "updated_at": 1317742200000, + "updated_by": 1089, + "published_at": 1317742200000, + "published_by": 1089 + }, + { + "id": 575, + "title": "Checklista för maximerad batteritid för iPhone", + "slug": "checklista-for-maximerad-batteritid-for-iphone", + "markdown": "\r\n\r\nFörmodligen kan du avvara åtminstonde någon av inställningarna nedan. Avaktivera dom för att spara batteri!\r\n## Inställningar\r\nUnder Inställningar finns det en hel del saker man kan göra för att förbättra batteritiden:\r\n\r\n1. Musik > EQ: Stäng av Equalizer\r\n\r\n2. Allmänt > Begränsningar: Aktivera begränsningar och Blockera Itunes Ping genom att kryssar ur alternativet för Ping\r\n\r\n3. E-post, kontakter, kalender > Hämta nya data: Stäng av Push Data för mail genom att välja \"Av\" för Push\r\n\r\n4. Platstjänster: Stäng av Platstjänster för applikationer där GPS-position inte är viktig\r\n\r\n5. Inställningar > Wi-Fi: Stäng av Wi-Fi när du inte använder det\r\n\r\n6. Ljusstyrka: Sätt på Automatisk ljusstyrka\r\n\r\n7. Allmänt > Autolås: Sätt Autolås till 1 min\r\n\r\n8. Allmänt > Bluetooth: Se till att Bluetooth är avstängd\r\n\r\n9. Ljud: Stäng av Vibration\r\n## iOS 5: Påminnelser\r\n\r\n\r\nFör iOS 5 är en stor bov att ha Platsstjänst aktiverad för nya Påminnelser-appen. Den har mer eller mindre GPS:en konstant aktiv för att kunna ge påminnelser baserat på vilken plats du befinner dig.\r\n## Återställ via iTunes\r\nOm du fortfarande upplever att din iPhone har dåligt batteri så kan det vara ett hett tips att återställa den via iTunes. Se till att göra en synkning först, där du får en backup som iTunes då återställer ifrån, så att ingen information går förlorad.\r\n## Appar i bakgrunden\r\n\r\n \r\nEn annan viktig sak som kan förbättra batteritiden en del är att manuellt stänga ner de senaste apparna som körts, då de kan ha saker som körs i bakgrunden.\r\n\r\nGenom att dubbeltrycka på Hemknappen får du upp en lista på de senaste körda apparna, som du sedanhåller ner fingret på så att de börjar skaka. Då kan du stänga dem en och en. Du behöver inte stänga alla appar, då det är bara några av de senast körda som får plats i minnet.\r\n## XSysInfo: App för att rensa minnet\r\n\r\n \r\nOm du tycker det är krångligt och tråkigt att göra den manuella övningen ovan, med att manuellt stänga appar, så finns den en app för det. Den heter XSysInfo.\r\n\r\nDen har funnits ett tag på AppStore och länge ansetts som en av de bästa och mest effektiva appar i sitt slag. Precis innan övergången till iOS 5 så blev de tvungna att uppdatera sin app ochta bort den enda funktionen som verkligen gör den användbar. Apple drog undan mattan för företaget och mer eller mindre ströp deras inkomst.\r\n\r\nMen efter några veckors klagomål från olika håll så kom den tillbaka på AppStore med den oslagbara funktionaliteten igen. Denna gång lite mer gömd, då man måste dra ner förstasidans skärm för att få fram funktionaliteten att städa minnet.\r\n\r\n![Bild](http://tekniken.nu/uploads/iphone_battery_screen.png)", + "html": "Förmodligen kan du avvara åtminstonde någon av inställningarna nedan. Avaktivera dom för att spara batteri!
Inställningar
Under Inställningar finns det en hel del saker man kan göra för att förbättra batteritiden:
1. Musik > EQ: Stäng av Equalizer
2. Allmänt > Begränsningar: Aktivera begränsningar och Blockera Itunes Ping genom att kryssar ur alternativet för Ping
3. E-post, kontakter, kalender > Hämta nya data: Stäng av Push Data för mail genom att välja \"Av\" för Push
4. Platstjänster: Stäng av Platstjänster för applikationer där GPS-position inte är viktig
5. Inställningar > Wi-Fi: Stäng av Wi-Fi när du inte använder det
6. Ljusstyrka: Sätt på Automatisk ljusstyrka
7. Allmänt > Autolås: Sätt Autolås till 1 min
8. Allmänt > Bluetooth: Se till att Bluetooth är avstängd
9. Ljud: Stäng av Vibration
iOS 5: Påminnelser
För iOS 5 är en stor bov att ha Platsstjänst aktiverad för nya Påminnelser-appen. Den har mer eller mindre GPS:en konstant aktiv för att kunna ge påminnelser baserat på vilken plats du befinner dig.
Återställ via iTunes
Om du fortfarande upplever att din iPhone har dåligt batteri så kan det vara ett hett tips att återställa den via iTunes. Se till att göra en synkning först, där du får en backup som iTunes då återställer ifrån, så att ingen information går förlorad.
Appar i bakgrunden
En annan viktig sak som kan förbättra batteritiden en del är att manuellt stänga ner de senaste apparna som körts, då de kan ha saker som körs i bakgrunden.
Genom att dubbeltrycka på Hemknappen får du upp en lista på de senaste körda apparna, som du sedanhåller ner fingret på så att de börjar skaka. Då kan du stänga dem en och en. Du behöver inte stänga alla appar, då det är bara några av de senast körda som får plats i minnet.
XSysInfo: App för att rensa minnet
Om du tycker det är krångligt och tråkigt att göra den manuella övningen ovan, med att manuellt stänga appar, så finns den en app för det. Den heter XSysInfo.
Den har funnits ett tag på AppStore och länge ansetts som en av de bästa och mest effektiva appar i sitt slag. Precis innan övergången till iOS 5 så blev de tvungna att uppdatera sin app ochta bort den enda funktionen som verkligen gör den användbar. Apple drog undan mattan för företaget och mer eller mindre ströp deras inkomst.
Men efter några veckors klagomål från olika håll så kom den tillbaka på AppStore med den oslagbara funktionaliteten igen. Denna gång lite mer gömd, då man måste dra ner förstasidans skärm för att få fram funktionaliteten att städa minnet.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Checklista för maximerad batteritid för iPhone", + "meta_description": "", + "author_id": 1096, + "created_at": 1320854400000, + "created_by": 1096, + "updated_at": 1320854400000, + "updated_by": 1096, + "published_at": 1320854400000, + "published_by": 1096 + }, + { + "id": 578, + "title": "Välj rätt resväg - svensk kollektivtrafik och trafikläget i ”kartor”-appen", + "slug": "valj-ratt-resvag---svensk-kollektivtrafik-och-trafiklaget-i-kartor-appen", + "markdown": "\r\n\r\nGod nyheter för dig som reser mycket i Sverige. Nu finns både kollektivtrafik och trafikläget i iOS ”Kartor”-app! På iPhone får du en resebeskrivning väl presenterat i kartan och klickbara ikoner för detaljuppgifter. Gångväg, tunnelbana, tåg och bussar presenteras prydligt och fint med avgångstid och exempelvis bussnummer.\r\n\r\nPå iPad kan du välja att visa hela färdbeskrivningen utfälld. Du aktiverar trafik genom att vika upp inställningsfliken nere till höger på kartan. Riktigt enkelt och bra.\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/634565154302659699-image005.png@01CC98A0.B96958A0__image005.png)", + "html": "God nyheter för dig som reser mycket i Sverige. Nu finns både kollektivtrafik och trafikläget i iOS ”Kartor”-app! På iPhone får du en resebeskrivning väl presenterat i kartan och klickbara ikoner för detaljuppgifter. Gångväg, tunnelbana, tåg och bussar presenteras prydligt och fint med avgångstid och exempelvis bussnummer.
På iPad kan du välja att visa hela färdbeskrivningen utfälld. Du aktiverar trafik genom att vika upp inställningsfliken nere till höger på kartan. Riktigt enkelt och bra.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Välj rätt resväg - svensk kollektivtrafik och trafikläget i ”kartor”-appen", + "meta_description": "", + "author_id": 1097, + "created_at": 1321027800000, + "created_by": 1097, + "updated_at": 1321027800000, + "updated_by": 1097, + "published_at": 1321027800000, + "published_by": 1097 + }, + { + "id": 580, + "title": "Hypekurvan 2011", + "slug": "hypekurvan-2011", + "markdown": "\r\n\r\nAnalysföretaget Gartner har sedan 1995 identifierat att alla nya produkter passerar ett antal faser av publicitet olika fort men att alla följer samma initiella kurva. Kurvan kallas Hypekurvan och alla känner till några kända exempel, t ex WAP som 2002 hade en väldigt stor hype (höga förväntningar och stor publicitet) för att sedan falla platt ner men tänk på hur ofta du nu använder mobilen för att surfa. Poängen är att de flesta tekniska innovationerna behöver mogna för att bli verkligt användbara och att teknikpressen gärna lyfter fram nyheter som har stor potential för tidigt och innan produkterna kommer ut och blir användbara är det ”bara fantasin” som sätter begränsningar för vad man kan skriva om en produkt eller teknik.\r\n\r\nEtt bra exempel på överdriven publicitet är Second Life – kom ni ihåg att Sverige till och med hade en ambassad i den virtuella verklighet som hette (heter?) Second Life, numera är det nog ganska tomt i ambassadens dyrt utvecklade och fint designade lobby? Tittar man på kurvan ligger virtuella världar längst ner just nu men tänk på hur World of Warcraft och det svenskutvecklade byggspelet Minecraft har en helt annan mognad och potential än Second Life.\r\n\r\nSom investerare/beställare av teknik gör man oftast bäst att vänta på att en teknik har passerat sin värsta hype och investera lagom till att tekniken är på väg upp i sin mogna fas. Här kommer några axplock från den senaste publicerade kurvan från augusti 2011 och vi börjar med några som har passerat igenom sitt värsta fall och nu är påväg att bli mogna;\r\nQR koder vilket vi på Iteam tror mycket på som ett sätt att skapa affärsmöjligheter via mobiler,Predictive Analytics – dvs att med hjälp av användares beteenden räkna ut hur andra kommer att agera,Platsbaserad information – att helt enkelt filtrera och sortera listor för att visa det som är relevant för användaren. T ex behöver du inte se alla biografer i Göteborg när du surfar till SF.se. Numera är detta inbyggt inte bara i mobilerna utan även i webbläsarna via HTML5.\r\n\r\n\r\nVarning finns för några av de tekniker och tjänster som har varit väldigt populära bland teknikjournalister och bloggar den senaste tiden och som snart (om man ska lita på Gartner) bör vara på väg ner längs rutschkanan - där finns:\r\n”Big Data” - dvs använda ny teknik som Map/Reduce, Hadoop och NoSQL för att hantera extrema mängder information,Gamification som betyder att du låter dina användare och besökare leka att de spelar ett spel när de handlar eller interagerar med din webbplats genom att få poäng och klara av nivåer.Group Buying är tjänster som säljer presentkort till olika typer av evenemang, tjänster och upplevelser och genom att flera köper samma presentkort samtidigt kan affärerna ge bra rabatter, företaget Groupon är enligt Forbes Magazine det snabbast växande företaget i världen någonsin (!).\r\n\r\n\r\nNågra som enligt Gartner redan har påbörjat sin kälkfärd är t ex\r\nSurfplattor ochMolnlösningar. NFC som är det elektroniska betalningssättet som gör din mobil till en plånbok är högst upp just nu och kommer halka ner rejält innan tekniken blir mogen på riktigt och NFC finns inbyggt i alla mobiler.\r\n\r\n\r\nDe tekniker som vi på tekniken.nu helst skulle vilja snabbt tog sig till mognadsstadiet är:\r\nKvantdator – skulle det inte vara fint att få oändlig datorkraft i nästa version av BF3?Hjärninterface – koppla in din hjärna med usb porten och skriv med tankens hjälp – är inte tangentbordet lite väl långsamt sätt att mata in information på? Tangentbordet är ju medvetet designat för att armarna i en skrivmaskin inte skulle trassla in sig i varandra – här borde man kommit längre på 144 årSpeech-to-speech translation – ta med iPhone på semesterresan och prata japanska flytande.\r\n\r\n\r\nSen kan man ju avsluta med att inse att Apple självklart har koll på det här så att de satsar på Location (find my friends) och speech recognition (Siri) och Mobile Application Stores (AppStore) är ingen konstigt. I nästa iPhone 5 kommer då antagligen biometrisk inloggning och inbyggd QR läsare?\r\n\r\n\r\n\r\n![Bild](http://tekniken.nu/uploads/634577224137702457-image002.gif@01CCA940.CEA172B0__image002.gif)", + "html": "Analysföretaget Gartner har sedan 1995 identifierat att alla nya produkter passerar ett antal faser av publicitet olika fort men att alla följer samma initiella kurva. Kurvan kallas Hypekurvan och alla känner till några kända exempel, t ex WAP som 2002 hade en väldigt stor hype (höga förväntningar och stor publicitet) för att sedan falla platt ner men tänk på hur ofta du nu använder mobilen för att surfa. Poängen är att de flesta tekniska innovationerna behöver mogna för att bli verkligt användbara och att teknikpressen gärna lyfter fram nyheter som har stor potential för tidigt och innan produkterna kommer ut och blir användbara är det ”bara fantasin” som sätter begränsningar för vad man kan skriva om en produkt eller teknik.
Ett bra exempel på överdriven publicitet är Second Life – kom ni ihåg att Sverige till och med hade en ambassad i den virtuella verklighet som hette (heter?) Second Life, numera är det nog ganska tomt i ambassadens dyrt utvecklade och fint designade lobby? Tittar man på kurvan ligger virtuella världar längst ner just nu men tänk på hur World of Warcraft och det svenskutvecklade byggspelet Minecraft har en helt annan mognad och potential än Second Life.
Som investerare/beställare av teknik gör man oftast bäst att vänta på att en teknik har passerat sin värsta hype och investera lagom till att tekniken är på väg upp i sin mogna fas. Här kommer några axplock från den senaste publicerade kurvan från augusti 2011 och vi börjar med några som har passerat igenom sitt värsta fall och nu är påväg att bli mogna;
- QR koder vilket vi på Iteam tror mycket på som ett sätt att skapa affärsmöjligheter via mobiler,
- Predictive Analytics – dvs att med hjälp av användares beteenden räkna ut hur andra kommer att agera,
- Platsbaserad information – att helt enkelt filtrera och sortera listor för att visa det som är relevant för användaren. T ex behöver du inte se alla biografer i Göteborg när du surfar till SF.se. Numera är detta inbyggt inte bara i mobilerna utan även i webbläsarna via HTML5.
Varning finns för några av de tekniker och tjänster som har varit väldigt populära bland teknikjournalister och bloggar den senaste tiden och som snart (om man ska lita på Gartner) bör vara på väg ner längs rutschkanan - där finns:
- ”Big Data” - dvs använda ny teknik som Map/Reduce, Hadoop och NoSQL för att hantera extrema mängder information,
- Gamification som betyder att du låter dina användare och besökare leka att de spelar ett spel när de handlar eller interagerar med din webbplats genom att få poäng och klara av nivåer.
- Group Buying är tjänster som säljer presentkort till olika typer av evenemang, tjänster och upplevelser och genom att flera köper samma presentkort samtidigt kan affärerna ge bra rabatter, företaget Groupon är enligt Forbes Magazine det snabbast växande företaget i världen någonsin (!).
Några som enligt Gartner redan har påbörjat sin kälkfärd är t ex
- Surfplattor och
- Molnlösningar.
- NFC som är det elektroniska betalningssättet som gör din mobil till en plånbok är högst upp just nu och kommer halka ner rejält innan tekniken blir mogen på riktigt och NFC finns inbyggt i alla mobiler.
De tekniker som vi på tekniken.nu helst skulle vilja snabbt tog sig till mognadsstadiet är:
- Kvantdator – skulle det inte vara fint att få oändlig datorkraft i nästa version av BF3?
- Hjärninterface – koppla in din hjärna med usb porten och skriv med tankens hjälp – är inte tangentbordet lite väl långsamt sätt att mata in information på? Tangentbordet är ju medvetet designat för att armarna i en skrivmaskin inte skulle trassla in sig i varandra – här borde man kommit längre på 144 år
- Speech-to-speech translation – ta med iPhone på semesterresan och prata japanska flytande.
Sen kan man ju avsluta med att inse att Apple självklart har koll på det här så att de satsar på Location (find my friends) och speech recognition (Siri) och Mobile Application Stores (AppStore) är ingen konstigt. I nästa iPhone 5 kommer då antagligen biometrisk inloggning och inbyggd QR läsare?
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Hypekurvan 2011", + "meta_description": "", + "author_id": 1087, + "created_at": 1322127900000, + "created_by": 1087, + "updated_at": 1322127900000, + "updated_by": 1087, + "published_at": 1322127900000, + "published_by": 1087 + }, + { + "id": 582, + "title": "Boxee - Jag är såld!", + "slug": "boxee---jag-ar-sald", + "markdown": "\r\n\r\nJag har sedan länge varit en förespråkare av XBMC på Linuxburk som den ultimata mediemaskinen. Uppsättningen har dock varit allt annat än smidig.\r\n\r\nAtt få ut ljud genom HDMI har till exempel varit ganska påfrestande, i övrigt har den inte alltid varit så bra på att hålla sig up-to-date med vilka filmer som tagits bort eller flyttats från mitt bibliotek.\r\n\r\nNu finns dock ett alternativ, Boxee. Gratis och går att köra i Windows.\r\n\r\nJag kör fortfarande med min Asrock ION 330 låda som faktiskt fortfarande räcker till, även med Windows i bakgrunden. Vill man kan man även köpa Boxee boxen, som tillverkas av D-Link och är Linuxbaserad. Själv gillar jag att ha lite högre prestanda och kunna köra Windows 7 i bakgrunden.\r\n\r\nBoxee är fint nog baserat på XBMC vilket är ganska tydligt på vissa ställen. Hårdvaruacceleration fungerar bra vilket gör att 1080p fungerar även på lite svagare hårdvara – givet rätt grafikkort.\r\n\r\nMina favoriter är hittills;\r\n\r\n- Automatisk sortering av filmer och tv-serier samt nedladdning av information om varje avsnitt/film.\r\n\r\n- Automatisk hämtning av subtitles till både filmer och tv-serier.\r\n\r\n- Snyggare och lättare gränssnitt än XMBC standardskin.\r\n\r\n- Att lägga till källor är mycket enklare.\r\n\r\n- Gratis fjärrkontroll till iPhone.\r\n\r\n- Hyr film från exempelvis Headweb.\r\n\r\n- Inbyggd browser.\r\n\r\nGår dessutom att köra på iPad, utan att behöva synka mot iTunes vilket förstås är fantastiskt. Därmed behöver vi inte längre konvertera filmer innan de kan spelas upp!\r\n\r\nMer information finns på Boxee.tv.\r\n\r\n![Bild](http://tekniken.nu/uploads/634590166291664357-image003.png@01CCB40F.B3C67A60__image003.png)", + "html": "Jag har sedan länge varit en förespråkare av XBMC på Linuxburk som den ultimata mediemaskinen. Uppsättningen har dock varit allt annat än smidig.
Att få ut ljud genom HDMI har till exempel varit ganska påfrestande, i övrigt har den inte alltid varit så bra på att hålla sig up-to-date med vilka filmer som tagits bort eller flyttats från mitt bibliotek.
Nu finns dock ett alternativ, Boxee. Gratis och går att köra i Windows.
Jag kör fortfarande med min Asrock ION 330 låda som faktiskt fortfarande räcker till, även med Windows i bakgrunden. Vill man kan man även köpa Boxee boxen, som tillverkas av D-Link och är Linuxbaserad. Själv gillar jag att ha lite högre prestanda och kunna köra Windows 7 i bakgrunden.
Boxee är fint nog baserat på XBMC vilket är ganska tydligt på vissa ställen. Hårdvaruacceleration fungerar bra vilket gör att 1080p fungerar även på lite svagare hårdvara – givet rätt grafikkort.
Mina favoriter är hittills;
- Automatisk sortering av filmer och tv-serier samt nedladdning av information om varje avsnitt/film.
- Automatisk hämtning av subtitles till både filmer och tv-serier.
- Snyggare och lättare gränssnitt än XMBC standardskin.
- Att lägga till källor är mycket enklare.
- Gratis fjärrkontroll till iPhone.
- Hyr film från exempelvis Headweb.
- Inbyggd browser.
Går dessutom att köra på iPad, utan att behöva synka mot iTunes vilket förstås är fantastiskt. Därmed behöver vi inte längre konvertera filmer innan de kan spelas upp!
Mer information finns på Boxee.tv.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Boxee - Jag är såld!", + "meta_description": "", + "author_id": 1088, + "created_at": 1323419826000, + "created_by": 1088, + "updated_at": 1323419826000, + "updated_by": 1088, + "published_at": 1323419826000, + "published_by": 1088 + }, + { + "id": 585, + "title": "28 tips på hur du kan stödja fler steg av dina kunders köpprocess 2011", + "slug": "28-tips-pa-hur-du-kan-stodja-fler-steg-av-dina-kunders-kopprocess-2011", + "markdown": "\r\n\r\nÄnda sedan 1995 har företag insett potentialen i att synas och finnas på Internet. I början bara som ett visitkort eller broschyr och senare som sätt att kommunicera sitt varumärke, som komplement till övriga kommunkationskanaler. På senare år har många framgångsrika företag insett möjligheten att använda sin närvaro på Internet till att också göra affärer. De första och mest framgångsrika exemplen är inom områden med en ung och uppkopplad målgrupp med tydligt definierade produkter. T ex elektronik, vitvaror, böcker, cd-skivor, filmer, resor. Men nu är det dags att fler företag inser potentialen att använda teknikens möjligheter för både fler områden men också för fler delar av köpprocessen.\r\n## Sverige har varit moget länge\r\nNumera är nästan alla hushåll i Sveriges uppkopplade och har bra förutsättningar med bra bredband, läsplattor, mobiltelefoner. Det innebär att fler företag har prövat och lyckats flytta sin affär till Internet. Bra exempel på detta är kommuner och myndigheter som gjort fler av sina tjänster tillgängliga dygnet runt och ökar sin kundservice och effektiviserar sin verksamhet på samma gång. Eftersom tekniken blir mer och mer standardiserad och därmed billigare kan numera även mindre företag och organisationer göra sina affärer tillgängliga.\r\n\r\n\r\n## ## Förut var teknik helt frånvarande i köpprocessenVarumärkesbyggande – TV/Radioreklam, annonsering, direktutskick, billboards, rekommendationer och säljareBeslutsunderlag – Kundtjänst, broschyrer, rådgivning i butik och telefonförsäljningKonkurrentanalys – Fråga vänner och familj, tidningar, undersökningar och konsumenttesterBeslut – Postorder, köp i butik, telefonförsäljningRationalisera & bekräfta – Förklara sitt beslut för sin omgivning, visa fakta via broschyrerLeverans – Hämta i butik, frakt mot avgift, postUppföljning och merförsäljning – brev, telefonkontakt, reklamRelationsbyggande – Återkommande besök/möten med kunder## ## Idag är teknik ofta involverad i flera eller alla delar av en köpprocess:Varumärkesbyggande – sociala medier, banners, Adwords och nyhetsbrev, QR koder i offline annonserBeslutsunderlag – information på hemsida, wikipedia, nyhetsbrev, prissajter, mobilsajter.Konkurrentanalys – Googla sökord, prisjämförelser, testsajter, fråga på sociala nätverk, kommentarer på sajterBeslut – Ehandel, köp i butik, telefonförsäljningRationalisera & bekräfta – Förklara sitt beslut för sin omgivning. Skicka länk/fakta via mail, mobil eller sociala medierLeverans – Digital leveransplats, nedladdning av filer, tillgång till tjänster/upplevelser, tillgång till verktyg och självhjälpUppföljning och merförsäljning – epost, SMS, sociala medier, Mina Sidor, FacebookRelationsbyggande – sociala medier, personifierade nyhetsbrev## ## Mobil explosion ökar behovet av mobil tillgång till produktinformation\r\n87% av alla svenskar 2011 anger att de använder Internet till att söka fakta och produktinformation. 72% använder internet för att göra prisjämförelser, 78% för att köpa och betala varor. Över hälften använder sociala nätverk. 42% av alla i åldern 16-35 surfar mobilt dagligen 2011 vilket kan jämföras med 7-3% året innan. Hur kommer 2012 se ut?\r\n\r\n\r\nKälla: IIS 2011\r\n## Kombinera traditionell och digital marknadsföring\r\nDe företag som lyckas bäst med att stödja köpprocessen kombinerar både på traditionell marknadsföring och kompletterar med tekniska stöd. När vissa steg av köprocessen automatiseras upplever kunder det som ökad kundservice. T ex i steg 6 – uppföljning och merförsäljning. Om kunderna kan följa upp ordrar, lägga tilläggsbeställningar på ett enkelt sätt dygnet runt blir man glad. Om man däremot tar bort manuella steg och hänvisar till webben som enda alternativ har man missat poängen. \r\n\r\nVarje steg i köpprocessen måste hanteras varsamt och när dina kunder börjar kommunicera med dig digitalt vill de självklart ha möjlighet att fortsätta sin köprocess digitalt men du får inte glömma bort att det är precis samma kund som du annars hade pratat med i telefon och du måste lyckas med konststycket att sälja till kunden med precis samma erfarenhet som du idag skickligt säljer offline men nu ska det ske digitalt. Det innebär en varsam omstöpning till att hela den försäljningstaktik och de lärdomar om dina kunder du har lyckats ta fram ska omvandlas till information och tekniska hjälpmedel på din webbplats.\r\n## Mycket kvar att göra\r\nVissa grupper av företag har fortfarande långt kvar i sin digitala användning i köpprocessen. De flesta mindre företagen har bara ett visitkort som hemsida (t ex advokater, konsulter, tillverkningsindustri, tidningar, hantverkare, restauranger, föreningar, butiker). Många större varumärken ser fortfarande bara webben som ett av många sätt att bygga sitt varumärke och missar möjligheterna att stödja fler av köpprocessens steg. \r\n## Tekniken viktigare och viktigare\r\nI takt med att fler och fler har tillgång till och faktiskt använder sig av teknik i kombination med att tekniken numera är en viktig del av flera av köpprocessens steg blir det viktigare och viktigare för företag att se till att de tekniska lösningarna faktiskt fungerar och levererar för att inte bara underlätta för sina kunder utan också för att inte riskera att tappa köp då kunder fastnar i krånglig teknik eller bristande information/kommunikation.\r\n\r\nHär är några konkreta tips för hur du kan använda teknik för att stödja dina kunders köpprocess:\r\nSe tekniken som en möjlighet att lägga mer tid åt att vårda dina kunder inte som ett alternativ till det.Använd en CMS produkt på din hemsida så att du enkelt kan uppdatera den när du ser att informationen är inkorrekt eller inaktuell.Gör en mobilanpassad webb, menDon’t overdo it. Testa din webbplats i en mobil och se till att inte Flash krävs på viktiga ställen och att navigationen går att använda. Att göra för stor förändring från din vanliga webbplats mot din mobila webbplats ska man vara försiktig med för ofta behöver dina kunder hitta tillbaka till samma ställe där de tidigare hittat en information som del av beslutsprocessen i steg 4-5. Dessutom läser många mailen i mobilen när man har fått tips från någon och då vill man se sidan som den såg ut när avsändaren tryckte på skicka.Integration. Se till att det inte krävs manuella handgrepp för att få din hemsida uppdaterad med sådant som användarna behöver i sin köpprocess. Dvs lagersaldo, prisinformation, marknadskampanjer och rabatter. Gör det möjligt att lägga ordrar eller följa upp ordrar direkt via webbplatsen. Integrera också med CRM / säljsystem så att du kan följa dina kunders besök på hemsidan och lära dig mer om deras behov innan de ringer och även för att kunna ringa upp dem om de inte ringer.Respektera dina kunders tid. Gör inte beställningsformulär där de behöver fylla i information som du redan känner till och kräv inte att dom ska komma ihåg speciella lösenord för just din sajt, de beställer så sällan att de kommer ha glömt deras lösenord nästa gång. Använd andra lösningar som t ex inloggning via Facebook konto eller LinkedIn. Tänk också på att göra din webbplats snabb att ladda! Det är en konst att skapa optimerade lösningar och det är många faktorer inblandade. Mät och optimera och lasttesta. Mer än hälften avbryter ett köp om det tar för lång tid eller är för krångligt. Om en sida laddar under en halv sekund upplever man inte att det tar någon tid. Tar en sida mer än två sekunder upplevs den som långsam. Motsvarande värde år 2001 var åtta sekunder så här kan vi förvänta oss att vi blir mer och mer otåliga.Lyssna på dina kunder, fråga dem vad som inte funkar och vad du kan förbättra för att dom lättare ska kunna göra affärer med dig. Använd verktyg för att fånga upp kunders feedback direkt på sajten. Använd t ex kundo.se som har ett bra kundservicetillägg där du enkelt kan besvara dina kunders frågor direkt på din sajt.Bli närvarande i din virtuella affär. Om du driver en fysisk butik kan du lätt ställa dig i bakgrunden och följa dina kunders beteende, du kan också gå fram till kunderna och fråga när du ser ut dom verkar att ha fastnat och behöver hjälp. I din virtuella butik är det inte lika enkelt men det går. Google Analytics har numera realtidsinformation vilket gör att du kan följa dina kunder genom din affär och se vart dom just nu befinner sig. Det ger en bra indikation. Det finns även andra bra verktyg som t ex WhosOn kan du förutom att följa dina besökare även kan börja chatta med dina besökare. Installera även tillägget Clicky och Clicky Notifier som gör att du får notifieringar när du får nya besökare. Allt för att du ska bli mer närvarande i din affär:Ha tålamod. Det tar tid att få ny teknik att fungera, att få dina kunder att förstå dina nya sätt att göra affärer och för kunderna att våga byta sitt mönster. Var heller inte rädd för att du kommer bli överöst av kommentarer, ordrar och klagande kunder. Det är oftast tyst i forum, orderböcker och kommentarer. Tänk att det är som ett dansgolv på mellanstadiet, kunderna vågar först dansa när nån annan har börjat så försök få dina trognaste kunder att börja och be dina medarbetare att skriva frågor dom får ofta.Våga fullfölja. Om du har börjat satsa på en egen facebooksida eller öppnat ett forum för dina produkter. Lägg inte ner för att det tar för mycket tid för dig att engagera eller svara på kommentarer. Satsa istället ännu mer och avvakta och se att din försäljning successivt kommer att öka. När du fått igång dina kunder kommer du dels få en ovärdelig källa till dubbelriktad kommunikation och dels få stor synlighet på Google eftersom dina kunders frågor är formulerade med samma sökord dina kunder söker på.Lämna aldrig kommentarer obesvarade, försök få till så att du blir notifierad när det kommer nya kommentarer så att du kan vara snabb med att svara. Använd gratisplugins som t ex Disqus som gör det enkelt att lägga in kommentarer och även för dig att ta bort olämpliga kommentarer och för andra att anmäla olämpliga kommentarer.Tänk mer än ehandel. Även om du inte aktivt säljer på nätet kan du fundera på hur tekniska hjälpmedel kan öka din försäljning. Om du till exempel driver en advokatfirma kan dina klienter få en egen filarea på din webbplats där de kan logga in och hitta sina leveranser, avtal, orderbekräftelser, tidredovisningsunderlag, tariffer för olika tjänster men också som verktyg för att samarbeta kring olika handlingar. Har du en serviceverkstad kan du låta dina kunder söka i din databas över tidigare kostnader för liknande skador eller beställa hämtning av serviceobjekt.Bygg på stabila plattformar. Teknikens utveckling går fort och det är svårt att välja rätt teknik men se till att välja en plattform och en leverantör som kan leverera kvalitet. Om du ska flytta ut din affär måste du göra det helhjärtat. Välj en teknisk lösning som många känner till och titta på vad konkurrenterna använder, det ökar möjligheterna att du kan leva vidare i plattformen i många år. Undvik för enkla standardlösningar, de är oftast bra för att testa och lära sig men är du seriös ska du ha tillräcklig kontroll för att kunna specialanpassa efter dina egna behov.Byt inte bara design. 70% av alla företag som bygger ny hemsida gör det för att de tröttnat på den gamla designen. Om du ransakar dig själv finns det säkerligen andra delar på din webbplats som ger ökad försäljning än att byta designen.Bygg APIer – många företag kan samarbeta väldigt integrerat med sina leverantörer och kunder om man gör det möjligt för dessa att använda dina tjänster via automatiska gränssnitt, dvs API. Ett API kan t ex göra det möjligt för dina kunder att hämta aktivt lagersaldo för en viss vara och därmed göra det möjligt att i sina egna beställningssystem bygga in ditt lagersaldo och därmed blir du premierad i valet av leverantörer. Tänk också på att exponera dina API:erGör det möjligt att skryta om dina produkter och tjänster. Detta används både när dina kunder vill veta mer om en produkt och frågar sina vänner eller kollegor om information (steg 2-3) och efter att ett köp är genomfört för att bekräfta och rationalisera sitt köp (steg 5). Detta både produkter så som cyklar och tvättmaskiner men också för tjänster som t ex resor, hotell, konsulter.Tänk på i vilket steg av sin köpprocess som kunden ska använda tekniken och det blir mycket lättare att fokusera utformningen till ändamålet. Till exempel är det ointressant att visa kampanjer på beställningssidan. Då är det enda du vill att din kund ska trycka på beställ och gå vidare i köpprocessen, inte börja om från början med ett annat erbjudande.Glöm inte bort merförsäljningen. När du har inlett en relation med en kund på nätet ska du behandla den på samma sätt som om den precis hade varit i din butik och köpt en vara. Försök få kontakt med din kund och kolla att han eller hon är nöjd med sitt köp, det ger dig en möjlighet att fånga in värdefull information om hur din affär upplevs men är också en start på ett relationsbyggande som kan fortgå många år efter ett köp.Analysera dina kunders köpmönster. Din försäljningsdatabas sitter på mycket intressanta samband som du kan fiska fram med lite klurigt funderande. Om du letar lite kanske du kan mäta hur lång tid en genomsnittlig fullständig köpprocess tar. Oftast genomgår dina potentiella kunder alla steg enligt ovan och det kan ibland ta flera månader. Om du analyserar köpmönstret kan du hitta sätt att snabba upp processen, t ex skicka ett litet nyhetsbrev till de kunder som har varit inne på dina beslutsunderlagssidor men ännu inte kommit till ett beslut.Använd QR koder som brygga från offline-medier så som annonser, broschyrer, tv-reklam till din mobila webbplats. Tänk bara på att dina besökare kommer använda mobilen när de scannat din QR kod vilket gör att du bör anpassa sidan till att fungera på en mobil skärm. Tänk också på att besökaren redan läst din annons och har därmed passerat steg 1 och är köpsugen så ta honom/henne inte till en varumärkesbyggande sida utan presentera information och verktyg som hjälper kunden att bestämma sig och beställa.Använd QR koder på fler sätt än bara länka till information. Till exempel kan du använda QR koder som möjligt sätt att betala eller beställa tjänster. Om du driver en personalmatsal eller lunchrestauran kan du till exempel använda QR koder för att låta dina stamgäster betala eller till och med beställa. Om du driver en pizzeria kan du trycka QR koder på din hämtmatsedel och ta in dina beställningar elektroniskt via mobilen. Om du har en mobilapp kan du enkelt länka till mobilappen med en QR kod.Skicka nyhetsbrev. Samla upp frågor från dina forum, visa populära eller nya produkter/tjänster. Ta upp aktuella händelser och knyt an till dessa händelser. Våga vara personlig och inkludera erbjudande och uppmuntra till att skicka vidare nyhetsbrevet till kollegor och vänner. Skicka inte för ofta och gör det enkelt att avregistrera sig. Läs även vad vitidigare skrivit om nyhetsbrev.Mät effekten. Om du är seriös i din satsning på att öka din försäljning bör du även mäta hur stor effekt du får av dina satsningar. Det finns många sätt men enklast är att analysera dina användare via Google Analytics. Definiera olika mål och vägar genom din webbplats och fundera på hur du enklast kan se hur många som lyckas hitta till dina målsidor. Även om du inte säljer något på din sajt kan du ändå ha vissa sidor som är mer värda för dig att dina kunder besöker. Till exempel är din Kontakta Oss sida en bättre slutsida än att de slutar på ”våra konkurrenter”. (Det finns dock vissa som hävdar att försäljningen ökar när man vågar visa en lista på sina konkurrenter.) Mätvärdena gör du om till omvandlingsfrekvens (conversion rate) och mäter därefter effekten av olika förändringar med hjälp av detta.Använd principen att 50% av alla dina besökare försvinner för varje moment som de tvingas gå igenom från att de bestämt sig till att de genomfört sitt köp. Ta bort onödiga steg, kräv inte kunderna på uppgifter de inte har i huvudet. Erbjud olika betalningsalternativ varav ett är faktura eftersom de har alla uppgifter i huvudet.Avsluta inte med en besvikelse. Om kunden har tagit sig tid att genomgå alla steg i sin köpprocess och till slut ska trycka på den magiska beställknappen vill du inte avsluta med att berätta att frakt/service/fakturaavgiften tillkommer. Eller att momsen inte ingår. Eller att varan inte finns i lager. Eller att tjänsten inte finns tillgänglig i just det landet som kunden befinner sig. Om man presenterar dåliga nyheter tidigt i köpproccessen kan kunden välja att gå vidare men kommer nyheten när de redan har bestämt sig kommer många hoppa av och börja om köpproccessen hos någon av dina konkurrenter. Gratis frakt är ett väldigt bra försäljningsknep av den anledningen.Lär dig av dina konkurrenter. Du behöver inte alltid hitta på allt själv, dina konkurrenter har säkert en hel del tips på vilken teknik man kan använda och framför allt hur man inte bör göra.Sökmotoroptimera. Försök identifiera de nyckelord dina kunder använder. Tänk inte på vad dina produkter eller tjänster heter utan försök tänka mer generellt. Använd Google som inspiration. Börja skriva ett ord och se vad google föreslår. De förslag Google visar upp är sådant som många söker på, det betyder att du ska ha just dessa kombinationer av ord på din sajt. T ex kanske du säljer ballongresor. Uppenbarligen kommer du skriva ballongresor många gånger på din sajt så det behöver du inte oroa dig för men det kanske inte är vad dina kunder först söker på. Testa att skriva upplevelser i google så ser det ut som nedan. Om du nu har en sida på din sajt som heter Upplevelser för Två i Stockholm kommer din sida vara en av de få som får träff på både de mest populära sökningarna ”Upplevelser för två” och ”Upplevelser i Stockholm”. Går du sen vidare och skriver ”Upplevelser för två” kommer du se att de mest populära orterna är Malmö och Stockholm.Använd teknik men gör denDead simple att använda! Tänk på normalfördelningskurvan. Om du har många potentiella kunder kommer de fördela sig som normalfördelningskurvan vilket innebär att om du gör dina tekniska lösningar så krångliga att man måste vara en early adopter för att sig igenom din köpprocess kommer du aldrig få mer än 13,5% av marknaden. Läs mer om Early adopters på wikipedia## Och till sist...\r\n28. Tänk som en gädda. Min pappa brukar använda detta dåliga tips när vi fiskar och jag kan inte säga att det hjälpt mig speciellt mycket i fisket men jag tror på principen. Principen är att sätta in sig i just en kunds tankar och locka med rätt typ av bete precis framför nosen som gör att han tar nästa steg/bett ;)\r\n\r\nSlutligen en excellent summering av Svenskarna och Internet framtagen förIIS av illustratören Martin Ander\r\n\r\n\r\n\r\nTänk att det finns fler datorer per hushåll än människor.\r\n\r\n![Bild](http://tekniken.nu/uploads/634625871786583057-image006.png@01CCD18F.E5D17620__image006.png)", + "html": "Ända sedan 1995 har företag insett potentialen i att synas och finnas på Internet. I början bara som ett visitkort eller broschyr och senare som sätt att kommunicera sitt varumärke, som komplement till övriga kommunkationskanaler. På senare år har många framgångsrika företag insett möjligheten att använda sin närvaro på Internet till att också göra affärer. De första och mest framgångsrika exemplen är inom områden med en ung och uppkopplad målgrupp med tydligt definierade produkter. T ex elektronik, vitvaror, böcker, cd-skivor, filmer, resor. Men nu är det dags att fler företag inser potentialen att använda teknikens möjligheter för både fler områden men också för fler delar av köpprocessen.
Sverige har varit moget länge
Numera är nästan alla hushåll i Sveriges uppkopplade och har bra förutsättningar med bra bredband, läsplattor, mobiltelefoner. Det innebär att fler företag har prövat och lyckats flytta sin affär till Internet. Bra exempel på detta är kommuner och myndigheter som gjort fler av sina tjänster tillgängliga dygnet runt och ökar sin kundservice och effektiviserar sin verksamhet på samma gång. Eftersom tekniken blir mer och mer standardiserad och därmed billigare kan numera även mindre företag och organisationer göra sina affärer tillgängliga.
Förut var teknik helt frånvarande i köpprocessen
- Varumärkesbyggande – TV/Radioreklam, annonsering, direktutskick, billboards, rekommendationer och säljare
- Beslutsunderlag – Kundtjänst, broschyrer, rådgivning i butik och telefonförsäljning
- Konkurrentanalys – Fråga vänner och familj, tidningar, undersökningar och konsumenttester
- Beslut – Postorder, köp i butik, telefonförsäljning
- Rationalisera & bekräfta – Förklara sitt beslut för sin omgivning, visa fakta via broschyrer
- Leverans – Hämta i butik, frakt mot avgift, post
- Uppföljning och merförsäljning – brev, telefonkontakt, reklam
- Relationsbyggande – Återkommande besök/möten med kunder
Idag är teknik ofta involverad i flera eller alla delar av en köpprocess:
- Varumärkesbyggande – sociala medier, banners, Adwords och nyhetsbrev, QR koder i offline annonser
- Beslutsunderlag – information på hemsida, wikipedia, nyhetsbrev, prissajter, mobilsajter.
- Konkurrentanalys – Googla sökord, prisjämförelser, testsajter, fråga på sociala nätverk, kommentarer på sajter
- Beslut – Ehandel, köp i butik, telefonförsäljning
- Rationalisera & bekräfta – Förklara sitt beslut för sin omgivning. Skicka länk/fakta via mail, mobil eller sociala medier
- Leverans – Digital leveransplats, nedladdning av filer, tillgång till tjänster/upplevelser, tillgång till verktyg och självhjälp
- Uppföljning och merförsäljning – epost, SMS, sociala medier, Mina Sidor, Facebook
- Relationsbyggande – sociala medier, personifierade nyhetsbrev
Mobil explosion ökar behovet av mobil tillgång till produktinformation
87% av alla svenskar 2011 anger att de använder Internet till att söka fakta och produktinformation. 72% använder internet för att göra prisjämförelser, 78% för att köpa och betala varor. Över hälften använder sociala nätverk. 42% av alla i åldern 16-35 surfar mobilt dagligen 2011 vilket kan jämföras med 7-3% året innan. Hur kommer 2012 se ut?
Källa: IIS 2011
Kombinera traditionell och digital marknadsföring
De företag som lyckas bäst med att stödja köpprocessen kombinerar både på traditionell marknadsföring och kompletterar med tekniska stöd. När vissa steg av köprocessen automatiseras upplever kunder det som ökad kundservice. T ex i steg 6 – uppföljning och merförsäljning. Om kunderna kan följa upp ordrar, lägga tilläggsbeställningar på ett enkelt sätt dygnet runt blir man glad. Om man däremot tar bort manuella steg och hänvisar till webben som enda alternativ har man missat poängen.
Varje steg i köpprocessen måste hanteras varsamt och när dina kunder börjar kommunicera med dig digitalt vill de självklart ha möjlighet att fortsätta sin köprocess digitalt men du får inte glömma bort att det är precis samma kund som du annars hade pratat med i telefon och du måste lyckas med konststycket att sälja till kunden med precis samma erfarenhet som du idag skickligt säljer offline men nu ska det ske digitalt. Det innebär en varsam omstöpning till att hela den försäljningstaktik och de lärdomar om dina kunder du har lyckats ta fram ska omvandlas till information och tekniska hjälpmedel på din webbplats.
Mycket kvar att göra
Vissa grupper av företag har fortfarande långt kvar i sin digitala användning i köpprocessen. De flesta mindre företagen har bara ett visitkort som hemsida (t ex advokater, konsulter, tillverkningsindustri, tidningar, hantverkare, restauranger, föreningar, butiker). Många större varumärken ser fortfarande bara webben som ett av många sätt att bygga sitt varumärke och missar möjligheterna att stödja fler av köpprocessens steg.
Tekniken viktigare och viktigare
I takt med att fler och fler har tillgång till och faktiskt använder sig av teknik i kombination med att tekniken numera är en viktig del av flera av köpprocessens steg blir det viktigare och viktigare för företag att se till att de tekniska lösningarna faktiskt fungerar och levererar för att inte bara underlätta för sina kunder utan också för att inte riskera att tappa köp då kunder fastnar i krånglig teknik eller bristande information/kommunikation.
Här är några konkreta tips för hur du kan använda teknik för att stödja dina kunders köpprocess:
- Se tekniken som en möjlighet att lägga mer tid åt att vårda dina kunder inte som ett alternativ till det.
- Använd en CMS produkt på din hemsida så att du enkelt kan uppdatera den när du ser att informationen är inkorrekt eller inaktuell.
- Gör en mobilanpassad webb, menDon’t overdo it. Testa din webbplats i en mobil och se till att inte Flash krävs på viktiga ställen och att navigationen går att använda. Att göra för stor förändring från din vanliga webbplats mot din mobila webbplats ska man vara försiktig med för ofta behöver dina kunder hitta tillbaka till samma ställe där de tidigare hittat en information som del av beslutsprocessen i steg 4-5. Dessutom läser många mailen i mobilen när man har fått tips från någon och då vill man se sidan som den såg ut när avsändaren tryckte på skicka.
- Integration. Se till att det inte krävs manuella handgrepp för att få din hemsida uppdaterad med sådant som användarna behöver i sin köpprocess. Dvs lagersaldo, prisinformation, marknadskampanjer och rabatter. Gör det möjligt att lägga ordrar eller följa upp ordrar direkt via webbplatsen. Integrera också med CRM / säljsystem så att du kan följa dina kunders besök på hemsidan och lära dig mer om deras behov innan de ringer och även för att kunna ringa upp dem om de inte ringer.
- Respektera dina kunders tid. Gör inte beställningsformulär där de behöver fylla i information som du redan känner till och kräv inte att dom ska komma ihåg speciella lösenord för just din sajt, de beställer så sällan att de kommer ha glömt deras lösenord nästa gång. Använd andra lösningar som t ex inloggning via Facebook konto eller LinkedIn. Tänk också på att göra din webbplats snabb att ladda! Det är en konst att skapa optimerade lösningar och det är många faktorer inblandade. Mät och optimera och lasttesta. Mer än hälften avbryter ett köp om det tar för lång tid eller är för krångligt. Om en sida laddar under en halv sekund upplever man inte att det tar någon tid. Tar en sida mer än två sekunder upplevs den som långsam. Motsvarande värde år 2001 var åtta sekunder så här kan vi förvänta oss att vi blir mer och mer otåliga.
- Lyssna på dina kunder, fråga dem vad som inte funkar och vad du kan förbättra för att dom lättare ska kunna göra affärer med dig. Använd verktyg för att fånga upp kunders feedback direkt på sajten. Använd t ex kundo.se som har ett bra kundservicetillägg där du enkelt kan besvara dina kunders frågor direkt på din sajt.
- Bli närvarande i din virtuella affär. Om du driver en fysisk butik kan du lätt ställa dig i bakgrunden och följa dina kunders beteende, du kan också gå fram till kunderna och fråga när du ser ut dom verkar att ha fastnat och behöver hjälp. I din virtuella butik är det inte lika enkelt men det går. Google Analytics har numera realtidsinformation vilket gör att du kan följa dina kunder genom din affär och se vart dom just nu befinner sig. Det ger en bra indikation. Det finns även andra bra verktyg som t ex WhosOn kan du förutom att följa dina besökare även kan börja chatta med dina besökare. Installera även tillägget Clicky och Clicky Notifier som gör att du får notifieringar när du får nya besökare. Allt för att du ska bli mer närvarande i din affär:
- Ha tålamod. Det tar tid att få ny teknik att fungera, att få dina kunder att förstå dina nya sätt att göra affärer och för kunderna att våga byta sitt mönster. Var heller inte rädd för att du kommer bli överöst av kommentarer, ordrar och klagande kunder. Det är oftast tyst i forum, orderböcker och kommentarer. Tänk att det är som ett dansgolv på mellanstadiet, kunderna vågar först dansa när nån annan har börjat så försök få dina trognaste kunder att börja och be dina medarbetare att skriva frågor dom får ofta.
- Våga fullfölja. Om du har börjat satsa på en egen facebooksida eller öppnat ett forum för dina produkter. Lägg inte ner för att det tar för mycket tid för dig att engagera eller svara på kommentarer. Satsa istället ännu mer och avvakta och se att din försäljning successivt kommer att öka. När du fått igång dina kunder kommer du dels få en ovärdelig källa till dubbelriktad kommunikation och dels få stor synlighet på Google eftersom dina kunders frågor är formulerade med samma sökord dina kunder söker på.
- Lämna aldrig kommentarer obesvarade, försök få till så att du blir notifierad när det kommer nya kommentarer så att du kan vara snabb med att svara. Använd gratisplugins som t ex Disqus som gör det enkelt att lägga in kommentarer och även för dig att ta bort olämpliga kommentarer och för andra att anmäla olämpliga kommentarer.
- Tänk mer än ehandel. Även om du inte aktivt säljer på nätet kan du fundera på hur tekniska hjälpmedel kan öka din försäljning. Om du till exempel driver en advokatfirma kan dina klienter få en egen filarea på din webbplats där de kan logga in och hitta sina leveranser, avtal, orderbekräftelser, tidredovisningsunderlag, tariffer för olika tjänster men också som verktyg för att samarbeta kring olika handlingar. Har du en serviceverkstad kan du låta dina kunder söka i din databas över tidigare kostnader för liknande skador eller beställa hämtning av serviceobjekt.
- Bygg på stabila plattformar. Teknikens utveckling går fort och det är svårt att välja rätt teknik men se till att välja en plattform och en leverantör som kan leverera kvalitet. Om du ska flytta ut din affär måste du göra det helhjärtat. Välj en teknisk lösning som många känner till och titta på vad konkurrenterna använder, det ökar möjligheterna att du kan leva vidare i plattformen i många år. Undvik för enkla standardlösningar, de är oftast bra för att testa och lära sig men är du seriös ska du ha tillräcklig kontroll för att kunna specialanpassa efter dina egna behov.
- Byt inte bara design. 70% av alla företag som bygger ny hemsida gör det för att de tröttnat på den gamla designen. Om du ransakar dig själv finns det säkerligen andra delar på din webbplats som ger ökad försäljning än att byta designen.
- Bygg APIer – många företag kan samarbeta väldigt integrerat med sina leverantörer och kunder om man gör det möjligt för dessa att använda dina tjänster via automatiska gränssnitt, dvs API. Ett API kan t ex göra det möjligt för dina kunder att hämta aktivt lagersaldo för en viss vara och därmed göra det möjligt att i sina egna beställningssystem bygga in ditt lagersaldo och därmed blir du premierad i valet av leverantörer. Tänk också på att exponera dina API:er
- Gör det möjligt att skryta om dina produkter och tjänster. Detta används både när dina kunder vill veta mer om en produkt och frågar sina vänner eller kollegor om information (steg 2-3) och efter att ett köp är genomfört för att bekräfta och rationalisera sitt köp (steg 5). Detta både produkter så som cyklar och tvättmaskiner men också för tjänster som t ex resor, hotell, konsulter.
- Tänk på i vilket steg av sin köpprocess som kunden ska använda tekniken och det blir mycket lättare att fokusera utformningen till ändamålet. Till exempel är det ointressant att visa kampanjer på beställningssidan. Då är det enda du vill att din kund ska trycka på beställ och gå vidare i köpprocessen, inte börja om från början med ett annat erbjudande.
- Glöm inte bort merförsäljningen. När du har inlett en relation med en kund på nätet ska du behandla den på samma sätt som om den precis hade varit i din butik och köpt en vara. Försök få kontakt med din kund och kolla att han eller hon är nöjd med sitt köp, det ger dig en möjlighet att fånga in värdefull information om hur din affär upplevs men är också en start på ett relationsbyggande som kan fortgå många år efter ett köp.
- Analysera dina kunders köpmönster. Din försäljningsdatabas sitter på mycket intressanta samband som du kan fiska fram med lite klurigt funderande. Om du letar lite kanske du kan mäta hur lång tid en genomsnittlig fullständig köpprocess tar. Oftast genomgår dina potentiella kunder alla steg enligt ovan och det kan ibland ta flera månader. Om du analyserar köpmönstret kan du hitta sätt att snabba upp processen, t ex skicka ett litet nyhetsbrev till de kunder som har varit inne på dina beslutsunderlagssidor men ännu inte kommit till ett beslut.
- Använd QR koder som brygga från offline-medier så som annonser, broschyrer, tv-reklam till din mobila webbplats. Tänk bara på att dina besökare kommer använda mobilen när de scannat din QR kod vilket gör att du bör anpassa sidan till att fungera på en mobil skärm. Tänk också på att besökaren redan läst din annons och har därmed passerat steg 1 och är köpsugen så ta honom/henne inte till en varumärkesbyggande sida utan presentera information och verktyg som hjälper kunden att bestämma sig och beställa.
- Använd QR koder på fler sätt än bara länka till information. Till exempel kan du använda QR koder som möjligt sätt att betala eller beställa tjänster. Om du driver en personalmatsal eller lunchrestauran kan du till exempel använda QR koder för att låta dina stamgäster betala eller till och med beställa. Om du driver en pizzeria kan du trycka QR koder på din hämtmatsedel och ta in dina beställningar elektroniskt via mobilen. Om du har en mobilapp kan du enkelt länka till mobilappen med en QR kod.
- Skicka nyhetsbrev. Samla upp frågor från dina forum, visa populära eller nya produkter/tjänster. Ta upp aktuella händelser och knyt an till dessa händelser. Våga vara personlig och inkludera erbjudande och uppmuntra till att skicka vidare nyhetsbrevet till kollegor och vänner. Skicka inte för ofta och gör det enkelt att avregistrera sig. Läs även vad vitidigare skrivit om nyhetsbrev.
- Mät effekten. Om du är seriös i din satsning på att öka din försäljning bör du även mäta hur stor effekt du får av dina satsningar. Det finns många sätt men enklast är att analysera dina användare via Google Analytics. Definiera olika mål och vägar genom din webbplats och fundera på hur du enklast kan se hur många som lyckas hitta till dina målsidor. Även om du inte säljer något på din sajt kan du ändå ha vissa sidor som är mer värda för dig att dina kunder besöker. Till exempel är din Kontakta Oss sida en bättre slutsida än att de slutar på ”våra konkurrenter”. (Det finns dock vissa som hävdar att försäljningen ökar när man vågar visa en lista på sina konkurrenter.) Mätvärdena gör du om till omvandlingsfrekvens (conversion rate) och mäter därefter effekten av olika förändringar med hjälp av detta.
- Använd principen att 50% av alla dina besökare försvinner för varje moment som de tvingas gå igenom från att de bestämt sig till att de genomfört sitt köp. Ta bort onödiga steg, kräv inte kunderna på uppgifter de inte har i huvudet. Erbjud olika betalningsalternativ varav ett är faktura eftersom de har alla uppgifter i huvudet.
- Avsluta inte med en besvikelse. Om kunden har tagit sig tid att genomgå alla steg i sin köpprocess och till slut ska trycka på den magiska beställknappen vill du inte avsluta med att berätta att frakt/service/fakturaavgiften tillkommer. Eller att momsen inte ingår. Eller att varan inte finns i lager. Eller att tjänsten inte finns tillgänglig i just det landet som kunden befinner sig. Om man presenterar dåliga nyheter tidigt i köpproccessen kan kunden välja att gå vidare men kommer nyheten när de redan har bestämt sig kommer många hoppa av och börja om köpproccessen hos någon av dina konkurrenter. Gratis frakt är ett väldigt bra försäljningsknep av den anledningen.
- Lär dig av dina konkurrenter. Du behöver inte alltid hitta på allt själv, dina konkurrenter har säkert en hel del tips på vilken teknik man kan använda och framför allt hur man inte bör göra.
- Sökmotoroptimera. Försök identifiera de nyckelord dina kunder använder. Tänk inte på vad dina produkter eller tjänster heter utan försök tänka mer generellt. Använd Google som inspiration. Börja skriva ett ord och se vad google föreslår. De förslag Google visar upp är sådant som många söker på, det betyder att du ska ha just dessa kombinationer av ord på din sajt. T ex kanske du säljer ballongresor. Uppenbarligen kommer du skriva ballongresor många gånger på din sajt så det behöver du inte oroa dig för men det kanske inte är vad dina kunder först söker på. Testa att skriva upplevelser i google så ser det ut som nedan. Om du nu har en sida på din sajt som heter Upplevelser för Två i Stockholm kommer din sida vara en av de få som får träff på både de mest populära sökningarna ”Upplevelser för två” och ”Upplevelser i Stockholm”. Går du sen vidare och skriver ”Upplevelser för två” kommer du se att de mest populära orterna är Malmö och Stockholm.
- Använd teknik men gör denDead simple att använda! Tänk på normalfördelningskurvan. Om du har många potentiella kunder kommer de fördela sig som normalfördelningskurvan vilket innebär att om du gör dina tekniska lösningar så krångliga att man måste vara en early adopter för att sig igenom din köpprocess kommer du aldrig få mer än 13,5% av marknaden. Läs mer om Early adopters på wikipedia
Och till sist...
28. Tänk som en gädda. Min pappa brukar använda detta dåliga tips när vi fiskar och jag kan inte säga att det hjälpt mig speciellt mycket i fisket men jag tror på principen. Principen är att sätta in sig i just en kunds tankar och locka med rätt typ av bete precis framför nosen som gör att han tar nästa steg/bett ;)
Slutligen en excellent summering av Svenskarna och Internet framtagen förIIS av illustratören Martin Ander
Tänk att det finns fler datorer per hushåll än människor.
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "28 tips på hur du kan stödja fler steg av dina kunders köpprocess 2011", + "meta_description": "", + "author_id": 1087, + "created_at": 1326990376000, + "created_by": 1087, + "updated_at": 1326990376000, + "updated_by": 1087, + "published_at": 1326990376000, + "published_by": 1087 + }, + { + "id": 601, + "title": "En grej till...", + "slug": "en-grej-till", + "markdown": "\r\nLägg till länk till denna sist också: https://twitter.com/#!/Iteam1337/iteam\r\n\r\n- A -\r\n\r\nTvå grymma utvecklare sökes - känner du någon som borde jobba på Sveriges bästa teknikbyrå? \r\n\r\n\r\n\r\nAnders Bornholm -anders.bornholm@iteam.seTegnérgatan 28 - SE-113 59 Stockholm\r\n\r\nOffice: +46 8 26 70 90Mobile: +46 708 62 41 90\r\n![Bild](http://tekniken.nu/uploads/634720665703190457-image001.png@01CD287F.7C229050__image001.png)", + "html": "Lägg till länk till denna sist också: https://twitter.com/#!/Iteam1337/iteam
- A -
Två grymma utvecklare sökes - känner du någon som borde jobba på Sveriges bästa teknikbyrå?
Anders Bornholm -anders.bornholm@iteam.se
Tegnérgatan 28 - SE-113 59 Stockholm
Office: +46 8 26 70 90
Mobile: +46 708 62 41 90",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "En grej till...",
+ "meta_description": null,
+ "author_id": 6,
+ "created_at": 1336469768000,
+ "created_by": 6,
+ "updated_at": 1336469768000,
+ "updated_by": 6,
+ "published_at": 1336469768000,
+ "published_by": 6
+ },
+ {
+ "id": 602,
+ "title": "5 grymma Twitter-verktyg",
+ "slug": "5-grymma-twitter-verktyg",
+ "markdown": "\r\n\r\nFör att göra livet på Twitter lite mer effektivt så finns det allsköns siter och verktyg för att twittra och hålla koll på följare. Här är en lista på de grejer som jag använder:\r\n## Twitterklient\r\nJag använder Tweetdeck för att den har (i mitt tycke) bästa hanteringen av flera Twitterkonton och olika listor i kolumner. Desktop-varianten av Tweetdeck är byggd med Adobe Air och är ganska jobbig, men iPhone-appen och Tweetdeck-extension till Chrome är riktigt bra.\r\n## Hantera följare\r\nEtt lätt sätt att snabbare få fler följare är att släppa filtret och följa ganska många som någorlunda stämmer med ens intresseprofil och hoppas att de följer en tillbaka. Problemet är att man ganska snabbt får ett ohanterligt flöde och att man slår i första följataket som ligger på 2000 konton. Med hjälp av bara twitter.com eller någon av twitter-klienterna är det nästan omöjligt att gå igenom de man följer för att se vilka som inte följer en tillbaka. Det finns flera verktyg för att hjälpa till med detta. Min absoluta favorit är ManageFlitter. Det är både gratis och har en riktigt bra filtrering av konton. Du kan plocka ut alla som inte följer dig tillbaka, men behålla konton som är populära eller aktiva.\r\n\r\nAtt hålla på att följa mängder med konton och sen avfölja får man använda med måtta dock, annars kan man bli blockerad av Twitter. Min egen tumregel är att aldrig följa konton bara för följandets skull, det måste alltid finnas potential för bra tweets och någon sorts utbyte.\r\n## Hålla koll\r\nStatistiksiter för Twitter finns det 12 på dussinet. Några av mina favoriter är:\r\n\r\nKlout – en sort scoreboard för alla ens sociala medier. Klout har fått ganska mycket skäll för att algoritmen som räknar ut poängen ändras ofta och att ens poängkurva kan bli ganska schizofren. Men på senare tid verkar den ha stabiliserats och nu kan man ändå få en uppfattning av hur man ligger till och vilken effekt det man skriver ger. Tjänsten visar också vilka du har mest kontakt med och som påverkar dig mest bland dina tweeps.\r\n\r\nPeerindex – en konkurrent till Klout som gör ungefär samma sak, men två vyer av samma data är aldrig fel.\r\n\r\nTwopcharts – en gräsligt ful site som kan ta fram alla möjliga spännande listor, bland annat över vilka konton du följde först, dina första tweets, förväntad tid till dess att du når X följare och lite innovativa varianter på ”who to follow”.\r\n\r\nLycka till med ditt Twittrande och glöm inte att följa@Iteam1337!\r\n\r\nMer från Iteam hittar du här: https://twitter.com/#!/Iteam1337/iteam\r\n\r\n![Bild](http://tekniken.nu/uploads/634720665710377957-twitter.png)",
+ "html": "
För att göra livet på Twitter lite mer effektivt så finns det allsköns siter och verktyg för att twittra och hålla koll på följare. Här är en lista på de grejer som jag använder:
Twitterklient
Jag använder Tweetdeck för att den har (i mitt tycke) bästa hanteringen av flera Twitterkonton och olika listor i kolumner. Desktop-varianten av Tweetdeck är byggd med Adobe Air och är ganska jobbig, men iPhone-appen och Tweetdeck-extension till Chrome är riktigt bra.
Hantera följare
Ett lätt sätt att snabbare få fler följare är att släppa filtret och följa ganska många som någorlunda stämmer med ens intresseprofil och hoppas att de följer en tillbaka. Problemet är att man ganska snabbt får ett ohanterligt flöde och att man slår i första följataket som ligger på 2000 konton. Med hjälp av bara twitter.com eller någon av twitter-klienterna är det nästan omöjligt att gå igenom de man följer för att se vilka som inte följer en tillbaka. Det finns flera verktyg för att hjälpa till med detta. Min absoluta favorit är ManageFlitter. Det är både gratis och har en riktigt bra filtrering av konton. Du kan plocka ut alla som inte följer dig tillbaka, men behålla konton som är populära eller aktiva.
Att hålla på att följa mängder med konton och sen avfölja får man använda med måtta dock, annars kan man bli blockerad av Twitter. Min egen tumregel är att aldrig följa konton bara för följandets skull, det måste alltid finnas potential för bra tweets och någon sorts utbyte.
Hålla koll
Statistiksiter för Twitter finns det 12 på dussinet. Några av mina favoriter är:
Klout – en sort scoreboard för alla ens sociala medier. Klout har fått ganska mycket skäll för att algoritmen som räknar ut poängen ändras ofta och att ens poängkurva kan bli ganska schizofren. Men på senare tid verkar den ha stabiliserats och nu kan man ändå få en uppfattning av hur man ligger till och vilken effekt det man skriver ger. Tjänsten visar också vilka du har mest kontakt med och som påverkar dig mest bland dina tweeps.
Peerindex – en konkurrent till Klout som gör ungefär samma sak, men två vyer av samma data är aldrig fel.
Twopcharts – en gräsligt ful site som kan ta fram alla möjliga spännande listor, bland annat över vilka konton du följde först, dina första tweets, förväntad tid till dess att du når X följare och lite innovativa varianter på ”who to follow”.
Lycka till med ditt Twittrande och glöm inte att följa@Iteam1337!
Mer från Iteam hittar du här: https://twitter.com/#!/Iteam1337/iteam
Det vill jag veta.
Två grymma utvecklare sökes - känner du någon som borde jobba på Sveriges bästa teknikbyrå?
Anders Bornholm -anders.bornholm@iteam.se
Tegnérgatan 28 - SE-113 59 Stockholm
Office: +46 8 26 70 90
Mobile: +46 708 62 41 90",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "Kan jag maila hit?",
+ "meta_description": null,
+ "author_id": 6,
+ "created_at": 1336469771000,
+ "created_by": 6,
+ "updated_at": 1336469771000,
+ "updated_by": 6,
+ "published_at": 1336469771000,
+ "published_by": 6
+ },
+ {
+ "id": 605,
+ "title": "RE: test",
+ "slug": "re-test",
+ "markdown": "\r\nVad vill du veta? J\r\n\r\nTvå grymma utvecklare sökes - känner du någon som borde jobba på Sveriges bästa teknikbyrå? \r\n\r\n\r\n\r\nJohanna Gustafsson - johanna.gustafsson@iteam.seTegnérgatan 28 - SE-113 59 Stockholm\r\n\r\nOffice: +46 8 26 70 90Mobile: +46 734 02 91 12\r\n\r\nFrom: Rasmus FredrikssonSent: den 2 maj 2012 14:36To: Blogg-NyheterSubject: test\r\n\r\ntest\r\n\r\nTvå grymma utvecklare sökes - känner du någon som borde jobba på Sveriges bästa teknikbyrå? \r\n\r\n\r\n\r\nRasmus Fredriksson - rasmus.fredriksson@iteam.seTegnérgatan 28 - SE-113 59 Stockholm\r\n\r\nOffice: +46 8 26 70 90Mobile: +46 70 37 666 40\r\n![Bild](http://tekniken.nu/uploads/634720665729440457-image001.png@01CD2872.1870C980__image001.png)",
+ "html": "
Vad vill du veta? J
Två grymma utvecklare sökes - känner du någon som borde jobba på Sveriges bästa teknikbyrå?
Johanna Gustafsson - johanna.gustafsson@iteam.se
Tegnérgatan 28 - SE-113 59 Stockholm
Office: +46 8 26 70 90
Mobile: +46 734 02 91 12
From: Rasmus Fredriksson
Sent: den 2 maj 2012 14:36
To: Blogg-Nyheter
Subject: test
test
Två grymma utvecklare sökes - känner du någon som borde jobba på Sveriges bästa teknikbyrå?
Rasmus Fredriksson - rasmus.fredriksson@iteam.se
Tegnérgatan 28 - SE-113 59 Stockholm
Office: +46 8 26 70 90
Mobile: +46 70 37 666 40",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "RE: test",
+ "meta_description": null,
+ "author_id": 1093,
+ "created_at": 1336469772000,
+ "created_by": 1093,
+ "updated_at": 1336469772000,
+ "updated_by": 1093,
+ "published_at": 1336469772000,
+ "published_by": 1093
+ },
+ {
+ "id": 606,
+ "title": "test",
+ "slug": "test",
+ "markdown": "\r\ntest\r\n\r\nTvå grymma utvecklare sökes - känner du någon som borde jobba på Sveriges bästa teknikbyrå? \r\n\r\n\r\n\r\nRasmus Fredriksson - rasmus.fredriksson@iteam.seTegnérgatan 28 - SE-113 59 Stockholm\r\n\r\nOffice: +46 8 26 70 90Mobile: +46 70 37 666 40\r\n![Bild](http://tekniken.nu/uploads/634720665735065457-image001.png@01CD2870.E9C459E0__image001.png)",
+ "html": "
test
Två grymma utvecklare sökes - känner du någon som borde jobba på Sveriges bästa teknikbyrå?
Rasmus Fredriksson - rasmus.fredriksson@iteam.se
Tegnérgatan 28 - SE-113 59 Stockholm
Office: +46 8 26 70 90
Mobile: +46 70 37 666 40",
+ "image": null,
+ "featured": 0,
+ "page": 0,
+ "status": "published",
+ "language": "sv_SE",
+ "meta_title": "test",
+ "meta_description": null,
+ "author_id": 1095,
+ "created_at": 1336469773000,
+ "created_by": 1095,
+ "updated_at": 1336469773000,
+ "updated_by": 1095,
+ "published_at": 1336469773000,
+ "published_by": 1095
+ },
+ {
+ "id": 23,
+ "title": "Nyheter",
+ "slug": "nyheter",
+ "markdown": "\r\nSenaste nyheterna",
+ "html": "
Senaste nyheterna
", + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Nyheter & Trender", + "meta_description": "", + "author_id": 4, + "created_at": 1181663998000, + "created_by": 4, + "updated_at": 1181663998000, + "updated_by": 4, + "published_at": 1181663998000, + "published_by": 4 + }, + { + "id": 25, + "title": "Start", + "slug": "start", + "markdown": null, + "html": null, + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Start", + "meta_description": "", + "author_id": 4, + "created_at": 1181606400000, + "created_by": 4, + "updated_at": 1181606400000, + "updated_by": 4, + "published_at": 1181606400000, + "published_by": 4 + }, + { + "id": 75, + "title": "Om tekniken.nu", + "slug": "om-teknikennu", + "markdown": null, + "html": null, + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": null, + "author_id": 4, + "created_at": 1188777600000, + "created_by": 4, + "updated_at": 1188777600000, + "updated_by": 4, + "published_at": 1188777600000, + "published_by": 4 + }, + { + "id": 152, + "title": "Sök", + "slug": "sok", + "markdown": null, + "html": null, + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": "Sök", + "meta_description": "", + "author_id": 4, + "created_at": 1196899200000, + "created_by": 4, + "updated_at": 1196899200000, + "updated_by": 4, + "published_at": 1196899200000, + "published_by": 4 + }, + { + "id": 237, + "title": "Tag Cloud", + "slug": "tag-cloud", + "markdown": null, + "html": null, + "image": null, + "featured": 0, + "page": 0, + "status": "published", + "language": "sv_SE", + "meta_title": null, + "meta_description": null, + "author_id": 4, + "created_at": 1222688988000, + "created_by": 4, + "updated_at": 1222688988000, + "updated_by": 4, + "published_at": 1222688988000, + "published_by": 4 + } + ], + "tags": [ + { + "id": 0, + "name": "Utveckling", + "slug": "utveckling", + "description": "Utveckling" + }, + { + "id": 1, + "name": "Telnet", + "slug": "telnet", + "description": "Telnet" + }, + { "id": 2, "name": "Vista", "slug": "vista", "description": "Vista" }, + { + "id": 3, + "name": "Tillägg", + "slug": "tillagg", + "description": "Tillägg" + }, + { "id": 4, "name": ".NET", "slug": "net", "description": ".NET" }, + { + "id": 5, + "name": "ASP.NET", + "slug": "aspnet", + "description": "ASP.NET" + }, + { + "id": 6, + "name": "Events", + "slug": "events", + "description": "Events" + }, + { + "id": 7, + "name": "Minneshantering", + "slug": "minneshantering", + "description": "Minneshantering" + }, + { + "id": 8, + "name": "Visual Studio 2008", + "slug": "visual-studio-2008", + "description": "Visual Studio 2008" + }, + { + "id": 9, + "name": ".NET Framework", + "slug": "net-framework", + "description": ".NET Framework" + }, + { "id": 10, "name": "WPF", "slug": "wpf", "description": "WPF" }, + { + "id": 11, + "name": "Filuppladdning", + "slug": "filuppladdning", + "description": "Filuppladdning" + }, + { "id": 12, "name": "MVC", "slug": "mvc", "description": "MVC" }, + { + "id": 13, + "name": "Model-View-Controller", + "slug": "model-view-controller", + "description": "Model-View-Controller" + }, + { + "id": 14, + "name": "Microsoft", + "slug": "microsoft", + "description": "Microsoft" + }, + { "id": 15, "name": "AJAX", "slug": "ajax", "description": "AJAX" }, + { + "id": 16, + "name": "AjaxPro", + "slug": "ajaxpro", + "description": "AjaxPro" + }, + { "id": 17, "name": "C#", "slug": "c", "description": "C#" }, + { + "id": 18, + "name": "Javascript", + "slug": "javascript", + "description": "Javascript" + }, + { + "id": 19, + "name": "Prestanda", + "slug": "prestanda", + "description": "Prestanda" + }, + { + "id": 20, + "name": "Webb 2.0", + "slug": "webb-20", + "description": "Webb 2.0" + }, + { + "id": 21, + "name": "RedDot", + "slug": "reddot", + "description": "RedDot" + }, + { + "id": 22, + "name": "EPiServer", + "slug": "episerver", + "description": "EPiServer" + }, + { "id": 23, "name": "CMS", "slug": "cms", "description": "CMS" }, + { + "id": 24, + "name": "Webbpublicering", + "slug": "webbpublicering", + "description": "Webbpublicering" + }, + { + "id": 25, + "name": "Databind", + "slug": "databind", + "description": "Databind" + }, + { "id": 26, "name": "IIS7", "slug": "iis7", "description": "IIS7" }, + { + "id": 27, + "name": "Debuggning", + "slug": "debuggning", + "description": "Debuggning" + }, + { + "id": 28, + "name": "Visual Studio", + "slug": "visual-studio", + "description": "Visual Studio" + }, + { "id": 29, "name": "SVN", "slug": "svn", "description": "SVN" }, + { + "id": 30, + "name": "AnkhSVN", + "slug": "ankhsvn", + "description": "AnkhSVN" + }, + { + "id": 31, + "name": "Utvecklingsverktyg", + "slug": "utvecklingsverktyg", + "description": "Utvecklingsverktyg" + }, + { + "id": 32, + "name": "Stränghantering", + "slug": "stranghantering", + "description": "Stränghantering" + }, + { + "id": 33, + "name": "Regular Expressions", + "slug": "regular-expressions", + "description": "Regular Expressions" + }, + { "id": 34, "name": "CSS", "slug": "css", "description": "CSS" }, + { + "id": 35, + "name": "Sprites", + "slug": "sprites", + "description": "Sprites" + }, + { + "id": 36, + "name": "Optimering", + "slug": "optimering", + "description": "Optimering" + }, + { + "id": 37, + "name": "Bilder", + "slug": "bilder", + "description": "Bilder" + }, + { + "id": 38, + "name": "Bildkartor", + "slug": "bildkartor", + "description": "Bildkartor" + }, + { + "id": 39, + "name": "Exchange", + "slug": "exchange", + "description": "Exchange" + }, + { + "id": 40, + "name": "Exchange 2007", + "slug": "exchange-2007", + "description": "Exchange 2007" + }, + { + "id": 41, + "name": "WebDav", + "slug": "webdav", + "description": "WebDav" + }, + { + "id": 42, + "name": "Web Services", + "slug": "web-services", + "description": "Web Services" + }, + { "id": 43, "name": "LINQ", "slug": "linq", "description": "LINQ" }, + { "id": 44, "name": "SQL", "slug": "sql", "description": "SQL" }, + { "id": 45, "name": "ORM", "slug": "orm", "description": "ORM" }, + { + "id": 46, + "name": "EPiServer CMS 5", + "slug": "episerver-cms-5", + "description": "EPiServer CMS 5" + }, + { + "id": 47, + "name": "Properties", + "slug": "properties", + "description": "Properties" + }, + { + "id": 48, + "name": "Användbarhet", + "slug": "anvandbarhet", + "description": "Användbarhet" + }, + { + "id": 49, + "name": "Gränssnitt", + "slug": "granssnitt", + "description": "Gränssnitt" + }, + { "id": 50, "name": "SOAP", "slug": "soap", "description": "SOAP" }, + { + "id": 51, + "name": "Service Pack", + "slug": "service-pack", + "description": "Service Pack" + }, + { + "id": 52, + "name": "Internet Explorer", + "slug": "internet-explorer", + "description": "Internet Explorer" + }, + { "id": 53, "name": "IE6", "slug": "ie6", "description": "IE6" }, + { + "id": 54, + "name": "Testning", + "slug": "testning", + "description": "Testning" + }, + { + "id": 55, + "name": "IETester", + "slug": "ietester", + "description": "IETester" + }, + { + "id": 56, + "name": "Webbläsare", + "slug": "webblasare", + "description": "Webbläsare" + }, + { + "id": 57, + "name": "Flash", + "slug": "flash", + "description": "Flash" + }, + { "id": 58, "name": "FLV", "slug": "flv", "description": "FLV" }, + { + "id": 59, + "name": "Flashvideo", + "slug": "flashvideo", + "description": "Flashvideo" + }, + { + "id": 60, + "name": "ffmpeg", + "slug": "ffmpeg", + "description": "ffmpeg" + }, + { "id": 61, "name": "HTC", "slug": "htc", "description": "HTC" }, + { "id": 62, "name": "XBL", "slug": "xbl", "description": "XBL" }, + { + "id": 63, + "name": "Google", + "slug": "google", + "description": "Google" + }, + { + "id": 64, + "name": "Google Code", + "slug": "google-code", + "description": "Google Code" + }, + { + "id": 65, + "name": "Nokia", + "slug": "nokia", + "description": "Nokia" + }, + { + "id": 66, + "name": "jQuery", + "slug": "jquery", + "description": "jQuery" + }, + { + "id": 67, + "name": "Källkodshantering", + "slug": "kallkodshantering", + "description": "Källkodshantering" + }, + { + "id": 68, + "name": "Subversion", + "slug": "subversion", + "description": "Subversion" + }, + { + "id": 69, + "name": "SQL Server", + "slug": "sql-server", + "description": "SQL Server" + }, + { + "id": 70, + "name": "Databaser", + "slug": "databaser", + "description": "Databaser" + }, + { + "id": 71, + "name": "Google Maps", + "slug": "google-maps", + "description": "Google Maps" + }, + { + "id": 72, + "name": "Mashups", + "slug": "mashups", + "description": "Mashups" + }, + { + "id": 73, + "name": "Integration", + "slug": "integration", + "description": "Integration" + }, + { + "id": 74, + "name": "VisualSVN", + "slug": "visualsvn", + "description": "VisualSVN" + }, + { + "id": 75, + "name": "Method Extensions", + "slug": "method-extensions", + "description": "Method Extensions" + }, + { + "id": 76, + "name": "Webbutveckling", + "slug": "webbutveckling", + "description": "Webbutveckling" + }, + { "id": 77, "name": "HTML", "slug": "html", "description": "HTML" }, + { + "id": 78, + "name": "Silverlight", + "slug": "silverlight", + "description": "Silverlight" + }, + { + "id": 79, + "name": "Mobiler", + "slug": "mobiler", + "description": "Mobiler" + }, + { + "id": 80, + "name": "Prestandatestning", + "slug": "prestandatestning", + "description": "Prestandatestning" + }, + { + "id": 81, + "name": "Svarstider", + "slug": "svarstider", + "description": "Svarstider" + }, + { + "id": 82, + "name": ".NET 3.5", + "slug": "net-35", + "description": ".NET 3.5" + }, + { "id": 83, "name": "XML", "slug": "xml", "description": "XML" }, + { "id": 84, "name": "API", "slug": "api", "description": "API" }, + { + "id": 85, + "name": "Google Analytics", + "slug": "google-analytics", + "description": "Google Analytics" + }, + { + "id": 86, + "name": "Photoshop", + "slug": "photoshop", + "description": "Photoshop" + }, + { + "id": 87, + "name": "Elements", + "slug": "elements", + "description": "Elements" + }, + { + "id": 88, + "name": "SQL Server 2008", + "slug": "sql-server-2008", + "description": "SQL Server 2008" + }, + { + "id": 89, + "name": "Apple", + "slug": "apple", + "description": "Apple" + }, + { + "id": 90, + "name": "iPhone", + "slug": "iphone", + "description": "iPhone" + }, + { + "id": 91, + "name": "Novell", + "slug": "novell", + "description": "Novell" + }, + { "id": 92, "name": "Mono", "slug": "mono", "description": "Mono" }, + { + "id": 93, + "name": "Intellisense", + "slug": "intellisense", + "description": "Intellisense" + }, + { "id": 94, "name": "WCF", "slug": "wcf", "description": "WCF" }, + { + "id": 95, + "name": "Messenger", + "slug": "messenger", + "description": "Messenger" + }, + { "id": 96, "name": "ICQ", "slug": "icq", "description": "ICQ" }, + { "id": 97, "name": "AIM", "slug": "aim", "description": "AIM" }, + { "id": 98, "name": "IRC", "slug": "irc", "description": "IRC" }, + { "id": 99, "name": "Bot", "slug": "bot", "description": "Bot" }, + { + "id": 100, + "name": "Instant messaging", + "slug": "instant-messaging", + "description": "Instant messaging" + }, + { + "id": 101, + "name": "Webbdesign", + "slug": "webbdesign", + "description": "Webbdesign" + }, + { + "id": 102, + "name": "Användarvänlighet", + "slug": "anvandarvanlighet", + "description": "Användarvänlighet" + }, + { + "id": 103, + "name": "Extension methods", + "slug": "extension-methods", + "description": "Extension methods" + }, + { "id": 104, "name": "IIS", "slug": "iis", "description": "IIS" }, + { + "id": 105, + "name": "web.config", + "slug": "webconfig", + "description": "web.config" + }, + { + "id": 106, + "name": "Team Foundation Server", + "slug": "team-foundation-server", + "description": "Team Foundation Server" + }, + { + "id": 107, + "name": "Säkerhet", + "slug": "sakerhet", + "description": "Säkerhet" + }, + { + "id": 108, + "name": "Virus", + "slug": "virus", + "description": "Virus" + }, + { + "id": 109, + "name": "Buggar", + "slug": "buggar", + "description": "Buggar" + }, + { + "id": 110, + "name": "Skärmdumpar", + "slug": "skarmdumpar", + "description": "Skärmdumpar" + }, + { + "id": 111, + "name": "NUnit", + "slug": "nunit", + "description": "NUnit" + }, + { + "id": 112, + "name": "Tester", + "slug": "tester", + "description": "Tester" + }, + { + "id": 113, + "name": "veckonummer", + "slug": "veckonummer", + "description": "veckonummer" + }, + { "id": 114, "name": "IPv6", "slug": "ipv6", "description": "IPv6" }, + { + "id": 115, + "name": "Routing", + "slug": "routing", + "description": "Routing" + }, + { "id": 116, "name": "REST", "slug": "rest", "description": "REST" }, + { + "id": 117, + "name": "Profile", + "slug": "profile", + "description": "Profile" + }, + { + "id": 118, + "name": "TFS 2010", + "slug": "tfs-2010", + "description": "TFS 2010" + }, + { + "id": 119, + "name": "RegEx", + "slug": "regex", + "description": "RegEx" + }, + { + "id": 120, + "name": "Lambda-uttryck", + "slug": "lambda-uttryck", + "description": "Lambda-uttryck" + }, + { + "id": 121, + "name": "Excel", + "slug": "excel", + "description": "Excel" + }, + { + "id": 122, + "name": "Scrum", + "slug": "scrum", + "description": "Scrum" + }, + { + "id": 123, + "name": "Inloggning", + "slug": "inloggning", + "description": "Inloggning" + }, + { + "id": 124, + "name": "Intranät", + "slug": "intranat", + "description": "Intranät" + }, + { + "id": 125, + "name": "Chrome", + "slug": "chrome", + "description": "Chrome" + }, + { + "id": 126, + "name": "FireFox", + "slug": "firefox", + "description": "FireFox" + }, + { + "id": 127, + "name": "Razor", + "slug": "razor", + "description": "Razor" + }, + { + "id": 128, + "name": "Betaversioner", + "slug": "betaversioner", + "description": "Betaversioner" + }, + { + "id": 129, + "name": "HTML 5", + "slug": "html-5", + "description": "HTML 5" + }, + { + "id": 130, + "name": "Webbprojekt", + "slug": "webbprojekt", + "description": "Webbprojekt" + }, + { "id": 131, "name": "TFS", "slug": "tfs", "description": "TFS" }, + { + "id": 132, + "name": "Placeholder", + "slug": "placeholder", + "description": "Placeholder" + }, + { + "id": 133, + "name": "Användargränssnitt", + "slug": "anvandargranssnitt", + "description": "Användargränssnitt" + }, + { + "id": 134, + "name": "OLEDB", + "slug": "oledb", + "description": "OLEDB" + }, + { + "id": 135, + "name": "Microsft", + "slug": "microsft", + "description": "Microsft" + }, + { + "id": 136, + "name": " EPiServer.Framework", + "slug": "-episerverframework", + "description": " EPiServer.Framework" + }, + { + "id": 137, + "name": " Relate+", + "slug": "-relate", + "description": " Relate+" + }, + { "id": 138, "name": " dll", "slug": "-dll", "description": " dll" }, + { + "id": 139, + "name": "kartor", + "slug": "kartor", + "description": "kartor" + }, + { + "id": 140, + "name": "Bing Maps", + "slug": "bing-maps", + "description": "Bing Maps" + }, + { + "id": 141, + "name": "EPiServer CMS 6", + "slug": "episerver-cms-6", + "description": "EPiServer CMS 6" + }, + { + "id": 142, + "name": "TinyMCE", + "slug": "tinymce", + "description": "TinyMCE" + }, + { + "id": 143, + "name": "språkhantering", + "slug": "sprakhantering", + "description": "språkhantering" + }, + { + "id": 144, + "name": "IIS 7", + "slug": "iis-7", + "description": "IIS 7" + }, + { + "id": 145, + "name": "regiis", + "slug": "regiis", + "description": "regiis" + }, + { + "id": 146, + "name": "ASP.NET 4", + "slug": "aspnet-4", + "description": "ASP.NET 4" + }, + { + "id": 147, + "name": "Classic Mode", + "slug": "classic-mode", + "description": "Classic Mode" + }, + { + "id": 148, + "name": "rollback", + "slug": "rollback", + "description": "rollback" + }, + { + "id": 149, + "name": "undelete", + "slug": "undelete", + "description": "undelete" + }, + { + "id": 150, + "name": "Page properties", + "slug": "page-properties", + "description": "Page properties" + }, + { + "id": 151, + "name": "PageAdapter", + "slug": "pageadapter", + "description": "PageAdapter" + }, + { + "id": 152, + "name": "Molntjänster", + "slug": "molntjanster", + "description": "Molntjänster" + }, + { + "id": 153, + "name": "SQL Azure", + "slug": "sql-azure", + "description": "SQL Azure" + }, + { + "id": 154, + "name": "drift", + "slug": "drift", + "description": "drift" + }, + { + "id": 155, + "name": " ASP.NET", + "slug": "-aspnet", + "description": " ASP.NET" + }, + { "id": 156, "name": "dll", "slug": "dll", "description": "dll" }, + { + "id": 157, + "name": "MSBuild", + "slug": "msbuild", + "description": "MSBuild" + }, + { + "id": 158, + "name": "webbläsartest", + "slug": "webblasartest", + "description": "webbläsartest" + }, + { + "id": 159, + "name": "audio-element", + "slug": "audio-element", + "description": "audio-element" + }, + { + "id": 160, + "name": "browser detection", + "slug": "browser-detection", + "description": "browser detection" + }, + { + "id": 161, + "name": "feature detection", + "slug": "feature-detection", + "description": "feature detection" + }, + { "id": 162, "name": "IE8", "slug": "ie8", "description": "IE8" }, + { "id": 163, "name": "IE7", "slug": "ie7", "description": "IE7" }, + { + "id": 164, + "name": "Forms Authentication", + "slug": "forms-authentication", + "description": "Forms Authentication" + }, + { + "id": 165, + "name": "Windows Server 2008", + "slug": "windows-server-2008", + "description": "Windows Server 2008" + }, + { + "id": 166, + "name": "Cookies", + "slug": "cookies", + "description": "Cookies" + }, + { + "id": 167, + "name": "NoSQL", + "slug": "nosql", + "description": "NoSQL" + }, + { + "id": 168, + "name": "Map/Reduce", + "slug": "mapreduce", + "description": "Map/Reduce" + }, + { + "id": 169, + "name": "relationsdatabas", + "slug": "relationsdatabas", + "description": "relationsdatabas" + }, + { + "id": 170, + "name": "RavenDB", + "slug": "ravendb", + "description": "RavenDB" + }, + { + "id": 171, + "name": "MongoDB", + "slug": "mongodb", + "description": "MongoDB" + }, + { + "id": 172, + "name": "Timer", + "slug": "timer", + "description": "Timer" + }, + { + "id": 173, + "name": "plugin", + "slug": "plugin", + "description": "plugin" + }, + { + "id": 174, + "name": "språk", + "slug": "sprak", + "description": "språk" + }, + { + "id": 175, + "name": "Page Files", + "slug": "page-files", + "description": "Page Files" + }, + { + "id": 176, + "name": "Global Files", + "slug": "global-files", + "description": "Global Files" + }, + { + "id": 177, + "name": "AddThis", + "slug": "addthis", + "description": "AddThis" + }, + { + "id": 178, + "name": "Sociala medier", + "slug": "sociala-medier", + "description": "Sociala medier" + }, + { + "id": 179, + "name": "Facebook", + "slug": "facebook", + "description": "Facebook" + }, + { + "id": 180, + "name": "Twitter", + "slug": "twitter", + "description": "Twitter" + }, + { + "id": 181, + "name": "Visual Studio Test Project", + "slug": "visual-studio-test-project", + "description": "Visual Studio Test Project" + }, + { + "id": 182, + "name": "Test Settings", + "slug": "test-settings", + "description": "Test Settings" + }, + { + "id": 183, + "name": "Output", + "slug": "output", + "description": "Output" + }, + { + "id": 184, + "name": "Deployment", + "slug": "deployment", + "description": "Deployment" + }, + { + "id": 185, + "name": "Synkronisering", + "slug": "synkronisering", + "description": "Synkronisering" + }, + { + "id": 186, + "name": "Bokmärken", + "slug": "bokmarken", + "description": "Bokmärken" + }, + { + "id": 187, + "name": "Extensions", + "slug": "extensions", + "description": "Extensions" + }, + { + "id": 188, + "name": "Inställningar", + "slug": "installningar", + "description": "Inställningar" + }, + { + "id": 189, + "name": "changeset", + "slug": "changeset", + "description": "changeset" + }, + { + "id": 190, + "name": "ASP.NET Routing", + "slug": "aspnet-routing", + "description": "ASP.NET Routing" + }, + { + "id": 191, + "name": "IIS 6", + "slug": "iis-6", + "description": "IIS 6" + }, + { + "id": 192, + "name": "Facebook Share", + "slug": "facebook-share", + "description": "Facebook Share" + }, + { + "id": 193, + "name": "Flickr", + "slug": "flickr", + "description": "Flickr" + }, + { + "id": 194, + "name": "Posten", + "slug": "posten", + "description": "Posten" + }, + { "id": 195, "name": "Json", "slug": "json", "description": "Json" }, + { + "id": 196, + "name": "Paypal", + "slug": "paypal", + "description": "Paypal" + }, + { + "id": 197, + "name": "Google Chrome App", + "slug": "google-chrome-app", + "description": "Google Chrome App" + }, + { + "id": 198, + "name": "Hosted App", + "slug": "hosted-app", + "description": "Hosted App" + }, + { + "id": 199, + "name": "AppStore", + "slug": "appstore", + "description": "AppStore" + }, + { + "id": 200, + "name": "RavenDB Music Store", + "slug": "ravendb-music-store", + "description": "RavenDB Music Store" + }, + { + "id": 201, + "name": "MVC Music Store", + "slug": "mvc-music-store", + "description": "MVC Music Store" + }, + { + "id": 202, + "name": "Ayende Rahien", + "slug": "ayende-rahien", + "description": "Ayende Rahien" + }, + { + "id": 203, + "name": "RemoteEvents", + "slug": "remoteevents", + "description": "RemoteEvents" + }, + { + "id": 204, + "name": "lastbalansering", + "slug": "lastbalansering", + "description": "lastbalansering" + }, + { + "id": 205, + "name": "registrera .net framework", + "slug": "registrera-net-framework", + "description": "registrera .net framework" + }, + { + "id": 206, + "name": " ASP.NET 4.0", + "slug": "-aspnet-40", + "description": " ASP.NET 4.0" + }, + { + "id": 207, + "name": "applikationspoolen", + "slug": "applikationspoolen", + "description": "applikationspoolen" + }, + { + "id": 208, + "name": "MVC 3", + "slug": "mvc-3", + "description": "MVC 3" + }, + { "id": 209, "name": "ASPX", "slug": "aspx", "description": "ASPX" }, + { + "id": 210, + "name": "GitHub", + "slug": "github", + "description": "GitHub" + }, + { + "id": 211, + "name": "RazorConverter", + "slug": "razorconverter", + "description": "RazorConverter" + }, + { + "id": 212, + "name": "MVC 2", + "slug": "mvc-2", + "description": "MVC 2" + }, + { + "id": 213, + "name": " MVC 3", + "slug": "-mvc-3", + "description": " MVC 3" + }, + { + "id": 214, + "name": "nodejs", + "slug": "nodejs", + "description": "nodejs" + }, + { + "id": 215, + "name": " socketio", + "slug": "-socketio", + "description": " socketio" + }, + { + "id": 216, + "name": " iisnode", + "slug": "-iisnode", + "description": " iisnode" + }, + { + "id": 217, + "name": " realtidswebben", + "slug": "-realtidswebben", + "description": " realtidswebben" + }, + { + "id": 218, + "name": "dokumentdatabas", + "slug": "dokumentdatabas", + "description": "dokumentdatabas" + }, + { + "id": 219, + "name": "hyphen", + "slug": "hyphen", + "description": "hyphen" + }, + { + "id": 220, + "name": "branch", + "slug": "branch", + "description": "branch" + }, + { + "id": 221, + "name": "destroy", + "slug": "destroy", + "description": "destroy" + }, + { + "id": 222, + "name": "Nyhetsbrev", + "slug": "nyhetsbrev", + "description": "Nyhetsbrev" + }, + { + "id": 223, + "name": "outlook", + "slug": "outlook", + "description": "outlook" + }, + { + "id": 224, + "name": "EmailOnAcid", + "slug": "emailonacid", + "description": "EmailOnAcid" + }, + { + "id": 225, + "name": "AuthSMTP", + "slug": "authsmtp", + "description": "AuthSMTP" + }, + { + "id": 226, + "name": "EpiServer CMS", + "slug": "episerver-cms", + "description": "EpiServer CMS" + }, + { + "id": 227, + "name": "log4net", + "slug": "log4net", + "description": "log4net" + }, + { + "id": 228, + "name": "NuGet", + "slug": "nuget", + "description": "NuGet" + }, + { + "id": 229, + "name": "AppHarbor", + "slug": "appharbor", + "description": "AppHarbor" + }, + { + "id": 230, + "name": "API Status", + "slug": "api-status", + "description": "API Status" + }, + { + "id": 231, + "name": " Internet Explorer", + "slug": "-internet-explorer", + "description": " Internet Explorer" + }, + { + "id": 232, + "name": "Unminify", + "slug": "unminify", + "description": "Unminify" + }, + { + "id": 233, + "name": "Microsoft TFS", + "slug": "microsoft-tfs", + "description": "Microsoft TFS" + }, + { + "id": 234, + "name": "vNext", + "slug": "vnext", + "description": "vNext" + }, + { + "id": 235, + "name": "Windows Communication Foundation", + "slug": "windows-communication-foundation", + "description": "Windows Communication Foundation" + }, + { + "id": 236, + "name": "felsökning", + "slug": "felsokning", + "description": "felsökning" + }, + { + "id": 237, + "name": "RootPage", + "slug": "rootpage", + "description": "RootPage" + }, + { + "id": 238, + "name": "WasteBasket", + "slug": "wastebasket", + "description": "WasteBasket" + }, + { + "id": 239, + "name": "jsFiddle", + "slug": "jsfiddle", + "description": "jsFiddle" + }, + { + "id": 240, + "name": "onlineeditor", + "slug": "onlineeditor", + "description": "onlineeditor" + }, + { + "id": 241, + "name": "debug", + "slug": "debug", + "description": "debug" + }, + { + "id": 242, + "name": "remote debug", + "slug": "remote-debug", + "description": "remote debug" + }, + { "id": 243, "name": "IE9", "slug": "ie9", "description": "IE9" }, + { + "id": 244, + "name": "IE9 Compatibility Mode", + "slug": "ie9-compatibility-mode", + "description": "IE9 Compatibility Mode" + }, + { + "id": 245, + "name": "IE 9 Quirks Mode", + "slug": "ie-9-quirks-mode", + "description": "IE 9 Quirks Mode" + }, + { + "id": 246, + "name": "Intranet Zone", + "slug": "intranet-zone", + "description": "Intranet Zone" + }, + { + "id": 247, + "name": "unicode", + "slug": "unicode", + "description": "unicode" + }, + { + "id": 248, + "name": "iso-8859-1", + "slug": "iso-8859-1", + "description": "iso-8859-1" + }, + { + "id": 249, + "name": "encoding", + "slug": "encoding", + "description": "encoding" + }, + { "id": 250, "name": "krav", "slug": "krav", "description": "krav" }, + { + "id": 251, + "name": "Devsum", + "slug": "devsum", + "description": "Devsum" + }, + { + "id": 252, + "name": "Responsive design", + "slug": "responsive-design", + "description": "Responsive design" + }, + { + "id": 253, + "name": "closure", + "slug": "closure", + "description": "closure" + }, + { + "id": 254, + "name": "ramverk", + "slug": "ramverk", + "description": "ramverk" + }, + { + "id": 255, + "name": "HTML5", + "slug": "html5", + "description": "HTML5" + }, + { "id": 256, "name": "seo", "slug": "seo", "description": "seo" }, + { + "id": 257, + "name": "verktyg", + "slug": "verktyg", + "description": "verktyg" + }, + { + "id": 258, + "name": "search engine optimization", + "slug": "search-engine-optimization", + "description": "search engine optimization" + }, + { + "id": 259, + "name": "Search Engine Optimization (SEO) Toolkit 1.0", + "slug": "search-engine-optimization-seo-toolkit-10", + "description": "Search Engine Optimization (SEO) Toolkit 1.0" + }, + { + "id": 260, + "name": "web platform", + "slug": "web-platform", + "description": "web platform" + }, + { + "id": 261, + "name": "asynkron programmering", + "slug": "asynkron-programmering", + "description": "asynkron programmering" + }, + { + "id": 262, + "name": "Microsof Async", + "slug": "microsof-async", + "description": "Microsof Async" + }, + { + "id": 263, + "name": "Visual Studio 2012", + "slug": "visual-studio-2012", + "description": "Visual Studio 2012" + }, + { + "id": 264, + "name": "TechNet", + "slug": "technet", + "description": "TechNet" + }, + { + "id": 265, + "name": "Adobe", + "slug": "adobe", + "description": "Adobe" + }, + { + "id": 266, + "name": "Acrobat", + "slug": "acrobat", + "description": "Acrobat" + }, + { "id": 267, "name": "TIFF", "slug": "tiff", "description": "TIFF" }, + { "id": 268, "name": "Fax", "slug": "fax", "description": "Fax" }, + { "id": 269, "name": "SMTP", "slug": "smtp", "description": "SMTP" }, + { + "id": 270, + "name": "Windows", + "slug": "windows", + "description": "Windows" + }, + { + "id": 271, + "name": "Canon", + "slug": "canon", + "description": "Canon" + }, + { + "id": 272, + "name": "Kameror", + "slug": "kameror", + "description": "Kameror" + }, + { "id": 273, "name": "USB", "slug": "usb", "description": "USB" }, + { + "id": 274, + "name": "EOS 300D", + "slug": "eos-300d", + "description": "EOS 300D" + }, + { + "id": 275, + "name": "Windows Server 2003", + "slug": "windows-server-2003", + "description": "Windows Server 2003" + }, + { + "id": 276, + "name": "Group Policies", + "slug": "group-policies", + "description": "Group Policies" + }, + { + "id": 277, + "name": "Ikoner", + "slug": "ikoner", + "description": "Ikoner" + }, + { + "id": 278, + "name": "Skrivbordet", + "slug": "skrivbordet", + "description": "Skrivbordet" + }, + { "id": 279, "name": "Dell", "slug": "dell", "description": "Dell" }, + { + "id": 280, + "name": "Optiplex 755", + "slug": "optiplex-755", + "description": "Optiplex 755" + }, + { + "id": 281, + "name": "Intel", + "slug": "intel", + "description": "Intel" + }, + { + "id": 282, + "name": "nätverkskort", + "slug": "natverkskort", + "description": "nätverkskort" + }, + { + "id": 283, + "name": "Sony Ericsson", + "slug": "sony-ericsson", + "description": "Sony Ericsson" + }, + { + "id": 284, + "name": "M600i", + "slug": "m600i", + "description": "M600i" + }, + { + "id": 285, + "name": "Exchange 2007 SP1", + "slug": "exchange-2007-sp1", + "description": "Exchange 2007 SP1" + }, + { + "id": 286, + "name": "ActiveSync", + "slug": "activesync", + "description": "ActiveSync" + }, + { + "id": 287, + "name": "Sharepoint", + "slug": "sharepoint", + "description": "Sharepoint" + }, + { + "id": 288, + "name": "Sökning", + "slug": "sokning", + "description": "Sökning" + }, + { "id": 289, "name": "Moss", "slug": "moss", "description": "Moss" }, + { + "id": 290, + "name": "Office", + "slug": "office", + "description": "Office" + }, + { "id": 291, "name": "PDF", "slug": "pdf", "description": "PDF" }, + { + "id": 292, + "name": "Vista SP1", + "slug": "vista-sp1", + "description": "Vista SP1" + }, + { + "id": 293, + "name": "Remote Desktop", + "slug": "remote-desktop", + "description": "Remote Desktop" + }, + { + "id": 294, + "name": "Outlook 2007", + "slug": "outlook-2007", + "description": "Outlook 2007" + }, + { "id": 295, "name": "SSL", "slug": "ssl", "description": "SSL" }, + { + "id": 296, + "name": "Epost", + "slug": "epost", + "description": "Epost" + }, + { + "id": 297, + "name": "Hyper-V", + "slug": "hyper-v", + "description": "Hyper-V" + }, + { + "id": 298, + "name": "Virtualisering", + "slug": "virtualisering", + "description": "Virtualisering" + }, + { + "id": 299, + "name": "FireShot", + "slug": "fireshot", + "description": "FireShot" + }, + { + "id": 300, + "name": "Skärmdump", + "slug": "skarmdump", + "description": "Skärmdump" + }, + { + "id": 301, + "name": "Programtillägg", + "slug": "programtillagg", + "description": "Programtillägg" + }, + { + "id": 302, + "name": "Huawei", + "slug": "huawei", + "description": "Huawei" + }, + { + "id": 303, + "name": "Mobilt bredband", + "slug": "mobilt-bredband", + "description": "Mobilt bredband" + }, + { "id": 304, "name": "E220", "slug": "e220", "description": "E220" }, + { + "id": 305, + "name": "Antivirus", + "slug": "antivirus", + "description": "Antivirus" + }, + { "id": 306, "name": "AVG", "slug": "avg", "description": "AVG" }, + { + "id": 307, + "name": "AVG Free", + "slug": "avg-free", + "description": "AVG Free" + }, + { + "id": 308, + "name": "Spyware", + "slug": "spyware", + "description": "Spyware" + }, + { + "id": 309, + "name": "Virtual Server", + "slug": "virtual-server", + "description": "Virtual Server" + }, + { + "id": 310, + "name": "Batteritid", + "slug": "batteritid", + "description": "Batteritid" + }, + { + "id": 311, + "name": "Firmware", + "slug": "firmware", + "description": "Firmware" + }, + { + "id": 312, + "name": "SQL Server 2005", + "slug": "sql-server-2005", + "description": "SQL Server 2005" + }, + { + "id": 313, + "name": "Public folders", + "slug": "public-folders", + "description": "Public folders" + }, + { "id": 314, "name": "WGA", "slug": "wga", "description": "WGA" }, + { "id": 315, "name": "SP3", "slug": "sp3", "description": "SP3" }, + { "id": 316, "name": "RSG", "slug": "rsg", "description": "RSG" }, + { + "id": 317, + "name": "Backup", + "slug": "backup", + "description": "Backup" + }, + { + "id": 318, + "name": "Bootcamp", + "slug": "bootcamp", + "description": "Bootcamp" + }, + { + "id": 319, + "name": "Windows XP", + "slug": "windows-xp", + "description": "Windows XP" + }, + { + "id": 320, + "name": "Intel Mac", + "slug": "intel-mac", + "description": "Intel Mac" + }, + { + "id": 321, + "name": "CD-bränning", + "slug": "cd-branning", + "description": "CD-bränning" + }, + { + "id": 322, + "name": "Gratisprogram", + "slug": "gratisprogram", + "description": "Gratisprogram" + }, + { + "id": 323, + "name": "Windows Server", + "slug": "windows-server", + "description": "Windows Server" + }, + { + "id": 324, + "name": "Exhange", + "slug": "exhange", + "description": "Exhange" + }, + { + "id": 325, + "name": "Small Business Server", + "slug": "small-business-server", + "description": "Small Business Server" + }, + { + "id": 326, + "name": "Outlook Web Access", + "slug": "outlook-web-access", + "description": "Outlook Web Access" + }, + { + "id": 327, + "name": "Active Directory", + "slug": "active-directory", + "description": "Active Directory" + }, + { + "id": 328, + "name": "Email", + "slug": "email", + "description": "Email" + }, + { "id": 329, "name": "LDAP", "slug": "ldap", "description": "LDAP" }, + { + "id": 330, + "name": "Laptop", + "slug": "laptop", + "description": "Laptop" + }, + { + "id": 331, + "name": "Ljudnivå", + "slug": "ljudniva", + "description": "Ljudnivå" + }, + { + "id": 332, + "name": "Fläktar", + "slug": "flaktar", + "description": "Fläktar" + }, + { + "id": 333, + "name": "Speedswitch", + "slug": "speedswitch", + "description": "Speedswitch" + }, + { + "id": 334, + "name": "Windows 7", + "slug": "windows-7", + "description": "Windows 7" + }, + { + "id": 335, + "name": "Release Candidate", + "slug": "release-candidate", + "description": "Release Candidate" + }, + { + "id": 336, + "name": "Itunes", + "slug": "itunes", + "description": "Itunes" + }, + { + "id": 337, + "name": "iPhone 3.0", + "slug": "iphone-30", + "description": "iPhone 3.0" + }, + { + "id": 338, + "name": "Headset", + "slug": "headset", + "description": "Headset" + }, + { + "id": 339, + "name": "Underhåll", + "slug": "underhall", + "description": "Underhåll" + }, + { + "id": 340, + "name": "Uppgraderingar", + "slug": "uppgraderingar", + "description": "Uppgraderingar" + }, + { "id": 341, "name": "vpn", "slug": "vpn", "description": "vpn" }, + { "id": 342, "name": "pptp", "slug": "pptp", "description": "pptp" }, + { + "id": 343, + "name": "domäninloggning", + "slug": "domaninloggning", + "description": "domäninloggning" + }, + { "id": 344, "name": "rras", "slug": "rras", "description": "rras" }, + { + "id": 345, + "name": "Windows Vista", + "slug": "windows-vista", + "description": "Windows Vista" + }, + { + "id": 346, + "name": "android", + "slug": "android", + "description": "android" + }, + { + "id": 347, + "name": "HTC Hero", + "slug": "htc-hero", + "description": "HTC Hero" + }, + { + "id": 348, + "name": "tethering", + "slug": "tethering", + "description": "tethering" + }, + { "id": 349, "name": "dhcp", "slug": "dhcp", "description": "dhcp" }, + { + "id": 350, + "name": "Applikationer", + "slug": "applikationer", + "description": "Applikationer" + }, + { + "id": 351, + "name": "Installation", + "slug": "installation", + "description": "Installation" + }, + { + "id": 352, + "name": "MacOSX", + "slug": "macosx", + "description": "MacOSX" + }, + { "id": 353, "name": "GPO", "slug": "gpo", "description": "GPO" }, + { + "id": 354, + "name": "Windows Update", + "slug": "windows-update", + "description": "Windows Update" + }, + { + "id": 355, + "name": "Papperskorgen", + "slug": "papperskorgen", + "description": "Papperskorgen" + }, + { + "id": 356, + "name": "Tips och tricks", + "slug": "tips-och-tricks", + "description": "Tips och tricks" + }, + { "id": 357, "name": "HP", "slug": "hp", "description": "HP" }, + { + "id": 358, + "name": "Skrivare", + "slug": "skrivare", + "description": "Skrivare" + }, + { + "id": 359, + "name": "Drivrutiner", + "slug": "drivrutiner", + "description": "Drivrutiner" + }, + { + "id": 360, + "name": "MD3000i", + "slug": "md3000i", + "description": "MD3000i" + }, + { "id": 361, "name": "SAN", "slug": "san", "description": "SAN" }, + { "id": 362, "name": "RDP", "slug": "rdp", "description": "RDP" }, + { "id": 363, "name": "dns", "slug": "dns", "description": "dns" }, + { + "id": 364, + "name": " windows 7", + "slug": "-windows-7", + "description": " windows 7" + }, + { + "id": 365, + "name": " telia", + "slug": "-telia", + "description": " telia" + }, + { + "id": 366, + "name": " google", + "slug": "-google", + "description": " google" + }, + { + "id": 367, + "name": " google dns", + "slug": "-google-dns", + "description": " google dns" + }, + { + "id": 368, + "name": "bredbandsleverantör", + "slug": "bredbandsleverantor", + "description": "bredbandsleverantör" + }, + { + "id": 369, + "name": "Telia", + "slug": "telia", + "description": "Telia" + }, + { + "id": 370, + "name": "Google DNS", + "slug": "google-dns", + "description": "Google DNS" + }, + { + "id": 371, + "name": "Windows SBS 2008 Console", + "slug": "windows-sbs-2008-console", + "description": "Windows SBS 2008 Console" + }, + { + "id": 372, + "name": "Small Business Server 2008", + "slug": "small-business-server-2008", + "description": "Small Business Server 2008" + }, + { + "id": 373, + "name": "MacBook Air", + "slug": "macbook-air", + "description": "MacBook Air" + }, + { + "id": 374, + "name": "bilduppladdning", + "slug": "bilduppladdning", + "description": "bilduppladdning" + }, + { + "id": 375, + "name": "OCZ SSD", + "slug": "ocz-ssd", + "description": "OCZ SSD" + }, + { "id": 376, "name": "SSD", "slug": "ssd", "description": "SSD" }, + { + "id": 377, + "name": "Backblaze", + "slug": "backblaze", + "description": "Backblaze" + }, + { + "id": 378, + "name": "Microsoft Forefront Threat Management Gateway", + "slug": "microsoft-forefront-threat-management-gateway", + "description": "Microsoft Forefront Threat Management Gateway" + }, + { + "id": 379, + "name": "kompression", + "slug": "kompression", + "description": "kompression" + }, + { + "id": 380, + "name": "Onlinebackup", + "slug": "onlinebackup", + "description": "Onlinebackup" + }, + { "id": 381, "name": "RSA", "slug": "rsa", "description": "RSA" }, + { + "id": 382, + "name": "SecurID", + "slug": "securid", + "description": "SecurID" + }, + { + "id": 383, + "name": "intrång", + "slug": "intrang", + "description": "intrång" + }, + { + "id": 384, + "name": "Anonymous Authentication", + "slug": "anonymous-authentication", + "description": "Anonymous Authentication" + }, + { + "id": 385, + "name": "Application Pool", + "slug": "application-pool", + "description": "Application Pool" + }, + { + "id": 386, + "name": "Identity", + "slug": "identity", + "description": "Identity" + }, + { "id": 387, "name": "RAW", "slug": "raw", "description": "RAW" }, + { + "id": 388, + "name": "Camera Codec Pack", + "slug": "camera-codec-pack", + "description": "Camera Codec Pack" + }, + { + "id": 389, + "name": "Adobe Photoshop Lightroom", + "slug": "adobe-photoshop-lightroom", + "description": "Adobe Photoshop Lightroom" + }, + { "id": 390, "name": "NK2", "slug": "nk2", "description": "NK2" }, + { + "id": 391, + "name": "snabbadresser", + "slug": "snabbadresser", + "description": "snabbadresser" + }, + { + "id": 392, + "name": "Applie Wireless Keyboard", + "slug": "applie-wireless-keyboard", + "description": "Applie Wireless Keyboard" + }, + { "id": 393, "name": " ", "slug": "-", "description": " " }, + { + "id": 394, + "name": "Teracopy", + "slug": "teracopy", + "description": "Teracopy" + }, + { + "id": 395, + "name": "DNS suffix", + "slug": "dns-suffix", + "description": "DNS suffix" + }, + { + "id": 396, + "name": "Visual Studio 2010", + "slug": "visual-studio-2010", + "description": "Visual Studio 2010" + }, + { + "id": 397, + "name": "Smiley", + "slug": "smiley", + "description": "Smiley" + }, + { "id": 398, "name": "J", "slug": "j", "description": "J" }, + { + "id": 399, + "name": "hemknapp", + "slug": "hemknapp", + "description": "hemknapp" + }, + { + "id": 400, + "name": "trasig", + "slug": "trasig", + "description": "trasig" + }, + { "id": 401, "name": "Larv", "slug": "larv", "description": "Larv" }, + { + "id": 402, + "name": "Rock Band", + "slug": "rock-band", + "description": "Rock Band" + }, + { + "id": 403, + "name": "Guitar Hero", + "slug": "guitar-hero", + "description": "Guitar Hero" + }, + { + "id": 404, + "name": "Partyspel", + "slug": "partyspel", + "description": "Partyspel" + }, + { + "id": 405, + "name": "Dataspel", + "slug": "dataspel", + "description": "Dataspel" + }, + { "id": 406, "name": "XNA", "slug": "xna", "description": "XNA" }, + { + "id": 407, + "name": "XNA GameStudio", + "slug": "xna-gamestudio", + "description": "XNA GameStudio" + }, + { + "id": 408, + "name": "Spelutveckling", + "slug": "spelutveckling", + "description": "Spelutveckling" + }, + { + "id": 409, + "name": "Visual Studio 2005", + "slug": "visual-studio-2005", + "description": "Visual Studio 2005" + }, + { + "id": 410, + "name": "Crysis", + "slug": "crysis", + "description": "Crysis" + }, + { + "id": 411, + "name": "CryENGINE2", + "slug": "cryengine2", + "description": "CryENGINE2" + }, + { "id": 412, "name": "Spel", "slug": "spel", "description": "Spel" }, + { + "id": 413, + "name": "Speltips", + "slug": "speltips", + "description": "Speltips" + }, + { + "id": 414, + "name": "Half-life", + "slug": "half-life", + "description": "Half-life" + }, + { + "id": 415, + "name": "Portal", + "slug": "portal", + "description": "Portal" + }, + { "id": 416, "name": "Cube", "slug": "cube", "description": "Cube" }, + { + "id": 417, + "name": "Datorer", + "slug": "datorer", + "description": "Datorer" + }, + { + "id": 418, + "name": "Prestandatest", + "slug": "prestandatest", + "description": "Prestandatest" + }, + { + "id": 419, + "name": "3DMark", + "slug": "3dmark", + "description": "3DMark" + }, + { + "id": 420, + "name": "Världskarta", + "slug": "varldskarta", + "description": "Världskarta" + }, + { + "id": 421, + "name": "DisplayFusion", + "slug": "displayfusion", + "description": "DisplayFusion" + }, + { + "id": 422, + "name": "Dual Screen", + "slug": "dual-screen", + "description": "Dual Screen" + }, + { + "id": 423, + "name": "Felmeddelande", + "slug": "felmeddelande", + "description": "Felmeddelande" + }, + { + "id": 424, + "name": "Guitar Rising", + "slug": "guitar-rising", + "description": "Guitar Rising" + }, + { + "id": 425, + "name": "Elgitarr", + "slug": "elgitarr", + "description": "Elgitarr" + }, + { "id": 426, "name": "Divx", "slug": "divx", "description": "Divx" }, + { + "id": 427, + "name": "Mobil", + "slug": "mobil", + "description": "Mobil" + }, + { "id": 428, "name": "Film", "slug": "film", "description": "Film" }, + { + "id": 429, + "name": "CorePlayer", + "slug": "coreplayer", + "description": "CorePlayer" + }, + { + "id": 430, + "name": "Streaming", + "slug": "streaming", + "description": "Streaming" + }, + { + "id": 431, + "name": "Battlefield Heroes", + "slug": "battlefield-heroes", + "description": "Battlefield Heroes" + }, + { "id": 432, "name": "DICE", "slug": "dice", "description": "DICE" }, + { + "id": 433, + "name": "Datortillbehör", + "slug": "datortillbehor", + "description": "Datortillbehör" + }, + { + "id": 434, + "name": "Motion Pro II", + "slug": "motion-pro-ii", + "description": "Motion Pro II" + }, + { + "id": 435, + "name": "CXC Simulations", + "slug": "cxc-simulations", + "description": "CXC Simulations" + }, + { + "id": 436, + "name": "Klyscherizer", + "slug": "klyscherizer", + "description": "Klyscherizer" + }, + { + "id": 437, + "name": "Webbtjänster", + "slug": "webbtjanster", + "description": "Webbtjänster" + }, + { + "id": 438, + "name": "PocketGuitar", + "slug": "pocketguitar", + "description": "PocketGuitar" + }, + { + "id": 439, + "name": "Musik", + "slug": "musik", + "description": "Musik" + }, + { + "id": 440, + "name": "Gmail", + "slug": "gmail", + "description": "Gmail" + }, + { + "id": 441, + "name": "Fotografering", + "slug": "fotografering", + "description": "Fotografering" + }, + { + "id": 442, + "name": "Tilt-shift", + "slug": "tilt-shift", + "description": "Tilt-shift" + }, + { + "id": 443, + "name": "Video", + "slug": "video", + "description": "Video" + }, + { + "id": 444, + "name": "YouTube", + "slug": "youtube", + "description": "YouTube" + }, + { + "id": 445, + "name": "Rick Astley", + "slug": "rick-astley", + "description": "Rick Astley" + }, + { "id": 446, "name": "RSS", "slug": "rss", "description": "RSS" }, + { + "id": 447, + "name": "Konst", + "slug": "konst", + "description": "Konst" + }, + { + "id": 448, + "name": "Tag cloud", + "slug": "tag-cloud", + "description": "Tag cloud" + }, + { + "id": 449, + "name": "Chronicles of Riddick", + "slug": "chronicles-of-riddick", + "description": "Chronicles of Riddick" + }, + { + "id": 450, + "name": "Starbreeze", + "slug": "starbreeze", + "description": "Starbreeze" + }, + { + "id": 451, + "name": "Mediecenter", + "slug": "mediecenter", + "description": "Mediecenter" + }, + { "id": 452, "name": "PLEX", "slug": "plex", "description": "PLEX" }, + { + "id": 453, + "name": "Hemmabio", + "slug": "hemmabio", + "description": "Hemmabio" + }, + { "id": 454, "name": "HD", "slug": "hd", "description": "HD" }, + { + "id": 455, + "name": "Spelrecensioner", + "slug": "spelrecensioner", + "description": "Spelrecensioner" + }, + { + "id": 456, + "name": "Gamepad", + "slug": "gamepad", + "description": "Gamepad" + }, + { + "id": 457, + "name": "Monkey Island", + "slug": "monkey-island", + "description": "Monkey Island" + }, + { + "id": 458, + "name": "äventyrsspel", + "slug": "aventyrsspel", + "description": "äventyrsspel" + }, + { "id": 459, "name": "HDMI", "slug": "hdmi", "description": "HDMI" }, + { + "id": 460, + "name": "Kablar", + "slug": "kablar", + "description": "Kablar" + }, + { "id": 461, "name": "XBMC", "slug": "xbmc", "description": "XBMC" }, + { "id": 462, "name": "TV", "slug": "tv", "description": "TV" }, + { + "id": 463, + "name": "Snow Leopard", + "slug": "snow-leopard", + "description": "Snow Leopard" + }, + { + "id": 464, + "name": "App Store", + "slug": "app-store", + "description": "App Store" + }, + { + "id": 465, + "name": "machinaruim", + "slug": "machinaruim", + "description": "machinaruim" + }, + { + "id": 466, + "name": "Racing", + "slug": "racing", + "description": "Racing" + }, + { "id": 467, "name": "PRS", "slug": "prs", "description": "PRS" }, + { + "id": 468, + "name": "Blogga", + "slug": "blogga", + "description": "Blogga" + }, + { + "id": 469, + "name": "skriva", + "slug": "skriva", + "description": "skriva" + }, + { + "id": 470, + "name": "formgivning", + "slug": "formgivning", + "description": "formgivning" + }, + { + "id": 471, + "name": "Fanboys", + "slug": "fanboys", + "description": "Fanboys" + }, + { + "id": 472, + "name": "Gitarr", + "slug": "gitarr", + "description": "Gitarr" + }, + { + "id": 473, + "name": "Dokumentation", + "slug": "dokumentation", + "description": "Dokumentation" + }, + { + "id": 474, + "name": "Extjs", + "slug": "extjs", + "description": "Extjs" + }, + { + "id": 475, + "name": " Humor", + "slug": "-humor", + "description": " Humor" + }, + { + "id": 476, + "name": " Fotboll", + "slug": "-fotboll", + "description": " Fotboll" + }, + { + "id": 477, + "name": "Real Racing", + "slug": "real-racing", + "description": "Real Racing" + }, + { "id": 478, "name": "iPad", "slug": "ipad", "description": "iPad" }, + { + "id": 479, + "name": "GameCenter", + "slug": "gamecenter", + "description": "GameCenter" + }, + { + "id": 480, + "name": "Spotify", + "slug": "spotify", + "description": "Spotify" + }, + { "id": 481, "name": "ljud", "slug": "ljud", "description": "ljud" }, + { + "id": 482, + "name": "equalify", + "slug": "equalify", + "description": "equalify" + }, + { + "id": 483, + "name": "Mac OS X Lion", + "slug": "mac-os-x-lion", + "description": "Mac OS X Lion" + }, + { + "id": 484, + "name": "Windows 8", + "slug": "windows-8", + "description": "Windows 8" + }, + { + "id": 485, + "name": "natural scroll", + "slug": "natural-scroll", + "description": "natural scroll" + }, + { + "id": 486, + "name": "AirPlay", + "slug": "airplay", + "description": "AirPlay" + }, + { "id": 487, "name": "Mac", "slug": "mac", "description": "Mac" }, + { + "id": 488, + "name": "Nyheter", + "slug": "nyheter", + "description": "Nyheter" + }, + { + "id": 489, + "name": "Communities", + "slug": "communities", + "description": "Communities" + }, + { + "id": 490, + "name": "OpenSocial", + "slug": "opensocial", + "description": "OpenSocial" + }, + { + "id": 491, + "name": "MySpace", + "slug": "myspace", + "description": "MySpace" + }, + { + "id": 492, + "name": "Omröstning", + "slug": "omrostning", + "description": "Omröstning" + }, + { + "id": 493, + "name": "Cobian", + "slug": "cobian", + "description": "Cobian" + }, + { + "id": 494, + "name": "Backup Exec", + "slug": "backup-exec", + "description": "Backup Exec" + }, + { + "id": 495, + "name": "Nedladdning", + "slug": "nedladdning", + "description": "Nedladdning" + }, + { "id": 496, "name": "DRM", "slug": "drm", "description": "DRM" }, + { + "id": 497, + "name": "Steam", + "slug": "steam", + "description": "Steam" + }, + { + "id": 498, + "name": "Laglig nedladdning", + "slug": "laglig-nedladdning", + "description": "Laglig nedladdning" + }, + { + "id": 499, + "name": "Snipping Tool", + "slug": "snipping-tool", + "description": "Snipping Tool" + }, + { + "id": 500, + "name": "Amazon", + "slug": "amazon", + "description": "Amazon" + }, + { + "id": 501, + "name": "E-böcker", + "slug": "e-bocker", + "description": "E-böcker" + }, + { + "id": 502, + "name": "Kindle", + "slug": "kindle", + "description": "Kindle" + }, + { + "id": 503, + "name": "E-papper", + "slug": "e-papper", + "description": "E-papper" + }, + { + "id": 504, + "name": "Mobiltelefoner", + "slug": "mobiltelefoner", + "description": "Mobiltelefoner" + }, + { + "id": 505, + "name": "Teknikfrågan", + "slug": "teknikfragan", + "description": "Teknikfrågan" + }, + { "id": 506, "name": "Spam", "slug": "spam", "description": "Spam" }, + { + "id": 507, + "name": "E-post", + "slug": "e-post", + "description": "E-post" + }, + { + "id": 508, + "name": "Spamfilter", + "slug": "spamfilter", + "description": "Spamfilter" + }, + { + "id": 509, + "name": "Operativsystem", + "slug": "operativsystem", + "description": "Operativsystem" + }, + { + "id": 510, + "name": "Linux", + "slug": "linux", + "description": "Linux" + }, + { + "id": 511, + "name": "Ubuntu", + "slug": "ubuntu", + "description": "Ubuntu" + }, + { + "id": 512, + "name": "Leopard", + "slug": "leopard", + "description": "Leopard" + }, + { + "id": 513, + "name": "Julklappar", + "slug": "julklappar", + "description": "Julklappar" + }, + { "id": 514, "name": "OLPC", "slug": "olpc", "description": "OLPC" }, + { + "id": 515, + "name": "AMPlug", + "slug": "amplug", + "description": "AMPlug" + }, + { "id": 516, "name": "iPod", "slug": "ipod", "description": "iPod" }, + { + "id": 517, + "name": "iPod Toch", + "slug": "ipod-toch", + "description": "iPod Toch" + }, + { + "id": 518, + "name": "Diino", + "slug": "diino", + "description": "Diino" + }, + { + "id": 519, + "name": "Archos", + "slug": "archos", + "description": "Archos" + }, + { + "id": 520, + "name": "Mx Air", + "slug": "mx-air", + "description": "Mx Air" + }, + { + "id": 521, + "name": "Webbstandarder", + "slug": "webbstandarder", + "description": "Webbstandarder" + }, + { + "id": 522, + "name": "Acid Test", + "slug": "acid-test", + "description": "Acid Test" + }, + { + "id": 523, + "name": "Solid State Disk", + "slug": "solid-state-disk", + "description": "Solid State Disk" + }, + { "id": 524, "name": "SLC", "slug": "slc", "description": "SLC" }, + { "id": 525, "name": "MLC", "slug": "mlc", "description": "MLC" }, + { + "id": 526, + "name": "Squeezebox", + "slug": "squeezebox", + "description": "Squeezebox" + }, + { + "id": 527, + "name": "Squeezebox Duet", + "slug": "squeezebox-duet", + "description": "Squeezebox Duet" + }, + { + "id": 528, + "name": "Logitech", + "slug": "logitech", + "description": "Logitech" + }, + { + "id": 529, + "name": "Slim Devices", + "slug": "slim-devices", + "description": "Slim Devices" + }, + { "id": 530, "name": "MP3", "slug": "mp3", "description": "MP3" }, + { + "id": 531, + "name": "MP3-spelare", + "slug": "mp3-spelare", + "description": "MP3-spelare" + }, + { + "id": 532, + "name": "HD DVD", + "slug": "hd-dvd", + "description": "HD DVD" + }, + { + "id": 533, + "name": "Blu-ray", + "slug": "blu-ray", + "description": "Blu-ray" + }, + { + "id": 534, + "name": "Format", + "slug": "format", + "description": "Format" + }, + { + "id": 535, + "name": "Formatkrig", + "slug": "formatkrig", + "description": "Formatkrig" + }, + { + "id": 536, + "name": "Toshiba", + "slug": "toshiba", + "description": "Toshiba" + }, + { "id": 537, "name": "SDK", "slug": "sdk", "description": "SDK" }, + { + "id": 538, + "name": "Mobile OSX", + "slug": "mobile-osx", + "description": "Mobile OSX" + }, + { + "id": 539, + "name": "tekniken.nu", + "slug": "teknikennu", + "description": "tekniken.nu" + }, + { + "id": 540, + "name": "Authentication Manager", + "slug": "authentication-manager", + "description": "Authentication Manager" + }, + { "id": 541, "name": "SMS", "slug": "sms", "description": "SMS" }, + { + "id": 542, + "name": "Mobilitet", + "slug": "mobilitet", + "description": "Mobilitet" + }, + { + "id": 543, + "name": "Symantec", + "slug": "symantec", + "description": "Symantec" + }, + { + "id": 544, + "name": "Linksys", + "slug": "linksys", + "description": "Linksys" + }, + { + "id": 545, + "name": "WRT54GL", + "slug": "wrt54gl", + "description": "WRT54GL" + }, + { + "id": 546, + "name": "Cisco", + "slug": "cisco", + "description": "Cisco" + }, + { + "id": 547, + "name": "Router", + "slug": "router", + "description": "Router" + }, + { + "id": 548, + "name": "Open Source", + "slug": "open-source", + "description": "Open Source" + }, + { + "id": 549, + "name": "DD-WRT", + "slug": "dd-wrt", + "description": "DD-WRT" + }, + { + "id": 550, + "name": "Nätverk", + "slug": "natverk", + "description": "Nätverk" + }, + { + "id": 551, + "name": "Översättning", + "slug": "oversattning", + "description": "Översättning" + }, + { + "id": 552, + "name": "Google Translate", + "slug": "google-translate", + "description": "Google Translate" + }, + { + "id": 553, + "name": "Maskinöversättning", + "slug": "maskinoversattning", + "description": "Maskinöversättning" + }, + { + "id": 554, + "name": "Svenska", + "slug": "svenska", + "description": "Svenska" + }, + { "id": 555, "name": "SP1", "slug": "sp1", "description": "SP1" }, + { + "id": 556, + "name": "Google Earth", + "slug": "google-earth", + "description": "Google Earth" + }, + { + "id": 557, + "name": "Wikipedia", + "slug": "wikipedia", + "description": "Wikipedia" + }, + { + "id": 558, + "name": "iPhone 3G", + "slug": "iphone-3g", + "description": "iPhone 3G" + }, + { "id": 559, "name": "3D", "slug": "3d", "description": "3D" }, + { + "id": 560, + "name": "Safari", + "slug": "safari", + "description": "Safari" + }, + { "id": 561, "name": "RTM", "slug": "rtm", "description": "RTM" }, + { + "id": 562, + "name": "HTC Touch Diamond", + "slug": "htc-touch-diamond", + "description": "HTC Touch Diamond" + }, + { + "id": 563, + "name": "Windows Mobile", + "slug": "windows-mobile", + "description": "Windows Mobile" + }, + { + "id": 564, + "name": "ringsignal", + "slug": "ringsignal", + "description": "ringsignal" + }, + { + "id": 565, + "name": "Upphovsrätt", + "slug": "upphovsratt", + "description": "Upphovsrätt" + }, + { "id": 566, "name": "EULA", "slug": "eula", "description": "EULA" }, + { + "id": 567, + "name": "Nikon", + "slug": "nikon", + "description": "Nikon" + }, + { + "id": 568, + "name": "HTC Dream", + "slug": "htc-dream", + "description": "HTC Dream" + }, + { + "id": 569, + "name": "Netbook", + "slug": "netbook", + "description": "Netbook" + }, + { "id": 570, "name": "UMPC", "slug": "umpc", "description": "UMPC" }, + { + "id": 571, + "name": "Ultraportabel", + "slug": "ultraportabel", + "description": "Ultraportabel" + }, + { + "id": 572, + "name": "Asus Eee PC", + "slug": "asus-eee-pc", + "description": "Asus Eee PC" + }, + { + "id": 573, + "name": "Premiere", + "slug": "premiere", + "description": "Premiere" + }, + { "id": 574, "name": "CS4", "slug": "cs4", "description": "CS4" }, + { + "id": 575, + "name": "Grafikkort", + "slug": "grafikkort", + "description": "Grafikkort" + }, + { "id": 576, "name": "GPU", "slug": "gpu", "description": "GPU" }, + { + "id": 577, + "name": "Wal-Mart", + "slug": "wal-mart", + "description": "Wal-Mart" + }, + { + "id": 578, + "name": "Yahoo", + "slug": "yahoo", + "description": "Yahoo" + }, + { "id": 579, "name": "Word", "slug": "word", "description": "Word" }, + { + "id": 580, + "name": "WriteRoom", + "slug": "writeroom", + "description": "WriteRoom" + }, + { + "id": 581, + "name": "VB.NET", + "slug": "vbnet", + "description": "VB.NET" + }, + { "id": 582, "name": "XMBC", "slug": "xmbc", "description": "XMBC" }, + { + "id": 583, + "name": "Underhållning", + "slug": "underhallning", + "description": "Underhållning" + }, + { "id": 584, "name": "XBox", "slug": "xbox", "description": "XBox" }, + { + "id": 585, + "name": "Mediacenter", + "slug": "mediacenter", + "description": "Mediacenter" + }, + { "id": 586, "name": "Java", "slug": "java", "description": "Java" }, + { "id": 587, "name": "Blog", "slug": "blog", "description": "Blog" }, + { + "id": 588, + "name": "Jobbannonser", + "slug": "jobbannonser", + "description": "Jobbannonser" + }, + { + "id": 589, + "name": "Julklappstips", + "slug": "julklappstips", + "description": "Julklappstips" + }, + { + "id": 590, + "name": "Airport Express", + "slug": "airport-express", + "description": "Airport Express" + }, + { + "id": 591, + "name": "iPod Touch", + "slug": "ipod-touch", + "description": "iPod Touch" + }, + { + "id": 592, + "name": "Window 7", + "slug": "window-7", + "description": "Window 7" + }, + { "id": 593, "name": "ATI", "slug": "ati", "description": "ATI" }, + { + "id": 594, + "name": "Aftonbladet", + "slug": "aftonbladet", + "description": "Aftonbladet" + }, + { + "id": 595, + "name": "ABSOLUT VODKA", + "slug": "absolut-vodka", + "description": "ABSOLUT VODKA" + }, + { + "id": 596, + "name": "EPiServer Awards", + "slug": "episerver-awards", + "description": "EPiServer Awards" + }, + { + "id": 597, + "name": "iPhone OS 3.0", + "slug": "iphone-os-30", + "description": "iPhone OS 3.0" + }, + { + "id": 598, + "name": "Google Reader", + "slug": "google-reader", + "description": "Google Reader" + }, + { + "id": 599, + "name": "Google Chrome", + "slug": "google-chrome", + "description": "Google Chrome" + }, + { + "id": 600, + "name": "Webbgränssnitt", + "slug": "webbgranssnitt", + "description": "Webbgränssnitt" + }, + { + "id": 601, + "name": "Slideshow", + "slug": "slideshow", + "description": "Slideshow" + }, + { "id": 602, "name": "WWDC", "slug": "wwdc", "description": "WWDC" }, + { + "id": 603, + "name": "Google Docs", + "slug": "google-docs", + "description": "Google Docs" + }, + { + "id": 604, + "name": "Webbenkäter", + "slug": "webbenkater", + "description": "Webbenkäter" + }, + { "id": 605, "name": "OSX", "slug": "osx", "description": "OSX" }, + { "id": 606, "name": "Mail", "slug": "mail", "description": "Mail" }, + { "id": 607, "name": "iCal", "slug": "ical", "description": "iCal" }, + { + "id": 608, + "name": "Social Media", + "slug": "social-media", + "description": "Social Media" + }, + { + "id": 609, + "name": "802.11n", + "slug": "80211n", + "description": "802.11n" + }, + { + "id": 610, + "name": "Datasäkerhet", + "slug": "datasakerhet", + "description": "Datasäkerhet" + }, + { + "id": 611, + "name": "Mind mapping", + "slug": "mind-mapping", + "description": "Mind mapping" + }, + { + "id": 612, + "name": "MindMeister", + "slug": "mindmeister", + "description": "MindMeister" + }, + { + "id": 613, + "name": "MindManager", + "slug": "mindmanager", + "description": "MindManager" + }, + { + "id": 614, + "name": "iPhone 3GS", + "slug": "iphone-3gs", + "description": "iPhone 3GS" + }, + { + "id": 615, + "name": "Smartphone", + "slug": "smartphone", + "description": "Smartphone" + }, + { + "id": 616, + "name": "Typsnitt", + "slug": "typsnitt", + "description": "Typsnitt" + }, + { "id": 617, "name": "webb", "slug": "webb", "description": "webb" }, + { + "id": 618, + "name": "handstil", + "slug": "handstil", + "description": "handstil" + }, + { + "id": 619, + "name": "fontcapture", + "slug": "fontcapture", + "description": "fontcapture" + }, + { + "id": 620, + "name": "Diagram", + "slug": "diagram", + "description": "Diagram" + }, + { + "id": 621, + "name": "nvidia", + "slug": "nvidia", + "description": "nvidia" + }, + { "id": 622, "name": "ion", "slug": "ion", "description": "ion" }, + { + "id": 623, + "name": "ion 330", + "slug": "ion-330", + "description": "ion 330" + }, + { + "id": 624, + "name": "asrock", + "slug": "asrock", + "description": "asrock" + }, + { + "id": 625, + "name": "Realtidswebben", + "slug": "realtidswebben", + "description": "Realtidswebben" + }, + { + "id": 626, + "name": "Realtime web", + "slug": "realtime-web", + "description": "Realtime web" + }, + { + "id": 627, + "name": "Web 3.0", + "slug": "web-30", + "description": "Web 3.0" + }, + { "id": 628, "name": "Digg", "slug": "digg", "description": "Digg" }, + { + "id": 629, + "name": "Google Wave", + "slug": "google-wave", + "description": "Google Wave" + }, + { "id": 630, "name": "X3", "slug": "x3", "description": "X3" }, + { + "id": 631, + "name": "Terratec", + "slug": "terratec", + "description": "Terratec" + }, + { + "id": 632, + "name": "Media Center", + "slug": "media-center", + "description": "Media Center" + }, + { + "id": 633, + "name": "Marketplace", + "slug": "marketplace", + "description": "Marketplace" + }, + { + "id": 634, + "name": "Fjärrstyrning", + "slug": "fjarrstyrning", + "description": "Fjärrstyrning" + }, + { + "id": 635, + "name": "Hårddiskar", + "slug": "harddiskar", + "description": "Hårddiskar" + }, + { + "id": 636, + "name": "Solid State", + "slug": "solid-state", + "description": "Solid State" + }, + { + "id": 637, + "name": "Multitouch", + "slug": "multitouch", + "description": "Multitouch" + }, + { + "id": 638, + "name": "Active Sync", + "slug": "active-sync", + "description": "Active Sync" + }, + { + "id": 639, + "name": "Eclair", + "slug": "eclair", + "description": "Eclair" + }, + { + "id": 640, + "name": "E-legitimation", + "slug": "e-legitimation", + "description": "E-legitimation" + }, + { + "id": 641, + "name": "Bankid", + "slug": "bankid", + "description": "Bankid" + }, + { + "id": 642, + "name": "Single Sign-on", + "slug": "single-sign-on", + "description": "Single Sign-on" + }, + { + "id": 643, + "name": "Skatteverket", + "slug": "skatteverket", + "description": "Skatteverket" + }, + { + "id": 644, + "name": "Foxit", + "slug": "foxit", + "description": "Foxit" + }, + { + "id": 645, + "name": "Pdf995", + "slug": "pdf995", + "description": "Pdf995" + }, + { + "id": 646, + "name": "Voddler", + "slug": "voddler", + "description": "Voddler" + }, + { + "id": 647, + "name": "Google Maps Navigation", + "slug": "google-maps-navigation", + "description": "Google Maps Navigation" + }, + { "id": 648, "name": "GPS", "slug": "gps", "description": "GPS" }, + { + "id": 649, + "name": "Navigation", + "slug": "navigation", + "description": "Navigation" + }, + { "id": 650, "name": "HTPC", "slug": "htpc", "description": "HTPC" }, + { + "id": 651, + "name": "mind maps", + "slug": "mind-maps", + "description": "mind maps" + }, + { + "id": 652, + "name": " mindmeister", + "slug": "-mindmeister", + "description": " mindmeister" + }, + { + "id": 653, + "name": " brainstorming", + "slug": "-brainstorming", + "description": " brainstorming" + }, + { + "id": 654, + "name": " email", + "slug": "-email", + "description": " email" + }, + { + "id": 655, + "name": "Internet", + "slug": "internet", + "description": "Internet" + }, + { + "id": 656, + "name": "Statistik", + "slug": "statistik", + "description": "Statistik" + }, + { + "id": 657, + "name": "font-face", + "slug": "font-face", + "description": "font-face" + }, + { + "id": 658, + "name": " fonts", + "slug": "-fonts", + "description": " fonts" + }, + { + "id": 659, + "name": " typsnitt", + "slug": "-typsnitt", + "description": " typsnitt" + }, + { + "id": 660, + "name": "Windows Mobil", + "slug": "windows-mobil", + "description": "Windows Mobil" + }, + { + "id": 661, + "name": " iPhone", + "slug": "-iphone", + "description": " iPhone" + }, + { + "id": 662, + "name": " Mobiltelefoner", + "slug": "-mobiltelefoner", + "description": " Mobiltelefoner" + }, + { + "id": 663, + "name": "Konceptarbete", + "slug": "konceptarbete", + "description": "Konceptarbete" + }, + { "id": 664, "name": "DXVA", "slug": "dxva", "description": "DXVA" }, + { "id": 665, "name": "NAS", "slug": "nas", "description": "NAS" }, + { + "id": 666, + "name": "Hårdvara", + "slug": "hardvara", + "description": "Hårdvara" + }, + { + "id": 667, + "name": "Betalning", + "slug": "betalning", + "description": "Betalning" + }, + { + "id": 668, + "name": "Skärmar", + "slug": "skarmar", + "description": "Skärmar" + }, + { "id": 669, "name": "IE", "slug": "ie", "description": "IE" }, + { + "id": 670, + "name": "Opera", + "slug": "opera", + "description": "Opera" + }, + { + "id": 671, + "name": "Windows Phone", + "slug": "windows-phone", + "description": "Windows Phone" + }, + { + "id": 672, + "name": " iOS4", + "slug": "-ios4", + "description": " iOS4" + }, + { + "id": 673, + "name": "Windows Phone 7", + "slug": "windows-phone-7", + "description": "Windows Phone 7" + }, + { + "id": 674, + "name": "Lightbox", + "slug": "lightbox", + "description": "Lightbox" + }, + { + "id": 675, + "name": "iPhone4", + "slug": "iphone4", + "description": "iPhone4" + }, + { + "id": 676, + "name": "Community", + "slug": "community", + "description": "Community" + }, + { + "id": 677, + "name": "Sociala Media", + "slug": "sociala-media", + "description": "Sociala Media" + }, + { + "id": 678, + "name": "Diskussionsforum", + "slug": "diskussionsforum", + "description": "Diskussionsforum" + }, + { + "id": 679, + "name": "Samsung Omnia 7", + "slug": "samsung-omnia-7", + "description": "Samsung Omnia 7" + }, + { + "id": 680, + "name": "recension", + "slug": "recension", + "description": "recension" + }, + { "id": 681, "name": "MMS", "slug": "mms", "description": "MMS" }, + { "id": 682, "name": "Tre", "slug": "tre", "description": "Tre" }, + { + "id": 683, + "name": "e-handel", + "slug": "e-handel", + "description": "e-handel" + }, + { + "id": 684, + "name": "matbutik", + "slug": "matbutik", + "description": "matbutik" + }, + { + "id": 685, + "name": "Internet World", + "slug": "internet-world", + "description": "Internet World" + }, + { + "id": 686, + "name": "Symboler", + "slug": "symboler", + "description": "Symboler" + }, + { + "id": 687, + "name": "The Noun Project", + "slug": "the-noun-project", + "description": "The Noun Project" + }, + { + "id": 688, + "name": "UQuery", + "slug": "uquery", + "description": "UQuery" + }, + { + "id": 689, + "name": "appar", + "slug": "appar", + "description": "appar" + }, + { + "id": 690, + "name": "Marketplace Search", + "slug": "marketplace-search", + "description": "Marketplace Search" + }, + { + "id": 691, + "name": "Ringa", + "slug": "ringa", + "description": "Ringa" + }, + { + "id": 692, + "name": "Fring", + "slug": "fring", + "description": "Fring" + }, + { + "id": 693, + "name": "Skype", + "slug": "skype", + "description": "Skype" + }, + { "id": 694, "name": "VOIP", "slug": "voip", "description": "VOIP" }, + { + "id": 695, + "name": "Resa utomlands", + "slug": "resa-utomlands", + "description": "Resa utomlands" + }, + { + "id": 696, + "name": "WordPress", + "slug": "wordpress", + "description": "WordPress" + }, + { + "id": 697, + "name": "killer apps", + "slug": "killer-apps", + "description": "killer apps" + }, + { + "id": 698, + "name": "PDF-skrivare", + "slug": "pdf-skrivare", + "description": "PDF-skrivare" + }, + { + "id": 699, + "name": "äldre webbläsare", + "slug": "aldre-webblasare", + "description": "äldre webbläsare" + }, + { + "id": 700, + "name": "Mango", + "slug": "mango", + "description": "Mango" + }, + { + "id": 701, + "name": "lexikon", + "slug": "lexikon", + "description": "lexikon" + }, + { + "id": 702, + "name": "plånbok", + "slug": "planbok", + "description": "plånbok" + }, + { + "id": 703, + "name": "Google Wallet", + "slug": "google-wallet", + "description": "Google Wallet" + }, + { + "id": 704, + "name": "Windows Phone 7.5", + "slug": "windows-phone-75", + "description": "Windows Phone 7.5" + }, + { + "id": 705, + "name": "iPhone 5", + "slug": "iphone-5", + "description": "iPhone 5" + }, + { + "id": 706, + "name": "Android 3.1", + "slug": "android-31", + "description": "Android 3.1" + }, + { + "id": 707, + "name": "iOS 5", + "slug": "ios-5", + "description": "iOS 5" + }, + { + "id": 708, + "name": "Dropbox", + "slug": "dropbox", + "description": "Dropbox" + }, + { + "id": 709, + "name": "Evernote", + "slug": "evernote", + "description": "Evernote" + }, + { + "id": 710, + "name": "SoundCloud", + "slug": "soundcloud", + "description": "SoundCloud" + }, + { + "id": 711, + "name": "Telia Navigator", + "slug": "telia-navigator", + "description": "Telia Navigator" + }, + { "id": 712, "name": "WP", "slug": "wp", "description": "WP" }, + { "id": 713, "name": "WP7", "slug": "wp7", "description": "WP7" }, + { "id": 714, "name": "NODO", "slug": "nodo", "description": "NODO" }, + { + "id": 715, + "name": "arbete", + "slug": "arbete", + "description": "arbete" + }, + { + "id": 716, + "name": "brainstorming", + "slug": "brainstorming", + "description": "brainstorming" + }, + { + "id": 717, + "name": "keynote", + "slug": "keynote", + "description": "keynote" + }, + { + "id": 718, + "name": "säljverktyg", + "slug": "saljverktyg", + "description": "säljverktyg" + }, + { + "id": 719, + "name": "inköpslista", + "slug": "inkopslista", + "description": "inköpslista" + }, + { + "id": 720, + "name": "ShoppingList", + "slug": "shoppinglist", + "description": "ShoppingList" + }, + { "id": 721, "name": "AI", "slug": "ai", "description": "AI" }, + { + "id": 722, + "name": "iPhone 4S", + "slug": "iphone-4s", + "description": "iPhone 4S" + }, + { + "id": 723, + "name": "QR-koder", + "slug": "qr-koder", + "description": "QR-koder" + }, + { + "id": 724, + "name": "Predictive Analytics", + "slug": "predictive-analytics", + "description": "Predictive Analytics" + }, + { + "id": 725, + "name": "Location", + "slug": "location", + "description": "Location" + }, + { + "id": 726, + "name": "Gamification", + "slug": "gamification", + "description": "Gamification" + }, + { + "id": 727, + "name": "Group Buying", + "slug": "group-buying", + "description": "Group Buying" + }, + { + "id": 728, + "name": "Speech-to-speech", + "slug": "speech-to-speech", + "description": "Speech-to-speech" + }, + { + "id": 729, + "name": "Boxee", + "slug": "boxee", + "description": "Boxee" + }, + { + "id": 730, + "name": "Tweetdeck", + "slug": "tweetdeck", + "description": "Tweetdeck" + }, + { + "id": 731, + "name": "ManageFilter", + "slug": "managefilter", + "description": "ManageFilter" + }, + { + "id": 732, + "name": "Klout", + "slug": "klout", + "description": "Klout" + }, + { + "id": 733, + "name": "Peerindex", + "slug": "peerindex", + "description": "Peerindex" + }, + { + "id": 734, + "name": "Twopcharts", + "slug": "twopcharts", + "description": "Twopcharts" + } + ], + "posts_tags": [ + { "tag_id": 0, "post_id": 8 }, + { "tag_id": 0, "post_id": 57 }, + { "tag_id": 0, "post_id": 58 }, + { "tag_id": 0, "post_id": 61 }, + { "tag_id": 0, "post_id": 65 }, + { "tag_id": 0, "post_id": 72 }, + { "tag_id": 0, "post_id": 76 }, + { "tag_id": 0, "post_id": 80 }, + { "tag_id": 0, "post_id": 85 }, + { "tag_id": 1, "post_id": 88 }, + { "tag_id": 2, "post_id": 88 }, + { "tag_id": 3, "post_id": 88 }, + { "tag_id": 0, "post_id": 88 }, + { "tag_id": 0, "post_id": 90 }, + { "tag_id": 0, "post_id": 103 }, + { "tag_id": 0, "post_id": 109 }, + { "tag_id": 0, "post_id": 111 }, + { "tag_id": 0, "post_id": 112 }, + { "tag_id": 0, "post_id": 114 }, + { "tag_id": 0, "post_id": 118 }, + { "tag_id": 0, "post_id": 120 }, + { "tag_id": 0, "post_id": 124 }, + { "tag_id": 0, "post_id": 131 }, + { "tag_id": 0, "post_id": 134 }, + { "tag_id": 4, "post_id": 139 }, + { "tag_id": 5, "post_id": 139 }, + { "tag_id": 6, "post_id": 139 }, + { "tag_id": 7, "post_id": 139 }, + { "tag_id": 0, "post_id": 139 }, + { "tag_id": 8, "post_id": 140 }, + { "tag_id": 9, "post_id": 140 }, + { "tag_id": 10, "post_id": 140 }, + { "tag_id": 0, "post_id": 140 }, + { "tag_id": 5, "post_id": 141 }, + { "tag_id": 11, "post_id": 141 }, + { "tag_id": 0, "post_id": 141 }, + { "tag_id": 12, "post_id": 149 }, + { "tag_id": 13, "post_id": 149 }, + { "tag_id": 5, "post_id": 149 }, + { "tag_id": 14, "post_id": 149 }, + { "tag_id": 9, "post_id": 149 }, + { "tag_id": 0, "post_id": 149 }, + { "tag_id": 15, "post_id": 150 }, + { "tag_id": 16, "post_id": 150 }, + { "tag_id": 17, "post_id": 150 }, + { "tag_id": 5, "post_id": 150 }, + { "tag_id": 18, "post_id": 150 }, + { "tag_id": 6, "post_id": 150 }, + { "tag_id": 19, "post_id": 150 }, + { "tag_id": 20, "post_id": 150 }, + { "tag_id": 0, "post_id": 150 }, + { "tag_id": 21, "post_id": 151 }, + { "tag_id": 22, "post_id": 151 }, + { "tag_id": 23, "post_id": 151 }, + { "tag_id": 24, "post_id": 151 }, + { "tag_id": 0, "post_id": 151 }, + { "tag_id": 17, "post_id": 159 }, + { "tag_id": 25, "post_id": 159 }, + { "tag_id": 5, "post_id": 159 }, + { "tag_id": 0, "post_id": 159 }, + { "tag_id": 26, "post_id": 164 }, + { "tag_id": 2, "post_id": 164 }, + { "tag_id": 27, "post_id": 164 }, + { "tag_id": 28, "post_id": 164 }, + { "tag_id": 5, "post_id": 164 }, + { "tag_id": 0, "post_id": 164 }, + { "tag_id": 28, "post_id": 168 }, + { "tag_id": 8, "post_id": 168 }, + { "tag_id": 29, "post_id": 168 }, + { "tag_id": 30, "post_id": 168 }, + { "tag_id": 31, "post_id": 168 }, + { "tag_id": 0, "post_id": 168 }, + { "tag_id": 17, "post_id": 174 }, + { "tag_id": 32, "post_id": 174 }, + { "tag_id": 33, "post_id": 174 }, + { "tag_id": 0, "post_id": 174 }, + { "tag_id": 34, "post_id": 184 }, + { "tag_id": 35, "post_id": 184 }, + { "tag_id": 36, "post_id": 184 }, + { "tag_id": 19, "post_id": 184 }, + { "tag_id": 37, "post_id": 184 }, + { "tag_id": 38, "post_id": 184 }, + { "tag_id": 0, "post_id": 184 }, + { "tag_id": 15, "post_id": 185 }, + { "tag_id": 5, "post_id": 185 }, + { "tag_id": 16, "post_id": 185 }, + { "tag_id": 4, "post_id": 185 }, + { "tag_id": 14, "post_id": 185 }, + { "tag_id": 0, "post_id": 185 }, + { "tag_id": 39, "post_id": 189 }, + { "tag_id": 40, "post_id": 189 }, + { "tag_id": 41, "post_id": 189 }, + { "tag_id": 42, "post_id": 189 }, + { "tag_id": 0, "post_id": 189 }, + { "tag_id": 43, "post_id": 192 }, + { "tag_id": 4, "post_id": 192 }, + { "tag_id": 44, "post_id": 192 }, + { "tag_id": 45, "post_id": 192 }, + { "tag_id": 0, "post_id": 192 }, + { "tag_id": 22, "post_id": 194 }, + { "tag_id": 46, "post_id": 194 }, + { "tag_id": 47, "post_id": 194 }, + { "tag_id": 23, "post_id": 194 }, + { "tag_id": 0, "post_id": 194 }, + { "tag_id": 48, "post_id": 208 }, + { "tag_id": 49, "post_id": 208 }, + { "tag_id": 0, "post_id": 208 }, + { "tag_id": 42, "post_id": 211 }, + { "tag_id": 50, "post_id": 211 }, + { "tag_id": 31, "post_id": 211 }, + { "tag_id": 0, "post_id": 211 }, + { "tag_id": 28, "post_id": 217 }, + { "tag_id": 4, "post_id": 217 }, + { "tag_id": 9, "post_id": 217 }, + { "tag_id": 51, "post_id": 217 }, + { "tag_id": 0, "post_id": 217 }, + { "tag_id": 52, "post_id": 218 }, + { "tag_id": 53, "post_id": 218 }, + { "tag_id": 54, "post_id": 218 }, + { "tag_id": 55, "post_id": 218 }, + { "tag_id": 31, "post_id": 218 }, + { "tag_id": 56, "post_id": 218 }, + { "tag_id": 0, "post_id": 218 }, + { "tag_id": 57, "post_id": 223 }, + { "tag_id": 58, "post_id": 223 }, + { "tag_id": 59, "post_id": 223 }, + { "tag_id": 60, "post_id": 223 }, + { "tag_id": 0, "post_id": 223 }, + { "tag_id": 61, "post_id": 228 }, + { "tag_id": 62, "post_id": 228 }, + { "tag_id": 63, "post_id": 228 }, + { "tag_id": 64, "post_id": 228 }, + { "tag_id": 0, "post_id": 228 }, + { "tag_id": 0, "post_id": 228 }, + { "tag_id": 14, "post_id": 239 }, + { "tag_id": 65, "post_id": 239 }, + { "tag_id": 31, "post_id": 239 }, + { "tag_id": 20, "post_id": 239 }, + { "tag_id": 28, "post_id": 239 }, + { "tag_id": 66, "post_id": 239 }, + { "tag_id": 0, "post_id": 239 }, + { "tag_id": 67, "post_id": 245 }, + { "tag_id": 31, "post_id": 245 }, + { "tag_id": 68, "post_id": 245 }, + { "tag_id": 0, "post_id": 245 }, + { "tag_id": 67, "post_id": 253 }, + { "tag_id": 31, "post_id": 253 }, + { "tag_id": 68, "post_id": 253 }, + { "tag_id": 0, "post_id": 253 }, + { "tag_id": 0, "post_id": 254 }, + { "tag_id": 69, "post_id": 260 }, + { "tag_id": 70, "post_id": 260 }, + { "tag_id": 0, "post_id": 260 }, + { "tag_id": 63, "post_id": 270 }, + { "tag_id": 71, "post_id": 270 }, + { "tag_id": 72, "post_id": 270 }, + { "tag_id": 73, "post_id": 270 }, + { "tag_id": 0, "post_id": 270 }, + { "tag_id": 31, "post_id": 272 }, + { "tag_id": 74, "post_id": 272 }, + { "tag_id": 68, "post_id": 272 }, + { "tag_id": 0, "post_id": 272 }, + { "tag_id": 31, "post_id": 274 }, + { "tag_id": 28, "post_id": 274 }, + { "tag_id": 5, "post_id": 274 }, + { "tag_id": 0, "post_id": 274 }, + { "tag_id": 17, "post_id": 275 }, + { "tag_id": 42, "post_id": 275 }, + { "tag_id": 0, "post_id": 275 }, + { "tag_id": 0, "post_id": 276 }, + { "tag_id": 22, "post_id": 279 }, + { "tag_id": 17, "post_id": 279 }, + { "tag_id": 75, "post_id": 279 }, + { "tag_id": 0, "post_id": 279 }, + { "tag_id": 76, "post_id": 280 }, + { "tag_id": 34, "post_id": 280 }, + { "tag_id": 77, "post_id": 280 }, + { "tag_id": 0, "post_id": 280 }, + { "tag_id": 78, "post_id": 283 }, + { "tag_id": 31, "post_id": 283 }, + { "tag_id": 15, "post_id": 283 }, + { "tag_id": 14, "post_id": 283 }, + { "tag_id": 79, "post_id": 283 }, + { "tag_id": 0, "post_id": 283 }, + { "tag_id": 76, "post_id": 287 }, + { "tag_id": 31, "post_id": 287 }, + { "tag_id": 80, "post_id": 287 }, + { "tag_id": 81, "post_id": 287 }, + { "tag_id": 0, "post_id": 287 }, + { "tag_id": 0, "post_id": 288 }, + { "tag_id": 43, "post_id": 288 }, + { "tag_id": 4, "post_id": 288 }, + { "tag_id": 82, "post_id": 288 }, + { "tag_id": 83, "post_id": 288 }, + { "tag_id": 0, "post_id": 288 }, + { "tag_id": 63, "post_id": 290 }, + { "tag_id": 84, "post_id": 290 }, + { "tag_id": 31, "post_id": 290 }, + { "tag_id": 85, "post_id": 290 }, + { "tag_id": 0, "post_id": 290 }, + { "tag_id": 31, "post_id": 291 }, + { "tag_id": 35, "post_id": 291 }, + { "tag_id": 37, "post_id": 291 }, + { "tag_id": 19, "post_id": 291 }, + { "tag_id": 0, "post_id": 291 }, + { "tag_id": 86, "post_id": 293 }, + { "tag_id": 87, "post_id": 293 }, + { "tag_id": 76, "post_id": 293 }, + { "tag_id": 0, "post_id": 293 }, + { "tag_id": 44, "post_id": 310 }, + { "tag_id": 88, "post_id": 310 }, + { "tag_id": 0, "post_id": 310 }, + { "tag_id": 0, "post_id": 330 }, + { "tag_id": 89, "post_id": 334 }, + { "tag_id": 90, "post_id": 334 }, + { "tag_id": 4, "post_id": 334 }, + { "tag_id": 91, "post_id": 334 }, + { "tag_id": 92, "post_id": 334 }, + { "tag_id": 17, "post_id": 334 }, + { "tag_id": 0, "post_id": 334 }, + { "tag_id": 0, "post_id": 336 }, + { "tag_id": 77, "post_id": 336 }, + { "tag_id": 0, "post_id": 336 }, + { "tag_id": 28, "post_id": 337 }, + { "tag_id": 31, "post_id": 337 }, + { "tag_id": 15, "post_id": 337 }, + { "tag_id": 66, "post_id": 337 }, + { "tag_id": 0, "post_id": 337 }, + { "tag_id": 93, "post_id": 337 }, + { "tag_id": 0, "post_id": 337 }, + { "tag_id": 0, "post_id": 339 }, + { "tag_id": 66, "post_id": 340 }, + { "tag_id": 0, "post_id": 340 }, + { "tag_id": 31, "post_id": 340 }, + { "tag_id": 34, "post_id": 340 }, + { "tag_id": 77, "post_id": 340 }, + { "tag_id": 0, "post_id": 340 }, + { "tag_id": 31, "post_id": 344 }, + { "tag_id": 66, "post_id": 344 }, + { "tag_id": 15, "post_id": 344 }, + { "tag_id": 94, "post_id": 344 }, + { "tag_id": 0, "post_id": 344 }, + { "tag_id": 0, "post_id": 346 }, + { "tag_id": 66, "post_id": 348 }, + { "tag_id": 0, "post_id": 348 }, + { "tag_id": 31, "post_id": 348 }, + { "tag_id": 34, "post_id": 348 }, + { "tag_id": 77, "post_id": 348 }, + { "tag_id": 0, "post_id": 348 }, + { "tag_id": 95, "post_id": 350 }, + { "tag_id": 96, "post_id": 350 }, + { "tag_id": 97, "post_id": 350 }, + { "tag_id": 98, "post_id": 350 }, + { "tag_id": 99, "post_id": 350 }, + { "tag_id": 100, "post_id": 350 }, + { "tag_id": 0, "post_id": 350 }, + { "tag_id": 0, "post_id": 353 }, + { "tag_id": 77, "post_id": 353 }, + { "tag_id": 56, "post_id": 353 }, + { "tag_id": 0, "post_id": 353 }, + { "tag_id": 0, "post_id": 360 }, + { "tag_id": 101, "post_id": 360 }, + { "tag_id": 102, "post_id": 360 }, + { "tag_id": 0, "post_id": 360 }, + { "tag_id": 17, "post_id": 368 }, + { "tag_id": 0, "post_id": 368 }, + { "tag_id": 103, "post_id": 368 }, + { "tag_id": 0, "post_id": 368 }, + { "tag_id": 0, "post_id": 370 }, + { "tag_id": 104, "post_id": 370 }, + { "tag_id": 105, "post_id": 370 }, + { "tag_id": 5, "post_id": 370 }, + { "tag_id": 0, "post_id": 370 }, + { "tag_id": 31, "post_id": 371 }, + { "tag_id": 68, "post_id": 371 }, + { "tag_id": 106, "post_id": 371 }, + { "tag_id": 0, "post_id": 371 }, + { "tag_id": 31, "post_id": 374 }, + { "tag_id": 33, "post_id": 374 }, + { "tag_id": 4, "post_id": 374 }, + { "tag_id": 0, "post_id": 374 }, + { "tag_id": 0, "post_id": 378 }, + { "tag_id": 101, "post_id": 378 }, + { "tag_id": 102, "post_id": 378 }, + { "tag_id": 0, "post_id": 378 }, + { "tag_id": 28, "post_id": 386 }, + { "tag_id": 31, "post_id": 386 }, + { "tag_id": 93, "post_id": 386 }, + { "tag_id": 0, "post_id": 386 }, + { "tag_id": 0, "post_id": 387 }, + { "tag_id": 107, "post_id": 387 }, + { "tag_id": 108, "post_id": 387 }, + { "tag_id": 0, "post_id": 387 }, + { "tag_id": 0, "post_id": 388 }, + { "tag_id": 77, "post_id": 388 }, + { "tag_id": 34, "post_id": 388 }, + { "tag_id": 0, "post_id": 388 }, + { "tag_id": 0, "post_id": 391 }, + { "tag_id": 107, "post_id": 391 }, + { "tag_id": 0, "post_id": 391 }, + { "tag_id": 31, "post_id": 392 }, + { "tag_id": 106, "post_id": 392 }, + { "tag_id": 109, "post_id": 392 }, + { "tag_id": 110, "post_id": 392 }, + { "tag_id": 0, "post_id": 392 }, + { "tag_id": 31, "post_id": 394 }, + { "tag_id": 106, "post_id": 394 }, + { "tag_id": 111, "post_id": 394 }, + { "tag_id": 112, "post_id": 394 }, + { "tag_id": 0, "post_id": 394 }, + { "tag_id": 0, "post_id": 400 }, + { "tag_id": 101, "post_id": 400 }, + { "tag_id": 102, "post_id": 400 }, + { "tag_id": 0, "post_id": 400 }, + { "tag_id": 0, "post_id": 405 }, + { "tag_id": 70, "post_id": 407 }, + { "tag_id": 36, "post_id": 407 }, + { "tag_id": 0, "post_id": 407 }, + { "tag_id": 0, "post_id": 408 }, + { "tag_id": 113, "post_id": 408 }, + { "tag_id": 69, "post_id": 408 }, + { "tag_id": 0, "post_id": 408 }, + { "tag_id": 114, "post_id": 410 }, + { "tag_id": 19, "post_id": 410 }, + { "tag_id": 0, "post_id": 410 }, + { "tag_id": 0, "post_id": 410 }, + { "tag_id": 5, "post_id": 411 }, + { "tag_id": 115, "post_id": 411 }, + { "tag_id": 116, "post_id": 411 }, + { "tag_id": 0, "post_id": 411 }, + { "tag_id": 0, "post_id": 414 }, + { "tag_id": 5, "post_id": 414 }, + { "tag_id": 117, "post_id": 414 }, + { "tag_id": 0, "post_id": 414 }, + { "tag_id": 31, "post_id": 416 }, + { "tag_id": 28, "post_id": 416 }, + { "tag_id": 0, "post_id": 416 }, + { "tag_id": 31, "post_id": 417 }, + { "tag_id": 76, "post_id": 417 }, + { "tag_id": 0, "post_id": 417 }, + { "tag_id": 106, "post_id": 418 }, + { "tag_id": 118, "post_id": 418 }, + { "tag_id": 31, "post_id": 418 }, + { "tag_id": 0, "post_id": 418 }, + { "tag_id": 106, "post_id": 419 }, + { "tag_id": 118, "post_id": 419 }, + { "tag_id": 31, "post_id": 419 }, + { "tag_id": 0, "post_id": 419 }, + { "tag_id": 17, "post_id": 421 }, + { "tag_id": 119, "post_id": 421 }, + { "tag_id": 120, "post_id": 421 }, + { "tag_id": 0, "post_id": 421 }, + { "tag_id": 106, "post_id": 422 }, + { "tag_id": 118, "post_id": 422 }, + { "tag_id": 31, "post_id": 422 }, + { "tag_id": 121, "post_id": 422 }, + { "tag_id": 0, "post_id": 422 }, + { "tag_id": 106, "post_id": 423 }, + { "tag_id": 118, "post_id": 423 }, + { "tag_id": 122, "post_id": 423 }, + { "tag_id": 0, "post_id": 423 }, + { "tag_id": 0, "post_id": 424 }, + { "tag_id": 4, "post_id": 424 }, + { "tag_id": 104, "post_id": 424 }, + { "tag_id": 0, "post_id": 424 }, + { "tag_id": 0, "post_id": 425 }, + { "tag_id": 22, "post_id": 425 }, + { "tag_id": 107, "post_id": 425 }, + { "tag_id": 0, "post_id": 425 }, + { "tag_id": 66, "post_id": 426 }, + { "tag_id": 5, "post_id": 426 }, + { "tag_id": 0, "post_id": 426 }, + { "tag_id": 107, "post_id": 429 }, + { "tag_id": 123, "post_id": 429 }, + { "tag_id": 124, "post_id": 429 }, + { "tag_id": 52, "post_id": 429 }, + { "tag_id": 125, "post_id": 429 }, + { "tag_id": 126, "post_id": 429 }, + { "tag_id": 0, "post_id": 429 }, + { "tag_id": 12, "post_id": 431 }, + { "tag_id": 127, "post_id": 431 }, + { "tag_id": 17, "post_id": 431 }, + { "tag_id": 0, "post_id": 431 }, + { "tag_id": 89, "post_id": 437 }, + { "tag_id": 90, "post_id": 437 }, + { "tag_id": 17, "post_id": 437 }, + { "tag_id": 0, "post_id": 437 }, + { "tag_id": 52, "post_id": 440 }, + { "tag_id": 128, "post_id": 440 }, + { "tag_id": 129, "post_id": 440 }, + { "tag_id": 14, "post_id": 440 }, + { "tag_id": 0, "post_id": 440 }, + { "tag_id": 5, "post_id": 442 }, + { "tag_id": 12, "post_id": 442 }, + { "tag_id": 130, "post_id": 442 }, + { "tag_id": 0, "post_id": 442 }, + { "tag_id": 67, "post_id": 443 }, + { "tag_id": 131, "post_id": 443 }, + { "tag_id": 68, "post_id": 443 }, + { "tag_id": 122, "post_id": 443 }, + { "tag_id": 0, "post_id": 443 }, + { "tag_id": 28, "post_id": 445 }, + { "tag_id": 131, "post_id": 445 }, + { "tag_id": 0, "post_id": 445 }, + { "tag_id": 129, "post_id": 449 }, + { "tag_id": 132, "post_id": 449 }, + { "tag_id": 133, "post_id": 449 }, + { "tag_id": 0, "post_id": 449 }, + { "tag_id": 121, "post_id": 453 }, + { "tag_id": 134, "post_id": 453 }, + { "tag_id": 135, "post_id": 453 }, + { "tag_id": 0, "post_id": 453 }, + { "tag_id": 22, "post_id": 455 }, + { "tag_id": 136, "post_id": 455 }, + { "tag_id": 137, "post_id": 455 }, + { "tag_id": 138, "post_id": 455 }, + { "tag_id": 0, "post_id": 455 }, + { "tag_id": 139, "post_id": 456 }, + { "tag_id": 140, "post_id": 456 }, + { "tag_id": 71, "post_id": 456 }, + { "tag_id": 14, "post_id": 456 }, + { "tag_id": 0, "post_id": 456 }, + { "tag_id": 141, "post_id": 458 }, + { "tag_id": 142, "post_id": 458 }, + { "tag_id": 0, "post_id": 458 }, + { "tag_id": 85, "post_id": 460 }, + { "tag_id": 143, "post_id": 460 }, + { "tag_id": 0, "post_id": 460 }, + { "tag_id": 0, "post_id": 476 }, + { "tag_id": 144, "post_id": 477 }, + { "tag_id": 145, "post_id": 477 }, + { "tag_id": 146, "post_id": 477 }, + { "tag_id": 147, "post_id": 477 }, + { "tag_id": 0, "post_id": 477 }, + { "tag_id": 106, "post_id": 478 }, + { "tag_id": 131, "post_id": 478 }, + { "tag_id": 148, "post_id": 478 }, + { "tag_id": 149, "post_id": 478 }, + { "tag_id": 0, "post_id": 478 }, + { "tag_id": 0, "post_id": 479 }, + { "tag_id": 22, "post_id": 479 }, + { "tag_id": 150, "post_id": 479 }, + { "tag_id": 151, "post_id": 479 }, + { "tag_id": 0, "post_id": 479 }, + { "tag_id": 14, "post_id": 482 }, + { "tag_id": 152, "post_id": 482 }, + { "tag_id": 153, "post_id": 482 }, + { "tag_id": 154, "post_id": 482 }, + { "tag_id": 0, "post_id": 482 }, + { "tag_id": 144, "post_id": 487 }, + { "tag_id": 155, "post_id": 487 }, + { "tag_id": 0, "post_id": 487 }, + { "tag_id": 106, "post_id": 488 }, + { "tag_id": 156, "post_id": 488 }, + { "tag_id": 157, "post_id": 488 }, + { "tag_id": 0, "post_id": 488 }, + { "tag_id": 0, "post_id": 492 }, + { "tag_id": 158, "post_id": 492 }, + { "tag_id": 0, "post_id": 492 }, + { "tag_id": 125, "post_id": 492 }, + { "tag_id": 52, "post_id": 492 }, + { "tag_id": 0, "post_id": 492 }, + { "tag_id": 34, "post_id": 494 }, + { "tag_id": 0, "post_id": 494 }, + { "tag_id": 0, "post_id": 494 }, + { "tag_id": 129, "post_id": 495 }, + { "tag_id": 159, "post_id": 495 }, + { "tag_id": 160, "post_id": 495 }, + { "tag_id": 161, "post_id": 495 }, + { "tag_id": 0, "post_id": 495 }, + { "tag_id": 162, "post_id": 496 }, + { "tag_id": 163, "post_id": 496 }, + { "tag_id": 164, "post_id": 496 }, + { "tag_id": 165, "post_id": 496 }, + { "tag_id": 166, "post_id": 496 }, + { "tag_id": 0, "post_id": 496 }, + { "tag_id": 167, "post_id": 497 }, + { "tag_id": 168, "post_id": 497 }, + { "tag_id": 169, "post_id": 497 }, + { "tag_id": 170, "post_id": 497 }, + { "tag_id": 171, "post_id": 497 }, + { "tag_id": 0, "post_id": 497 }, + { "tag_id": 66, "post_id": 498 }, + { "tag_id": 18, "post_id": 498 }, + { "tag_id": 172, "post_id": 498 }, + { "tag_id": 0, "post_id": 498 }, + { "tag_id": 125, "post_id": 500 }, + { "tag_id": 18, "post_id": 500 }, + { "tag_id": 173, "post_id": 500 }, + { "tag_id": 0, "post_id": 500 }, + { "tag_id": 71, "post_id": 501 }, + { "tag_id": 174, "post_id": 501 }, + { "tag_id": 0, "post_id": 501 }, + { "tag_id": 0, "post_id": 502 }, + { "tag_id": 0, "post_id": 502 }, + { "tag_id": 22, "post_id": 503 }, + { "tag_id": 175, "post_id": 503 }, + { "tag_id": 176, "post_id": 503 }, + { "tag_id": 0, "post_id": 503 }, + { "tag_id": 177, "post_id": 509 }, + { "tag_id": 178, "post_id": 509 }, + { "tag_id": 179, "post_id": 509 }, + { "tag_id": 180, "post_id": 509 }, + { "tag_id": 84, "post_id": 509 }, + { "tag_id": 0, "post_id": 509 }, + { "tag_id": 181, "post_id": 527 }, + { "tag_id": 182, "post_id": 527 }, + { "tag_id": 183, "post_id": 527 }, + { "tag_id": 184, "post_id": 527 }, + { "tag_id": 0, "post_id": 527 }, + { "tag_id": 125, "post_id": 528 }, + { "tag_id": 185, "post_id": 528 }, + { "tag_id": 186, "post_id": 528 }, + { "tag_id": 187, "post_id": 528 }, + { "tag_id": 188, "post_id": 528 }, + { "tag_id": 0, "post_id": 528 }, + { "tag_id": 106, "post_id": 529 }, + { "tag_id": 148, "post_id": 529 }, + { "tag_id": 189, "post_id": 529 }, + { "tag_id": 0, "post_id": 529 }, + { "tag_id": 144, "post_id": 530 }, + { "tag_id": 190, "post_id": 530 }, + { "tag_id": 12, "post_id": 530 }, + { "tag_id": 147, "post_id": 530 }, + { "tag_id": 191, "post_id": 530 }, + { "tag_id": 0, "post_id": 530 }, + { "tag_id": 192, "post_id": 532 }, + { "tag_id": 179, "post_id": 532 }, + { "tag_id": 0, "post_id": 532 }, + { "tag_id": 84, "post_id": 534 }, + { "tag_id": 193, "post_id": 534 }, + { "tag_id": 63, "post_id": 534 }, + { "tag_id": 194, "post_id": 534 }, + { "tag_id": 116, "post_id": 534 }, + { "tag_id": 195, "post_id": 534 }, + { "tag_id": 196, "post_id": 534 }, + { "tag_id": 0, "post_id": 534 }, + { "tag_id": 197, "post_id": 538 }, + { "tag_id": 198, "post_id": 538 }, + { "tag_id": 199, "post_id": 538 }, + { "tag_id": 0, "post_id": 538 }, + { "tag_id": 200, "post_id": 540 }, + { "tag_id": 201, "post_id": 540 }, + { "tag_id": 170, "post_id": 540 }, + { "tag_id": 202, "post_id": 540 }, + { "tag_id": 167, "post_id": 540 }, + { "tag_id": 0, "post_id": 540 }, + { "tag_id": 22, "post_id": 542 }, + { "tag_id": 141, "post_id": 542 }, + { "tag_id": 203, "post_id": 542 }, + { "tag_id": 204, "post_id": 542 }, + { "tag_id": 0, "post_id": 542 }, + { "tag_id": 0, "post_id": 543 }, + { "tag_id": 104, "post_id": 544 }, + { "tag_id": 205, "post_id": 544 }, + { "tag_id": 206, "post_id": 544 }, + { "tag_id": 207, "post_id": 544 }, + { "tag_id": 0, "post_id": 544 }, + { "tag_id": 208, "post_id": 546 }, + { "tag_id": 127, "post_id": 546 }, + { "tag_id": 5, "post_id": 546 }, + { "tag_id": 0, "post_id": 546 }, + { "tag_id": 208, "post_id": 547 }, + { "tag_id": 209, "post_id": 547 }, + { "tag_id": 127, "post_id": 547 }, + { "tag_id": 210, "post_id": 547 }, + { "tag_id": 211, "post_id": 547 }, + { "tag_id": 0, "post_id": 547 }, + { "tag_id": 212, "post_id": 549 }, + { "tag_id": 213, "post_id": 549 }, + { "tag_id": 5, "post_id": 549 }, + { "tag_id": 0, "post_id": 549 }, + { "tag_id": 214, "post_id": 550 }, + { "tag_id": 215, "post_id": 550 }, + { "tag_id": 216, "post_id": 550 }, + { "tag_id": 217, "post_id": 550 }, + { "tag_id": 0, "post_id": 550 }, + { "tag_id": 167, "post_id": 552 }, + { "tag_id": 170, "post_id": 552 }, + { "tag_id": 218, "post_id": 552 }, + { "tag_id": 4, "post_id": 552 }, + { "tag_id": 0, "post_id": 552 }, + { "tag_id": 0, "post_id": 557 }, + { "tag_id": 0, "post_id": 557 }, + { "tag_id": 0, "post_id": 557 }, + { "tag_id": 77, "post_id": 563 }, + { "tag_id": 34, "post_id": 563 }, + { "tag_id": 219, "post_id": 563 }, + { "tag_id": 0, "post_id": 563 }, + { "tag_id": 106, "post_id": 565 }, + { "tag_id": 131, "post_id": 565 }, + { "tag_id": 220, "post_id": 565 }, + { "tag_id": 221, "post_id": 565 }, + { "tag_id": 0, "post_id": 565 }, + { "tag_id": 0, "post_id": 570 }, + { "tag_id": 222, "post_id": 571 }, + { "tag_id": 223, "post_id": 571 }, + { "tag_id": 224, "post_id": 571 }, + { "tag_id": 225, "post_id": 571 }, + { "tag_id": 0, "post_id": 571 }, + { "tag_id": 226, "post_id": 572 }, + { "tag_id": 0, "post_id": 572 }, + { "tag_id": 0, "post_id": 572 }, + { "tag_id": 0, "post_id": 573 }, + { "tag_id": 227, "post_id": 573 }, + { "tag_id": 0, "post_id": 573 }, + { "tag_id": 228, "post_id": 576 }, + { "tag_id": 131, "post_id": 576 }, + { "tag_id": 229, "post_id": 576 }, + { "tag_id": 0, "post_id": 576 }, + { "tag_id": 230, "post_id": 577 }, + { "tag_id": 84, "post_id": 577 }, + { "tag_id": 0, "post_id": 577 }, + { "tag_id": 77, "post_id": 579 }, + { "tag_id": 231, "post_id": 579 }, + { "tag_id": 0, "post_id": 579 }, + { "tag_id": 18, "post_id": 581 }, + { "tag_id": 0, "post_id": 581 }, + { "tag_id": 18, "post_id": 583 }, + { "tag_id": 232, "post_id": 583 }, + { "tag_id": 0, "post_id": 583 }, + { "tag_id": 233, "post_id": 587 }, + { "tag_id": 106, "post_id": 587 }, + { "tag_id": 234, "post_id": 587 }, + { "tag_id": 28, "post_id": 587 }, + { "tag_id": 0, "post_id": 587 }, + { "tag_id": 94, "post_id": 588 }, + { "tag_id": 235, "post_id": 588 }, + { "tag_id": 66, "post_id": 588 }, + { "tag_id": 0, "post_id": 588 }, + { "tag_id": 0, "post_id": 588 }, + { "tag_id": 0, "post_id": 589 }, + { "tag_id": 28, "post_id": 590 }, + { "tag_id": 227, "post_id": 590 }, + { "tag_id": 236, "post_id": 590 }, + { "tag_id": 0, "post_id": 590 }, + { "tag_id": 22, "post_id": 592 }, + { "tag_id": 237, "post_id": 592 }, + { "tag_id": 238, "post_id": 592 }, + { "tag_id": 0, "post_id": 592 }, + { "tag_id": 239, "post_id": 593 }, + { "tag_id": 240, "post_id": 593 }, + { "tag_id": 77, "post_id": 593 }, + { "tag_id": 34, "post_id": 593 }, + { "tag_id": 18, "post_id": 593 }, + { "tag_id": 0, "post_id": 593 }, + { "tag_id": 0, "post_id": 594 }, + { "tag_id": 131, "post_id": 595 }, + { "tag_id": 241, "post_id": 595 }, + { "tag_id": 242, "post_id": 595 }, + { "tag_id": 0, "post_id": 595 }, + { "tag_id": 243, "post_id": 596 }, + { "tag_id": 244, "post_id": 596 }, + { "tag_id": 245, "post_id": 596 }, + { "tag_id": 246, "post_id": 596 }, + { "tag_id": 0, "post_id": 596 }, + { "tag_id": 17, "post_id": 597 }, + { "tag_id": 0, "post_id": 597 }, + { "tag_id": 247, "post_id": 597 }, + { "tag_id": 248, "post_id": 597 }, + { "tag_id": 249, "post_id": 597 }, + { "tag_id": 0, "post_id": 597 }, + { "tag_id": 122, "post_id": 599 }, + { "tag_id": 250, "post_id": 599 }, + { "tag_id": 0, "post_id": 599 }, + { "tag_id": 0, "post_id": 607 }, + { "tag_id": 0, "post_id": 607 }, + { "tag_id": 0, "post_id": 607 }, + { "tag_id": 251, "post_id": 608 }, + { "tag_id": 0, "post_id": 608 }, + { "tag_id": 0, "post_id": 608 }, + { "tag_id": 0, "post_id": 608 }, + { "tag_id": 167, "post_id": 608 }, + { "tag_id": 252, "post_id": 608 }, + { "tag_id": 0, "post_id": 608 }, + { "tag_id": 18, "post_id": 609 }, + { "tag_id": 253, "post_id": 609 }, + { "tag_id": 0, "post_id": 609 }, + { "tag_id": 18, "post_id": 610 }, + { "tag_id": 66, "post_id": 610 }, + { "tag_id": 0, "post_id": 610 }, + { "tag_id": 243, "post_id": 610 }, + { "tag_id": 254, "post_id": 610 }, + { "tag_id": 255, "post_id": 610 }, + { "tag_id": 0, "post_id": 610 }, + { "tag_id": 256, "post_id": 611 }, + { "tag_id": 257, "post_id": 611 }, + { "tag_id": 258, "post_id": 611 }, + { "tag_id": 259, "post_id": 611 }, + { "tag_id": 0, "post_id": 611 }, + { "tag_id": 260, "post_id": 611 }, + { "tag_id": 0, "post_id": 611 }, + { "tag_id": 18, "post_id": 612 }, + { "tag_id": 0, "post_id": 612 }, + { "tag_id": 261, "post_id": 612 }, + { "tag_id": 17, "post_id": 612 }, + { "tag_id": 0, "post_id": 612 }, + { "tag_id": 262, "post_id": 612 }, + { "tag_id": 263, "post_id": 612 }, + { "tag_id": 0, "post_id": 612 }, + { "tag_id": 0, "post_id": 613 }, + { "tag_id": 0, "post_id": 615 }, + { "tag_id": 0, "post_id": 616 }, + { "tag_id": 0, "post_id": 618 }, + { "tag_id": 0, "post_id": 619 }, + { "tag_id": 0, "post_id": 620 }, + { "tag_id": 0, "post_id": 621 }, + { "tag_id": 0, "post_id": 622 }, + { "tag_id": 0, "post_id": 623 }, + { "tag_id": 0, "post_id": 624 }, + { "tag_id": 0, "post_id": 626 }, + { "tag_id": 0, "post_id": 627 }, + { "tag_id": 0, "post_id": 18 }, + { "tag_id": 0, "post_id": 60 }, + { "tag_id": 0, "post_id": 62 }, + { "tag_id": 0, "post_id": 64 }, + { "tag_id": 0, "post_id": 67 }, + { "tag_id": 0, "post_id": 73 }, + { "tag_id": 40, "post_id": 77 }, + { "tag_id": 264, "post_id": 77 }, + { "tag_id": 0, "post_id": 77 }, + { "tag_id": 0, "post_id": 78 }, + { "tag_id": 0, "post_id": 81 }, + { "tag_id": 0, "post_id": 83 }, + { "tag_id": 0, "post_id": 84 }, + { "tag_id": 0, "post_id": 86 }, + { "tag_id": 0, "post_id": 87 }, + { "tag_id": 0, "post_id": 104 }, + { "tag_id": 0, "post_id": 106 }, + { "tag_id": 0, "post_id": 115 }, + { "tag_id": 0, "post_id": 116 }, + { "tag_id": 0, "post_id": 123 }, + { "tag_id": 0, "post_id": 128 }, + { "tag_id": 0, "post_id": 133 }, + { "tag_id": 265, "post_id": 156 }, + { "tag_id": 266, "post_id": 156 }, + { "tag_id": 267, "post_id": 156 }, + { "tag_id": 268, "post_id": 156 }, + { "tag_id": 0, "post_id": 156 }, + { "tag_id": 40, "post_id": 162 }, + { "tag_id": 269, "post_id": 162 }, + { "tag_id": 40, "post_id": 162 }, + { "tag_id": 0, "post_id": 162 }, + { "tag_id": 270, "post_id": 163 }, + { "tag_id": 2, "post_id": 163 }, + { "tag_id": 271, "post_id": 163 }, + { "tag_id": 272, "post_id": 163 }, + { "tag_id": 273, "post_id": 163 }, + { "tag_id": 274, "post_id": 163 }, + { "tag_id": 0, "post_id": 163 }, + { "tag_id": 275, "post_id": 166 }, + { "tag_id": 276, "post_id": 166 }, + { "tag_id": 0, "post_id": 166 }, + { "tag_id": 52, "post_id": 172 }, + { "tag_id": 163, "post_id": 172 }, + { "tag_id": 277, "post_id": 172 }, + { "tag_id": 56, "post_id": 172 }, + { "tag_id": 278, "post_id": 172 }, + { "tag_id": 0, "post_id": 172 }, + { "tag_id": 279, "post_id": 173 }, + { "tag_id": 280, "post_id": 173 }, + { "tag_id": 281, "post_id": 173 }, + { "tag_id": 282, "post_id": 173 }, + { "tag_id": 0, "post_id": 173 }, + { "tag_id": 283, "post_id": 175 }, + { "tag_id": 284, "post_id": 175 }, + { "tag_id": 39, "post_id": 175 }, + { "tag_id": 285, "post_id": 175 }, + { "tag_id": 286, "post_id": 175 }, + { "tag_id": 0, "post_id": 175 }, + { "tag_id": 287, "post_id": 181 }, + { "tag_id": 288, "post_id": 181 }, + { "tag_id": 289, "post_id": 181 }, + { "tag_id": 290, "post_id": 181 }, + { "tag_id": 14, "post_id": 181 }, + { "tag_id": 291, "post_id": 181 }, + { "tag_id": 0, "post_id": 181 }, + { "tag_id": 270, "post_id": 183 }, + { "tag_id": 2, "post_id": 183 }, + { "tag_id": 292, "post_id": 183 }, + { "tag_id": 293, "post_id": 183 }, + { "tag_id": 0, "post_id": 183 }, + { "tag_id": 0, "post_id": 186 }, + { "tag_id": 294, "post_id": 186 }, + { "tag_id": 39, "post_id": 186 }, + { "tag_id": 295, "post_id": 186 }, + { "tag_id": 107, "post_id": 186 }, + { "tag_id": 296, "post_id": 186 }, + { "tag_id": 0, "post_id": 186 }, + { "tag_id": 297, "post_id": 196 }, + { "tag_id": 165, "post_id": 196 }, + { "tag_id": 298, "post_id": 196 }, + { "tag_id": 0, "post_id": 196 }, + { "tag_id": 0, "post_id": 198 }, + { "tag_id": 299, "post_id": 198 }, + { "tag_id": 300, "post_id": 198 }, + { "tag_id": 301, "post_id": 198 }, + { "tag_id": 0, "post_id": 198 }, + { "tag_id": 302, "post_id": 200 }, + { "tag_id": 303, "post_id": 200 }, + { "tag_id": 286, "post_id": 200 }, + { "tag_id": 304, "post_id": 200 }, + { "tag_id": 0, "post_id": 200 }, + { "tag_id": 305, "post_id": 201 }, + { "tag_id": 306, "post_id": 201 }, + { "tag_id": 307, "post_id": 201 }, + { "tag_id": 308, "post_id": 201 }, + { "tag_id": 107, "post_id": 201 }, + { "tag_id": 0, "post_id": 201 }, + { "tag_id": 0, "post_id": 204 }, + { "tag_id": 297, "post_id": 213 }, + { "tag_id": 309, "post_id": 213 }, + { "tag_id": 298, "post_id": 213 }, + { "tag_id": 14, "post_id": 213 }, + { "tag_id": 0, "post_id": 213 }, + { "tag_id": 90, "post_id": 219 }, + { "tag_id": 310, "post_id": 219 }, + { "tag_id": 311, "post_id": 219 }, + { "tag_id": 39, "post_id": 219 }, + { "tag_id": 0, "post_id": 219 }, + { "tag_id": 165, "post_id": 222 }, + { "tag_id": 312, "post_id": 222 }, + { "tag_id": 104, "post_id": 222 }, + { "tag_id": 0, "post_id": 222 }, + { "tag_id": 40, "post_id": 231 }, + { "tag_id": 313, "post_id": 231 }, + { "tag_id": 296, "post_id": 231 }, + { "tag_id": 0, "post_id": 231 }, + { "tag_id": 14, "post_id": 249 }, + { "tag_id": 270, "post_id": 249 }, + { "tag_id": 314, "post_id": 249 }, + { "tag_id": 315, "post_id": 249 }, + { "tag_id": 0, "post_id": 249 }, + { "tag_id": 296, "post_id": 255 }, + { "tag_id": 39, "post_id": 255 }, + { "tag_id": 40, "post_id": 255 }, + { "tag_id": 316, "post_id": 255 }, + { "tag_id": 317, "post_id": 255 }, + { "tag_id": 0, "post_id": 255 }, + { "tag_id": 318, "post_id": 256 }, + { "tag_id": 315, "post_id": 256 }, + { "tag_id": 319, "post_id": 256 }, + { "tag_id": 320, "post_id": 256 }, + { "tag_id": 89, "post_id": 256 }, + { "tag_id": 0, "post_id": 256 }, + { "tag_id": 321, "post_id": 258 }, + { "tag_id": 322, "post_id": 258 }, + { "tag_id": 0, "post_id": 258 }, + { "tag_id": 323, "post_id": 262 }, + { "tag_id": 324, "post_id": 262 }, + { "tag_id": 295, "post_id": 262 }, + { "tag_id": 325, "post_id": 262 }, + { "tag_id": 326, "post_id": 262 }, + { "tag_id": 0, "post_id": 262 }, + { "tag_id": 69, "post_id": 278 }, + { "tag_id": 107, "post_id": 278 }, + { "tag_id": 0, "post_id": 278 }, + { "tag_id": 327, "post_id": 285 }, + { "tag_id": 328, "post_id": 285 }, + { "tag_id": 329, "post_id": 285 }, + { "tag_id": 0, "post_id": 285 }, + { "tag_id": 0, "post_id": 289 }, + { "tag_id": 330, "post_id": 289 }, + { "tag_id": 331, "post_id": 289 }, + { "tag_id": 332, "post_id": 289 }, + { "tag_id": 333, "post_id": 289 }, + { "tag_id": 0, "post_id": 289 }, + { "tag_id": 14, "post_id": 294 }, + { "tag_id": 334, "post_id": 294 }, + { "tag_id": 335, "post_id": 294 }, + { "tag_id": 0, "post_id": 294 }, + { "tag_id": 336, "post_id": 296 }, + { "tag_id": 337, "post_id": 296 }, + { "tag_id": 128, "post_id": 296 }, + { "tag_id": 0, "post_id": 296 }, + { "tag_id": 14, "post_id": 298 }, + { "tag_id": 334, "post_id": 298 }, + { "tag_id": 335, "post_id": 298 }, + { "tag_id": 0, "post_id": 298 }, + { "tag_id": 90, "post_id": 304 }, + { "tag_id": 338, "post_id": 304 }, + { "tag_id": 339, "post_id": 304 }, + { "tag_id": 0, "post_id": 304 }, + { "tag_id": 334, "post_id": 327 }, + { "tag_id": 14, "post_id": 327 }, + { "tag_id": 340, "post_id": 327 }, + { "tag_id": 2, "post_id": 327 }, + { "tag_id": 0, "post_id": 327 }, + { "tag_id": 341, "post_id": 335 }, + { "tag_id": 342, "post_id": 335 }, + { "tag_id": 343, "post_id": 335 }, + { "tag_id": 344, "post_id": 335 }, + { "tag_id": 345, "post_id": 335 }, + { "tag_id": 334, "post_id": 335 }, + { "tag_id": 0, "post_id": 335 }, + { "tag_id": 346, "post_id": 342 }, + { "tag_id": 347, "post_id": 342 }, + { "tag_id": 61, "post_id": 342 }, + { "tag_id": 348, "post_id": 342 }, + { "tag_id": 0, "post_id": 342 }, + { "tag_id": 349, "post_id": 343 }, + { "tag_id": 0, "post_id": 343 }, + { "tag_id": 0, "post_id": 343 }, + { "tag_id": 0, "post_id": 343 }, + { "tag_id": 270, "post_id": 364 }, + { "tag_id": 350, "post_id": 364 }, + { "tag_id": 351, "post_id": 364 }, + { "tag_id": 0, "post_id": 364 }, + { "tag_id": 89, "post_id": 369 }, + { "tag_id": 14, "post_id": 369 }, + { "tag_id": 352, "post_id": 369 }, + { "tag_id": 270, "post_id": 369 }, + { "tag_id": 278, "post_id": 369 }, + { "tag_id": 0, "post_id": 369 }, + { "tag_id": 334, "post_id": 372 }, + { "tag_id": 323, "post_id": 372 }, + { "tag_id": 353, "post_id": 372 }, + { "tag_id": 354, "post_id": 372 }, + { "tag_id": 0, "post_id": 372 }, + { "tag_id": 334, "post_id": 375 }, + { "tag_id": 355, "post_id": 375 }, + { "tag_id": 356, "post_id": 375 }, + { "tag_id": 0, "post_id": 375 }, + { "tag_id": 357, "post_id": 380 }, + { "tag_id": 358, "post_id": 380 }, + { "tag_id": 359, "post_id": 380 }, + { "tag_id": 325, "post_id": 380 }, + { "tag_id": 0, "post_id": 380 }, + { "tag_id": 279, "post_id": 389 }, + { "tag_id": 360, "post_id": 389 }, + { "tag_id": 361, "post_id": 389 }, + { "tag_id": 0, "post_id": 389 }, + { "tag_id": 0, "post_id": 393 }, + { "tag_id": 270, "post_id": 413 }, + { "tag_id": 362, "post_id": 413 }, + { "tag_id": 0, "post_id": 413 }, + { "tag_id": 0, "post_id": 427 }, + { "tag_id": 363, "post_id": 459 }, + { "tag_id": 364, "post_id": 459 }, + { "tag_id": 365, "post_id": 459 }, + { "tag_id": 366, "post_id": 459 }, + { "tag_id": 367, "post_id": 459 }, + { "tag_id": 363, "post_id": 459 }, + { "tag_id": 364, "post_id": 459 }, + { "tag_id": 365, "post_id": 459 }, + { "tag_id": 366, "post_id": 459 }, + { "tag_id": 367, "post_id": 459 }, + { "tag_id": 0, "post_id": 459 }, + { "tag_id": 368, "post_id": 459 }, + { "tag_id": 369, "post_id": 459 }, + { "tag_id": 370, "post_id": 459 }, + { "tag_id": 0, "post_id": 459 }, + { "tag_id": 371, "post_id": 462 }, + { "tag_id": 0, "post_id": 462 }, + { "tag_id": 275, "post_id": 462 }, + { "tag_id": 372, "post_id": 462 }, + { "tag_id": 0, "post_id": 462 }, + { "tag_id": 373, "post_id": 483 }, + { "tag_id": 334, "post_id": 483 }, + { "tag_id": 354, "post_id": 483 }, + { "tag_id": 0, "post_id": 483 }, + { "tag_id": 0, "post_id": 484 }, + { "tag_id": 179, "post_id": 484 }, + { "tag_id": 374, "post_id": 484 }, + { "tag_id": 0, "post_id": 484 }, + { "tag_id": 375, "post_id": 504 }, + { "tag_id": 376, "post_id": 504 }, + { "tag_id": 377, "post_id": 504 }, + { "tag_id": 279, "post_id": 504 }, + { "tag_id": 0, "post_id": 504 }, + { "tag_id": 378, "post_id": 507 }, + { "tag_id": 379, "post_id": 507 }, + { "tag_id": 104, "post_id": 507 }, + { "tag_id": 0, "post_id": 507 }, + { "tag_id": 317, "post_id": 510 }, + { "tag_id": 380, "post_id": 510 }, + { "tag_id": 377, "post_id": 510 }, + { "tag_id": 0, "post_id": 510 }, + { "tag_id": 381, "post_id": 531 }, + { "tag_id": 382, "post_id": 531 }, + { "tag_id": 383, "post_id": 531 }, + { "tag_id": 0, "post_id": 531 }, + { "tag_id": 0, "post_id": 533 }, + { "tag_id": 144, "post_id": 539 }, + { "tag_id": 384, "post_id": 539 }, + { "tag_id": 385, "post_id": 539 }, + { "tag_id": 386, "post_id": 539 }, + { "tag_id": 0, "post_id": 539 }, + { "tag_id": 14, "post_id": 548 }, + { "tag_id": 387, "post_id": 548 }, + { "tag_id": 388, "post_id": 548 }, + { "tag_id": 334, "post_id": 548 }, + { "tag_id": 389, "post_id": 548 }, + { "tag_id": 0, "post_id": 548 }, + { "tag_id": 0, "post_id": 560 }, + { "tag_id": 390, "post_id": 560 }, + { "tag_id": 391, "post_id": 560 }, + { "tag_id": 0, "post_id": 560 }, + { "tag_id": 392, "post_id": 561 }, + { "tag_id": 334, "post_id": 561 }, + { "tag_id": 393, "post_id": 561 }, + { "tag_id": 0, "post_id": 561 }, + { "tag_id": 394, "post_id": 566 }, + { "tag_id": 270, "post_id": 566 }, + { "tag_id": 0, "post_id": 566 }, + { "tag_id": 165, "post_id": 567 }, + { "tag_id": 395, "post_id": 567 }, + { "tag_id": 0, "post_id": 567 }, + { "tag_id": 0, "post_id": 567 }, + { "tag_id": 106, "post_id": 584 }, + { "tag_id": 396, "post_id": 584 }, + { "tag_id": 0, "post_id": 584 }, + { "tag_id": 0, "post_id": 591 }, + { "tag_id": 0, "post_id": 591 }, + { "tag_id": 0, "post_id": 591 }, + { "tag_id": 397, "post_id": 598 }, + { "tag_id": 223, "post_id": 598 }, + { "tag_id": 398, "post_id": 598 }, + { "tag_id": 0, "post_id": 598 }, + { "tag_id": 90, "post_id": 600 }, + { "tag_id": 399, "post_id": 600 }, + { "tag_id": 400, "post_id": 600 }, + { "tag_id": 0, "post_id": 600 }, + { "tag_id": 0, "post_id": 19 }, + { "tag_id": 401, "post_id": 29 }, + { "tag_id": 401, "post_id": 56 }, + { "tag_id": 401, "post_id": 70 }, + { "tag_id": 401, "post_id": 71 }, + { "tag_id": 401, "post_id": 79 }, + { "tag_id": 401, "post_id": 97 }, + { "tag_id": 401, "post_id": 101 }, + { "tag_id": 401, "post_id": 102 }, + { "tag_id": 401, "post_id": 105 }, + { "tag_id": 401, "post_id": 110 }, + { "tag_id": 401, "post_id": 117 }, + { "tag_id": 401, "post_id": 130 }, + { "tag_id": 402, "post_id": 135 }, + { "tag_id": 403, "post_id": 135 }, + { "tag_id": 404, "post_id": 135 }, + { "tag_id": 405, "post_id": 135 }, + { "tag_id": 401, "post_id": 135 }, + { "tag_id": 406, "post_id": 143 }, + { "tag_id": 407, "post_id": 143 }, + { "tag_id": 405, "post_id": 143 }, + { "tag_id": 408, "post_id": 143 }, + { "tag_id": 409, "post_id": 143 }, + { "tag_id": 401, "post_id": 143 }, + { "tag_id": 405, "post_id": 158 }, + { "tag_id": 410, "post_id": 158 }, + { "tag_id": 411, "post_id": 158 }, + { "tag_id": 401, "post_id": 158 }, + { "tag_id": 412, "post_id": 165 }, + { "tag_id": 405, "post_id": 165 }, + { "tag_id": 413, "post_id": 165 }, + { "tag_id": 414, "post_id": 165 }, + { "tag_id": 415, "post_id": 165 }, + { "tag_id": 416, "post_id": 165 }, + { "tag_id": 401, "post_id": 165 }, + { "tag_id": 417, "post_id": 176 }, + { "tag_id": 19, "post_id": 176 }, + { "tag_id": 418, "post_id": 176 }, + { "tag_id": 419, "post_id": 176 }, + { "tag_id": 420, "post_id": 176 }, + { "tag_id": 57, "post_id": 176 }, + { "tag_id": 401, "post_id": 176 }, + { "tag_id": 421, "post_id": 177 }, + { "tag_id": 422, "post_id": 177 }, + { "tag_id": 278, "post_id": 177 }, + { "tag_id": 401, "post_id": 177 }, + { "tag_id": 423, "post_id": 179 }, + { "tag_id": 283, "post_id": 179 }, + { "tag_id": 401, "post_id": 179 }, + { "tag_id": 403, "post_id": 180 }, + { "tag_id": 424, "post_id": 180 }, + { "tag_id": 425, "post_id": 180 }, + { "tag_id": 405, "post_id": 180 }, + { "tag_id": 412, "post_id": 180 }, + { "tag_id": 401, "post_id": 180 }, + { "tag_id": 426, "post_id": 190 }, + { "tag_id": 427, "post_id": 190 }, + { "tag_id": 428, "post_id": 190 }, + { "tag_id": 429, "post_id": 190 }, + { "tag_id": 430, "post_id": 190 }, + { "tag_id": 401, "post_id": 190 }, + { "tag_id": 412, "post_id": 191 }, + { "tag_id": 431, "post_id": 191 }, + { "tag_id": 432, "post_id": 191 }, + { "tag_id": 401, "post_id": 191 }, + { "tag_id": 405, "post_id": 205 }, + { "tag_id": 433, "post_id": 205 }, + { "tag_id": 434, "post_id": 205 }, + { "tag_id": 435, "post_id": 205 }, + { "tag_id": 401, "post_id": 205 }, + { "tag_id": 436, "post_id": 229 }, + { "tag_id": 437, "post_id": 229 }, + { "tag_id": 401, "post_id": 229 }, + { "tag_id": 90, "post_id": 232 }, + { "tag_id": 336, "post_id": 232 }, + { "tag_id": 438, "post_id": 232 }, + { "tag_id": 439, "post_id": 232 }, + { "tag_id": 401, "post_id": 232 }, + { "tag_id": 63, "post_id": 242 }, + { "tag_id": 440, "post_id": 242 }, + { "tag_id": 0, "post_id": 242 }, + { "tag_id": 296, "post_id": 242 }, + { "tag_id": 401, "post_id": 242 }, + { "tag_id": 272, "post_id": 243 }, + { "tag_id": 441, "post_id": 243 }, + { "tag_id": 442, "post_id": 243 }, + { "tag_id": 443, "post_id": 243 }, + { "tag_id": 401, "post_id": 243 }, + { "tag_id": 444, "post_id": 244 }, + { "tag_id": 443, "post_id": 244 }, + { "tag_id": 445, "post_id": 244 }, + { "tag_id": 401, "post_id": 244 }, + { "tag_id": 446, "post_id": 250 }, + { "tag_id": 447, "post_id": 250 }, + { "tag_id": 448, "post_id": 250 }, + { "tag_id": 401, "post_id": 250 }, + { "tag_id": 412, "post_id": 251 }, + { "tag_id": 405, "post_id": 251 }, + { "tag_id": 449, "post_id": 251 }, + { "tag_id": 450, "post_id": 251 }, + { "tag_id": 401, "post_id": 251 }, + { "tag_id": 451, "post_id": 252 }, + { "tag_id": 452, "post_id": 252 }, + { "tag_id": 453, "post_id": 252 }, + { "tag_id": 89, "post_id": 252 }, + { "tag_id": 401, "post_id": 252 }, + { "tag_id": 89, "post_id": 268 }, + { "tag_id": 336, "post_id": 268 }, + { "tag_id": 428, "post_id": 268 }, + { "tag_id": 454, "post_id": 268 }, + { "tag_id": 401, "post_id": 268 }, + { "tag_id": 441, "post_id": 286 }, + { "tag_id": 0, "post_id": 286 }, + { "tag_id": 437, "post_id": 286 }, + { "tag_id": 401, "post_id": 286 }, + { "tag_id": 90, "post_id": 308 }, + { "tag_id": 412, "post_id": 308 }, + { "tag_id": 455, "post_id": 308 }, + { "tag_id": 401, "post_id": 308 }, + { "tag_id": 405, "post_id": 312 }, + { "tag_id": 431, "post_id": 312 }, + { "tag_id": 401, "post_id": 312 }, + { "tag_id": 90, "post_id": 313 }, + { "tag_id": 405, "post_id": 313 }, + { "tag_id": 456, "post_id": 313 }, + { "tag_id": 401, "post_id": 313 }, + { "tag_id": 457, "post_id": 315 }, + { "tag_id": 458, "post_id": 315 }, + { "tag_id": 401, "post_id": 315 }, + { "tag_id": 459, "post_id": 328 }, + { "tag_id": 460, "post_id": 328 }, + { "tag_id": 401, "post_id": 328 }, + { "tag_id": 461, "post_id": 338 }, + { "tag_id": 451, "post_id": 338 }, + { "tag_id": 462, "post_id": 338 }, + { "tag_id": 401, "post_id": 338 }, + { "tag_id": 452, "post_id": 349 }, + { "tag_id": 451, "post_id": 349 }, + { "tag_id": 89, "post_id": 349 }, + { "tag_id": 463, "post_id": 349 }, + { "tag_id": 401, "post_id": 349 }, + { "tag_id": 412, "post_id": 351 }, + { "tag_id": 90, "post_id": 351 }, + { "tag_id": 464, "post_id": 351 }, + { "tag_id": 401, "post_id": 351 }, + { "tag_id": 465, "post_id": 376 }, + { "tag_id": 0, "post_id": 376 }, + { "tag_id": 401, "post_id": 376 }, + { "tag_id": 90, "post_id": 377 }, + { "tag_id": 412, "post_id": 377 }, + { "tag_id": 466, "post_id": 377 }, + { "tag_id": 89, "post_id": 377 }, + { "tag_id": 464, "post_id": 377 }, + { "tag_id": 401, "post_id": 377 }, + { "tag_id": 439, "post_id": 395 }, + { "tag_id": 90, "post_id": 395 }, + { "tag_id": 467, "post_id": 395 }, + { "tag_id": 401, "post_id": 395 }, + { "tag_id": 468, "post_id": 397 }, + { "tag_id": 469, "post_id": 397 }, + { "tag_id": 401, "post_id": 397 }, + { "tag_id": 437, "post_id": 398 }, + { "tag_id": 470, "post_id": 398 }, + { "tag_id": 401, "post_id": 398 }, + { "tag_id": 90, "post_id": 401 }, + { "tag_id": 0, "post_id": 401 }, + { "tag_id": 401, "post_id": 401 }, + { "tag_id": 89, "post_id": 412 }, + { "tag_id": 14, "post_id": 412 }, + { "tag_id": 471, "post_id": 412 }, + { "tag_id": 401, "post_id": 412 }, + { "tag_id": 90, "post_id": 439 }, + { "tag_id": 439, "post_id": 439 }, + { "tag_id": 472, "post_id": 439 }, + { "tag_id": 401, "post_id": 439 }, + { "tag_id": 473, "post_id": 499 }, + { "tag_id": 474, "post_id": 499 }, + { "tag_id": 401, "post_id": 499 }, + { "tag_id": 443, "post_id": 511 }, + { "tag_id": 475, "post_id": 511 }, + { "tag_id": 476, "post_id": 511 }, + { "tag_id": 401, "post_id": 511 }, + { "tag_id": 477, "post_id": 513 }, + { "tag_id": 90, "post_id": 513 }, + { "tag_id": 478, "post_id": 513 }, + { "tag_id": 0, "post_id": 513 }, + { "tag_id": 479, "post_id": 513 }, + { "tag_id": 401, "post_id": 513 }, + { "tag_id": 480, "post_id": 562 }, + { "tag_id": 481, "post_id": 562 }, + { "tag_id": 482, "post_id": 562 }, + { "tag_id": 401, "post_id": 562 }, + { "tag_id": 483, "post_id": 564 }, + { "tag_id": 484, "post_id": 564 }, + { "tag_id": 485, "post_id": 564 }, + { "tag_id": 401, "post_id": 564 }, + { "tag_id": 486, "post_id": 574 }, + { "tag_id": 487, "post_id": 574 }, + { "tag_id": 270, "post_id": 574 }, + { "tag_id": 401, "post_id": 574 }, + { "tag_id": 401, "post_id": 22 }, + { "tag_id": 488, "post_id": 63 }, + { "tag_id": 488, "post_id": 66 }, + { "tag_id": 488, "post_id": 68 }, + { "tag_id": 488, "post_id": 69 }, + { "tag_id": 488, "post_id": 82 }, + { "tag_id": 488, "post_id": 89 }, + { "tag_id": 488, "post_id": 91 }, + { "tag_id": 488, "post_id": 92 }, + { "tag_id": 488, "post_id": 93 }, + { "tag_id": 488, "post_id": 94 }, + { "tag_id": 488, "post_id": 95 }, + { "tag_id": 488, "post_id": 98 }, + { "tag_id": 488, "post_id": 99 }, + { "tag_id": 488, "post_id": 100 }, + { "tag_id": 488, "post_id": 107 }, + { "tag_id": 488, "post_id": 108 }, + { "tag_id": 488, "post_id": 113 }, + { "tag_id": 488, "post_id": 119 }, + { "tag_id": 488, "post_id": 121 }, + { "tag_id": 488, "post_id": 122 }, + { "tag_id": 488, "post_id": 125 }, + { "tag_id": 488, "post_id": 126 }, + { "tag_id": 488, "post_id": 127 }, + { "tag_id": 488, "post_id": 132 }, + { "tag_id": 489, "post_id": 136 }, + { "tag_id": 490, "post_id": 136 }, + { "tag_id": 84, "post_id": 136 }, + { "tag_id": 15, "post_id": 136 }, + { "tag_id": 63, "post_id": 136 }, + { "tag_id": 0, "post_id": 136 }, + { "tag_id": 491, "post_id": 136 }, + { "tag_id": 488, "post_id": 136 }, + { "tag_id": 317, "post_id": 137 }, + { "tag_id": 492, "post_id": 137 }, + { "tag_id": 493, "post_id": 137 }, + { "tag_id": 494, "post_id": 137 }, + { "tag_id": 488, "post_id": 137 }, + { "tag_id": 495, "post_id": 138 }, + { "tag_id": 496, "post_id": 138 }, + { "tag_id": 497, "post_id": 138 }, + { "tag_id": 405, "post_id": 138 }, + { "tag_id": 498, "post_id": 138 }, + { "tag_id": 488, "post_id": 138 }, + { "tag_id": 110, "post_id": 144 }, + { "tag_id": 499, "post_id": 144 }, + { "tag_id": 2, "post_id": 144 }, + { "tag_id": 488, "post_id": 144 }, + { "tag_id": 500, "post_id": 145 }, + { "tag_id": 501, "post_id": 145 }, + { "tag_id": 496, "post_id": 145 }, + { "tag_id": 502, "post_id": 145 }, + { "tag_id": 503, "post_id": 145 }, + { "tag_id": 488, "post_id": 145 }, + { "tag_id": 90, "post_id": 147 }, + { "tag_id": 504, "post_id": 147 }, + { "tag_id": 505, "post_id": 147 }, + { "tag_id": 488, "post_id": 147 }, + { "tag_id": 506, "post_id": 148 }, + { "tag_id": 507, "post_id": 148 }, + { "tag_id": 222, "post_id": 148 }, + { "tag_id": 508, "post_id": 148 }, + { "tag_id": 488, "post_id": 148 }, + { "tag_id": 509, "post_id": 157 }, + { "tag_id": 2, "post_id": 157 }, + { "tag_id": 510, "post_id": 157 }, + { "tag_id": 511, "post_id": 157 }, + { "tag_id": 352, "post_id": 157 }, + { "tag_id": 512, "post_id": 157 }, + { "tag_id": 505, "post_id": 157 }, + { "tag_id": 488, "post_id": 157 }, + { "tag_id": 513, "post_id": 160 }, + { "tag_id": 514, "post_id": 160 }, + { "tag_id": 515, "post_id": 160 }, + { "tag_id": 516, "post_id": 160 }, + { "tag_id": 517, "post_id": 160 }, + { "tag_id": 518, "post_id": 160 }, + { "tag_id": 519, "post_id": 160 }, + { "tag_id": 520, "post_id": 160 }, + { "tag_id": 488, "post_id": 160 }, + { "tag_id": 52, "post_id": 161 }, + { "tag_id": 162, "post_id": 161 }, + { "tag_id": 521, "post_id": 161 }, + { "tag_id": 522, "post_id": 161 }, + { "tag_id": 34, "post_id": 161 }, + { "tag_id": 56, "post_id": 161 }, + { "tag_id": 488, "post_id": 161 }, + { "tag_id": 513, "post_id": 167 }, + { "tag_id": 505, "post_id": 167 }, + { "tag_id": 488, "post_id": 167 }, + { "tag_id": 89, "post_id": 169 }, + { "tag_id": 487, "post_id": 169 }, + { "tag_id": 0, "post_id": 169 }, + { "tag_id": 417, "post_id": 169 }, + { "tag_id": 488, "post_id": 169 }, + { "tag_id": 376, "post_id": 171 }, + { "tag_id": 523, "post_id": 171 }, + { "tag_id": 524, "post_id": 171 }, + { "tag_id": 525, "post_id": 171 }, + { "tag_id": 488, "post_id": 171 }, + { "tag_id": 526, "post_id": 178 }, + { "tag_id": 527, "post_id": 178 }, + { "tag_id": 528, "post_id": 178 }, + { "tag_id": 529, "post_id": 178 }, + { "tag_id": 530, "post_id": 178 }, + { "tag_id": 531, "post_id": 178 }, + { "tag_id": 488, "post_id": 178 }, + { "tag_id": 532, "post_id": 182 }, + { "tag_id": 533, "post_id": 182 }, + { "tag_id": 534, "post_id": 182 }, + { "tag_id": 535, "post_id": 182 }, + { "tag_id": 536, "post_id": 182 }, + { "tag_id": 454, "post_id": 182 }, + { "tag_id": 428, "post_id": 182 }, + { "tag_id": 488, "post_id": 182 }, + { "tag_id": 162, "post_id": 187 }, + { "tag_id": 52, "post_id": 187 }, + { "tag_id": 128, "post_id": 187 }, + { "tag_id": 56, "post_id": 187 }, + { "tag_id": 488, "post_id": 187 }, + { "tag_id": 90, "post_id": 188 }, + { "tag_id": 537, "post_id": 188 }, + { "tag_id": 89, "post_id": 188 }, + { "tag_id": 538, "post_id": 188 }, + { "tag_id": 488, "post_id": 188 }, + { "tag_id": 539, "post_id": 193 }, + { "tag_id": 488, "post_id": 193 }, + { "tag_id": 381, "post_id": 195 }, + { "tag_id": 382, "post_id": 195 }, + { "tag_id": 540, "post_id": 195 }, + { "tag_id": 541, "post_id": 195 }, + { "tag_id": 542, "post_id": 195 }, + { "tag_id": 107, "post_id": 195 }, + { "tag_id": 488, "post_id": 195 }, + { "tag_id": 494, "post_id": 197 }, + { "tag_id": 543, "post_id": 197 }, + { "tag_id": 317, "post_id": 197 }, + { "tag_id": 488, "post_id": 197 }, + { "tag_id": 544, "post_id": 199 }, + { "tag_id": 545, "post_id": 199 }, + { "tag_id": 546, "post_id": 199 }, + { "tag_id": 547, "post_id": 199 }, + { "tag_id": 548, "post_id": 199 }, + { "tag_id": 549, "post_id": 199 }, + { "tag_id": 311, "post_id": 199 }, + { "tag_id": 550, "post_id": 199 }, + { "tag_id": 488, "post_id": 199 }, + { "tag_id": 14, "post_id": 202 }, + { "tag_id": 319, "post_id": 202 }, + { "tag_id": 270, "post_id": 202 }, + { "tag_id": 315, "post_id": 202 }, + { "tag_id": 51, "post_id": 202 }, + { "tag_id": 509, "post_id": 202 }, + { "tag_id": 488, "post_id": 202 }, + { "tag_id": 551, "post_id": 203 }, + { "tag_id": 63, "post_id": 203 }, + { "tag_id": 552, "post_id": 203 }, + { "tag_id": 553, "post_id": 203 }, + { "tag_id": 554, "post_id": 203 }, + { "tag_id": 488, "post_id": 203 }, + { "tag_id": 270, "post_id": 206 }, + { "tag_id": 2, "post_id": 206 }, + { "tag_id": 555, "post_id": 206 }, + { "tag_id": 51, "post_id": 206 }, + { "tag_id": 505, "post_id": 206 }, + { "tag_id": 488, "post_id": 206 }, + { "tag_id": 71, "post_id": 207 }, + { "tag_id": 556, "post_id": 207 }, + { "tag_id": 84, "post_id": 207 }, + { "tag_id": 0, "post_id": 207 }, + { "tag_id": 63, "post_id": 207 }, + { "tag_id": 0, "post_id": 207 }, + { "tag_id": 557, "post_id": 207 }, + { "tag_id": 437, "post_id": 207 }, + { "tag_id": 488, "post_id": 207 }, + { "tag_id": 504, "post_id": 209 }, + { "tag_id": 63, "post_id": 209 }, + { "tag_id": 0, "post_id": 209 }, + { "tag_id": 488, "post_id": 209 }, + { "tag_id": 90, "post_id": 210 }, + { "tag_id": 558, "post_id": 210 }, + { "tag_id": 89, "post_id": 210 }, + { "tag_id": 504, "post_id": 210 }, + { "tag_id": 369, "post_id": 210 }, + { "tag_id": 488, "post_id": 210 }, + { "tag_id": 14, "post_id": 212 }, + { "tag_id": 70, "post_id": 212 }, + { "tag_id": 69, "post_id": 212 }, + { "tag_id": 88, "post_id": 212 }, + { "tag_id": 488, "post_id": 212 }, + { "tag_id": 559, "post_id": 214 }, + { "tag_id": 504, "post_id": 214 }, + { "tag_id": 90, "post_id": 214 }, + { "tag_id": 558, "post_id": 214 }, + { "tag_id": 437, "post_id": 214 }, + { "tag_id": 488, "post_id": 214 }, + { "tag_id": 90, "post_id": 215 }, + { "tag_id": 89, "post_id": 215 }, + { "tag_id": 558, "post_id": 215 }, + { "tag_id": 286, "post_id": 215 }, + { "tag_id": 488, "post_id": 215 }, + { "tag_id": 90, "post_id": 216 }, + { "tag_id": 558, "post_id": 216 }, + { "tag_id": 89, "post_id": 216 }, + { "tag_id": 504, "post_id": 216 }, + { "tag_id": 560, "post_id": 216 }, + { "tag_id": 516, "post_id": 216 }, + { "tag_id": 488, "post_id": 216 }, + { "tag_id": 14, "post_id": 220 }, + { "tag_id": 70, "post_id": 220 }, + { "tag_id": 69, "post_id": 220 }, + { "tag_id": 88, "post_id": 220 }, + { "tag_id": 561, "post_id": 220 }, + { "tag_id": 488, "post_id": 220 }, + { "tag_id": 504, "post_id": 221 }, + { "tag_id": 61, "post_id": 221 }, + { "tag_id": 562, "post_id": 221 }, + { "tag_id": 563, "post_id": 221 }, + { "tag_id": 488, "post_id": 221 }, + { "tag_id": 63, "post_id": 224 }, + { "tag_id": 125, "post_id": 224 }, + { "tag_id": 56, "post_id": 224 }, + { "tag_id": 20, "post_id": 224 }, + { "tag_id": 488, "post_id": 224 }, + { "tag_id": 505, "post_id": 225 }, + { "tag_id": 504, "post_id": 225 }, + { "tag_id": 90, "post_id": 225 }, + { "tag_id": 563, "post_id": 225 }, + { "tag_id": 488, "post_id": 225 }, + { "tag_id": 90, "post_id": 226 }, + { "tag_id": 564, "post_id": 226 }, + { "tag_id": 0, "post_id": 226 }, + { "tag_id": 488, "post_id": 226 }, + { "tag_id": 125, "post_id": 227 }, + { "tag_id": 63, "post_id": 227 }, + { "tag_id": 52, "post_id": 227 }, + { "tag_id": 565, "post_id": 227 }, + { "tag_id": 566, "post_id": 227 }, + { "tag_id": 56, "post_id": 227 }, + { "tag_id": 488, "post_id": 227 }, + { "tag_id": 272, "post_id": 230 }, + { "tag_id": 271, "post_id": 230 }, + { "tag_id": 454, "post_id": 230 }, + { "tag_id": 567, "post_id": 230 }, + { "tag_id": 488, "post_id": 230 }, + { "tag_id": 0, "post_id": 233 }, + { "tag_id": 63, "post_id": 233 }, + { "tag_id": 61, "post_id": 233 }, + { "tag_id": 568, "post_id": 233 }, + { "tag_id": 504, "post_id": 233 }, + { "tag_id": 488, "post_id": 233 }, + { "tag_id": 569, "post_id": 234 }, + { "tag_id": 570, "post_id": 234 }, + { "tag_id": 571, "post_id": 234 }, + { "tag_id": 417, "post_id": 234 }, + { "tag_id": 572, "post_id": 234 }, + { "tag_id": 488, "post_id": 234 }, + { "tag_id": 63, "post_id": 235 }, + { "tag_id": 0, "post_id": 235 }, + { "tag_id": 39, "post_id": 235 }, + { "tag_id": 504, "post_id": 235 }, + { "tag_id": 286, "post_id": 235 }, + { "tag_id": 488, "post_id": 235 }, + { "tag_id": 265, "post_id": 236 }, + { "tag_id": 0, "post_id": 236 }, + { "tag_id": 573, "post_id": 236 }, + { "tag_id": 574, "post_id": 236 }, + { "tag_id": 575, "post_id": 236 }, + { "tag_id": 576, "post_id": 236 }, + { "tag_id": 488, "post_id": 236 }, + { "tag_id": 577, "post_id": 238 }, + { "tag_id": 496, "post_id": 238 }, + { "tag_id": 14, "post_id": 238 }, + { "tag_id": 578, "post_id": 238 }, + { "tag_id": 89, "post_id": 238 }, + { "tag_id": 439, "post_id": 238 }, + { "tag_id": 488, "post_id": 238 }, + { "tag_id": 504, "post_id": 240 }, + { "tag_id": 283, "post_id": 240 }, + { "tag_id": 563, "post_id": 240 }, + { "tag_id": 14, "post_id": 240 }, + { "tag_id": 61, "post_id": 240 }, + { "tag_id": 488, "post_id": 240 }, + { "tag_id": 488, "post_id": 241 }, + { "tag_id": 14, "post_id": 246 }, + { "tag_id": 290, "post_id": 246 }, + { "tag_id": 579, "post_id": 246 }, + { "tag_id": 580, "post_id": 246 }, + { "tag_id": 488, "post_id": 246 }, + { "tag_id": 78, "post_id": 247 }, + { "tag_id": 57, "post_id": 247 }, + { "tag_id": 31, "post_id": 247 }, + { "tag_id": 28, "post_id": 247 }, + { "tag_id": 14, "post_id": 247 }, + { "tag_id": 265, "post_id": 247 }, + { "tag_id": 17, "post_id": 247 }, + { "tag_id": 581, "post_id": 247 }, + { "tag_id": 4, "post_id": 247 }, + { "tag_id": 488, "post_id": 247 }, + { "tag_id": 582, "post_id": 248 }, + { "tag_id": 583, "post_id": 248 }, + { "tag_id": 428, "post_id": 248 }, + { "tag_id": 439, "post_id": 248 }, + { "tag_id": 584, "post_id": 248 }, + { "tag_id": 585, "post_id": 248 }, + { "tag_id": 488, "post_id": 248 }, + { "tag_id": 57, "post_id": 257 }, + { "tag_id": 586, "post_id": 257 }, + { "tag_id": 509, "post_id": 257 }, + { "tag_id": 52, "post_id": 257 }, + { "tag_id": 510, "post_id": 257 }, + { "tag_id": 270, "post_id": 257 }, + { "tag_id": 352, "post_id": 257 }, + { "tag_id": 488, "post_id": 257 }, + { "tag_id": 526, "post_id": 259 }, + { "tag_id": 90, "post_id": 259 }, + { "tag_id": 336, "post_id": 259 }, + { "tag_id": 439, "post_id": 259 }, + { "tag_id": 488, "post_id": 259 }, + { "tag_id": 587, "post_id": 261 }, + { "tag_id": 0, "post_id": 261 }, + { "tag_id": 588, "post_id": 261 }, + { "tag_id": 488, "post_id": 261 }, + { "tag_id": 495, "post_id": 263 }, + { "tag_id": 270, "post_id": 263 }, + { "tag_id": 89, "post_id": 263 }, + { "tag_id": 279, "post_id": 263 }, + { "tag_id": 14, "post_id": 263 }, + { "tag_id": 563, "post_id": 263 }, + { "tag_id": 90, "post_id": 263 }, + { "tag_id": 283, "post_id": 263 }, + { "tag_id": 63, "post_id": 263 }, + { "tag_id": 488, "post_id": 263 }, + { "tag_id": 589, "post_id": 264 }, + { "tag_id": 89, "post_id": 264 }, + { "tag_id": 590, "post_id": 264 }, + { "tag_id": 90, "post_id": 264 }, + { "tag_id": 591, "post_id": 264 }, + { "tag_id": 488, "post_id": 264 }, + { "tag_id": 589, "post_id": 265 }, + { "tag_id": 439, "post_id": 265 }, + { "tag_id": 480, "post_id": 265 }, + { "tag_id": 488, "post_id": 265 }, + { "tag_id": 589, "post_id": 266 }, + { "tag_id": 270, "post_id": 266 }, + { "tag_id": 510, "post_id": 266 }, + { "tag_id": 569, "post_id": 266 }, + { "tag_id": 570, "post_id": 266 }, + { "tag_id": 488, "post_id": 266 }, + { "tag_id": 89, "post_id": 267 }, + { "tag_id": 336, "post_id": 267 }, + { "tag_id": 439, "post_id": 267 }, + { "tag_id": 496, "post_id": 267 }, + { "tag_id": 488, "post_id": 267 }, + { "tag_id": 63, "post_id": 269 }, + { "tag_id": 125, "post_id": 269 }, + { "tag_id": 56, "post_id": 269 }, + { "tag_id": 128, "post_id": 269 }, + { "tag_id": 488, "post_id": 269 }, + { "tag_id": 14, "post_id": 271 }, + { "tag_id": 592, "post_id": 271 }, + { "tag_id": 128, "post_id": 271 }, + { "tag_id": 593, "post_id": 271 }, + { "tag_id": 488, "post_id": 271 }, + { "tag_id": 56, "post_id": 273 }, + { "tag_id": 437, "post_id": 273 }, + { "tag_id": 52, "post_id": 273 }, + { "tag_id": 560, "post_id": 273 }, + { "tag_id": 126, "post_id": 273 }, + { "tag_id": 125, "post_id": 273 }, + { "tag_id": 488, "post_id": 273 }, + { "tag_id": 594, "post_id": 277 }, + { "tag_id": 56, "post_id": 277 }, + { "tag_id": 53, "post_id": 277 }, + { "tag_id": 52, "post_id": 277 }, + { "tag_id": 488, "post_id": 277 }, + { "tag_id": 22, "post_id": 281 }, + { "tag_id": 595, "post_id": 281 }, + { "tag_id": 596, "post_id": 281 }, + { "tag_id": 488, "post_id": 281 }, + { "tag_id": 89, "post_id": 282 }, + { "tag_id": 90, "post_id": 282 }, + { "tag_id": 597, "post_id": 282 }, + { "tag_id": 488, "post_id": 282 }, + { "tag_id": 446, "post_id": 284 }, + { "tag_id": 63, "post_id": 284 }, + { "tag_id": 598, "post_id": 284 }, + { "tag_id": 90, "post_id": 284 }, + { "tag_id": 488, "post_id": 284 }, + { "tag_id": 90, "post_id": 292 }, + { "tag_id": 597, "post_id": 292 }, + { "tag_id": 89, "post_id": 292 }, + { "tag_id": 128, "post_id": 292 }, + { "tag_id": 488, "post_id": 292 }, + { "tag_id": 334, "post_id": 295 }, + { "tag_id": 14, "post_id": 295 }, + { "tag_id": 335, "post_id": 295 }, + { "tag_id": 488, "post_id": 295 }, + { "tag_id": 599, "post_id": 297 }, + { "tag_id": 187, "post_id": 297 }, + { "tag_id": 3, "post_id": 297 }, + { "tag_id": 56, "post_id": 297 }, + { "tag_id": 488, "post_id": 297 }, + { "tag_id": 0, "post_id": 300 }, + { "tag_id": 462, "post_id": 300 }, + { "tag_id": 600, "post_id": 300 }, + { "tag_id": 488, "post_id": 300 }, + { "tag_id": 441, "post_id": 301 }, + { "tag_id": 437, "post_id": 301 }, + { "tag_id": 193, "post_id": 301 }, + { "tag_id": 601, "post_id": 301 }, + { "tag_id": 57, "post_id": 301 }, + { "tag_id": 488, "post_id": 301 }, + { "tag_id": 334, "post_id": 302 }, + { "tag_id": 14, "post_id": 302 }, + { "tag_id": 2, "post_id": 302 }, + { "tag_id": 488, "post_id": 302 }, + { "tag_id": 89, "post_id": 303 }, + { "tag_id": 90, "post_id": 303 }, + { "tag_id": 602, "post_id": 303 }, + { "tag_id": 488, "post_id": 303 }, + { "tag_id": 63, "post_id": 305 }, + { "tag_id": 603, "post_id": 305 }, + { "tag_id": 604, "post_id": 305 }, + { "tag_id": 488, "post_id": 305 }, + { "tag_id": 89, "post_id": 306 }, + { "tag_id": 605, "post_id": 306 }, + { "tag_id": 463, "post_id": 306 }, + { "tag_id": 39, "post_id": 306 }, + { "tag_id": 606, "post_id": 306 }, + { "tag_id": 607, "post_id": 306 }, + { "tag_id": 488, "post_id": 306 }, + { "tag_id": 179, "post_id": 307 }, + { "tag_id": 608, "post_id": 307 }, + { "tag_id": 488, "post_id": 307 }, + { "tag_id": 544, "post_id": 309 }, + { "tag_id": 550, "post_id": 309 }, + { "tag_id": 609, "post_id": 309 }, + { "tag_id": 488, "post_id": 309 }, + { "tag_id": 504, "post_id": 311 }, + { "tag_id": 273, "post_id": 311 }, + { "tag_id": 488, "post_id": 311 }, + { "tag_id": 89, "post_id": 314 }, + { "tag_id": 90, "post_id": 314 }, + { "tag_id": 610, "post_id": 314 }, + { "tag_id": 488, "post_id": 314 }, + { "tag_id": 611, "post_id": 316 }, + { "tag_id": 612, "post_id": 316 }, + { "tag_id": 613, "post_id": 316 }, + { "tag_id": 488, "post_id": 316 }, + { "tag_id": 334, "post_id": 317 }, + { "tag_id": 270, "post_id": 317 }, + { "tag_id": 14, "post_id": 317 }, + { "tag_id": 561, "post_id": 317 }, + { "tag_id": 488, "post_id": 317 }, + { "tag_id": 90, "post_id": 318 }, + { "tag_id": 614, "post_id": 318 }, + { "tag_id": 89, "post_id": 318 }, + { "tag_id": 615, "post_id": 318 }, + { "tag_id": 488, "post_id": 318 }, + { "tag_id": 599, "post_id": 319 }, + { "tag_id": 187, "post_id": 319 }, + { "tag_id": 488, "post_id": 319 }, + { "tag_id": 89, "post_id": 320 }, + { "tag_id": 0, "post_id": 320 }, + { "tag_id": 90, "post_id": 320 }, + { "tag_id": 488, "post_id": 320 }, + { "tag_id": 611, "post_id": 321 }, + { "tag_id": 612, "post_id": 321 }, + { "tag_id": 90, "post_id": 321 }, + { "tag_id": 464, "post_id": 321 }, + { "tag_id": 488, "post_id": 321 }, + { "tag_id": 89, "post_id": 322 }, + { "tag_id": 352, "post_id": 322 }, + { "tag_id": 463, "post_id": 322 }, + { "tag_id": 488, "post_id": 322 }, + { "tag_id": 334, "post_id": 323 }, + { "tag_id": 2, "post_id": 323 }, + { "tag_id": 14, "post_id": 323 }, + { "tag_id": 488, "post_id": 323 }, + { "tag_id": 89, "post_id": 324 }, + { "tag_id": 480, "post_id": 324 }, + { "tag_id": 90, "post_id": 324 }, + { "tag_id": 488, "post_id": 324 }, + { "tag_id": 488, "post_id": 325 }, + { "tag_id": 616, "post_id": 326 }, + { "tag_id": 617, "post_id": 326 }, + { "tag_id": 618, "post_id": 326 }, + { "tag_id": 619, "post_id": 326 }, + { "tag_id": 488, "post_id": 326 }, + { "tag_id": 63, "post_id": 329 }, + { "tag_id": 85, "post_id": 329 }, + { "tag_id": 620, "post_id": 329 }, + { "tag_id": 488, "post_id": 329 }, + { "tag_id": 480, "post_id": 331 }, + { "tag_id": 90, "post_id": 331 }, + { "tag_id": 0, "post_id": 331 }, + { "tag_id": 488, "post_id": 331 }, + { "tag_id": 488, "post_id": 332 }, + { "tag_id": 0, "post_id": 333 }, + { "tag_id": 621, "post_id": 333 }, + { "tag_id": 622, "post_id": 333 }, + { "tag_id": 623, "post_id": 333 }, + { "tag_id": 624, "post_id": 333 }, + { "tag_id": 488, "post_id": 333 }, + { "tag_id": 625, "post_id": 341 }, + { "tag_id": 626, "post_id": 341 }, + { "tag_id": 627, "post_id": 341 }, + { "tag_id": 180, "post_id": 341 }, + { "tag_id": 628, "post_id": 341 }, + { "tag_id": 629, "post_id": 341 }, + { "tag_id": 488, "post_id": 341 }, + { "tag_id": 334, "post_id": 345 }, + { "tag_id": 630, "post_id": 345 }, + { "tag_id": 631, "post_id": 345 }, + { "tag_id": 359, "post_id": 345 }, + { "tag_id": 632, "post_id": 345 }, + { "tag_id": 488, "post_id": 345 }, + { "tag_id": 563, "post_id": 347 }, + { "tag_id": 633, "post_id": 347 }, + { "tag_id": 90, "post_id": 347 }, + { "tag_id": 0, "post_id": 347 }, + { "tag_id": 504, "post_id": 347 }, + { "tag_id": 488, "post_id": 347 }, + { "tag_id": 634, "post_id": 352 }, + { "tag_id": 90, "post_id": 352 }, + { "tag_id": 504, "post_id": 352 }, + { "tag_id": 345, "post_id": 352 }, + { "tag_id": 334, "post_id": 352 }, + { "tag_id": 165, "post_id": 352 }, + { "tag_id": 488, "post_id": 352 }, + { "tag_id": 635, "post_id": 354 }, + { "tag_id": 636, "post_id": 354 }, + { "tag_id": 334, "post_id": 354 }, + { "tag_id": 488, "post_id": 354 }, + { "tag_id": 49, "post_id": 355 }, + { "tag_id": 89, "post_id": 355 }, + { "tag_id": 637, "post_id": 355 }, + { "tag_id": 488, "post_id": 355 }, + { "tag_id": 317, "post_id": 356 }, + { "tag_id": 185, "post_id": 356 }, + { "tag_id": 89, "post_id": 356 }, + { "tag_id": 90, "post_id": 356 }, + { "tag_id": 488, "post_id": 356 }, + { "tag_id": 0, "post_id": 357 }, + { "tag_id": 638, "post_id": 357 }, + { "tag_id": 39, "post_id": 357 }, + { "tag_id": 639, "post_id": 357 }, + { "tag_id": 488, "post_id": 357 }, + { "tag_id": 640, "post_id": 361 }, + { "tag_id": 641, "post_id": 361 }, + { "tag_id": 642, "post_id": 361 }, + { "tag_id": 643, "post_id": 361 }, + { "tag_id": 107, "post_id": 361 }, + { "tag_id": 488, "post_id": 361 }, + { "tag_id": 291, "post_id": 362 }, + { "tag_id": 265, "post_id": 362 }, + { "tag_id": 644, "post_id": 362 }, + { "tag_id": 645, "post_id": 362 }, + { "tag_id": 322, "post_id": 362 }, + { "tag_id": 488, "post_id": 362 }, + { "tag_id": 179, "post_id": 363 }, + { "tag_id": 84, "post_id": 363 }, + { "tag_id": 625, "post_id": 363 }, + { "tag_id": 488, "post_id": 363 }, + { "tag_id": 646, "post_id": 365 }, + { "tag_id": 480, "post_id": 365 }, + { "tag_id": 461, "post_id": 365 }, + { "tag_id": 437, "post_id": 365 }, + { "tag_id": 488, "post_id": 365 }, + { "tag_id": 63, "post_id": 366 }, + { "tag_id": 71, "post_id": 366 }, + { "tag_id": 647, "post_id": 366 }, + { "tag_id": 648, "post_id": 366 }, + { "tag_id": 649, "post_id": 366 }, + { "tag_id": 488, "post_id": 366 }, + { "tag_id": 646, "post_id": 367 }, + { "tag_id": 480, "post_id": 367 }, + { "tag_id": 437, "post_id": 367 }, + { "tag_id": 428, "post_id": 367 }, + { "tag_id": 462, "post_id": 367 }, + { "tag_id": 488, "post_id": 367 }, + { "tag_id": 461, "post_id": 373 }, + { "tag_id": 650, "post_id": 373 }, + { "tag_id": 0, "post_id": 373 }, + { "tag_id": 0, "post_id": 373 }, + { "tag_id": 488, "post_id": 373 }, + { "tag_id": 125, "post_id": 379 }, + { "tag_id": 63, "post_id": 379 }, + { "tag_id": 187, "post_id": 379 }, + { "tag_id": 488, "post_id": 379 }, + { "tag_id": 651, "post_id": 381 }, + { "tag_id": 652, "post_id": 381 }, + { "tag_id": 653, "post_id": 381 }, + { "tag_id": 654, "post_id": 381 }, + { "tag_id": 488, "post_id": 381 }, + { "tag_id": 655, "post_id": 382 }, + { "tag_id": 656, "post_id": 382 }, + { "tag_id": 488, "post_id": 382 }, + { "tag_id": 657, "post_id": 383 }, + { "tag_id": 658, "post_id": 383 }, + { "tag_id": 659, "post_id": 383 }, + { "tag_id": 488, "post_id": 383 }, + { "tag_id": 255, "post_id": 384 }, + { "tag_id": 521, "post_id": 384 }, + { "tag_id": 57, "post_id": 384 }, + { "tag_id": 488, "post_id": 384 }, + { "tag_id": 660, "post_id": 385 }, + { "tag_id": 661, "post_id": 385 }, + { "tag_id": 662, "post_id": 385 }, + { "tag_id": 488, "post_id": 385 }, + { "tag_id": 0, "post_id": 390 }, + { "tag_id": 663, "post_id": 390 }, + { "tag_id": 437, "post_id": 390 }, + { "tag_id": 488, "post_id": 390 }, + { "tag_id": 89, "post_id": 396 }, + { "tag_id": 90, "post_id": 396 }, + { "tag_id": 488, "post_id": 396 }, + { "tag_id": 461, "post_id": 399 }, + { "tag_id": 451, "post_id": 399 }, + { "tag_id": 462, "post_id": 399 }, + { "tag_id": 664, "post_id": 399 }, + { "tag_id": 488, "post_id": 399 }, + { "tag_id": 90, "post_id": 402 }, + { "tag_id": 480, "post_id": 402 }, + { "tag_id": 488, "post_id": 402 }, + { "tag_id": 665, "post_id": 403 }, + { "tag_id": 511, "post_id": 403 }, + { "tag_id": 550, "post_id": 403 }, + { "tag_id": 666, "post_id": 403 }, + { "tag_id": 488, "post_id": 403 }, + { "tag_id": 90, "post_id": 404 }, + { "tag_id": 488, "post_id": 404 }, + { "tag_id": 667, "post_id": 406 }, + { "tag_id": 541, "post_id": 406 }, + { "tag_id": 488, "post_id": 406 }, + { "tag_id": 406, "post_id": 409 }, + { "tag_id": 412, "post_id": 409 }, + { "tag_id": 31, "post_id": 409 }, + { "tag_id": 488, "post_id": 409 }, + { "tag_id": 504, "post_id": 415 }, + { "tag_id": 668, "post_id": 415 }, + { "tag_id": 488, "post_id": 415 }, + { "tag_id": 0, "post_id": 420 }, + { "tag_id": 56, "post_id": 420 }, + { "tag_id": 669, "post_id": 420 }, + { "tag_id": 560, "post_id": 420 }, + { "tag_id": 670, "post_id": 420 }, + { "tag_id": 125, "post_id": 420 }, + { "tag_id": 488, "post_id": 420 }, + { "tag_id": 56, "post_id": 428 }, + { "tag_id": 125, "post_id": 428 }, + { "tag_id": 291, "post_id": 428 }, + { "tag_id": 488, "post_id": 428 }, + { "tag_id": 270, "post_id": 430 }, + { "tag_id": 504, "post_id": 430 }, + { "tag_id": 671, "post_id": 430 }, + { "tag_id": 488, "post_id": 430 }, + { "tag_id": 504, "post_id": 432 }, + { "tag_id": 272, "post_id": 432 }, + { "tag_id": 412, "post_id": 432 }, + { "tag_id": 488, "post_id": 432 }, + { "tag_id": 152, "post_id": 438 }, + { "tag_id": 439, "post_id": 438 }, + { "tag_id": 84, "post_id": 438 }, + { "tag_id": 116, "post_id": 438 }, + { "tag_id": 90, "post_id": 438 }, + { "tag_id": 488, "post_id": 438 }, + { "tag_id": 478, "post_id": 441 }, + { "tag_id": 672, "post_id": 441 }, + { "tag_id": 488, "post_id": 441 }, + { "tag_id": 504, "post_id": 444 }, + { "tag_id": 673, "post_id": 444 }, + { "tag_id": 14, "post_id": 444 }, + { "tag_id": 488, "post_id": 444 }, + { "tag_id": 125, "post_id": 446 }, + { "tag_id": 3, "post_id": 446 }, + { "tag_id": 674, "post_id": 446 }, + { "tag_id": 193, "post_id": 446 }, + { "tag_id": 179, "post_id": 446 }, + { "tag_id": 488, "post_id": 446 }, + { "tag_id": 89, "post_id": 447 }, + { "tag_id": 675, "post_id": 447 }, + { "tag_id": 504, "post_id": 447 }, + { "tag_id": 488, "post_id": 447 }, + { "tag_id": 5, "post_id": 448 }, + { "tag_id": 12, "post_id": 448 }, + { "tag_id": 208, "post_id": 448 }, + { "tag_id": 0, "post_id": 448 }, + { "tag_id": 17, "post_id": 448 }, + { "tag_id": 488, "post_id": 448 }, + { "tag_id": 676, "post_id": 450 }, + { "tag_id": 677, "post_id": 450 }, + { "tag_id": 678, "post_id": 450 }, + { "tag_id": 488, "post_id": 450 }, + { "tag_id": 76, "post_id": 451 }, + { "tag_id": 102, "post_id": 451 }, + { "tag_id": 488, "post_id": 451 }, + { "tag_id": 504, "post_id": 452 }, + { "tag_id": 673, "post_id": 452 }, + { "tag_id": 14, "post_id": 452 }, + { "tag_id": 488, "post_id": 452 }, + { "tag_id": 0, "post_id": 454 }, + { "tag_id": 0, "post_id": 454 }, + { "tag_id": 14, "post_id": 454 }, + { "tag_id": 679, "post_id": 454 }, + { "tag_id": 488, "post_id": 454 }, + { "tag_id": 0, "post_id": 457 }, + { "tag_id": 679, "post_id": 457 }, + { "tag_id": 680, "post_id": 457 }, + { "tag_id": 0, "post_id": 457 }, + { "tag_id": 14, "post_id": 457 }, + { "tag_id": 488, "post_id": 457 }, + { "tag_id": 681, "post_id": 461 }, + { "tag_id": 679, "post_id": 461 }, + { "tag_id": 673, "post_id": 461 }, + { "tag_id": 682, "post_id": 461 }, + { "tag_id": 14, "post_id": 461 }, + { "tag_id": 488, "post_id": 461 }, + { "tag_id": 683, "post_id": 463 }, + { "tag_id": 0, "post_id": 463 }, + { "tag_id": 684, "post_id": 463 }, + { "tag_id": 685, "post_id": 463 }, + { "tag_id": 488, "post_id": 463 }, + { "tag_id": 488, "post_id": 471 }, + { "tag_id": 488, "post_id": 472 }, + { "tag_id": 488, "post_id": 473 }, + { "tag_id": 488, "post_id": 475 }, + { "tag_id": 686, "post_id": 480 }, + { "tag_id": 277, "post_id": 480 }, + { "tag_id": 687, "post_id": 480 }, + { "tag_id": 488, "post_id": 480 }, + { "tag_id": 688, "post_id": 481 }, + { "tag_id": 199, "post_id": 481 }, + { "tag_id": 488, "post_id": 481 }, + { "tag_id": 673, "post_id": 486 }, + { "tag_id": 0, "post_id": 486 }, + { "tag_id": 679, "post_id": 486 }, + { "tag_id": 488, "post_id": 486 }, + { "tag_id": 673, "post_id": 491 }, + { "tag_id": 689, "post_id": 491 }, + { "tag_id": 0, "post_id": 491 }, + { "tag_id": 690, "post_id": 491 }, + { "tag_id": 488, "post_id": 491 }, + { "tag_id": 691, "post_id": 493 }, + { "tag_id": 692, "post_id": 493 }, + { "tag_id": 693, "post_id": 493 }, + { "tag_id": 694, "post_id": 493 }, + { "tag_id": 695, "post_id": 493 }, + { "tag_id": 488, "post_id": 493 }, + { "tag_id": 696, "post_id": 505 }, + { "tag_id": 697, "post_id": 505 }, + { "tag_id": 0, "post_id": 505 }, + { "tag_id": 488, "post_id": 505 }, + { "tag_id": 599, "post_id": 506 }, + { "tag_id": 125, "post_id": 506 }, + { "tag_id": 698, "post_id": 506 }, + { "tag_id": 488, "post_id": 506 }, + { "tag_id": 56, "post_id": 508 }, + { "tag_id": 699, "post_id": 508 }, + { "tag_id": 488, "post_id": 508 }, + { "tag_id": 700, "post_id": 512 }, + { "tag_id": 673, "post_id": 512 }, + { "tag_id": 488, "post_id": 512 }, + { "tag_id": 557, "post_id": 514 }, + { "tag_id": 0, "post_id": 514 }, + { "tag_id": 701, "post_id": 514 }, + { "tag_id": 488, "post_id": 514 }, + { "tag_id": 667, "post_id": 515 }, + { "tag_id": 702, "post_id": 515 }, + { "tag_id": 0, "post_id": 515 }, + { "tag_id": 703, "post_id": 515 }, + { "tag_id": 0, "post_id": 515 }, + { "tag_id": 488, "post_id": 515 }, + { "tag_id": 700, "post_id": 516 }, + { "tag_id": 704, "post_id": 516 }, + { "tag_id": 705, "post_id": 516 }, + { "tag_id": 706, "post_id": 516 }, + { "tag_id": 488, "post_id": 516 }, + { "tag_id": 707, "post_id": 521 }, + { "tag_id": 0, "post_id": 521 }, + { "tag_id": 90, "post_id": 521 }, + { "tag_id": 478, "post_id": 521 }, + { "tag_id": 488, "post_id": 521 }, + { "tag_id": 152, "post_id": 522 }, + { "tag_id": 708, "post_id": 522 }, + { "tag_id": 709, "post_id": 522 }, + { "tag_id": 377, "post_id": 522 }, + { "tag_id": 710, "post_id": 522 }, + { "tag_id": 193, "post_id": 522 }, + { "tag_id": 488, "post_id": 522 }, + { "tag_id": 90, "post_id": 524 }, + { "tag_id": 711, "post_id": 524 }, + { "tag_id": 139, "post_id": 524 }, + { "tag_id": 0, "post_id": 524 }, + { "tag_id": 488, "post_id": 524 }, + { "tag_id": 671, "post_id": 535 }, + { "tag_id": 712, "post_id": 535 }, + { "tag_id": 713, "post_id": 535 }, + { "tag_id": 700, "post_id": 535 }, + { "tag_id": 488, "post_id": 535 }, + { "tag_id": 199, "post_id": 541 }, + { "tag_id": 89, "post_id": 541 }, + { "tag_id": 14, "post_id": 541 }, + { "tag_id": 488, "post_id": 541 }, + { "tag_id": 673, "post_id": 545 }, + { "tag_id": 714, "post_id": 545 }, + { "tag_id": 700, "post_id": 545 }, + { "tag_id": 0, "post_id": 545 }, + { "tag_id": 488, "post_id": 545 }, + { "tag_id": 478, "post_id": 554 }, + { "tag_id": 715, "post_id": 554 }, + { "tag_id": 709, "post_id": 554 }, + { "tag_id": 716, "post_id": 554 }, + { "tag_id": 717, "post_id": 554 }, + { "tag_id": 718, "post_id": 554 }, + { "tag_id": 488, "post_id": 554 }, + { "tag_id": 199, "post_id": 556 }, + { "tag_id": 90, "post_id": 556 }, + { "tag_id": 719, "post_id": 556 }, + { "tag_id": 720, "post_id": 556 }, + { "tag_id": 488, "post_id": 556 }, + { "tag_id": 90, "post_id": 568 }, + { "tag_id": 89, "post_id": 568 }, + { "tag_id": 705, "post_id": 568 }, + { "tag_id": 721, "post_id": 568 }, + { "tag_id": 488, "post_id": 568 }, + { "tag_id": 704, "post_id": 569 }, + { "tag_id": 700, "post_id": 569 }, + { "tag_id": 488, "post_id": 569 }, + { "tag_id": 90, "post_id": 575 }, + { "tag_id": 722, "post_id": 575 }, + { "tag_id": 488, "post_id": 575 }, + { "tag_id": 0, "post_id": 578 }, + { "tag_id": 90, "post_id": 578 }, + { "tag_id": 478, "post_id": 578 }, + { "tag_id": 488, "post_id": 578 }, + { "tag_id": 723, "post_id": 580 }, + { "tag_id": 724, "post_id": 580 }, + { "tag_id": 167, "post_id": 580 }, + { "tag_id": 725, "post_id": 580 }, + { "tag_id": 726, "post_id": 580 }, + { "tag_id": 727, "post_id": 580 }, + { "tag_id": 728, "post_id": 580 }, + { "tag_id": 89, "post_id": 580 }, + { "tag_id": 488, "post_id": 580 }, + { "tag_id": 461, "post_id": 582 }, + { "tag_id": 729, "post_id": 582 }, + { "tag_id": 0, "post_id": 582 }, + { "tag_id": 334, "post_id": 582 }, + { "tag_id": 488, "post_id": 582 }, + { "tag_id": 488, "post_id": 585 }, + { "tag_id": 488, "post_id": 601 }, + { "tag_id": 180, "post_id": 602 }, + { "tag_id": 257, "post_id": 602 }, + { "tag_id": 730, "post_id": 602 }, + { "tag_id": 731, "post_id": 602 }, + { "tag_id": 732, "post_id": 602 }, + { "tag_id": 733, "post_id": 602 }, + { "tag_id": 734, "post_id": 602 }, + { "tag_id": 488, "post_id": 602 }, + { "tag_id": 488, "post_id": 603 }, + { "tag_id": 488, "post_id": 604 }, + { "tag_id": 488, "post_id": 605 }, + { "tag_id": 488, "post_id": 606 }, + { "tag_id": 488, "post_id": 23 }, + { "tag_id": 488, "post_id": 25 }, + { "tag_id": 488, "post_id": 75 }, + { "tag_id": 488, "post_id": 152 }, + { "tag_id": 488, "post_id": 237 } + ], + "users": [ + { + "id": 3, + "name": "Publisher Publisher", + "email": "publisher@iteam.se" + }, + { + "id": 1086, + "name": "Erik Hjortsberg", + "email": "erik.hjortsberg@iteam.se" + }, + { + "id": 1087, + "name": "Christian Landgren", + "email": "christian.landgren@iteam.se" + }, + { + "id": 6, + "name": "Anders Bornholm", + "email": "anders.bornholm@iteam.se" + }, + { + "id": 1089, + "name": "Tommy Söderström", + "email": "tommy.soderstrom@iteam.se" + }, + { + "id": 1085, + "name": "Magnus Tjerneld", + "email": "magnus.tjerneld@iteam.se" + }, + { + "id": 4, + "name": "Administrators Administrator", + "email": "admin@iteam.se" + }, + { + "id": 1091, + "name": "Christian Ridderstolpe", + "email": "christian.ridderstolpe@iteam.se" + }, + { + "id": 1093, + "name": "Johanna Gustafsson", + "email": "johanna.gustafsson@iteam.se" + }, + { "id": 1094, "name": "Ola Wallin", "email": "ola.wallin@iteam.se" }, + { + "id": 1096, + "name": "Sebastian Nilsson", + "email": "sebastian.nilsson@iteam.se" + }, + { + "id": 1098, + "name": "Martin Loman", + "email": "martin.loman@iteam.se" + }, + { + "id": 1088, + "name": "Mats Egardt", + "email": "mats.egardt@iteam.se" + }, + { + "id": 1090, + "name": "Magnus Rygart", + "email": "d66f4cf4-1836-4be8-b148-d2cd1cb2ee23@iteam.se" + }, + { + "id": 1095, + "name": "Rasmus Fredriksson", + "email": "rasmus.fredriksson@iteam.se" + }, + { + "id": 1097, + "name": "Hans Rollman", + "email": "hans.rollman@iteam.se" + }, + { + "id": 1092, + "name": "Mattias Jonsson", + "email": "mattias.jonsson@iteam.se" + } + ], + "roles_users": [ + { "user_id": 3, "role_id": 1 }, + { "user_id": 1086, "role_id": 1 }, + { "user_id": 1087, "role_id": 1 }, + { "user_id": 6, "role_id": 1 }, + { "user_id": 1089, "role_id": 1 }, + { "user_id": 1085, "role_id": 1 }, + { "user_id": 4, "role_id": 1 }, + { "user_id": 1091, "role_id": 1 }, + { "user_id": 1093, "role_id": 1 }, + { "user_id": 1094, "role_id": 1 }, + { "user_id": 1096, "role_id": 1 }, + { "user_id": 1098, "role_id": 1 }, + { "user_id": 1088, "role_id": 1 }, + { "user_id": 1090, "role_id": 1 }, + { "user_id": 1095, "role_id": 1 }, + { "user_id": 1097, "role_id": 1 }, + { "user_id": 1092, "role_id": 1 } + ] + } + } + ] +} diff --git a/client/src/lib/sanity.server.js b/client/src/lib/sanity.server.js index 2297e392..ef1cd2c4 100644 --- a/client/src/lib/sanity.server.js +++ b/client/src/lib/sanity.server.js @@ -6,10 +6,13 @@ export const sanityClient = createClient(config) // Set up a preview client with serverless authentication for drafts export const previewClient = createClient({ - ...config, - useCdn: false, - token: process.env.SANITY_API_TOKEN, + ...config, + useCdn: false, + token: process.env.SANITY_API_TOKEN, }) +console.log('Sanity client created', process.env.SANITY_API_TOKEN) + // Helper function for easily switching between normal client and preview client -export const getClient = (usePreview) => (usePreview ? previewClient : sanityClient) +export const getClient = (usePreview) => + usePreview ? previewClient : sanityClient diff --git a/client/src/pages/_document.js b/client/src/pages/_document.js index d3f47cfd..2a59afeb 100644 --- a/client/src/pages/_document.js +++ b/client/src/pages/_document.js @@ -1,5 +1,5 @@ -import Document from "next/document" -import { ServerStyleSheet } from "styled-components" +import Document from 'next/document' +import { ServerStyleSheet } from 'styled-components' export default class MyDocument extends Document { static async getInitialProps(ctx) { diff --git a/client/yarn.lock b/client/yarn.lock index 0515de13..93e8a3e9 100644 --- a/client/yarn.lock +++ b/client/yarn.lock @@ -2,155 +2,184 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.3", "@babel/code-frame@7.12.11": - "integrity" "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==" - "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz" - "version" "7.12.11" +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== dependencies: "@babel/highlight" "^7.10.4" -"@babel/generator@^7.10.3": - "integrity" "sha512-drt8MUHbEqRzNR0xnF8nMehbY11b1SDkRw03PSNH/3Rb2Z35oxkddVSi3rcaak0YJQ86PCuE7Qx1jSFhbLNBMA==" - "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.10.3.tgz" - "version" "7.10.3" +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.16.7.tgz#44416b6bd7624b998f5b1af5d470856c40138789" + integrity sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg== dependencies: - "@babel/types" "^7.10.3" - "jsesc" "^2.5.1" - "lodash" "^4.17.13" - "source-map" "^0.5.0" + "@babel/highlight" "^7.16.7" -"@babel/helper-annotate-as-pure@^7.0.0": - "integrity" "sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw==" - "resolved" "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz" - "version" "7.10.1" +"@babel/generator@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.0.tgz#7bd890ba706cd86d3e2f727322346ffdbf98f65e" + integrity sha512-I3Omiv6FGOC29dtlZhkfXO6pgkmukJSlT26QjVvS1DGZe/NzSVCPG41X0tS21oZkJYlovfj9qDWgKP+Cn4bXxw== dependencies: - "@babel/types" "^7.10.1" + "@babel/types" "^7.17.0" + jsesc "^2.5.1" + source-map "^0.5.0" -"@babel/helper-function-name@^7.10.3": - "integrity" "sha512-FvSj2aiOd8zbeqijjgqdMDSyxsGHaMt5Tr0XjQsGKHD3/1FP3wksjnLAWzxw7lvXiej8W1Jt47SKTZ6upQNiRw==" - "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.3.tgz" - "version" "7.10.3" +"@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.16.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" + integrity sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw== dependencies: - "@babel/helper-get-function-arity" "^7.10.3" - "@babel/template" "^7.10.3" - "@babel/types" "^7.10.3" + "@babel/types" "^7.16.7" -"@babel/helper-get-function-arity@^7.10.3": - "integrity" "sha512-iUD/gFsR+M6uiy69JA6fzM5seno8oE85IYZdbVVEuQaZlEzMO2MXblh+KSPJgsZAUx0EEbWXU0yJaW7C9CdAVg==" - "resolved" "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.3.tgz" - "version" "7.10.3" +"@babel/helper-environment-visitor@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz#ff484094a839bde9d89cd63cba017d7aae80ecd7" + integrity sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag== dependencies: - "@babel/types" "^7.10.3" + "@babel/types" "^7.16.7" -"@babel/helper-module-imports@^7.0.0": - "integrity" "sha512-Jtqw5M9pahLSUWA+76nhK9OG8nwYXzhQzVIGFoNaHnXF/r4l7kz4Fl0UAW7B6mqC5myoJiBP5/YQlXQTMfHI9w==" - "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.3.tgz" - "version" "7.10.3" +"@babel/helper-function-name@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" + integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== dependencies: - "@babel/types" "^7.10.3" + "@babel/helper-get-function-arity" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/types" "^7.16.7" -"@babel/helper-plugin-utils@^7.14.5": - "integrity" "sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ==" - "resolved" "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz" - "version" "7.14.5" +"@babel/helper-get-function-arity@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419" + integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw== + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-hoist-variables@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" + integrity sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg== + dependencies: + "@babel/types" "^7.16.7" -"@babel/helper-split-export-declaration@^7.10.1": - "integrity" "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==" - "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz" - "version" "7.10.1" +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.16.0": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz#25612a8091a999704461c8a222d0efec5d091437" + integrity sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg== dependencies: - "@babel/types" "^7.10.1" + "@babel/types" "^7.16.7" -"@babel/helper-validator-identifier@^7.10.3", "@babel/helper-validator-identifier@^7.14.0": - "integrity" "sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz" - "version" "7.14.0" +"@babel/helper-plugin-utils@^7.14.5": + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz" + integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== + +"@babel/helper-split-export-declaration@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz#0b648c0c42da9d3920d85ad585f2778620b8726b" + integrity sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw== + dependencies: + "@babel/types" "^7.16.7" "@babel/helper-validator-identifier@^7.14.9": - "integrity" "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==" - "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz" - "version" "7.15.7" + version "7.15.7" + resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz" + integrity sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w== + +"@babel/helper-validator-identifier@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" + integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== "@babel/highlight@^7.10.4": - "integrity" "sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg==" - "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz" - "version" "7.14.0" + version "7.14.0" + resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.0.tgz" + integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg== dependencies: "@babel/helper-validator-identifier" "^7.14.0" - "chalk" "^2.0.0" - "js-tokens" "^4.0.0" + chalk "^2.0.0" + js-tokens "^4.0.0" -"@babel/parser@^7.10.3": - "integrity" "sha512-oJtNJCMFdIMwXGmx+KxuaD7i3b8uS7TTFYW/FNG2BT8m+fmGHoiPYoH0Pe3gya07WuFmM5FCDIr1x0irkD/hyA==" - "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.10.3.tgz" - "version" "7.10.3" +"@babel/highlight@^7.16.7": + version "7.16.10" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" + integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.16.7", "@babel/parser@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.0.tgz#f0ac33eddbe214e4105363bb17c3341c5ffcc43c" + integrity sha512-VKXSCQx5D8S04ej+Dqsr1CzYvvWgf20jIw2D+YhQCrIlr2UZGaDds23Y0xg75/skOxpLCRpUZvk/1EAVkGoDOw== "@babel/plugin-syntax-jsx@7.14.5": - "integrity" "sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw==" - "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz" - "version" "7.14.5" + version "7.14.5" + resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz" + integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== dependencies: "@babel/helper-plugin-utils" "^7.14.5" -"@babel/runtime@^7.12.5", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - "integrity" "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==" - "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz" - "version" "7.12.5" +"@babel/runtime@7.15.3": + version "7.15.3" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz" + integrity sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA== dependencies: - "regenerator-runtime" "^0.13.4" + regenerator-runtime "^0.13.4" -"@babel/runtime@7.15.3": - "integrity" "sha512-OvwMLqNXkCXSz1kSm58sEsNuhqOx/fKpnUnKnFB5v8uDda5bLNEHNgKPvhDN6IU0LDcnHQ90LlJ0Q6jnyBSIBA==" - "resolved" "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.3.tgz" - "version" "7.15.3" +"@babel/runtime@^7.12.5", "@babel/runtime@^7.4.2", "@babel/runtime@^7.4.4", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.12.5" + resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz" + integrity sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg== dependencies: - "regenerator-runtime" "^0.13.4" + regenerator-runtime "^0.13.4" -"@babel/template@^7.10.3": - "integrity" "sha512-5BjI4gdtD+9fHZUsaxPHPNpwa+xRkDO7c7JbhYn2afvrkDu5SfAAbi9AIMXw2xEhO/BR35TqiW97IqNvCo/GqA==" - "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.10.3.tgz" - "version" "7.10.3" +"@babel/template@^7.16.7": + version "7.16.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155" + integrity sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w== dependencies: - "@babel/code-frame" "^7.10.3" - "@babel/parser" "^7.10.3" - "@babel/types" "^7.10.3" + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" "@babel/traverse@^7.4.5": - "integrity" "sha512-qO6623eBFhuPm0TmmrUFMT1FulCmsSeJuVGhiLodk2raUDFhhTECLd9E9jC4LBIWziqt4wgF6KuXE4d+Jz9yug==" - "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.3.tgz" - "version" "7.10.3" - dependencies: - "@babel/code-frame" "^7.10.3" - "@babel/generator" "^7.10.3" - "@babel/helper-function-name" "^7.10.3" - "@babel/helper-split-export-declaration" "^7.10.1" - "@babel/parser" "^7.10.3" - "@babel/types" "^7.10.3" - "debug" "^4.1.0" - "globals" "^11.1.0" - "lodash" "^4.17.13" - -"@babel/types@^7.10.1", "@babel/types@^7.10.3": - "integrity" "sha512-nZxaJhBXBQ8HVoIcGsf9qWep3Oh3jCENK54V4mRF7qaJabVsAYdbTtmSD8WmAp1R6ytPiu5apMwSXyxB1WlaBA==" - "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.10.3.tgz" - "version" "7.10.3" - dependencies: - "@babel/helper-validator-identifier" "^7.10.3" - "lodash" "^4.17.13" - "to-fast-properties" "^2.0.0" + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.0.tgz#3143e5066796408ccc880a33ecd3184f3e75cd30" + integrity sha512-fpFIXvqD6kC7c7PUNnZ0Z8cQXlarCLtCUpt2S1Dx7PjoRtCFffvOkHHSom+m5HIxMZn5bIBVb71lhabcmjEsqg== + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.0" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.17.0" + "@babel/types" "^7.17.0" + debug "^4.1.0" + globals "^11.1.0" "@babel/types@7.15.0": - "integrity" "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==" - "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz" - "version" "7.15.0" + version "7.15.0" + resolved "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz" + integrity sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ== dependencies: "@babel/helper-validator-identifier" "^7.14.9" - "to-fast-properties" "^2.0.0" + to-fast-properties "^2.0.0" + +"@babel/types@^7.16.7", "@babel/types@^7.17.0": + version "7.17.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.0.tgz#a826e368bccb6b3d84acd76acad5c0d87342390b" + integrity sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw== + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + to-fast-properties "^2.0.0" "@emotion/cache@^10.0.27", "@emotion/cache@^10.0.9": - "integrity" "sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==" - "resolved" "https://registry.npmjs.org/@emotion/cache/-/cache-10.0.29.tgz" - "version" "10.0.29" + version "10.0.29" + resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.29.tgz#87e7e64f412c060102d589fe7c6dc042e6f9d1e0" + integrity sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ== dependencies: "@emotion/sheet" "0.9.4" "@emotion/stylis" "0.8.5" @@ -158,9 +187,9 @@ "@emotion/weak-memoize" "0.2.5" "@emotion/core@^10.0.9": - "integrity" "sha512-pH8UueKYO5jgg0Iq+AmCLxBsvuGtvlmiDCOuv8fGNYn3cowFpLN98L8zO56U0H1PjDIyAlXymgL3Wu7u7v6hbA==" - "resolved" "https://registry.npmjs.org/@emotion/core/-/core-10.0.28.tgz" - "version" "10.0.28" + version "10.3.1" + resolved "https://registry.yarnpkg.com/@emotion/core/-/core-10.3.1.tgz#4021b6d8b33b3304d48b0bb478485e7d7421c69d" + integrity sha512-447aUEjPIm0MnE6QYIaFz9VQOHSXf4Iu6EWOIqq11EAPqinkSZmfymPTmlOE3QjLv846lH4JVZBUOtwGbuQoww== dependencies: "@babel/runtime" "^7.5.5" "@emotion/cache" "^10.0.27" @@ -170,3771 +199,3738 @@ "@emotion/utils" "0.11.3" "@emotion/css@^10.0.27", "@emotion/css@^10.0.9": - "integrity" "sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw==" - "resolved" "https://registry.npmjs.org/@emotion/css/-/css-10.0.27.tgz" - "version" "10.0.27" + version "10.0.27" + resolved "https://registry.yarnpkg.com/@emotion/css/-/css-10.0.27.tgz#3a7458198fbbebb53b01b2b87f64e5e21241e14c" + integrity sha512-6wZjsvYeBhyZQYNrGoR5yPMYbMBNEnanDrqmsqS1mzDm1cOTu12shvl2j4QHNS36UaTE0USIJawCH9C8oW34Zw== dependencies: "@emotion/serialize" "^0.11.15" "@emotion/utils" "0.11.3" - "babel-plugin-emotion" "^10.0.27" + babel-plugin-emotion "^10.0.27" "@emotion/hash@0.8.0": - "integrity" "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==" - "resolved" "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz" - "version" "0.8.0" + version "0.8.0" + resolved "https://registry.yarnpkg.com/@emotion/hash/-/hash-0.8.0.tgz#bbbff68978fefdbe68ccb533bc8cbe1d1afb5413" + integrity sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow== "@emotion/is-prop-valid@^0.8.8": - "integrity" "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==" - "resolved" "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz" - "version" "0.8.8" + version "0.8.8" + resolved "https://registry.yarnpkg.com/@emotion/is-prop-valid/-/is-prop-valid-0.8.8.tgz#db28b1c4368a259b60a97311d6a952d4fd01ac1a" + integrity sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA== dependencies: "@emotion/memoize" "0.7.4" "@emotion/memoize@0.7.4": - "integrity" "sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==" - "resolved" "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.7.4.tgz" - "version" "0.7.4" + version "0.7.4" + resolved "https://registry.yarnpkg.com/@emotion/memoize/-/memoize-0.7.4.tgz#19bf0f5af19149111c40d98bb0cf82119f5d9eeb" + integrity sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw== "@emotion/serialize@^0.11.15", "@emotion/serialize@^0.11.16": - "integrity" "sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==" - "resolved" "https://registry.npmjs.org/@emotion/serialize/-/serialize-0.11.16.tgz" - "version" "0.11.16" + version "0.11.16" + resolved "https://registry.yarnpkg.com/@emotion/serialize/-/serialize-0.11.16.tgz#dee05f9e96ad2fb25a5206b6d759b2d1ed3379ad" + integrity sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg== dependencies: "@emotion/hash" "0.8.0" "@emotion/memoize" "0.7.4" "@emotion/unitless" "0.7.5" "@emotion/utils" "0.11.3" - "csstype" "^2.5.7" + csstype "^2.5.7" "@emotion/sheet@0.9.4": - "integrity" "sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==" - "resolved" "https://registry.npmjs.org/@emotion/sheet/-/sheet-0.9.4.tgz" - "version" "0.9.4" + version "0.9.4" + resolved "https://registry.yarnpkg.com/@emotion/sheet/-/sheet-0.9.4.tgz#894374bea39ec30f489bbfc3438192b9774d32e5" + integrity sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA== -"@emotion/stylis@^0.8.4", "@emotion/stylis@0.8.5": - "integrity" "sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==" - "resolved" "https://registry.npmjs.org/@emotion/stylis/-/stylis-0.8.5.tgz" - "version" "0.8.5" +"@emotion/stylis@0.8.5", "@emotion/stylis@^0.8.4": + version "0.8.5" + resolved "https://registry.yarnpkg.com/@emotion/stylis/-/stylis-0.8.5.tgz#deacb389bd6ee77d1e7fcaccce9e16c5c7e78e04" + integrity sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ== -"@emotion/unitless@^0.7.4", "@emotion/unitless@0.7.5": - "integrity" "sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==" - "resolved" "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.7.5.tgz" - "version" "0.7.5" +"@emotion/unitless@0.7.5", "@emotion/unitless@^0.7.4": + version "0.7.5" + resolved "https://registry.yarnpkg.com/@emotion/unitless/-/unitless-0.7.5.tgz#77211291c1900a700b8a78cfafda3160d76949ed" + integrity sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg== "@emotion/utils@0.11.3": - "integrity" "sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==" - "resolved" "https://registry.npmjs.org/@emotion/utils/-/utils-0.11.3.tgz" - "version" "0.11.3" + version "0.11.3" + resolved "https://registry.yarnpkg.com/@emotion/utils/-/utils-0.11.3.tgz#a759863867befa7e583400d322652a3f44820924" + integrity sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw== "@emotion/weak-memoize@0.2.5": - "integrity" "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==" - "resolved" "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz" - "version" "0.2.5" + version "0.2.5" + resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46" + integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA== "@hapi/accept@5.0.2": - "integrity" "sha512-CmzBx/bXUR8451fnZRuZAJRlzgm0Jgu5dltTX/bszmR2lheb9BpyN47Q1RbaGTsvFzn0PXAEs+lXDKfshccYZw==" - "resolved" "https://registry.npmjs.org/@hapi/accept/-/accept-5.0.2.tgz" - "version" "5.0.2" + version "5.0.2" + resolved "https://registry.yarnpkg.com/@hapi/accept/-/accept-5.0.2.tgz#ab7043b037e68b722f93f376afb05e85c0699523" + integrity sha512-CmzBx/bXUR8451fnZRuZAJRlzgm0Jgu5dltTX/bszmR2lheb9BpyN47Q1RbaGTsvFzn0PXAEs+lXDKfshccYZw== dependencies: "@hapi/boom" "9.x.x" "@hapi/hoek" "9.x.x" "@hapi/boom@9.x.x": - "integrity" "sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw==" - "resolved" "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.4.tgz" - "version" "9.1.4" + version "9.1.4" + resolved "https://registry.npmjs.org/@hapi/boom/-/boom-9.1.4.tgz" + integrity sha512-Ls1oH8jaN1vNsqcaHVYJrKmgMcKsC1wcp8bujvXrHaAqD2iDYq3HoOwsxwo09Cuda5R5nC0o0IxlrlTuvPuzSw== dependencies: "@hapi/hoek" "9.x.x" "@hapi/hoek@9.x.x": - "integrity" "sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug==" - "resolved" "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.2.0.tgz" - "version" "9.2.0" + version "9.2.1" + resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.1.tgz#9551142a1980503752536b5050fd99f4a7f13b17" + integrity sha512-gfta+H8aziZsm8pZa0vj04KO6biEiisppNgA1kbJvFrrWu9Vm7eaUEy76DIxsuTaWvti5fkJVhllWc6ZTE+Mdw== "@mapbox/point-geometry@^0.1.0": - "integrity" "sha1-ioP5M1x4YO/6Lu7KJUMyqgru2PI=" - "resolved" "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz" - "version" "0.1.0" + version "0.1.0" + resolved "https://registry.yarnpkg.com/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz#8a83f9335c7860effa2eeeca254332aa0aeed8f2" + integrity sha1-ioP5M1x4YO/6Lu7KJUMyqgru2PI= "@mrmlnc/readdir-enhanced@^2.2.1": - "integrity" "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==" - "resolved" "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz" - "version" "2.2.1" + version "2.2.1" + resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde" + integrity sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g== dependencies: - "call-me-maybe" "^1.0.1" - "glob-to-regexp" "^0.3.0" + call-me-maybe "^1.0.1" + glob-to-regexp "^0.3.0" "@n8tb1t/use-scroll-position@^1.0.43": - "integrity" "sha512-9CFB+3/ZRP0BGHCS+01ulq3syHamhcQiu3iVBSPJZV+578ySSOt9tWIVDiSaIQfz3a1QdKUbhYR+4Uplda3cwA==" - "resolved" "https://registry.npmjs.org/@n8tb1t/use-scroll-position/-/use-scroll-position-1.0.43.tgz" - "version" "1.0.43" + version "1.0.47" + resolved "https://registry.yarnpkg.com/@n8tb1t/use-scroll-position/-/use-scroll-position-1.0.47.tgz#6b471ecb2fdc09179fd93791680ddd9714df1935" + integrity sha512-qilO+6vtiwP5L9Oqphee0XRXPOpOOQ9W/jNSZaf1Gx3v/EWrVOXxVRxEPv377BGw9Cf1/Rj13bBu+YVAjHk+gw== "@napi-rs/triples@^1.0.3": - "integrity" "sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA==" - "resolved" "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz" - "version" "1.0.3" + version "1.0.3" + resolved "https://registry.npmjs.org/@napi-rs/triples/-/triples-1.0.3.tgz" + integrity sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA== "@next/env@11.1.2": - "integrity" "sha512-+fteyVdQ7C/OoulfcF6vd1Yk0FEli4453gr8kSFbU8sKseNSizYq6df5MKz/AjwLptsxrUeIkgBdAzbziyJ3mA==" - "resolved" "https://registry.npmjs.org/@next/env/-/env-11.1.2.tgz" - "version" "11.1.2" + version "11.1.2" + resolved "https://registry.npmjs.org/@next/env/-/env-11.1.2.tgz" + integrity sha512-+fteyVdQ7C/OoulfcF6vd1Yk0FEli4453gr8kSFbU8sKseNSizYq6df5MKz/AjwLptsxrUeIkgBdAzbziyJ3mA== "@next/polyfill-module@11.1.2": - "integrity" "sha512-xZmixqADM3xxtqBV0TpAwSFzWJP0MOQzRfzItHXf1LdQHWb0yofHHC+7eOrPFic8+ZGz5y7BdPkkgR1S25OymA==" - "resolved" "https://registry.npmjs.org/@next/polyfill-module/-/polyfill-module-11.1.2.tgz" - "version" "11.1.2" + version "11.1.2" + resolved "https://registry.npmjs.org/@next/polyfill-module/-/polyfill-module-11.1.2.tgz" + integrity sha512-xZmixqADM3xxtqBV0TpAwSFzWJP0MOQzRfzItHXf1LdQHWb0yofHHC+7eOrPFic8+ZGz5y7BdPkkgR1S25OymA== "@next/react-dev-overlay@11.1.2": - "integrity" "sha512-rDF/mGY2NC69mMg2vDqzVpCOlWqnwPUXB2zkARhvknUHyS6QJphPYv9ozoPJuoT/QBs49JJd9KWaAzVBvq920A==" - "resolved" "https://registry.npmjs.org/@next/react-dev-overlay/-/react-dev-overlay-11.1.2.tgz" - "version" "11.1.2" + version "11.1.2" + resolved "https://registry.npmjs.org/@next/react-dev-overlay/-/react-dev-overlay-11.1.2.tgz" + integrity sha512-rDF/mGY2NC69mMg2vDqzVpCOlWqnwPUXB2zkARhvknUHyS6QJphPYv9ozoPJuoT/QBs49JJd9KWaAzVBvq920A== dependencies: "@babel/code-frame" "7.12.11" - "anser" "1.4.9" - "chalk" "4.0.0" - "classnames" "2.2.6" - "css.escape" "1.5.1" - "data-uri-to-buffer" "3.0.1" - "platform" "1.3.6" - "shell-quote" "1.7.2" - "source-map" "0.8.0-beta.0" - "stacktrace-parser" "0.1.10" - "strip-ansi" "6.0.0" + anser "1.4.9" + chalk "4.0.0" + classnames "2.2.6" + css.escape "1.5.1" + data-uri-to-buffer "3.0.1" + platform "1.3.6" + shell-quote "1.7.2" + source-map "0.8.0-beta.0" + stacktrace-parser "0.1.10" + strip-ansi "6.0.0" "@next/react-refresh-utils@11.1.2": - "integrity" "sha512-hsoJmPfhVqjZ8w4IFzoo8SyECVnN+8WMnImTbTKrRUHOVJcYMmKLL7xf7T0ft00tWwAl/3f3Q3poWIN2Ueql/Q==" - "resolved" "https://registry.npmjs.org/@next/react-refresh-utils/-/react-refresh-utils-11.1.2.tgz" - "version" "11.1.2" + version "11.1.2" + resolved "https://registry.npmjs.org/@next/react-refresh-utils/-/react-refresh-utils-11.1.2.tgz" + integrity sha512-hsoJmPfhVqjZ8w4IFzoo8SyECVnN+8WMnImTbTKrRUHOVJcYMmKLL7xf7T0ft00tWwAl/3f3Q3poWIN2Ueql/Q== + +"@next/swc-darwin-arm64@11.1.2": + version "11.1.2" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-11.1.2.tgz#93226c38db488c4b62b30a53b530e87c969b8251" + integrity sha512-hZuwOlGOwBZADA8EyDYyjx3+4JGIGjSHDHWrmpI7g5rFmQNltjlbaefAbiU5Kk7j3BUSDwt30quJRFv3nyJQ0w== "@next/swc-darwin-x64@11.1.2": - "integrity" "sha512-PGOp0E1GisU+EJJlsmJVGE+aPYD0Uh7zqgsrpD3F/Y3766Ptfbe1lEPPWnRDl+OzSSrSrX1lkyM/Jlmh5OwNvA==" - "resolved" "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-11.1.2.tgz" - "version" "11.1.2" + version "11.1.2" + resolved "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-11.1.2.tgz" + integrity sha512-PGOp0E1GisU+EJJlsmJVGE+aPYD0Uh7zqgsrpD3F/Y3766Ptfbe1lEPPWnRDl+OzSSrSrX1lkyM/Jlmh5OwNvA== + +"@next/swc-linux-x64-gnu@11.1.2": + version "11.1.2" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-11.1.2.tgz#8216b2ae1f21f0112958735c39dd861088108f37" + integrity sha512-YcDHTJjn/8RqvyJVB6pvEKXihDcdrOwga3GfMv/QtVeLphTouY4BIcEUfrG5+26Nf37MP1ywN3RRl1TxpurAsQ== + +"@next/swc-win32-x64-msvc@11.1.2": + version "11.1.2" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-11.1.2.tgz#e15824405df137129918205e43cb5e9339589745" + integrity sha512-e/pIKVdB+tGQYa1cW3sAeHm8gzEri/HYLZHT4WZojrUxgWXqx8pk7S7Xs47uBcFTqBDRvK3EcQpPLf3XdVsDdg== "@node-rs/helper@1.2.1": - "integrity" "sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg==" - "resolved" "https://registry.npmjs.org/@node-rs/helper/-/helper-1.2.1.tgz" - "version" "1.2.1" + version "1.2.1" + resolved "https://registry.npmjs.org/@node-rs/helper/-/helper-1.2.1.tgz" + integrity sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg== dependencies: "@napi-rs/triples" "^1.0.3" "@nodelib/fs.stat@^1.1.2": - "integrity" "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==" - "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz" - "version" "1.1.3" + version "1.1.3" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" + integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== "@popperjs/core@^2.0.0": - "integrity" "sha512-JlGTGRYHC2QK+DDbePyXdBdooxFq2+noLfWpRqJtkxcb/oYWzOF0kcbfvvbWrwevCC1l6hLUg1wHYT+ona5BWQ==" - "resolved" "https://registry.npmjs.org/@popperjs/core/-/core-2.4.2.tgz" - "version" "2.4.2" + version "2.4.2" + resolved "https://registry.npmjs.org/@popperjs/core/-/core-2.4.2.tgz" + integrity sha512-JlGTGRYHC2QK+DDbePyXdBdooxFq2+noLfWpRqJtkxcb/oYWzOF0kcbfvvbWrwevCC1l6hLUg1wHYT+ona5BWQ== "@restart/context@^2.1.4": - "integrity" "sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q==" - "resolved" "https://registry.npmjs.org/@restart/context/-/context-2.1.4.tgz" - "version" "2.1.4" + version "2.1.4" + resolved "https://registry.yarnpkg.com/@restart/context/-/context-2.1.4.tgz#a99d87c299a34c28bd85bb489cb07bfd23149c02" + integrity sha512-INJYZQJP7g+IoDUh/475NlGiTeMfwTXUEr3tmRneckHIxNolGOW9CTq83S8cxq0CgJwwcMzMJFchxvlwe7Rk8Q== "@restart/hooks@^0.3.12", "@restart/hooks@^0.3.21": - "integrity" "sha512-m2v3N5pxTsIiSH74/sb1yW8D9RxkJidGW+5Mfwn/lHb2QzhZNlaU1su7abSyT9EGf0xS/0waLjrf7/XxQHUk7w==" - "resolved" "https://registry.npmjs.org/@restart/hooks/-/hooks-0.3.25.tgz" - "version" "0.3.25" + version "0.3.27" + resolved "https://registry.yarnpkg.com/@restart/hooks/-/hooks-0.3.27.tgz#91f356d66d4699a8cd8b3d008402708b6a9dc505" + integrity sha512-s984xV/EapUIfkjlf8wz9weP2O9TNKR96C68FfMEy2bE69+H4cNv3RD4Mf97lW7Htt7PjZrYTjSC8f3SB9VCXw== dependencies: - "lodash" "^4.17.15" - "lodash-es" "^4.17.15" + dequal "^2.0.2" "@rexxars/eventsource-polyfill@^1.0.0": - "integrity" "sha512-YnrybIoM9WFqmeK1D8p/gutqjJnmXCVFWAU3ucka9M7Dzpen3f2Dy4KsC6k1wDHrCtHQuUHHwZovh3i5UPDaZw==" - "resolved" "https://registry.npmjs.org/@rexxars/eventsource-polyfill/-/eventsource-polyfill-1.0.0.tgz" - "version" "1.0.0" + version "1.0.0" + resolved "https://registry.npmjs.org/@rexxars/eventsource-polyfill/-/eventsource-polyfill-1.0.0.tgz" + integrity sha512-YnrybIoM9WFqmeK1D8p/gutqjJnmXCVFWAU3ucka9M7Dzpen3f2Dy4KsC6k1wDHrCtHQuUHHwZovh3i5UPDaZw== "@sanity/block-content-to-hyperscript@^3.0.0": - "integrity" "sha512-uoXWLdFY5LqO8A9sFJqnZWWDCBC+0r3Egeh0bwKQ2EK2Vil5L40iJGNXMZhDB8BnvH+6B4155SU8Q3vY59T6pA==" - "resolved" "https://registry.npmjs.org/@sanity/block-content-to-hyperscript/-/block-content-to-hyperscript-3.0.0.tgz" - "version" "3.0.0" + version "3.0.0" + resolved "https://registry.npmjs.org/@sanity/block-content-to-hyperscript/-/block-content-to-hyperscript-3.0.0.tgz" + integrity sha512-uoXWLdFY5LqO8A9sFJqnZWWDCBC+0r3Egeh0bwKQ2EK2Vil5L40iJGNXMZhDB8BnvH+6B4155SU8Q3vY59T6pA== dependencies: "@sanity/generate-help-url" "^0.140.0" "@sanity/image-url" "^0.140.15" - "hyperscript" "^2.0.2" - "object-assign" "^4.1.1" + hyperscript "^2.0.2" + object-assign "^4.1.1" "@sanity/block-content-to-react@^3.0.0": - "integrity" "sha512-oHPLlIsulsnL3ITs93RIvUPBI6nAeoSFOUf16vX4T7z4wWywxP39N1DF9mAx2tV6Kjr1fJAx5GF7zfiMXYLaqA==" - "resolved" "https://registry.npmjs.org/@sanity/block-content-to-react/-/block-content-to-react-3.0.0.tgz" - "version" "3.0.0" + version "3.0.0" + resolved "https://registry.npmjs.org/@sanity/block-content-to-react/-/block-content-to-react-3.0.0.tgz" + integrity sha512-oHPLlIsulsnL3ITs93RIvUPBI6nAeoSFOUf16vX4T7z4wWywxP39N1DF9mAx2tV6Kjr1fJAx5GF7zfiMXYLaqA== dependencies: "@sanity/block-content-to-hyperscript" "^3.0.0" - "prop-types" "^15.6.2" + prop-types "^15.6.2" -"@sanity/client@^2.14.0", "@sanity/client@^2.19.0", "@sanity/client@2.19.0": - "integrity" "sha512-y3VCTXx0z9n9tIroJUBT70rfCZuyJCNmRVZcMjRSjaLCK7vFJHvACX61OkbfbFo9t8r098g8jXP2XttBUiglLQ==" - "resolved" "https://registry.npmjs.org/@sanity/client/-/client-2.19.0.tgz" - "version" "2.19.0" +"@sanity/client@2.19.0", "@sanity/client@^2.14.0", "@sanity/client@^2.19.0": + version "2.19.0" + resolved "https://registry.npmjs.org/@sanity/client/-/client-2.19.0.tgz" + integrity sha512-y3VCTXx0z9n9tIroJUBT70rfCZuyJCNmRVZcMjRSjaLCK7vFJHvACX61OkbfbFo9t8r098g8jXP2XttBUiglLQ== dependencies: "@sanity/eventsource" "2.14.0" "@sanity/generate-help-url" "2.18.0" "@sanity/observable" "2.0.9" - "deep-assign" "^2.0.0" - "get-it" "^5.0.3" - "make-error" "^1.3.0" - "object-assign" "^4.1.1" + deep-assign "^2.0.0" + get-it "^5.0.3" + make-error "^1.3.0" + object-assign "^4.1.1" "@sanity/color@^2.1.5": - "integrity" "sha512-miq04+tp9I0/k8TooM/iB1ifpjVaWke9Pg+GD4SbrZ+YQkqaMqQFvzu4JjPr55lMkBrzOjE4JHrwBO/bzgottw==" - "resolved" "https://registry.npmjs.org/@sanity/color/-/color-2.1.5.tgz" - "version" "2.1.5" + version "2.1.5" + resolved "https://registry.npmjs.org/@sanity/color/-/color-2.1.5.tgz" + integrity sha512-miq04+tp9I0/k8TooM/iB1ifpjVaWke9Pg+GD4SbrZ+YQkqaMqQFvzu4JjPr55lMkBrzOjE4JHrwBO/bzgottw== "@sanity/eventsource@2.14.0": - "integrity" "sha512-U1FgPUwB9//bGT5OO1VgtamSCM2Z3vpWP3mCgN8vPmEUJ0cofAWO+turDbOILahuicH8u7Xnmd+GSB33p4Mg9A==" - "resolved" "https://registry.npmjs.org/@sanity/eventsource/-/eventsource-2.14.0.tgz" - "version" "2.14.0" + version "2.14.0" + resolved "https://registry.npmjs.org/@sanity/eventsource/-/eventsource-2.14.0.tgz" + integrity sha512-U1FgPUwB9//bGT5OO1VgtamSCM2Z3vpWP3mCgN8vPmEUJ0cofAWO+turDbOILahuicH8u7Xnmd+GSB33p4Mg9A== dependencies: "@rexxars/eventsource-polyfill" "^1.0.0" - "eventsource" "^1.0.6" - -"@sanity/generate-help-url@^0.140.0": - "integrity" "sha512-H/G/WA9S22TXcXST52CIiTsHx3S2hH0gvK7LnI5w76vfKS0obnDPh8jrPg4xeNRYGPuV9MHYRlyERGpRGoo4Qw==" - "resolved" "https://registry.npmjs.org/@sanity/generate-help-url/-/generate-help-url-0.140.0.tgz" - "version" "0.140.0" + eventsource "^1.0.6" "@sanity/generate-help-url@2.18.0": - "integrity" "sha512-If8Qkw32LWPes16UzqwUsTLgfxF5d4ACdUvCLMl6grJc/5G8LKPAGCQUuA/d1F4W16yCJVV7Zv31HDRDXJSJkg==" - "resolved" "https://registry.npmjs.org/@sanity/generate-help-url/-/generate-help-url-2.18.0.tgz" - "version" "2.18.0" + version "2.18.0" + resolved "https://registry.npmjs.org/@sanity/generate-help-url/-/generate-help-url-2.18.0.tgz" + integrity sha512-If8Qkw32LWPes16UzqwUsTLgfxF5d4ACdUvCLMl6grJc/5G8LKPAGCQUuA/d1F4W16yCJVV7Zv31HDRDXJSJkg== + +"@sanity/generate-help-url@^0.140.0": + version "0.140.0" + resolved "https://registry.npmjs.org/@sanity/generate-help-url/-/generate-help-url-0.140.0.tgz" + integrity sha512-H/G/WA9S22TXcXST52CIiTsHx3S2hH0gvK7LnI5w76vfKS0obnDPh8jrPg4xeNRYGPuV9MHYRlyERGpRGoo4Qw== "@sanity/groq-store@^0.2.1": - "integrity" "sha512-BVWH5nV6O9VVWddbOD2FShLyehKhHMFO+93hS6ZFHew1Y1jfGaXkdBYINTVw7fy3Ac1tDszUww9eFfP1oMxybQ==" - "resolved" "https://registry.npmjs.org/@sanity/groq-store/-/groq-store-0.2.1.tgz" - "version" "0.2.1" + version "0.2.1" + resolved "https://registry.npmjs.org/@sanity/groq-store/-/groq-store-0.2.1.tgz" + integrity sha512-BVWH5nV6O9VVWddbOD2FShLyehKhHMFO+93hS6ZFHew1Y1jfGaXkdBYINTVw7fy3Ac1tDszUww9eFfP1oMxybQ== dependencies: "@sanity/types" "^2.0.1" - "eventsource" "^1.0.7" - "fast-deep-equal" "^3.1.3" - "groq" "^2.0.9" - "groq-js" "^0.3.0" - "mendoza" "^2.1.1" - "simple-get" "^4.0.0" - "split2" "^3.2.2" - "throttle-debounce" "^3.0.1" + eventsource "^1.0.7" + fast-deep-equal "^3.1.3" + groq "^2.0.9" + groq-js "^0.3.0" + mendoza "^2.1.1" + simple-get "^4.0.0" + split2 "^3.2.2" + throttle-debounce "^3.0.1" "@sanity/image-url@^0.140.15", "@sanity/image-url@^0.140.22": - "integrity" "sha512-CAmQZnj+KM7FSEYiWlIGDit072syicYuAw0w7R2ctMzHiZ4p9mE/g6dBnYqrqFUrw2J+GpJgPt+RVspKP8vdqA==" - "resolved" "https://registry.npmjs.org/@sanity/image-url/-/image-url-0.140.22.tgz" - "version" "0.140.22" + version "0.140.22" + resolved "https://registry.npmjs.org/@sanity/image-url/-/image-url-0.140.22.tgz" + integrity sha512-CAmQZnj+KM7FSEYiWlIGDit072syicYuAw0w7R2ctMzHiZ4p9mE/g6dBnYqrqFUrw2J+GpJgPt+RVspKP8vdqA== "@sanity/observable@2.0.9": - "integrity" "sha512-IUpzsEbhOhofTBUu2tiQ4Ymbkmhr6oe4UC4Ds1khZ9Td4t4mzzPGmGQIr5SBEDawz0UD7ZgZAb4LeEzV3hUrtA==" - "resolved" "https://registry.npmjs.org/@sanity/observable/-/observable-2.0.9.tgz" - "version" "2.0.9" + version "2.0.9" + resolved "https://registry.npmjs.org/@sanity/observable/-/observable-2.0.9.tgz" + integrity sha512-IUpzsEbhOhofTBUu2tiQ4Ymbkmhr6oe4UC4Ds1khZ9Td4t4mzzPGmGQIr5SBEDawz0UD7ZgZAb4LeEzV3hUrtA== dependencies: - "object-assign" "^4.1.1" - "rxjs" "^6.5.3" + object-assign "^4.1.1" + rxjs "^6.5.3" "@sanity/timed-out@^4.0.2": - "integrity" "sha512-NBDKGj14g9Z+bopIvZcQKWCzJq5JSrdmzRR1CS+iyA3Gm8SnIWBfZa7I3mTg2X6Nu8LQXG0EPKXdOGozLS4i3w==" - "resolved" "https://registry.npmjs.org/@sanity/timed-out/-/timed-out-4.0.2.tgz" - "version" "4.0.2" + version "4.0.2" + resolved "https://registry.npmjs.org/@sanity/timed-out/-/timed-out-4.0.2.tgz" + integrity sha512-NBDKGj14g9Z+bopIvZcQKWCzJq5JSrdmzRR1CS+iyA3Gm8SnIWBfZa7I3mTg2X6Nu8LQXG0EPKXdOGozLS4i3w== "@sanity/types@^2.0.1": - "integrity" "sha512-m88Rq0KBSrXnBksyDTpA++G4K59UQcqzW5bfuqPl8xzU2jkhxUAyboN0TPi7ezqc48OHLGT0PUsJN7YRyYQu3w==" - "resolved" "https://registry.npmjs.org/@sanity/types/-/types-2.19.0.tgz" - "version" "2.19.0" + version "2.19.0" + resolved "https://registry.npmjs.org/@sanity/types/-/types-2.19.0.tgz" + integrity sha512-m88Rq0KBSrXnBksyDTpA++G4K59UQcqzW5bfuqPl8xzU2jkhxUAyboN0TPi7ezqc48OHLGT0PUsJN7YRyYQu3w== dependencies: "@sanity/client" "2.19.0" "@sanity/color" "^2.1.5" "@types/react" "^17.0.0" - "react" "17.0.1" - "rxjs" "^6.5.3" + react "17.0.1" + rxjs "^6.5.3" "@sindresorhus/is@^0.7.0": - "integrity" "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==" - "resolved" "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz" - "version" "0.7.0" + version "0.7.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" + integrity sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow== "@styled-system/background@^5.1.2": - "integrity" "sha512-jtwH2C/U6ssuGSvwTN3ri/IyjdHb8W9X/g8Y0JLcrH02G+BW3OS8kZdHphF1/YyRklnrKrBT2ngwGUK6aqqV3A==" - "resolved" "https://registry.npmjs.org/@styled-system/background/-/background-5.1.2.tgz" - "version" "5.1.2" + version "5.1.2" + resolved "https://registry.yarnpkg.com/@styled-system/background/-/background-5.1.2.tgz#75c63d06b497ab372b70186c0bf608d62847a2ba" + integrity sha512-jtwH2C/U6ssuGSvwTN3ri/IyjdHb8W9X/g8Y0JLcrH02G+BW3OS8kZdHphF1/YyRklnrKrBT2ngwGUK6aqqV3A== dependencies: "@styled-system/core" "^5.1.2" "@styled-system/border@^5.1.5": - "integrity" "sha512-JvddhNrnhGigtzWRCVuAHepniyVi6hBlimxWDVAdcTuk7aRn9BYJUwfHslURtwYFsF5FoEs8Zmr1oZq2M1AP0A==" - "resolved" "https://registry.npmjs.org/@styled-system/border/-/border-5.1.5.tgz" - "version" "5.1.5" + version "5.1.5" + resolved "https://registry.yarnpkg.com/@styled-system/border/-/border-5.1.5.tgz#0493d4332d2b59b74bb0d57d08c73eb555761ba6" + integrity sha512-JvddhNrnhGigtzWRCVuAHepniyVi6hBlimxWDVAdcTuk7aRn9BYJUwfHslURtwYFsF5FoEs8Zmr1oZq2M1AP0A== dependencies: "@styled-system/core" "^5.1.2" "@styled-system/color@^5.1.2": - "integrity" "sha512-1kCkeKDZkt4GYkuFNKc7vJQMcOmTl3bJY3YBUs7fCNM6mMYJeT1pViQ2LwBSBJytj3AB0o4IdLBoepgSgGl5MA==" - "resolved" "https://registry.npmjs.org/@styled-system/color/-/color-5.1.2.tgz" - "version" "5.1.2" + version "5.1.2" + resolved "https://registry.yarnpkg.com/@styled-system/color/-/color-5.1.2.tgz#b8d6b4af481faabe4abca1a60f8daa4ccc2d9f43" + integrity sha512-1kCkeKDZkt4GYkuFNKc7vJQMcOmTl3bJY3YBUs7fCNM6mMYJeT1pViQ2LwBSBJytj3AB0o4IdLBoepgSgGl5MA== dependencies: "@styled-system/core" "^5.1.2" "@styled-system/core@^5.1.2": - "integrity" "sha512-XclBDdNIy7OPOsN4HBsawG2eiWfCcuFt6gxKn1x4QfMIgeO6TOlA2pZZ5GWZtIhCUqEPTgIBta6JXsGyCkLBYw==" - "resolved" "https://registry.npmjs.org/@styled-system/core/-/core-5.1.2.tgz" - "version" "5.1.2" + version "5.1.2" + resolved "https://registry.yarnpkg.com/@styled-system/core/-/core-5.1.2.tgz#b8b7b86455d5a0514f071c4fa8e434b987f6a772" + integrity sha512-XclBDdNIy7OPOsN4HBsawG2eiWfCcuFt6gxKn1x4QfMIgeO6TOlA2pZZ5GWZtIhCUqEPTgIBta6JXsGyCkLBYw== dependencies: - "object-assign" "^4.1.1" + object-assign "^4.1.1" "@styled-system/css@^5.1.5": - "integrity" "sha512-XkORZdS5kypzcBotAMPBoeckDs9aSZVkvrAlq5K3xP8IMAUek+x2O4NtwoSgkYkWWzVBu6DGdFZLR790QWGG+A==" - "resolved" "https://registry.npmjs.org/@styled-system/css/-/css-5.1.5.tgz" - "version" "5.1.5" + version "5.1.5" + resolved "https://registry.yarnpkg.com/@styled-system/css/-/css-5.1.5.tgz#0460d5f3ff962fa649ea128ef58d9584f403bbbc" + integrity sha512-XkORZdS5kypzcBotAMPBoeckDs9aSZVkvrAlq5K3xP8IMAUek+x2O4NtwoSgkYkWWzVBu6DGdFZLR790QWGG+A== "@styled-system/flexbox@^5.1.2": - "integrity" "sha512-6hHV52+eUk654Y1J2v77B8iLeBNtc+SA3R4necsu2VVinSD7+XY5PCCEzBFaWs42dtOEDIa2lMrgL0YBC01mDQ==" - "resolved" "https://registry.npmjs.org/@styled-system/flexbox/-/flexbox-5.1.2.tgz" - "version" "5.1.2" + version "5.1.2" + resolved "https://registry.yarnpkg.com/@styled-system/flexbox/-/flexbox-5.1.2.tgz#077090f43f61c3852df63da24e4108087a8beecf" + integrity sha512-6hHV52+eUk654Y1J2v77B8iLeBNtc+SA3R4necsu2VVinSD7+XY5PCCEzBFaWs42dtOEDIa2lMrgL0YBC01mDQ== dependencies: "@styled-system/core" "^5.1.2" "@styled-system/grid@^5.1.2": - "integrity" "sha512-K3YiV1KyHHzgdNuNlaw8oW2ktMuGga99o1e/NAfTEi5Zsa7JXxzwEnVSDSBdJC+z6R8WYTCYRQC6bkVFcvdTeg==" - "resolved" "https://registry.npmjs.org/@styled-system/grid/-/grid-5.1.2.tgz" - "version" "5.1.2" + version "5.1.2" + resolved "https://registry.yarnpkg.com/@styled-system/grid/-/grid-5.1.2.tgz#7165049877732900b99cd00759679fbe45c6c573" + integrity sha512-K3YiV1KyHHzgdNuNlaw8oW2ktMuGga99o1e/NAfTEi5Zsa7JXxzwEnVSDSBdJC+z6R8WYTCYRQC6bkVFcvdTeg== dependencies: "@styled-system/core" "^5.1.2" "@styled-system/layout@^5.1.2": - "integrity" "sha512-wUhkMBqSeacPFhoE9S6UF3fsMEKFv91gF4AdDWp0Aym1yeMPpqz9l9qS/6vjSsDPF7zOb5cOKC3tcKKOMuDCPw==" - "resolved" "https://registry.npmjs.org/@styled-system/layout/-/layout-5.1.2.tgz" - "version" "5.1.2" + version "5.1.2" + resolved "https://registry.yarnpkg.com/@styled-system/layout/-/layout-5.1.2.tgz#12d73e79887e10062f4dbbbc2067462eace42339" + integrity sha512-wUhkMBqSeacPFhoE9S6UF3fsMEKFv91gF4AdDWp0Aym1yeMPpqz9l9qS/6vjSsDPF7zOb5cOKC3tcKKOMuDCPw== dependencies: "@styled-system/core" "^5.1.2" "@styled-system/position@^5.1.2": - "integrity" "sha512-60IZfMXEOOZe3l1mCu6sj/2NAyUmES2kR9Kzp7s2D3P4qKsZWxD1Se1+wJvevb+1TP+ZMkGPEYYXRyU8M1aF5A==" - "resolved" "https://registry.npmjs.org/@styled-system/position/-/position-5.1.2.tgz" - "version" "5.1.2" + version "5.1.2" + resolved "https://registry.yarnpkg.com/@styled-system/position/-/position-5.1.2.tgz#56961266566836f57a24d8e8e33ce0c1adb59dd3" + integrity sha512-60IZfMXEOOZe3l1mCu6sj/2NAyUmES2kR9Kzp7s2D3P4qKsZWxD1Se1+wJvevb+1TP+ZMkGPEYYXRyU8M1aF5A== dependencies: "@styled-system/core" "^5.1.2" "@styled-system/shadow@^5.1.2": - "integrity" "sha512-wqniqYb7XuZM7K7C0d1Euxc4eGtqEe/lvM0WjuAFsQVImiq6KGT7s7is+0bNI8O4Dwg27jyu4Lfqo/oIQXNzAg==" - "resolved" "https://registry.npmjs.org/@styled-system/shadow/-/shadow-5.1.2.tgz" - "version" "5.1.2" + version "5.1.2" + resolved "https://registry.yarnpkg.com/@styled-system/shadow/-/shadow-5.1.2.tgz#beddab28d7de03cd0177a87ac4ed3b3b6d9831fd" + integrity sha512-wqniqYb7XuZM7K7C0d1Euxc4eGtqEe/lvM0WjuAFsQVImiq6KGT7s7is+0bNI8O4Dwg27jyu4Lfqo/oIQXNzAg== dependencies: "@styled-system/core" "^5.1.2" "@styled-system/space@^5.1.2": - "integrity" "sha512-+zzYpR8uvfhcAbaPXhH8QgDAV//flxqxSjHiS9cDFQQUSznXMQmxJegbhcdEF7/eNnJgHeIXv1jmny78kipgBA==" - "resolved" "https://registry.npmjs.org/@styled-system/space/-/space-5.1.2.tgz" - "version" "5.1.2" + version "5.1.2" + resolved "https://registry.yarnpkg.com/@styled-system/space/-/space-5.1.2.tgz#38925d2fa29a41c0eb20e65b7c3efb6e8efce953" + integrity sha512-+zzYpR8uvfhcAbaPXhH8QgDAV//flxqxSjHiS9cDFQQUSznXMQmxJegbhcdEF7/eNnJgHeIXv1jmny78kipgBA== dependencies: "@styled-system/core" "^5.1.2" "@styled-system/typography@^5.1.2": - "integrity" "sha512-BxbVUnN8N7hJ4aaPOd7wEsudeT7CxarR+2hns8XCX1zp0DFfbWw4xYa/olA0oQaqx7F1hzDg+eRaGzAJbF+jOg==" - "resolved" "https://registry.npmjs.org/@styled-system/typography/-/typography-5.1.2.tgz" - "version" "5.1.2" + version "5.1.2" + resolved "https://registry.yarnpkg.com/@styled-system/typography/-/typography-5.1.2.tgz#65fb791c67d50cd2900d234583eaacdca8c134f7" + integrity sha512-BxbVUnN8N7hJ4aaPOd7wEsudeT7CxarR+2hns8XCX1zp0DFfbWw4xYa/olA0oQaqx7F1hzDg+eRaGzAJbF+jOg== dependencies: "@styled-system/core" "^5.1.2" "@styled-system/variant@^5.1.5": - "integrity" "sha512-Yn8hXAFoWIro8+Q5J8YJd/mP85Teiut3fsGVR9CAxwgNfIAiqlYxsk5iHU7VHJks/0KjL4ATSjmbtCDC/4l1qw==" - "resolved" "https://registry.npmjs.org/@styled-system/variant/-/variant-5.1.5.tgz" - "version" "5.1.5" + version "5.1.5" + resolved "https://registry.yarnpkg.com/@styled-system/variant/-/variant-5.1.5.tgz#8446d8aad06af3a4c723d717841df2dbe4ddeafd" + integrity sha512-Yn8hXAFoWIro8+Q5J8YJd/mP85Teiut3fsGVR9CAxwgNfIAiqlYxsk5iHU7VHJks/0KjL4ATSjmbtCDC/4l1qw== dependencies: "@styled-system/core" "^5.1.2" "@styled-system/css" "^5.1.5" "@trysound/sax@0.1.1": - "integrity" "sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow==" - "resolved" "https://registry.npmjs.org/@trysound/sax/-/sax-0.1.1.tgz" - "version" "0.1.1" + version "0.1.1" + resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.1.1.tgz#3348564048e7a2d7398c935d466c0414ebb6a669" + integrity sha512-Z6DoceYb/1xSg5+e+ZlPZ9v0N16ZvZ+wYMraFue4HYrE4ttONKtsvruIRf6t9TBR0YvSOfi1hUU0fJfBLCDYow== "@types/json-schema@^7.0.6": - "integrity" "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==" - "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz" - "version" "7.0.7" + version "7.0.9" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" + integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== "@types/mdast@^3.0.0": - "integrity" "sha512-SXPBMnFVQg1s00dlMCc/jCdvPqdE4mXaMMCeRlxLDmTAEoegHT53xKtkDnzDTOcmMHUfcjyf36/YYZ6SxRdnsw==" - "resolved" "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.3.tgz" - "version" "3.0.3" + version "3.0.10" + resolved "https://registry.yarnpkg.com/@types/mdast/-/mdast-3.0.10.tgz#4724244a82a4598884cbbe9bcfd73dff927ee8af" + integrity sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA== dependencies: "@types/unist" "*" "@types/node@*": - "integrity" "sha512-YHUZhBOMTM3mjFkXVcK+WwAcYmyhe1wL4lfqNtzI0b3qAy7yuSetnM7QJazgE5PFmgVTNGiLOgRFfJMqW7XpSQ==" - "resolved" "https://registry.npmjs.org/@types/node/-/node-16.9.6.tgz" - "version" "16.9.6" + version "16.9.6" + resolved "https://registry.npmjs.org/@types/node/-/node-16.9.6.tgz" + integrity sha512-YHUZhBOMTM3mjFkXVcK+WwAcYmyhe1wL4lfqNtzI0b3qAy7yuSetnM7QJazgE5PFmgVTNGiLOgRFfJMqW7XpSQ== "@types/parse-json@^4.0.0": - "integrity" "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - "resolved" "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz" - "version" "4.0.0" + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== "@types/prop-types@*": - "integrity" "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==" - "resolved" "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz" - "version" "15.7.3" + version "15.7.4" + resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" + integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== + +"@types/react@>=16.9.11": + version "17.0.39" + resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.39.tgz#d0f4cde092502a6db00a1cded6e6bf2abb7633ce" + integrity sha512-UVavlfAxDd/AgAacMa60Azl7ygyQNRwC/DsHZmKgNvPmRR5p70AJ5Q9EAmL2NWOJmeV+vVUI4IAP7GZrN8h8Ug== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" -"@types/react@^16.9.11", "@types/react@^16.9.23": - "integrity" "sha512-6cFei7F7L4wwuM+IND/Q2cV1koQUvJ8iSV+Gwn0c3kvABZ691g7sp3hfEQHOUBJtccl1gPi+EyNjMIl9nGA0ug==" - "resolved" "https://registry.npmjs.org/@types/react/-/react-16.9.41.tgz" - "version" "16.9.41" +"@types/react@^16.9.23": + version "16.14.23" + resolved "https://registry.yarnpkg.com/@types/react/-/react-16.14.23.tgz#37201b9f2324c5ff8fa4600dbf19079dfdffc880" + integrity sha512-WngBZLuSkP4IAgPi0HOsGCHo6dn3CcuLQnCfC17VbA7YBgipZiZoTOhObwl/93DsFW0Y2a/ZXeonpW4DxirEJg== dependencies: "@types/prop-types" "*" - "csstype" "^2.2.0" + "@types/scheduler" "*" + csstype "^3.0.2" "@types/react@^17.0.0": - "integrity" "sha512-eIpyco99gTH+FTI3J7Oi/OH8MZoFMJuztNRimDOJwH4iGIsKV2qkGnk4M9VzlaVWeEEWLWSQRy0FEA0Kz218cg==" - "resolved" "https://registry.npmjs.org/@types/react/-/react-17.0.24.tgz" - "version" "17.0.24" + version "17.0.24" + resolved "https://registry.npmjs.org/@types/react/-/react-17.0.24.tgz" + integrity sha512-eIpyco99gTH+FTI3J7Oi/OH8MZoFMJuztNRimDOJwH4iGIsKV2qkGnk4M9VzlaVWeEEWLWSQRy0FEA0Kz218cg== dependencies: "@types/prop-types" "*" "@types/scheduler" "*" - "csstype" "^3.0.2" + csstype "^3.0.2" "@types/scheduler@*": - "integrity" "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" - "resolved" "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" - "version" "0.16.2" + version "0.16.2" + resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" + integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== "@types/unist@*", "@types/unist@^2.0.0", "@types/unist@^2.0.2": - "integrity" "sha512-FvUupuM3rlRsRtCN+fDudtmytGO6iHJuuRKS1Ss0pG5z8oX0diNEw94UEL7hgDbpN94rgaK5R7sWm6RrSkZuAQ==" - "resolved" "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz" - "version" "2.0.3" + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/unist/-/unist-2.0.6.tgz#250a7b16c3b91f672a24552ec64678eeb1d3a08d" + integrity sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ== "@types/warning@^3.0.0": - "integrity" "sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI=" - "resolved" "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz" - "version" "3.0.0" - -"ajv-errors@^1.0.0": - "integrity" "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==" - "resolved" "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz" - "version" "1.0.1" - -"ajv-keywords@^3.1.0", "ajv-keywords@^3.5.2": - "integrity" "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==" - "resolved" "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" - "version" "3.5.2" - -"ajv@^6.1.0", "ajv@^6.12.5": - "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" - "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - "version" "6.12.6" - dependencies: - "fast-deep-equal" "^3.1.1" - "fast-json-stable-stringify" "^2.0.0" - "json-schema-traverse" "^0.4.1" - "uri-js" "^4.2.2" - -"anser@1.4.9": - "integrity" "sha512-AI+BjTeGt2+WFk4eWcqbQ7snZpDBt8SaLlj0RT2h5xfdWaiy51OjYvqwMrNzJLGy8iOAL6nKDITWO+rd4MkYEA==" - "resolved" "https://registry.npmjs.org/anser/-/anser-1.4.9.tgz" - "version" "1.4.9" - -"ansi-regex@^2.0.0": - "integrity" "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" - "version" "2.1.1" - -"ansi-regex@^5.0.0": - "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" - "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - "version" "5.0.1" - -"ansi-styles@^2.2.1": - "integrity" "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" - "version" "2.2.1" - -"ansi-styles@^3.2.1": - "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" - "version" "3.2.1" - dependencies: - "color-convert" "^1.9.0" - -"ansi-styles@^4.1.0": - "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" - "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - "version" "4.3.0" - dependencies: - "color-convert" "^2.0.1" - -"anymatch@~3.1.1": - "integrity" "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==" - "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "normalize-path" "^3.0.0" - "picomatch" "^2.0.4" - -"aos@^3.0.0-beta.6": - "integrity" "sha512-VLWrpq8bfAWcetynVHMMrqdC+89Qq/Ym6UBJbHB4crIwp3RR8uq1dNGgsFzoDl03S43rlVMK+na3r5+oUCZsYw==" - "resolved" "https://registry.npmjs.org/aos/-/aos-3.0.0-beta.6.tgz" - "version" "3.0.0-beta.6" - dependencies: - "classlist-polyfill" "^1.2.0" - "lodash.debounce" "^4.0.8" - "lodash.throttle" "^4.1.1" - -"arch@^2.1.0": - "integrity" "sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ==" - "resolved" "https://registry.npmjs.org/arch/-/arch-2.1.2.tgz" - "version" "2.1.2" - -"archive-type@^4.0.0": - "integrity" "sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA=" - "resolved" "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "file-type" "^4.2.0" - -"argparse@^1.0.7": - "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" - "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" - "version" "1.0.10" - dependencies: - "sprintf-js" "~1.0.2" - -"arr-diff@^4.0.0": - "integrity" "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" - "resolved" "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" - "version" "4.0.0" - -"arr-flatten@^1.1.0": - "integrity" "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - "resolved" "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" - "version" "1.1.0" - -"arr-union@^3.1.0": - "integrity" "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - "resolved" "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" - "version" "3.1.0" - -"array-find-index@^1.0.1": - "integrity" "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" - "resolved" "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz" - "version" "1.0.2" - -"array-union@^1.0.1": - "integrity" "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=" - "resolved" "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "array-uniq" "^1.0.1" - -"array-uniq@^1.0.1": - "integrity" "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=" - "resolved" "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" - "version" "1.0.3" - -"array-unique@^0.3.2": - "integrity" "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" - "resolved" "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" - "version" "0.3.2" - -"arrify@^1.0.1": - "integrity" "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" - "resolved" "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" - "version" "1.0.1" - -"asn1.js@^5.2.0": - "integrity" "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==" - "resolved" "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" - "version" "5.4.1" - dependencies: - "bn.js" "^4.0.0" - "inherits" "^2.0.1" - "minimalistic-assert" "^1.0.0" - "safer-buffer" "^2.1.0" - -"assert@^1.1.1": - "integrity" "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==" - "resolved" "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz" - "version" "1.5.0" - dependencies: - "object-assign" "^4.1.1" - "util" "0.10.3" - -"assert@2.0.0": - "integrity" "sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A==" - "resolved" "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "es6-object-assign" "^1.1.0" - "is-nan" "^1.2.1" - "object-is" "^1.0.1" - "util" "^0.12.0" - -"assign-symbols@^1.0.0": - "integrity" "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - "resolved" "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" - "version" "1.0.0" - -"ast-types@0.13.2": - "integrity" "sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA==" - "resolved" "https://registry.npmjs.org/ast-types/-/ast-types-0.13.2.tgz" - "version" "0.13.2" - -"atob@^2.1.2": - "integrity" "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - "resolved" "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" - "version" "2.1.2" - -"available-typed-arrays@^1.0.5": - "integrity" "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==" - "resolved" "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" - "version" "1.0.5" - -"babel-plugin-emotion@^10.0.27": - "integrity" "sha512-bxZbTTGz0AJQDHm8k6Rf3RQJ8tX2scsfsRyKVgAbiUPUNIRtlK+7JxP+TAd1kRLABFxe0CFm2VdK4ePkoA9FxQ==" - "resolved" "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.0.33.tgz" - "version" "10.0.33" + version "3.0.0" + resolved "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz" + integrity sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI= + +ajv-errors@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz" + integrity sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ== + +ajv-keywords@^3.1.0, ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv@^6.1.0, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +anser@1.4.9: + version "1.4.9" + resolved "https://registry.npmjs.org/anser/-/anser-1.4.9.tgz" + integrity sha512-AI+BjTeGt2+WFk4eWcqbQ7snZpDBt8SaLlj0RT2h5xfdWaiy51OjYvqwMrNzJLGy8iOAL6nKDITWO+rd4MkYEA== + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^5.0.0: + version "5.0.1" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.1: + version "3.1.2" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +aos@^3.0.0-beta.6: + version "3.0.0-beta.6" + resolved "https://registry.npmjs.org/aos/-/aos-3.0.0-beta.6.tgz" + integrity sha512-VLWrpq8bfAWcetynVHMMrqdC+89Qq/Ym6UBJbHB4crIwp3RR8uq1dNGgsFzoDl03S43rlVMK+na3r5+oUCZsYw== + dependencies: + classlist-polyfill "^1.2.0" + lodash.debounce "^4.0.8" + lodash.throttle "^4.1.1" + +arch@^2.1.0: + version "2.1.2" + resolved "https://registry.npmjs.org/arch/-/arch-2.1.2.tgz" + integrity sha512-NTBIIbAfkJeIletyABbVtdPgeKfDafR+1mZV/AyyfC1UkVkp9iUjV+wwmqtUgphHYajbI86jejBJp5e+jkGTiQ== + +archive-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz" + integrity sha1-+S5yIzBW38aWlHJ0nCZ72wRrHXA= + dependencies: + file-type "^4.2.0" + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-find-index@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz" + integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +arrify@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" + integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= + +asn1.js@^5.2.0: + version "5.4.1" + resolved "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz" + integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + safer-buffer "^2.1.0" + +assert@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/assert/-/assert-2.0.0.tgz" + integrity sha512-se5Cd+js9dXJnu6Ag2JFc00t+HmHOen+8Q+L7O9zI0PqQXr20uk2J0XQqMxZEeo5U50o8Nvmmx7dZrl+Ufr35A== + dependencies: + es6-object-assign "^1.1.0" + is-nan "^1.2.1" + object-is "^1.0.1" + util "^0.12.0" + +assert@^1.1.1: + version "1.5.0" + resolved "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz" + integrity sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA== + dependencies: + object-assign "^4.1.1" + util "0.10.3" + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +ast-types@0.13.2: + version "0.13.2" + resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.13.2.tgz" + integrity sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA== + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +available-typed-arrays@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz" + integrity sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw== + +babel-plugin-emotion@^10.0.27: + version "10.0.33" + resolved "https://registry.npmjs.org/babel-plugin-emotion/-/babel-plugin-emotion-10.0.33.tgz" + integrity sha512-bxZbTTGz0AJQDHm8k6Rf3RQJ8tX2scsfsRyKVgAbiUPUNIRtlK+7JxP+TAd1kRLABFxe0CFm2VdK4ePkoA9FxQ== dependencies: "@babel/helper-module-imports" "^7.0.0" "@emotion/hash" "0.8.0" "@emotion/memoize" "0.7.4" "@emotion/serialize" "^0.11.16" - "babel-plugin-macros" "^2.0.0" - "babel-plugin-syntax-jsx" "^6.18.0" - "convert-source-map" "^1.5.0" - "escape-string-regexp" "^1.0.5" - "find-root" "^1.1.0" - "source-map" "^0.5.7" - -"babel-plugin-macros@^2.0.0": - "integrity" "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==" - "resolved" "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz" - "version" "2.8.0" + babel-plugin-macros "^2.0.0" + babel-plugin-syntax-jsx "^6.18.0" + convert-source-map "^1.5.0" + escape-string-regexp "^1.0.5" + find-root "^1.1.0" + source-map "^0.5.7" + +babel-plugin-macros@^2.0.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138" + integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg== dependencies: "@babel/runtime" "^7.7.2" - "cosmiconfig" "^6.0.0" - "resolve" "^1.12.0" + cosmiconfig "^6.0.0" + resolve "^1.12.0" -"babel-plugin-styled-components@^1.10.7", "babel-plugin-styled-components@>= 1": - "integrity" "sha512-MBMHGcIA22996n9hZRf/UJLVVgkEOITuR2SvjHLb5dSTUyR4ZRGn+ngITapes36FI3WLxZHfRhkA1ffHxihOrg==" - "resolved" "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.7.tgz" - "version" "1.10.7" +"babel-plugin-styled-components@>= 1.12.0": + version "2.0.2" + resolved "https://registry.yarnpkg.com/babel-plugin-styled-components/-/babel-plugin-styled-components-2.0.2.tgz#0fac11402dc9db73698b55847ab1dc73f5197c54" + integrity sha512-7eG5NE8rChnNTDxa6LQfynwgHTVOYYaHJbUYSlOhk8QBXIQiMBKq4gyfHBBKPrxUcVBXVJL61ihduCpCQbuNbw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.16.0" + "@babel/helper-module-imports" "^7.16.0" + babel-plugin-syntax-jsx "^6.18.0" + lodash "^4.17.11" + +babel-plugin-styled-components@^1.10.7: + version "1.10.7" + resolved "https://registry.npmjs.org/babel-plugin-styled-components/-/babel-plugin-styled-components-1.10.7.tgz" + integrity sha512-MBMHGcIA22996n9hZRf/UJLVVgkEOITuR2SvjHLb5dSTUyR4ZRGn+ngITapes36FI3WLxZHfRhkA1ffHxihOrg== dependencies: "@babel/helper-annotate-as-pure" "^7.0.0" "@babel/helper-module-imports" "^7.0.0" - "babel-plugin-syntax-jsx" "^6.18.0" - "lodash" "^4.17.11" - -"babel-plugin-syntax-jsx@^6.18.0": - "integrity" "sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=" - "resolved" "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz" - "version" "6.18.0" - -"babel-plugin-transform-define@^2.0.0": - "integrity" "sha512-0dv5RNRUlUKxGYIIErl01lpvi8b7W2R04Qcl1mCj70ahwZcgiklfXnFlh4FGnRh6aayCfSZKdhiMryVzcq5Dmg==" - "resolved" "https://registry.npmjs.org/babel-plugin-transform-define/-/babel-plugin-transform-define-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "lodash" "^4.17.11" - "traverse" "0.6.6" - -"bail@^1.0.0": - "integrity" "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==" - "resolved" "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz" - "version" "1.0.5" - -"balanced-match@^1.0.0": - "integrity" "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" - "version" "1.0.0" - -"base@^0.11.1": - "integrity" "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==" - "resolved" "https://registry.npmjs.org/base/-/base-0.11.2.tgz" - "version" "0.11.2" - dependencies: - "cache-base" "^1.0.1" - "class-utils" "^0.3.5" - "component-emitter" "^1.2.1" - "define-property" "^1.0.0" - "isobject" "^3.0.1" - "mixin-deep" "^1.2.0" - "pascalcase" "^0.1.1" - -"base64-js@^1.0.2": - "integrity" "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" - "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz" - "version" "1.3.1" - -"big.js@^5.2.2": - "integrity" "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==" - "resolved" "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" - "version" "5.2.2" - -"bin-build@^3.0.0": - "integrity" "sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA==" - "resolved" "https://registry.npmjs.org/bin-build/-/bin-build-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "decompress" "^4.0.0" - "download" "^6.2.2" - "execa" "^0.7.0" - "p-map-series" "^1.0.0" - "tempfile" "^2.0.0" - -"bin-check@^4.1.0": - "integrity" "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==" - "resolved" "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "execa" "^0.7.0" - "executable" "^4.1.0" - -"bin-version-check@^4.0.0": - "integrity" "sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ==" - "resolved" "https://registry.npmjs.org/bin-version-check/-/bin-version-check-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "bin-version" "^3.0.0" - "semver" "^5.6.0" - "semver-truncate" "^1.1.2" - -"bin-version@^3.0.0": - "integrity" "sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ==" - "resolved" "https://registry.npmjs.org/bin-version/-/bin-version-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "execa" "^1.0.0" - "find-versions" "^3.0.0" - -"bin-wrapper@^4.0.0": - "integrity" "sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q==" - "resolved" "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "bin-check" "^4.1.0" - "bin-version-check" "^4.0.0" - "download" "^7.1.0" - "import-lazy" "^3.1.0" - "os-filter-obj" "^2.0.0" - "pify" "^4.0.1" - -"binary-extensions@^2.0.0": - "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" - "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" - "version" "2.2.0" - -"bl@^1.0.0": - "integrity" "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==" - "resolved" "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz" - "version" "1.2.2" - dependencies: - "readable-stream" "^2.3.5" - "safe-buffer" "^5.1.1" - -"bn.js@^4.0.0": - "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" - "version" "4.12.0" - -"bn.js@^4.1.0": - "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" - "version" "4.12.0" - -"bn.js@^4.11.9": - "integrity" "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" - "version" "4.12.0" - -"bn.js@^5.0.0", "bn.js@^5.1.1": - "integrity" "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==" - "resolved" "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz" - "version" "5.2.0" - -"boolbase@^1.0.0": - "integrity" "sha1-aN/1++YMUes3cl6p4+0xDcwed24=" - "resolved" "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" - "version" "1.0.0" - -"bootstrap@^4.5.0": - "integrity" "sha512-Z93QoXvodoVslA+PWNdk23Hze4RBYIkpb5h8I2HY2Tu2h7A0LpAgLcyrhrSUyo2/Oxm2l1fRZPs1e5hnxnliXA==" - "resolved" "https://registry.npmjs.org/bootstrap/-/bootstrap-4.5.0.tgz" - "version" "4.5.0" - -"brace-expansion@^1.1.7": - "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" - "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - "version" "1.1.11" - dependencies: - "balanced-match" "^1.0.0" - "concat-map" "0.0.1" - -"braces@^2.3.1": - "integrity" "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==" - "resolved" "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" - "version" "2.3.2" - dependencies: - "arr-flatten" "^1.1.0" - "array-unique" "^0.3.2" - "extend-shallow" "^2.0.1" - "fill-range" "^4.0.0" - "isobject" "^3.0.1" - "repeat-element" "^1.1.2" - "snapdragon" "^0.8.1" - "snapdragon-node" "^2.0.1" - "split-string" "^3.0.2" - "to-regex" "^3.0.1" - -"braces@~3.0.2": - "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" - "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "fill-range" "^7.0.1" - -"brorand@^1.0.1", "brorand@^1.1.0": - "integrity" "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" - "resolved" "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" - "version" "1.1.0" - -"browser-split@0.0.0": - "integrity" "sha1-QUGcrvdpdVkp3VGJZ9PuwKYmJ3E=" - "resolved" "https://registry.npmjs.org/browser-split/-/browser-split-0.0.0.tgz" - "version" "0.0.0" - -"browserify-aes@^1.0.0", "browserify-aes@^1.0.4": - "integrity" "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==" - "resolved" "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "buffer-xor" "^1.0.3" - "cipher-base" "^1.0.0" - "create-hash" "^1.1.0" - "evp_bytestokey" "^1.0.3" - "inherits" "^2.0.1" - "safe-buffer" "^5.0.1" - -"browserify-cipher@^1.0.0": - "integrity" "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==" - "resolved" "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "browserify-aes" "^1.0.4" - "browserify-des" "^1.0.0" - "evp_bytestokey" "^1.0.0" - -"browserify-des@^1.0.0": - "integrity" "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==" - "resolved" "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "cipher-base" "^1.0.1" - "des.js" "^1.0.0" - "inherits" "^2.0.1" - "safe-buffer" "^5.1.2" - -"browserify-rsa@^4.0.0", "browserify-rsa@^4.0.1": - "integrity" "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==" - "resolved" "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "bn.js" "^5.0.0" - "randombytes" "^2.0.1" - -"browserify-sign@^4.0.0": - "integrity" "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==" - "resolved" "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz" - "version" "4.2.1" - dependencies: - "bn.js" "^5.1.1" - "browserify-rsa" "^4.0.1" - "create-hash" "^1.2.0" - "create-hmac" "^1.1.7" - "elliptic" "^6.5.3" - "inherits" "^2.0.4" - "parse-asn1" "^5.1.5" - "readable-stream" "^3.6.0" - "safe-buffer" "^5.2.0" - -"browserify-zlib@^0.2.0", "browserify-zlib@0.2.0": - "integrity" "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==" - "resolved" "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz" - "version" "0.2.0" - dependencies: - "pako" "~1.0.5" - -"browserslist@4.16.6": - "integrity" "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==" - "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz" - "version" "4.16.6" - dependencies: - "caniuse-lite" "^1.0.30001219" - "colorette" "^1.2.2" - "electron-to-chromium" "^1.3.723" - "escalade" "^3.1.1" - "node-releases" "^1.1.71" - -"buffer-alloc-unsafe@^1.1.0": - "integrity" "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" - "resolved" "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz" - "version" "1.1.0" - -"buffer-alloc@^1.2.0": - "integrity" "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==" - "resolved" "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "buffer-alloc-unsafe" "^1.1.0" - "buffer-fill" "^1.0.0" - -"buffer-crc32@~0.2.3": - "integrity" "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" - "resolved" "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" - "version" "0.2.13" - -"buffer-fill@^1.0.0": - "integrity" "sha1-+PeLdniYiO858gXNY39o5wISKyw=" - "resolved" "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz" - "version" "1.0.0" - -"buffer-xor@^1.0.3": - "integrity" "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" - "resolved" "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" - "version" "1.0.3" - -"buffer@^4.3.0": - "integrity" "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz" - "version" "4.9.2" - dependencies: - "base64-js" "^1.0.2" - "ieee754" "^1.1.4" - "isarray" "^1.0.0" - -"buffer@^5.2.1", "buffer@5.6.0": - "integrity" "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==" - "resolved" "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz" - "version" "5.6.0" - dependencies: - "base64-js" "^1.0.2" - "ieee754" "^1.1.4" - -"builtin-status-codes@^3.0.0": - "integrity" "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" - "resolved" "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" - "version" "3.0.0" - -"bytes@3.1.0": - "integrity" "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - "resolved" "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz" - "version" "3.1.0" - -"cache-base@^1.0.1": - "integrity" "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==" - "resolved" "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "collection-visit" "^1.0.0" - "component-emitter" "^1.2.1" - "get-value" "^2.0.6" - "has-value" "^1.0.0" - "isobject" "^3.0.1" - "set-value" "^2.0.0" - "to-object-path" "^0.3.0" - "union-value" "^1.0.0" - "unset-value" "^1.0.0" - -"cacheable-request@^2.1.1": - "integrity" "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=" - "resolved" "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz" - "version" "2.1.4" - dependencies: - "clone-response" "1.0.2" - "get-stream" "3.0.0" - "http-cache-semantics" "3.8.1" - "keyv" "3.0.0" - "lowercase-keys" "1.0.0" - "normalize-url" "2.0.1" - "responselike" "1.0.2" - -"call-bind@^1.0.0", "call-bind@^1.0.2": - "integrity" "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==" - "resolved" "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "function-bind" "^1.1.1" - "get-intrinsic" "^1.0.2" - -"call-me-maybe@^1.0.1": - "integrity" "sha1-JtII6onje1y95gJQoV8DHBak1ms=" - "resolved" "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz" - "version" "1.0.1" - -"callsites@^3.0.0": - "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" - "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - "version" "3.1.0" - -"camelcase-keys@^2.0.0": - "integrity" "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=" - "resolved" "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "camelcase" "^2.0.0" - "map-obj" "^1.0.0" - -"camelcase@^2.0.0": - "integrity" "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz" - "version" "2.1.1" - -"camelcase@^5.0.0": - "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" - "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" - "version" "5.3.1" - -"camelize@^1.0.0": - "integrity" "sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=" - "resolved" "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz" - "version" "1.0.0" - -"caniuse-lite@^1.0.30001202", "caniuse-lite@^1.0.30001219", "caniuse-lite@^1.0.30001228": - "integrity" "sha512-V7mQTFhjITxuk9zBpI6nYsiTXhcPe05l+364nZjK7MFK/E7ibvYBSAXr4YcA6oPR8j3ZLM/LN+lUqUVAQEUZFg==" - "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001259.tgz" - "version" "1.0.30001259" - -"capture-stack-trace@^1.0.0": - "integrity" "sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw==" - "resolved" "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz" - "version" "1.0.1" - -"caw@^2.0.0", "caw@^2.0.1": - "integrity" "sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA==" - "resolved" "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "get-proxy" "^2.0.0" - "isurl" "^1.0.0-alpha5" - "tunnel-agent" "^0.6.0" - "url-to-options" "^1.0.1" - -"ccount@^1.0.0": - "integrity" "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==" - "resolved" "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz" - "version" "1.1.0" - -"chalk@^1.0.0": - "integrity" "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "ansi-styles" "^2.2.1" - "escape-string-regexp" "^1.0.2" - "has-ansi" "^2.0.0" - "strip-ansi" "^3.0.0" - "supports-color" "^2.0.0" - -"chalk@^2.0.0", "chalk@^2.4.2", "chalk@2.4.2": - "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" - "version" "2.4.2" - dependencies: - "ansi-styles" "^3.2.1" - "escape-string-regexp" "^1.0.5" - "supports-color" "^5.3.0" - -"chalk@^4.1.0": - "integrity" "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz" - "version" "4.1.1" - dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" - -"chalk@4.0.0": - "integrity" "sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A==" - "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "ansi-styles" "^4.1.0" - "supports-color" "^7.1.0" - -"character-entities-html4@^1.0.0": - "integrity" "sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g==" - "resolved" "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz" - "version" "1.1.4" - -"character-entities-legacy@^1.0.0": - "integrity" "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==" - "resolved" "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz" - "version" "1.1.4" - -"character-entities@^1.0.0": - "integrity" "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==" - "resolved" "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz" - "version" "1.2.4" - -"character-reference-invalid@^1.0.0": - "integrity" "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==" - "resolved" "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz" - "version" "1.1.4" - -"charenc@0.0.2": - "integrity" "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=" - "resolved" "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz" - "version" "0.0.2" - -"chokidar@>=2.0.0 <4.0.0", "chokidar@3.5.1": - "integrity" "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==" - "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz" - "version" "3.5.1" - dependencies: - "anymatch" "~3.1.1" - "braces" "~3.0.2" - "glob-parent" "~5.1.0" - "is-binary-path" "~2.1.0" - "is-glob" "~4.0.1" - "normalize-path" "~3.0.0" - "readdirp" "~3.5.0" + babel-plugin-syntax-jsx "^6.18.0" + lodash "^4.17.11" + +babel-plugin-syntax-jsx@^6.18.0: + version "6.18.0" + resolved "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz" + integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= + +babel-plugin-transform-define@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/babel-plugin-transform-define/-/babel-plugin-transform-define-2.0.0.tgz" + integrity sha512-0dv5RNRUlUKxGYIIErl01lpvi8b7W2R04Qcl1mCj70ahwZcgiklfXnFlh4FGnRh6aayCfSZKdhiMryVzcq5Dmg== + dependencies: + lodash "^4.17.11" + traverse "0.6.6" + +bail@^1.0.0: + version "1.0.5" + resolved "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz" + integrity sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2: + version "1.3.1" + resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.npmjs.org/base/-/base-0.11.2.tgz" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +bin-build@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/bin-build/-/bin-build-3.0.0.tgz" + integrity sha512-jcUOof71/TNAI2uM5uoUaDq2ePcVBQ3R/qhxAz1rX7UfvduAL/RXD3jXzvn8cVcDJdGVkiR1shal3OH0ImpuhA== + dependencies: + decompress "^4.0.0" + download "^6.2.2" + execa "^0.7.0" + p-map-series "^1.0.0" + tempfile "^2.0.0" + +bin-check@^4.1.0: + version "4.1.0" + resolved "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz" + integrity sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA== + dependencies: + execa "^0.7.0" + executable "^4.1.0" + +bin-version-check@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/bin-version-check/-/bin-version-check-4.0.0.tgz" + integrity sha512-sR631OrhC+1f8Cvs8WyVWOA33Y8tgwjETNPyyD/myRBXLkfS/vl74FmH/lFcRl9KY3zwGh7jFhvyk9vV3/3ilQ== + dependencies: + bin-version "^3.0.0" + semver "^5.6.0" + semver-truncate "^1.1.2" + +bin-version@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/bin-version/-/bin-version-3.1.0.tgz" + integrity sha512-Mkfm4iE1VFt4xd4vH+gx+0/71esbfus2LsnCGe8Pi4mndSPyT+NGES/Eg99jx8/lUGWfu3z2yuB/bt5UB+iVbQ== + dependencies: + execa "^1.0.0" + find-versions "^3.0.0" + +bin-wrapper@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/bin-wrapper/-/bin-wrapper-4.1.0.tgz" + integrity sha512-hfRmo7hWIXPkbpi0ZltboCMVrU+0ClXR/JgbCKKjlDjQf6igXa7OwdqNcFWQZPZTgiY7ZpzE3+LjjkLiTN2T7Q== + dependencies: + bin-check "^4.1.0" + bin-version-check "^4.0.0" + download "^7.1.0" + import-lazy "^3.1.0" + os-filter-obj "^2.0.0" + pify "^4.0.1" + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bl@^1.0.0: + version "1.2.2" + resolved "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz" + integrity sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA== + dependencies: + readable-stream "^2.3.5" + safe-buffer "^5.1.1" + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9: + version "4.12.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" + integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== + +bn.js@^5.0.0, bn.js@^5.1.1: + version "5.2.0" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz" + integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +bootstrap@^4.5.0: + version "4.5.0" + resolved "https://registry.npmjs.org/bootstrap/-/bootstrap-4.5.0.tgz" + integrity sha512-Z93QoXvodoVslA+PWNdk23Hze4RBYIkpb5h8I2HY2Tu2h7A0LpAgLcyrhrSUyo2/Oxm2l1fRZPs1e5hnxnliXA== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^2.3.1: + version "2.3.2" + resolved "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1, brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +browser-split@0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/browser-split/-/browser-split-0.0.0.tgz" + integrity sha1-QUGcrvdpdVkp3VGJZ9PuwKYmJ3E= + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.1.0" + resolved "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz" + integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog== + dependencies: + bn.js "^5.0.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.1" + resolved "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz" + integrity sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.3" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserify-zlib@0.2.0, browserify-zlib@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz" + integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA== + dependencies: + pako "~1.0.5" + +browserslist@4.16.6: + version "4.16.6" + resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz" + integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== + dependencies: + caniuse-lite "^1.0.30001219" + colorette "^1.2.2" + electron-to-chromium "^1.3.723" + escalade "^3.1.1" + node-releases "^1.1.71" + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" + integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@5.6.0, buffer@^5.2.1: + version "5.6.0" + resolved "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz" + integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + +buffer@^4.3.0: + version "4.9.2" + resolved "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz" + integrity sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + isarray "^1.0.0" + +builtin-status-codes@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz" + integrity sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug= + +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + +cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +cacheable-request@^2.1.1: + version "2.1.4" + resolved "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz" + integrity sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0= + dependencies: + clone-response "1.0.2" + get-stream "3.0.0" + http-cache-semantics "3.8.1" + keyv "3.0.0" + lowercase-keys "1.0.0" + normalize-url "2.0.1" + responselike "1.0.2" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz" + integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= + dependencies: + camelcase "^2.0.0" + map-obj "^1.0.0" + +camelcase@^2.0.0: + version "2.1.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +camelcase@^5.0.0: + version "5.3.1" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelize@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz" + integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs= + +caniuse-lite@^1.0.30001202, caniuse-lite@^1.0.30001219, caniuse-lite@^1.0.30001228: + version "1.0.30001259" + resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001259.tgz" + integrity sha512-V7mQTFhjITxuk9zBpI6nYsiTXhcPe05l+364nZjK7MFK/E7ibvYBSAXr4YcA6oPR8j3ZLM/LN+lUqUVAQEUZFg== + +capture-stack-trace@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.1.tgz" + integrity sha512-mYQLZnx5Qt1JgB1WEiMCf2647plpGeQ2NMR/5L0HNZzGQo4fuSPnK+wjfPnKZV0aiJDgzmWqqkV/g7JD+DW0qw== + +caw@^2.0.0, caw@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/caw/-/caw-2.0.1.tgz" + integrity sha512-Cg8/ZSBEa8ZVY9HspcGUYaK63d/bN7rqS3CYCzEGUxuYv6UlmcjzDUz2fCFFHyTvUW5Pk0I+3hkA3iXlIj6guA== + dependencies: + get-proxy "^2.0.0" + isurl "^1.0.0-alpha5" + tunnel-agent "^0.6.0" + url-to-options "^1.0.1" + +ccount@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz" + integrity sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg== + +chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.0.0.tgz" + integrity sha512-N9oWFcegS0sFr9oh1oz2d7Npos6vNoWW9HvtCg5N1KRFpUhaAhvTv5Y58g880fZaEYSNm3qDz8SU1UrGvp+n7A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^1.0.0: + version "1.1.3" + resolved "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz" + integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +character-entities-html4@^1.0.0: + version "1.1.4" + resolved "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-1.1.4.tgz" + integrity sha512-HRcDxZuZqMx3/a+qrzxdBKBPUpxWEq9xw2OPZ3a/174ihfrQKVsFhqtthBInFy1zZ9GgZyFXOatNujm8M+El3g== + +character-entities-legacy@^1.0.0: + version "1.1.4" + resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz" + integrity sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA== + +character-entities@^1.0.0: + version "1.2.4" + resolved "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz" + integrity sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw== + +character-reference-invalid@^1.0.0: + version "1.1.4" + resolved "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz" + integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== + +charenc@0.0.2: + version "0.0.2" + resolved "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz" + integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= + +chokidar@3.5.1, "chokidar@>=2.0.0 <4.0.0": + version "3.5.1" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" optionalDependencies: - "fsevents" "~2.3.1" - -"cipher-base@^1.0.0", "cipher-base@^1.0.1", "cipher-base@^1.0.3": - "integrity" "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==" - "resolved" "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "inherits" "^2.0.1" - "safe-buffer" "^5.0.1" - -"class-list@~0.1.0", "class-list@~0.1.1": - "integrity" "sha1-m5dFGSxBebXaCg12M2WOPHDXlss=" - "resolved" "https://registry.npmjs.org/class-list/-/class-list-0.1.1.tgz" - "version" "0.1.1" - dependencies: - "indexof" "0.0.1" - -"class-utils@^0.3.5": - "integrity" "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==" - "resolved" "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" - "version" "0.3.6" - dependencies: - "arr-union" "^3.1.0" - "define-property" "^0.2.5" - "isobject" "^3.0.0" - "static-extend" "^0.1.1" - -"classlist-polyfill@^1.2.0": - "integrity" "sha1-k1vC39lFiodrJ5YXUUY4vKqWSi4=" - "resolved" "https://registry.npmjs.org/classlist-polyfill/-/classlist-polyfill-1.2.0.tgz" - "version" "1.2.0" - -"classnames@^2.2.5", "classnames@^2.2.6", "classnames@2.2.6": - "integrity" "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" - "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz" - "version" "2.2.6" - -"clone-response@1.0.2": - "integrity" "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=" - "resolved" "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "mimic-response" "^1.0.0" - -"collection-visit@^1.0.0": - "integrity" "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=" - "resolved" "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "map-visit" "^1.0.0" - "object-visit" "^1.0.0" - -"color-convert@^1.9.0": - "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" - "version" "1.9.3" - dependencies: - "color-name" "1.1.3" - -"color-convert@^2.0.1": - "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" - "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "color-name" "~1.1.4" - -"color-name@~1.1.4": - "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - "version" "1.1.4" - -"color-name@1.1.3": - "integrity" "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" - "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" - "version" "1.1.3" - -"colorette@^1.2.2": - "integrity" "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==" - "resolved" "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" - "version" "1.4.0" - -"comma-separated-tokens@^1.0.0": - "integrity" "sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==" - "resolved" "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz" - "version" "1.0.8" - -"commander@^7.1.0": - "integrity" "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" - "resolved" "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" - "version" "7.2.0" - -"commander@~2.8.1": - "integrity" "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=" - "resolved" "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz" - "version" "2.8.1" - dependencies: - "graceful-readlink" ">= 1.0.0" - -"commondir@^1.0.1": - "integrity" "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" - "resolved" "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" - "version" "1.0.1" - -"component-emitter@^1.2.1": - "integrity" "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" - "resolved" "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" - "version" "1.3.0" - -"concat-map@0.0.1": - "integrity" "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - "version" "0.0.1" - -"config-chain@^1.1.11": - "integrity" "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==" - "resolved" "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz" - "version" "1.1.12" - dependencies: - "ini" "^1.3.4" - "proto-list" "~1.2.1" - -"console-browserify@^1.1.0": - "integrity" "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" - "resolved" "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz" - "version" "1.2.0" - -"console-stream@^0.1.1": - "integrity" "sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ=" - "resolved" "https://registry.npmjs.org/console-stream/-/console-stream-0.1.1.tgz" - "version" "0.1.1" - -"constants-browserify@^1.0.0", "constants-browserify@1.0.0": - "integrity" "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" - "resolved" "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" - "version" "1.0.0" - -"content-disposition@^0.5.2": - "integrity" "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==" - "resolved" "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz" - "version" "0.5.3" - dependencies: - "safe-buffer" "5.1.2" - -"convert-source-map@^1.5.0", "convert-source-map@1.7.0": - "integrity" "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==" - "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz" - "version" "1.7.0" - dependencies: - "safe-buffer" "~5.1.1" - -"copy-descriptor@^0.1.0": - "integrity" "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - "resolved" "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" - "version" "0.1.1" - -"core-util-is@~1.0.0": - "integrity" "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" - "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" - "version" "1.0.2" - -"cosmiconfig@^6.0.0": - "integrity" "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==" - "resolved" "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" - "version" "6.0.0" + fsevents "~2.3.1" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +class-list@~0.1.0, class-list@~0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/class-list/-/class-list-0.1.1.tgz" + integrity sha1-m5dFGSxBebXaCg12M2WOPHDXlss= + dependencies: + indexof "0.0.1" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +classlist-polyfill@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/classlist-polyfill/-/classlist-polyfill-1.2.0.tgz" + integrity sha1-k1vC39lFiodrJ5YXUUY4vKqWSi4= + +classnames@2.2.6, classnames@^2.2.5, classnames@^2.2.6: + version "2.2.6" + resolved "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz" + integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== + +clone-response@1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz" + integrity sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws= + dependencies: + mimic-response "^1.0.0" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colorette@^1.2.2: + version "1.4.0" + resolved "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz" + integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== + +comma-separated-tokens@^1.0.0: + version "1.0.8" + resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-1.0.8.tgz" + integrity sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw== + +commander@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz" + integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== + +commander@~2.8.1: + version "2.8.1" + resolved "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz" + integrity sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ= + dependencies: + graceful-readlink ">= 1.0.0" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +config-chain@^1.1.11: + version "1.1.12" + resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +console-browserify@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz" + integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== + +console-stream@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/console-stream/-/console-stream-0.1.1.tgz" + integrity sha1-oJX+B7IEZZVfL6/Si11yvM2UnUQ= + +constants-browserify@1.0.0, constants-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz" + integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= + +content-disposition@^0.5.2: + version "0.5.3" + resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz" + integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== + dependencies: + safe-buffer "5.1.2" + +convert-source-map@1.7.0, convert-source-map@^1.5.0: + version "1.7.0" + resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cosmiconfig@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz" + integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg== dependencies: "@types/parse-json" "^4.0.0" - "import-fresh" "^3.1.0" - "parse-json" "^5.0.0" - "path-type" "^4.0.0" - "yaml" "^1.7.2" - -"create-ecdh@^4.0.0": - "integrity" "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==" - "resolved" "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz" - "version" "4.0.4" - dependencies: - "bn.js" "^4.1.0" - "elliptic" "^6.5.3" - -"create-error-class@^3.0.2": - "integrity" "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=" - "resolved" "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "capture-stack-trace" "^1.0.0" - -"create-hash@^1.1.0", "create-hash@^1.1.2", "create-hash@^1.2.0": - "integrity" "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==" - "resolved" "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "cipher-base" "^1.0.1" - "inherits" "^2.0.1" - "md5.js" "^1.3.4" - "ripemd160" "^2.0.1" - "sha.js" "^2.4.0" - -"create-hmac@^1.1.0", "create-hmac@^1.1.4", "create-hmac@^1.1.7": - "integrity" "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==" - "resolved" "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" - "version" "1.1.7" - dependencies: - "cipher-base" "^1.0.3" - "create-hash" "^1.1.0" - "inherits" "^2.0.1" - "ripemd160" "^2.0.0" - "safe-buffer" "^5.0.1" - "sha.js" "^2.4.8" - -"cross-spawn@^5.0.1": - "integrity" "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "lru-cache" "^4.0.1" - "shebang-command" "^1.2.0" - "which" "^1.2.9" - -"cross-spawn@^6.0.0": - "integrity" "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" - "version" "6.0.5" - dependencies: - "nice-try" "^1.0.4" - "path-key" "^2.0.1" - "semver" "^5.5.0" - "shebang-command" "^1.2.0" - "which" "^1.2.9" - -"cross-spawn@^7.0.0": - "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" - "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" - "version" "7.0.3" - dependencies: - "path-key" "^3.1.0" - "shebang-command" "^2.0.0" - "which" "^2.0.1" - -"crypt@0.0.2": - "integrity" "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=" - "resolved" "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz" - "version" "0.0.2" - -"crypto-browserify@^3.11.0", "crypto-browserify@3.12.0": - "integrity" "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==" - "resolved" "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" - "version" "3.12.0" - dependencies: - "browserify-cipher" "^1.0.0" - "browserify-sign" "^4.0.0" - "create-ecdh" "^4.0.0" - "create-hash" "^1.1.0" - "create-hmac" "^1.1.0" - "diffie-hellman" "^5.0.0" - "inherits" "^2.0.1" - "pbkdf2" "^3.0.3" - "public-encrypt" "^4.0.0" - "randombytes" "^2.0.0" - "randomfill" "^1.0.3" - -"css-color-keywords@^1.0.0": - "integrity" "sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=" - "resolved" "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz" - "version" "1.0.0" - -"css-select@^3.1.2": - "integrity" "sha512-qmss1EihSuBNWNNhHjxzxSfJoFBM/lERB/Q4EnsJQQC62R2evJDW481091oAdOr9uh46/0n4nrg0It5cAnj1RA==" - "resolved" "https://registry.npmjs.org/css-select/-/css-select-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "boolbase" "^1.0.0" - "css-what" "^4.0.0" - "domhandler" "^4.0.0" - "domutils" "^2.4.3" - "nth-check" "^2.0.0" - -"css-to-react-native@^3.0.0": - "integrity" "sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ==" - "resolved" "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "camelize" "^1.0.0" - "css-color-keywords" "^1.0.0" - "postcss-value-parser" "^4.0.2" - -"css-tree@^1.1.2": - "integrity" "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==" - "resolved" "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "mdn-data" "2.0.14" - "source-map" "^0.6.1" - -"css-what@^4.0.0": - "integrity" "sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A==" - "resolved" "https://registry.npmjs.org/css-what/-/css-what-4.0.0.tgz" - "version" "4.0.0" - -"css.escape@1.5.1": - "integrity" "sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s=" - "resolved" "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" - "version" "1.5.1" - -"cssnano-preset-simple@^3.0.0": - "integrity" "sha512-vxQPeoMRqUT3c/9f0vWeVa2nKQIHFpogtoBvFdW4GQ3IvEJ6uauCP6p3Y5zQDLFcI7/+40FTgX12o7XUL0Ko+w==" - "resolved" "https://registry.npmjs.org/cssnano-preset-simple/-/cssnano-preset-simple-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "caniuse-lite" "^1.0.30001202" - -"cssnano-simple@3.0.0": - "integrity" "sha512-oU3ueli5Dtwgh0DyeohcIEE00QVfbPR3HzyXdAl89SfnQG3y0/qcpfLVW+jPIh3/rgMZGwuW96rejZGaYE9eUg==" - "resolved" "https://registry.npmjs.org/cssnano-simple/-/cssnano-simple-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "cssnano-preset-simple" "^3.0.0" - -"csso@^4.2.0": - "integrity" "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==" - "resolved" "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "css-tree" "^1.1.2" - -"csstype@^2.2.0", "csstype@^2.5.7", "csstype@^2.6.7": - "integrity" "sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w==" - "resolved" "https://registry.npmjs.org/csstype/-/csstype-2.6.10.tgz" - "version" "2.6.10" - -"csstype@^3.0.2": - "integrity" "sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==" - "resolved" "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz" - "version" "3.0.9" - -"currently-unhandled@^0.4.1": - "integrity" "sha1-mI3zP+qxke95mmE2nddsF635V+o=" - "resolved" "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz" - "version" "0.4.1" - dependencies: - "array-find-index" "^1.0.1" - -"data-uri-to-buffer@3.0.1": - "integrity" "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==" - "resolved" "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz" - "version" "3.0.1" - -"debug@^2.2.0": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" - dependencies: - "ms" "2.0.0" - -"debug@^2.3.3": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" - dependencies: - "ms" "2.0.0" - -"debug@^2.6.8": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" - dependencies: - "ms" "2.0.0" - -"debug@^4.0.0", "debug@^4.1.0": - "integrity" "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==" - "resolved" "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz" - "version" "4.1.1" - dependencies: - "ms" "^2.1.1" - -"debug@2": - "integrity" "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==" - "resolved" "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" - "version" "2.6.9" - dependencies: - "ms" "2.0.0" - -"decamelize@^1.1.2": - "integrity" "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" - "version" "1.2.0" - -"decode-uri-component@^0.2.0": - "integrity" "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" - "resolved" "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" - "version" "0.2.0" - -"decompress-response@^3.2.0", "decompress-response@^3.3.0": - "integrity" "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=" - "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" - "version" "3.3.0" - dependencies: - "mimic-response" "^1.0.0" - -"decompress-response@^6.0.0": - "integrity" "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==" - "resolved" "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "mimic-response" "^3.1.0" - -"decompress-tar@^4.0.0", "decompress-tar@^4.1.0", "decompress-tar@^4.1.1": - "integrity" "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==" - "resolved" "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz" - "version" "4.1.1" - dependencies: - "file-type" "^5.2.0" - "is-stream" "^1.1.0" - "tar-stream" "^1.5.2" - -"decompress-tarbz2@^4.0.0": - "integrity" "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==" - "resolved" "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz" - "version" "4.1.1" - dependencies: - "decompress-tar" "^4.1.0" - "file-type" "^6.1.0" - "is-stream" "^1.1.0" - "seek-bzip" "^1.0.5" - "unbzip2-stream" "^1.0.9" - -"decompress-targz@^4.0.0": - "integrity" "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==" - "resolved" "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz" - "version" "4.1.1" - dependencies: - "decompress-tar" "^4.1.1" - "file-type" "^5.2.0" - "is-stream" "^1.1.0" - -"decompress-unzip@^4.0.1": - "integrity" "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=" - "resolved" "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "file-type" "^3.8.0" - "get-stream" "^2.2.0" - "pify" "^2.3.0" - "yauzl" "^2.4.2" - -"decompress@^4.0.0", "decompress@^4.2.0": - "integrity" "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==" - "resolved" "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz" - "version" "4.2.1" - dependencies: - "decompress-tar" "^4.0.0" - "decompress-tarbz2" "^4.0.0" - "decompress-targz" "^4.0.0" - "decompress-unzip" "^4.0.1" - "graceful-fs" "^4.1.10" - "make-dir" "^1.0.0" - "pify" "^2.3.0" - "strip-dirs" "^2.0.0" - -"deep-assign@^2.0.0": - "integrity" "sha1-6+BrHwfwja5ZdiDj3RYi83GhxXI=" - "resolved" "https://registry.npmjs.org/deep-assign/-/deep-assign-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "is-obj" "^1.0.0" - -"deepmerge@^4.0.0": - "integrity" "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==" - "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" - "version" "4.2.2" - -"define-properties@^1.1.3": - "integrity" "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==" - "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "object-keys" "^1.0.12" - -"define-property@^0.2.5": - "integrity" "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=" - "resolved" "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" - "version" "0.2.5" - dependencies: - "is-descriptor" "^0.1.0" - -"define-property@^1.0.0": - "integrity" "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=" - "resolved" "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "is-descriptor" "^1.0.0" - -"define-property@^2.0.2": - "integrity" "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==" - "resolved" "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "is-descriptor" "^1.0.2" - "isobject" "^3.0.1" - -"depd@~1.1.2": - "integrity" "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - "resolved" "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" - "version" "1.1.2" - -"dequal@^2.0.2": - "integrity" "sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug==" - "resolved" "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz" - "version" "2.0.2" - -"des.js@^1.0.0": - "integrity" "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==" - "resolved" "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "inherits" "^2.0.1" - "minimalistic-assert" "^1.0.0" - -"diffie-hellman@^5.0.0": - "integrity" "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==" - "resolved" "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz" - "version" "5.0.3" - dependencies: - "bn.js" "^4.1.0" - "miller-rabin" "^4.0.0" - "randombytes" "^2.0.0" - -"dir-glob@2.0.0": - "integrity" "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==" - "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "arrify" "^1.0.1" - "path-type" "^3.0.0" - -"dom-helpers@^5.0.1", "dom-helpers@^5.1.0", "dom-helpers@^5.1.2": - "integrity" "sha512-TjMyeVUvNEnOnhzs6uAn9Ya47GmMo3qq7m+Lr/3ON0Rs5kHvb8I+SQYjLUSYn7qhEm0QjW0yrBkvz9yOrwwz1A==" - "resolved" "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.1.4.tgz" - "version" "5.1.4" + import-fresh "^3.1.0" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.7.2" + +create-ecdh@^4.0.0: + version "4.0.4" + resolved "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz" + integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A== + dependencies: + bn.js "^4.1.0" + elliptic "^6.5.3" + +create-error-class@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz" + integrity sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y= + dependencies: + capture-stack-trace "^1.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^6.0.0: + version "6.0.5" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0: + version "7.0.3" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypt@0.0.2: + version "0.0.2" + resolved "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz" + integrity sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs= + +crypto-browserify@3.12.0, crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-color-keywords@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz" + integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU= + +css-select@^3.1.2: + version "3.1.2" + resolved "https://registry.npmjs.org/css-select/-/css-select-3.1.2.tgz" + integrity sha512-qmss1EihSuBNWNNhHjxzxSfJoFBM/lERB/Q4EnsJQQC62R2evJDW481091oAdOr9uh46/0n4nrg0It5cAnj1RA== + dependencies: + boolbase "^1.0.0" + css-what "^4.0.0" + domhandler "^4.0.0" + domutils "^2.4.3" + nth-check "^2.0.0" + +css-to-react-native@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.0.0.tgz" + integrity sha512-Ro1yETZA813eoyUp2GDBhG2j+YggidUmzO1/v9eYBKR2EHVEniE2MI/NqpTQ954BMpTPZFsGNPm46qFB9dpaPQ== + dependencies: + camelize "^1.0.0" + css-color-keywords "^1.0.0" + postcss-value-parser "^4.0.2" + +css-tree@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/css-what/-/css-what-4.0.0.tgz" + integrity sha512-teijzG7kwYfNVsUh2H/YN62xW3KK9YhXEgSlbxMlcyjPNvdKJqFx5lrwlJgoFP1ZHlB89iGDlo/JyshKeRhv5A== + +css.escape@1.5.1: + version "1.5.1" + resolved "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz" + integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= + +cssnano-preset-simple@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cssnano-preset-simple/-/cssnano-preset-simple-3.0.0.tgz" + integrity sha512-vxQPeoMRqUT3c/9f0vWeVa2nKQIHFpogtoBvFdW4GQ3IvEJ6uauCP6p3Y5zQDLFcI7/+40FTgX12o7XUL0Ko+w== + dependencies: + caniuse-lite "^1.0.30001202" + +cssnano-simple@3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cssnano-simple/-/cssnano-simple-3.0.0.tgz" + integrity sha512-oU3ueli5Dtwgh0DyeohcIEE00QVfbPR3HzyXdAl89SfnQG3y0/qcpfLVW+jPIh3/rgMZGwuW96rejZGaYE9eUg== + dependencies: + cssnano-preset-simple "^3.0.0" + +csso@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz" + integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== + dependencies: + css-tree "^1.1.2" + +csstype@^2.5.7, csstype@^2.6.7: + version "2.6.10" + resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.10.tgz" + integrity sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w== + +csstype@^3.0.2: + version "3.0.9" + resolved "https://registry.npmjs.org/csstype/-/csstype-3.0.9.tgz" + integrity sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw== + +currently-unhandled@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz" + integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= + dependencies: + array-find-index "^1.0.1" + +data-uri-to-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz" + integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== + +debug@2, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8: + version "2.6.9" + resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^4.0.0, debug@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.1.2: + version "1.2.0" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +decompress-response@^3.2.0, decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + +decompress-response@^6.0.0: + version "6.0.0" + resolved "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz" + integrity sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ== + dependencies: + mimic-response "^3.1.0" + +decompress-tar@^4.0.0, decompress-tar@^4.1.0, decompress-tar@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz" + integrity sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ== + dependencies: + file-type "^5.2.0" + is-stream "^1.1.0" + tar-stream "^1.5.2" + +decompress-tarbz2@^4.0.0: + version "4.1.1" + resolved "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz" + integrity sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A== + dependencies: + decompress-tar "^4.1.0" + file-type "^6.1.0" + is-stream "^1.1.0" + seek-bzip "^1.0.5" + unbzip2-stream "^1.0.9" + +decompress-targz@^4.0.0: + version "4.1.1" + resolved "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz" + integrity sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w== + dependencies: + decompress-tar "^4.1.1" + file-type "^5.2.0" + is-stream "^1.1.0" + +decompress-unzip@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz" + integrity sha1-3qrM39FK6vhVePczroIQ+bSEj2k= + dependencies: + file-type "^3.8.0" + get-stream "^2.2.0" + pify "^2.3.0" + yauzl "^2.4.2" + +decompress@^4.0.0, decompress@^4.2.0: + version "4.2.1" + resolved "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz" + integrity sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ== + dependencies: + decompress-tar "^4.0.0" + decompress-tarbz2 "^4.0.0" + decompress-targz "^4.0.0" + decompress-unzip "^4.0.1" + graceful-fs "^4.1.10" + make-dir "^1.0.0" + pify "^2.3.0" + strip-dirs "^2.0.0" + +deep-assign@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/deep-assign/-/deep-assign-2.0.0.tgz" + integrity sha1-6+BrHwfwja5ZdiDj3RYi83GhxXI= + dependencies: + is-obj "^1.0.0" + +deepmerge@^4.0.0: + version "4.2.2" + resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz" + integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== + +define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" + integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= + +dequal@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.2.tgz" + integrity sha512-q9K8BlJVxK7hQYqa6XISGmBZbtQQWVXSrRrWreHC94rMt1QL/Impruc+7p2CYSYuVIUr+YCt6hjrs1kkdJRTug== + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +dir-glob@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz" + integrity sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag== + dependencies: + arrify "^1.0.1" + path-type "^3.0.0" + +dom-helpers@^5.0.1, dom-helpers@^5.1.2: + version "5.1.4" + resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.1.4.tgz" + integrity sha512-TjMyeVUvNEnOnhzs6uAn9Ya47GmMo3qq7m+Lr/3ON0Rs5kHvb8I+SQYjLUSYn7qhEm0QjW0yrBkvz9yOrwwz1A== + dependencies: + "@babel/runtime" "^7.8.7" + csstype "^2.6.7" + +dom-helpers@^5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-5.2.1.tgz#d9400536b2bf8225ad98fe052e029451ac40e902" + integrity sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA== dependencies: "@babel/runtime" "^7.8.7" - "csstype" "^2.6.7" - -"dom-serializer@^1.0.1": - "integrity" "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==" - "resolved" "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "domelementtype" "^2.0.1" - "domhandler" "^4.2.0" - "entities" "^2.0.0" - -"domain-browser@^1.1.1": - "integrity" "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" - "resolved" "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz" - "version" "1.2.0" - -"domain-browser@4.19.0": - "integrity" "sha512-fRA+BaAWOR/yr/t7T9E9GJztHPeFjj8U35ajyAjCDtAAnTn1Rc1f6W6VGPJrO1tkQv9zWu+JRof7z6oQtiYVFQ==" - "resolved" "https://registry.npmjs.org/domain-browser/-/domain-browser-4.19.0.tgz" - "version" "4.19.0" - -"domelementtype@^2.0.1", "domelementtype@^2.2.0": - "integrity" "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==" - "resolved" "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz" - "version" "2.2.0" - -"domhandler@^4.0.0", "domhandler@^4.2.0": - "integrity" "sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA==" - "resolved" "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "domelementtype" "^2.2.0" - -"domutils@^2.4.3": - "integrity" "sha512-y0BezHuy4MDYxh6OvolXYsH+1EMGmFbwv5FKW7ovwMG6zTPWqNPq3WF9ayZssFq+UlKdffGLbOEaghNdaOm1WA==" - "resolved" "https://registry.npmjs.org/domutils/-/domutils-2.6.0.tgz" - "version" "2.6.0" - dependencies: - "dom-serializer" "^1.0.1" - "domelementtype" "^2.2.0" - "domhandler" "^4.2.0" - -"download@^6.2.2": - "integrity" "sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA==" - "resolved" "https://registry.npmjs.org/download/-/download-6.2.5.tgz" - "version" "6.2.5" - dependencies: - "caw" "^2.0.0" - "content-disposition" "^0.5.2" - "decompress" "^4.0.0" - "ext-name" "^5.0.0" - "file-type" "5.2.0" - "filenamify" "^2.0.0" - "get-stream" "^3.0.0" - "got" "^7.0.0" - "make-dir" "^1.0.0" - "p-event" "^1.0.0" - "pify" "^3.0.0" - -"download@^7.1.0": - "integrity" "sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ==" - "resolved" "https://registry.npmjs.org/download/-/download-7.1.0.tgz" - "version" "7.1.0" - dependencies: - "archive-type" "^4.0.0" - "caw" "^2.0.1" - "content-disposition" "^0.5.2" - "decompress" "^4.2.0" - "ext-name" "^5.0.0" - "file-type" "^8.1.0" - "filenamify" "^2.0.0" - "get-stream" "^3.0.0" - "got" "^8.3.1" - "make-dir" "^1.2.0" - "p-event" "^2.1.0" - "pify" "^3.0.0" - -"duplexer3@^0.1.4": - "integrity" "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" - "resolved" "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz" - "version" "0.1.4" - -"electron-to-chromium@^1.3.723": - "integrity" "sha512-2jtSwgyiRzybHRxrc2nKI+39wH3AwQgn+sogQ+q814gv8hIFwrcZbV07Ea9f8AmK0ufPVZUvvAG1uZJ+obV4Jw==" - "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.846.tgz" - "version" "1.3.846" - -"elliptic@^6.5.3": - "integrity" "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==" - "resolved" "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" - "version" "6.5.4" - dependencies: - "bn.js" "^4.11.9" - "brorand" "^1.1.0" - "hash.js" "^1.0.0" - "hmac-drbg" "^1.0.1" - "inherits" "^2.0.4" - "minimalistic-assert" "^1.0.1" - "minimalistic-crypto-utils" "^1.0.1" - -"emojis-list@^2.0.0": - "integrity" "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" - "resolved" "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz" - "version" "2.1.0" - -"emojis-list@^3.0.0": - "integrity" "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==" - "resolved" "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" - "version" "3.0.0" - -"encoding@0.1.13": - "integrity" "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==" - "resolved" "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" - "version" "0.1.13" - dependencies: - "iconv-lite" "^0.6.2" - -"end-of-stream@^1.0.0", "end-of-stream@^1.1.0": - "integrity" "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==" - "resolved" "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" - "version" "1.4.4" - dependencies: - "once" "^1.4.0" - -"enquire.js@^2.1.6": - "integrity" "sha1-PoeAybi4NQhMP2DhZtvDwqPImBQ=" - "resolved" "https://registry.npmjs.org/enquire.js/-/enquire.js-2.1.6.tgz" - "version" "2.1.6" - -"entities@^2.0.0": - "integrity" "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==" - "resolved" "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" - "version" "2.2.0" - -"error-ex@^1.2.0", "error-ex@^1.3.1": - "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" - "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "is-arrayish" "^0.2.1" - -"es-abstract@^1.18.5": - "integrity" "sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ==" - "resolved" "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.6.tgz" - "version" "1.18.6" - dependencies: - "call-bind" "^1.0.2" - "es-to-primitive" "^1.2.1" - "function-bind" "^1.1.1" - "get-intrinsic" "^1.1.1" - "get-symbol-description" "^1.0.0" - "has" "^1.0.3" - "has-symbols" "^1.0.2" - "internal-slot" "^1.0.3" - "is-callable" "^1.2.4" - "is-negative-zero" "^2.0.1" - "is-regex" "^1.1.4" - "is-string" "^1.0.7" - "object-inspect" "^1.11.0" - "object-keys" "^1.1.1" - "object.assign" "^4.1.2" - "string.prototype.trimend" "^1.0.4" - "string.prototype.trimstart" "^1.0.4" - "unbox-primitive" "^1.0.1" - -"es-to-primitive@^1.2.1": - "integrity" "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==" - "resolved" "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" - "version" "1.2.1" - dependencies: - "is-callable" "^1.1.4" - "is-date-object" "^1.0.1" - "is-symbol" "^1.0.2" - -"es6-object-assign@^1.1.0": - "integrity" "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw=" - "resolved" "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz" - "version" "1.1.0" - -"escalade@^3.1.1": - "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" - "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" - "version" "3.1.1" - -"escape-string-regexp@^1.0.2", "escape-string-regexp@^1.0.5": - "integrity" "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" - "version" "1.0.5" - -"esprima@^4.0.0": - "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" - "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" - "version" "4.0.1" - -"etag@1.8.1": - "integrity" "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - "resolved" "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" - "version" "1.8.1" - -"eventemitter3@^1.1.0": - "integrity" "sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg=" - "resolved" "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz" - "version" "1.2.0" - -"events@^3.0.0": - "integrity" "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - "resolved" "https://registry.npmjs.org/events/-/events-3.3.0.tgz" - "version" "3.3.0" - -"eventsource@^1.0.6", "eventsource@^1.0.7": - "integrity" "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==" - "resolved" "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "original" "^1.0.0" - -"evp_bytestokey@^1.0.0", "evp_bytestokey@^1.0.3": - "integrity" "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==" - "resolved" "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "md5.js" "^1.3.4" - "safe-buffer" "^5.1.1" - -"exec-buffer@^3.0.0": - "integrity" "sha512-wsiD+2Tp6BWHoVv3B+5Dcx6E7u5zky+hUwOHjuH2hKSLR3dvRmX8fk8UD8uqQixHs4Wk6eDmiegVrMPjKj7wpA==" - "resolved" "https://registry.npmjs.org/exec-buffer/-/exec-buffer-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "execa" "^0.7.0" - "p-finally" "^1.0.0" - "pify" "^3.0.0" - "rimraf" "^2.5.4" - "tempfile" "^2.0.0" - -"execa@^0.7.0": - "integrity" "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=" - "resolved" "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz" - "version" "0.7.0" - dependencies: - "cross-spawn" "^5.0.1" - "get-stream" "^3.0.0" - "is-stream" "^1.1.0" - "npm-run-path" "^2.0.0" - "p-finally" "^1.0.0" - "signal-exit" "^3.0.0" - "strip-eof" "^1.0.0" - -"execa@^1.0.0": - "integrity" "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==" - "resolved" "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "cross-spawn" "^6.0.0" - "get-stream" "^4.0.0" - "is-stream" "^1.1.0" - "npm-run-path" "^2.0.0" - "p-finally" "^1.0.0" - "signal-exit" "^3.0.0" - "strip-eof" "^1.0.0" - -"execa@^4.0.0": - "integrity" "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==" - "resolved" "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "cross-spawn" "^7.0.0" - "get-stream" "^5.0.0" - "human-signals" "^1.1.1" - "is-stream" "^2.0.0" - "merge-stream" "^2.0.0" - "npm-run-path" "^4.0.0" - "onetime" "^5.1.0" - "signal-exit" "^3.0.2" - "strip-final-newline" "^2.0.0" - -"executable@^4.1.0": - "integrity" "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==" - "resolved" "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz" - "version" "4.1.1" - dependencies: - "pify" "^2.2.0" - -"expand-brackets@^2.1.4": - "integrity" "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=" - "resolved" "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" - "version" "2.1.4" - dependencies: - "debug" "^2.3.3" - "define-property" "^0.2.5" - "extend-shallow" "^2.0.1" - "posix-character-classes" "^0.1.0" - "regex-not" "^1.0.0" - "snapdragon" "^0.8.1" - "to-regex" "^3.0.1" - -"ext-list@^2.0.0": - "integrity" "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==" - "resolved" "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz" - "version" "2.2.2" - dependencies: - "mime-db" "^1.28.0" - -"ext-name@^5.0.0": - "integrity" "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==" - "resolved" "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "ext-list" "^2.0.0" - "sort-keys-length" "^1.0.0" - -"extend-shallow@^2.0.1": - "integrity" "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=" - "resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "is-extendable" "^0.1.0" - -"extend-shallow@^3.0.0": - "integrity" "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=" - "resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "assign-symbols" "^1.0.0" - "is-extendable" "^1.0.1" - -"extend-shallow@^3.0.2": - "integrity" "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=" - "resolved" "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "assign-symbols" "^1.0.0" - "is-extendable" "^1.0.1" - -"extend@^3.0.0": - "integrity" "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - "resolved" "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" - "version" "3.0.2" - -"extglob@^2.0.4": - "integrity" "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==" - "resolved" "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" - "version" "2.0.4" - dependencies: - "array-unique" "^0.3.2" - "define-property" "^1.0.0" - "expand-brackets" "^2.1.4" - "extend-shallow" "^2.0.1" - "fragment-cache" "^0.2.1" - "regex-not" "^1.0.0" - "snapdragon" "^0.8.1" - "to-regex" "^3.0.1" - -"fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": - "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - "version" "3.1.3" - -"fast-glob@^2.0.2": - "integrity" "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==" - "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz" - "version" "2.2.7" + csstype "^3.0.2" + +dom-serializer@^1.0.1: + version "1.3.2" + resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz" + integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domain-browser@4.19.0: + version "4.19.0" + resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-4.19.0.tgz" + integrity sha512-fRA+BaAWOR/yr/t7T9E9GJztHPeFjj8U35ajyAjCDtAAnTn1Rc1f6W6VGPJrO1tkQv9zWu+JRof7z6oQtiYVFQ== + +domain-browser@^1.1.1: + version "1.2.0" + resolved "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz" + integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz" + integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== + +domhandler@^4.0.0, domhandler@^4.2.0: + version "4.2.0" + resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.2.0.tgz" + integrity sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA== + dependencies: + domelementtype "^2.2.0" + +domutils@^2.4.3: + version "2.6.0" + resolved "https://registry.npmjs.org/domutils/-/domutils-2.6.0.tgz" + integrity sha512-y0BezHuy4MDYxh6OvolXYsH+1EMGmFbwv5FKW7ovwMG6zTPWqNPq3WF9ayZssFq+UlKdffGLbOEaghNdaOm1WA== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +download@^6.2.2: + version "6.2.5" + resolved "https://registry.npmjs.org/download/-/download-6.2.5.tgz" + integrity sha512-DpO9K1sXAST8Cpzb7kmEhogJxymyVUd5qz/vCOSyvwtp2Klj2XcDt5YUuasgxka44SxF0q5RriKIwJmQHG2AuA== + dependencies: + caw "^2.0.0" + content-disposition "^0.5.2" + decompress "^4.0.0" + ext-name "^5.0.0" + file-type "5.2.0" + filenamify "^2.0.0" + get-stream "^3.0.0" + got "^7.0.0" + make-dir "^1.0.0" + p-event "^1.0.0" + pify "^3.0.0" + +download@^7.1.0: + version "7.1.0" + resolved "https://registry.npmjs.org/download/-/download-7.1.0.tgz" + integrity sha512-xqnBTVd/E+GxJVrX5/eUJiLYjCGPwMpdL+jGhGU57BvtcA7wwhtHVbXBeUk51kOpW3S7Jn3BQbN9Q1R1Km2qDQ== + dependencies: + archive-type "^4.0.0" + caw "^2.0.1" + content-disposition "^0.5.2" + decompress "^4.2.0" + ext-name "^5.0.0" + file-type "^8.1.0" + filenamify "^2.0.0" + get-stream "^3.0.0" + got "^8.3.1" + make-dir "^1.2.0" + p-event "^2.1.0" + pify "^3.0.0" + +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz" + integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= + +electron-to-chromium@^1.3.723: + version "1.3.846" + resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.846.tgz" + integrity sha512-2jtSwgyiRzybHRxrc2nKI+39wH3AwQgn+sogQ+q814gv8hIFwrcZbV07Ea9f8AmK0ufPVZUvvAG1uZJ+obV4Jw== + +elliptic@^6.5.3: + version "6.5.4" + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" + integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encoding@0.1.13: + version "0.1.13" + resolved "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +enquire.js@^2.1.6: + version "2.1.6" + resolved "https://registry.npmjs.org/enquire.js/-/enquire.js-2.1.6.tgz" + integrity sha1-PoeAybi4NQhMP2DhZtvDwqPImBQ= + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.18.5: + version "1.18.6" + resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.6.tgz" + integrity sha512-kAeIT4cku5eNLNuUKhlmtuk1/TRZvQoYccn6TO0cSVdf1kzB0T7+dYuVK9MWM7l+/53W2Q8M7N2c6MQvhXFcUQ== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.1.1" + get-symbol-description "^1.0.0" + has "^1.0.3" + has-symbols "^1.0.2" + internal-slot "^1.0.3" + is-callable "^1.2.4" + is-negative-zero "^2.0.1" + is-regex "^1.1.4" + is-string "^1.0.7" + object-inspect "^1.11.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.4" + string.prototype.trimstart "^1.0.4" + unbox-primitive "^1.0.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +es6-object-assign@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz" + integrity sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw= + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +etag@1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz" + integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= + +eventemitter3@^1.1.0: + version "1.2.0" + resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.2.0.tgz" + integrity sha1-HIaZHYFq0eUEdQ5zh0Ik7PO+xQg= + +events@^3.0.0: + version "3.3.0" + resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +eventsource@^1.0.6, eventsource@^1.0.7: + version "1.1.0" + resolved "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz" + integrity sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg== + dependencies: + original "^1.0.0" + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz" + integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA== + dependencies: + cross-spawn "^6.0.0" + get-stream "^4.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + +execa@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz" + integrity sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A== + dependencies: + cross-spawn "^7.0.0" + get-stream "^5.0.0" + human-signals "^1.1.1" + is-stream "^2.0.0" + merge-stream "^2.0.0" + npm-run-path "^4.0.0" + onetime "^5.1.0" + signal-exit "^3.0.2" + strip-final-newline "^2.0.0" + +executable@^4.1.0: + version "4.1.1" + resolved "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz" + integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== + dependencies: + pify "^2.2.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +ext-list@^2.0.0: + version "2.2.2" + resolved "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz" + integrity sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA== + dependencies: + mime-db "^1.28.0" + +ext-name@^5.0.0: + version "5.0.0" + resolved "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz" + integrity sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ== + dependencies: + ext-list "^2.0.0" + sort-keys-length "^1.0.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^2.0.2: + version "2.2.7" + resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz" + integrity sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw== dependencies: "@mrmlnc/readdir-enhanced" "^2.2.1" "@nodelib/fs.stat" "^1.1.2" - "glob-parent" "^3.1.0" - "is-glob" "^4.0.0" - "merge2" "^1.2.3" - "micromatch" "^3.1.10" - -"fast-json-stable-stringify@^2.0.0": - "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" - "version" "2.1.0" - -"fast-xml-parser@^3.19.0": - "integrity" "sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg==" - "resolved" "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz" - "version" "3.19.0" - -"fd-slicer@~1.1.0": - "integrity" "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=" - "resolved" "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "pend" "~1.2.0" - -"figures@^1.3.5": - "integrity" "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=" - "resolved" "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz" - "version" "1.7.0" - dependencies: - "escape-string-regexp" "^1.0.5" - "object-assign" "^4.1.0" - -"figures@^3.0.0": - "integrity" "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==" - "resolved" "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "escape-string-regexp" "^1.0.5" - -"file-loader@^2.0.0": - "integrity" "sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ==" - "resolved" "https://registry.npmjs.org/file-loader/-/file-loader-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "loader-utils" "^1.0.2" - "schema-utils" "^1.0.0" - -"file-loader@^3.0.1": - "integrity" "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==" - "resolved" "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "loader-utils" "^1.0.2" - "schema-utils" "^1.0.0" - -"file-type@^10.7.0": - "integrity" "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==" - "resolved" "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz" - "version" "10.11.0" - -"file-type@^3.8.0": - "integrity" "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" - "resolved" "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz" - "version" "3.9.0" - -"file-type@^4.2.0": - "integrity" "sha1-G2AOX8ofvcboDApwxxyNul95BsU=" - "resolved" "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz" - "version" "4.4.0" - -"file-type@^5.2.0", "file-type@5.2.0": - "integrity" "sha1-LdvqfHP/42No365J3DOMBYwritY=" - "resolved" "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz" - "version" "5.2.0" - -"file-type@^6.1.0": - "integrity" "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==" - "resolved" "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz" - "version" "6.2.0" - -"file-type@^8.1.0": - "integrity" "sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ==" - "resolved" "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz" - "version" "8.1.0" - -"filename-reserved-regex@^2.0.0": - "integrity" "sha1-q/c9+rc10EVECr/qLZHzieu/oik=" - "resolved" "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz" - "version" "2.0.0" - -"filenamify@^2.0.0": - "integrity" "sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA==" - "resolved" "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "filename-reserved-regex" "^2.0.0" - "strip-outer" "^1.0.0" - "trim-repeated" "^1.0.0" - -"fill-range@^4.0.0": - "integrity" "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=" - "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "extend-shallow" "^2.0.1" - "is-number" "^3.0.0" - "repeat-string" "^1.6.1" - "to-regex-range" "^2.1.0" - -"fill-range@^7.0.1": - "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" - "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" - "version" "7.0.1" - dependencies: - "to-regex-range" "^5.0.1" - -"find-cache-dir@3.3.1": - "integrity" "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==" - "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz" - "version" "3.3.1" - dependencies: - "commondir" "^1.0.1" - "make-dir" "^3.0.2" - "pkg-dir" "^4.1.0" - -"find-root@^1.1.0": - "integrity" "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" - "resolved" "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz" - "version" "1.1.0" - -"find-up@^1.0.0": - "integrity" "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "path-exists" "^2.0.0" - "pinkie-promise" "^2.0.0" - -"find-up@^4.0.0": - "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" - "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "locate-path" "^5.0.0" - "path-exists" "^4.0.0" - -"find-versions@^3.0.0": - "integrity" "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==" - "resolved" "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz" - "version" "3.2.0" - dependencies: - "semver-regex" "^2.0.0" - -"follow-redirects@^1.2.4": - "integrity" "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g==" - "resolved" "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz" - "version" "1.14.4" - -"for-in@^1.0.2": - "integrity" "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" - "resolved" "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" - "version" "1.0.2" - -"foreach@^2.0.5": - "integrity" "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" - "resolved" "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz" - "version" "2.0.5" - -"form-urlencoded@^2.0.7": - "integrity" "sha512-fWUzNiOnYa126vFAT6TFXd1mhJrvD8IqmQ9ilZPjkLYQfaRreBr5fIUoOpPlWtqaAG64nzoE7u5zSetifab9IA==" - "resolved" "https://registry.npmjs.org/form-urlencoded/-/form-urlencoded-2.0.9.tgz" - "version" "2.0.9" - -"fragment-cache@^0.2.1": - "integrity" "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=" - "resolved" "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" - "version" "0.2.1" - dependencies: - "map-cache" "^0.2.2" - -"from2@^2.1.1": - "integrity" "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=" - "resolved" "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "inherits" "^2.0.1" - "readable-stream" "^2.0.0" - -"fs-constants@^1.0.0": - "integrity" "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" - "resolved" "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz" - "version" "1.0.0" - -"fs.realpath@^1.0.0": - "integrity" "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" - "version" "1.0.0" - -"fsevents@~2.3.1": - "integrity" "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==" - "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" - "version" "2.3.2" - -"function-bind@^1.1.1": - "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" - "version" "1.1.1" - -"get-intrinsic@^1.0.2", "get-intrinsic@^1.1.0", "get-intrinsic@^1.1.1": - "integrity" "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==" - "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "function-bind" "^1.1.1" - "has" "^1.0.3" - "has-symbols" "^1.0.1" - -"get-it@^5.0.3": - "integrity" "sha512-P5McakQI/9611hP0cYqyF0VlhxQj49ok21TvCbNEqBfsVVC/ZnmYPP91bky4N4/Oy1HmXFZ/CMh6CCH8nAgLpQ==" - "resolved" "https://registry.npmjs.org/get-it/-/get-it-5.0.5.tgz" - "version" "5.0.5" + glob-parent "^3.1.0" + is-glob "^4.0.0" + merge2 "^1.2.3" + micromatch "^3.1.10" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-xml-parser@^3.19.0: + version "3.19.0" + resolved "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.19.0.tgz" + integrity sha512-4pXwmBplsCPv8FOY1WRakF970TjNGnGnfbOnLqjlYvMiF1SR3yOHyxMR/YCXpPTOspNF5gwudqktIP4VsWkvBg== + +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" + integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= + dependencies: + pend "~1.2.0" + +figures@^1.3.5: + version "1.7.0" + resolved "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz" + integrity sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4= + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-loader@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/file-loader/-/file-loader-2.0.0.tgz" + integrity sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ== + dependencies: + loader-utils "^1.0.2" + schema-utils "^1.0.0" + +file-loader@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz" + integrity sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw== + dependencies: + loader-utils "^1.0.2" + schema-utils "^1.0.0" + +file-type@5.2.0, file-type@^5.2.0: + version "5.2.0" + resolved "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz" + integrity sha1-LdvqfHP/42No365J3DOMBYwritY= + +file-type@^10.7.0: + version "10.11.0" + resolved "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz" + integrity sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw== + +file-type@^3.8.0: + version "3.9.0" + resolved "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz" + integrity sha1-JXoHg4TR24CHvESdEH1SpSZyuek= + +file-type@^4.2.0: + version "4.4.0" + resolved "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz" + integrity sha1-G2AOX8ofvcboDApwxxyNul95BsU= + +file-type@^6.1.0: + version "6.2.0" + resolved "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz" + integrity sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg== + +file-type@^8.1.0: + version "8.1.0" + resolved "https://registry.npmjs.org/file-type/-/file-type-8.1.0.tgz" + integrity sha512-qyQ0pzAy78gVoJsmYeNgl8uH8yKhr1lVhW7JbzJmnlRi0I4R2eEDEJZVKG8agpDnLpacwNbDhLNG/LMdxHD2YQ== + +filename-reserved-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz" + integrity sha1-q/c9+rc10EVECr/qLZHzieu/oik= + +filenamify@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/filenamify/-/filenamify-2.1.0.tgz" + integrity sha512-ICw7NTT6RsDp2rnYKVd8Fu4cr6ITzGy3+u4vUujPkabyaz+03F24NWEX7fs5fp+kBonlaqPH8fAO2NM+SXt/JA== + dependencies: + filename-reserved-regex "^2.0.0" + strip-outer "^1.0.0" + trim-repeated "^1.0.0" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-cache-dir@3.3.1: + version "3.3.1" + resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-root@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz" + integrity sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng== + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-versions@^3.0.0: + version "3.2.0" + resolved "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz" + integrity sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww== + dependencies: + semver-regex "^2.0.0" + +follow-redirects@^1.2.4: + version "1.14.4" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz" + integrity sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g== + +for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +foreach@^2.0.5: + version "2.0.5" + resolved "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + +form-urlencoded@^2.0.7: + version "2.0.9" + resolved "https://registry.npmjs.org/form-urlencoded/-/form-urlencoded-2.0.9.tgz" + integrity sha512-fWUzNiOnYa126vFAT6TFXd1mhJrvD8IqmQ9ilZPjkLYQfaRreBr5fIUoOpPlWtqaAG64nzoE7u5zSetifab9IA== + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +from2@^2.1.1: + version "2.3.0" + resolved "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz" + integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + +fs-constants@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz" + integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@~2.3.1: + version "2.3.2" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +get-intrinsic@^1.0.2, get-intrinsic@^1.1.0, get-intrinsic@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-it@^5.0.3: + version "5.0.5" + resolved "https://registry.npmjs.org/get-it/-/get-it-5.0.5.tgz" + integrity sha512-P5McakQI/9611hP0cYqyF0VlhxQj49ok21TvCbNEqBfsVVC/ZnmYPP91bky4N4/Oy1HmXFZ/CMh6CCH8nAgLpQ== dependencies: "@sanity/timed-out" "^4.0.2" - "create-error-class" "^3.0.2" - "debug" "^2.6.8" - "decompress-response" "^3.3.0" - "follow-redirects" "^1.2.4" - "form-urlencoded" "^2.0.7" - "in-publish" "^2.0.0" - "into-stream" "^3.1.0" - "is-plain-object" "^2.0.4" - "is-retry-allowed" "^1.1.0" - "is-stream" "^1.1.0" - "nano-pubsub" "^1.0.2" - "object-assign" "^4.1.1" - "parse-headers" "^2.0.1" - "progress-stream" "^2.0.0" - "same-origin" "^0.1.1" - "simple-concat" "^1.0.0" - "tunnel-agent" "^0.6.0" - "url-parse" "^1.1.9" - -"get-orientation@1.1.2": - "integrity" "sha512-/pViTfifW+gBbh/RnlFYHINvELT9Znt+SYyDKAUL6uV6By019AK/s+i9XP4jSwq7lwP38Fd8HVeTxym3+hkwmQ==" - "resolved" "https://registry.npmjs.org/get-orientation/-/get-orientation-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "stream-parser" "^0.3.1" - -"get-proxy@^2.0.0": - "integrity" "sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw==" - "resolved" "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "npm-conf" "^1.1.0" - -"get-stdin@^4.0.1": - "integrity" "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" - "resolved" "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" - "version" "4.0.1" - -"get-stream@^2.2.0": - "integrity" "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz" - "version" "2.3.1" - dependencies: - "object-assign" "^4.0.1" - "pinkie-promise" "^2.0.0" - -"get-stream@^3.0.0": - "integrity" "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz" - "version" "3.0.0" - -"get-stream@^4.0.0": - "integrity" "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" - "version" "4.1.0" - dependencies: - "pump" "^3.0.0" - -"get-stream@^5.0.0": - "integrity" "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz" - "version" "5.1.0" - dependencies: - "pump" "^3.0.0" - -"get-stream@3.0.0": - "integrity" "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" - "resolved" "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz" - "version" "3.0.0" - -"get-symbol-description@^1.0.0": - "integrity" "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==" - "resolved" "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "call-bind" "^1.0.2" - "get-intrinsic" "^1.1.1" - -"get-value@^2.0.3", "get-value@^2.0.6": - "integrity" "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" - "resolved" "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" - "version" "2.0.6" - -"glob-parent@^3.1.0": - "integrity" "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "is-glob" "^3.1.0" - "path-dirname" "^1.0.0" - -"glob-parent@~5.1.0": - "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" - "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - "version" "5.1.2" - dependencies: - "is-glob" "^4.0.1" - -"glob-to-regexp@^0.3.0": - "integrity" "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=" - "resolved" "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz" - "version" "0.3.0" - -"glob-to-regexp@^0.4.1": - "integrity" "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" - "resolved" "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" - "version" "0.4.1" - -"glob@^7.1.2", "glob@^7.1.3": - "integrity" "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==" - "resolved" "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" - "version" "7.1.6" - dependencies: - "fs.realpath" "^1.0.0" - "inflight" "^1.0.4" - "inherits" "2" - "minimatch" "^3.0.4" - "once" "^1.3.0" - "path-is-absolute" "^1.0.0" - -"globals@^11.1.0": - "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" - "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" - "version" "11.12.0" - -"globby@^8.0.1": - "integrity" "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==" - "resolved" "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz" - "version" "8.0.2" - dependencies: - "array-union" "^1.0.1" - "dir-glob" "2.0.0" - "fast-glob" "^2.0.2" - "glob" "^7.1.2" - "ignore" "^3.3.5" - "pify" "^3.0.0" - "slash" "^1.0.0" - -"google-libphonenumber@^3.2.24": - "integrity" "sha512-5Z3dZTgwacTjALlkRK5hTIjGLwTCJGNZtmWgnhpb1Z6XEBYGsXbJGsr9+MheP/2mAk/ssOvpvMXKEZISWeytcA==" - "resolved" "https://registry.npmjs.org/google-libphonenumber/-/google-libphonenumber-3.2.24.tgz" - "version" "3.2.24" - -"google-map-react@^1.1.7": - "integrity" "sha512-OWwfvVlJG3aQbDZOezWPzT7b8uqk5iMya5yEfBcfGYBFONna5UYCWZl49/cS0j1DPigtwtN0YCzPKjXMQHOUeA==" - "resolved" "https://registry.npmjs.org/google-map-react/-/google-map-react-1.1.7.tgz" - "version" "1.1.7" + create-error-class "^3.0.2" + debug "^2.6.8" + decompress-response "^3.3.0" + follow-redirects "^1.2.4" + form-urlencoded "^2.0.7" + in-publish "^2.0.0" + into-stream "^3.1.0" + is-plain-object "^2.0.4" + is-retry-allowed "^1.1.0" + is-stream "^1.1.0" + nano-pubsub "^1.0.2" + object-assign "^4.1.1" + parse-headers "^2.0.1" + progress-stream "^2.0.0" + same-origin "^0.1.1" + simple-concat "^1.0.0" + tunnel-agent "^0.6.0" + url-parse "^1.1.9" + +get-orientation@1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/get-orientation/-/get-orientation-1.1.2.tgz" + integrity sha512-/pViTfifW+gBbh/RnlFYHINvELT9Znt+SYyDKAUL6uV6By019AK/s+i9XP4jSwq7lwP38Fd8HVeTxym3+hkwmQ== + dependencies: + stream-parser "^0.3.1" + +get-proxy@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/get-proxy/-/get-proxy-2.1.0.tgz" + integrity sha512-zmZIaQTWnNQb4R4fJUEp/FC51eZsc6EkErspy3xtIYStaq8EB/hDIWipxsal+E8rz0qD7f2sL/NA9Xee4RInJw== + dependencies: + npm-conf "^1.1.0" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + +get-stream@3.0.0, get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +get-stream@^2.2.0: + version "2.3.1" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz" + integrity sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4= + dependencies: + object-assign "^4.0.1" + pinkie-promise "^2.0.0" + +get-stream@^4.0.0: + version "4.1.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz" + integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w== + dependencies: + pump "^3.0.0" + +get-stream@^5.0.0: + version "5.1.0" + resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz" + integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + dependencies: + pump "^3.0.0" + +get-symbol-description@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz" + integrity sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.1" + +get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@~5.1.0: + version "5.1.2" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-to-regexp@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz" + integrity sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs= + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@^7.1.2: + version "7.1.6" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globby@^8.0.1: + version "8.0.2" + resolved "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz" + integrity sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w== + dependencies: + array-union "^1.0.1" + dir-glob "2.0.0" + fast-glob "^2.0.2" + glob "^7.1.2" + ignore "^3.3.5" + pify "^3.0.0" + slash "^1.0.0" + +google-libphonenumber@^3.2.24: + version "3.2.24" + resolved "https://registry.npmjs.org/google-libphonenumber/-/google-libphonenumber-3.2.24.tgz" + integrity sha512-5Z3dZTgwacTjALlkRK5hTIjGLwTCJGNZtmWgnhpb1Z6XEBYGsXbJGsr9+MheP/2mAk/ssOvpvMXKEZISWeytcA== + +google-map-react@^1.1.7: + version "1.1.7" + resolved "https://registry.npmjs.org/google-map-react/-/google-map-react-1.1.7.tgz" + integrity sha512-OWwfvVlJG3aQbDZOezWPzT7b8uqk5iMya5yEfBcfGYBFONna5UYCWZl49/cS0j1DPigtwtN0YCzPKjXMQHOUeA== dependencies: "@mapbox/point-geometry" "^0.1.0" - "eventemitter3" "^1.1.0" - "prop-types" "^15.5.6" - "scriptjs" "^2.5.7" - -"got@^7.0.0": - "integrity" "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==" - "resolved" "https://registry.npmjs.org/got/-/got-7.1.0.tgz" - "version" "7.1.0" - dependencies: - "decompress-response" "^3.2.0" - "duplexer3" "^0.1.4" - "get-stream" "^3.0.0" - "is-plain-obj" "^1.1.0" - "is-retry-allowed" "^1.0.0" - "is-stream" "^1.0.0" - "isurl" "^1.0.0-alpha5" - "lowercase-keys" "^1.0.0" - "p-cancelable" "^0.3.0" - "p-timeout" "^1.1.1" - "safe-buffer" "^5.0.1" - "timed-out" "^4.0.0" - "url-parse-lax" "^1.0.0" - "url-to-options" "^1.0.1" - -"got@^8.3.1": - "integrity" "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==" - "resolved" "https://registry.npmjs.org/got/-/got-8.3.2.tgz" - "version" "8.3.2" + eventemitter3 "^1.1.0" + prop-types "^15.5.6" + scriptjs "^2.5.7" + +got@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" + integrity sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw== + dependencies: + decompress-response "^3.2.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-plain-obj "^1.1.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + p-cancelable "^0.3.0" + p-timeout "^1.1.1" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + url-parse-lax "^1.0.0" + url-to-options "^1.0.1" + +got@^8.3.1: + version "8.3.2" + resolved "https://registry.yarnpkg.com/got/-/got-8.3.2.tgz#1d23f64390e97f776cac52e5b936e5f514d2e937" + integrity sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw== dependencies: "@sindresorhus/is" "^0.7.0" - "cacheable-request" "^2.1.1" - "decompress-response" "^3.3.0" - "duplexer3" "^0.1.4" - "get-stream" "^3.0.0" - "into-stream" "^3.1.0" - "is-retry-allowed" "^1.1.0" - "isurl" "^1.0.0-alpha5" - "lowercase-keys" "^1.0.0" - "mimic-response" "^1.0.0" - "p-cancelable" "^0.4.0" - "p-timeout" "^2.0.1" - "pify" "^3.0.0" - "safe-buffer" "^5.1.1" - "timed-out" "^4.0.1" - "url-parse-lax" "^3.0.0" - "url-to-options" "^1.0.1" - -"graceful-fs@^4.1.10", "graceful-fs@^4.1.2": - "integrity" "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==" - "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz" - "version" "4.2.4" + cacheable-request "^2.1.1" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + into-stream "^3.1.0" + is-retry-allowed "^1.1.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + mimic-response "^1.0.0" + p-cancelable "^0.4.0" + p-timeout "^2.0.1" + pify "^3.0.0" + safe-buffer "^5.1.1" + timed-out "^4.0.1" + url-parse-lax "^3.0.0" + url-to-options "^1.0.1" + +graceful-fs@^4.1.10, graceful-fs@^4.1.2: + version "4.2.4" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== "graceful-readlink@>= 1.0.0": - "integrity" "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" - "resolved" "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" - "version" "1.0.1" - -"gray-matter@^4.0.3": - "integrity" "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==" - "resolved" "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "js-yaml" "^3.13.1" - "kind-of" "^6.0.2" - "section-matter" "^1.0.0" - "strip-bom-string" "^1.0.0" - -"groq-js@^0.3.0": - "integrity" "sha512-aMV+X2rWmrp7Zb63OcXr6X0ItfpAg/fiZbTeQeVLAyPwoGVnvQKNEi32rhziuLHJLIJeWjtJm7IKjwDwhyLhFA==" - "resolved" "https://registry.npmjs.org/groq-js/-/groq-js-0.3.0.tgz" - "version" "0.3.0" - -"groq@^2.0.9", "groq@^2.14.0": - "integrity" "sha512-V3VLBLftaEylbeXDwb2VoGa87SFLGLbU9h6Lz7vuZK+wcs4Kk92qG3A8nWtsdCp63hYKft0/AaXuanbkch0GeA==" - "resolved" "https://registry.npmjs.org/groq/-/groq-2.15.0.tgz" - "version" "2.15.0" - -"has-ansi@^2.0.0": - "integrity" "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=" - "resolved" "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "ansi-regex" "^2.0.0" - -"has-bigints@^1.0.1": - "integrity" "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" - "resolved" "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz" - "version" "1.0.1" - -"has-flag@^3.0.0": - "integrity" "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" - "version" "3.0.0" - -"has-flag@^4.0.0": - "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - "version" "4.0.0" - -"has-symbol-support-x@^1.4.1": - "integrity" "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" - "resolved" "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz" - "version" "1.4.2" - -"has-symbols@^1.0.1", "has-symbols@^1.0.2": - "integrity" "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" - "resolved" "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz" - "version" "1.0.2" - -"has-to-string-tag-x@^1.2.0": - "integrity" "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==" - "resolved" "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz" - "version" "1.4.1" - dependencies: - "has-symbol-support-x" "^1.4.1" - -"has-tostringtag@^1.0.0": - "integrity" "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==" - "resolved" "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "has-symbols" "^1.0.2" - -"has-value@^0.3.1": - "integrity" "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=" - "resolved" "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" - "version" "0.3.1" - dependencies: - "get-value" "^2.0.3" - "has-values" "^0.1.4" - "isobject" "^2.0.0" - -"has-value@^1.0.0": - "integrity" "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=" - "resolved" "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "get-value" "^2.0.6" - "has-values" "^1.0.0" - "isobject" "^3.0.0" - -"has-values@^0.1.4": - "integrity" "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - "resolved" "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" - "version" "0.1.4" - -"has-values@^1.0.0": - "integrity" "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=" - "resolved" "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "is-number" "^3.0.0" - "kind-of" "^4.0.0" - -"has@^1.0.3": - "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" - "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "function-bind" "^1.1.1" - -"hash-base@^3.0.0": - "integrity" "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==" - "resolved" "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "inherits" "^2.0.4" - "readable-stream" "^3.6.0" - "safe-buffer" "^5.2.0" - -"hash.js@^1.0.0", "hash.js@^1.0.3": - "integrity" "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==" - "resolved" "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" - "version" "1.1.7" - dependencies: - "inherits" "^2.0.3" - "minimalistic-assert" "^1.0.1" - -"hast-util-is-element@^1.0.0": - "integrity" "sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==" - "resolved" "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz" - "version" "1.1.0" - -"hast-util-sanitize@^3.0.0": - "integrity" "sha512-+2I0x2ZCAyiZOO/sb4yNLFmdwPBnyJ4PBkVTUMKMqBwYNA+lXSgOmoRXlJFazoyid9QPogRRKgKhVEodv181sA==" - "resolved" "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "xtend" "^4.0.0" - -"hast-util-to-html@^7.0.0": - "integrity" "sha512-yk2+1p3EJTEE9ZEUkgHsUSVhIpCsL/bvT8E5GzmWc+N1Po5gBw+0F8bo7dpxXR0nu0bQVxVZGX2lBGF21CmeDw==" - "resolved" "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-7.1.3.tgz" - "version" "7.1.3" - dependencies: - "ccount" "^1.0.0" - "comma-separated-tokens" "^1.0.0" - "hast-util-is-element" "^1.0.0" - "hast-util-whitespace" "^1.0.0" - "html-void-elements" "^1.0.0" - "property-information" "^5.0.0" - "space-separated-tokens" "^1.0.0" - "stringify-entities" "^3.0.1" - "unist-util-is" "^4.0.0" - "xtend" "^4.0.0" - -"hast-util-whitespace@^1.0.0": - "integrity" "sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A==" - "resolved" "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz" - "version" "1.0.4" - -"he@1.2.0": - "integrity" "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" - "resolved" "https://registry.npmjs.org/he/-/he-1.2.0.tgz" - "version" "1.2.0" - -"hmac-drbg@^1.0.1": - "integrity" "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=" - "resolved" "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "hash.js" "^1.0.3" - "minimalistic-assert" "^1.0.0" - "minimalistic-crypto-utils" "^1.0.1" - -"hoist-non-react-statics@^3.0.0": - "integrity" "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==" - "resolved" "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" - "version" "3.3.2" - dependencies: - "react-is" "^16.7.0" - -"hosted-git-info@^2.1.4": - "integrity" "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==" - "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz" - "version" "2.8.8" - -"html-element@^2.0.0": - "integrity" "sha512-xnFt2ZkbFcjc+JoAtg3Hl89VeEZDjododu4VCPkRvFmBTHHA9U1Nt6hLUWfW2O+6Sl/rT1hHK/PivleX3PdBJQ==" - "resolved" "https://registry.npmjs.org/html-element/-/html-element-2.3.1.tgz" - "version" "2.3.1" - dependencies: - "class-list" "~0.1.1" - -"html-void-elements@^1.0.0": - "integrity" "sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w==" - "resolved" "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz" - "version" "1.0.5" - -"http-cache-semantics@3.8.1": - "integrity" "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" - "resolved" "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz" - "version" "3.8.1" - -"http-errors@1.7.3": - "integrity" "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==" - "resolved" "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz" - "version" "1.7.3" - dependencies: - "depd" "~1.1.2" - "inherits" "2.0.4" - "setprototypeof" "1.1.1" - "statuses" ">= 1.5.0 < 2" - "toidentifier" "1.0.0" - -"https-browserify@^1.0.0", "https-browserify@1.0.0": - "integrity" "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" - "resolved" "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" - "version" "1.0.0" - -"human-signals@^1.1.1": - "integrity" "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==" - "resolved" "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz" - "version" "1.1.1" - -"hyperscript@^2.0.2": - "integrity" "sha1-ODnLpFVUvf4nu4HCFC0WhPgTWvU=" - "resolved" "https://registry.npmjs.org/hyperscript/-/hyperscript-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "browser-split" "0.0.0" - "class-list" "~0.1.0" - "html-element" "^2.0.0" - -"iconv-lite@^0.6.2": - "integrity" "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" - "version" "0.6.3" - dependencies: - "safer-buffer" ">= 2.1.2 < 3.0.0" - -"iconv-lite@0.4.24": - "integrity" "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==" - "resolved" "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" - "version" "0.4.24" - dependencies: - "safer-buffer" ">= 2.1.2 < 3" - -"ieee754@^1.1.4": - "integrity" "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" - "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz" - "version" "1.1.13" - -"ignore@^3.3.5": - "integrity" "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==" - "resolved" "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz" - "version" "3.3.10" - -"image-size@1.0.0": - "integrity" "sha512-JLJ6OwBfO1KcA+TvJT+v8gbE6iWbj24LyDNFgFEN0lzegn6cC6a/p3NIDaepMsJjQjlUWqIC7wJv8lBFxPNjcw==" - "resolved" "https://registry.npmjs.org/image-size/-/image-size-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "queue" "6.0.2" - -"imagemin-mozjpeg@^9.0.0": - "integrity" "sha512-TwOjTzYqCFRgROTWpVSt5UTT0JeCuzF1jswPLKALDd89+PmrJ2PdMMYeDLYZ1fs9cTovI9GJd68mRSnuVt691w==" - "resolved" "https://registry.npmjs.org/imagemin-mozjpeg/-/imagemin-mozjpeg-9.0.0.tgz" - "version" "9.0.0" - dependencies: - "execa" "^4.0.0" - "is-jpg" "^2.0.0" - "mozjpeg" "^7.0.0" - -"imagemin-optipng@^8.0.0": - "integrity" "sha512-CUGfhfwqlPjAC0rm8Fy+R2DJDBGjzy2SkfyT09L8rasnF9jSoHFqJ1xxSZWK6HVPZBMhGPMxCTL70OgTHlLF5A==" - "resolved" "https://registry.npmjs.org/imagemin-optipng/-/imagemin-optipng-8.0.0.tgz" - "version" "8.0.0" - dependencies: - "exec-buffer" "^3.0.0" - "is-png" "^2.0.0" - "optipng-bin" "^7.0.0" - -"imagemin-svgo@^9.0.0": - "integrity" "sha512-uNgXpKHd99C0WODkrJ8OO/3zW3qjgS4pW7hcuII0RcHN3tnKxDjJWcitdVC/TZyfIqSricU8WfrHn26bdSW62g==" - "resolved" "https://registry.npmjs.org/imagemin-svgo/-/imagemin-svgo-9.0.0.tgz" - "version" "9.0.0" - dependencies: - "is-svg" "^4.2.1" - "svgo" "^2.1.0" - -"imagemin@^6.1.0": - "integrity" "sha512-8ryJBL1CN5uSHpiBMX0rJw79C9F9aJqMnjGnrd/1CafegpNuA81RBAAru/jQQEOWlOJJlpRnlcVFF6wq+Ist0A==" - "resolved" "https://registry.npmjs.org/imagemin/-/imagemin-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "file-type" "^10.7.0" - "globby" "^8.0.1" - "make-dir" "^1.0.0" - "p-pipe" "^1.1.0" - "pify" "^4.0.1" - "replace-ext" "^1.0.0" - -"img-loader@^3.0.1": - "integrity" "sha512-0jDJqexgzOuq3zlXwFTBKJlMcaP1uXyl5t4Qu6b1IgXb3IwBDjPfVylBC8vHFIIESDw/S+5QkBbtBrt4T8wESA==" - "resolved" "https://registry.npmjs.org/img-loader/-/img-loader-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "loader-utils" "^1.1.0" - -"import-fresh@^3.1.0": - "integrity" "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==" - "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz" - "version" "3.2.1" - dependencies: - "parent-module" "^1.0.0" - "resolve-from" "^4.0.0" - -"import-lazy@^3.1.0": - "integrity" "sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ==" - "resolved" "https://registry.npmjs.org/import-lazy/-/import-lazy-3.1.0.tgz" - "version" "3.1.0" - -"in-publish@^2.0.0": - "integrity" "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==" - "resolved" "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz" - "version" "2.0.1" - -"indent-string@^2.1.0": - "integrity" "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=" - "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "repeating" "^2.0.0" - -"indexof@0.0.1": - "integrity" "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=" - "resolved" "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" - "version" "0.0.1" - -"inflight@^1.0.4": - "integrity" "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" - "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" - "version" "1.0.6" - dependencies: - "once" "^1.3.0" - "wrappy" "1" - -"inherits@^2.0.1", "inherits@^2.0.3", "inherits@^2.0.4", "inherits@~2.0.3", "inherits@~2.0.4", "inherits@2", "inherits@2.0.4": - "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" - "version" "2.0.4" - -"inherits@~2.0.1", "inherits@2.0.1": - "integrity" "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" - "version" "2.0.1" - -"inherits@2.0.3": - "integrity" "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" - "version" "2.0.3" - -"ini@^1.3.4": - "integrity" "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" - "resolved" "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz" - "version" "1.3.5" - -"internal-slot@^1.0.3": - "integrity" "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==" - "resolved" "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" - "version" "1.0.3" - dependencies: - "get-intrinsic" "^1.1.0" - "has" "^1.0.3" - "side-channel" "^1.0.4" - -"into-stream@^3.1.0": - "integrity" "sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY=" - "resolved" "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "from2" "^2.1.1" - "p-is-promise" "^1.1.0" - -"invariant@^2.2.4": - "integrity" "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==" - "resolved" "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" - "version" "2.2.4" - dependencies: - "loose-envify" "^1.0.0" - -"is-accessor-descriptor@^0.1.6": - "integrity" "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=" - "resolved" "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" - "version" "0.1.6" - dependencies: - "kind-of" "^3.0.2" - -"is-accessor-descriptor@^1.0.0": - "integrity" "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==" - "resolved" "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "kind-of" "^6.0.0" - -"is-alphabetical@^1.0.0": - "integrity" "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==" - "resolved" "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz" - "version" "1.0.4" - -"is-alphanumerical@^1.0.0": - "integrity" "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==" - "resolved" "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "is-alphabetical" "^1.0.0" - "is-decimal" "^1.0.0" - -"is-arguments@^1.0.4": - "integrity" "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==" - "resolved" "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-arrayish@^0.2.1": - "integrity" "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" - "version" "0.2.1" - -"is-bigint@^1.0.1": - "integrity" "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==" - "resolved" "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "has-bigints" "^1.0.1" - -"is-binary-path@~2.1.0": - "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" - "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "binary-extensions" "^2.0.0" - -"is-boolean-object@^1.1.0": - "integrity" "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==" - "resolved" "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-buffer@^1.1.5", "is-buffer@~1.1.6": - "integrity" "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - "resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz" - "version" "1.1.6" - -"is-buffer@^2.0.0": - "integrity" "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==" - "resolved" "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz" - "version" "2.0.5" - -"is-callable@^1.1.4", "is-callable@^1.2.4": - "integrity" "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" - "resolved" "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz" - "version" "1.2.4" - -"is-data-descriptor@^0.1.4": - "integrity" "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=" - "resolved" "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz" - "version" "0.1.4" + version "1.0.1" + resolved "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" + integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= + +gray-matter@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz" + integrity sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q== + dependencies: + js-yaml "^3.13.1" + kind-of "^6.0.2" + section-matter "^1.0.0" + strip-bom-string "^1.0.0" + +groq-js@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/groq-js/-/groq-js-0.3.0.tgz" + integrity sha512-aMV+X2rWmrp7Zb63OcXr6X0ItfpAg/fiZbTeQeVLAyPwoGVnvQKNEi32rhziuLHJLIJeWjtJm7IKjwDwhyLhFA== + +groq@^2.0.9, groq@^2.14.0: + version "2.15.0" + resolved "https://registry.npmjs.org/groq/-/groq-2.15.0.tgz" + integrity sha512-V3VLBLftaEylbeXDwb2VoGa87SFLGLbU9h6Lz7vuZK+wcs4Kk92qG3A8nWtsdCp63hYKft0/AaXuanbkch0GeA== + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-bigints@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz" + integrity sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz" + integrity sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw== + +has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz" + integrity sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw== + dependencies: + has-symbol-support-x "^1.4.1" + +has-tostringtag@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz" + integrity sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ== + dependencies: + has-symbols "^1.0.2" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hast-util-is-element@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz" + integrity sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ== + +hast-util-sanitize@^3.0.0: + version "3.0.2" + resolved "https://registry.npmjs.org/hast-util-sanitize/-/hast-util-sanitize-3.0.2.tgz" + integrity sha512-+2I0x2ZCAyiZOO/sb4yNLFmdwPBnyJ4PBkVTUMKMqBwYNA+lXSgOmoRXlJFazoyid9QPogRRKgKhVEodv181sA== + dependencies: + xtend "^4.0.0" + +hast-util-to-html@^7.0.0: + version "7.1.3" + resolved "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-7.1.3.tgz" + integrity sha512-yk2+1p3EJTEE9ZEUkgHsUSVhIpCsL/bvT8E5GzmWc+N1Po5gBw+0F8bo7dpxXR0nu0bQVxVZGX2lBGF21CmeDw== + dependencies: + ccount "^1.0.0" + comma-separated-tokens "^1.0.0" + hast-util-is-element "^1.0.0" + hast-util-whitespace "^1.0.0" + html-void-elements "^1.0.0" + property-information "^5.0.0" + space-separated-tokens "^1.0.0" + stringify-entities "^3.0.1" + unist-util-is "^4.0.0" + xtend "^4.0.0" + +hast-util-whitespace@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-1.0.4.tgz" + integrity sha512-I5GTdSfhYfAPNztx2xJRQpG8cuDSNt599/7YUn7Gx/WxNMsG+a835k97TDkFgk123cwjfwINaZknkKkphx/f2A== + +he@1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hoist-non-react-statics@^3.0.0: + version "3.3.2" + resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +html-element@^2.0.0: + version "2.3.1" + resolved "https://registry.npmjs.org/html-element/-/html-element-2.3.1.tgz" + integrity sha512-xnFt2ZkbFcjc+JoAtg3Hl89VeEZDjododu4VCPkRvFmBTHHA9U1Nt6hLUWfW2O+6Sl/rT1hHK/PivleX3PdBJQ== + dependencies: + class-list "~0.1.1" + +html-void-elements@^1.0.0: + version "1.0.5" + resolved "https://registry.npmjs.org/html-void-elements/-/html-void-elements-1.0.5.tgz" + integrity sha512-uE/TxKuyNIcx44cIWnjr/rfIATDH7ZaOMmstu0CwhFG1Dunhlp4OC6/NMbhiwoq5BpW0ubi303qnEk/PZj614w== + +http-cache-semantics@3.8.1: + version "3.8.1" + resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz" + integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w== + +http-errors@1.7.3: + version "1.7.3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz" + integrity sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + +https-browserify@1.0.0, https-browserify@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz" + integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= + +human-signals@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz" + integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== + +hyperscript@^2.0.2: + version "2.0.2" + resolved "https://registry.npmjs.org/hyperscript/-/hyperscript-2.0.2.tgz" + integrity sha1-ODnLpFVUvf4nu4HCFC0WhPgTWvU= + dependencies: + browser-split "0.0.0" + class-list "~0.1.0" + html-element "^2.0.0" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@^0.6.2: + version "0.6.3" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +ignore@^3.3.5: + version "3.3.10" + resolved "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz" + integrity sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug== + +image-size@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/image-size/-/image-size-1.0.0.tgz" + integrity sha512-JLJ6OwBfO1KcA+TvJT+v8gbE6iWbj24LyDNFgFEN0lzegn6cC6a/p3NIDaepMsJjQjlUWqIC7wJv8lBFxPNjcw== + dependencies: + queue "6.0.2" + +imagemin-mozjpeg@^9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/imagemin-mozjpeg/-/imagemin-mozjpeg-9.0.0.tgz" + integrity sha512-TwOjTzYqCFRgROTWpVSt5UTT0JeCuzF1jswPLKALDd89+PmrJ2PdMMYeDLYZ1fs9cTovI9GJd68mRSnuVt691w== + dependencies: + execa "^4.0.0" + is-jpg "^2.0.0" + mozjpeg "^7.0.0" + +imagemin-svgo@^9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/imagemin-svgo/-/imagemin-svgo-9.0.0.tgz" + integrity sha512-uNgXpKHd99C0WODkrJ8OO/3zW3qjgS4pW7hcuII0RcHN3tnKxDjJWcitdVC/TZyfIqSricU8WfrHn26bdSW62g== + dependencies: + is-svg "^4.2.1" + svgo "^2.1.0" + +imagemin@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/imagemin/-/imagemin-6.1.0.tgz" + integrity sha512-8ryJBL1CN5uSHpiBMX0rJw79C9F9aJqMnjGnrd/1CafegpNuA81RBAAru/jQQEOWlOJJlpRnlcVFF6wq+Ist0A== + dependencies: + file-type "^10.7.0" + globby "^8.0.1" + make-dir "^1.0.0" + p-pipe "^1.1.0" + pify "^4.0.1" + replace-ext "^1.0.0" + +img-loader@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/img-loader/-/img-loader-3.0.1.tgz" + integrity sha512-0jDJqexgzOuq3zlXwFTBKJlMcaP1uXyl5t4Qu6b1IgXb3IwBDjPfVylBC8vHFIIESDw/S+5QkBbtBrt4T8wESA== + dependencies: + loader-utils "^1.1.0" + +import-fresh@^3.1.0: + version "3.2.1" + resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-lazy@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/import-lazy/-/import-lazy-3.1.0.tgz" + integrity sha512-8/gvXvX2JMn0F+CDlSC4l6kOmVaLOO3XLkksI7CI3Ud95KDYJuYur2b9P/PUt/i/pDAMd/DulQsNbbbmRRsDIQ== + +in-publish@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz" + integrity sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ== + +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz" + integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= + dependencies: + repeating "^2.0.0" + +indexof@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@~2.0.4: + version "2.0.4" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.1, inherits@~2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + integrity sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE= + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.4: + version "1.3.5" + resolved "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +internal-slot@^1.0.3: + version "1.0.3" + resolved "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz" + integrity sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA== + dependencies: + get-intrinsic "^1.1.0" + has "^1.0.3" + side-channel "^1.0.4" + +into-stream@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz" + integrity sha1-lvsKk2wSur1v8XUqF9BWFqvQlMY= + dependencies: + from2 "^2.1.1" + p-is-promise "^1.1.0" + +invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-alphabetical@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz" + integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== + +is-alphanumerical@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz" + integrity sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A== + dependencies: + is-alphabetical "^1.0.0" + is-decimal "^1.0.0" + +is-arguments@^1.0.4: + version "1.1.1" + resolved "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz" + integrity sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-bigint@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz" + integrity sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg== + dependencies: + has-bigints "^1.0.1" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.1.2.tgz#5c6dc200246dd9321ae4b885a114bb1f75f63719" + integrity sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-buffer@^1.1.5, is-buffer@~1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-buffer@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-callable@^1.1.4, is-callable@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.4.tgz#47301d58dd0259407865547853df6d61fe471945" + integrity sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w== + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= dependencies: - "kind-of" "^3.0.2" + kind-of "^3.0.2" -"is-data-descriptor@^1.0.0": - "integrity" "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==" - "resolved" "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz" - "version" "1.0.0" +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== dependencies: - "kind-of" "^6.0.0" - -"is-date-object@^1.0.1": - "integrity" "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==" - "resolved" "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "has-tostringtag" "^1.0.0" + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.5.tgz#0841d5536e724c25597bf6ea62e1bd38298df31f" + integrity sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ== + dependencies: + has-tostringtag "^1.0.0" -"is-decimal@^1.0.0": - "integrity" "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==" - "resolved" "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz" - "version" "1.0.4" - -"is-descriptor@^0.1.0": - "integrity" "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==" - "resolved" "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz" - "version" "0.1.6" - dependencies: - "is-accessor-descriptor" "^0.1.6" - "is-data-descriptor" "^0.1.4" - "kind-of" "^5.0.0" +is-decimal@^1.0.0: + version "1.0.4" + resolved "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz" + integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" -"is-descriptor@^1.0.0", "is-descriptor@^1.0.2": - "integrity" "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==" - "resolved" "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "is-accessor-descriptor" "^1.0.0" - "is-data-descriptor" "^1.0.0" - "kind-of" "^6.0.2" - -"is-extendable@^0.1.0", "is-extendable@^0.1.1": - "integrity" "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" - "resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz" - "version" "0.1.1" - -"is-extendable@^1.0.1": - "integrity" "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==" - "resolved" "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "is-plain-object" "^2.0.4" - -"is-extglob@^2.1.0", "is-extglob@^2.1.1": - "integrity" "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" - "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - "version" "2.1.1" - -"is-finite@^1.0.0": - "integrity" "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==" - "resolved" "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz" - "version" "1.1.0" - -"is-generator-function@^1.0.7": - "integrity" "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==" - "resolved" "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz" - "version" "1.0.10" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-glob@^3.1.0": - "integrity" "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "is-extglob" "^2.1.0" - -"is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@~4.0.1": - "integrity" "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==" - "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "is-extglob" "^2.1.1" - -"is-hexadecimal@^1.0.0": - "integrity" "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==" - "resolved" "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz" - "version" "1.0.4" - -"is-jpg@^2.0.0": - "integrity" "sha1-LhmX+m6RZuqsAkLarkQ0A+TvHZc=" - "resolved" "https://registry.npmjs.org/is-jpg/-/is-jpg-2.0.0.tgz" - "version" "2.0.0" - -"is-nan@^1.2.1": - "integrity" "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==" - "resolved" "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "call-bind" "^1.0.0" - "define-properties" "^1.1.3" - -"is-natural-number@^4.0.1": - "integrity" "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=" - "resolved" "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz" - "version" "4.0.1" - -"is-negative-zero@^2.0.1": - "integrity" "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" - "resolved" "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz" - "version" "2.0.1" - -"is-number-object@^1.0.4": - "integrity" "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==" - "resolved" "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz" - "version" "1.0.6" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-number@^3.0.0": - "integrity" "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "kind-of" "^3.0.2" - -"is-number@^7.0.0": - "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" - "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - "version" "7.0.0" - -"is-obj@^1.0.0": - "integrity" "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" - "resolved" "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" - "version" "1.0.1" - -"is-object@^1.0.1": - "integrity" "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" - "resolved" "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz" - "version" "1.0.1" - -"is-plain-obj@^1.0.0", "is-plain-obj@^1.1.0": - "integrity" "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" - "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" - "version" "1.1.0" - -"is-plain-obj@^2.0.0": - "integrity" "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" - "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" - "version" "2.1.0" - -"is-plain-object@^2.0.3", "is-plain-object@^2.0.4": - "integrity" "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==" - "resolved" "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz" - "version" "2.0.4" - dependencies: - "isobject" "^3.0.1" - -"is-png@^2.0.0": - "integrity" "sha512-4KPGizaVGj2LK7xwJIz8o5B2ubu1D/vcQsgOGFEDlpcvgZHto4gBnyd0ig7Ws+67ixmwKoNmu0hYnpo6AaKb5g==" - "resolved" "https://registry.npmjs.org/is-png/-/is-png-2.0.0.tgz" - "version" "2.0.0" - -"is-regex@^1.1.4": - "integrity" "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==" - "resolved" "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz" - "version" "1.1.4" - dependencies: - "call-bind" "^1.0.2" - "has-tostringtag" "^1.0.0" - -"is-retina@^1.0.3": - "integrity" "sha1-10AbKGvqKuN/Ykd1iN5QTQuGR+M=" - "resolved" "https://registry.npmjs.org/is-retina/-/is-retina-1.0.3.tgz" - "version" "1.0.3" - -"is-retry-allowed@^1.0.0", "is-retry-allowed@^1.1.0": - "integrity" "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" - "resolved" "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz" - "version" "1.2.0" - -"is-stream@^1.0.0": - "integrity" "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" - "version" "1.1.0" - -"is-stream@^1.1.0": - "integrity" "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz" - "version" "1.1.0" - -"is-stream@^2.0.0": - "integrity" "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==" - "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz" - "version" "2.0.0" - -"is-string@^1.0.5", "is-string@^1.0.7": - "integrity" "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==" - "resolved" "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz" - "version" "1.0.7" - dependencies: - "has-tostringtag" "^1.0.0" - -"is-svg@^4.2.1": - "integrity" "sha512-h2CGs+yPUyvkgTJQS9cJzo9lYK06WgRiXUqBBHtglSzVKAuH4/oWsqk7LGfbSa1hGk9QcZ0SyQtVggvBA8LZXA==" - "resolved" "https://registry.npmjs.org/is-svg/-/is-svg-4.3.1.tgz" - "version" "4.3.1" - dependencies: - "fast-xml-parser" "^3.19.0" - -"is-symbol@^1.0.2", "is-symbol@^1.0.3": - "integrity" "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==" - "resolved" "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "has-symbols" "^1.0.2" - -"is-typed-array@^1.1.3", "is-typed-array@^1.1.7": - "integrity" "sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA==" - "resolved" "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.8.tgz" - "version" "1.1.8" - dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "es-abstract" "^1.18.5" - "foreach" "^2.0.5" - "has-tostringtag" "^1.0.0" - -"is-utf8@^0.2.0": - "integrity" "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - "resolved" "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" - "version" "0.2.1" - -"is-windows@^1.0.2": - "integrity" "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - "resolved" "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" - "version" "1.0.2" - -"isarray@^1.0.0", "isarray@~1.0.0", "isarray@1.0.0": - "integrity" "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" - "version" "1.0.0" - -"isexe@^2.0.0": - "integrity" "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - "version" "2.0.0" - -"isobject@^2.0.0": - "integrity" "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=" - "resolved" "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "isarray" "1.0.0" - -"isobject@^3.0.0", "isobject@^3.0.1": - "integrity" "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" - "resolved" "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz" - "version" "3.0.1" - -"isurl@^1.0.0-alpha5": - "integrity" "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==" - "resolved" "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "has-to-string-tag-x" "^1.2.0" - "is-object" "^1.0.1" - -"jest-worker@27.0.0-next.5": - "integrity" "sha512-mk0umAQ5lT+CaOJ+Qp01N6kz48sJG2kr2n1rX0koqKf6FIygQV0qLOdN9SCYID4IVeSigDOcPeGLozdMLYfb5g==" - "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.0-next.5.tgz" - "version" "27.0.0-next.5" +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-finite@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== + +is-generator-function@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.0.10.tgz#f1558baf1ac17e0deea7c0415c438351ff2b3c72" + integrity sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A== + dependencies: + has-tostringtag "^1.0.0" + +is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-hexadecimal@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz#cc35c97588da4bd49a8eedd6bc4082d44dcb23a7" + integrity sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw== + +is-jpg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-jpg/-/is-jpg-2.0.0.tgz#2e1997fa6e9166eaac0242daae443403e4ef1d97" + integrity sha1-LhmX+m6RZuqsAkLarkQ0A+TvHZc= + +is-nan@^1.2.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/is-nan/-/is-nan-1.3.2.tgz#043a54adea31748b55b6cd4e09aadafa69bd9e1d" + integrity sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +is-natural-number@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-natural-number/-/is-natural-number-4.0.1.tgz#ab9d76e1db4ced51e35de0c72ebecf09f734cde8" + integrity sha1-q5124dtM7VHjXeDHLr7PCfc0zeg= + +is-negative-zero@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.2.tgz#7bf6f03a28003b8b3965de3ac26f664d765f3150" + integrity sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA== + +is-number-object@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.6.tgz#6a7aaf838c7f0686a50b4553f7e54a96494e89f0" + integrity sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g== + dependencies: + has-tostringtag "^1.0.0" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-obj@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + +is-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.2.tgz#a56552e1c665c9e950b4a025461da87e72f86fcf" + integrity sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA== + +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= + +is-plain-obj@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-regex@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.4.tgz#eef5663cd59fa4c0ae339505323df6854bb15958" + integrity sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg== + dependencies: + call-bind "^1.0.2" + has-tostringtag "^1.0.0" + +is-retina@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-retina/-/is-retina-1.0.3.tgz#d7401b286bea2ae37f62477588de504d0b8647e3" + integrity sha1-10AbKGvqKuN/Ykd1iN5QTQuGR+M= + +is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz#d778488bd0a4666a3be8a1482b9f2baafedea8b4" + integrity sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg== + +is-stream@^1.0.0, is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.5, is-string@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.7.tgz#0dd12bf2006f255bb58f695110eff7491eebc0fd" + integrity sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg== + dependencies: + has-tostringtag "^1.0.0" + +is-svg@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/is-svg/-/is-svg-4.3.2.tgz#a119e9932e1af53f6be1969d1790d6cc5fd947d3" + integrity sha512-mM90duy00JGMyjqIVHu9gNTjywdZV+8qNasX8cm/EEYZ53PHDgajvbBwNVvty5dwSAxLUD3p3bdo+7sR/UMrpw== + dependencies: + fast-xml-parser "^3.19.0" + +is-symbol@^1.0.2, is-symbol@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.4.tgz#a6dac93b635b063ca6872236de88910a57af139c" + integrity sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg== + dependencies: + has-symbols "^1.0.2" + +is-typed-array@^1.1.3, is-typed-array@^1.1.7: + version "1.1.8" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.8.tgz#cbaa6585dc7db43318bc5b89523ea384a6f65e79" + integrity sha512-HqH41TNZq2fgtGT8WHVFVJhBVGuY3AnP3Q36K8JKXUxSxRgk/d+7NjmwG2vo2mYmXK8UYZKu0qH8bVP5gEisjA== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-abstract "^1.18.5" + foreach "^2.0.5" + has-tostringtag "^1.0.0" + +is-utf8@^0.2.0: + version "0.2.1" + resolved "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isobject@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + integrity sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w== + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" + +jest-worker@27.0.0-next.5: + version "27.0.0-next.5" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.0.0-next.5.tgz#5985ee29b12a4e191f4aae4bb73b97971d86ec28" + integrity sha512-mk0umAQ5lT+CaOJ+Qp01N6kz48sJG2kr2n1rX0koqKf6FIygQV0qLOdN9SCYID4IVeSigDOcPeGLozdMLYfb5g== dependencies: "@types/node" "*" - "merge-stream" "^2.0.0" - "supports-color" "^8.0.0" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + integrity sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg= + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json2mq@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a" + integrity sha1-tje9O6nqvhIsg+lyBIOusQ0skEo= + dependencies: + string-convert "^0.2.0" + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== + dependencies: + minimist "^1.2.5" + +keyv@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" + integrity sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA== + dependencies: + json-buffer "3.0.0" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-script@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/load-script/-/load-script-1.0.0.tgz#0491939e0bee5643ee494a7e3da3d2bac70c6ca4" + integrity sha1-BJGTngvuVkPuSUp+PaPSuscMbKQ= + +loader-utils@1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" + integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== + dependencies: + big.js "^5.2.2" + emojis-list "^2.0.0" + json5 "^1.0.1" + +loader-utils@^1.0.2, loader-utils@^1.1.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" + integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" + +loader-utils@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.2.tgz#d6e3b4fb81870721ae4e0868ab11dd638368c129" + integrity sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash.sortby@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" + integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= + +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= + +lodash@^4.17.11, lodash@^4.17.15: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +logalot@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz" + integrity sha1-X46MkNME7fElMJUaVVSruMXj9VI= + dependencies: + figures "^1.3.5" + squeak "^1.0.0" + +longest-streak@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.4.tgz#b8599957da5b5dab64dee3fe316fa774597d90e4" + integrity sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg== + +longest@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz" + integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= + +loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +loud-rejection@^1.0.0: + version "1.6.0" + resolved "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz" + integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= + dependencies: + currently-unhandled "^0.4.1" + signal-exit "^3.0.0" + +lowercase-keys@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + integrity sha1-TjNms55/VFfjXxMkvfb4jQv8cwY= + +lowercase-keys@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" + integrity sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA== + +lpad-align@^1.0.1: + version "1.1.2" + resolved "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz" + integrity sha1-IfYArBwwlcPG5JfuZyce4ISB/p4= + dependencies: + get-stdin "^4.0.1" + indent-string "^2.1.0" + longest "^1.0.0" + meow "^3.3.0" + +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-dir@^1.0.0, make-dir@^1.2.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" + integrity sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ== + dependencies: + pify "^3.0.0" + +make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-error@^1.3.0: + version "1.3.6" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-obj@^1.0.0, map-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" + integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" -"js-tokens@^3.0.0 || ^4.0.0", "js-tokens@^4.0.0": - "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" - "version" "4.0.0" - -"js-yaml@^3.13.1": - "integrity" "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==" - "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz" - "version" "3.14.0" - dependencies: - "argparse" "^1.0.7" - "esprima" "^4.0.0" - -"jsesc@^2.5.1": - "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" - "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" - "version" "2.5.2" - -"json-buffer@3.0.0": - "integrity" "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" - "resolved" "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz" - "version" "3.0.0" - -"json-parse-better-errors@^1.0.1": - "integrity" "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" - "resolved" "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz" - "version" "1.0.2" - -"json-schema-traverse@^0.4.1": - "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" - "version" "0.4.1" - -"json2mq@^0.2.0": - "integrity" "sha1-tje9O6nqvhIsg+lyBIOusQ0skEo=" - "resolved" "https://registry.npmjs.org/json2mq/-/json2mq-0.2.0.tgz" - "version" "0.2.0" - dependencies: - "string-convert" "^0.2.0" - -"json5@^1.0.1": - "integrity" "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==" - "resolved" "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "minimist" "^1.2.0" - -"json5@^2.1.2": - "integrity" "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==" - "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "minimist" "^1.2.5" - -"keyv@3.0.0": - "integrity" "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==" - "resolved" "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "json-buffer" "3.0.0" - -"kind-of@^3.0.2", "kind-of@^3.0.3", "kind-of@^3.2.0": - "integrity" "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz" - "version" "3.2.2" - dependencies: - "is-buffer" "^1.1.5" - -"kind-of@^4.0.0": - "integrity" "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "is-buffer" "^1.1.5" - -"kind-of@^5.0.0": - "integrity" "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz" - "version" "5.1.0" - -"kind-of@^6.0.0": - "integrity" "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" - "version" "6.0.3" - -"kind-of@^6.0.2": - "integrity" "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" - "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" - "version" "6.0.3" - -"lines-and-columns@^1.1.6": - "integrity" "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" - "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz" - "version" "1.1.6" - -"load-json-file@^1.0.0": - "integrity" "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=" - "resolved" "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "graceful-fs" "^4.1.2" - "parse-json" "^2.2.0" - "pify" "^2.0.0" - "pinkie-promise" "^2.0.0" - "strip-bom" "^2.0.0" - -"load-script@^1.0.0": - "integrity" "sha1-BJGTngvuVkPuSUp+PaPSuscMbKQ=" - "resolved" "https://registry.npmjs.org/load-script/-/load-script-1.0.0.tgz" - "version" "1.0.0" - -"loader-utils@^1.0.2", "loader-utils@^1.1.0", "loader-utils@1.2.3": - "integrity" "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz" - "version" "1.2.3" - dependencies: - "big.js" "^5.2.2" - "emojis-list" "^2.0.0" - "json5" "^1.0.1" - -"loader-utils@^2.0.0": - "integrity" "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==" - "resolved" "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "big.js" "^5.2.2" - "emojis-list" "^3.0.0" - "json5" "^2.1.2" - -"locate-path@^5.0.0": - "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" - "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" - "version" "5.0.0" - dependencies: - "p-locate" "^4.1.0" - -"lodash-es@^4.17.15": - "integrity" "sha512-rlrc3yU3+JNOpZ9zj5pQtxnx2THmvRykwL4Xlxoa8I9lHBlVbbyPhgyPMioxVZ4NqyxaVVtaJnzsyOidQIhyyQ==" - "resolved" "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.15.tgz" - "version" "4.17.15" - -"lodash.debounce@^4.0.8": - "integrity" "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" - "resolved" "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz" - "version" "4.0.8" - -"lodash.sortby@^4.7.0": - "integrity" "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" - "resolved" "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz" - "version" "4.7.0" - -"lodash.throttle@^4.1.1": - "integrity" "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=" - "resolved" "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz" - "version" "4.1.1" - -"lodash@^4.17.11", "lodash@^4.17.13", "lodash@^4.17.15": - "integrity" "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" - "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz" - "version" "4.17.15" - -"logalot@^2.0.0", "logalot@^2.1.0": - "integrity" "sha1-X46MkNME7fElMJUaVVSruMXj9VI=" - "resolved" "https://registry.npmjs.org/logalot/-/logalot-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "figures" "^1.3.5" - "squeak" "^1.0.0" - -"longest-streak@^2.0.0": - "integrity" "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==" - "resolved" "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz" - "version" "2.0.4" - -"longest@^1.0.0": - "integrity" "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" - "resolved" "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz" - "version" "1.0.1" - -"loose-envify@^1.0.0", "loose-envify@^1.1.0", "loose-envify@^1.4.0": - "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" - "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" - "version" "1.4.0" - dependencies: - "js-tokens" "^3.0.0 || ^4.0.0" - -"loud-rejection@^1.0.0": - "integrity" "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=" - "resolved" "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz" - "version" "1.6.0" - dependencies: - "currently-unhandled" "^0.4.1" - "signal-exit" "^3.0.0" - -"lowercase-keys@^1.0.0": - "integrity" "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" - "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz" - "version" "1.0.1" - -"lowercase-keys@1.0.0": - "integrity" "sha1-TjNms55/VFfjXxMkvfb4jQv8cwY=" - "resolved" "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz" - "version" "1.0.0" - -"lpad-align@^1.0.1": - "integrity" "sha1-IfYArBwwlcPG5JfuZyce4ISB/p4=" - "resolved" "https://registry.npmjs.org/lpad-align/-/lpad-align-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "get-stdin" "^4.0.1" - "indent-string" "^2.1.0" - "longest" "^1.0.0" - "meow" "^3.3.0" - -"lru-cache@^4.0.1": - "integrity" "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz" - "version" "4.1.5" - dependencies: - "pseudomap" "^1.0.2" - "yallist" "^2.1.2" - -"lru-cache@^6.0.0": - "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" - "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" - "version" "6.0.0" - dependencies: - "yallist" "^4.0.0" - -"make-dir@^1.0.0", "make-dir@^1.2.0": - "integrity" "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "pify" "^3.0.0" - -"make-dir@^3.0.2": - "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" - "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "semver" "^6.0.0" - -"make-error@^1.3.0": - "integrity" "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" - "resolved" "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" - "version" "1.3.6" - -"map-cache@^0.2.2": - "integrity" "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" - "resolved" "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz" - "version" "0.2.2" - -"map-obj@^1.0.0", "map-obj@^1.0.1": - "integrity" "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" - "resolved" "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" - "version" "1.0.1" - -"map-visit@^1.0.0": - "integrity" "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=" - "resolved" "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "object-visit" "^1.0.0" +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" -"md5.js@^1.3.4": - "integrity" "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==" - "resolved" "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" - "version" "1.3.5" - dependencies: - "hash-base" "^3.0.0" - "inherits" "^2.0.1" - "safe-buffer" "^5.1.2" - -"md5@^2.1.0": - "integrity" "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==" - "resolved" "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz" - "version" "2.3.0" +md5@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" + integrity sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g== dependencies: - "charenc" "0.0.2" - "crypt" "0.0.2" - "is-buffer" "~1.1.6" + charenc "0.0.2" + crypt "0.0.2" + is-buffer "~1.1.6" -"mdast-util-definitions@^4.0.0": - "integrity" "sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ==" - "resolved" "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "unist-util-visit" "^2.0.0" +mdast-util-definitions@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" + integrity sha512-k8AJ6aNnUkB7IE+5azR9h81O5EQ/cTDXtWdMq9Kk5KcEW/8ritU5CeLg/9HhOC++nALHBlaogJ5jz0Ybk3kPMQ== + dependencies: + unist-util-visit "^2.0.0" -"mdast-util-from-markdown@^0.8.0": - "integrity" "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==" - "resolved" "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz" - "version" "0.8.5" +mdast-util-from-markdown@^0.8.0: + version "0.8.5" + resolved "https://registry.yarnpkg.com/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz#d1ef2ca42bc377ecb0463a987910dae89bd9a28c" + integrity sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ== dependencies: "@types/mdast" "^3.0.0" - "mdast-util-to-string" "^2.0.0" - "micromark" "~2.11.0" - "parse-entities" "^2.0.0" - "unist-util-stringify-position" "^2.0.0" + mdast-util-to-string "^2.0.0" + micromark "~2.11.0" + parse-entities "^2.0.0" + unist-util-stringify-position "^2.0.0" -"mdast-util-to-hast@^10.0.0": - "integrity" "sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ==" - "resolved" "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz" - "version" "10.2.0" +mdast-util-to-hast@^10.0.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/mdast-util-to-hast/-/mdast-util-to-hast-10.2.0.tgz#61875526a017d8857b71abc9333942700b2d3604" + integrity sha512-JoPBfJ3gBnHZ18icCwHR50orC9kNH81tiR1gs01D8Q5YpV6adHNO9nKNuFBCJQ941/32PT1a63UF/DitmS3amQ== dependencies: "@types/mdast" "^3.0.0" "@types/unist" "^2.0.0" - "mdast-util-definitions" "^4.0.0" - "mdurl" "^1.0.0" - "unist-builder" "^2.0.0" - "unist-util-generated" "^1.0.0" - "unist-util-position" "^3.0.0" - "unist-util-visit" "^2.0.0" - -"mdast-util-to-markdown@^0.6.0": - "integrity" "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==" - "resolved" "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz" - "version" "0.6.5" + mdast-util-definitions "^4.0.0" + mdurl "^1.0.0" + unist-builder "^2.0.0" + unist-util-generated "^1.0.0" + unist-util-position "^3.0.0" + unist-util-visit "^2.0.0" + +mdast-util-to-markdown@^0.6.0: + version "0.6.5" + resolved "https://registry.yarnpkg.com/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz#b33f67ca820d69e6cc527a93d4039249b504bebe" + integrity sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ== dependencies: "@types/unist" "^2.0.0" - "longest-streak" "^2.0.0" - "mdast-util-to-string" "^2.0.0" - "parse-entities" "^2.0.0" - "repeat-string" "^1.0.0" - "zwitch" "^1.0.0" - -"mdast-util-to-string@^2.0.0": - "integrity" "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==" - "resolved" "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz" - "version" "2.0.0" - -"mdn-data@2.0.14": - "integrity" "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==" - "resolved" "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" - "version" "2.0.14" - -"mdurl@^1.0.0": - "integrity" "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=" - "resolved" "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz" - "version" "1.0.1" - -"memoize-one@^5.0.0", "memoize-one@^5.1.1": - "integrity" "sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA==" - "resolved" "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz" - "version" "5.1.1" - -"mendoza@^2.1.1": - "integrity" "sha512-8f3Se8HDfobXCsdESXZBSSYcVzIRi+cMIEmz/SR4bjgFEjHJaXzrsBYr+vyrFGEtK5xTpCcU+DiwxWJV6hCuhQ==" - "resolved" "https://registry.npmjs.org/mendoza/-/mendoza-2.1.1.tgz" - "version" "2.1.1" - -"meow@^3.3.0": - "integrity" "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=" - "resolved" "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz" - "version" "3.7.0" - dependencies: - "camelcase-keys" "^2.0.0" - "decamelize" "^1.1.2" - "loud-rejection" "^1.0.0" - "map-obj" "^1.0.1" - "minimist" "^1.1.3" - "normalize-package-data" "^2.3.4" - "object-assign" "^4.0.1" - "read-pkg-up" "^1.0.1" - "redent" "^1.0.0" - "trim-newlines" "^1.0.0" - -"merge-stream@^2.0.0": - "integrity" "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" - "resolved" "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" - "version" "2.0.0" - -"merge2@^1.2.3": - "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" - "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - "version" "1.4.1" - -"micromark@~2.11.0": - "integrity" "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==" - "resolved" "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz" - "version" "2.11.4" - dependencies: - "debug" "^4.0.0" - "parse-entities" "^2.0.0" - -"micromatch@^3.1.10": - "integrity" "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==" - "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" - "version" "3.1.10" - dependencies: - "arr-diff" "^4.0.0" - "array-unique" "^0.3.2" - "braces" "^2.3.1" - "define-property" "^2.0.2" - "extend-shallow" "^3.0.2" - "extglob" "^2.0.4" - "fragment-cache" "^0.2.1" - "kind-of" "^6.0.2" - "nanomatch" "^1.2.9" - "object.pick" "^1.3.0" - "regex-not" "^1.0.0" - "snapdragon" "^0.8.1" - "to-regex" "^3.0.2" - -"miller-rabin@^4.0.0": - "integrity" "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==" - "resolved" "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "bn.js" "^4.0.0" - "brorand" "^1.0.1" - -"mime-db@^1.28.0": - "integrity" "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" - "resolved" "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz" - "version" "1.44.0" - -"mime@^2.0.3": - "integrity" "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==" - "resolved" "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz" - "version" "2.4.6" - -"mimic-fn@^2.1.0": - "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" - "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" - "version" "2.1.0" - -"mimic-response@^1.0.0": - "integrity" "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" - "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" - "version" "1.0.1" - -"mimic-response@^3.1.0": - "integrity" "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==" - "resolved" "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" - "version" "3.1.0" - -"minimalistic-assert@^1.0.0", "minimalistic-assert@^1.0.1": - "integrity" "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" - "resolved" "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" - "version" "1.0.1" - -"minimalistic-crypto-utils@^1.0.1": - "integrity" "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" - "resolved" "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" - "version" "1.0.1" - -"minimatch@^3.0.4": - "integrity" "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==" - "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" - "version" "3.0.4" - dependencies: - "brace-expansion" "^1.1.7" - -"minimist@^1.1.3", "minimist@^1.2.0", "minimist@^1.2.5": - "integrity" "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" - "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" - "version" "1.2.5" - -"mixin-deep@^1.2.0": - "integrity" "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==" - "resolved" "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" - "version" "1.3.2" - dependencies: - "for-in" "^1.0.2" - "is-extendable" "^1.0.1" - -"mozjpeg@^7.0.0": - "integrity" "sha512-mH7atSbIusVTO3A4H43sEdmveN3aWn54k6V0edefzCEvOsTrbjg5murY2TsNznaztWnIgaRbWxeLVp4IgKdedQ==" - "resolved" "https://registry.npmjs.org/mozjpeg/-/mozjpeg-7.0.0.tgz" - "version" "7.0.0" - dependencies: - "bin-build" "^3.0.0" - "bin-wrapper" "^4.0.0" - "logalot" "^2.1.0" - -"ms@^2.1.1": - "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" - "version" "2.1.2" - -"ms@2.0.0": - "integrity" "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - "resolved" "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" - "version" "2.0.0" - -"nano-pubsub@^1.0.2": - "integrity" "sha1-NM53b3r5WZFbj3rP6N1rnGbzvek=" - "resolved" "https://registry.npmjs.org/nano-pubsub/-/nano-pubsub-1.0.2.tgz" - "version" "1.0.2" - -"nanoid@^3.1.23": - "integrity" "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==" - "resolved" "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz" - "version" "3.1.25" - -"nanomatch@^1.2.9": - "integrity" "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==" - "resolved" "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" - "version" "1.2.13" - dependencies: - "arr-diff" "^4.0.0" - "array-unique" "^0.3.2" - "define-property" "^2.0.2" - "extend-shallow" "^3.0.2" - "fragment-cache" "^0.2.1" - "is-windows" "^1.0.2" - "kind-of" "^6.0.2" - "object.pick" "^1.3.0" - "regex-not" "^1.0.0" - "snapdragon" "^0.8.1" - "to-regex" "^3.0.1" - -"native-url@0.3.4": - "integrity" "sha512-6iM8R99ze45ivyH8vybJ7X0yekIcPf5GgLV5K0ENCbmRcaRIDoj37BC8iLEmaaBfqqb8enuZ5p0uhY+lVAbAcA==" - "resolved" "https://registry.npmjs.org/native-url/-/native-url-0.3.4.tgz" - "version" "0.3.4" - dependencies: - "querystring" "^0.2.0" - -"next-fonts@^1.2.0": - "integrity" "sha512-k1rQmd1yyHrZVvqWeLD2xut+Krqr6BorZrF9ETbfhXb/GkTr8WLpg8rEE54ktjIs7yzqcgl3GkADonR9HGcglQ==" - "resolved" "https://registry.npmjs.org/next-fonts/-/next-fonts-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "file-loader" "^2.0.0" - "url-loader" "^1.1.1" - -"next-optimized-images@^2.6.1": - "integrity" "sha512-P+vDuXUv9yasf8vVXoJthmSRsV1jhTxZ5mlm9Ga+iVLuM7TwwwttIGbvFBYTm7H9AulukqyI5yuA9wOFytapgw==" - "resolved" "https://registry.npmjs.org/next-optimized-images/-/next-optimized-images-2.6.1.tgz" - "version" "2.6.1" - dependencies: - "chalk" "^2.4.2" - "figures" "^3.0.0" - "file-loader" "^3.0.1" - "imagemin" "^6.1.0" - "img-loader" "^3.0.1" - "raw-loader" "^2.0.0" - "url-loader" "^1.1.2" - -"next-sanity-image@^3.1.5": - "integrity" "sha512-+DWafmOyS/9EA1tpR/bh2wmz6vBWLm9x1z1i8VJbC54mkqsoODX9xwVX270FL5eazaqPYQjEpnnZkXuv6cwGXw==" - "resolved" "https://registry.npmjs.org/next-sanity-image/-/next-sanity-image-3.1.6.tgz" - "version" "3.1.6" + longest-streak "^2.0.0" + mdast-util-to-string "^2.0.0" + parse-entities "^2.0.0" + repeat-string "^1.0.0" + zwitch "^1.0.0" + +mdast-util-to-string@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz" + integrity sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w== + +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + +mdurl@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz" + integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= + +memoize-one@^5.0.0, memoize-one@^5.1.1: + version "5.1.1" + resolved "https://registry.npmjs.org/memoize-one/-/memoize-one-5.1.1.tgz" + integrity sha512-HKeeBpWvqiVJD57ZUAsJNm71eHTykffzcLZVYWiVfQeI1rJtuEaS7hQiEpWfVVk18donPwJEcFKIkCmPJNOhHA== + +mendoza@^2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/mendoza/-/mendoza-2.1.1.tgz" + integrity sha512-8f3Se8HDfobXCsdESXZBSSYcVzIRi+cMIEmz/SR4bjgFEjHJaXzrsBYr+vyrFGEtK5xTpCcU+DiwxWJV6hCuhQ== + +meow@^3.3.0: + version "3.7.0" + resolved "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz" + integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= + dependencies: + camelcase-keys "^2.0.0" + decamelize "^1.1.2" + loud-rejection "^1.0.0" + map-obj "^1.0.1" + minimist "^1.1.3" + normalize-package-data "^2.3.4" + object-assign "^4.0.1" + read-pkg-up "^1.0.1" + redent "^1.0.0" + trim-newlines "^1.0.0" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.2.3: + version "1.4.1" + resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromark@~2.11.0: + version "2.11.4" + resolved "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz" + integrity sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA== + dependencies: + debug "^4.0.0" + parse-entities "^2.0.0" + +micromatch@^3.1.10: + version "3.1.10" + resolved "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@^1.28.0: + version "1.44.0" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz" + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== + +mime@^2.0.3: + version "2.4.6" + resolved "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz" + integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +mimic-response@^3.1.0: + version "3.1.0" + resolved "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz" + integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mixin-deep@^1.2.0: + version "1.3.2" + resolved "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mozjpeg@^7.0.0: + version "7.0.0" + resolved "https://registry.npmjs.org/mozjpeg/-/mozjpeg-7.0.0.tgz" + integrity sha512-mH7atSbIusVTO3A4H43sEdmveN3aWn54k6V0edefzCEvOsTrbjg5murY2TsNznaztWnIgaRbWxeLVp4IgKdedQ== + dependencies: + bin-build "^3.0.0" + bin-wrapper "^4.0.0" + logalot "^2.1.0" + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +nano-pubsub@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/nano-pubsub/-/nano-pubsub-1.0.2.tgz" + integrity sha1-NM53b3r5WZFbj3rP6N1rnGbzvek= + +nanoid@^3.1.23: + version "3.1.25" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz" + integrity sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +native-url@0.3.4: + version "0.3.4" + resolved "https://registry.npmjs.org/native-url/-/native-url-0.3.4.tgz" + integrity sha512-6iM8R99ze45ivyH8vybJ7X0yekIcPf5GgLV5K0ENCbmRcaRIDoj37BC8iLEmaaBfqqb8enuZ5p0uhY+lVAbAcA== + dependencies: + querystring "^0.2.0" + +next-fonts@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/next-fonts/-/next-fonts-1.2.0.tgz" + integrity sha512-k1rQmd1yyHrZVvqWeLD2xut+Krqr6BorZrF9ETbfhXb/GkTr8WLpg8rEE54ktjIs7yzqcgl3GkADonR9HGcglQ== + dependencies: + file-loader "^2.0.0" + url-loader "^1.1.1" + +next-optimized-images@^2.6.1: + version "2.6.1" + resolved "https://registry.npmjs.org/next-optimized-images/-/next-optimized-images-2.6.1.tgz" + integrity sha512-P+vDuXUv9yasf8vVXoJthmSRsV1jhTxZ5mlm9Ga+iVLuM7TwwwttIGbvFBYTm7H9AulukqyI5yuA9wOFytapgw== + dependencies: + chalk "^2.4.2" + figures "^3.0.0" + file-loader "^3.0.1" + imagemin "^6.1.0" + img-loader "^3.0.1" + raw-loader "^2.0.0" + url-loader "^1.1.2" + +next-sanity-image@^3.1.5: + version "3.1.6" + resolved "https://registry.npmjs.org/next-sanity-image/-/next-sanity-image-3.1.6.tgz" + integrity sha512-+DWafmOyS/9EA1tpR/bh2wmz6vBWLm9x1z1i8VJbC54mkqsoODX9xwVX270FL5eazaqPYQjEpnnZkXuv6cwGXw== dependencies: "@sanity/image-url" "^0.140.22" -"next-sanity@^0.4.0": - "integrity" "sha512-Z3OG0Z/ORrDPhR5zM8ySIF7z6LynfNqWBTEFksKMOg54RjKV0zfSMAK60Lfbm4U/3u4Nldu96dmVhUkHFkSerw==" - "resolved" "https://registry.npmjs.org/next-sanity/-/next-sanity-0.4.0.tgz" - "version" "0.4.0" +next-sanity@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/next-sanity/-/next-sanity-0.4.0.tgz" + integrity sha512-Z3OG0Z/ORrDPhR5zM8ySIF7z6LynfNqWBTEFksKMOg54RjKV0zfSMAK60Lfbm4U/3u4Nldu96dmVhUkHFkSerw== dependencies: "@sanity/block-content-to-react" "^3.0.0" "@sanity/client" "^2.14.0" "@sanity/groq-store" "^0.2.1" "@sanity/image-url" "^0.140.22" - "groq" "^2.14.0" - "use-deep-compare-effect" "^1.6.1" + groq "^2.14.0" + use-deep-compare-effect "^1.6.1" -"next-seo@^4.26.0": - "integrity" "sha512-5TqywQ3XAwqdmEU1AyNZjR7WdDKFTkDD8aBtgQelPvzBUEy8i0mTjtiw+09jhiHFNik6FqS8uPKCaYcY6jRgSQ==" - "resolved" "https://registry.npmjs.org/next-seo/-/next-seo-4.26.0.tgz" - "version" "4.26.0" +next-seo@^4.26.0: + version "4.26.0" + resolved "https://registry.npmjs.org/next-seo/-/next-seo-4.26.0.tgz" + integrity sha512-5TqywQ3XAwqdmEU1AyNZjR7WdDKFTkDD8aBtgQelPvzBUEy8i0mTjtiw+09jhiHFNik6FqS8uPKCaYcY6jRgSQ== -"next@^11.1.2": - "integrity" "sha512-azEYL0L+wFjv8lstLru3bgvrzPvK0P7/bz6B/4EJ9sYkXeW8r5Bjh78D/Ol7VOg0EIPz0CXoe72hzAlSAXo9hw==" - "resolved" "https://registry.npmjs.org/next/-/next-11.1.2.tgz" - "version" "11.1.2" +next@^11.1.2: + version "11.1.2" + resolved "https://registry.npmjs.org/next/-/next-11.1.2.tgz" + integrity sha512-azEYL0L+wFjv8lstLru3bgvrzPvK0P7/bz6B/4EJ9sYkXeW8r5Bjh78D/Ol7VOg0EIPz0CXoe72hzAlSAXo9hw== dependencies: "@babel/runtime" "7.15.3" "@hapi/accept" "5.0.2" @@ -3943,1726 +3939,1667 @@ "@next/react-dev-overlay" "11.1.2" "@next/react-refresh-utils" "11.1.2" "@node-rs/helper" "1.2.1" - "assert" "2.0.0" - "ast-types" "0.13.2" - "browserify-zlib" "0.2.0" - "browserslist" "4.16.6" - "buffer" "5.6.0" - "caniuse-lite" "^1.0.30001228" - "chalk" "2.4.2" - "chokidar" "3.5.1" - "constants-browserify" "1.0.0" - "crypto-browserify" "3.12.0" - "cssnano-simple" "3.0.0" - "domain-browser" "4.19.0" - "encoding" "0.1.13" - "etag" "1.8.1" - "find-cache-dir" "3.3.1" - "get-orientation" "1.1.2" - "https-browserify" "1.0.0" - "image-size" "1.0.0" - "jest-worker" "27.0.0-next.5" - "native-url" "0.3.4" - "node-fetch" "2.6.1" - "node-html-parser" "1.4.9" - "node-libs-browser" "^2.2.1" - "os-browserify" "0.3.0" - "p-limit" "3.1.0" - "path-browserify" "1.0.1" - "pnp-webpack-plugin" "1.6.4" - "postcss" "8.2.15" - "process" "0.11.10" - "querystring-es3" "0.2.1" - "raw-body" "2.4.1" - "react-is" "17.0.2" - "react-refresh" "0.8.3" - "stream-browserify" "3.0.0" - "stream-http" "3.1.1" - "string_decoder" "1.3.0" - "styled-jsx" "4.0.1" - "timers-browserify" "2.0.12" - "tty-browserify" "0.0.1" - "use-subscription" "1.5.1" - "util" "0.12.4" - "vm-browserify" "1.1.2" - "watchpack" "2.1.1" + assert "2.0.0" + ast-types "0.13.2" + browserify-zlib "0.2.0" + browserslist "4.16.6" + buffer "5.6.0" + caniuse-lite "^1.0.30001228" + chalk "2.4.2" + chokidar "3.5.1" + constants-browserify "1.0.0" + crypto-browserify "3.12.0" + cssnano-simple "3.0.0" + domain-browser "4.19.0" + encoding "0.1.13" + etag "1.8.1" + find-cache-dir "3.3.1" + get-orientation "1.1.2" + https-browserify "1.0.0" + image-size "1.0.0" + jest-worker "27.0.0-next.5" + native-url "0.3.4" + node-fetch "2.6.1" + node-html-parser "1.4.9" + node-libs-browser "^2.2.1" + os-browserify "0.3.0" + p-limit "3.1.0" + path-browserify "1.0.1" + pnp-webpack-plugin "1.6.4" + postcss "8.2.15" + process "0.11.10" + querystring-es3 "0.2.1" + raw-body "2.4.1" + react-is "17.0.2" + react-refresh "0.8.3" + stream-browserify "3.0.0" + stream-http "3.1.1" + string_decoder "1.3.0" + styled-jsx "4.0.1" + timers-browserify "2.0.12" + tty-browserify "0.0.1" + use-subscription "1.5.1" + util "0.12.4" + vm-browserify "1.1.2" + watchpack "2.1.1" optionalDependencies: "@next/swc-darwin-arm64" "11.1.2" "@next/swc-darwin-x64" "11.1.2" "@next/swc-linux-x64-gnu" "11.1.2" "@next/swc-win32-x64-msvc" "11.1.2" -"nice-try@^1.0.4": - "integrity" "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" - "resolved" "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" - "version" "1.0.5" - -"node-fetch@2.6.1": - "integrity" "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" - "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz" - "version" "2.6.1" - -"node-html-parser@1.4.9": - "integrity" "sha512-UVcirFD1Bn0O+TSmloHeHqZZCxHjvtIeGdVdGMhyZ8/PWlEiZaZ5iJzR189yKZr8p0FXN58BUeC7RHRkf/KYGw==" - "resolved" "https://registry.npmjs.org/node-html-parser/-/node-html-parser-1.4.9.tgz" - "version" "1.4.9" - dependencies: - "he" "1.2.0" - -"node-libs-browser@^2.2.1": - "integrity" "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==" - "resolved" "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz" - "version" "2.2.1" - dependencies: - "assert" "^1.1.1" - "browserify-zlib" "^0.2.0" - "buffer" "^4.3.0" - "console-browserify" "^1.1.0" - "constants-browserify" "^1.0.0" - "crypto-browserify" "^3.11.0" - "domain-browser" "^1.1.1" - "events" "^3.0.0" - "https-browserify" "^1.0.0" - "os-browserify" "^0.3.0" - "path-browserify" "0.0.1" - "process" "^0.11.10" - "punycode" "^1.2.4" - "querystring-es3" "^0.2.0" - "readable-stream" "^2.3.3" - "stream-browserify" "^2.0.1" - "stream-http" "^2.7.2" - "string_decoder" "^1.0.0" - "timers-browserify" "^2.0.4" - "tty-browserify" "0.0.0" - "url" "^0.11.0" - "util" "^0.11.0" - "vm-browserify" "^1.0.1" - -"node-releases@^1.1.71": - "integrity" "sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA==" - "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-1.1.76.tgz" - "version" "1.1.76" - -"normalize-package-data@^2.3.2", "normalize-package-data@^2.3.4": - "integrity" "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==" - "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" - "version" "2.5.0" - dependencies: - "hosted-git-info" "^2.1.4" - "resolve" "^1.10.0" - "semver" "2 || 3 || 4 || 5" - "validate-npm-package-license" "^3.0.1" - -"normalize-path@^3.0.0", "normalize-path@~3.0.0": - "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - "version" "3.0.0" - -"normalize-url@2.0.1": - "integrity" "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==" - "resolved" "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "prepend-http" "^2.0.0" - "query-string" "^5.0.1" - "sort-keys" "^2.0.0" - -"npm-conf@^1.1.0": - "integrity" "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==" - "resolved" "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz" - "version" "1.1.3" - dependencies: - "config-chain" "^1.1.11" - "pify" "^3.0.0" - -"npm-run-path@^2.0.0": - "integrity" "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=" - "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "path-key" "^2.0.0" - -"npm-run-path@^4.0.0": - "integrity" "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==" - "resolved" "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" - "version" "4.0.1" - dependencies: - "path-key" "^3.0.0" - -"nth-check@^2.0.0": - "integrity" "sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q==" - "resolved" "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "boolbase" "^1.0.0" - -"object-assign@^4.0.1", "object-assign@^4.1.0", "object-assign@^4.1.1": - "integrity" "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - "version" "4.1.1" - -"object-copy@^0.1.0": - "integrity" "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=" - "resolved" "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" - "version" "0.1.0" - dependencies: - "copy-descriptor" "^0.1.0" - "define-property" "^0.2.5" - "kind-of" "^3.0.3" - -"object-inspect@^1.11.0", "object-inspect@^1.9.0": - "integrity" "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" - "resolved" "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz" - "version" "1.11.0" - -"object-is@^1.0.1": - "integrity" "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==" - "resolved" "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" - "version" "1.1.5" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - -"object-keys@^1.0.12", "object-keys@^1.1.1": - "integrity" "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - "resolved" "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" - "version" "1.1.1" - -"object-visit@^1.0.0": - "integrity" "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=" - "resolved" "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "isobject" "^3.0.0" - -"object.assign@^4.1.2": - "integrity" "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==" - "resolved" "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz" - "version" "4.1.2" - dependencies: - "call-bind" "^1.0.0" - "define-properties" "^1.1.3" - "has-symbols" "^1.0.1" - "object-keys" "^1.1.1" - -"object.pick@^1.3.0": - "integrity" "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=" - "resolved" "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz" - "version" "1.3.0" +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-fetch@2.6.1: + version "2.6.1" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== + +node-html-parser@1.4.9: + version "1.4.9" + resolved "https://registry.npmjs.org/node-html-parser/-/node-html-parser-1.4.9.tgz" + integrity sha512-UVcirFD1Bn0O+TSmloHeHqZZCxHjvtIeGdVdGMhyZ8/PWlEiZaZ5iJzR189yKZr8p0FXN58BUeC7RHRkf/KYGw== + dependencies: + he "1.2.0" + +node-libs-browser@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz" + integrity sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q== + dependencies: + assert "^1.1.1" + browserify-zlib "^0.2.0" + buffer "^4.3.0" + console-browserify "^1.1.0" + constants-browserify "^1.0.0" + crypto-browserify "^3.11.0" + domain-browser "^1.1.1" + events "^3.0.0" + https-browserify "^1.0.0" + os-browserify "^0.3.0" + path-browserify "0.0.1" + process "^0.11.10" + punycode "^1.2.4" + querystring-es3 "^0.2.0" + readable-stream "^2.3.3" + stream-browserify "^2.0.1" + stream-http "^2.7.2" + string_decoder "^1.0.0" + timers-browserify "^2.0.4" + tty-browserify "0.0.0" + url "^0.11.0" + util "^0.11.0" + vm-browserify "^1.0.1" + +node-releases@^1.1.71: + version "1.1.76" + resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.76.tgz" + integrity sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA== + +normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: + version "2.5.0" + resolved "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-url@2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz" + integrity sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw== + dependencies: + prepend-http "^2.0.0" + query-string "^5.0.1" + sort-keys "^2.0.0" + +npm-conf@^1.1.0: + version "1.1.3" + resolved "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz" + integrity sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw== + dependencies: + config-chain "^1.1.11" + pify "^3.0.0" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npm-run-path@^4.0.0: + version "4.0.1" + resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +nth-check@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.0.0.tgz" + integrity sha512-i4sc/Kj8htBrAiH1viZ0TgU8Y5XqCaV/FziYK6TBczxmeKm3AEFWqqF3195yKudrarqy7Zu80Ra5dobFjn9X/Q== + dependencies: + boolbase "^1.0.0" + +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-inspect@^1.11.0, object-inspect@^1.9.0: + version "1.11.0" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz" + integrity sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg== + +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== dependencies: - "isobject" "^3.0.1" + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" -"once@^1.3.0", "once@^1.3.1", "once@^1.4.0": - "integrity" "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" - "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" - "version" "1.4.0" +object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= dependencies: - "wrappy" "1" + isobject "^3.0.1" -"onetime@^5.1.0": - "integrity" "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==" - "resolved" "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz" - "version" "5.1.0" +once@^1.3.0, once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= dependencies: - "mimic-fn" "^2.1.0" + wrappy "1" -"optipng-bin@^7.0.0": - "integrity" "sha512-mesUAwfedu5p9gRQwlYgD6Svw5IH3VUIWDJj/9cNpP3yFNbbEVqkTMWYhrIEn/cxmbGA3LpZrdoV2Yl8OfmnIA==" - "resolved" "https://registry.npmjs.org/optipng-bin/-/optipng-bin-7.0.0.tgz" - "version" "7.0.0" +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: - "bin-build" "^3.0.0" - "bin-wrapper" "^4.0.0" - "logalot" "^2.0.0" + mimic-fn "^2.1.0" -"original@^1.0.0": - "integrity" "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==" - "resolved" "https://registry.npmjs.org/original/-/original-1.0.2.tgz" - "version" "1.0.2" +original@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/original/-/original-1.0.2.tgz" + integrity sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg== dependencies: - "url-parse" "^1.4.3" + url-parse "^1.4.3" -"os-browserify@^0.3.0", "os-browserify@0.3.0": - "integrity" "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" - "resolved" "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz" - "version" "0.3.0" +os-browserify@0.3.0, os-browserify@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz" + integrity sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc= -"os-filter-obj@^2.0.0": - "integrity" "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==" - "resolved" "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz" - "version" "2.0.0" +os-filter-obj@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/os-filter-obj/-/os-filter-obj-2.0.0.tgz#1c0b62d5f3a2442749a2d139e6dddee6e81d8d16" + integrity sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg== dependencies: - "arch" "^2.1.0" + arch "^2.1.0" -"p-cancelable@^0.3.0": - "integrity" "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==" - "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz" - "version" "0.3.0" +p-cancelable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" + integrity sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw== -"p-cancelable@^0.4.0": - "integrity" "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==" - "resolved" "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz" - "version" "0.4.1" +p-cancelable@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" + integrity sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ== -"p-event@^1.0.0": - "integrity" "sha1-jmtPT2XHK8W2/ii3XtqHT5akoIU=" - "resolved" "https://registry.npmjs.org/p-event/-/p-event-1.3.0.tgz" - "version" "1.3.0" +p-event@^1.0.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-1.3.0.tgz#8e6b4f4f65c72bc5b6fe28b75eda874f96a4a085" + integrity sha1-jmtPT2XHK8W2/ii3XtqHT5akoIU= dependencies: - "p-timeout" "^1.1.1" - -"p-event@^2.1.0": - "integrity" "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==" - "resolved" "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz" - "version" "2.3.1" - dependencies: - "p-timeout" "^2.0.1" - -"p-finally@^1.0.0": - "integrity" "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=" - "resolved" "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz" - "version" "1.0.0" - -"p-is-promise@^1.1.0": - "integrity" "sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4=" - "resolved" "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz" - "version" "1.1.0" - -"p-limit@^2.2.0": - "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" - "version" "2.3.0" + p-timeout "^1.1.1" + +p-event@^2.1.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/p-event/-/p-event-2.3.1.tgz#596279ef169ab2c3e0cae88c1cfbb08079993ef6" + integrity sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA== + dependencies: + p-timeout "^2.0.1" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-is-promise@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" + integrity sha1-nJRWmJ6fZYgBewQ01WCXZ1w9oF4= + +p-limit@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: - "p-try" "^2.0.0" - -"p-limit@3.1.0": - "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" - "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - "version" "3.1.0" + p-try "^2.0.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== dependencies: - "yocto-queue" "^0.1.0" - -"p-locate@^4.1.0": - "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" - "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" - "version" "4.1.0" + p-limit "^2.2.0" + +p-map-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-map-series/-/p-map-series-1.0.0.tgz#bf98fe575705658a9e1351befb85ae4c1f07bdca" + integrity sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco= dependencies: - "p-limit" "^2.2.0" + p-reduce "^1.0.0" -"p-map-series@^1.0.0": - "integrity" "sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco=" - "resolved" "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "p-reduce" "^1.0.0" +p-pipe@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-pipe/-/p-pipe-1.2.0.tgz#4b1a11399a11520a67790ee5a0c1d5881d6befe9" + integrity sha1-SxoROZoRUgpneQ7loMHViB1r7+k= -"p-pipe@^1.1.0": - "integrity" "sha1-SxoROZoRUgpneQ7loMHViB1r7+k=" - "resolved" "https://registry.npmjs.org/p-pipe/-/p-pipe-1.2.0.tgz" - "version" "1.2.0" - -"p-reduce@^1.0.0": - "integrity" "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=" - "resolved" "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz" - "version" "1.0.0" - -"p-timeout@^1.1.1": - "integrity" "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=" - "resolved" "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz" - "version" "1.2.1" +p-reduce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" + integrity sha1-GMKw3ZNqRpClKfgjH1ig/bakffo= + +p-timeout@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" + integrity sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y= dependencies: - "p-finally" "^1.0.0" - -"p-timeout@^2.0.1": - "integrity" "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==" - "resolved" "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "p-finally" "^1.0.0" + p-finally "^1.0.0" + +p-timeout@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" + integrity sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA== + dependencies: + p-finally "^1.0.0" -"p-try@^2.0.0": - "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" - "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" - "version" "2.2.0" - -"pako@~1.0.5": - "integrity" "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - "resolved" "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz" - "version" "1.0.11" - -"parent-module@^1.0.0": - "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" - "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "callsites" "^3.0.0" - -"parse-asn1@^5.0.0", "parse-asn1@^5.1.5": - "integrity" "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==" - "resolved" "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz" - "version" "5.1.6" - dependencies: - "asn1.js" "^5.2.0" - "browserify-aes" "^1.0.0" - "evp_bytestokey" "^1.0.0" - "pbkdf2" "^3.0.3" - "safe-buffer" "^5.1.1" +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pako@~1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.6" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4" + integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw== + dependencies: + asn1.js "^5.2.0" + browserify-aes "^1.0.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" -"parse-entities@^2.0.0": - "integrity" "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==" - "resolved" "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "character-entities" "^1.0.0" - "character-entities-legacy" "^1.0.0" - "character-reference-invalid" "^1.0.0" - "is-alphanumerical" "^1.0.0" - "is-decimal" "^1.0.0" - "is-hexadecimal" "^1.0.0" - -"parse-headers@^2.0.1": - "integrity" "sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw==" - "resolved" "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.4.tgz" - "version" "2.0.4" - -"parse-json@^2.2.0": - "integrity" "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=" - "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" - "version" "2.2.0" - dependencies: - "error-ex" "^1.2.0" +parse-entities@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/parse-entities/-/parse-entities-2.0.0.tgz#53c6eb5b9314a1f4ec99fa0fdf7ce01ecda0cbe8" + integrity sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ== + dependencies: + character-entities "^1.0.0" + character-entities-legacy "^1.0.0" + character-reference-invalid "^1.0.0" + is-alphanumerical "^1.0.0" + is-decimal "^1.0.0" + is-hexadecimal "^1.0.0" + +parse-headers@^2.0.1: + version "2.0.4" + resolved "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.4.tgz" + integrity sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw== + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" -"parse-json@^5.0.0": - "integrity" "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==" - "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz" - "version" "5.0.0" +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== dependencies: "@babel/code-frame" "^7.0.0" - "error-ex" "^1.3.1" - "json-parse-better-errors" "^1.0.1" - "lines-and-columns" "^1.1.6" - -"pascalcase@^0.1.1": - "integrity" "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" - "resolved" "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" - "version" "0.1.1" - -"path-browserify@0.0.1": - "integrity" "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==" - "resolved" "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz" - "version" "0.0.1" - -"path-browserify@1.0.1": - "integrity" "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" - "resolved" "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" - "version" "1.0.1" - -"path-dirname@^1.0.0": - "integrity" "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" - "resolved" "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz" - "version" "1.0.2" - -"path-exists@^2.0.0": - "integrity" "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "pinkie-promise" "^2.0.0" - -"path-exists@^4.0.0": - "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" - "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - "version" "4.0.0" - -"path-is-absolute@^1.0.0": - "integrity" "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" - "version" "1.0.1" - -"path-key@^2.0.0", "path-key@^2.0.1": - "integrity" "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" - "version" "2.0.1" - -"path-key@^3.0.0", "path-key@^3.1.0": - "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" - "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - "version" "3.1.1" - -"path-parse@^1.0.6": - "integrity" "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz" - "version" "1.0.6" - -"path-type@^1.0.0": - "integrity" "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=" - "resolved" "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "graceful-fs" "^4.1.2" - "pify" "^2.0.0" - "pinkie-promise" "^2.0.0" - -"path-type@^3.0.0": - "integrity" "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==" - "resolved" "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "pify" "^3.0.0" - -"path-type@^4.0.0": - "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" - "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" - "version" "4.0.0" - -"pbkdf2@^3.0.3": - "integrity" "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==" - "resolved" "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" - "version" "3.1.2" - dependencies: - "create-hash" "^1.1.2" - "create-hmac" "^1.1.4" - "ripemd160" "^2.0.1" - "safe-buffer" "^5.0.1" - "sha.js" "^2.4.8" - -"pend@~1.2.0": - "integrity" "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" - "resolved" "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" - "version" "1.2.0" - -"picomatch@^2.0.4", "picomatch@^2.2.1": - "integrity" "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" - "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz" - "version" "2.3.0" - -"pify@^2.0.0": - "integrity" "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - "resolved" "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - "version" "2.3.0" - -"pify@^2.2.0": - "integrity" "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - "resolved" "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - "version" "2.3.0" - -"pify@^2.3.0": - "integrity" "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=" - "resolved" "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - "version" "2.3.0" - -"pify@^3.0.0": - "integrity" "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" - "resolved" "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" - "version" "3.0.0" - -"pify@^4.0.1": - "integrity" "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==" - "resolved" "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" - "version" "4.0.1" - -"pinkie-promise@^2.0.0": - "integrity" "sha1-ITXW36ejWMBprJsXh3YogihFD/o=" - "resolved" "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "pinkie" "^2.0.0" - -"pinkie@^2.0.0": - "integrity" "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=" - "resolved" "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" - "version" "2.0.4" - -"pkg-dir@^4.1.0": - "integrity" "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==" - "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" - "version" "4.2.0" - dependencies: - "find-up" "^4.0.0" - -"platform@1.3.6": - "integrity" "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==" - "resolved" "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz" - "version" "1.3.6" - -"pnp-webpack-plugin@1.6.4": - "integrity" "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==" - "resolved" "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz" - "version" "1.6.4" - dependencies: - "ts-pnp" "^1.1.6" - -"polished@^3.6.5": - "integrity" "sha512-VwhC9MlhW7O5dg/z7k32dabcAFW1VI2+7fSe8cE/kXcfL7mVdoa5UxciYGW2sJU78ldDLT6+ROEKIZKFNTnUXQ==" - "resolved" "https://registry.npmjs.org/polished/-/polished-3.6.5.tgz" - "version" "3.6.5" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz" + integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== + +path-browserify@1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" + integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^2.0.0, path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pbkdf2@^3.0.3: + version "3.1.2" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" + integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.3.0" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + +pify@^2.0.0, pify@^2.2.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pkg-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +platform@1.3.6: + version "1.3.6" + resolved "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz" + integrity sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg== + +pnp-webpack-plugin@1.6.4: + version "1.6.4" + resolved "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz" + integrity sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg== + dependencies: + ts-pnp "^1.1.6" + +polished@^3.6.5: + version "3.6.5" + resolved "https://registry.npmjs.org/polished/-/polished-3.6.5.tgz" + integrity sha512-VwhC9MlhW7O5dg/z7k32dabcAFW1VI2+7fSe8cE/kXcfL7mVdoa5UxciYGW2sJU78ldDLT6+ROEKIZKFNTnUXQ== dependencies: "@babel/runtime" "^7.9.2" -"posix-character-classes@^0.1.0": - "integrity" "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" - "resolved" "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" - "version" "0.1.1" - -"postcss-value-parser@^4.0.2": - "integrity" "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" - "resolved" "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz" - "version" "4.1.0" - -"postcss@8.2.15": - "integrity" "sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q==" - "resolved" "https://registry.npmjs.org/postcss/-/postcss-8.2.15.tgz" - "version" "8.2.15" - dependencies: - "colorette" "^1.2.2" - "nanoid" "^3.1.23" - "source-map" "^0.6.1" - -"prepend-http@^1.0.1": - "integrity" "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" - "resolved" "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz" - "version" "1.0.4" - -"prepend-http@^2.0.0": - "integrity" "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" - "resolved" "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" - "version" "2.0.0" - -"process-nextick-args@~2.0.0": - "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" - "version" "2.0.1" - -"process@^0.11.10", "process@0.11.10": - "integrity" "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" - "resolved" "https://registry.npmjs.org/process/-/process-0.11.10.tgz" - "version" "0.11.10" - -"progress-stream@^2.0.0": - "integrity" "sha1-+sY6Cz0R3qy7CWmrzJOyFLzhntU=" - "resolved" "https://registry.npmjs.org/progress-stream/-/progress-stream-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "speedometer" "~1.0.0" - "through2" "~2.0.3" - -"prop-types-extra@^1.1.0": - "integrity" "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==" - "resolved" "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "react-is" "^16.3.2" - "warning" "^4.0.0" - -"prop-types@^15.5.6", "prop-types@^15.5.8", "prop-types@^15.6.0", "prop-types@^15.6.2", "prop-types@^15.7.2": - "integrity" "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==" - "resolved" "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz" - "version" "15.7.2" - dependencies: - "loose-envify" "^1.4.0" - "object-assign" "^4.1.1" - "react-is" "^16.8.1" - -"property-information@^5.0.0": - "integrity" "sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==" - "resolved" "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz" - "version" "5.6.0" - dependencies: - "xtend" "^4.0.0" - -"proto-list@~1.2.1": - "integrity" "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=" - "resolved" "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz" - "version" "1.2.4" - -"pseudomap@^1.0.2": - "integrity" "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=" - "resolved" "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" - "version" "1.0.2" - -"public-encrypt@^4.0.0": - "integrity" "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==" - "resolved" "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "bn.js" "^4.1.0" - "browserify-rsa" "^4.0.0" - "create-hash" "^1.1.0" - "parse-asn1" "^5.0.0" - "randombytes" "^2.0.1" - "safe-buffer" "^5.1.2" - -"pump@^3.0.0": - "integrity" "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==" - "resolved" "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "end-of-stream" "^1.1.0" - "once" "^1.3.1" - -"punycode@^1.2.4": - "integrity" "sha1-wNWmOycYgArY4esPpSachN1BhF4=" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" - "version" "1.4.1" - -"punycode@^2.1.0": - "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" - "version" "2.1.1" - -"punycode@1.3.2": - "integrity" "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" - "resolved" "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" - "version" "1.3.2" - -"query-string@^4.2.2": - "integrity" "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=" - "resolved" "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz" - "version" "4.3.4" - dependencies: - "object-assign" "^4.1.0" - "strict-uri-encode" "^1.0.0" - -"query-string@^5.0.1": - "integrity" "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==" - "resolved" "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz" - "version" "5.1.1" - dependencies: - "decode-uri-component" "^0.2.0" - "object-assign" "^4.1.0" - "strict-uri-encode" "^1.0.0" - -"querystring-es3@^0.2.0", "querystring-es3@0.2.1": - "integrity" "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" - "resolved" "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" - "version" "0.2.1" - -"querystring@^0.2.0": - "integrity" "sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg==" - "resolved" "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz" - "version" "0.2.1" - -"querystring@0.2.0": - "integrity" "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - "resolved" "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" - "version" "0.2.0" - -"querystringify@^2.1.1": - "integrity" "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" - "resolved" "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" - "version" "2.2.0" - -"queue@6.0.2": - "integrity" "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==" - "resolved" "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz" - "version" "6.0.2" - dependencies: - "inherits" "~2.0.3" - -"randombytes@^2.0.0", "randombytes@^2.0.1", "randombytes@^2.0.5": - "integrity" "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==" - "resolved" "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" - "version" "2.1.0" - dependencies: - "safe-buffer" "^5.1.0" - -"randomfill@^1.0.3": - "integrity" "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==" - "resolved" "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "randombytes" "^2.0.5" - "safe-buffer" "^5.1.0" - -"raw-body@2.4.1": - "integrity" "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==" - "resolved" "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz" - "version" "2.4.1" - dependencies: - "bytes" "3.1.0" - "http-errors" "1.7.3" - "iconv-lite" "0.4.24" - "unpipe" "1.0.0" - -"raw-loader@^2.0.0": - "integrity" "sha512-kZnO5MoIyrojfrPWqrhFNLZemIAX8edMOCp++yC5RKxzFB3m92DqKNhKlU6+FvpOhWtvyh3jOaD7J6/9tpdIKg==" - "resolved" "https://registry.npmjs.org/raw-loader/-/raw-loader-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "loader-utils" "^1.1.0" - "schema-utils" "^1.0.0" - -"react-bootstrap@^1.0.1": - "integrity" "sha512-xMHwsvDN7sIv26P9wWiosWjITZije2dRCjEJHVfV2KFoSJY+8uv2zttEw0XMB7xviQcW3zuIGLJXuj8vf6lYEg==" - "resolved" "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.0.1.tgz" - "version" "1.0.1" +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +postcss-value-parser@^4.0.2: + version "4.1.0" + resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz" + integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== + +postcss@8.2.15: + version "8.2.15" + resolved "https://registry.npmjs.org/postcss/-/postcss-8.2.15.tgz" + integrity sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q== + dependencies: + colorette "^1.2.2" + nanoid "^3.1.23" + source-map "^0.6.1" + +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz" + integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" + integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@0.11.10, process@^0.11.10: + version "0.11.10" + resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/progress-stream/-/progress-stream-2.0.0.tgz" + integrity sha1-+sY6Cz0R3qy7CWmrzJOyFLzhntU= + dependencies: + speedometer "~1.0.0" + through2 "~2.0.3" + +prop-types-extra@^1.1.0: + version "1.1.1" + resolved "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz" + integrity sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew== + dependencies: + react-is "^16.3.2" + warning "^4.0.0" + +prop-types@^15.5.6, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + +property-information@^5.0.0: + version "5.6.0" + resolved "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz" + integrity sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA== + dependencies: + xtend "^4.0.0" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz" + integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pump@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz" + integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +punycode@1.3.2: + version "1.3.2" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz" + integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= + +punycode@^1.2.4: + version "1.4.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz" + integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +query-string@^4.2.2: + version "4.3.4" + resolved "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz" + integrity sha1-u7aTucqRXCMlFbIosaArYJBD2+s= + dependencies: + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz" + integrity sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw== + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" + +querystring-es3@0.2.1, querystring-es3@^0.2.0: + version "0.2.1" + resolved "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" + integrity sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM= + +querystring@0.2.0: + version "0.2.0" + resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +querystring@^0.2.0: + version "0.2.1" + resolved "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz" + integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue@6.0.2: + version "6.0.2" + resolved "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz" + integrity sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA== + dependencies: + inherits "~2.0.3" + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.1.0" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +raw-body@2.4.1: + version "2.4.1" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz" + integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA== + dependencies: + bytes "3.1.0" + http-errors "1.7.3" + iconv-lite "0.4.24" + unpipe "1.0.0" + +raw-loader@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/raw-loader/-/raw-loader-2.0.0.tgz" + integrity sha512-kZnO5MoIyrojfrPWqrhFNLZemIAX8edMOCp++yC5RKxzFB3m92DqKNhKlU6+FvpOhWtvyh3jOaD7J6/9tpdIKg== + dependencies: + loader-utils "^1.1.0" + schema-utils "^1.0.0" + +react-bootstrap@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-1.0.1.tgz" + integrity sha512-xMHwsvDN7sIv26P9wWiosWjITZije2dRCjEJHVfV2KFoSJY+8uv2zttEw0XMB7xviQcW3zuIGLJXuj8vf6lYEg== dependencies: "@babel/runtime" "^7.4.2" "@restart/context" "^2.1.4" "@restart/hooks" "^0.3.21" "@types/react" "^16.9.23" - "classnames" "^2.2.6" - "dom-helpers" "^5.1.2" - "invariant" "^2.2.4" - "prop-types" "^15.7.2" - "prop-types-extra" "^1.1.0" - "react-overlays" "^3.1.2" - "react-transition-group" "^4.0.0" - "uncontrollable" "^7.0.0" - "warning" "^4.0.3" - -"react-countdown@^2.2.1": - "integrity" "sha512-e8dUUhlysDqgci32VOOe0uDfeDMaiyyFNrWHdmMky5fithYDt4iOJa22EF96VbkU64R4D+Bww4AbLpqA/J4dww==" - "resolved" "https://registry.npmjs.org/react-countdown/-/react-countdown-2.2.1.tgz" - "version" "2.2.1" - dependencies: - "prop-types" "^15.7.2" - -"react-dom@^17.0.2": - "integrity" "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==" - "resolved" "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" - "version" "17.0.2" - dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" - "scheduler" "^0.20.2" - -"react-fast-compare@^3.0.1", "react-fast-compare@^3.1.1": - "integrity" "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" - "resolved" "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz" - "version" "3.2.0" - -"react-gravatar@^2.6.3": - "integrity" "sha1-VAfrash+gw4qNN63YNKkxATrHaw=" - "resolved" "https://registry.npmjs.org/react-gravatar/-/react-gravatar-2.6.3.tgz" - "version" "2.6.3" - dependencies: - "is-retina" "^1.0.3" - "md5" "^2.1.0" - "query-string" "^4.2.2" - -"react-gtm-module@^2.0.11": - "integrity" "sha512-8gyj4TTxeP7eEyc2QKawEuQoAZdjKvMY4pgWfycGmqGByhs17fR+zEBs0JUDq4US/l+vbTl+6zvUIx27iDo/Vw==" - "resolved" "https://registry.npmjs.org/react-gtm-module/-/react-gtm-module-2.0.11.tgz" - "version" "2.0.11" - -"react-helmet@^6.1.0": - "integrity" "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==" - "resolved" "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz" - "version" "6.1.0" - dependencies: - "object-assign" "^4.1.1" - "prop-types" "^15.7.2" - "react-fast-compare" "^3.1.1" - "react-side-effect" "^2.1.0" - -"react-icons@^3.10.0": - "integrity" "sha512-WsQ5n1JToG9VixWilSo1bHv842Cj5aZqTGiS3Ud47myF6aK7S/IUY2+dHcBdmkQcCFRuHsJ9OMUI0kTDfjyZXQ==" - "resolved" "https://registry.npmjs.org/react-icons/-/react-icons-3.10.0.tgz" - "version" "3.10.0" - dependencies: - "camelcase" "^5.0.0" - -"react-input-autosize@^2.2.2": - "integrity" "sha512-jQJgYCA3S0j+cuOwzuCd1OjmBmnZLdqQdiLKRYrsMMzbjUrVDS5RvJUDwJqA7sKuksDuzFtm6hZGKFu7Mjk5aw==" - "resolved" "https://registry.npmjs.org/react-input-autosize/-/react-input-autosize-2.2.2.tgz" - "version" "2.2.2" - dependencies: - "prop-types" "^15.5.8" - -"react-is@^16.3.2": - "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" - "version" "16.13.1" - -"react-is@^16.7.0": - "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" - "version" "16.13.1" - -"react-is@^16.8.1": - "integrity" "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" - "version" "16.13.1" - -"react-is@^17.0.2", "react-is@17.0.2": - "integrity" "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" - "resolved" "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" - "version" "17.0.2" - -"react-lifecycles-compat@^3.0.4": - "integrity" "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" - "resolved" "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz" - "version" "3.0.4" - -"react-overlays@^3.1.2": - "integrity" "sha512-YTgCmw6l4uBOYylSnc3V8WLX+A0EoGnzDrqkYz0K7MUKbMBZFpaxLXH4EF9eZbspd+syZHQ5XAABI7n/zak1EA==" - "resolved" "https://registry.npmjs.org/react-overlays/-/react-overlays-3.2.0.tgz" - "version" "3.2.0" + classnames "^2.2.6" + dom-helpers "^5.1.2" + invariant "^2.2.4" + prop-types "^15.7.2" + prop-types-extra "^1.1.0" + react-overlays "^3.1.2" + react-transition-group "^4.0.0" + uncontrollable "^7.0.0" + warning "^4.0.3" + +react-countdown@^2.2.1: + version "2.2.1" + resolved "https://registry.npmjs.org/react-countdown/-/react-countdown-2.2.1.tgz" + integrity sha512-e8dUUhlysDqgci32VOOe0uDfeDMaiyyFNrWHdmMky5fithYDt4iOJa22EF96VbkU64R4D+Bww4AbLpqA/J4dww== + dependencies: + prop-types "^15.7.2" + +react-dom@^17.0.2: + version "17.0.2" + resolved "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + +react-fast-compare@^3.0.1, react-fast-compare@^3.1.1: + version "3.2.0" + resolved "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.0.tgz" + integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA== + +react-gravatar@^2.6.3: + version "2.6.3" + resolved "https://registry.npmjs.org/react-gravatar/-/react-gravatar-2.6.3.tgz" + integrity sha1-VAfrash+gw4qNN63YNKkxATrHaw= + dependencies: + is-retina "^1.0.3" + md5 "^2.1.0" + query-string "^4.2.2" + +react-gtm-module@^2.0.11: + version "2.0.11" + resolved "https://registry.npmjs.org/react-gtm-module/-/react-gtm-module-2.0.11.tgz" + integrity sha512-8gyj4TTxeP7eEyc2QKawEuQoAZdjKvMY4pgWfycGmqGByhs17fR+zEBs0JUDq4US/l+vbTl+6zvUIx27iDo/Vw== + +react-helmet@^6.1.0: + version "6.1.0" + resolved "https://registry.npmjs.org/react-helmet/-/react-helmet-6.1.0.tgz" + integrity sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw== + dependencies: + object-assign "^4.1.1" + prop-types "^15.7.2" + react-fast-compare "^3.1.1" + react-side-effect "^2.1.0" + +react-icons@^3.10.0: + version "3.10.0" + resolved "https://registry.npmjs.org/react-icons/-/react-icons-3.10.0.tgz" + integrity sha512-WsQ5n1JToG9VixWilSo1bHv842Cj5aZqTGiS3Ud47myF6aK7S/IUY2+dHcBdmkQcCFRuHsJ9OMUI0kTDfjyZXQ== + dependencies: + camelcase "^5.0.0" + +react-input-autosize@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/react-input-autosize/-/react-input-autosize-3.0.0.tgz#6b5898c790d4478d69420b55441fcc31d5c50a85" + integrity sha512-nL9uS7jEs/zu8sqwFE5MAPx6pPkNAriACQ2rGLlqmKr2sPGtN7TXTyDdQt4lbNXVx7Uzadb40x8qotIuru6Rhg== + dependencies: + prop-types "^15.5.8" + +react-is@17.0.2, react-is@^17.0.2: + version "17.0.2" + resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-is@^16.3.2, react-is@^16.7.0, react-is@^16.8.1: + version "16.13.1" + resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-lifecycles-compat@^3.0.4: + version "3.0.4" + resolved "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz" + integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== + +react-overlays@^3.1.2: + version "3.2.0" + resolved "https://registry.npmjs.org/react-overlays/-/react-overlays-3.2.0.tgz" + integrity sha512-YTgCmw6l4uBOYylSnc3V8WLX+A0EoGnzDrqkYz0K7MUKbMBZFpaxLXH4EF9eZbspd+syZHQ5XAABI7n/zak1EA== dependencies: "@babel/runtime" "^7.4.5" "@popperjs/core" "^2.0.0" "@restart/hooks" "^0.3.12" "@types/warning" "^3.0.0" - "dom-helpers" "^5.1.0" - "prop-types" "^15.7.2" - "uncontrollable" "^7.0.0" - "warning" "^4.0.3" - -"react-player@^2.3.1": - "integrity" "sha512-KT5u7rZ5DB40wcs5kVl5pNzdow6eK+gSrwCM0HilgF8O85dYPFqw7nhtz3hUEyUr3VhEWbeTOrsyEf1YrNZdOA==" - "resolved" "https://registry.npmjs.org/react-player/-/react-player-2.3.1.tgz" - "version" "2.3.1" - dependencies: - "deepmerge" "^4.0.0" - "load-script" "^1.0.0" - "memoize-one" "^5.1.1" - "prop-types" "^15.7.2" - "react-fast-compare" "^3.0.1" - -"react-refresh@0.8.3": - "integrity" "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg==" - "resolved" "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz" - "version" "0.8.3" - -"react-select@^3.1.0": - "integrity" "sha512-wBFVblBH1iuCBprtpyGtd1dGMadsG36W5/t2Aj8OE6WbByDg5jIFyT7X5gT+l0qmT5TqWhxX+VsKJvCEl2uL9g==" - "resolved" "https://registry.npmjs.org/react-select/-/react-select-3.1.0.tgz" - "version" "3.1.0" + dom-helpers "^5.1.0" + prop-types "^15.7.2" + uncontrollable "^7.0.0" + warning "^4.0.3" + +react-player@^2.3.1: + version "2.9.0" + resolved "https://registry.yarnpkg.com/react-player/-/react-player-2.9.0.tgz#ef7fe7073434087565f00ff219824e1e02c4b046" + integrity sha512-jNUkTfMmUhwPPAktAdIqiBcVUKsFKrVGH6Ocutj6535CNfM91yrvWxHg6fvIX8Y/fjYUPoejddwh7qboNV9vGA== + dependencies: + deepmerge "^4.0.0" + load-script "^1.0.0" + memoize-one "^5.1.1" + prop-types "^15.7.2" + react-fast-compare "^3.0.1" + +react-refresh@0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" + integrity sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg== + +react-select@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/react-select/-/react-select-3.2.0.tgz#de9284700196f5f9b5277c5d850a9ce85f5c72fe" + integrity sha512-B/q3TnCZXEKItO0fFN/I0tWOX3WJvi/X2wtdffmwSQVRwg5BpValScTO1vdic9AxlUgmeSzib2hAZAwIUQUZGQ== dependencies: "@babel/runtime" "^7.4.4" "@emotion/cache" "^10.0.9" "@emotion/core" "^10.0.9" "@emotion/css" "^10.0.9" - "memoize-one" "^5.0.0" - "prop-types" "^15.6.0" - "react-input-autosize" "^2.2.2" - "react-transition-group" "^4.3.0" - -"react-side-effect@^2.1.0": - "integrity" "sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ==" - "resolved" "https://registry.npmjs.org/react-side-effect/-/react-side-effect-2.1.1.tgz" - "version" "2.1.1" - -"react-slick@^0.26.1": - "integrity" "sha512-IQVRSkikG2w5bkz+m9Ing5zZIuM9cI+qJyXG2o6PXHKj8GFcsMCJoTBADwyLSsVT8dHcZ8MZ0dsxq0i0CKIq+Q==" - "resolved" "https://registry.npmjs.org/react-slick/-/react-slick-0.26.1.tgz" - "version" "0.26.1" - dependencies: - "classnames" "^2.2.5" - "enquire.js" "^2.1.6" - "json2mq" "^0.2.0" - "lodash.debounce" "^4.0.8" - "resize-observer-polyfill" "^1.5.0" - -"react-transition-group@^4.0.0", "react-transition-group@^4.3.0": - "integrity" "sha512-Djqr7OQ2aPUiYurhPalTrVy9ddmFCCzwhqQmtN+J3+3DzLO209Fdr70QrN8Z3DsglWql6iY1lDWAfpFiBtuKGw==" - "resolved" "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.1.tgz" - "version" "4.4.1" + memoize-one "^5.0.0" + prop-types "^15.6.0" + react-input-autosize "^3.0.0" + react-transition-group "^4.3.0" + +react-side-effect@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/react-side-effect/-/react-side-effect-2.1.1.tgz#66c5701c3e7560ab4822a4ee2742dee215d72eb3" + integrity sha512-2FoTQzRNTncBVtnzxFOk2mCpcfxQpenBMbk5kSVBg5UcPqV9fRbgY2zhb7GTWWOlpFmAxhClBDlIq8Rsubz1yQ== + +react-slick@^0.26.1: + version "0.26.1" + resolved "https://registry.yarnpkg.com/react-slick/-/react-slick-0.26.1.tgz#42d6b9bfdf3a16e4e4609a6c6536957f8acde7d9" + integrity sha512-IQVRSkikG2w5bkz+m9Ing5zZIuM9cI+qJyXG2o6PXHKj8GFcsMCJoTBADwyLSsVT8dHcZ8MZ0dsxq0i0CKIq+Q== + dependencies: + classnames "^2.2.5" + enquire.js "^2.1.6" + json2mq "^0.2.0" + lodash.debounce "^4.0.8" + resize-observer-polyfill "^1.5.0" + +react-transition-group@^4.0.0, react-transition-group@^4.3.0: + version "4.4.2" + resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470" + integrity sha512-/RNYfRAMlZwDSr6z4zNKV6xu53/e2BuaBbGhbyYIXTrmgu/bGHzmqOs7mJSJBHy9Ud+ApHx3QjrkKSp1pxvlFg== dependencies: "@babel/runtime" "^7.5.5" - "dom-helpers" "^5.0.1" - "loose-envify" "^1.4.0" - "prop-types" "^15.6.2" - -"react@^17.0.2": - "integrity" "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==" - "resolved" "https://registry.npmjs.org/react/-/react-17.0.2.tgz" - "version" "17.0.2" - dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" - -"react@17.0.1": - "integrity" "sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w==" - "resolved" "https://registry.npmjs.org/react/-/react-17.0.1.tgz" - "version" "17.0.1" - dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" - -"read-pkg-up@^1.0.1": - "integrity" "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=" - "resolved" "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "find-up" "^1.0.0" - "read-pkg" "^1.0.0" - -"read-pkg@^1.0.0": - "integrity" "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=" - "resolved" "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "load-json-file" "^1.0.0" - "normalize-package-data" "^2.3.2" - "path-type" "^1.0.0" - -"readable-stream@^2.0.0", "readable-stream@^2.0.2", "readable-stream@^2.3.0", "readable-stream@^2.3.3", "readable-stream@^2.3.5", "readable-stream@^2.3.6", "readable-stream@~2.3.6": - "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" - "version" "2.3.7" - dependencies: - "core-util-is" "~1.0.0" - "inherits" "~2.0.3" - "isarray" "~1.0.0" - "process-nextick-args" "~2.0.0" - "safe-buffer" "~5.1.1" - "string_decoder" "~1.1.1" - "util-deprecate" "~1.0.1" - -"readable-stream@^3.0.0": - "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readable-stream@^3.5.0": - "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readable-stream@^3.6.0": - "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" - "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" - "version" "3.6.0" - dependencies: - "inherits" "^2.0.3" - "string_decoder" "^1.1.1" - "util-deprecate" "^1.0.1" - -"readdirp@~3.5.0": - "integrity" "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==" - "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz" - "version" "3.5.0" - dependencies: - "picomatch" "^2.2.1" - -"redent@^1.0.0": - "integrity" "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=" - "resolved" "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "indent-string" "^2.1.0" - "strip-indent" "^1.0.1" - -"regenerator-runtime@^0.13.4": - "integrity" "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==" - "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz" - "version" "0.13.5" - -"regex-not@^1.0.0", "regex-not@^1.0.2": - "integrity" "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==" - "resolved" "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "extend-shallow" "^3.0.2" - "safe-regex" "^1.1.0" - -"remark-html@^13.0.1": - "integrity" "sha512-K5KQCXWVz+harnyC+UVM/J9eJWCgjYRqFeZoZf2NgP0iFbuuw/RgMZv3MA34b/OEpGnstl3oiOUtZzD3tJ+CBw==" - "resolved" "https://registry.npmjs.org/remark-html/-/remark-html-13.0.1.tgz" - "version" "13.0.1" - dependencies: - "hast-util-sanitize" "^3.0.0" - "hast-util-to-html" "^7.0.0" - "mdast-util-to-hast" "^10.0.0" - -"remark-parse@^9.0.0": - "integrity" "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==" - "resolved" "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz" - "version" "9.0.0" - dependencies: - "mdast-util-from-markdown" "^0.8.0" - -"remark-stringify@^9.0.0": - "integrity" "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==" - "resolved" "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz" - "version" "9.0.1" - dependencies: - "mdast-util-to-markdown" "^0.6.0" - -"remark@^13.0.0": - "integrity" "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==" - "resolved" "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz" - "version" "13.0.0" - dependencies: - "remark-parse" "^9.0.0" - "remark-stringify" "^9.0.0" - "unified" "^9.1.0" - -"repeat-element@^1.1.2": - "integrity" "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" - "resolved" "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz" - "version" "1.1.3" - -"repeat-string@^1.0.0", "repeat-string@^1.6.1": - "integrity" "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - "resolved" "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" - "version" "1.6.1" - -"repeating@^2.0.0": - "integrity" "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=" - "resolved" "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "is-finite" "^1.0.0" - -"replace-ext@^1.0.0": - "integrity" "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==" - "resolved" "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz" - "version" "1.0.1" - -"requires-port@^1.0.0": - "integrity" "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" - "resolved" "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" - "version" "1.0.0" - -"resize-observer-polyfill@^1.5.0": - "integrity" "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" - "resolved" "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz" - "version" "1.5.1" - -"resolve-from@^4.0.0": - "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" - "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - "version" "4.0.0" - -"resolve-url@^0.2.1": - "integrity" "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - "resolved" "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" - "version" "0.2.1" - -"resolve@^1.10.0", "resolve@^1.12.0": - "integrity" "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==" - "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz" - "version" "1.17.0" - dependencies: - "path-parse" "^1.0.6" - -"responselike@1.0.2": - "integrity" "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=" - "resolved" "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "lowercase-keys" "^1.0.0" - -"responsive-loader@^2.3.0": - "integrity" "sha512-8GyyasTKdOfTMDvYy/mBpyV2EM7hz7zWoKdxpocA60eX1jM2udsb+ji03haZWeGnTkQvOplXVqHsev9952dWng==" - "resolved" "https://registry.npmjs.org/responsive-loader/-/responsive-loader-2.3.0.tgz" - "version" "2.3.0" - dependencies: - "loader-utils" "^2.0.0" - "schema-utils" "^3.0.0" - -"ret@~0.1.10": - "integrity" "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - "resolved" "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" - "version" "0.1.15" - -"rimraf@^2.5.4": - "integrity" "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==" - "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" - "version" "2.7.1" - dependencies: - "glob" "^7.1.3" - -"ripemd160@^2.0.0", "ripemd160@^2.0.1": - "integrity" "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==" - "resolved" "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "hash-base" "^3.0.0" - "inherits" "^2.0.1" - -"rxjs@^6.5.3": - "integrity" "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==" - "resolved" "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" - "version" "6.6.7" - dependencies: - "tslib" "^1.9.0" - -"safe-buffer@^5.0.1", "safe-buffer@^5.1.0", "safe-buffer@^5.1.1", "safe-buffer@^5.1.2", "safe-buffer@~5.1.0", "safe-buffer@~5.1.1", "safe-buffer@5.1.2": - "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" - "version" "5.1.2" - -"safe-buffer@^5.2.0": - "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - "version" "5.2.1" - -"safe-buffer@~5.2.0": - "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" - "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" - "version" "5.2.1" - -"safe-regex@^1.1.0": - "integrity" "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=" - "resolved" "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" - "version" "1.1.0" - dependencies: - "ret" "~0.1.10" - -"safer-buffer@^2.1.0", "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": - "integrity" "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - "resolved" "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" - "version" "2.1.2" - -"same-origin@^0.1.1": - "integrity" "sha1-wih9MZJXffUXrLvW0UUanDw5FPU=" - "resolved" "https://registry.npmjs.org/same-origin/-/same-origin-0.1.1.tgz" - "version" "0.1.1" - -"sass@^1.26.9": - "integrity" "sha512-t8AkRVi+xvba4yZiLWkJdgJHBFCB3Dh4johniQkPy9ywkgFHNasXFEFP+RG/F6LhQ+aoE4aX+IorIWQjS0esVw==" - "resolved" "https://registry.npmjs.org/sass/-/sass-1.26.9.tgz" - "version" "1.26.9" - dependencies: - "chokidar" ">=2.0.0 <4.0.0" - -"scheduler@^0.20.2": - "integrity" "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==" - "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz" - "version" "0.20.2" + dom-helpers "^5.0.1" + loose-envify "^1.4.0" + prop-types "^15.6.2" + +react@17.0.1: + version "17.0.1" + resolved "https://registry.npmjs.org/react/-/react-17.0.1.tgz" + integrity sha512-lG9c9UuMHdcAexXtigOZLX8exLWkW0Ku29qPRU8uhF2R9BN96dLCt0psvzPLlHc5OWkgymP3qwTRgbnw5BKx3w== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +react@^17.0.2: + version "17.0.2" + resolved "https://registry.npmjs.org/react/-/react-17.0.2.tgz" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +readable-stream@^2.0.0, readable-stream@^2.0.2, readable-stream@^2.3.0, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.0.0, readable-stream@^3.5.0, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.5.0: + version "3.5.0" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + dependencies: + picomatch "^2.2.1" + +redent@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz" + integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= + dependencies: + indent-string "^2.1.0" + strip-indent "^1.0.1" + +regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +remark-html@^13.0.1: + version "13.0.1" + resolved "https://registry.npmjs.org/remark-html/-/remark-html-13.0.1.tgz" + integrity sha512-K5KQCXWVz+harnyC+UVM/J9eJWCgjYRqFeZoZf2NgP0iFbuuw/RgMZv3MA34b/OEpGnstl3oiOUtZzD3tJ+CBw== + dependencies: + hast-util-sanitize "^3.0.0" + hast-util-to-html "^7.0.0" + mdast-util-to-hast "^10.0.0" + +remark-parse@^9.0.0: + version "9.0.0" + resolved "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz" + integrity sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw== + dependencies: + mdast-util-from-markdown "^0.8.0" + +remark-stringify@^9.0.0: + version "9.0.1" + resolved "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz" + integrity sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg== + dependencies: + mdast-util-to-markdown "^0.6.0" + +remark@^13.0.0: + version "13.0.0" + resolved "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz" + integrity sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA== + dependencies: + remark-parse "^9.0.0" + remark-stringify "^9.0.0" + unified "^9.1.0" + +repeat-element@^1.1.2: + version "1.1.3" + resolved "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz" + integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== + +repeat-string@^1.0.0, repeat-string@^1.6.1: + version "1.6.1" + resolved "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz" + integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= + dependencies: + is-finite "^1.0.0" + +replace-ext@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz" + integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" + integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= + +resize-observer-polyfill@^1.5.0: + version "1.5.1" + resolved "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.10.0, resolve@^1.12.0: + version "1.17.0" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +responselike@1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz" + integrity sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec= + dependencies: + lowercase-keys "^1.0.0" + +responsive-loader@^2.3.0: + version "2.3.0" + resolved "https://registry.npmjs.org/responsive-loader/-/responsive-loader-2.3.0.tgz" + integrity sha512-8GyyasTKdOfTMDvYy/mBpyV2EM7hz7zWoKdxpocA60eX1jM2udsb+ji03haZWeGnTkQvOplXVqHsev9952dWng== + dependencies: + loader-utils "^2.0.0" + schema-utils "^3.0.0" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rxjs@^6.5.3: + version "6.6.7" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== dependencies: - "loose-envify" "^1.1.0" - "object-assign" "^4.1.1" + tslib "^1.9.0" + +safe-buffer@5.1.2, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.1.0: + version "2.1.2" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +same-origin@^0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/same-origin/-/same-origin-0.1.1.tgz" + integrity sha1-wih9MZJXffUXrLvW0UUanDw5FPU= + +sass@^1.26.9: + version "1.26.9" + resolved "https://registry.npmjs.org/sass/-/sass-1.26.9.tgz" + integrity sha512-t8AkRVi+xvba4yZiLWkJdgJHBFCB3Dh4johniQkPy9ywkgFHNasXFEFP+RG/F6LhQ+aoE4aX+IorIWQjS0esVw== + dependencies: + chokidar ">=2.0.0 <4.0.0" + +scheduler@^0.20.2: + version "0.20.2" + resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz" + integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" -"schema-utils@^1.0.0": - "integrity" "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz" - "version" "1.0.0" +schema-utils@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz" + integrity sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g== dependencies: - "ajv" "^6.1.0" - "ajv-errors" "^1.0.0" - "ajv-keywords" "^3.1.0" + ajv "^6.1.0" + ajv-errors "^1.0.0" + ajv-keywords "^3.1.0" -"schema-utils@^3.0.0": - "integrity" "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==" - "resolved" "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz" - "version" "3.0.0" +schema-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz" + integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== dependencies: "@types/json-schema" "^7.0.6" - "ajv" "^6.12.5" - "ajv-keywords" "^3.5.2" - -"scriptjs@^2.5.7": - "integrity" "sha512-qGVDoreyYiP1pkQnbnFAUIS5AjenNwwQBdl7zeos9etl+hYKWahjRTfzAZZYBv5xNHx7vNKCmaLDQZ6Fr2AEXg==" - "resolved" "https://registry.npmjs.org/scriptjs/-/scriptjs-2.5.9.tgz" - "version" "2.5.9" - -"section-matter@^1.0.0": - "integrity" "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==" - "resolved" "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "extend-shallow" "^2.0.1" - "kind-of" "^6.0.0" - -"seek-bzip@^1.0.5": - "integrity" "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=" - "resolved" "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz" - "version" "1.0.5" - dependencies: - "commander" "~2.8.1" - -"semver-regex@^2.0.0": - "integrity" "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==" - "resolved" "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz" - "version" "2.0.0" - -"semver-truncate@^1.1.2": - "integrity" "sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g=" - "resolved" "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "semver" "^5.3.0" - -"semver@^5.3.0", "semver@^5.5.0", "semver@^5.6.0", "semver@2 || 3 || 4 || 5": - "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" - "version" "5.7.1" - -"semver@^6.0.0": - "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" - "version" "6.3.0" - -"set-value@^2.0.0", "set-value@^2.0.1": - "integrity" "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==" - "resolved" "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" - "version" "2.0.1" - dependencies: - "extend-shallow" "^2.0.1" - "is-extendable" "^0.1.1" - "is-plain-object" "^2.0.3" - "split-string" "^3.0.1" - -"setimmediate@^1.0.4": - "integrity" "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" - "resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" - "version" "1.0.5" - -"setprototypeof@1.1.1": - "integrity" "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - "resolved" "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz" - "version" "1.1.1" - -"sha.js@^2.4.0", "sha.js@^2.4.8": - "integrity" "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==" - "resolved" "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" - "version" "2.4.11" - dependencies: - "inherits" "^2.0.1" - "safe-buffer" "^5.0.1" - -"shallowequal@^1.1.0": - "integrity" "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" - "resolved" "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" - "version" "1.1.0" - -"shebang-command@^1.2.0": - "integrity" "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=" - "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" - "version" "1.2.0" - dependencies: - "shebang-regex" "^1.0.0" - -"shebang-command@^2.0.0": - "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" - "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "shebang-regex" "^3.0.0" - -"shebang-regex@^1.0.0": - "integrity" "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=" - "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" - "version" "1.0.0" - -"shebang-regex@^3.0.0": - "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" - "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - "version" "3.0.0" - -"shell-quote@1.7.2": - "integrity" "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==" - "resolved" "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz" - "version" "1.7.2" - -"side-channel@^1.0.4": - "integrity" "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==" - "resolved" "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "call-bind" "^1.0.0" - "get-intrinsic" "^1.0.2" - "object-inspect" "^1.9.0" - -"signal-exit@^3.0.0", "signal-exit@^3.0.2": - "integrity" "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==" - "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz" - "version" "3.0.3" - -"simple-concat@^1.0.0": - "integrity" "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==" - "resolved" "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" - "version" "1.0.1" - -"simple-get@^4.0.0": - "integrity" "sha512-ZalZGexYr3TA0SwySsr5HlgOOinS4Jsa8YB2GJ6lUNAazyAu4KG/VmzMTwAt2YVXzzVj8QmefmAonZIK2BSGcQ==" - "resolved" "https://registry.npmjs.org/simple-get/-/simple-get-4.0.0.tgz" - "version" "4.0.0" - dependencies: - "decompress-response" "^6.0.0" - "once" "^1.3.1" - "simple-concat" "^1.0.0" - -"slash@^1.0.0": - "integrity" "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=" - "resolved" "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz" - "version" "1.0.0" - -"slick-carousel@^1.8.1": - "integrity" "sha512-XB9Ftrf2EEKfzoQXt3Nitrt/IPbT+f1fgqBdoxO3W/+JYvtEOW6EgxnWfr9GH6nmULv7Y2tPmEX3koxThVmebA==" - "resolved" "https://registry.npmjs.org/slick-carousel/-/slick-carousel-1.8.1.tgz" - "version" "1.8.1" - -"snapdragon-node@^2.0.1": - "integrity" "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==" - "resolved" "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "define-property" "^1.0.0" - "isobject" "^3.0.0" - "snapdragon-util" "^3.0.1" - -"snapdragon-util@^3.0.1": - "integrity" "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==" - "resolved" "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "kind-of" "^3.2.0" - -"snapdragon@^0.8.1": - "integrity" "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==" - "resolved" "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz" - "version" "0.8.2" - dependencies: - "base" "^0.11.1" - "debug" "^2.2.0" - "define-property" "^0.2.5" - "extend-shallow" "^2.0.1" - "map-cache" "^0.2.2" - "source-map" "^0.5.6" - "source-map-resolve" "^0.5.0" - "use" "^3.1.0" - -"sort-keys-length@^1.0.0": - "integrity" "sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg=" - "resolved" "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "sort-keys" "^1.0.0" - -"sort-keys@^1.0.0": - "integrity" "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=" - "resolved" "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz" - "version" "1.1.2" - dependencies: - "is-plain-obj" "^1.0.0" - -"sort-keys@^2.0.0": - "integrity" "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=" - "resolved" "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "is-plain-obj" "^1.0.0" - -"source-map-resolve@^0.5.0": - "integrity" "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==" - "resolved" "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz" - "version" "0.5.3" - dependencies: - "atob" "^2.1.2" - "decode-uri-component" "^0.2.0" - "resolve-url" "^0.2.1" - "source-map-url" "^0.4.0" - "urix" "^0.1.0" - -"source-map-url@^0.4.0": - "integrity" "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" - "resolved" "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz" - "version" "0.4.0" - -"source-map@^0.5.0", "source-map@^0.5.6", "source-map@^0.5.7": - "integrity" "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" - "version" "0.5.7" - -"source-map@^0.6.1": - "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" - "version" "0.6.1" - -"source-map@0.7.3": - "integrity" "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz" - "version" "0.7.3" - -"source-map@0.8.0-beta.0": - "integrity" "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==" - "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz" - "version" "0.8.0-beta.0" - dependencies: - "whatwg-url" "^7.0.0" - -"space-separated-tokens@^1.0.0": - "integrity" "sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==" - "resolved" "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz" - "version" "1.1.5" - -"spdx-correct@^3.0.0": - "integrity" "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==" - "resolved" "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" - "version" "3.1.1" - dependencies: - "spdx-expression-parse" "^3.0.0" - "spdx-license-ids" "^3.0.0" - -"spdx-exceptions@^2.1.0": - "integrity" "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" - "resolved" "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" - "version" "2.3.0" - -"spdx-expression-parse@^3.0.0": - "integrity" "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==" - "resolved" "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" - "version" "3.0.1" - dependencies: - "spdx-exceptions" "^2.1.0" - "spdx-license-ids" "^3.0.0" - -"spdx-license-ids@^3.0.0": - "integrity" "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" - "resolved" "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz" - "version" "3.0.5" - -"speedometer@~1.0.0": - "integrity" "sha1-zWccsGdSwivKM3Di8zREC+T8YuI=" - "resolved" "https://registry.npmjs.org/speedometer/-/speedometer-1.0.0.tgz" - "version" "1.0.0" - -"split-string@^3.0.1", "split-string@^3.0.2": - "integrity" "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==" - "resolved" "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "extend-shallow" "^3.0.0" - -"split2@^3.2.2": - "integrity" "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==" - "resolved" "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz" - "version" "3.2.2" - dependencies: - "readable-stream" "^3.0.0" - -"sprintf-js@~1.0.2": - "integrity" "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" - "version" "1.0.3" - -"squeak@^1.0.0": - "integrity" "sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM=" - "resolved" "https://registry.npmjs.org/squeak/-/squeak-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "chalk" "^1.0.0" - "console-stream" "^0.1.1" - "lpad-align" "^1.0.1" - -"stable@^0.1.8": - "integrity" "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==" - "resolved" "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" - "version" "0.1.8" - -"stacktrace-parser@0.1.10": - "integrity" "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==" - "resolved" "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz" - "version" "0.1.10" - dependencies: - "type-fest" "^0.7.1" - -"static-extend@^0.1.1": - "integrity" "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=" - "resolved" "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz" - "version" "0.1.2" - dependencies: - "define-property" "^0.2.5" - "object-copy" "^0.1.0" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +scriptjs@^2.5.7: + version "2.5.9" + resolved "https://registry.npmjs.org/scriptjs/-/scriptjs-2.5.9.tgz" + integrity sha512-qGVDoreyYiP1pkQnbnFAUIS5AjenNwwQBdl7zeos9etl+hYKWahjRTfzAZZYBv5xNHx7vNKCmaLDQZ6Fr2AEXg== + +section-matter@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz" + integrity sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA== + dependencies: + extend-shallow "^2.0.1" + kind-of "^6.0.0" + +seek-bzip@^1.0.5: + version "1.0.5" + resolved "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz" + integrity sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w= + dependencies: + commander "~2.8.1" + +semver-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz" + integrity sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw== + +semver-truncate@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/semver-truncate/-/semver-truncate-1.1.2.tgz" + integrity sha1-V/Qd5pcHpicJp+AQS6IRcQnqR+g= + dependencies: + semver "^5.3.0" + +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^6.0.0: + version "6.3.0" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +setimmediate@^1.0.4: + version "1.0.5" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shallowequal@^1.1.0: + version "1.1.0" + resolved "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz" + integrity sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ== + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shell-quote@1.7.2: + version "1.7.2" + resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz" + integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== + +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/simple-get/-/simple-get-4.0.0.tgz" + integrity sha512-ZalZGexYr3TA0SwySsr5HlgOOinS4Jsa8YB2GJ6lUNAazyAu4KG/VmzMTwAt2YVXzzVj8QmefmAonZIK2BSGcQ== + dependencies: + decompress-response "^6.0.0" + once "^1.3.1" + simple-concat "^1.0.0" + +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz" + integrity sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU= + +slick-carousel@^1.8.1: + version "1.8.1" + resolved "https://registry.npmjs.org/slick-carousel/-/slick-carousel-1.8.1.tgz" + integrity sha512-XB9Ftrf2EEKfzoQXt3Nitrt/IPbT+f1fgqBdoxO3W/+JYvtEOW6EgxnWfr9GH6nmULv7Y2tPmEX3koxThVmebA== + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sort-keys-length@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz" + integrity sha1-nLb09OnkgVWmqgZx7dM2/xR5oYg= + dependencies: + sort-keys "^1.0.0" + +sort-keys@^1.0.0: + version "1.1.2" + resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz" + integrity sha1-RBttTTRnmPG05J6JIK37oOVD+a0= + dependencies: + is-plain-obj "^1.0.0" + +sort-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz" + integrity sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg= + dependencies: + is-plain-obj "^1.0.0" + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@0.7.3: + version "0.7.3" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +source-map@0.8.0-beta.0: + version "0.8.0-beta.0" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz" + integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA== + dependencies: + whatwg-url "^7.0.0" + +source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +space-separated-tokens@^1.0.0: + version "1.1.5" + resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz" + integrity sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + +speedometer@~1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/speedometer/-/speedometer-1.0.0.tgz" + integrity sha1-zWccsGdSwivKM3Di8zREC+T8YuI= + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +split2@^3.2.2: + version "3.2.2" + resolved "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz" + integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== + dependencies: + readable-stream "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +squeak@^1.0.0: + version "1.3.0" + resolved "https://registry.npmjs.org/squeak/-/squeak-1.3.0.tgz" + integrity sha1-MwRQN7ZDiLVnZ0uEMiplIQc5FsM= + dependencies: + chalk "^1.0.0" + console-stream "^0.1.1" + lpad-align "^1.0.1" + +stable@^0.1.8: + version "0.1.8" + resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz" + integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== + +stacktrace-parser@0.1.10: + version "0.1.10" + resolved "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz" + integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== + dependencies: + type-fest "^0.7.1" + +static-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" "statuses@>= 1.5.0 < 2": - "integrity" "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - "resolved" "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" - "version" "1.5.0" - -"stream-browserify@^2.0.1": - "integrity" "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==" - "resolved" "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "inherits" "~2.0.1" - "readable-stream" "^2.0.2" - -"stream-browserify@3.0.0": - "integrity" "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==" - "resolved" "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz" - "version" "3.0.0" - dependencies: - "inherits" "~2.0.4" - "readable-stream" "^3.5.0" - -"stream-http@^2.7.2": - "integrity" "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==" - "resolved" "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz" - "version" "2.8.3" - dependencies: - "builtin-status-codes" "^3.0.0" - "inherits" "^2.0.1" - "readable-stream" "^2.3.6" - "to-arraybuffer" "^1.0.0" - "xtend" "^4.0.0" - -"stream-http@3.1.1": - "integrity" "sha512-S7OqaYu0EkFpgeGFb/NPOoPLxFko7TPqtEeFg5DXPB4v/KETHG0Ln6fRFrNezoelpaDKmycEmmZ81cC9DAwgYg==" - "resolved" "https://registry.npmjs.org/stream-http/-/stream-http-3.1.1.tgz" - "version" "3.1.1" - dependencies: - "builtin-status-codes" "^3.0.0" - "inherits" "^2.0.4" - "readable-stream" "^3.6.0" - "xtend" "^4.0.2" - -"stream-parser@^0.3.1": - "integrity" "sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M=" - "resolved" "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz" - "version" "0.3.1" - dependencies: - "debug" "2" - -"strict-uri-encode@^1.0.0": - "integrity" "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" - "resolved" "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz" - "version" "1.1.0" - -"string_decoder@^1.0.0", "string_decoder@^1.1.1", "string_decoder@~1.1.1": - "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" - "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" - "version" "1.1.1" - dependencies: - "safe-buffer" "~5.1.0" - -"string_decoder@1.3.0": - "integrity" "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==" - "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" - "version" "1.3.0" - dependencies: - "safe-buffer" "~5.2.0" - -"string-convert@^0.2.0": - "integrity" "sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c=" - "resolved" "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz" - "version" "0.2.1" - -"string-hash@1.1.3": - "integrity" "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=" - "resolved" "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz" - "version" "1.1.3" - -"string.prototype.trimend@^1.0.4": - "integrity" "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==" - "resolved" "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - -"string.prototype.trimstart@^1.0.4": - "integrity" "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==" - "resolved" "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz" - "version" "1.0.4" - dependencies: - "call-bind" "^1.0.2" - "define-properties" "^1.1.3" - -"stringify-entities@^3.0.1": - "integrity" "sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg==" - "resolved" "https://registry.npmjs.org/stringify-entities/-/stringify-entities-3.1.0.tgz" - "version" "3.1.0" - dependencies: - "character-entities-html4" "^1.0.0" - "character-entities-legacy" "^1.0.0" - "xtend" "^4.0.0" + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= + +stream-browserify@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-3.0.0.tgz#22b0a2850cdf6503e73085da1fc7b7d0c2122f2f" + integrity sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA== + dependencies: + inherits "~2.0.4" + readable-stream "^3.5.0" + +stream-browserify@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b" + integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg== + dependencies: + inherits "~2.0.1" + readable-stream "^2.0.2" + +stream-http@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.1.1.tgz#0370a8017cf8d050b9a8554afe608f043eaff564" + integrity sha512-S7OqaYu0EkFpgeGFb/NPOoPLxFko7TPqtEeFg5DXPB4v/KETHG0Ln6fRFrNezoelpaDKmycEmmZ81cC9DAwgYg== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.4" + readable-stream "^3.6.0" + xtend "^4.0.2" + +stream-http@^2.7.2: + version "2.8.3" + resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.3.tgz#b2d242469288a5a27ec4fe8933acf623de6514fc" + integrity sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw== + dependencies: + builtin-status-codes "^3.0.0" + inherits "^2.0.1" + readable-stream "^2.3.6" + to-arraybuffer "^1.0.0" + xtend "^4.0.0" + +stream-parser@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/stream-parser/-/stream-parser-0.3.1.tgz#1618548694420021a1182ff0af1911c129761773" + integrity sha1-FhhUhpRCACGhGC/wrxkRwSl2F3M= + dependencies: + debug "2" + +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" + integrity sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM= + +string-convert@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97" + integrity sha1-aYLMMEn7tM2F+LJFaLnZvznu/5c= + +string-hash@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" + integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= + +string.prototype.trimend@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz#e75ae90c2942c63504686c18b287b4a0b1a45f80" + integrity sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz#b36399af4ab2999b4c9c648bd7a3fb2bb26feeed" + integrity sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +string_decoder@1.3.0, string_decoder@^1.0.0, string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-entities@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-3.1.0.tgz#b8d3feac256d9ffcc9fa1fefdcf3ca70576ee903" + integrity sha512-3FP+jGMmMV/ffZs86MoghGqAoqXAdxLrJP4GUdrDN1aIScYih5tuIO3eF4To5AJZ79KDZ8Fpdy7QJnK8SsL1Vg== + dependencies: + character-entities-html4 "^1.0.0" + character-entities-legacy "^1.0.0" + xtend "^4.0.0" -"strip-ansi@^3.0.0": - "integrity" "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" - "version" "3.0.1" +strip-ansi@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== dependencies: - "ansi-regex" "^2.0.0" + ansi-regex "^5.0.0" -"strip-ansi@6.0.0": - "integrity" "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==" - "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz" - "version" "6.0.0" +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= dependencies: - "ansi-regex" "^5.0.0" + ansi-regex "^2.0.0" -"strip-bom-string@^1.0.0": - "integrity" "sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI=" - "resolved" "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz" - "version" "1.0.0" - -"strip-bom@^2.0.0": - "integrity" "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=" - "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz" - "version" "2.0.0" +strip-bom-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI= + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= dependencies: - "is-utf8" "^0.2.0" + is-utf8 "^0.2.0" -"strip-dirs@^2.0.0": - "integrity" "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==" - "resolved" "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz" - "version" "2.1.0" +strip-dirs@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/strip-dirs/-/strip-dirs-2.1.0.tgz#4987736264fc344cf20f6c34aca9d13d1d4ed6c5" + integrity sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g== dependencies: - "is-natural-number" "^4.0.1" + is-natural-number "^4.0.1" -"strip-eof@^1.0.0": - "integrity" "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" - "resolved" "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz" - "version" "1.0.0" +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= -"strip-final-newline@^2.0.0": - "integrity" "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" - "resolved" "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz" - "version" "2.0.0" +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== -"strip-indent@^1.0.1": - "integrity" "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=" - "resolved" "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz" - "version" "1.0.1" +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= dependencies: - "get-stdin" "^4.0.1" + get-stdin "^4.0.1" -"strip-outer@^1.0.0": - "integrity" "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==" - "resolved" "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz" - "version" "1.0.1" +strip-outer@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-outer/-/strip-outer-1.0.1.tgz#b2fd2abf6604b9d1e6013057195df836b8a9d631" + integrity sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg== dependencies: - "escape-string-regexp" "^1.0.2" + escape-string-regexp "^1.0.2" -"styled-components@^5.1.1": - "integrity" "sha512-1ps8ZAYu2Husx+Vz8D+MvXwEwvMwFv+hqqUwhNlDN5ybg6A+3xyW1ECrAgywhvXapNfXiz79jJyU0x22z0FFTg==" - "resolved" "https://registry.npmjs.org/styled-components/-/styled-components-5.1.1.tgz" - "version" "5.1.1" +styled-components@^5.1.1: + version "5.3.3" + resolved "https://registry.yarnpkg.com/styled-components/-/styled-components-5.3.3.tgz#312a3d9a549f4708f0fb0edc829eb34bde032743" + integrity sha512-++4iHwBM7ZN+x6DtPPWkCI4vdtwumQ+inA/DdAsqYd4SVgUKJie5vXyzotA00ttcFdQkCng7zc6grwlfIfw+lw== dependencies: "@babel/helper-module-imports" "^7.0.0" "@babel/traverse" "^7.4.5" "@emotion/is-prop-valid" "^0.8.8" "@emotion/stylis" "^0.8.4" "@emotion/unitless" "^0.7.4" - "babel-plugin-styled-components" ">= 1" - "css-to-react-native" "^3.0.0" - "hoist-non-react-statics" "^3.0.0" - "shallowequal" "^1.1.0" - "supports-color" "^5.5.0" + babel-plugin-styled-components ">= 1.12.0" + css-to-react-native "^3.0.0" + hoist-non-react-statics "^3.0.0" + shallowequal "^1.1.0" + supports-color "^5.5.0" -"styled-jsx@4.0.1": - "integrity" "sha512-Gcb49/dRB1k8B4hdK8vhW27Rlb2zujCk1fISrizCcToIs+55B4vmUM0N9Gi4nnVfFZWe55jRdWpAqH1ldAKWvQ==" - "resolved" "https://registry.npmjs.org/styled-jsx/-/styled-jsx-4.0.1.tgz" - "version" "4.0.1" +styled-jsx@4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/styled-jsx/-/styled-jsx-4.0.1.tgz" + integrity sha512-Gcb49/dRB1k8B4hdK8vhW27Rlb2zujCk1fISrizCcToIs+55B4vmUM0N9Gi4nnVfFZWe55jRdWpAqH1ldAKWvQ== dependencies: "@babel/plugin-syntax-jsx" "7.14.5" "@babel/types" "7.15.0" - "convert-source-map" "1.7.0" - "loader-utils" "1.2.3" - "source-map" "0.7.3" - "string-hash" "1.1.3" - "stylis" "3.5.4" - "stylis-rule-sheet" "0.0.10" - -"styled-system@^5.1.5": - "integrity" "sha512-7VoD0o2R3RKzOzPK0jYrVnS8iJdfkKsQJNiLRDjikOpQVqQHns/DXWaPZOH4tIKkhAT7I6wIsy9FWTWh2X3q+A==" - "resolved" "https://registry.npmjs.org/styled-system/-/styled-system-5.1.5.tgz" - "version" "5.1.5" + convert-source-map "1.7.0" + loader-utils "1.2.3" + source-map "0.7.3" + string-hash "1.1.3" + stylis "3.5.4" + stylis-rule-sheet "0.0.10" + +styled-system@^5.1.5: + version "5.1.5" + resolved "https://registry.npmjs.org/styled-system/-/styled-system-5.1.5.tgz" + integrity sha512-7VoD0o2R3RKzOzPK0jYrVnS8iJdfkKsQJNiLRDjikOpQVqQHns/DXWaPZOH4tIKkhAT7I6wIsy9FWTWh2X3q+A== dependencies: "@styled-system/background" "^5.1.2" "@styled-system/border" "^5.1.5" @@ -5676,587 +5613,597 @@ "@styled-system/space" "^5.1.2" "@styled-system/typography" "^5.1.2" "@styled-system/variant" "^5.1.5" - "object-assign" "^4.1.1" + object-assign "^4.1.1" -"stylis-rule-sheet@0.0.10": - "integrity" "sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==" - "resolved" "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz" - "version" "0.0.10" +stylis-rule-sheet@0.0.10: + version "0.0.10" + resolved "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz" + integrity sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw== -"stylis@3.5.4": - "integrity" "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==" - "resolved" "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz" - "version" "3.5.4" +stylis@3.5.4: + version "3.5.4" + resolved "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz" + integrity sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q== -"supports-color@^2.0.0": - "integrity" "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" - "version" "2.0.0" +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= -"supports-color@^5.3.0", "supports-color@^5.5.0": - "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" - "version" "5.5.0" +supports-color@^5.3.0, supports-color@^5.5.0: + version "5.5.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: - "has-flag" "^3.0.0" + has-flag "^3.0.0" -"supports-color@^7.1.0": - "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - "version" "7.2.0" +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: - "has-flag" "^4.0.0" + has-flag "^4.0.0" -"supports-color@^8.0.0": - "integrity" "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==" - "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - "version" "8.1.1" +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: - "has-flag" "^4.0.0" + has-flag "^4.0.0" -"svgo@^2.1.0": - "integrity" "sha512-fz4IKjNO6HDPgIQxu4IxwtubtbSfGEAJUq/IXyTPIkGhWck/faiiwfkvsB8LnBkKLvSoyNNIY6d13lZprJMc9Q==" - "resolved" "https://registry.npmjs.org/svgo/-/svgo-2.3.0.tgz" - "version" "2.3.0" +svgo@^2.1.0: + version "2.3.0" + resolved "https://registry.npmjs.org/svgo/-/svgo-2.3.0.tgz" + integrity sha512-fz4IKjNO6HDPgIQxu4IxwtubtbSfGEAJUq/IXyTPIkGhWck/faiiwfkvsB8LnBkKLvSoyNNIY6d13lZprJMc9Q== dependencies: "@trysound/sax" "0.1.1" - "chalk" "^4.1.0" - "commander" "^7.1.0" - "css-select" "^3.1.2" - "css-tree" "^1.1.2" - "csso" "^4.2.0" - "stable" "^0.1.8" - -"tar-stream@^1.5.2": - "integrity" "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==" - "resolved" "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz" - "version" "1.6.2" - dependencies: - "bl" "^1.0.0" - "buffer-alloc" "^1.2.0" - "end-of-stream" "^1.0.0" - "fs-constants" "^1.0.0" - "readable-stream" "^2.3.0" - "to-buffer" "^1.1.1" - "xtend" "^4.0.0" - -"temp-dir@^1.0.0": - "integrity" "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=" - "resolved" "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz" - "version" "1.0.0" - -"tempfile@^2.0.0": - "integrity" "sha1-awRGhWqbERTRhW/8vlCczLCXcmU=" - "resolved" "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz" - "version" "2.0.0" - dependencies: - "temp-dir" "^1.0.0" - "uuid" "^3.0.1" - -"three@^0.84.0": - "integrity" "sha1-lb6FpVoPoAKqYl7VWRMJV9z/2Rg=" - "resolved" "https://registry.npmjs.org/three/-/three-0.84.0.tgz" - "version" "0.84.0" - -"throttle-debounce@^3.0.1": - "integrity" "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==" - "resolved" "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz" - "version" "3.0.1" - -"through@^2.3.8": - "integrity" "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" - "resolved" "https://registry.npmjs.org/through/-/through-2.3.8.tgz" - "version" "2.3.8" - -"through2@~2.0.3": - "integrity" "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==" - "resolved" "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" - "version" "2.0.5" - dependencies: - "readable-stream" "~2.3.6" - "xtend" "~4.0.1" - -"timed-out@^4.0.0", "timed-out@^4.0.1": - "integrity" "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" - "resolved" "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz" - "version" "4.0.1" - -"timers-browserify@^2.0.4", "timers-browserify@2.0.12": - "integrity" "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==" - "resolved" "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz" - "version" "2.0.12" - dependencies: - "setimmediate" "^1.0.4" - -"to-arraybuffer@^1.0.0": - "integrity" "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=" - "resolved" "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz" - "version" "1.0.1" - -"to-buffer@^1.1.1": - "integrity" "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" - "resolved" "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz" - "version" "1.1.1" - -"to-fast-properties@^2.0.0": - "integrity" "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" - "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" - "version" "2.0.0" - -"to-object-path@^0.3.0": - "integrity" "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=" - "resolved" "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" - "version" "0.3.0" - dependencies: - "kind-of" "^3.0.2" - -"to-regex-range@^2.1.0": - "integrity" "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=" - "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "is-number" "^3.0.0" - "repeat-string" "^1.6.1" - -"to-regex-range@^5.0.1": - "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" - "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - "version" "5.0.1" - dependencies: - "is-number" "^7.0.0" - -"to-regex@^3.0.1", "to-regex@^3.0.2": - "integrity" "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==" - "resolved" "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz" - "version" "3.0.2" - dependencies: - "define-property" "^2.0.2" - "extend-shallow" "^3.0.2" - "regex-not" "^1.0.2" - "safe-regex" "^1.1.0" - -"toidentifier@1.0.0": - "integrity" "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - "resolved" "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz" - "version" "1.0.0" - -"tr46@^1.0.1": - "integrity" "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=" - "resolved" "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "punycode" "^2.1.0" - -"traverse@0.6.6": - "integrity" "sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc=" - "resolved" "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz" - "version" "0.6.6" - -"trim-newlines@^1.0.0": - "integrity" "sha1-WIeWa7WCpFA6QetST301ARgVphM=" - "resolved" "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz" - "version" "1.0.0" - -"trim-repeated@^1.0.0": - "integrity" "sha1-42RqLqTokTEr9+rObPsFOAvAHCE=" - "resolved" "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz" - "version" "1.0.0" - dependencies: - "escape-string-regexp" "^1.0.2" - -"trough@^1.0.0": - "integrity" "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==" - "resolved" "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz" - "version" "1.0.5" - -"ts-pnp@^1.1.6": - "integrity" "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==" - "resolved" "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz" - "version" "1.2.0" - -"tslib@^1.9.0": - "integrity" "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - "resolved" "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" - "version" "1.14.1" - -"tty-browserify@0.0.0": - "integrity" "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=" - "resolved" "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" - "version" "0.0.0" - -"tty-browserify@0.0.1": - "integrity" "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" - "resolved" "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz" - "version" "0.0.1" - -"tunnel-agent@^0.6.0": - "integrity" "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=" - "resolved" "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" - "version" "0.6.0" - dependencies: - "safe-buffer" "^5.0.1" - -"type-fest@^0.7.1": - "integrity" "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==" - "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz" - "version" "0.7.1" - -"unbox-primitive@^1.0.1": - "integrity" "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==" - "resolved" "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "function-bind" "^1.1.1" - "has-bigints" "^1.0.1" - "has-symbols" "^1.0.2" - "which-boxed-primitive" "^1.0.2" - -"unbzip2-stream@^1.0.9": - "integrity" "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==" - "resolved" "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz" - "version" "1.4.3" - dependencies: - "buffer" "^5.2.1" - "through" "^2.3.8" - -"uncontrollable@^7.0.0": - "integrity" "sha512-EcPYhot3uWTS3w00R32R2+vS8Vr53tttrvMj/yA1uYRhf8hbTG2GyugGqWDY0qIskxn0uTTojVd6wPYW9ZEf8Q==" - "resolved" "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.1.1.tgz" - "version" "7.1.1" + chalk "^4.1.0" + commander "^7.1.0" + css-select "^3.1.2" + css-tree "^1.1.2" + csso "^4.2.0" + stable "^0.1.8" + +tar-stream@^1.5.2: + version "1.6.2" + resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz" + integrity sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A== + dependencies: + bl "^1.0.0" + buffer-alloc "^1.2.0" + end-of-stream "^1.0.0" + fs-constants "^1.0.0" + readable-stream "^2.3.0" + to-buffer "^1.1.1" + xtend "^4.0.0" + +temp-dir@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz" + integrity sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0= + +tempfile@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/tempfile/-/tempfile-2.0.0.tgz" + integrity sha1-awRGhWqbERTRhW/8vlCczLCXcmU= + dependencies: + temp-dir "^1.0.0" + uuid "^3.0.1" + +three@^0.84.0: + version "0.84.0" + resolved "https://registry.npmjs.org/three/-/three-0.84.0.tgz" + integrity sha1-lb6FpVoPoAKqYl7VWRMJV9z/2Rg= + +throttle-debounce@^3.0.1: + version "3.0.1" + resolved "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz" + integrity sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg== + +through2@~2.0.3: + version "2.0.5" + resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through@^2.3.8: + version "2.3.8" + resolved "https://registry.npmjs.org/through/-/through-2.3.8.tgz" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +timed-out@^4.0.0, timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz" + integrity sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8= + +timers-browserify@2.0.12, timers-browserify@^2.0.4: + version "2.0.12" + resolved "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz" + integrity sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ== + dependencies: + setimmediate "^1.0.4" + +to-arraybuffer@^1.0.0: + version "1.0.1" + resolved "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz" + integrity sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M= + +to-buffer@^1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz" + integrity sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg== + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + +tr46@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz" + integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= + dependencies: + punycode "^2.1.0" + +traverse@0.6.6: + version "0.6.6" + resolved "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz" + integrity sha1-y99WD9e5r2MlAv7UD5GMFX6pcTc= + +trim-newlines@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz" + integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= + +trim-repeated@^1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz" + integrity sha1-42RqLqTokTEr9+rObPsFOAvAHCE= + dependencies: + escape-string-regexp "^1.0.2" + +trough@^1.0.0: + version "1.0.5" + resolved "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz" + integrity sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA== + +ts-pnp@^1.1.6: + version "1.2.0" + resolved "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz" + integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw== + +tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tty-browserify@0.0.0: + version "0.0.0" + resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz" + integrity sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY= + +tty-browserify@0.0.1: + version "0.0.1" + resolved "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz" + integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +unbox-primitive@^1.0.1: + version "1.0.1" + resolved "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz" + integrity sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw== + dependencies: + function-bind "^1.1.1" + has-bigints "^1.0.1" + has-symbols "^1.0.2" + which-boxed-primitive "^1.0.2" + +unbzip2-stream@^1.0.9: + version "1.4.3" + resolved "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz" + integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== + dependencies: + buffer "^5.2.1" + through "^2.3.8" + +uncontrollable@^7.0.0: + version "7.1.1" + resolved "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.1.1.tgz" + integrity sha512-EcPYhot3uWTS3w00R32R2+vS8Vr53tttrvMj/yA1uYRhf8hbTG2GyugGqWDY0qIskxn0uTTojVd6wPYW9ZEf8Q== dependencies: "@babel/runtime" "^7.6.3" "@types/react" "^16.9.11" - "invariant" "^2.2.4" - "react-lifecycles-compat" "^3.0.4" - -"unified@^9.1.0": - "integrity" "sha512-juWjuI8Z4xFg8pJbnEZ41b5xjGUWGHqXALmBZ3FC3WX0PIx1CZBIIJ6mXbYMcf6Yw4Fi0rFUTA1cdz/BglbOhA==" - "resolved" "https://registry.npmjs.org/unified/-/unified-9.2.1.tgz" - "version" "9.2.1" - dependencies: - "bail" "^1.0.0" - "extend" "^3.0.0" - "is-buffer" "^2.0.0" - "is-plain-obj" "^2.0.0" - "trough" "^1.0.0" - "vfile" "^4.0.0" - -"union-value@^1.0.0": - "integrity" "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==" - "resolved" "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz" - "version" "1.0.1" - dependencies: - "arr-union" "^3.1.0" - "get-value" "^2.0.6" - "is-extendable" "^0.1.1" - "set-value" "^2.0.1" - -"unist-builder@^2.0.0": - "integrity" "sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw==" - "resolved" "https://registry.npmjs.org/unist-builder/-/unist-builder-2.0.3.tgz" - "version" "2.0.3" - -"unist-util-generated@^1.0.0": - "integrity" "sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg==" - "resolved" "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-1.1.6.tgz" - "version" "1.1.6" - -"unist-util-is@^4.0.0": - "integrity" "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==" - "resolved" "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz" - "version" "4.1.0" - -"unist-util-position@^3.0.0": - "integrity" "sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA==" - "resolved" "https://registry.npmjs.org/unist-util-position/-/unist-util-position-3.1.0.tgz" - "version" "3.1.0" - -"unist-util-stringify-position@^2.0.0": - "integrity" "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==" - "resolved" "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz" - "version" "2.0.3" + invariant "^2.2.4" + react-lifecycles-compat "^3.0.4" + +uncontrollable@^7.2.1: + version "7.2.1" + resolved "https://registry.yarnpkg.com/uncontrollable/-/uncontrollable-7.2.1.tgz#1fa70ba0c57a14d5f78905d533cf63916dc75738" + integrity sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ== + dependencies: + "@babel/runtime" "^7.6.3" + "@types/react" ">=16.9.11" + invariant "^2.2.4" + react-lifecycles-compat "^3.0.4" + +unified@^9.1.0: + version "9.2.2" + resolved "https://registry.yarnpkg.com/unified/-/unified-9.2.2.tgz#67649a1abfc3ab85d2969502902775eb03146975" + integrity sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ== + dependencies: + bail "^1.0.0" + extend "^3.0.0" + is-buffer "^2.0.0" + is-plain-obj "^2.0.0" + trough "^1.0.0" + vfile "^4.0.0" + +union-value@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +unist-builder@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436" + integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw== + +unist-util-generated@^1.0.0: + version "1.1.6" + resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.6.tgz#5ab51f689e2992a472beb1b35f2ce7ff2f324d4b" + integrity sha512-cln2Mm1/CZzN5ttGK7vkoGw+RZ8VcUH6BtGbq98DDtRGquAAOXig1mrBQYelOwMXYS8rK+vZDyyojSjp7JX+Lg== + +unist-util-is@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/unist-util-is/-/unist-util-is-4.1.0.tgz#976e5f462a7a5de73d94b706bac1b90671b57797" + integrity sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg== + +unist-util-position@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/unist-util-position/-/unist-util-position-3.1.0.tgz#1c42ee6301f8d52f47d14f62bbdb796571fa2d47" + integrity sha512-w+PkwCbYSFw8vpgWD0v7zRCl1FpY3fjDSQ3/N/wNd9Ffa4gPi8+4keqt99N3XW6F99t/mUzp2xAhNmfKWp95QA== + +unist-util-stringify-position@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz#cce3bfa1cdf85ba7375d1d5b17bdc4cada9bd9da" + integrity sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g== dependencies: "@types/unist" "^2.0.2" -"unist-util-visit-parents@^3.0.0": - "integrity" "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==" - "resolved" "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz" - "version" "3.1.1" +unist-util-visit-parents@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz#65a6ce698f78a6b0f56aa0e88f13801886cdaef6" + integrity sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg== dependencies: "@types/unist" "^2.0.0" - "unist-util-is" "^4.0.0" + unist-util-is "^4.0.0" -"unist-util-visit@^2.0.0": - "integrity" "sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==" - "resolved" "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-2.0.3.tgz" - "version" "2.0.3" +unist-util-visit@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/unist-util-visit/-/unist-util-visit-2.0.3.tgz#c3703893146df47203bb8a9795af47d7b971208c" + integrity sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q== dependencies: "@types/unist" "^2.0.0" - "unist-util-is" "^4.0.0" - "unist-util-visit-parents" "^3.0.0" + unist-util-is "^4.0.0" + unist-util-visit-parents "^3.0.0" -"unpipe@1.0.0": - "integrity" "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" - "version" "1.0.0" +unpipe@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= -"unset-value@^1.0.0": - "integrity" "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=" - "resolved" "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" - "version" "1.0.0" +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= dependencies: - "has-value" "^0.3.1" - "isobject" "^3.0.0" + has-value "^0.3.1" + isobject "^3.0.0" -"uri-js@^4.2.2": - "integrity" "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==" - "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz" - "version" "4.2.2" +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: - "punycode" "^2.1.0" + punycode "^2.1.0" -"urix@^0.1.0": - "integrity" "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - "resolved" "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz" - "version" "0.1.0" +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= -"url-loader@^1.1.1", "url-loader@^1.1.2": - "integrity" "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==" - "resolved" "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz" - "version" "1.1.2" +url-loader@^1.1.1, url-loader@^1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz" + integrity sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg== dependencies: - "loader-utils" "^1.1.0" - "mime" "^2.0.3" - "schema-utils" "^1.0.0" + loader-utils "^1.1.0" + mime "^2.0.3" + schema-utils "^1.0.0" -"url-parse-lax@^1.0.0": - "integrity" "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=" - "resolved" "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz" - "version" "1.0.0" +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + integrity sha1-evjzA2Rem9eaJy56FKxovAYJ2nM= dependencies: - "prepend-http" "^1.0.1" + prepend-http "^1.0.1" -"url-parse-lax@^3.0.0": - "integrity" "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=" - "resolved" "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz" - "version" "3.0.0" +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" + integrity sha1-FrXK/Afb42dsGxmZF3gj1lA6yww= dependencies: - "prepend-http" "^2.0.0" + prepend-http "^2.0.0" -"url-parse@^1.1.9", "url-parse@^1.4.3": - "integrity" "sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ==" - "resolved" "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz" - "version" "1.5.3" +url-parse@^1.1.9, url-parse@^1.4.3: + version "1.5.3" + resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.3.tgz" + integrity sha512-IIORyIQD9rvj0A4CLWsHkBBJuNqWpFQe224b6j9t/ABmquIS0qDU2pY6kl6AuOrL5OkCXHMCFNe1jBcuAggjvQ== dependencies: - "querystringify" "^2.1.1" - "requires-port" "^1.0.0" + querystringify "^2.1.1" + requires-port "^1.0.0" -"url-to-options@^1.0.1": - "integrity" "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" - "resolved" "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz" - "version" "1.0.1" +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" + integrity sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k= -"url@^0.11.0": - "integrity" "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=" - "resolved" "https://registry.npmjs.org/url/-/url-0.11.0.tgz" - "version" "0.11.0" +url@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" + integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE= dependencies: - "punycode" "1.3.2" - "querystring" "0.2.0" + punycode "1.3.2" + querystring "0.2.0" -"use-deep-compare-effect@^1.6.1": - "integrity" "sha512-bWLtV110l0uXhe6KHArzpBMzhe8g202gcPypP+qXr9js8tCjNkewnYXhpUAaqtLAJhWDwa5Z+OtfaTOsiKO8dQ==" - "resolved" "https://registry.npmjs.org/use-deep-compare-effect/-/use-deep-compare-effect-1.8.0.tgz" - "version" "1.8.0" +use-deep-compare-effect@^1.6.1: + version "1.8.0" + resolved "https://registry.npmjs.org/use-deep-compare-effect/-/use-deep-compare-effect-1.8.0.tgz" + integrity sha512-bWLtV110l0uXhe6KHArzpBMzhe8g202gcPypP+qXr9js8tCjNkewnYXhpUAaqtLAJhWDwa5Z+OtfaTOsiKO8dQ== dependencies: "@babel/runtime" "^7.12.5" "@types/react" "^17.0.0" - "dequal" "^2.0.2" + dequal "^2.0.2" -"use-subscription@1.5.1": - "integrity" "sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA==" - "resolved" "https://registry.npmjs.org/use-subscription/-/use-subscription-1.5.1.tgz" - "version" "1.5.1" +use-subscription@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.5.1.tgz#73501107f02fad84c6dd57965beb0b75c68c42d1" + integrity sha512-Xv2a1P/yReAjAbhylMfFplFKj9GssgTwN7RlcTxBujFQcloStWNDQdc4g4NRWH9xS4i/FDk04vQBptAXoF3VcA== dependencies: - "object-assign" "^4.1.1" + object-assign "^4.1.1" -"use@^3.1.0": - "integrity" "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" - "resolved" "https://registry.npmjs.org/use/-/use-3.1.1.tgz" - "version" "3.1.1" +use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -"util-deprecate@^1.0.1", "util-deprecate@~1.0.1": - "integrity" "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - "version" "1.0.2" +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= -"util@^0.11.0": - "integrity" "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==" - "resolved" "https://registry.npmjs.org/util/-/util-0.11.1.tgz" - "version" "0.11.1" +util@0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" + integrity sha1-evsa/lCAUkZInj23/g7TeTNqwPk= dependencies: - "inherits" "2.0.3" + inherits "2.0.1" -"util@^0.12.0", "util@0.12.4": - "integrity" "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==" - "resolved" "https://registry.npmjs.org/util/-/util-0.12.4.tgz" - "version" "0.12.4" +util@0.12.4, util@^0.12.0: + version "0.12.4" + resolved "https://registry.npmjs.org/util/-/util-0.12.4.tgz" + integrity sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw== dependencies: - "inherits" "^2.0.3" - "is-arguments" "^1.0.4" - "is-generator-function" "^1.0.7" - "is-typed-array" "^1.1.3" - "safe-buffer" "^5.1.2" - "which-typed-array" "^1.1.2" + inherits "^2.0.3" + is-arguments "^1.0.4" + is-generator-function "^1.0.7" + is-typed-array "^1.1.3" + safe-buffer "^5.1.2" + which-typed-array "^1.1.2" -"util@0.10.3": - "integrity" "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=" - "resolved" "https://registry.npmjs.org/util/-/util-0.10.3.tgz" - "version" "0.10.3" +util@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/util/-/util-0.11.1.tgz#3236733720ec64bb27f6e26f421aaa2e1b588d61" + integrity sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ== dependencies: - "inherits" "2.0.1" + inherits "2.0.3" -"uuid@^3.0.1": - "integrity" "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - "resolved" "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz" - "version" "3.4.0" +uuid@^3.0.1: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -"validate-npm-package-license@^3.0.1": - "integrity" "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==" - "resolved" "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" - "version" "3.0.4" +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== dependencies: - "spdx-correct" "^3.0.0" - "spdx-expression-parse" "^3.0.0" + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" -"vfile-message@^2.0.0": - "integrity" "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==" - "resolved" "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz" - "version" "2.0.4" +vfile-message@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/vfile-message/-/vfile-message-2.0.4.tgz#5b43b88171d409eae58477d13f23dd41d52c371a" + integrity sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ== dependencies: "@types/unist" "^2.0.0" - "unist-util-stringify-position" "^2.0.0" + unist-util-stringify-position "^2.0.0" -"vfile@^4.0.0": - "integrity" "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==" - "resolved" "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz" - "version" "4.2.1" +vfile@^4.0.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/vfile/-/vfile-4.2.1.tgz#03f1dce28fc625c625bc6514350fbdb00fa9e624" + integrity sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA== dependencies: "@types/unist" "^2.0.0" - "is-buffer" "^2.0.0" - "unist-util-stringify-position" "^2.0.0" - "vfile-message" "^2.0.0" - -"vm-browserify@^1.0.1", "vm-browserify@1.1.2": - "integrity" "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" - "resolved" "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz" - "version" "1.1.2" - -"warning@^4.0.0", "warning@^4.0.3": - "integrity" "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==" - "resolved" "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz" - "version" "4.0.3" - dependencies: - "loose-envify" "^1.0.0" - -"watchpack@2.1.1": - "integrity" "sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw==" - "resolved" "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz" - "version" "2.1.1" - dependencies: - "glob-to-regexp" "^0.4.1" - "graceful-fs" "^4.1.2" - -"webidl-conversions@^4.0.2": - "integrity" "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==" - "resolved" "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz" - "version" "4.0.2" - -"whatwg-url@^7.0.0": - "integrity" "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==" - "resolved" "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz" - "version" "7.1.0" - dependencies: - "lodash.sortby" "^4.7.0" - "tr46" "^1.0.1" - "webidl-conversions" "^4.0.2" - -"which-boxed-primitive@^1.0.2": - "integrity" "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==" - "resolved" "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" - "version" "1.0.2" - dependencies: - "is-bigint" "^1.0.1" - "is-boolean-object" "^1.1.0" - "is-number-object" "^1.0.4" - "is-string" "^1.0.5" - "is-symbol" "^1.0.3" - -"which-typed-array@^1.1.2": - "integrity" "sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw==" - "resolved" "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz" - "version" "1.1.7" - dependencies: - "available-typed-arrays" "^1.0.5" - "call-bind" "^1.0.2" - "es-abstract" "^1.18.5" - "foreach" "^2.0.5" - "has-tostringtag" "^1.0.0" - "is-typed-array" "^1.1.7" - -"which@^1.2.9": - "integrity" "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==" - "resolved" "https://registry.npmjs.org/which/-/which-1.3.1.tgz" - "version" "1.3.1" - dependencies: - "isexe" "^2.0.0" - -"which@^2.0.1": - "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" - "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - "version" "2.0.2" - dependencies: - "isexe" "^2.0.0" - -"wrappy@1": - "integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" - "version" "1.0.2" - -"xtend@^4.0.0", "xtend@^4.0.2", "xtend@~4.0.1": - "integrity" "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - "resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" - "version" "4.0.2" - -"yallist@^2.1.2": - "integrity" "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" - "version" "2.1.2" - -"yallist@^4.0.0": - "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" - "version" "4.0.0" - -"yaml@^1.7.2": - "integrity" "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==" - "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz" - "version" "1.10.0" - -"yauzl@^2.4.2": - "integrity" "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=" - "resolved" "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" - "version" "2.10.0" - dependencies: - "buffer-crc32" "~0.2.3" - "fd-slicer" "~1.1.0" - -"yocto-queue@^0.1.0": - "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" - "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - "version" "0.1.0" - -"zwitch@^1.0.0": - "integrity" "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==" - "resolved" "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz" - "version" "1.0.5" + is-buffer "^2.0.0" + unist-util-stringify-position "^2.0.0" + vfile-message "^2.0.0" + +vm-browserify@1.1.2, vm-browserify@^1.0.1: + version "1.1.2" + resolved "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz" + integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== + +warning@^4.0.0, warning@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== + dependencies: + loose-envify "^1.0.0" + +watchpack@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.1.1.tgz" + integrity sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +webidl-conversions@^4.0.2: + version "4.0.2" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz" + integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== + +whatwg-url@^7.0.0: + version "7.1.0" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz" + integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== + dependencies: + lodash.sortby "^4.7.0" + tr46 "^1.0.1" + webidl-conversions "^4.0.2" + +which-boxed-primitive@^1.0.2: + version "1.0.2" + resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz" + integrity sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg== + dependencies: + is-bigint "^1.0.1" + is-boolean-object "^1.1.0" + is-number-object "^1.0.4" + is-string "^1.0.5" + is-symbol "^1.0.3" + +which-typed-array@^1.1.2: + version "1.1.7" + resolved "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.7.tgz" + integrity sha512-vjxaB4nfDqwKI0ws7wZpxIlde1XrLX5uB0ZjpfshgmapJMD7jJWhZI+yToJTqaFByF0eNBcYxbjmCzoRP7CfEw== + dependencies: + available-typed-arrays "^1.0.5" + call-bind "^1.0.2" + es-abstract "^1.18.5" + foreach "^2.0.5" + has-tostringtag "^1.0.0" + is-typed-array "^1.1.7" + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +xtend@^4.0.0, xtend@^4.0.2, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.7.2: + version "1.10.0" + resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== + +yauzl@^2.4.2: + version "2.10.0" + resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" + integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zwitch@^1.0.0: + version "1.0.5" + resolved "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz" + integrity sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw== diff --git a/deploy/kustomization.yaml b/deploy/kustomization.yaml new file mode 100644 index 00000000..7336e8bc --- /dev/null +++ b/deploy/kustomization.yaml @@ -0,0 +1,4 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - latest.yaml \ No newline at end of file diff --git a/deploy/latest.yaml b/deploy/latest.yaml new file mode 100644 index 00000000..e69de29b diff --git a/k8s/config.yaml b/k8s/config.yaml new file mode 100644 index 00000000..9e6e0b09 --- /dev/null +++ b/k8s/config.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +clusters: + - cluster: + certificate-authority-data: $KUBE_CLUSTER_CERTIFICATE + server: $KUBE_CLUSTER_SERVER + name: $KUBE_CLUSTER_NAME +contexts: + - context: + cluster: $KUBE_CLUSTER_NAME + user: $KUBE_USER_NAME + name: $KUBE_CLUSTER_NAME +kind: Config +preferences: {} +users: + - name: $KUBE_USER_NAME + user: + token: $KUBE_USER_TOKEN diff --git a/k8s/web.yaml b/k8s/web.yaml new file mode 100644 index 00000000..68a825af --- /dev/null +++ b/k8s/web.yaml @@ -0,0 +1,87 @@ +apiVersion: v1 +kind: Service +metadata: + name: iteam-pub + namespace: iteam-pub +spec: + ports: + - port: 3000 + type: LoadBalancer + selector: + app: iteam-pub +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: iteam-pub + namespace: iteam-pub +spec: + selector: + matchLabels: + app: iteam-pub + template: + metadata: + labels: + app: iteam-pub + spec: + containers: + - name: iteam-pub + resources: + limits: + cpu: 100m + memory: 100Mi + requests: + cpu: 100m + memory: 100Mi + image: iteam1337/iteam-next-site + env: + - name: SANITY_READ_DATA_TOKEN + valueFrom: + secretKeyRef: + name: sanity-secret + key: SANITY_READ_DATA_TOKEN + - name: SANITY_API_TOKEN + valueFrom: + secretKeyRef: + name: sanity-secret + key: SANITY_API_TOKEN + - name: SANITY_PREVIEW_SECRET + valueFrom: + secretKeyRef: + name: sanity-secret + key: SANITY_PREVIEW_SECRET + ports: + - containerPort: 3000 +--- +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: iteam-pub + namespace: iteam-pub + annotations: + cert-manager.io/cluster-issuer: 'letsencrypt-prod' + nginx.ingress.kubernetes.io/from-to-www-redirect: 'true' + nginx.ingress.kubernetes.io/http2-push-preload: 'true' + nginx.ingress.kubernetes.io/proxy-body-size: '500m' + nginx.ingress.kubernetes.io/proxy-pass-headers: 'Location' + nginx.ingress.kubernetes.io/configuration-snippet: | + add_header X-Frame-Options "sameorigin"; + add_header X-Content-Type-Options nosniff; + add_header Referrer-Policy 'same-origin'; +spec: + ingressClassName: nginx + tls: + - hosts: + - iteam.pub + secretName: web-secret-tls + rules: + - host: iteam.pub + http: + paths: + - pathType: Prefix + path: '/' + backend: + service: + name: iteam-pub + port: + number: 3000 diff --git a/skaffold.yaml b/skaffold.yaml new file mode 100644 index 00000000..22332a9a --- /dev/null +++ b/skaffold.yaml @@ -0,0 +1,22 @@ +apiVersion: skaffold/v2beta27 +kind: Config +metadata: + name: iteam-next-site +build: + tagPolicy: + sha256: {} + artifacts: + - image: iteam1337/iteam-next-site + context: client + docker: + buildArgs: + SANITY_READ_DATA_TOKEN: "{{ .SANITY_READ_DATA_TOKEN }}" + SANITY_API_TOKEN: "{{ .SANITY_API_TOKEN }}" + SANITY_PREVIEW_SECRET: "{{ .SANITY_PREVIEW_SECRET }}" + # platforms: + # - linux/amd64 + +deploy: + kubectl: + manifests: + - k8s/web.yaml