Back on the road!

Hallo Zusammen,

als erstes wollen wir uns entschuldigen, dass es so lange gedauert hat die Reputationen wieder in Gang zu bekommen. Leider hatten wir in letzter Zeit aus universitären Gründen wenig Zeit für codekicker. Wir bitten um euer Verständnis und bedenkt bitte, dass wir codekicker.de komplett privat finanzieren (Studenten! Innocent) und keinerlei Werbung schalten.

Zweitens: Die gesammelten Reputationen konnten zu 100% rekonstruiert werden, weil alles in der Datenbank korrekt gespeichert wurde. Natürlich wurde der Bug auch behoben!

Wir wünschen euch viel Spaß beim Reputationen sammeln!

 

Viele Grüße,

Marvin und Felix

 

PS: besonderen Dank an GENiALi für die Unterstützung

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Tags:

Wikifunktionen vervollständigt

Wie in jedem gewöhnlichen Forum können die eigenen Beiträge auf codekicker nachträglich editiert werden, um sie zu verbessern oder zu korrigieren. codekicker unterscheidet sich allerdings darin, dass Mitglieder auch die Beiträge von anderen editieren können - genug Reputationspunkte vorausgesetzt.

Alle nachträglichen Änderungen, sowohl am Text als auch am Fragentitel und den Themen sind versioniert und in einer unveränderlichen Historie abrufbar. So sind alle Änderungen nachvollziehbar für den Fall, dass ein Irrtum oder Vandalismus auftritt. Dadurch bleibt jeder nach wie vor für seine Handlungen verantwortlich.

Ich will ausdrücklich festhalten, dass es erlaubt und erwünscht ist, Beiträge von anderen zu verbessern. Hat etwa ein Codebeispiel einen Fehler oder sogar ein Sicherheitsproblem, dann sollten besser nicht Suchende, die die Antwort über Google gefunden haben, falschen oder gefährlichen Code verwenden. Es ist also absolut hilfreich, Fehler zu korrigieren oder zusätzliche Erklärungen einzufügen.

Um fremde Beiträge zu editieren, sind momentan nur 250 Reputationspunkte nötig. Wir haben uns absichtlich für eine relativ niedrige Schwelle entschieden, um kooperatives Verhalten zu fördern. Sollten damit Probleme auftreten, was ich persönlich auf keinen Fall erwarte, dann können wir die Schwelle auch anheben. Was ist eure Meinung dazu?

Kommentare sind bewusst weder editierbar noch löschbar. Wer über einen Kommentar Stellung nimmt, sollte zu seiner Aussage stehen. Wir wollen doch nicht, dass die Kommentare wie bei YouTube enden.

Viele Grüße,
Marvin

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Tags:

Der Heise-Effekt

Wenn eine Webseite auf einer bekannten News-Seite wie heise.de erwähnt wird, kann es zum sogenannten Heise-Effekt kommen, bei dem der Server der betroffenen Webseite mit dem plötzlichen Lastanstieg überfordert ist. Erfreulicherweise wurde codekicker am Montag auf heise.de erwähnt! Leider kam es aber auch zum Heise-Effekt: wir waren für einige Stunden nicht erreichbar, weil unser Server überlastet war. Dafür möchten wir uns bei euch entschuldigen!

Wir mussten daher auch einsehen, dass wir mit dem bisherigen Serveraufbau nicht mehr auskommen. Eine dauerhaft stabile und schnelle Webseite ist für uns die einzig akzeptable Lösung. Ich hoffe, in den nächsten Tagen dazu eine erfreuliche Mitteilung machen zu können.

Es hat Felix und mich persönlich sehr gefreut, welche positive Resonanz codekicker in der Community gefunden hat, und wir möchten uns bei allen bedanken, die über uns berichtet und uns Feedback gegeben haben. Wir hoffen, ein nützliches Hilfsmittel für Programmierer im deutschen Raum zu sein, und sehen uns weniger als Konkurrenz zu anderen Foren sondern als Ergänzung.

Viele Grüße,
Marvin

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Tags:

Wir sind jetzt auch auf Twitter

Siehe http://twitter.com/codekicker für Meldungen zur aktuellen technischen Entwicklung!

Außerdem dürft ihr gerne von unseren Bookmarking-Buttons in der Fußzeile auf jeder Seite Gebrauch machen:

 

Viele Grüße,
Marvin

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Tags:

codekicker.de verlässt den Beta-Status

