Compare commits

...
12 Commits
Author SHA1 Message Date
stefankoelle 2dc30200a1 removed all old dotnet kicks badges 2026-08-22 15:52:54 +02:00
stefankoelle 92248b5ad7 fix markdown 2026-08-22 15:44:49 +02:00
stefankoelle 646b30d91d TODO.md 2026-08-22 12:57:02 +02:00
stefankoelle abc6c54cf6 fix category/tags meta description 2026-08-22 12:55:20 +02:00
stefankoelle 6b1dfd43d3 fix alt texts 2026-08-22 12:52:16 +02:00
stefankoelle b6345be087 README.md 2026-08-22 12:16:25 +02:00
stefankoelle 83282a00a1 README.md 2026-08-22 12:13:05 +02:00
stefankoelle df465d34df AGENTS.md 2026-08-22 11:55:30 +02:00
stefankoelle 15fdec825a README.md 2026-08-22 11:49:28 +02:00
stefankoelle 4c697f1928 tags pages with description 2026-08-22 10:40:16 +02:00
stefankoelle 2452b7e108 title normalized 2026-08-22 10:12:20 +02:00
stefankoelle 9bf9059f39 category pages with description 2026-08-22 10:07:24 +02:00
86 changed files with 535 additions and 159 deletions
+2 -1
View File
@@ -24,7 +24,8 @@ final; nichts neu herunterladen.
gebaut sein (Links werden aus `public/` gelesen). `replacement`-Einträge
und manuell kuratierte `broken`-Einträge werden nie automatisch überschrieben;
403/429 (Bot-Schutz) und DNS/Timeout werden nicht als broken markiert.
- **Content** in `content/posts/*.md` und `content/_index.md` wird von Hand
- **Content** in `content/posts/*.md`, `content/_index.md`,
`content/categories/*/_index.md` und `content/tags/*/_index.md` wird von Hand
gepflegt. Titel sollen unter ~60 Zeichen bleiben.
- **SEO-Metadaten** werden zentral in `layouts/_default/baseof.html` erzeugt
(description/canonical/OG/Twitter). Keine Per-Post-Hardcodes außer nötig.
+166 -87
View File
@@ -1,161 +1,240 @@
# buildbroken-blog-archive
# 🏗️ buildbroken-blog-archive
Statisches Archiv des ehemaligen ".NET/build broken"-Blogs (`aztec-project.org/blog/`),
Statisches Archiv des ehemaligen **".NET/build broken"-Blogs** (`aztec-project.org/blog/`),
aufgebaut mit [Hugo](https://gohugo.io). Alle Inhalte stammen aus web.archive.org
Downloads und werden lokal gehostet (Bilder, CSS, Content).
Die Blogartikel unter `content/posts/` und die zugehörigen Bilder wurden
ursprünglich von den Autoren von "build broken" (aztec-project.org, 20092010)
geschrieben und werden hier ausschließlich zu persönlichen Archivierungszwecken
aufbewahrt. Das Urheberrecht verbleibt bei den ursprünglichen Autoren; die
MIT-Lizenz dieses Repositories gilt nur für den Code (Parser-Skripte,
Hugo-Templates und CSS), nicht für die archivierten Bloginhalte selbst.
> 💾 Die Blogartikel unter `content/posts/` und die zugehörigen Bilder wurden
> ursprünglich von den Autoren von "build broken" (aztec-project.org, 20092010)
> geschrieben und werden hier ausschließlich zu persönlichen Archivierungszwecken
> aufbewahrt. Das Urheberrecht verbleibt bei den ursprünglichen Autoren; die
> MIT-Lizenz dieses Repositories gilt nur für den Code (Parser-Skripte,
> Hugo-Templates und CSS), nicht für die archivierten Bloginhalte selbst.
## URL-Struktur
---
| Bereich | Alte URL (Wayback) | Neue lokale URL |
## 🔗 URL-Struktur
| 🏷️ Bereich | 🌐 Alte URL (Wayback) | 📍 Neue lokale URL |
|---|---|---|
| Startseite (inkl. About-Text) | `blog/blog.html` | `/` |
| About | `blog/about.html` | `/` (Text liegt auf der Startseite) |
| Blogartikel | `blog/<slug>.html` | `/posts/<slug>/` |
| Bilder | extern/beliebig | `/images/<slug>/<dateiname>` |
| CSS | Theme-CSS | `/css/style.css` |
| 🖼️ Bilder | extern/beliebig | `/images/<slug>/<dateiname>` |
| 🎨 CSS | Theme-CSS | `/css/style.css` |
`<slug>` ist der ursprüngliche Dateiname ohne `.html`, durch `python-slugify`
normalisiert (Kleinschreibung, Bindestriche). Beispiel:
`dotnet-openspace-leipzig-2009-buchung.html` -> `/posts/dotnet-openspace-leipzig-2009-buchung/`.
`dotnet-openspace-leipzig-2009-buchung.html` `/posts/dotnet-openspace-leipzig-2009-buchung/`.
Interne Links zwischen Artikeln werden vom Parser automatisch von
🔗 Interne Links zwischen Artikeln werden vom Parser automatisch von
`https://aztec-project.org/blog/xyz.html` auf `/posts/xyz/` umgeschrieben.
## Voraussetzungen
---
- [Hugo](https://gohugo.io/installation/) (extended oder normal reicht, kein Node nötig)
- Python 3.10+
- `pip install -r scripts/requirements.txt`
## 🛠️ Voraussetzungen
## Ordnerstruktur
- 🐢 [Hugo](https://gohugo.io/installation/) (extended oder normal reicht, kein Node nötig)
- 🐍 Python 3.10+
- 📦 `pip install -r scripts/requirements.txt`
---
## 📁 Ordnerstruktur
```
buildbroken-blog-archive/
├── hugo.toml # Hugo-Konfiguration
├── hugo.toml # ⚙️ Hugo-Konfiguration
├── content/
│ ├── _index.md # Startseite (About-Text liegt hier, kein eigenes /about/)
── posts/ # wird vom Parser mit *.md befüllt
├── layouts/ # eigenes Theme, angelehnt an das Original-Design
│ ├── _index.md # 🏠 Startseite (About-Text liegt hier, kein eigenes /about/)
── categories/ # 📂 pro Kategorie eine _index.md mit Einleitungstext
│ ├── tags/ # 🏷️ pro Tag eine _index.md mit Einleitungstext
│ └── posts/ # 📝 wird vom Parser mit *.md befüllt
├── layouts/ # 🎨 eigenes Theme, angelehnt an das Original-Design
│ ├── _default/baseof.html
│ ├── _default/single.html
│ ├── _default/list.html
│ ├── _default/term.html
│ └── index.html
├── static/
│ ├── css/style.css
│ └── images/<slug>/... # wird vom Parser befüllt
│ └── images/<slug>/... # 🖼️ wird vom Parser befüllt
├── archive/
│ └── wayback-html/ # HIER die heruntergeladenen Wayback-HTML-Dateien ablegen
│ └── wayback-html/ # 📥 HIER die heruntergeladenen Wayback-HTML-Dateien ablegen
├── scripts/
│ ├── parse_buildbroken_archive.py
│ └── requirements.txt
├── URLS.md # Liste aller zu parsenden Quell-URLs/Dateien
└── TODO.md # Arbeitsauftrag für die lokale KI
├── URLS.md # 📋 Liste aller zu parsenden Quell-URLs/Dateien
└── ...
```
## Ablauf
---
1. Alle Dateien aus `URLS.md` als HTML von web.archive.org herunterladen und
unter `archive/wayback-html/<dateiname>.html` ablegen (exakt gleicher Name).
2. Parser laufen lassen:
```bash
cd scripts
pip install -r requirements.txt
python parse_buildbroken_archive.py --source ../archive/wayback-html --output .. --download-images
```
> **Wichtig:** Der Parser soll **nicht mehr erneut ausgeführt** werden. Die
> generierten Artikel in `content/posts/*.md` wurden nachträglich manuell
> ausgebessert (Titel gekürzt, Tags korrigiert, `alt`-Attribute ergänzt,
> Links umgeschrieben). Ein erneuter Lauf würde diese Handarbeit überschreiben.
3. Lokale Vorschau:
```bash
cd ..
hugo server -D --bind 0.0.0.0 --baseURL http://<hostname>:1313/
```
`<hostname>` durch den Hostnamen des Rechners ersetzen (z. B. `xubuntu-dev.lan`).
4. Produktions-Build:
```bash
hugo --minify
```
Ergebnis liegt in `public/` und kann auf beliebigem statischen Hosting
(nginx-Container, Gitea Pages, GitHub Pages) deployt werden.
## 🚀 Ablauf
## Link-Status (tote Links kennzeichnen)
### 1⃣ HTML herunterladen
Externe Links in Artikeln und Kommentaren werden in `data/links.json` gepflegt
Alle Dateien aus `URLS.md` als HTML von web.archive.org herunterladen und
unter `archive/wayback-html/<dateiname>.html` ablegen (exakt gleicher Name).
### 2⃣ Parser laufen lassen
```bash
cd scripts
pip install -r requirements.txt
python parse_buildbroken_archive.py --source ../archive/wayback-html --output .. --download-images
```
> ⚠️ **Wichtig:** Der Parser soll **nicht mehr erneut ausgeführt** werden. Die
> generierten Artikel in `content/posts/*.md` wurden nachträglich manuell
> ausgebessert (Titel gekürzt, Tags korrigiert, `alt`-Attribute ergänzt,
> Links umgeschrieben. Ein erneuter Lauf würde diese Handarbeit überschreiben.
### 3⃣ Lokale Vorschau
```bash
cd ..
hugo server -D --bind 0.0.0.0 --baseURL http://<hostname>:1313/
```
`<hostname>` durch den Hostnamen des Rechners ersetzen (z. B. `xubuntu-dev.lan`).
### 4⃣ Produktions-Build
```bash
hugo --minify
```
🌍 Ergebnis liegt in `public/` und kann auf beliebigem statischen Hosting
(nginx-Container, Gitea Pages, GitHub Pages) deployt werden.
---
## 🔍 Link-Status (tote Links kennzeichnen)
🔗 Externe Links in Artikeln und Kommentaren werden in `data/links.json` gepflegt
und clientseitig (`static/js/link-status.js`) verarbeitet:
- **`broken`**: Die URL wird im Text normal angezeigt, aber beim Klick öffnet
- 🚫 **`broken`**: Die URL wird im Text normal angezeigt, aber beim Klick öffnet
sich ein kleines Modal "Diese URL scheint nicht mehr verfügbar zu sein" mit
einem Button zur Web-Archive-Version (`https://web.archive.org/web/*/<url>`).
- **`replacement`**: Die URL wird automatisch auf eine nachgewiesene
- 🔄 **`replacement`**: Die URL wird automatisch auf eine nachgewiesene
Nachfolge-URL umgeschrieben (z. B. `codinghorror.com``blog.codinghorror.com`).
### 🔧 Link-Checker
Der Link-Checker `scripts/check_links.py` prüft alle tatsächlich gerenderten
`<a href>`-Links und aktualisiert `data/links.json`:
```bash
.venv/bin/python scripts/check_links.py # prüfen + data/links.json aktualisieren
.venv/bin/python scripts/check_links.py --check-only # nur prüfen, nichts schreiben
.venv/bin/python scripts/check_links.py # 🔍 prüfen + data/links.json aktualisieren
.venv/bin/python scripts/check_links.py --check-only # 👀 nur prüfen, nichts schreiben
```
Verhalten des Checkers:
### ⚙️ Verhalten des Checkers
- Er liest die Links aus dem **gebauten** `public/` (vorher `hugo --minify`),
- 📖 Er liest die Links aus dem **gebauten** `public/` (vorher `hugo --minify`),
damit nur echte Links erfasst werden (Code-Beispiele/Platzhalter ignoriert).
- HTTP 403/429 (Bot-Schutz) und DNS-/Timeout-Fehler (ERR) werden **nicht**
- 🛡️ HTTP 403/429 (Bot-Schutz) und DNS-/Timeout-Fehler (ERR) werden **nicht**
als neu broken gemeldet; bestehende broken-Einträge bleiben erhalten,
solange die URL nicht eindeutig wieder mit 200 antwortet.
- Manuelle `replacement`-Einträge werden nie überschrieben.
- Das Skript ist idempotent: ein Lauf ohne Änderungen meldet "0 neu / 0 entfernt".
- ✏️ Manuelle `replacement`-Einträge werden nie überschrieben.
- 🔄 Das Skript ist idempotent: ein Lauf ohne Änderungen meldet "0 neu / 0 entfernt".
## Hosting (Cloudflare Pages, migriert in Workers)
---
## ☁️ Hosting (Cloudflare Pages, migriert in Workers)
Das Projekt wird über die Cloudflare-Pages-**Git-Integration** deployed
(Pages wurde inzwischen in den Workers-Bereich migriert, das Prinzip ist
unverändert):
1. **GitHub-Repo** anlegen und dieses Projekt hineinpushen.
2. In Cloudflare unter **Workers & Pages → Create application → Pages** den
1. 📦 **GitHub-Repo** anlegen und dieses Projekt hineinpushen.
2. ☁️ In Cloudflare unter **Workers & Pages → Create application → Pages** den
Tab **Import an existing Git repository** wählen und das Repo auswählen.
3. Build-Einstellungen hinterlegen:
3. ⚙️ Build-Einstellungen hinterlegen:
- **Framework preset:** Hugo
- **Build command (Bereitstellungsbefehl):** `hugo --minify`
Ein eigenes **Build output directory** kann bei Cloudflare Pages nicht
angegeben werden — es kommt aus der Hugo-Konfiguration (`publishDir` in
`hugo.toml`, Standard `public`).
4. Speichern. Es ist **kein Deploy-Befehl nötig**: Jeder Push auf den
- **Build command:** `hugo --minify`
- Ein eigenes **Build output directory** kann bei Cloudflare Pages nicht
angegeben werden — es kommt aus der Hugo-Konfiguration (`publishDir` in
`hugo.toml`, Standard `public`).
4. 💾 Speichern. Es ist **kein Deploy-Befehl nötig**: Jeder Push auf den
verbundenen GitHub-Branch (z. B. `main`) baut und deployed automatisch.
Die `wrangler.json` im Projekt-Root konfiguriert das Deployment:
- `name`: Projektname (`buildbroken-blog-archive`)
- `compatibility_date`: Datum der Cloudflare-Laufzeit
- `assets.directory`: `public` — das Hugo-Ausgabeverzeichnis, das bereitgestellt wird
- `assets.not_found_handling`: `404-page` — liefert die eigene `public/404.html` (statt eines generischen 404) für nicht gefundene Pfade
### ⚙️ wrangler.json
## SEO
Die `wrangler.json` im Projekt-Root konfiguriert das Deployment:
| Parameter | Wert | Beschreibung |
|---|---|---|
| `name` | `buildbroken-blog-archive` | 🏷️ Projektname |
| `compatibility_date` | Datum | 📅 Cloudflare-Laufzeit |
| `assets.directory` | `public` | 📂 Hugo-Ausgabeverzeichnis |
| `assets.not_found_handling` | `404-page` | 🔀 Eigene 404.html statt generischem 404 |
---
## 📈 SEO
Das Layout erzeugt für jede Seite automatisch SEO-Metadaten (zentral in
`layouts/_default/baseof.html`):
- `meta name="description"` (aus Frontmatter/`.Description`, sonst aus `.Summary`; für Taxonomie-, Autor- und Archiv-Seiten generisch formuliert, auf ~160 Zeichen gekürzt)
- `link rel="canonical"` mit der absoluten URL
- Open-Graph- und Twitter-Card-Tags (`og:type` article/website, `og:image` Banner, `twitter:card` summary_large_image)
- `<title>`: Tag- und Kategorie-Seiten werden differenziert (`MVC (Tag)` vs. `MVC (Kategorie)`), Länge auf ~60 Zeichen begrenzt
- 📝 `meta name="description"` (aus Frontmatter/`.Description`, sonst aus `.Summary`)
- 🔗 `link rel="canonical"` mit der absoluten URL
- 🐦 Open-Graph- und Twitter-Card-Tags (`og:type`, `og:image`, `twitter:card`)
- 🏷️ `<title>`: Tag- und Kategorie-Seiten werden differenziert (`MVC (Tag)` vs. `MVC (Kategorie)`), Länge auf ~60 Zeichen begrenzt
Außerdem:
### 🏠 Startseite
- Eigene `layouts/_default/404.html`, die via `assets.not_found_handling: "404-page"` von Cloudflare ausgeliefert wird
- `robots.txt` verweist auf `sitemap.xml` (Hugo-generiert)
- Content-Bilder in `content/posts/*.md` tragen `alt`-Attribute; der dekorative Banner hat bewusst leeres `alt=""`
Für die Startseite wird ein eigener `<title>` über `params.homeTitle` in
`hugo.toml` konfiguriert (statt nur dem bloginfo `title`). Die Description
der Startseite kommt aus `params.description`.
## Layout anpassen
### ✅ Zusätzlich
- 🔀 Eigene `layouts/_default/404.html`, die via `assets.not_found_handling` von Cloudflare ausgeliefert wird
- 🤖 `robots.txt` verweist auf `sitemap.xml` (Hugo-generiert)
- 🖼️ Content-Bilder in `content/posts/*.md` tragen `alt`-Attribute; der dekorative Banner hat bewusst leeres `alt=""`
---
## 📂 Kategorien & Tags
Kategorie- und Tag-Seiten können individuelle Einleitungstexte haben. Dafür
legt man in `content/categories/<name>/_index.md` bzw. `content/tags/<name>/_index.md`
eine Datei mit Front Matter und Body-Text an:
```markdown
---
title: "Clean Code Developing"
---
Die Grundlage unserer Arbeit: SOLID, DRY, Refactoring und professionelle Software-Entwicklung.
```
Der `title` in der Front Matter bestimmt die `<h2>`-Überschrift auf der Seite.
**Wichtig:** Die Groß-/Kleinschreibung muss korrekt sein (z. B. `C#`, `MVC`,
`Visual Studio`), da Hugo den slug automatisch kleinschreibt (URL: `/tags/c#/`).
Der Body-Text wird als `<div class="archive-intro">` zwischen Überschrift und
Artikelliste gerendert (via `layouts/_default/term.html`). Ohne Body-Text
wird kein `<div>` generiert — die Seiten funktionieren auch ohne Einleitungstexte.
**Aktuelle Kategorien (17):** Architektur, BarCamp, Clean Code Developing, How-To,
MVC, Open Space, Pattern, prio.conference, Release, Scrum, StupidDB, Tipps,
Unit Testing, Veranstaltung, Visual Studio Addins, Webanwendungen, Webservice.
**Aktuelle Tags (43):** Addin, Architektur, ASP-Classic, Assemblies, Assembly,
Basics, Buch, Buchempfehlung, C#, CCD, Clean Code, Coding, Community,
Contract-First, Datenbank, Datenschutz, Facebook, HowTo, HTML, MVC, MVP,
NoSQL, Open Space, Patterns, Plug-In, prio.conference, Refaktorisierung,
Reflection, Schemalos, SCRUM, Social Web, Sonne, Sourcecode, StupidDB,
Unit Tests, Veranstaltung, Visual Studio, Webapplication, WebCamp, WebCast,
Webservice, WinForms, Wordpress.
---
## 🎨 Layout anpassen
Alle Design-Änderungen passieren zentral in `layouts/_default/*.html` und
`static/css/style.css`. Nach einer Änderung reicht `hugo --minify`, um alle
+21
View File
@@ -0,0 +1,21 @@
# TODO.md
Offene Punkte und Ideen für zukünftige Verbesserungen.
---
## Hugo-Upgrade
- [ ] `.Site.Data``hugo.Data` in `baseof.html:110` anpassen (Deprecation-Warnung bei jedem Build)
## Content
- [x] ~~Ggf. fehlende `alt`-Attribute bei Bildern in Posts prüfen~~ — alles OK, Smiley-Icons auf `alt=""` bereinigt
## SEO / Metadaten
- [x] ~~`og:description` für Kategorie-/Tag-Seiten prüfen~~`.Content` aus `_index.md` wird jetzt als Meta-Description verwendet
---
*Zuletzt aktualisiert: 2026-08-22*
+5
View File
@@ -0,0 +1,5 @@
---
title: "Architektur"
---
Von Softwarezellen über Design by Contract bis zu asynchronen Kommunikationsmuster — hier dreht sich alles um Struktur, Verträge und den klaren Aufbau komplexer Software.
+5
View File
@@ -0,0 +1,5 @@
---
title: "BarCamp"
---
Unsere Eindrücke und Berichte von BarCamps — von dezentralen sozialen Web-Protokollen bis hin zu Datenschutz-Diskussionen.
@@ -0,0 +1,5 @@
---
title: "Clean Code Developing"
---
Die Grundlage unserer Arbeit: SOLID, DRY, Refactoring und professionelle Software-Entwicklung. Von der Theorie bis zur Praxis im Alltag — hier sammeln wir alles rund um den Clean Code Developer.
+5
View File
@@ -0,0 +1,5 @@
---
title: "How-To"
---
Praktische Anleitungen für den Alltag: Reflection, dynamisches Assembly-Laden, Plug-In-Architekturen, anonyme Datentypen und Testbarkeit in .NET.
+5
View File
@@ -0,0 +1,5 @@
---
title: "MVC"
---
Erfahrungsberichte und Implementierungsbeispiele zu ASP.NET MVC und dem Model-View-Presenter-Pattern in WinForms.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Open Space"
---
Eindrücke von .NET Open Spaces in Leipzig und Ulm — unkonferenzartige Formate mit intensiven Diskussionen und direktem Austausch in der Community.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Pattern"
---
Entwurfsmuster in der Praxis — hier vor allem das Async-Pattern für saubere asynchrone Kommunikation in .NET-Anwendungen.
@@ -0,0 +1,5 @@
---
title: "prio.conference"
---
Tagungsbericht von der prio.conference 2009 in München — mit Sessions zu UI-Entwicklung, Usability und agiler Softwareentwicklung.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Release"
---
Vorstellung unseres Open-Source-Frameworks StupidDB zur einfachen Objektpersistierung auf dem Dateisystem.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Scrum"
---
Reflexion über unsere eigene SCRUM-Einführung — was lief gut, was lief anders, und warum „Scrumbut" kein Schimpfwort ist.
+5
View File
@@ -0,0 +1,5 @@
---
title: "StupidDB"
---
StupidDB — unser schemaloser Objektspeicher für .NET. Von der ersten Idee über die Implementierung bis hin zu NoSQL-Konzepten.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Tipps"
---
Nützliche Empfehlungen und konkrete Tipps — von hilfreichen WebCasts bis zu Mustern für asynchrone Kommunikation.
@@ -0,0 +1,5 @@
---
title: "Unit Testing"
---
Strategien und Workarounds für Unit-Tests in der Praxis — insbesondere bei nicht-öffentlichen Methoden und in WebForms-Umgebungen.
@@ -0,0 +1,5 @@
---
title: "Veranstaltung"
---
Berichte von Veranstaltungen und Workshops — wie dem zweitägigen Microsoft WebCamp in München zu MVC2, Entity Framework und jQuery.
@@ -0,0 +1,5 @@
---
title: "Visual Studio Addins"
---
Nützliche Tools und Add-ins für Visual Studio — wie „Copy Source As HTML" für formatierte Code-Übertragung in Dokumentation und Blogs.
@@ -0,0 +1,5 @@
---
title: "Webanwendungen"
---
Ansätze zur Testbarkeit und Architektur von ASP.NET WebForms — mit Schichtenarchitektur und Workarounds für bessere Unit-Tests.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Webservice"
---
Technische Anleitungen zur SOAP-Kommunikation — wie der sichere Austausch zwischen ASP-Classic und .NET-Webservices funktioniert.
+2 -4
View File
@@ -18,15 +18,13 @@ Was wohl langfristig nötig ist, dass wir uns über den Grundgedanken von ALT.NE
Seht ihr ähnliche Tendenzen wie Jeremy in der deutschen Community?
<img src="/images/alt-net-energien/KickItImageGenerator.ashx" alt="kick it on dotnet-kicks.de"/>
## Kommentare (Archiv)
1. **Christina Hirth**
[August 27, 2009 um 7:45 pm](/posts/alt-net-energien/)
Es scheint, dass ALT.NET die FDP der Softwareentwicklungswelt ist: die Opposition von der (gefühlten) Herrschaft vom Microsoft <img src="/images/alt-net-energien/icon_wink.gif" alt=";)" class="wp-smiley"/> Und als solche, ist seine Rolle unabdingbar!
Es scheint, dass ALT.NET die FDP der Softwareentwicklungswelt ist: die Opposition von der (gefühlten) Herrschaft vom Microsoft <img src="/images/alt-net-energien/icon_wink.gif" alt="" class="wp-smiley"/> Und als solche, ist seine Rolle unabdingbar!
Das heißt aber noch lange nicht, dass alles was die (CSU) Microsoft tut BÖSE ist, auch wenn sie jedem Amateur das Programieren ermöglichen. Ich meine, Dreamweaver hatte bereits vor 10 Jahren fertige Codeschnipsel für Datenbankanbindung bereitgestellt aber man musste den NICHT nutzen, man konnte es auch selbst ausprogrammieren. Also anders gesagt: keine zwingt dich, oder?
Eins ist sicher: es gibt den Heiligen Gral der Softwareentwicklung noch nicht. Und das bedeutet, man sollte alles mit Obacht genießen und sich vergewissern, dass der gewählte Weg zu dem bestimmten Projekt und zu dem bestimmten Team passt. Dann kann man auch den richtigen Code schreiben und danach ruhig schlafen, egal ob es um Microsoft-Framework oder um Castle-AddOns geht. Und die Amateur-Coder werden ihrer Arbeit nicht lange verkaufen können, wenn diese unpflegbar und unwartbar ist.
@@ -39,7 +37,7 @@ Seht ihr ähnliche Tendenzen wie Jeremy in der deutschen Community?
Praktisches Beispiel: DataReader, DataSet, TypedDataset, xDataSource, LINQ to SQL oder Entity Framework das alles in nicht einmal 6 Jahren. Jeweils für “the next big thing” verkauft oder gepriesen. Jetzt kann ich hergehen und jedes Mal den aktuellsten Liebling verkaufen und preisen, oder ich greife ganz pragmatisch eben zu dem für mich gerade besten und kapsele es einfach in einem Repository, so dass es beliebig austauschbar ist. Um dahin zu kommen, muss man sich aber ein paar Gedanken rund um seinen Code bzw. die Architektur des selben machen und eben nicht alles ungeprüft nachplappern oder die unsäglichen Beispiele übernehmen. Das versetzt mich dann gleichzeitig auch mal in die Lage zu sagen, dass das Entity Framework eben immer noch scheiße ist, dass die ASP.NET-MVC-Sample-Apps zusammengestümpert sind usw. Und im Übrigen macht es MS selbst auch ein ganzes Stück besser, da sie wohl nirgendwo so schonungsloses Feedback für ihre eigenen Produkte bekommen. Von den “Zusammenklickern” können sie das jedenfalls nicht erwarten.
War das jetzt eigentlich noch die Frage? Egal, ich drücke einfach mal den Absenden-Button <img src="/images/alt-net-energien/icon_wink.gif" alt=";-)" class="wp-smiley"/> .
War das jetzt eigentlich noch die Frage? Egal, ich drücke einfach mal den Absenden-Button <img src="/images/alt-net-energien/icon_wink.gif" alt="" class="wp-smiley"/> .
3. **Stefan Kölle**
[August 31, 2009 um 7:28 pm](/posts/alt-net-energien/)
-2
View File
@@ -140,8 +140,6 @@ return number \* number;
}
<img src="/images/async-refactored/KickItImageGenerator.ashx" alt="kick it on dotnet-kicks.de"/>
## Kommentare (Archiv)
1. <img src="/images/async-refactored/3e7b6cb163ea9cc8549abcb8b5a03e2e.jpeg" width="32" height="32" class="avatar avatar-32 photo" alt="Avatar"/> **[Ralf Westphal](http://ralfw.blogspot.com/)**
-2
View File
@@ -181,8 +181,6 @@ Sobald die Berechnung abgeschlossen ist, wird der Thread mit dem MainThread übe
24 }
<img src="/images/async/KickItImageGenerator.ashx" alt="kick it on dotnet-kicks.de"/>
## Kommentare (Archiv)
1. <img src="/images/async/3e7b6cb163ea9cc8549abcb8b5a03e2e.jpeg" width="32" height="32" class="avatar avatar-32 photo" alt="Avatar"/> **[Ralf Westphal](http://ralfw.blogspot.com/)**
@@ -25,8 +25,6 @@ Der Code, den ein Entwickler schreibt, gehört meistens nicht ihm. Ich bin siche
Nimmt eure Arbeit ernst und werdet ein professioneller Entwickler. Ihr werdet nach kürzester Zeit die Freude an einem korrekten und qualitativen Code entdecken und auch eure Teamkollegen und Chefs werden dafür dankbar sein.
<img src="/images/clean-code-developer-yellow-brick-road/KickItImageGenerator.ashx" alt="kick it on dotnet-kicks.de"/>
## Kommentare (Archiv)
1. **[build broken » Clean Code Teil 1](/posts/cleancode1/)**
+4 -6
View File
@@ -94,8 +94,6 @@ Clean Tests folgen noch 5 anderen Regeln:
Teil 2 gibt es [hier](/posts/cleancode2/)
<img src="/images/cleancode1/KickItImageGenerator.ashx" alt="kick it on dotnet-kicks.de"/>
## Kommentare (Archiv)
1. **Christina**
@@ -108,21 +106,21 @@ Teil 2 gibt es [hier](/posts/cleancode2/)
Was das KATEGORISCHE Abweisen von Kommentaren betrifft, kann ich wirklich nicht einverstanden sein. Ich kann mir Millionen von Fällen vorstellen, wo ein Name nicht aussagend genug sein kann. aber ich finde auch, dass Namen genau so wichtig sind wie DRY oder The Boy Scout Rule.
Bin schon auf die Fortsetzung gespannt <img src="/images/cleancode1/icon_smile.gif" alt=":)" class="wp-smiley"/>
Bin schon auf die Fortsetzung gespannt <img src="/images/cleancode1/icon_smile.gif" alt="" class="wp-smiley"/>
2. **[Peter Bucher](http://www.aspnetzone.de/blogs/peterbucher/)**
[August 11, 2009 um 7:45 pm](/posts/cleancode1/)
Salute Andreas
Coole Zusammenfassung, gefällt mir gut <img src="/images/cleancode1/icon_smile.gif" alt=":-)" class="wp-smiley"/> .
Coole Zusammenfassung, gefällt mir gut <img src="/images/cleancode1/icon_smile.gif" alt="" class="wp-smiley"/> .
Ein paar Anmerkungen bzw. Ergänzungen:
Das Buch “Clean Code” ist extra extrem und provokant geschrieben, es soll provozieren.
Man sollte nicht alles 1:1 übernehmen und als bare Münze hinnehmen, sondern nur das und soviel wie es Sinn macht.
Mit den Kommentaren sind nicht die JavaDocs / XmlDocs von C# / VB.NET gemeint. API Dokumentation ist nach wie vor sehr wichtig und hilfreich und sollte benutzt und aktualisiert werden.
Stell dir nur mal ein .NET Framework ohne Intellisense-Kommentare vor <img src="/images/cleancode1/icon_smile.gif" alt=":-)" class="wp-smiley"/> .
Stell dir nur mal ein .NET Framework ohne Intellisense-Kommentare vor <img src="/images/cleancode1/icon_smile.gif" alt="" class="wp-smiley"/> .
Zu dont`t return null / don`t pass null muss ich sagen, das Clean Code auf Java fokusiert ist und das dort anders sein
kann. Man sollte null mit Bedacht und Strategie einsetzen, so eine pauschale Aussage kann ich aber für C# nicht gelten lassen.
@@ -144,7 +142,7 @@ Teil 2 gibt es [hier](/posts/cleancode2/)
Aber müssen wir denn jetzt alle um jeden Preis nach den Empfehlungen des Buches “Clean Code” von Robert C. Martin unseren Code umschreiben? Nein, ich denke, manchmal ist es viel vernünftiger seinem Stil treu zu bleiben. Dennoch kann man dabei funktionellen, sauberen, lesbaren Code schreiben.
Wenn ich lese, dies und das ist “böse” und “verboten”, dann hat das etwas von “Bibel”, wo ich mich dann frage, wer gibt hier wem das Recht, Dinge als “verboten” zu deklarieren.
Also man sollte bei aller Clean-Code Diskussion immer das Ziel nicht aus den Augen verlieren und vor allem auf dem Teppich bleiben. <img src="/images/cleancode1/icon_wink.gif" alt=";-)" class="wp-smiley"/>
Also man sollte bei aller Clean-Code Diskussion immer das Ziel nicht aus den Augen verlieren und vor allem auf dem Teppich bleiben. <img src="/images/cleancode1/icon_wink.gif" alt="" class="wp-smiley"/>
Grüße aus dem Frankenland.
+1 -3
View File
@@ -105,9 +105,7 @@ In diesem Kapitel zeigt Uncle Bob eine Liste von Smells und wie man sie beseitig
**Zusammenfassung**
An dieser Stelle ein Dank an mein Entwicklerteam, dass ich das Buch so lange in Beschlag nehmen durfte <img src="/images/cleancode2/icon_smile.gif" alt=":)" class="wp-smiley"/> (Teil 2 ging irgendwie zäher). Einen großen Dank auch an [Peter Bucher](http://www.aspnetzone.de/blogs/peterbucher/) und [Rene Drescher-Hackel](http://weblog.drescher-hackel.de/) für ihre Ergänzungen bzw. Einwände. Man darf sicherlich nicht alles so ganz ernst nehmen und man kann es auch übertreiben (siehe Pyramiden etc.). Natürlich sollte man nicht blind durch die Welt laufen, sondern auch Dinge hinterfragen, aber man muss sagen, dass die Punkte von [CCD](http://www.clean-code-developer.de/) (das ja auf diesem Buch beruht) durchaus plausibel sind. Ich denke schon, dass [CCD](http://www.clean-code-developer.de/) unerfahrenen aber auch erfahrenen Entwicklern einen SOLIDen Weg zeigt, den man gehen kann und der sogar schon gepflastert ist. Man kann sich natürlich auch mit der Machete durch dichten Dschungel schlagen, was natürlich cool ist <img src="/images/cleancode2/icon_smile.gif" alt=":)" class="wp-smiley"/> aber halt wesentlich langsamer. Es sei denn man ist Chuck Norris.
<img src="/images/cleancode2/KickItImageGenerator.ashx" alt="kick it on dotnet-kicks.de"/>
An dieser Stelle ein Dank an mein Entwicklerteam, dass ich das Buch so lange in Beschlag nehmen durfte <img src="/images/cleancode2/icon_smile.gif" alt="" class="wp-smiley"/> (Teil 2 ging irgendwie zäher). Einen großen Dank auch an [Peter Bucher](http://www.aspnetzone.de/blogs/peterbucher/) und [Rene Drescher-Hackel](http://weblog.drescher-hackel.de/) für ihre Ergänzungen bzw. Einwände. Man darf sicherlich nicht alles so ganz ernst nehmen und man kann es auch übertreiben (siehe Pyramiden etc.). Natürlich sollte man nicht blind durch die Welt laufen, sondern auch Dinge hinterfragen, aber man muss sagen, dass die Punkte von [CCD](http://www.clean-code-developer.de/) (das ja auf diesem Buch beruht) durchaus plausibel sind. Ich denke schon, dass [CCD](http://www.clean-code-developer.de/) unerfahrenen aber auch erfahrenen Entwicklern einen SOLIDen Weg zeigt, den man gehen kann und der sogar schon gepflastert ist. Man kann sich natürlich auch mit der Machete durch dichten Dschungel schlagen, was natürlich cool ist <img src="/images/cleancode2/icon_smile.gif" alt="" class="wp-smiley"/> aber halt wesentlich langsamer. Es sei denn man ist Chuck Norris.
## Kommentare (Archiv)
@@ -146,4 +146,3 @@ Assert .That( m_message, Is .EqualTo( "Postcondition failed: bill.Id > 0" ) )
Ich hoffe, das Beispiel ist ausführlich genug, um die Vorteile von DbC zu highlighten. [Stefan](http://www.lieser-online.de/blog/), vielen dank noch mal für den Artikel, ich habe mich natürlich von dir inspirieren lassen.
<img src="/images/design-by-contract-teil2/KickItImageGenerator.ashx" alt="kick it on dotnet-kicks.de"/>
+2 -4
View File
@@ -17,9 +17,7 @@ Wikipedia definiert DbC folgendermaßen:
[Stefan Lieser](http://www.lieser-online.de/blog/) hat über das neue Konzept einen sehr guten Artikel in [www.visualstudio1.de](http://www.visualstudio1.de/) geschrieben, mit Begriffsklärung und Anwendungsbeispiele. Kurz zusammengefasst ist die Rede von Folgendem: anstelle, dass man in jeder Methode auf not-null or not-empty usw. prüft, schreibt man die Erwartungen als Code hin. Diese werden von Tools wie z.B. Resharper erkannt und bei fehlerhaften Aufruf der Methode, wird der Entwickler gewarnt. Am besten finde ich, dass man den Kontrakt-Code z.B. für einen Interface in eine separate Klasse schreiben kann und diese wird durch Attribute (`ContractClassFor`) gefunden. Also wird dadurch der eigentliche Code nicht größer.
Das soll nicht bedeuten, dass der Entwickler der Methode die Verantwortung von sich schiebt <img src="/images/design-by-contract/icon_wink.gif" alt=";)" class="wp-smiley"/> , sondern dass er Bedingungen der “Nutzung” offenlegt, Informationen, die bisher nur durch das Anschauen des Codes oder durch mündliche/schriftliche Mitteilung möglich war. Mit **Spec#** kann man die **Intention-Revealing Interfaces** ganz genau schreiben: mit veröffentlichten und kompilierten Bedingungen.
<img src="/images/design-by-contract/KickItImageGenerator.ashx" alt="kick it on dotnet-kicks.de"/>
Das soll nicht bedeuten, dass der Entwickler der Methode die Verantwortung von sich schiebt <img src="/images/design-by-contract/icon_wink.gif" alt="" class="wp-smiley"/> , sondern dass er Bedingungen der “Nutzung” offenlegt, Informationen, die bisher nur durch das Anschauen des Codes oder durch mündliche/schriftliche Mitteilung möglich war. Mit **Spec#** kann man die **Intention-Revealing Interfaces** ganz genau schreiben: mit veröffentlichten und kompilierten Bedingungen.
## Kommentare (Archiv)
@@ -39,7 +37,7 @@ Das soll nicht bedeuten, dass der Entwickler der Methode die Verantwortung von s
Hallo Rainer,
danke für den Hinweis, das ist mir schon bekannt. Steht auch in den o.g. Artikel, den ich hier nicht abschreiben wollte, er ist ja nicht von mir <img src="/images/design-by-contract/icon_smile.gif" alt=":)" class="wp-smiley"/> . Außerdem würde ich ja nie über Code schreiben, den ich selbst nicht ausprobiert habe, also ist es klar, dass es jetzt schon geht.
danke für den Hinweis, das ist mir schon bekannt. Steht auch in den o.g. Artikel, den ich hier nicht abschreiben wollte, er ist ja nicht von mir <img src="/images/design-by-contract/icon_smile.gif" alt="" class="wp-smiley"/> . Außerdem würde ich ja nie über Code schreiben, den ich selbst nicht ausprobiert habe, also ist es klar, dass es jetzt schon geht.
Der andere Grund, warum ich das nicht speziell erwähnt habe, ist, dass es z.Z. zwar möglich ist, das Konzept anzuwenden, aber die Unterstützung seitens VS fehlt, es sei denn, du nutzt TSF.
Mir ging es eigentlich darum, dass es endlich möglich ist, Anforderungen als Code zu implementieren und als solche schriftlich festhalten, verfolgen und auswerten.
@@ -11,7 +11,7 @@ tags: ["Community", "Open Space", "Veranstaltung"]
Wir haben es gerade geschafft, die ganzen Infos vom .NET Open Space Süd zu ordnen, und schon ging es mit der Anmeldung für den nächsten [Open Space in Leipzig](http://netopenspace.de/2009/) los!
Der Andrang war so groß, dass innerhalb von ein paar Tagen die Teilnehmerliste voll wurde.
Nach meiner Erfahrungen in [Ulm](/categories/open-space/), kann ich das voll verstehen, da wird einem das Wissen mit goldenem Löffel serviert <img src="/images/dotnet-openspace-leipzig-2009-buchung/icon_wink.gif" alt=";)" class="wp-smiley"/> Und man darf auch noch selbst bestimmen, über welches Thema und wie detailliert man erfahren möchte. Und das von den besten Köpfen der Branche, eventuell sogar neben einem Bier, was möchte man/frau mehr ??
Nach meiner Erfahrungen in [Ulm](/categories/open-space/), kann ich das voll verstehen, da wird einem das Wissen mit goldenem Löffel serviert <img src="/images/dotnet-openspace-leipzig-2009-buchung/icon_wink.gif" alt="" class="wp-smiley"/> Und man darf auch noch selbst bestimmen, über welches Thema und wie detailliert man erfahren möchte. Und das von den besten Köpfen der Branche, eventuell sogar neben einem Bier, was möchte man/frau mehr ??
Unter dem Titel Agenda steht folgendes:
@@ -21,6 +21,6 @@ Unter dem Titel Agenda steht folgendes:
> \* erachtest du dein Thema als wichtig, nimmst du eine mögliche Diskussion selbst in die Hand und findest interessierte Teilnehmer
> \* die Agenda wird von den Teilnehmenden zum Beginn des .NET Open Space selbst erstellt
Wir haben heute unsere Zimmer reserviert, Betten verteilt <img src="/images/dotnet-openspace-leipzig-2009-buchung/icon_wink.gif" alt=";)" class="wp-smiley"/> . Mit einem Wort: wir sind bereit!
Wir haben heute unsere Zimmer reserviert, Betten verteilt <img src="/images/dotnet-openspace-leipzig-2009-buchung/icon_wink.gif" alt="" class="wp-smiley"/> . Mit einem Wort: wir sind bereit!
Kommst du mit?
@@ -13,7 +13,7 @@ Es ist soweit, morgen geht es los: unsere erste [Open Space Veranstaltung](http:
Wir fahren zu viert hin, alle sehr gespannt und erwartungsvoll, mit sehr viele Fragen in den Taschen.
Ich habe auch noch eine geheime Frage, worauf ich eine Antwort finden hoffe: warum sind außer mir keine Frauen dabei !! <img src="/images/dotnet-openspace-sued-2009-buchung/icon_smile.gif" alt=":)" class="wp-smiley"/>
Ich habe auch noch eine geheime Frage, worauf ich eine Antwort finden hoffe: warum sind außer mir keine Frauen dabei !! <img src="/images/dotnet-openspace-sued-2009-buchung/icon_smile.gif" alt="" class="wp-smiley"/>
## Kommentare (Archiv)
+5 -4
View File
@@ -14,12 +14,13 @@ Wir sind zu viert früh morgens in München aufgebrochen, um bei unserer ersten
Da wir eine relativ lange Anfahrt hatten, waren fast alle schon da, als wir ankamen. Es waren um die 60 Leute.
Während der Vorstellungsrunde haben wir gemerkt, dass das Open Space nicht nur von Gurus besucht wird, sondern auch von Einsteigern. Wir hatten befürchtet, dass wir dort fehl am Platz sind, da wir relativ neu in der .NET-Community sind und noch relativ wenig Wissen weitergeben können. Aber wir wurden freundlich aufgenommen und können Jedem nur empfehlen, beim nächsten Mal dort hinzugehen. Einen schnelleren Weg, Wissen aufzubauen, gibt es nicht!
Falls sich jemand nicht mehr an uns erinnert, hier ein Bild von uns <img src="/images/dotnet-openspace-sued-2009/icon_smile.gif" alt=":)" class="wp-smiley"/>
Falls sich jemand nicht mehr an uns erinnert, hier ein Bild von uns <img src="/images/dotnet-openspace-sued-2009/icon_smile.gif" alt="" class="wp-smiley"/>
<img src="/images/dotnet-openspace-sued-2009/16787936.jpg" alt="Foto vom Open Space Süd 2009"/>
(von links nach rechts: [Andreas Seebauer](http://www.xing.com/profile/Andreas_Seebauer2), [Stefan Kölle](http://www.xing.com/profile/Stefan_Koelle), [Thomas Christian](http://www.xing.com/profile/Thomas_Christian9), [Christina Hirth](http://www.xing.com/profile/Christina_Hirth2))
Es gab zwar keine vorher festgelegten Themen, aber diese wurden vor Ort vorgeschlagen und danach demokratisch bestimmt. Es wurden sehr interessante Bereiche besprochen, aber leider konnte man nicht in jeden Open Space gleichzeitig. <img src="/images/dotnet-openspace-sued-2009/icon_smile.gif" alt=":)" class="wp-smiley"/>
Es gab zwar keine vorher festgelegten Themen, aber diese wurden vor Ort vorgeschlagen und danach demokratisch bestimmt. Es wurden sehr interessante Bereiche besprochen, aber leider konnte man nicht in jeden Open Space gleichzeitig. <img src="/images/dotnet-openspace-sued-2009/icon_smile.gif" alt="" class="wp-smiley"/>
Für uns am interessantesten waren:
MVC, DDD, IoC und DI (danke an [Albert](http://der-albert.com/), [Markus](http://mortslikeus.blogspot.com/), [Thomas](http://blog.thomasbandt.de/), [Peter](http://www.aspnetzone.de/blogs/peterbucher/), [Stefan](http://lieser-online.de/) und [Sergey](http://shishkin.org/))
@@ -33,9 +34,9 @@ Am Sonntag hat uns besonders die Clean-Code-Development-Runde gefallen. Wir sind
Die Organisation war einwandfrei. Das Essen war lecker und Getränke waren massenhaft vorhanden. Danke an [Thomas](http://www.artiso.com/problog/) und [Alex](http://blog.alexonasp.net/).
Raum 5 war auch das absolute Highlight. Es war immer sehr entspannend da oben.
Leider haben wir die Party verpasst, da wir nicht dort übernachtet haben. Wir hätten zu gerne Alberts Bauchtanz gesehen. <img src="/images/dotnet-openspace-sued-2009/icon_smile.gif" alt=":)" class="wp-smiley"/>
Leider haben wir die Party verpasst, da wir nicht dort übernachtet haben. Wir hätten zu gerne Alberts Bauchtanz gesehen. <img src="/images/dotnet-openspace-sued-2009/icon_smile.gif" alt="" class="wp-smiley"/>
Beim Gewinnspiel hat natürlich Stefan den Hauptpreis (eine Telerik-Lizenz) gewonnen. <img src="/images/dotnet-openspace-sued-2009/icon_smile.gif" alt=":)" class="wp-smiley"/>
Beim Gewinnspiel hat natürlich Stefan den Hauptpreis (eine Telerik-Lizenz) gewonnen. <img src="/images/dotnet-openspace-sued-2009/icon_smile.gif" alt="" class="wp-smiley"/>
Auch einen Tag nach dem .NET Open Space Süd sind wir immer noch voller Begeisterung und müssen das Erlernte erst einmal verarbeiten. Für uns ist jetzt schon klar, dass wir unbedingt beim nächsten Mal wieder dabei sein wollen.
+2 -4
View File
@@ -45,8 +45,6 @@ Mit dieser Beispielanwendung kann man eine mögliche Implementierung von Model V
Anhang:
[Kompletter Sourcecode der Beispielanwendung als ZIP](/assets/TwitterClient.zip)
<img src="/images/mvp-winforms/KickItImageGenerator.ashx" alt="kick it on dotnet-kicks.de"/>
## Kommentare (Archiv)
1. **[Jan Selke](http://jcselke.blogspot.com/)**
@@ -54,7 +52,7 @@ Anhang:
[Februar 16, 2010 um 9:19 am](/posts/mvp-winforms/)
Hallo,
ich finde die Anwendung sehr schön und es sind die Eine oder Andere Anregung für mich auch enthalten <img src="/images/mvp-winforms/icon_smile.gif" alt=":-)" class="wp-smiley"/> .
ich finde die Anwendung sehr schön und es sind die Eine oder Andere Anregung für mich auch enthalten <img src="/images/mvp-winforms/icon_smile.gif" alt="" class="wp-smiley"/> .
Die Konfiguration über Xml würde ich vielleicht noch versuchen zu eliminieren, es wird ja schönes Benennungsmuster eingehalten (CoC).
Ich habe es zwar noch nicht laufen lassen, es sah aber im TimelinePresenter so aus, als wenn noch ein versehentliches Verlassen verhindert werden könnte…
Viele Grüße,
@@ -81,7 +79,7 @@ Anhang:
Zu dem versehentlichen Verlassen:
Ich habe vor Kurzem etwas über das “graceful exit” einer Anwendung gelesen. Deine Anwendung hatte ich nicht gestartet, sondern mir nur den Quellcode quergelesen. Dabei ist mir aufgefallen, dass nur ein Application.Exit beim Close ausgeführt wird, der Anwender erhält keine Chance doch in der Anwendung zu bleiben. Eventuell habe ich es auch einfach nicht gesehen (habe es ja auch nicht laufen lassen)…
Soll kein Mäkeln an Kleinigkeiten sein, sondern eher ein Beispiel dafür, dass mir die Anwendung recht gut gefällt. <img src="/images/mvp-winforms/icon_wink.gif" alt=";-)" class="wp-smiley"/>
Soll kein Mäkeln an Kleinigkeiten sein, sondern eher ein Beispiel dafür, dass mir die Anwendung recht gut gefällt. <img src="/images/mvp-winforms/icon_wink.gif" alt="" class="wp-smiley"/>
Viele Grüße,
Jan
+1 -1
View File
@@ -63,6 +63,6 @@ Vielen Dank
Hallo Sebastian,
das könnte durchaus der Fall gewesen sein. <img src="/images/prio-conference-2009/icon_wink.gif" alt=";)" class="wp-smiley"/>
das könnte durchaus der Fall gewesen sein. <img src="/images/prio-conference-2009/icon_wink.gif" alt="" class="wp-smiley"/>
lg Tom
+7 -9
View File
@@ -9,7 +9,7 @@ categories: ["Clean Code Developing"]
tags: ["Clean Code"]
---
Obwohl wir [Jeff Atwood](http://www.codinghorror.com/blog/) schon vor Monaten von unseren Bloggerliste gestrichen haben, ich habe ihn noch nicht aus meinem Googlereader entfernt. Er ist ein Typ, der liebt viel Wirbel zu verursachen ([Scott Hanselmann](http://www.hanselman.com/blog/) nennt ihn aus den Wörtern *friend* und *enemy* “my friendemy” <img src="/images/programmierer/icon_wink.gif" alt=";)" class="wp-smiley"/> ) aber manchmal trifft er den Nagel auf den Kopf. So auch in seinem letzten Artikel [“The Non-Programming Programmer”](http://www.codinghorror.com/blog/2010/02/the-nonprogramming-programmer.html).
Obwohl wir [Jeff Atwood](http://www.codinghorror.com/blog/) schon vor Monaten von unseren Bloggerliste gestrichen haben, ich habe ihn noch nicht aus meinem Googlereader entfernt. Er ist ein Typ, der liebt viel Wirbel zu verursachen ([Scott Hanselmann](http://www.hanselman.com/blog/) nennt ihn aus den Wörtern *friend* und *enemy* “my friendemy” <img src="/images/programmierer/icon_wink.gif" alt="" class="wp-smiley"/> ) aber manchmal trifft er den Nagel auf den Kopf. So auch in seinem letzten Artikel [“The Non-Programming Programmer”](http://www.codinghorror.com/blog/2010/02/the-nonprogramming-programmer.html).
>
> I wrote that article in 2007, and I am stunned, but not entirely surprised, to hear that three years later “the vast majority” of so-called programmers who apply for a programming job interview are unable to write the smallest of programs. To be clear, hard is a relative term — were not talking about complicated, Google-style graduate computer science interview problems. This is extremely simple stuff were asking candidates to do. And they cant. **Its the equivalent of attempting to hire a truck driver and finding out that 90 percent of the job applicants cant find the gas pedal or the gear shift.**
@@ -20,8 +20,6 @@ Ich musste allerdings beim Lesen ständig auf die Situation “danach” denken,
Was haltet ihr von Coding bei der Einstellung? Ist das auch in Europa üblich? Würde das die unpassenden Personen ausfiltern? Oder soll man sich die Zeit nehmen und dem Kandidaten “ungesehen” die Probezeit anbieten? Würde das vielleicht zu viele Personen ausfiltern? Kann man sich das überhaupt erlauben in der heutigen Zeit der Fachkräftemangel? (Gut, man fragt sich natürlich, ob wir hier über “Fachkraft” sprechen dürfen…)
<img src="/images/programmierer/KickItImageGenerator.ashx" alt="kick it on dotnet-kicks.de"/>
## Kommentare (Archiv)
1. <img src="/images/programmierer/3e7b6cb163ea9cc8549abcb8b5a03e2e.jpeg" width="32" height="32" class="avatar avatar-32 photo" alt="Avatar"/> **[Ralf Westphal](http://ralfw.blogspot.com/)**
@@ -43,7 +41,7 @@ Was haltet ihr von Coding bei der Einstellung? Ist das auch in Europa üblich? W
Hallo Christina, ich überlege gerade, was schlimmer ist: ein Programmierer, der das Geschäft irgendwann von der Pieke auf gelernt jetzt aber meint, dass das fürs ganze Programmiererlebe reicht oder ein Quereinsteiger, dem Basics fehlen dafür aber gewillt ist, sich permanent zu verbessern… Wie so oft, hängt es vermutlich davon ab, was man erreichen will / muss, wenn man die betreffende Person einstellt.
Code-Reviews sind hier bestimmt kein schlechter Ansatz, aber sie sollten vielleicht nicht das einzige Einstellungskriterium sein. Auf jeden Fall sollte der Code aber gemeinsam reviewed werden, denn vielleicht hat ja auch der Reviewer eine verkehrte Sicht <img src="/images/programmierer/icon_wink.gif" alt=";-)" class="wp-smiley"/>
Code-Reviews sind hier bestimmt kein schlechter Ansatz, aber sie sollten vielleicht nicht das einzige Einstellungskriterium sein. Auf jeden Fall sollte der Code aber gemeinsam reviewed werden, denn vielleicht hat ja auch der Reviewer eine verkehrte Sicht <img src="/images/programmierer/icon_wink.gif" alt="" class="wp-smiley"/>
Ich habe in den letzten Jahren in anderen Bereichen (Maschinen-/Anlagenbau) festgestellt, dass man den perfekten Mitarbeiter nicht bekommt. Viel wichtiger ist es imho, die Stärken und Schwächen des einzelnen zu kennen (das ist ein mühsamer Prozess) und daraus ein schlagkräftiges Team zu formen.
3. **Christina Hirth**
@@ -58,7 +56,7 @@ Was haltet ihr von Coding bei der Einstellung? Ist das auch in Europa üblich? W
Ich finde deine Idee mit dem Dojo in der Probezeit, nehme ich an sehr gut, die Teilnahme oder Nicht-Teilnahme an so eine kleine Herausforderung kann sehr vieles aussagen.
Du bist in der Position, in der dir die deutschen Gepflogenheiten bei der Zusammenstellung eines Team egal sein kann, ich dagegen sitze an der anderen Seite des Tisches <img src="/images/programmierer/icon_wink.gif" alt=";)" class="wp-smiley"/> Ich wünschte mir, dass mehr Leute so denken würden wie du. Vielleicht könnte das auch zu einer Aufgabe der CCD-Bewegung werden.
Du bist in der Position, in der dir die deutschen Gepflogenheiten bei der Zusammenstellung eines Team egal sein kann, ich dagegen sitze an der anderen Seite des Tisches <img src="/images/programmierer/icon_wink.gif" alt="" class="wp-smiley"/> Ich wünschte mir, dass mehr Leute so denken würden wie du. Vielleicht könnte das auch zu einer Aufgabe der CCD-Bewegung werden.
Christina
4. **Christina Hirth**
@@ -68,7 +66,7 @@ Was haltet ihr von Coding bei der Einstellung? Ist das auch in Europa üblich? W
Hallo Alex,
Ich bin genau deiner Meinung, es hängt fast alles davon ab, wozu die Position ausgeschrieben wurde. Die Frage ist allerdings, ob da noch Platz für Nachbesserung vorhanden ist, wo eventuell kein Wille ist. Dann bin ich mehr für den Quereinsteiger ich bin auch einer wenn der Grund für die Neuorientierung eine falsche erste Wahl war und nicht “ich habe mir mal eine Homepage gebastelt, also bin ich Programmierer”
Was den perfekten Mitarbeiter betrifft: hoffentlich gibt es ihn noch nicht, das würde das Leben der anderen im Team für immer vermiesen <img src="/images/programmierer/icon_wink.gif" alt=";)" class="wp-smiley"/>
Was den perfekten Mitarbeiter betrifft: hoffentlich gibt es ihn noch nicht, das würde das Leben der anderen im Team für immer vermiesen <img src="/images/programmierer/icon_wink.gif" alt="" class="wp-smiley"/>
5. **[Golo Roden](http://www.des-eisbaeren-blog.de/)**
[März 14, 2010 um 7:28 pm](/posts/programmierer/)
@@ -116,7 +114,7 @@ Was haltet ihr von Coding bei der Einstellung? Ist das auch in Europa üblich? W
Hallo André,
endlich jemand aus der anderen Mannschaft <img src="/images/programmierer/icon_smile.gif" alt=":)" class="wp-smiley"/>
endlich jemand aus der anderen Mannschaft <img src="/images/programmierer/icon_smile.gif" alt="" class="wp-smiley"/>
Deine Vorgehensweise finde ich sehr effizient, aber hätte es nicht passieren können, dass der Bewerbungsstress dein Bild über den Kandidaten verzehren könnte? Oder wusste er schon vor vornherein, dass die Aufgabe unvollständig ist?
@@ -128,9 +126,9 @@ Was haltet ihr von Coding bei der Einstellung? Ist das auch in Europa üblich? W
[März 15, 2010 um 1:54 pm](/posts/programmierer/)
Dass der “Bewerbungsstreß” meine Wahrnehmung verzerrt haben könnte, kann ich nicht aussließen. Da die Aufgaben allerdings meist recht einfach waren und ich auf eine angenehme Gesprächsatmosphäre geachtet habe, hoffe bzw. glaube ich nicht, dass jemand so viel Streß hatte, dass es zu einer vollkommen falschen Wahrnehmung hätte führen können. Außerdem sollte man auch bedenkend, dass es bei der späteren Ausübung des Jobs immer wieder Situationen geben kann, in denen man unter Streß / Druck arbeiten muss. Daher simulierte die Situation vielleicht sogar ein wenig eine realistische Arbeitssituation <img src="/images/programmierer/icon_wink.gif" alt=";-)" class="wp-smiley"/>
Dass der “Bewerbungsstreß” meine Wahrnehmung verzerrt haben könnte, kann ich nicht aussließen. Da die Aufgaben allerdings meist recht einfach waren und ich auf eine angenehme Gesprächsatmosphäre geachtet habe, hoffe bzw. glaube ich nicht, dass jemand so viel Streß hatte, dass es zu einer vollkommen falschen Wahrnehmung hätte führen können. Außerdem sollte man auch bedenkend, dass es bei der späteren Ausübung des Jobs immer wieder Situationen geben kann, in denen man unter Streß / Druck arbeiten muss. Daher simulierte die Situation vielleicht sogar ein wenig eine realistische Arbeitssituation <img src="/images/programmierer/icon_wink.gif" alt="" class="wp-smiley"/>
Zur Frage ob die Kandidaten vorher wussten, was sie erwartet: Wenn sie gefragt haben dann schon <img src="/images/programmierer/icon_wink.gif" alt=";-)" class="wp-smiley"/>
Zur Frage ob die Kandidaten vorher wussten, was sie erwartet: Wenn sie gefragt haben dann schon <img src="/images/programmierer/icon_wink.gif" alt="" class="wp-smiley"/>
Auf Nachfrage habe ich immer sehr ausführlich beschrieben wie wir vorgehen werden. Wer nicht gefragt hat, der hat halt Pech gehabt. Ich denke auch, dass es schon eine Menge über den Bewerber aussagt, ob er sich nach Erhalt einer Einladung telefonisch meldet um ein paar Fragen vorab zu klären, oder nicht.
11. **[KW12: Seitwert, Giana Sisters, Dumm 3.0, UML und mehr - Der Softwareentwickler Blog](http://www.der-softwareentwickler-blog.de/2010/03/26/kw12-giana-sisters-dumm-3-0-uml-visual-studio-2010-und-mehr/)**
+1 -2
View File
@@ -16,6 +16,5 @@ Ich lese gerade das Buch [Agile Principles, Patterns and Practices in C#](http:/
>
> Das Ziel von Refaktorisierung ist die Bereinigung des Codes, jeden Tag, jede Stunde, jede Minute. Wir wollen nicht den Code versauen. Wir wollen nicht ständig gezwungen zu sein, schmutzigen Bits und Bytes sauber zu schrubben. Wir wollen jeder Zeit in der Lage zu sein, unser System mühelos zu erweitern und zu verändern. Der wichtigste Faktor, der uns das möglich macht, ist die Sauberkeit des Codes.
Das Buch habe zwar noch nicht ganz durch, aber was ich bis jetzt gelesen habe, kann ich nur unterschreiben. Es beinhaltet die Prinzipien, wie man in einem agilen Team sauberen Code plant und Mustern und Beispiele, wie man ihn schreibt. Und wie ihr ja sieht, ist es in eine ganz tolle Art geschrieben <img src="/images/refaktorisierung/icon_smile.gif" alt=":)" class="wp-smiley"/>
Das Buch habe zwar noch nicht ganz durch, aber was ich bis jetzt gelesen habe, kann ich nur unterschreiben. Es beinhaltet die Prinzipien, wie man in einem agilen Team sauberen Code plant und Mustern und Beispiele, wie man ihn schreibt. Und wie ihr ja sieht, ist es in eine ganz tolle Art geschrieben <img src="/images/refaktorisierung/icon_smile.gif" alt="" class="wp-smiley"/>
<img src="/images/refaktorisierung/KickItImageGenerator.ashx" alt="kick it on dotnet-kicks.de"/>
-2
View File
@@ -32,8 +32,6 @@ Wir sind nun in Sprint 21 und nach 2 Open Spaces um ausreichenden Erfahrungsaust
Ich rate allen, die SCRUM einführen wollen, sich wirklich so nah wie möglich an SCRUM zu halten. Die Sprints 1 15 wirkten bei uns auch sehr gut, doch erst danach fiel uns auf, dass gerade die Sprint-Retrospektive ein sehr wichtiges Meeting ist. All diese Regeln sind durch mehrjährige Erfahrungen entstanden und sie haben sich schon in größeren Firmen bewährt. Warum dann nicht davon profitieren?
<img src="/images/scrumbut/KickItImageGenerator.ashx" alt="kick it on dotnet-kicks.de"/>
## Kommentare (Archiv)
1. **Mike Bild**
+2 -4
View File
@@ -9,7 +9,7 @@ categories: ["Architektur", "Clean Code Developing"]
tags: ["Architektur"]
---
Wir haben wie viele von uns in der Webentwicklung vor vielen Jahren mit Scriptsprachen und mit prozeduralen Spaghetti-Code <img src="/images/softwarezellen/icon_wink.gif" alt=";)" class="wp-smiley"/> angefangen. Mit der Zeit wuchs unsere Webpräsenz zu einer unüberschaubaren Anwendung mit manchen Seiten, die keiner von uns mehr anfassen wollte aus Angst vor den Konsequenzen.
Wir haben wie viele von uns in der Webentwicklung vor vielen Jahren mit Scriptsprachen und mit prozeduralen Spaghetti-Code <img src="/images/softwarezellen/icon_wink.gif" alt="" class="wp-smiley"/> angefangen. Mit der Zeit wuchs unsere Webpräsenz zu einer unüberschaubaren Anwendung mit manchen Seiten, die keiner von uns mehr anfassen wollte aus Angst vor den Konsequenzen.
Um etwas Ordnung in die Webanwendungen zu bringen, haben wir also vor 4 Jahren angefangen, nach einem 3-Schichten-Modell zu entwickeln. Wir haben neue Funktionalitäten und neue Anwendungen nur noch so gebaut und wir waren für eine kurze Zeit zufrieden. Alles lief gut. Als wir den Umstieg auf .NET begonnen haben, haben wir weiterhin nach einem Mehr-Schichten-Modell gearbeitet, wir haben nur die Anzahl der Schichten erhöht.
@@ -27,9 +27,7 @@ Seit dem Besuch von Ralf und Stefan haben wir uns die Artikelserie von Ralf von
Wir haben noch einen langen und interessanten Weg vor uns, aber eins ist jetzt schon sicher: wir werden versuchen unsere nächste Projekte durch Softzellen modellieren.
Solange die Komplexität nicht wieder die Überhand gewinnt <img src="/images/softwarezellen/icon_wink.gif" alt=";)" class="wp-smiley"/>
<img src="/images/softwarezellen/KickItImageGenerator.ashx" alt="kick it on dotnet-kicks.de"/>
Solange die Komplexität nicht wieder die Überhand gewinnt <img src="/images/softwarezellen/icon_wink.gif" alt="" class="wp-smiley"/>
## Kommentare (Archiv)
-2
View File
@@ -41,8 +41,6 @@ InternalsVisibleTo("ThirdAssembly")]`
The former syntax is legal but fails, because each instance simply redefines and replaces any earlier ones, the latter syntax works as required.
<img src="/images/test-public-methods/KickItImageGenerator.ashx" alt="kick it on dotnet-kicks.de"/>
## Kommentare (Archiv)
1. **Thomas Christain**
-1
View File
@@ -190,4 +190,3 @@ Dieses Vorgehen hat uns nicht nur den seit langen gesuchten Weg zum Testen von W
Was die Adapter-Klassen betrifft: inzwischen haben wir auch System.IO “adaptiert” und bald werden die anderen System-Klassen folgen, je nach Bedarf.
[Download VS2008-Projekt](/assets/TestableWebForm.zip)
<img src="/images/unittests-webforms/KickItImageGenerator.ashx" alt="kick it on dotnet-kicks.de"/>
+1 -3
View File
@@ -34,8 +34,6 @@ Um uns möglichst nah an den Projekten in der Arbeit zu orientieren, haben wir e
Glückwunsch nochmal an die Gewinner des Wettbewerbs (Schiffe versenken).
<img src="/images/webcamps/KickItImageGenerator.ashx" alt="kick it on dotnet-kicks.de"/>
## Kommentare (Archiv)
1. <img src="/images/webcamps/3e7b6cb163ea9cc8549abcb8b5a03e2e.jpeg" width="32" height="32" class="avatar avatar-32 photo" alt="Avatar"/> **[Ralf Westphal](http://ralfw.blogspot.com/)**
@@ -52,7 +50,7 @@ Glückwunsch nochmal an die Gewinner des Wettbewerbs (Schiffe versenken).
Hallo Ralph,
natürlich nicht <img src="/images/webcamps/icon_smile.gif" alt=":)" class="wp-smiley"/> . Für die Veranstalter war es nur wichtig, dass man sich mit den Technologien beschäftigt. Ob der Code clean war oder nicht, war völlig egal.
natürlich nicht <img src="/images/webcamps/icon_smile.gif" alt="" class="wp-smiley"/> . Für die Veranstalter war es nur wichtig, dass man sich mit den Technologien beschäftigt. Ob der Code clean war oder nicht, war völlig egal.
Wir wollten es eben so machen wie an der Arbeit.
Gruß
+12 -12
View File
@@ -9,7 +9,7 @@ categories: ["Webservice"]
tags: [".NET", "ASP-Classic", "Refaktorisierung", "Webservice"]
---
Seit einiger Zeit sind wir dabei, unser Portal zu refaktorisieren. Das entfernte Ziel ist, alles in .NET um zu bauen. Das betrifft zur Zeit über tausend Seiten aber wir möchten noch in diesem Leben fertig sein <img src="/images/webservice-mit-asp-classic/icon_wink.gif" alt=";)" class="wp-smiley"/>
Seit einiger Zeit sind wir dabei, unser Portal zu refaktorisieren. Das entfernte Ziel ist, alles in .NET um zu bauen. Das betrifft zur Zeit über tausend Seiten aber wir möchten noch in diesem Leben fertig sein <img src="/images/webservice-mit-asp-classic/icon_wink.gif" alt="" class="wp-smiley"/>
Dazu kommt noch, dass wir selbstverständlich agiles Softwarentwicklung betreiben, was eine ständige und rhythmische Iteration vorsieht, keine Mega-Projekte mit ungewissem Ende. Also haben wir die verschiedenen Bereiche identifiziert und diese werden einer nach dem anderen neu gebaut.
Die neuen DLL-s in .NET werden mit Hilfe von verschiedenen Webservices angesprochen. Das führt allerdings unweigerlich dazu, 2 Technologien ASP-Classic und .NET(C#) miteinander sicher kommunizieren zu lassen. Das funktioniert so:
@@ -110,15 +110,15 @@ Noch ein paar Bemerkungen:
[Dezember 15, 2009 um 10:49 am](/posts/webservice-mit-asp-classic/)
Klar, das funktioniert mit allen SOAP-Webservices. Die Fehlermeldung ist typisch Microsoft, kann alles mögliche bedeuten <img src="/images/webservice-mit-asp-classic/icon_wink.gif" alt=";)" class="wp-smiley"/>
Klar, das funktioniert mit allen SOAP-Webservices. Die Fehlermeldung ist typisch Microsoft, kann alles mögliche bedeuten <img src="/images/webservice-mit-asp-classic/icon_wink.gif" alt="" class="wp-smiley"/>
Was steht bei dir in Zeile 34?
3. **kai**
[Dezember 15, 2009 um 11:07 am](/posts/webservice-mit-asp-classic/)
Oh… mir fällt gerade auf (ich nahm diesen Webservice, weil er LÄUFT und im Netz funktionsfähig ist), dass dieser Webservice eine Guid über einen Login generieren muss, deswegen funktioniert es mit Sicherheit nicht! <img src="/images/webservice-mit-asp-classic/icon_wink.gif" alt=";)" class="wp-smiley"/>
Oh… mir fällt gerade auf (ich nahm diesen Webservice, weil er LÄUFT und im Netz funktionsfähig ist), dass dieser Webservice eine Guid über einen Login generieren muss, deswegen funktioniert es mit Sicherheit nicht! <img src="/images/webservice-mit-asp-classic/icon_wink.gif" alt="" class="wp-smiley"/>
Werde erstmal weiter schauen, trotzdem vielen Dank für die schnelle Antwort! <img src="/images/webservice-mit-asp-classic/icon_smile.gif" alt=":)" class="wp-smiley"/>
Werde erstmal weiter schauen, trotzdem vielen Dank für die schnelle Antwort! <img src="/images/webservice-mit-asp-classic/icon_smile.gif" alt="" class="wp-smiley"/>
Falls es nichts wird, melde ich mich noch einmal!
4. **kai**
@@ -147,12 +147,12 @@ Noch ein paar Bemerkungen:
[Dezember 15, 2009 um 1:00 pm](/posts/webservice-mit-asp-classic/)
Ich will nicht spammen, wollte dir das aber noch mit auf den Weg geben: Vielen Dank für den Code! <img src="/images/webservice-mit-asp-classic/icon_smile.gif" alt=":)" class="wp-smiley"/>
Ich will nicht spammen, wollte dir das aber noch mit auf den Weg geben: Vielen Dank für den Code! <img src="/images/webservice-mit-asp-classic/icon_smile.gif" alt="" class="wp-smiley"/>
8. **Christina Hirth**
[Dezember 15, 2009 um 1:03 pm](/posts/webservice-mit-asp-classic/)
Hei Kai, kein Problem <img src="/images/webservice-mit-asp-classic/icon_smile.gif" alt=":)" class="wp-smiley"/>
Hei Kai, kein Problem <img src="/images/webservice-mit-asp-classic/icon_smile.gif" alt="" class="wp-smiley"/>
Du musst diesen Webservice Publishen, ihn auf einen erreichbaren Webserver veröffentlichen. Dann müsste alles passen.
9. **kai**
@@ -163,9 +163,9 @@ Noch ein paar Bemerkungen:
Und jetzt habe ich das erst mit den strParameters verstanden, ich dachte die bräuchte man nur, wenn man der Methode des Webservice via SOAP Parameter übergeben wollen würde, dies war bis gerade auskommentiert.
Es waren also 2 Sachen zu bewältigen… <img src="/images/webservice-mit-asp-classic/icon_wink.gif" alt=";)" class="wp-smiley"/>
Es waren also 2 Sachen zu bewältigen… <img src="/images/webservice-mit-asp-classic/icon_wink.gif" alt="" class="wp-smiley"/>
Jetzt läuft es, vielen Dank! <img src="/images/webservice-mit-asp-classic/icon_smile.gif" alt=":)" class="wp-smiley"/>
Jetzt läuft es, vielen Dank! <img src="/images/webservice-mit-asp-classic/icon_smile.gif" alt="" class="wp-smiley"/>
Eine Frage bleibt bei mir aber noch offen!
@@ -173,12 +173,12 @@ Noch ein paar Bemerkungen:
Ist der Parameter überhaupt notwendig? Eigentlich teilt man doch schon über den Soap-Envelope (strParameters) mit, welche Funktion des Webservice man aufrufen möchte oder nicht?
Wirklich, vielen Dank, Christina! <img src="/images/webservice-mit-asp-classic/icon_smile.gif" alt=":)" class="wp-smiley"/>
Wirklich, vielen Dank, Christina! <img src="/images/webservice-mit-asp-classic/icon_smile.gif" alt="" class="wp-smiley"/>
10. **Christina Hirth**
[Dezember 15, 2009 um 3:20 pm](/posts/webservice-mit-asp-classic/)
Ich weiß nicht genau, aber ich könnte mir sehr gut vorstellen, dass weil im Webservice eine einzige Funktion vorhanden ist, ist diese sozusagen die “Default”-Adresse <img src="/images/webservice-mit-asp-classic/icon_wink.gif" alt=";)" class="wp-smiley"/>
Ich weiß nicht genau, aber ich könnte mir sehr gut vorstellen, dass weil im Webservice eine einzige Funktion vorhanden ist, ist diese sozusagen die “Default”-Adresse <img src="/images/webservice-mit-asp-classic/icon_wink.gif" alt="" class="wp-smiley"/>
Aber die Frage ist interessant, ich werde das bei der nächsten Gelegenheit überprüfen.
Es freut mich sehr, dass du auch so begeistert bist, wie ich damals war, als es das erste mal diese alte Technik-neue Technik Kommunikation hingehauen hat
@@ -196,9 +196,9 @@ Noch ein paar Bemerkungen:
Deine Default-Theorie kann es leider nicht sein, weil ich bereits 2 Methoden in meinem Webservice habe.
Sehr interessant… <img src="/images/webservice-mit-asp-classic/icon_smile.gif" alt=":)" class="wp-smiley"/>
Sehr interessant… <img src="/images/webservice-mit-asp-classic/icon_smile.gif" alt="" class="wp-smiley"/>
Nunja, hauptsache es funktioniert, WIE ist nur halb so wichtig! <img src="/images/webservice-mit-asp-classic/icon_wink.gif" alt=";)" class="wp-smiley"/>
Nunja, hauptsache es funktioniert, WIE ist nur halb so wichtig! <img src="/images/webservice-mit-asp-classic/icon_wink.gif" alt="" class="wp-smiley"/>
Wünsche dir ebenfalls schöne Feiertage, bin für heute erstmal raus.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Addin"
---
Das Visual Studio Add-in „Copy Source As HTML" — für formatierte Code-Übertragung in HTML, ideal für Blogs und Dokumentation.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Architektur"
---
Softwarezellen, Design by Contract und Plug-In-Architekturen — Gedanken zu Struktur, Verträgen und klarem Aufbau von Software.
+5
View File
@@ -0,0 +1,5 @@
---
title: "ASP-Classic"
---
SOAP-Kommunikation zwischen ASP-Classic und .NET-Webservices — technische Anleitungen für den Legacy-Betrieb.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Assemblies"
---
Grundlagen zu .NET-Assemblies: Aufbau, Laden und Reflexion für dynamische Architekturen.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Assembly"
---
Dynamisches Laden von Assemblies und Reflection — Schlüsseltechnologien für flexible Plug-In-Systeme.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Basics"
---
Die Grundlagen der professionellen Software-Entwicklung — von sauberer Codebasis bis zu bewährten Coding-Practices.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Buch"
---
Buchbesprechungen und Zusammenfassungen — von „Clean Code" über „Code Complete" bis zu „The Pragmatic Programmer".
+5
View File
@@ -0,0 +1,5 @@
---
title: "Buchempfehlung"
---
Unsere Empfehlungen für pflichtlektürenwertige Bücher zur software-Entwicklung.
+5
View File
@@ -0,0 +1,5 @@
---
title: "C#"
---
Praktische C#-Entwicklung: Anonyme Datentypen, dynamisches Assembly-Laden, Plug-In-Patterns und Design by Contract mit Spec#.
+5
View File
@@ -0,0 +1,5 @@
---
title: "CCD"
---
Der Clean Code Developer — von der Yellow Brick Road bis zu SOLID, DRY und professioneller Code-Kultur.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Clean Code"
---
Sauberer, lesbarer und wartbarer Code — unsere Erfahrungen mit Clean Code, Refactoring und bewährten Development-Practices.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Coding"
---
Buch-Zusammenfassungen und Praxis-Tipps für besseres Programmieren — direkt aus dem Alltag als .NET-Entwickler.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Community"
---
Open Spaces, BarCamps und User Groups — unser Austausch mit der .NET-Entwickler-Community.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Contract-First"
---
Beim MVP-Pattern mit WinForms: Verträge zuerst definieren, dann implementieren — für testbare und klare Architekturen.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Datenbank"
---
Von relationalen Datenbanken zu NoSQL — StupidDB als schemaloser Objektspeicher für .NET.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Datenschutz"
---
Datenschutz im Social Web — Diskussionen und Erfahrungen von BarCamps und in der Community.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Facebook"
---
Eindrücke und Diskussionen rund um soziale Plattformen wie Facebook — vom BarCamp bis zur Datenschutzdebatte.
+5
View File
@@ -0,0 +1,5 @@
---
title: "HowTo"
---
Praktische Schritt-für-Schritt-Anleitungen: Reflection, dynamisches Assembly-Laden, anonyme Datentypen und Plug-In-Architekturen.
+5
View File
@@ -0,0 +1,5 @@
---
title: "HTML"
---
HTML-Techniken in der Praxis: Code-Formatierung für Webseiten und die Umwandlung von Visual-Studio-Quellcode.
+5
View File
@@ -0,0 +1,5 @@
---
title: "MVC"
---
ASP.NET MVC und Model-View-Presenter — Erfahrungsberichte, Vorträge und Implementierungsbeispiele.
+5
View File
@@ -0,0 +1,5 @@
---
title: "MVP"
---
Das Model-View-Presenter-Pattern in der Praxis — mit Contract-First-Ansatz in WinForms.
+5
View File
@@ -0,0 +1,5 @@
---
title: "NoSQL"
---
NoSQL mit StupidDB — ein schemaloser Objektspeicher für .NET, einfach und flexibel.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Open Space"
---
Eindrücke von .NET Open Spaces in Leipzig und Ulm — intensiver Austausch ohne Agenda, direkt mit den besten Köpfen der Branche.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Patterns"
---
Entwurfsmuster und WebCast-Empfehlungen — von async-Patterns bis zu bewährten Solution-Patterns.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Plug-In"
---
Plug-In-Architekturen mit Reflection und dynamischem Assembly-Laden — für erweiterbare .NET-Anwendungen.
+5
View File
@@ -0,0 +1,5 @@
---
title: "prio.conference"
---
Tagungsbericht von der prio.conference 2009 in München — Sessions zu UI-Entwicklung, Usability und agiler Softwareentwicklung.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Refaktorisierung"
---
Refactoring mal anders erklärt — mit Metaphern aus dem Alltag und konkreten Beispielen aus der Praxis.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Reflection"
---
.NET-Reflection: Wozu dient sie, wie funktioniert dynamisches Assembly-Laden, und warum ist sie der Schlüssel zu flexiblen Architekturen?
+5
View File
@@ -0,0 +1,5 @@
---
title: "Schemalos"
---
Kein starres Schema, volle Flexibilität — StupidDB als NoSQL-Ansatz für die einfache Objektpersistierung.
+5
View File
@@ -0,0 +1,5 @@
---
title: "SCRUM"
---
Reflexion über unsere SCRUM-Einführung — was lief gut, was lief anders, und warum „Scrumbut" kein Schimpfwort ist.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Social Web"
---
Dezentrale soziale Protokolle, Facebook und Datenschutz — Diskussionen vom BarCamp Bodensee.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Sonne"
---
Sommer, Sonne und BarCamp — Eindrücke von Events und Community-Treffen im Freien.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Sourcecode"
---
Code-Formatierung und -Übertragung: Wie man Quellcode aus Visual Studio sauber in HTML und Blog-Artikel bekommt.
+5
View File
@@ -0,0 +1,5 @@
---
title: "StupidDB"
---
Unser Open-Source-Framework zur einfachen Objektpersistierung auf dem Dateisystem — vom ersten Entwurf bis zu NoSQL-Konzepten.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Unit Tests"
---
Unit-Tests in der Praxis: Strategien für WebForms, nicht-öffentliche Methoden und Design by Contract.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Veranstaltung"
---
Open Spaces, BarCamps, User Groups und WebCamps — Berichte von .NET-Veranstaltungen und Community-Treffen.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Visual Studio"
---
Nützliche Tools und Add-ins für Visual Studio — wie „Copy Source As HTML" für bessere Code-Dokumentation.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Webapplication"
---
Architektur und Testbarkeit von Webanwendungen — von Schichtenarchitektur bis zu Workarounds für bessere Unit-Tests.
+5
View File
@@ -0,0 +1,5 @@
---
title: "WebCamp"
---
Bericht vom Microsoft WebCamp in München — zwei Tage zu MVC2, Entity Framework und jQuery.
+5
View File
@@ -0,0 +1,5 @@
---
title: "WebCast"
---
Empfehlenswerte WebCasts und Podcasts für Entwickler — von Dime Casts bis zu Hanselminutes.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Webservice"
---
SOAP-Kommunikation und Webservice-Integration — Technische Anleitungen für den Austausch zwischen .NET und anderen Systemen.
+5
View File
@@ -0,0 +1,5 @@
---
title: "WinForms"
---
Windows Forms in der Praxis — vom MVP-Pattern bis zu testbaren Desktop-Anwendungen.
+5
View File
@@ -0,0 +1,5 @@
---
title: "Wordpress"
---
WordPress als Blog-Plattform — Erfahrungen mit Code-Export, Theme-Anpassungen und Content-Migration.
+2
View File
@@ -11,6 +11,8 @@
{{- $desc := "" }}
{{- if .IsHome }}
{{- $desc = .Site.Params.description }}
{{- else if .Content }}
{{- $desc = .Content | plainify }}
{{- else if .IsNode }}
{{- if eq .Kind "term" }}
{{- if eq .Data.Singular "tag" }}
+1
View File
@@ -1,4 +1,5 @@
{{ define "main" }}
{{ with .Content }}<div class="taxonomy-intro">{{ . }}</div>{{ end }}
<h2 class="archive-title">{{ .Title }}</h2>
<div class="post-list">
{{ range .Pages }}