Merteknik

Diskussion om teknik och vetenskap

Arkiv för kategorin Guider

2010-02-19

Samsung Wave

samsung-wave-topp

För några dagar sedan på en mobilmässa i Barcelona visade Samsung upp en av sina senaste mobiler som kommer att heta  Wave.  Mobilen har ett utseende som påminner en del om Apples Iphone och Samsung kommer även lansera applikationer  till mobilen.

Mobilen använder sig av det nya öppna operativsystemet ”Bada” som även Samsung har tillverkat. Läs mer om Bada på deras egna hemsida.

Teknisk data

Samsung wave  har en pekskärm som är 3.3 tum stor, stöd för multitasking och har även Bluetooth 3 som har en överföringshastighet på upp till 24 mbit per sekund. Mobilens kamera är på 5 megapixlar och klarar av att filma i Hd kvalité, något som har blivit riktigt vanligt bland de senaste mobilerna.

Samsung skriver att Wave ska kunna spela upp musik i 100h på en laddning.  Vad mobilen kommer klara i verkligheten får vi vänta att se, det ska bli trevligt att se lite tester när den väl lanseras på marknaden.

Applikationer

Precis som iphone kan man även ladda ner olika applikationer till Wave.  Samsung Apps kommer att lanseras till Sverige i maj och man kommer både kunna ladda ner gratis  och betalprogram. Allt detta kan hämtas hem direkt med mobilen.

Video

För några dagar sedan laddades det upp en visningsfilm om mobilen på videosajten Youtube. Den går igenom dess funktioner och annat trevligt.

För mer info om mobilen kolla in på Samsung wave’s sida.

2009-11-27

Kurvor med splines

I matematiken är en spline-kurva en funktion som låter oss bygga upp en kurva med hjälp av ett antal sammanfogade polynom. Givet ett antal kontrollpunkter kan en interpolerande kurva byggas upp som slingrar sig igenom punkterna. Kurvan behöver dock inte nödvändigtvis passera igenom alla punkter, en sådan kurva kallas approximerande kurva.

splinesLinjära, kvadratiska och kubiska splines

En Spline är uppbyggd av ett antal polynom när graden på polynomet avgör karaktären och utseendet på kurvan. Vanligtvis används tredjegradspolynom till splines på grund av dess mjuka och hanterbara struktur. Dessa splines kallas kubiska splines. På samma sätt kallas splines av andragradspolynom kvadratiska splines och förstgradspolynom bildar linjära splines.

Kontinuitet

Det är inte helt trivialt att matcha ihop olika polynom till en längre kurva och samtidigt få dem att passa ihop. Det som avgör hur bra matchningen är kallas kontinuitet och är ett slags mått på hur jämn kurvan blir i en skarv mellan två kontrollpunkter. Kontinuiteten på en kurva kan vara C0 som lägst, C1 eller C2 som är den högsta graden.

C0-kontinuitet

För att en kurva ska ha C0-kontinuitet krävs det endast att samtliga delpolynom är sammansatta. Det vill säga att det inte blir något glapp mellan delsektionerna.

C1-kontinuitet

En kurva med C1-kontinuitet är en kurva som inte bara är sammansatt utan även har samma lutning (derivata) i skarvpunkterna.

C2-kontinuitet

För att få C2-kontinuitet på sin kurva krävs det att sektionerna sitter ihop C0, att skarvarna har samma lutning C1 och dessutom att kurvaturen är samma, det vill säga har samma andraderivatan i skarpunkterna.

För att returnera en bild från en url måste först och främst ändra applikationens Content-Type till image.

Response.Clear();
Response.ContentType = "image/png";

För returnerna en png-bild behöver man spara bilden till en minnesström som sedan skrivs över till webbläsarens outputström. Används ingen minnesström får man felmeddelandet A generic error occurred in GDI+.

