lördag 30 juni 2012

Webblaesare och Flash paa Android

Tänkte publicera ett inlaegg om erfarenheterna fraan min nya surfplatta ASUS Transformer. Ser dock att nya Blogger inte har stoed foer aa, ae och oe!!!! Eller aer det en instaellning jag maaste goera?

Nu har jag installerat Bloggerappen och åäö är tillbaka. Tack för det. Det var när jag använde Blogger via Chrome som det inte fanns våra kära bokstäver kom med.

Möjligheterna med Bloggerappen är dock extremt begränsade. Det går att skriva in text med normal, fet och kursiv text samt lägga in länkar. Och så går det att ta foto eller hämta bild från filhanteraren och publicera bilden. Jo, så kan man sätta en label. Och ange var man är när texten publiceras.

Det är allt. Dåligt. Då är Wordpress app väldigt mycket bättre.
Noterar dessutom att ändringar av ett publicerat inlägg inte visas på G+. Svårt att se anledningen till det.

Kan det vara saa att jag maaste publicera i Blogger i webblaesaren foer att inlaegget ska synas i G+?

Nej, det hjaelpte inte. Aendringar visas inte i G+ vare sig det sker i Blogger/Blogspot eller Blogger app.

Ut paa naetet foer att se vad andra saeger.

Suprise! Kollade att byta till den inbyggda webbläsaren och här fungerar åäö. Det är alltså ett fel i Chrome.

lördag 5 maj 2012

Umbraco och WebMatrix

I stället för att ta reda på allt nödvändigt om MS olika SQL Servrar så är det frestande att pröva alternativet WebMatrix. Avgörande är, som sagt, om systemet kan göra remote på www.server42.se.

Denna gång ska jag göra de enklaste siten som är möjlig och sedan ftpa den över till www.server42.se.

Startar WebMatrix, väljer mallen Empty site, döper programmet till HelloWorld och klickar OK.


Klickar på New to Templates. Klickar på Files i vänstermenyn.

Välj HTML bara för att se om överföringen fungerar. Behåller sidnamnet HTMLPage.html.
Kompletterar sidan med Hello World. Lägger också till <a href="HTMLPage.html">Till HTMLPage.html</a> i Default.cshtml.


Kör och det visar sig funka. Blir överraskad över mängden filer som WebMatrix skapat. (Nu går WebMatrix ned och jag får starta om :-( )

När  WebMatrix  åter är igång överraskas jag att det stora antalet filer 


Nästa steg är att Publicera programmet. Då visas denna blankett:



Frågan är vad Web Deploy är och hur blanketten ska fyllas i. Klickar man på Find web Hosting så visas ett stort antal webbhotell som ebjuder WebMatrix-tjänster. 36 av dem även Web Deploy. Ingen av dem finns i Sverige.

Jag hittar en Microsoft-länk How to publish a web application using WebMatrix, men också en bra filmsnutt om deployment av ett Orchardsystem. Dags för att läsa och titta.

Har nu hittat lite uppgifter om Web Deploy. 1) Mitt webhotell erbjuder inte den tjänsten. 2) MS har lite uppgifter om tjänsten här:
WebMatrix lets you select a hosting provider right in the tool. These hosting providers all support the Web Deploy process that automates most of the publishing process. However, you don't have to use one of these hosting companies. If you select a different company, you can still publish from within WebMatrix, but you might need to transfer files using FTP, which is a slightly more manual process. FTP also lets you publish Microsoft SQL Server Compact 4.0 databases, but not databases that use SQL Server or SQL Server Express.
Det kanske är en annan möjlighet. Tydligen måste jag använda Microsoft SQL Server Compact 4.0. Möjligen kan jag ha olika databaser lokalt och remote. Kvar är frågan om Microsoft SQL Server Compact 4.0 är samma som MS SQL Server CE.

Nästa fråga är vilka versioner jag har av MS SQL Server. Det är inte så lätt. Det finns 4741 filer vars namn innehåller "SQL Server". Genom att studera mappar och läsa olika textfiler och Kontrollpanelen kommer jag fram till att jag har följande versioner installerade:
  • Microsoft SQL Server 2005 Compact Edition 
  • Microsoft SQL Server 2005 Compact 3.5 x64
  • Microsoft SQL Server 2005 Compact 3.5 ENU
  • Microsoft SQL Server 2005 Compact 4.0 SO1 x64  ENU  CTP1
  • Microsoft SQL Server 2008 R2 (64 bitar)
  • Microsoft SQL Server 2008 R2 Express
  • Microsoft SQL Server 2012 Express (trol beta)
  • Microsoft SQL Server 2012 LocalDB
  • Microsoft SQL Server Compact Edition
Det verkar ju inte klokt. Skulle vilja bli av med allt som jag inte använder.

På webhotellet ser det ut som om att jag har Microsoft SQL Server 2008 R2 Express

Via Microsoft SQL Server Management Studio (version 10.50.2500) får jag tillgång till SQL Server 10.50.2500, vilket troligen är Microsoft SQL Server Express Edition (64-bit)På nätet ser jag att denna version (10.50.2500) är SQL Server 2008 R2 SP1. Någon senare SP finns inte men däremot några updates.

Frågor:
  • Hur kommer jag åt Microsoft SQL Server 2012 Express?
  • Vad är  Microsoft SQL Server 2012 LocalDB?
  • Hur använder jag  Microsoft SQL Server Compact Edition?
  • Kan jag ta bort  Microsoft SQL Server 2005?
  • Ska jag ladda hem senaste versionen av  Microsoft SQL Server 2012 Express?






torsdag 3 maj 2012

Umbraco

För en tid sedan lästa jag lite om CMS-systemet Umbraco och laddade hem det för att se vad det är. När det gått en vecka hörde de av sig kul nog och för några dagar sedan fick jag mail om en ny release. Så kanske är det dags att titta liten mer på systemet.

Umbraco är freeware, men det finns addons som kostar och likaså är det flera som tar betalt för kurser och annan hjälp. Och det är inget att säga om det. Men det kostar! Umbraco Confidence (bugrättning, support, deployment, mm) har prislappen 3000 €. Den nivån är otänkbar för mig, så ska jag välja detta system så ska jag inte behöva Confidence.

Det finns två sätt att downloada: Web Platform Installer eller WebMatrix. Jag är skeptisk till den senare eftersom jag tror att mitt webhotell fortfarande inte stöder en del funktioner i WebMatrix. Och ett krav är att jag antingen ska kunna utveckla lokalt och sedan ladda upp eller så ska jag även kunna utveckla remote.

Jag har nu rensat bort allt om Umbraco lokalt och väljer sedan alternativet Web Platform Installer.


Vid installationen måste jag välja databas: SQL Server CE eller SQL Server. Det är inte lätt att hålla ordning på Microsofts olika databassystem i skilda releaser. Tur nog finns de andra som gör det: Comparison of SQL Server Compact, SQL Server Express 2012 and LocalDB. Microsofts info om utgåvor av SQL Server finns här.

Det har kommit en ny Express-version, dvs freewareutgåva. SQL Server 2012 Express. Ska jag ladda ned den först? Är den kompatibel med den som Webhotellet har? Jag får avbryta installationen och ta reda på mer.

Jag vill inte Dela

Jag är inte riktigt vän med Google+. När jag ska spara ett inlägg på Blogger så måste jag klicka på Dela-knappen. Jag vill inte dela min inlägg med någon speciell, utan bara publicera inlägget. Intresserade får hitta inlägget via sökmotorerna.

Nu väljer ja Offentligt och hoppas att inte vänner och bekanta som är med i mina "cirklar" inte besväras med något mail eller liknande. På Google+ står det att Offentligt innebär "Visas för alla (offentligt på webben)."

Men jag vill å andra sidan uttrycka min tacksamhet till Google för att det är så enkelt att hantera bilder i Blogger. Jag har ju en Wordpressblogg också och då måste bilder först publiceras någonstans. Blogger hämtar bilden direkt från disken. Praktiskt.

Kan också nämna att jag använt Google+ Hangout några gånger. Det har fungerat riktigt bra.

Tänker Google stänga min blogg?

För några dagar sedan fick jag ett bestämt brev från Google "because your email address is associated with an unmigrated legacy Blogger account. As we announced in April of last year, legacy accounts will no longer be accessible after May 30th, 2012 unless they are updated to the Google Account system. Any blog content associated with this account will also be unmodifiable after that date."

Sedan blir det nästan hotfullt. To transfer your blog to the Google Account system you need to visit the Legacy Migration page at http://www.google.com/appserve/mkt/xxx right now to make sure that your account and associated blogs are claimed. If you’ve forgotten the Blogger password that is associated with this email address, you can use our Account Recovery page at http://www.google.com/appserve/mkt/xxx to request password information to be sent via email.

Jaha, nu begär Google att även denna tjänst ska fösas in under ett gemensamt skal så de kan hålla reda på vad jag gör.

Jag klickar lydigt på den första länken (jo, där fanns det en kod som jag ersatt med xxx) och kommer till sidan Kom igång med det nya Blogger. Där ska jag först bekräfta den "gamla inloggningen". Jag anger min epostadress som användarnamn och mitt speciella lösenord för Blogger och måste sedan godkänna Googles användarvillkor som jag är mycket kritisk till.

Blogger svarar Det gick inte att hitta användarkontot. Vad nu, har Google tagit bort mitt Bloggerkonto! Har jag inte längre tillgång till allt ska skrivit de senaste åren. Kollar om jag kan läsa min blogg och det kan jag. Ser att jag redan är inloggad och loggar med tveksamt ut. Kommer jag kanske inte kunna logga in något mer?

Men det går bra att logga in med mitt vanliga Google-lösenord. Jag går tillbaka till sidan Kom igång med det nya Blogger, men det går fortfarande inte att logga in för att "bekräfta din gamla inloggning". Prövar att logga in med ett tidigare Blogger-lösenord men det fungerar inte heller.

Klickar därför på Har du glömt ditt lösenord? Nu får jag två val:
- Vilken är webbadressen till bloggen?
- Vad har du för e-postadress?

Väljer det första alternativet. Google svarar per mail att användarnamnet hibratt@gmail.com och att jag med mina kontoppgifter har tillgång till en rad bloggar. Om jag har glömt lösenordet så ska jag klicka på en länk. Då gör jag det. Får besked om att Google kan sända en verifieringskod via SMS. Registrear koden och kan sedan skriva in mitt gamla lösenord som det nya.

Återgår till sidan Kom igång med det nya Blogger. Men Google kan fortfarande inte hitta mitt konto. Jag ger upp. Får nöja mig med att jag kan hitta det.

onsdag 28 mars 2012

Bra exempel med WebMatrix och Razor

Jag har haft lite svårt att komma underfund med Razor men har nu hittat två hjälpredor. Den ena är Pluralsight genomgång av några exempel lite över nybörjarnivån. Den andra är Microsofts dokumentation av Razor som det faktiskt tog mig att tag att hitta. Här ska jag gå igenom något av vad Pluralsight säger med hjälp av MSs dokumentation.

Exempel 1

Rad 1-3 är en Rezor-sats som innehåller c#.
Rad 4-11 är standard HTML
Rad 12 @foreach är ett Razoruttryck som fungerar på samma sätt som C#. Razor-satsen slutar på rad 14
Rad 13 har en Resor inline uttryck. Obs ska inte ha ";". Motsvara asp.nets uttryck <%=xxx%>.
Rad 15-17 standard HTML.







Rad 11: Här börjar en razor multisttement. IsPost är true när websidan innehåller information som sänts till servern med ett formulär.
Rad 12-13: WebMail är en class (kallas också för 'helper') dvs är ett object i .Net Framework.
Rad 19 är intressant. <text> ser ut som en html-tag men är faktiskt ett Razor-ord, som ger det möjligt att skriva vanlig text och htmltaggar inne i en Razor-sats.
Rad 20-26 är normal c#
Rad 27-29 är normal html
Rad 30-32 är Razor, samma som i ex 1 ovan.
Rad 33-40 är htlm-taggar utan 39 som avsutar en Razor-sats.


Exempel 3
Layoutfil



I WebMaster kan kod som används i flera sidor placeras i en layoutfil som kopplas till varje sidfil. Bilden ovan är ett exempel på en sådan layoutfil. Den består av standard HTML med två undantag.
Rad 22 innehåller innehåller @RenderBody(). Detta uttryck ersätts av koden i den sidan som anropar layoutsidan.
Rad 29 innehåller @RenderSection, se nedan. False-parametern betyder att RenderSection inte ger något felmeddelande om sådan sektion saknas i anropande sida.
Rad 28 innehåller Razor-satsen if(IsSectionDefined... Den gör det möjligt att i layouten agera på om det finns en Section i sidan eller ej, som t.ex. i fallet ovan med att skriva "Default content".

Exempel 4



Det mest intressanta i exemplet ovan är givevis att htmlkodens inledning och avslutning har tagits bort. Det finns numera i layoutfilen Layout2.cshtml. Sidan ovan innehåller en @section som skrivs ut styrd av layoutfilen.

måndag 26 mars 2012

Bättre intro till WebMatrix

Det finns en betydligt lättare intro till WebMatrix än Joe StagnersWeb Development 101 using WebMatrix verkar vara helt ny och innehåller tyvärr några fel som förvirrar. Det är konstigt att inte Microsoft kontrollerar sina exempel.

När jag testat exemplet har jag ersatt filmtitlar med webbar. Det ger mig möjlighet att spara referenser till webbar om WebMatrix och jag får samtidigt en något djupare förståelse av exemplet.

Part 1, Getting Started with WebMatrix
Här är det enda felet länkarna i listan Related Categories.

Part 2, Create your first Web Page
Här står det "Choose the HTML file type, and call it default.html and press OK. ". Det är fel. Exemplet förutsätter att man väljer en cshtml-fil. Mycket enkel förklaring som även den med begränsade kunskaper i html bör kunna följa.

Här är det inga fel vad jag sett, men man nämner inte heller det utmärkta stöd som WebMatrix ger vid inskrivningen av CSS. Det kan bero på att denna funktion nog kom med version 2  av programmet och exemplet först gjorts för version 1.

Part 4, Using Layout
Här står det "Up to now you’ve been creating HTML pages that use the .htm or .html extension", men det är fel. Den extension som används är cshtml.

I detta avsnitt introduceras Razor. Först tas den inledande och avslutande delen av koden från Part 4 ("movies.cshtml") bort och läggs i egna filer. Sedan läggs kommandot @RenderPage("PageHeader.cshtml") och @RenderPage("PageFooter.cshtml") till den återstående koden. Det som händer är att när movies.cshtml exeveras är att RenderPage först inkluderar koden från "PageHeader.cshtml" resp "PageFooter.cshtml". Det är precis som include i gamla ASP.

Ett bättre sätt att administrera kod som är gemensam för flera sidor är skapa en layoutfil, i exemplet kallad "_siteLayout.cshtml". Starttecknet "_" gör att filen inte kan accessas utifrån utan endast från andra filer på siten.

Den sidspecifika koden anropar layoutfilen med konstruktion
@{
Layout = "~/_siteLayout.cshtml";
}
först i koden och anger med @RenderBody() var i layoutfilen den sidspecifikat koden ska placeras. Det känns lika baklänges, men man vänjer sig kanske.

Ett alternativt sätt att anropa layoutfilen är att exkludera den från den sidspecifika filen och i stället placera den i filen "_PageStart.cshtml", som alltid exekveras först om den finns i systemet.

Part 5, Using Data
Det är mycket enkelt att skapa tabeller. Synd dock att exemplet inte stämmer med WebMatrix 2. Det skapar dock inga större problem. Det slarvfel jag gjorde ledde dock till helt missvisande felmeddelanden. Lösningen var att ta bort columns och regstrera dem igen. Ändra funkade inte.

Databasen läses med
@{
var db= Database.Open("Movies");
var sqlQ = "SELECT * FROM Favorites";
var data = db.Query(sqlQ);
}
Det ska bli intressant att se vilka andra metoder än Query som objektet Databas har.

För att läsa respektive post använder exemplet
@foreach(var row in data)
Detta Razorkommande beskrivs inte närmare. "var row" är uppenbarligen en deklaration, men hur fungerar "in data"?

Part 6, Creating an Add Data page

För att lägga till data används
@{
var MovieName="";
var MovieGenre="";
var MovieYear="";
if(IsPost){
MovieName=Request["formName"];
MovieGenre=Request["formGenre"];
MovieYear=Request["formYear"];
var SQLINSERT = "INSERT INTO Favorites (Name, Genre, ReleaseYear) VALUES (@0, @1, @2)";
var db = Database.Open("Movies");
db.Execute(SQLINSERT, MovieName, MovieGenre, MovieYear);
}
}
" VALUES (@0, @1, @2)" är nollbaserade index till variablerna i Execute-kommandot.

Part 7, Creating an Edit Data Page

Här hämtas en post med
var id=Request["id"];
var SQLSELECT = "SELECT * FROM Favorites where ID=@0";
var db = Database.Open("Movies");
var Movie = db.QuerySingle(SQLSELECT,id);
"@0" pekar på id i QuerySingle.

I form används koden
<form action="" method="post">
<p>Name:<input type="text" name="formName" value="@MovieName" /></p>
Även här används Razorkommando som motsvarar <%=MovieName%> i ASP.

Uppdateringen sker med
var SQLUPDATE = "UPDATE Favorites Set Name=@0, Genre=@1, ReleaseYear=@2 WHERE id=@3";
db.Execute(SQLUPDATE, MovieName, MovieGenre, MovieYear,id);
Om man kör detta program utan parameter kommer felmeddelandet
Serverfel i tillämpningsprogrammet /.
Det går inte att utföra bindning under körning för en null-referens 
Inte särskilt upplysande.

Part 8, Creating a Delete Data page

Här finns inget nytt som är WebMatrix-specifikt.

Part 9, Deploying your site

Detta är ett intressant avsnitt som jag dock inte fördjupat mig in än, då jag inte valt webbhotell. Det ser dock väldigt enkelt ut. Det finns ett 40-tal hotell som Microsoft certifierat, erbjuder shared hosting och ASP.net 4.5 Beta vilket bör inkludera WebMatrix 2. Men inget av dem finns i Sverige. Men det kommer...