287/2007
Grub är ett projekt för att indexera internet med hjälp av distributerade klienter, i form av en skärmsläckare. Kommer ihåg när jag körde det för några år sen och hade en del skoj med det. Det var riktigt trist när det stängdes ner år 2005 pågrund av en kontrovers med källkoden, då i Looksmart's ägo.
Nu har dock Wikia köpt projektet och planerar att starta upp det igen, och använda datan till att köra deras sökmotor. De ska också släppa det som öppen källkod om jag förstått det rätt. Mer info kommer på deras Grub Wiki.
(via TechCrunch)
Av Jesper Lind
227/2007
Jag har inte provat på Facebook ännu, den sociala plattformen som för tillfället växer med 100 000 medlemmar per dag, och som även svenskarna börjar joina som galningar. Så en dag får jag väl kolla in vad all hype handlar om.
Intressant är i alla fall att de har ett öppet API som utvecklare kan göra egna insticknings-program genom. Företag som Drömbolaget satsar nu på att göra applikationer till denna plattform.
Vill man prova på detta med ASP.NET så har Nikhil Kothhari gjort ett öppen källkods-projekt som kallas Facebook.net.
Microsoft utannonserade även nyligen att man gått in i ett partnerskap med Facebook och det tillhandahålls ett utvecklings-kit på CodePlex.
Jag har som sagt aldrig loggat in på Facebook utan bara vart vid fronten och vänt. Något som är intressant med detta faktum är att ingen data kommer ut från Facebook (precis som med många andra sociala nätverk) är att man inte kan se några andra profiler utan att själv bli medlem.
Facebook är precis som ett svart hål som Web-stategy skriver i inlägget "All your widgets are belong to Facebook". Det finns mängder av sätt att få in data men det kommer inte ut någonting, de har inte ens RSS-flöden har jag hört. Vågar man gå in där?
Av Jesper Lind
227/2007

Library clips visar 15 sätt som man kan pimpa upp sin Google Reader på och bland dessa finns ett som jag väntat på länge, nämligen möjlighet till sökning.
Det har funnits några sätt att göra detta innan men de har varit rätt komplicerade och innefattat att man skapar en egen Google Co-Op och liknande.
Detta nämda skript som finns på Userscript.org installeras genom ett enkelt klick. (Förutsatt att man redan har Firefox-tillägget Greasemonkey)
Av Jesper Lind
227/2007
Vi har tidigare gått igenom hur man refererar till instanser av User Controls i koden.
Om dessa kontroller är cachade så blir det lite svårare. Speciellt om man ska kunna sätta några properties på dem. Via OdeToCode hittade jag info hos Microsoft om hur man kan göra, och även exempelkod.
// Load the user control
Control control = LoadControl("control/MyControl.ascx");
placeHolder.Controls.Add(control);
// Set its properties (if possible)
ASP.MyControl uc = control as ASP.MyControl;
if (uc == null)
{
PartialCachingControl pcc = control as PartialCachingControl;
if (pcc != null) uc = pcc.CachedControl as ASP.MyControl;
}
if (uc != null) uc.MyProperty = "This is the value";
Ps. I mitt exempel har jag med ASP-prefixet på klassen för kontrollen. Detta beror på att jag använder inline-code, läs mer om detta i tidigare nämnt inlägg.
Av Jesper Lind
217/2007
Något jag inte tänkt på innan är att man inte kan sätta värde-variabler till null i C#. Gjorde ett försök och fick då felet:
int x = null;
Cannot convert null to 'int' because it is a value type
När jag läst detta inlägget, fick jag lite bättre förståelse till hur det fungerar, och även hur man kan göra för att använda null även på värdetyper, så här:
int? x = null;
Användbart om man jobbar med en databas och man vill att sina variabler ska reflektera de null-värden som finns där.
Även CodeBetter skriver mer om saken.
Av Jesper Lind
197/2007
Har hittat lite olika verktyg för att söka info om domäner och tänkta samla dem här på ett ställe. Några har jag skrivit om tidigare här på sajten.
Bust a Name - Verktyg för att hitta lediga domännamn från nyckelord.
Deleted.se - Domäner som håller på att gå ut.
Domain Hacks - Visar finurliga varianter av domäner genom subdomäner och mappar.
Domainstream.se - Auktionstjänst för domännamn och webbplatser.
ExpiredDomains - Utgående .com-domäner i textfiler.
Hjalmars domänsök - En svensk klon på Bust a Name som istället visar .se.
Instant Domain Search - Visar om ord finns lediga samtidigt som man skriver dem.
Lediga.se - .se-domäner som snart blir lediga för nyregistrering.
Militz.nu - Hittar du utgående .se-domäner
PR Blaster - Visar PageRank-värden i bulk.
Randomainer - Man startar med att ange ett ord och tjänsten kommer med förslag på närliggande. Visar även lediga domäner som är relaterade till ämnet.
Who Is Hosting This - kontrollera vilken webbhost en sajt ligger hos.
Fyller på här ifall jag hittar några fler. Eller nån som har tips?
Av Jesper Lind
187/2007
TinyMCE är en skön HTML-Editor som har blivit väldigt populär. Den är oftast väldigt enkel att använda och har många konfigureringsmöjligheter.
Men att använda den tillsammans med Ajax och partial update är verkligen ingen lätt match. Jag lyckades tidigare i år, efter stor möda, men det var nog mest tur.
Skrev om det i bloggen, men den postningen blev inte så fullständig eller bra. Det var mest lite egna minnesanteckningar som jag fick till där. Jocke var inne och kollade på beskrivningen men fick inte till det. Så nu tänkte jag visa precis hur man kan göra med ett uppdaterad och fullständig kod.
Problemen
Problem 1. TinyMCE gör om textboxar till en Iframe, som My Portal Project förklarar. Detta leder till att det är svårt att ta emot värden (speciellt i Firefox). Waqas_badas visar hur man kan komma runt detta genom ett javascript på submit-knappen.
Problem 2. Vid Ajax-anrop ritas inte editorn upp igen. Här kan man anropa mceAddControl-kommandot, men det gäller att resetta id-räknaren innan man gör det, här är en som kommit på hur man gör.
Kodexempel
Nu tänkte jag låta koden förklara resten. Missa inte att ladda hem zip-filen längst ner som innehåller ett färdigt project som fungerar i IE7, FF2 och Opera.
Default.aspx
<%@ Page Language="C#" ValidateRequest="false" Trace="false" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>MS Ajax UpdatePanel - TinyMCE</title>
<script type="text/javascript">
function SaveMyPreciousValues()
{
tinyMCE.triggerSave(false,true);
TextBox1 = document.getElementById('TextBox1');
alert('Check value when posting: '+ TextBox1.value)
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="sm" EnablePartialRendering="true" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<p>
<asp:Label ID="Label1" runat="server" Text="Welcome to the MS Ajax UpdatePanel - TinyMCE Demo, Enjoy!"></asp:Label>
</p>
<asp:TextBox ID="TextBox1" Rows="10" Columns="50" TextMode="MultiLine" EnableViewState="false" Text="Write something here..." runat="server"></asp:TextBox>
<p>
<asp:Button ID="Button1" runat="server" OnClick="Button1_OnClick" OnClientClick="SaveMyPreciousValues();" Text="Hit me" />
</p>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>
Default.cs.aspx
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)
{
if(!Page.IsPostBack)
LoadTinyMCE();
}
private void LoadTinyMCE()
{
//Load tinyMCE
HtmlGenericControl Include = new HtmlGenericControl("script");
Include.Attributes.Add("type", "text/javascript");
Include.Attributes.Add("src", "js/tiny_mce/tiny_mce.js");
this.Page.Header.Controls.Add(Include);
//Config MCE
HtmlGenericControl Include2 = new HtmlGenericControl("script");
Include2.Attributes.Add("type", "text/javascript");
Include2.InnerHtml = "tinyMCE.init({mode : 'textareas' ,language : 'sv',entity_encoding : 'raw'});";
this.Page.Header.Controls.Add(Include2);
}
protected void Button1_OnClick(object sender, EventArgs e)
{
//Get the contect of the TextBox
string inputText = Request.Form["TextBox1"];
//Print all Form-values when testing
/*for (int i = 0; i<Request.Form.Count;i++ )
{
string itemName = Request.Form.AllKeys[i];
string itemValue = Request.Form.GetValues(i)[0];
Label1.Text = Label1.Text + "<br />" + itemName + ":" + itemValue;
}*/
Label1.Text = "Content posted from TextBox1: " + inputText;
//Register some javascript to redraw the editor.
//Very important to reset the id-counter to "0", or else strange things will happen..
ScriptManager.RegisterClientScriptBlock(UpdatePanel1, this.GetType(), "init", "tinyMCE.idCounter=0;tinyMCE.execCommand('mceAddControl', false, 'TextBox1');", true);
}
}
UpdatePanelTinyMCE.zip (C#)
Uppdatering: Joakim har skrivit om exemplet till VB.NET, läs mer på hans blogg.
Av Jesper Lind
157/2007
Communitysajten Lunarstorm har blivit attackerade av en XSS-mask och runt 5000 användare fick sina presentationer raderade. Dessa ersattes istället av en länk till den konkurrerande communityn Hamsterpaj. Skriptet la även in gästboksinlägg på nio utvalda profiler.
Via kommentarerna hos IDG hittade jag även en länk till gate 303 som också skriver om attacken och visar upp själva koden som användes.
Lunarstorm utvecklas i ASP.NET som är relativt känt för att ha bra skydd mot liknande attacker. När man studerar attackkoden ser man att _EVENTTARGET och _VIEWSTATE har modifierats. Kanske har Lunarstorms utvecklare varit oförsiktiga och stängt av validateRequest-attributet, men det kan ju inte jag svara på. Skulle vara intressant att höra mer om exakt hur denna attack kunde möjliggöras, så andra kan ta lärdom.
Ett tips till Lunarstorms utvecklare (och andra) kan vara att ta en koll på Microsofts Anti-Cross Site Scripting Library.
Av Jesper Lind
157/2007

I helgen så smyglanserade vi äntligen ett projekt som vi vet att många har väntat på, nämligen Merchworld.eu.
De första artisterna som finns i nätbutiken är punk/rock bandet Kid Down, den aktuella soloartisten Salem Al Fakir samt soul-pop-bandet Fibes, Oh Fibes. Räkna med fler spännande band och märken inom kort. Håll koll på Merchworld-bloggen för framtida nyheter.
Än så länge är det mycket kvar att göra på sidan, men nu är de grundläggande funktionerna igång. I början erbjuder vi endast postförskott som betalningssätt och levererar bara inom Sverige. Senare kommer det gå att handla med kreditkort och då börjar vi även ta beställningar från övriga världen.
Presentation av Merchworld
Merchworld specialiserar sig på merchandise för musik- och underhållningsindustrin. Tanken bakom företaget växte fram när vi upplevde att den existerande marknaden i Sverige och Europa inte fullt ut tillfredställde artisters behov. Vi visste att vi kunde utveckla samt förbättra denna viktiga, men ofta förbisedda, aspekt av en artists karriär.
Merchworld är medvetna om att spridningen av musik på nätet innebär att fans kommer hitta andra vägar att stödja artister utöver att köpa deras skivor. Musikbranschen ser nerladdning som musikindustrins domedag. Merchworld ser istället det som en möjlighet att skapa nya relationer mellan konsumenter och musik- och underhållningsrelaterade produkter och tjänster. Till skillnad från andra tryckföretag ingår vi ett partnerskap med våra kunder. Detta partnerskap gör det möjligt för oss att skapa en marknadsplan och ett urval av produkter vilka på bästa sätt representerar artisten. Vi erbjuder inga förskott och det behövs bara ett enkelt kontrakt. Kunderna betalar bara för det de vill ha. När som helst kunderna inte är nöjda med våra tjänster kan de kontakta oss och produktionen av deras produkter upphör.
Design, tillverkning, lager samt distribution sköts via vår fabrik lokaliserad i Vänersborg, Sverige. Produkterna kan sedan säljas på konserter, turnéer, i butiker eller via artistens officiella nätbutik. Företaget består av personer vilka alla har bakgrund inom musikindustrin samt erfarenhet av merchandise på en nationell som internationell nivå.
Teknisk information
Webbplatsen är utvecklad i ASP.NET 2.0 C# och är har XHTML 1.1 som dokumenttyp. Databasen körs på SQL Server.
Credits
Logga: Markus Juhlin
Orginaldesign: Håkan Johansson och Shelby Cinca på Passkontroll
Koncept: Andreas Edlund och Mattias Foldemark
Programmering: Jesper Lind - Code Odyssey
Av Jesper Lind
107/2007
Hej Världen har hittat ett verktyg för att hitta lediga domännamn från nyckelord. Tjänsten heter Bust a Name och visar resultat från toppdomänerna .com .net och .org.
Av Jesper Lind
<<Föregående
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Nästa>>