// Sparar bilden till minnesströmmen som sedan sparar bilden till utströmmen
using (MemoryStream stream = new MemoryStream()) {
button.Save(stream, ImageFormat.Png);
stream.WriteTo(Response.OutputStream);
}

Detta behöver inte göras när man hanterar gif eller jpeg-bilder. Då det räcker att spara bilden enligt följande:

// Sparar bilden till utströmmen
button.Save(Response.OutputStream, ImageFormat.Gif);

En enkel asp.net -applikation som returnerar en bloggknapp kan se ut så här:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.IO;
using System.Drawing;
using System.Web.Security;
using System.Drawing.Imaging;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Bitmap button = new Bitmap(80, 15);
Graphics g = Graphics.FromImage(button);

String text = "MerTeknik.se";
Font font = new Font("Courier", 7F, FontStyle.Regular);
SolidBrush wb = new SolidBrush(Color.White);
SolidBrush bb = new SolidBrush(Color.Black);

g.FillRectangle(bb, 0, 0, 80, 15);
g.FillRectangle(wb, 1, 1, 78, 13);
g.FillRectangle(bb, 2, 2, 76, 11);

g.DrawString(text, font, wb, 7F, 1F);

Response.Clear();
Response.ContentType = "image/png";

using (MemoryStream stream = new MemoryStream()) {
button.Save(stream, ImageFormat.Png);
stream.WriteTo(Response.OutputStream);
}
}
}

Resultat

Applikationen returnerar en bloggknapp från en vanlig .aspx -url:
bloggknapp

Det här exemplet passar utmärkt för dig som precis håller på att lära dig .net-programmering med c#. Exemplet visar hur du enkelt kan skapa ett BMI-test genom att läsa av textfält och anropa funktioner med knapptryck. För att kunna köra program måste du ha Visual studio med .net 2.0 eller 3.5 tillsammans med C#.

HTML-delen (Default.aspx)

Asp.net-sidor består vanligtvis av två separata sidor, en html-del och en code-behind del där programmeringen sker. På så sätt kan du enkelt och snyggt designa dina hemsidor och få en tydlig översikt över vad som händer.

Så här ser HTML-delen ut. Lägg märke till att formuläret inte består av traditionella taggar som tex <input>. Istället används <asp:TextBox> och <asp:Button> som sedan omvandlas till vanlig html automatiskt.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<html>
<head>
        <title>Räkna ut bmi</title>
</head>
<body>
        <form id="form1" runat="server">
        <h1>Räkna ut ditt BMI</h1>
                <table>
                        <tr>
                                <th>Din längd:</th>
                                <td><asp:TextBox ID="length" runat="server" Columns="3" />cm</td>
                        </tr>
                        <tr>
                                <th>Din vikt:</th>
                                <td><asp:TextBox ID="weight" runat="server" Columns="3" />kg</td>
                        </tr>
                        <tr>
                                <td colspan="2"><asp:Button Text="Räkna ut bmi" runat="server" OnCommand="BMItest" /></td>
                        </tr>
                </table>
                <asp:Label runat="server" ID="result"></asp:Label>
        </form>
</body>
</html>

Ovan kan vi se ett enkelt forumulär där vi frågar användaren om indata. Lägg särskilt märke till input-fältens Id-nummer eftersom det är dessa som sedan används för att få tag på datat. Förutom fälten för indata finns även en knapp (asp:button) som anropar funktionen BMItest vid kommando.

KOD-delen (Default.aspx.cs)

Precis som i vanligt C#-programmering utgörs programmeringen med hjälp av klasser och objekt. När man skapar en ny sida i Visual studio skapas en kodfil automatiskt. Kodfilen har samma namn som den skapade sidan förutom filändelsen .cs (c-sharp).

På den här sidan har vi lagt in en funktion BMItest, dvs den funktion som anropas då användaren trycker på knappen ”Räkna ut bmi”.

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page {
        protected void Page_Load(object sender, EventArgs e) {

        }

        protected void BMItest(object sender, EventArgs e) {

                string length_str = this.length.Text;
                string weight_str = this.weight.Text;

                try {

                        double length = Double.Parse(length_str) / 100;
                        double weight = Double.Parse(weight_str);

                        double bmi = weight / (length * length);

                        this.result.Text = "Ditt BMI är " + bmi;

                } catch (FormatException) {
                        this.result.Text = "Fel indata";
                }
        }
}

Datat hämtas genom de ID-nummer som vi specificerade in .aspx-filen. Övrig kod är precis som vanligt C# och vilket är lite utan tjusningar med Asp.net. Det går att skilja html från programmeringen på enkelt och snyggt sätt.

Tryck här för att se resultatet

För er som inte vet vad bmi är kan läsa om det på bmitest.se eller wikipedia.

lm hashingLM-hash är ett format som Windows XP använder för att spara lösenord som innehåller 14 eller färre tecken. Windows Vista används inte LM-hash till fördel för NTML som anses vara mycket säkrare. LM-hashar finns dock som tillval i Vista för att klara av bakåtkompatibilitet.

Hur skapas LM-hashar från lösenord?

  1. Lösenordet omvandlas till att endast innehålla stora bokstäver.
  2. Om lösenordet innehåller färre 14 tecken konkateneras null-tecken till för att uppnå längden 14.
  3. Lösenordet delas i två delar. 7 tecken i varje del.
  4. De två halvorna DES-krypteras genom att addera en 0-bit var 7e bit av de totalt 56 (7*8) bitarna i varje halva (8 bitar i varje tecken multiplicerat med 7 tecken). När detta är gjort finns 64+64 bitar som kan bilda två DES-nycklar.
  5. Varje DES-nyckel används för att DES-kryptera strängen ”KGS!@#$%” som resulterar två 8 bytes chiffer. Dessa chiffer konkateneras och bildar en 16 bytes LM-hash.

Varför är LM-hashar så svaga?

När lösenord LM-hashas transformeras lösenordet till stora bokstäver vilket innebär att redan nu har LM-algoritmen uteslutet hälften av alla möjliga kombinationer. Därefter delas lösenordet i två delar där de första sju tecknen hamnar i den ena delen och de övriga tecknen i den andra delen (max 7). Om lösenordet innehåller 9 tecken får alltså den första delen sju tecken medans den andra får två. Tack vare att algoritmen delar upp lösenordet i två strängar kan hashen knäckas mycket snabbare. Sju tecken är nämligen avsevärt mycket lättare än åtta eftersom antalet olika kombinationer ökar exponentiellt med antalet tecken . Detta gör att vanliga persondatorer kan knäcka alfanumeriska lösenord på bara någon timme genom en enkel brute force attack.

Vad är brute force?

Brute force är helt enkelt då man naivt testar precis varje möjligt kombination. Attackeraren kan helt en kelt köra algoritmen ovan med alla möjliga kombination tills den resulterande hashen matchar den önskade.

Att installera spotify i Ubuntu går alldeles utmärkt. Eftersom spotify inte finns i en unix-version måste windowsversionen laddas ner. Därefter kan spotify installeras med hjälp av wine som laddas ner med följande kommado:

$ apt-get install wine

När wine är installerat och klart kan spotify installeras med kommandot:

$ wine Spotify\ Installer.exe