Zuerst wollen wir Allen danken, die sich bisher für codekicker.de engagiert haben. Sei es über Beiträge, Feedback, Blogs, Tweets usw. – Vielen herzlichen Dank.

Was gibt’s neues?
Letzte Woche sind die beiden folgenden Features hinzugekommen: RSS-Feeds und Sticker.
Den Sticker möchte ich euch in zwei Sätzen erklären: Ihr habt die Möglichkeit euer Profil über den Sticker in externen Seiten, z.B. in eurem Blog, auf der Homepage oder der Signatur in Foren zu verlinken. Den Sticker könnt ihr entweder als PNG-Bild oder als IFrame einbinden. Den Sticker findet ihr als Link in eurem Profil. Meiner sieht z.B. so aus:

Benutzerprofil von Felix Schad auf codekicker.de

Wir freuen uns natürlich, wenn ihr den Sticker in euren Foren-Signaturen oder Blogs einfügt, damit mehr Leute von codekicker erfahren.

Nachdem wir nun knapp 100 Mitglieder haben und unsere Seite dank dem vielen Feedback ausgereift ist, werden wir die Beta nach 100 Usern beenden. Also vielleicht noch ein paar Freunde oder Kollegen anhauen, damit sie sich auch noch das Beta-Abzeichen sichern können. Denkt dran: Für jeden geworbenen Freund gibt es 100 Repuation für dich, sobald dein Freund selbst 100 Repuation erreicht hat.


So long!
Felix

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Tags:

codekicker.BBCode ist open source

In meinem letzten Blogeintrag habe ich von unserem neuen Texteditor auf codekicker berichtet. Der BBCode der Fragen und Antworten wird serverseitig in HTML übersetzt und an den Browser gesendet. Heute möchte ich über unseren BBCode-Parser berichten, der diesen Job für uns übernimmt.

Anfänglich hatten wir "codeparser.NET" verwendet, um den BBCode zu transformieren, mussten jedoch diese Bibliothek bald aufgeben, weil sie sehr fehleranfällig, unflexibel und schwer zu fixen war. Daher haben wir unseren eigenen BBCode-Parser für .NET erstellt. Die gute Nachricht vorweg: Codekicker.BBCode ist open source. Der BBCode-Parser ist auf codeplex zu finden: http://bbcode.codeplex.com/

Da ich die Implementierung übernommen habe möchte ich über ein paar interessante Punkte berichten. Meine Designziele waren:

  • Bugfrei - Die Engine crasht niemals
  • Sicher - HTML wie "<script>" kann unter keinen Umständen in den Output gelangen
  • Performant - der Parser muss hohem Traffic standhalten können
  • Einfach zu bedienen - Um die Einarbeitungszeit für andere zu minimieren
  • Anpassbar - Jeder tag kann beliebig konfiguriert werden. Nichts ist hardkodiert
  • Saubere Fehlermeldungen - Die meisten Syntaxfehler werden mit einer verständlichen Nachricht in Deutsch oder Englisch gemeldet.