Nu är det bara att klicka dig fram i installationen och förhoppningsvis stöter du inte på några problem. Lycka till!
[ad#Kims länkenhet]

Hur högt ditt blogginlägg hamnar i sökresultatet beror på hur bra Google tror att ditt inlägg är. Eftersom Google inte är någon människa som kan läsa inlägget, måste Google istället försöka bedöma inlägget med andra faktorer som vägs i en stor algoritm.

Algoritmen är i sin tur uppbyggd av ett hundratal mindre algoritmer och vi kan anta att resultatet av dessa ackumuleras till en summa som talar om hur bra ditt inlägg är. Delalgoritmerna undersöker bland annat hur bra din sida är optimerad för det sökord som du vill hamn hög på samt hur många länkar som det finns till din sida. För dig som inte kan sökmotoroptimering har jag skrivit grundpelarna i hur man får ett blogginlägg att antas vara bra av Google.

On-page

On-page är det görs på själva sidan. Det vill säga hur innehållet på sidan är strukturerat och uppbyggt. De viktigaste on-page faktorerna antas vara:

Titel

Blogginläggets titel är den absolut viktigaste on-page faktorn. Det är titeln som visas i googles sökresultat och i webbläsarens huvud. Oftast blir titeln satt som inläggets rubrik vilket fungerar helt okej så länge du har en bra rubrik som inkluderar sökordet som du vill hamn högt på. Titeln ska helst vara så kort som möjligt och det viktigaste ordet bör om möjligt vara det första.

Rubriker

Rubriker är uppbyggda i en slags hierarki där de största rubrikerna betyder mest för Google. För dig som inte kan något om html kan anta att huvudrubriken på ditt inlägg är mest betydande. Försök därför att få det sökord som du försöker hamn högt på i huvudrubriken samt gärna i någon underrubrik om den möjligheten finns.

Text

Det är trots allt texten som avgör värdet på ditt inlägg. Försök att skriva så naturligt som möjligt samtidigt som åtminstone inkluderar ditt viktiga sökord på några ställen, 3-4 gånger brukar räcka gott beroende på hur lång din text är. Kom ihåg att Google gillar text. Inlägg som består av 500 ord uppskattas av Google och kan du skriva ännu mer är det ännu bättre! Passa även på att fetmarkera ditt sökord på något ställe, alternativt gör det kursivt.

Bilder

Bilder uppskattas av Google. Glöm inte att fylla i en bildbeskrivning (alt-tagg). Försök att få beskrivningen så relevant till bilden som möjligt men inkludera gärna ditt sökord om det går.

Interna länkar

Det är viktigt att ha en bra länkstruktur på sin sida. Länka gärna till ditt inlägg från fler ställen. På så sätt blir det lättare för Google att indexera ditt inlägg samt att du sprider kraft från andra interna sidor till ditt nya inlägg. Länka helst från startsidan om det går.

Övrigt

Det går inte att räkna upp alla faktorer som Google tar lägger vikt på. För det första vet vi inte exakt hur Google har utformat sina algoritmer och för det andra finns det väldigt många mindre faktorer som inte går att räkna upp. Många som sysslar med sökmotoroptimering har olika åsikter om vad som är bra men de flesta verkar varar överens om det jag skrivit om ovan.

Utöver detta gillar Google stora sidor med mycket innehåll. Om domänen dessutom är gammal bidrar detta kraftigt till ett förhöjt förtroende.

Off-page

Efter att ditt inlägg är skrivit och klart är det dags att ta hand om off-page delen. Det är inte bara på den egna sidan som du kan göra nytta. Den största delen sköts faktiskt utanför och handlar framförallt om att skaffa länkar.

Externa länkar

Externa länkar är en extremt viktig faktor som Google tar hänsyn till. Hur ska Google veta om folk uppskattar din sida? Jo, genom undersöka om din sida har några länkar till sig. Länkarna kan dock inte vara hur som helst även om alla länkar är bra. En relevant länk är väldigt mycket bättre än en länk som kommer från en sida med ett helt annat innehåller eller om sidan är skriven på ett annat språk. Länkens text (ankartext) har också stor betydelse. Helst ska ankartexten vara samma ord som man vill hamna högt på. Dock måste länkarnas ankartexter variera naturligt så att inte Google börjar ana oråd.

Sista tips

Försök inte lura Google. Google är smartare än vad du tror och det lönar sig aldrig att fuska.