Schnellstart
Um einen gegebenen BBCode in sicheres HTML zu übersetzen, genügt: BBCode.ToHtml("{"[url=http://codekicker.de]codekicker[url]"}")

Wie lassen sich die Tags anpassen?

Das ist sehr einfach:

var parser = new BBCodeParser(new[]

    {

        new BBTag("b", "<b>", "</b>"),

        new BBTag("i", "<span style=\"font-style:italic;\">", "</span>"),

        new BBTag("u", "<span style=\"text-decoration:underline;\">", "</span>"),

        new BBTag("code", "<pre class=\"prettyprint\">", "</pre>"),

        new BBTag("img", "<img src=\"${content}\" />", "", false, true),

        new BBTag("quote", "<blockquote>", "</blockquote>"),

        new BBTag("list", "<ul>", "</ul>"),

        new BBTag("*", "<li>", "</li>", true, false),

        new BBTag("url", "<a href=\"${href}\">", "</a>", new BBAttribute("href", ""), new BBAttribute("href", "href")),

    });

return parser.Transform("[b]bbcode[/b]");

Qualitätssicherung mit Microsoft Pex
An einen BBCode-Parser für eine öffentliche Webseite sind extreme Anforderungen zu stellen. Erfüllt sein müssen mindestens die Crashfreiheit und Sicherheit, damit der Parser überhaupt online gehen kann. Diese Eigenschaften konnte ich mit Microsoft Pex sicherstellen. Pex erweitert gewöhnliche Unit Tests um die Fähigkeit, Eingabeparameter anzunehmen. Die Testmethode stellt dabei für beliebige, von Pex gewählte, Eingaben bestimmte Eigenschaften des zu testenden Codes sicher. Pex wählt dabei die Eingaben, in unserem Fall den BBCode, derart, dass die Test-Abdeckung maximal wird. Einer unserer Tests sieht wie folgt aus:

//the parser may never ever throw an exception other that BBCodeParsingException for any non-null input

[PexMethod]

public void NoCrash([PexAssumeNotNull] string input, out string output)

{

    try

    {

        output = BBEncodeForTest(input);

        Assert.IsNotNull(output);

    }

    catch (BBCodeParsingException)

    {

        output = null;

    }

}

 

Wir lassen Pex einen beliebigen BBCode-string auswählen und stellen sicher, dass der HTML-Output keinen script-Tag enthält. Pex wird nun mit aller Macht versuchen, doch einen script-Tag durchzubringen. Dabei geht Pex mit maschineller Präzision vor und findet auch extem unintuitive Möglichkeiten, das zu tun. Da Pex nicht in der Lage war, den Test fehlschlagen zu lassen, kann ich nun sehr sicher sein, dass unsere Implementation sicher ist.

Für Fragen zu diesem spannenden Thema empfehle ich euch natürlich, bei uns eine Frage zu stellen!

Für wen kann unser BBCode-Parser für .NET nützlich sein?
Da der BBCode-Parser in C# geschrieben ist, kann er in jeder .NET-Sprache wie z.B. C# oder VB.NET verwendet werden.

Viele Grüße und bis bald,
Marvin

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Tags:

Ein neuer Text-Editor

Zu einer großartigen Webseite gehört ein großartiger Texteditor, der über Formatierung und Sytax Highlighting für Code verfügt. In der Vergangenheit haben wir auf den Markdown-basierten WMD-Editor gesetzt, um diese Funktionen im Browser anzubieten. Serverseitig wurde das Markdown mittels Markdown.NET in HTML übersetzt. Leider hatten wir mit beiden Komponenten viele Probleme und Bugs, die wir selber fixen mussten. Markdown.NET ließ sogar unter bestimmten Umständen<script>-Tags in den HTML-Output durch und wurde dadurch zum extremen Sicherheitsrisiko, was wir leider erst spät bemerkten.

Daher haben wir uns entschieden, beide Komponenten durch höherwertige abzulösen:

1. codekicker verwendet nun das in Deutschland verbreitete BBCode-Markup (bekannt aus PHP-basierten Foren). Clientseitig geschieht die Texteingabe und Formatierung mit dem exzellenten Markitup-Editor, der sich sehr einfach und robust integrieren ließ. Die Realtime-Vorschau geschieht per Ajax-Aufruf an den Server.

2. Serverseitig wird der BBCode in sicheres HTML umgesetzt und zum Browser geschickt. Da wir keine stabile BBCode-Implementation für .NET finden konnten (alle vorhandenen waren extrem buggy und unzuverlässig), haben wir uns entschieden, unseren eigenen BBCode-Parser zu schreiben. Der neue BBCode-Parser is Open Source und auf codeplex zu finden: http://bbcode.codeplex.com/. In kürze folgt ein kleiner Artikel über einige interessante Erfahrungen, die wir bei der Entwicklung gemacht haben.

Viele Grüße und bis bald,
Marvin

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Tags:

3, 2, 1 Betastart!

Nach etlichen Stunden coden und diskutieren, können wir euch die Betaversion von codekicker präsentieren und euch herzlich einladen daran teilzunehmen!

Die Plätze der Beta sind auf 100 User beschränkt und wird voraussichtlich 2 Wochen gehen.

Gesammelte Reputation und erhaltende Abzeichen bleiben natürlich erhalten. Zudem gibt es eine Beta-Badge, welche exklusive für aktive Teilnehmer vergeben wird. Sinn der Beta ist natürlich einen fehlerfreien Betrieb beim Final-Release zu gewährleisten. Deshalb sind wir jetzt auf eure Mithilfe angewiesen um alle Fehler zu finden, die es vielleicht doch in die Beta geschafft haben.

Für jedes Feedback oder melden von Bugs sind wir euch sehr dankbar.

Jetzt wünsche ich euch viel Spaß beim Erforschen der Seite und beim Wissensaustausch.

Viele Grüße und einen schönen Tag,
Felix

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Tags:

Fragen hat jeder. Wir haben Antworten!

Hi,

wie bereits angekündigt, haben wir aufregende Neuigkeiten für euch! Ich bin Marvin und werde euch jetzt erzählen was codekicker ist und was ihr damit machen könnt:

codekicker ist eine Webseite für Fragen und Antworten rund um das Thema Programmieren. Benutzer können Fragen stellen und Fragen von anderen beantworten, genau wie in einem Forum.

codekicker ist aber auch ein Wiki - Fragen und Antworten können von der Community editiert werden, um sie zu verbessern und Fehler zu beseitigen. So steigen Fragen mit der Zeit in ihrer Qualität und verlieren nie an Aktualität.

codekicker wird nicht von uns betrieben - wir machen nur die Technik. codekicker ist die Community aus Programmierern, die von Anderen lernen und ihr Wissen teilen möchten. Daher werden Fragen und Antworten auch nicht von uns moderiert oder zensiert. Das tut die Community selber!

F: "Jeder kann Beiträge editieren? Das gibt doch ein Chaos!"

A: Ja! Nein! Also... Nicht jeder kann editieren - dafür sind besondere Rechte nötig, die von der Community verliehen werden. Je mehr die Community einem Benutzer vertraut, desto mehr Rechte erhält er. Reputation ist unser Maß für Vertrauen: Stellt ein Benutzer eine gute Frage oder schreibt eine Antwort, die anderen gefällt, dann bewerten andere die Frage positiv oder negativ. Jeder hat pro Frage und Antwort genau eine Stimme. Der Autor eines derart bewerteten Posts erhält für jede positive Stimme 10 Einheiten Reputation, für jede negative verliert er 10 Einheiten. Reputation wird auch auf verschiedene andere Arten verliehen, über die wir noch bloggen werden.

Je mehr Reputation jemand sammelt, desto mehr Rechte erhält er:

15Positiv stimmen
50Antwort kommentieren
100Negativ stimmen
500Tags einer Frage ändern
2000Antworten editieren
10000Zugang zu Moderationstools

Die Reputation bildet also 1:1 ab, was andere von dir denken und wie viel Macht sie dir in die Hand legen wollen. Auf codekicker wirst du anhand deiner Taten gemessen!

Hands-On!

Du willst mitmachen? Auf codekicker.de haben wir die Beta für alle freigeschaltet, die teilnehmen wollen. Vielleicht siehst du ja schon eine spannende Frage, auf die du die Antwort kennst, oder du hast ein aktuelles Problem zur Programmierung. Die Chancen stehen gut, dass jemand anderes es bereits gelöst hat und dir hilft.

F: "Welche Fragen sind denn erlaubt?"

A: Absolut alle, sofern sie mit Programmieren zu tun haben. Damit codekicker für Programmierer am nützlichsten sein kann, müssen wir leider auf Fragen zu anderen Themengebieten verzichten, weil es einfach off-topic wäre.

Bitte postet echte Fragen, keine Test- oder Scherzfragen! Es sei denn natürlich, ihr wollt euch einen Downvote einfangen ;-)

Viele Grüße und bis bald,
Marvin

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Tags:

WWW – Was Wer Warum?

Marvin wird im Laufe des Tages die „Was ist Codekicker?“ Frage beantworten und kommende Woche werden wir uns zwei auch kurz vorstellen.

Das Warum gibt es jetzt erstmal von mir:

Also - folgende Situation kennt wohl jeder Programmierer:
Es gibt ein Problem, für das sich keine schnelle Lösung findet und auch Kollegen und Freunde sind ratlos. Wie versucht man eine gute Lösung zu finden?

Man befragt eine beliebige Suchmaschine und kann dann zwischen Foren, Blogs oder Fragen- und Antworten-Seiten wählen. Es gibt einige deutschsprachige Foren, die für Diskussionen auch gut geeignet sind, aber wenn es um schnelle Lösungsfindung geht, dauert die Antwort meist sehr lange oder es findet sich kein Experte, der antworten kann. Deutschsprachige Blogs gibt es leider nur sehr wenig. Fragen- und Antworten-Seiten speziell für Programmierer und in deutscher Sprache gibt es leider keine.

Mit codekicker möchten wir dieses Problem lösen.

Nun liegt das Was natürlich sehr nahe, deshalb verweise ich an dieser Stelle einfach mal auf Marvins Eintrag, den er in einigen Stunden posten wird.

Viele Grüße und einen schönen Tag,
Felix

Digg It!DZone It!StumbleUponTechnoratiRedditDel.icio.usNewsVineFurlBlinkList

Tags: