Blog Home  Home Feed your aggregator (RSS 2.0)  
HP's Blog - Sunday, September 16, 2007
Hans-Peter Schelian's Weblog
 
# Sunday, September 16, 2007

Letzte Nacht wurde die DotNetNuke Version 4.6.0 veröffentlicht.

Wie es aussieht, haben die Jungs vom Core Team endlich die Suchfunktion zum laufen gebracht.

Allerdings gibt es ein echtes Problem mit Child Portalen. Mehr dazu wonöglich in einem späteren ausführlicheren Blog Eintrag.

Hier geht es direkt zum Download

DotNetNuke | Open Source
Sunday, September 16, 2007 5:08:34 PM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
# Thursday, September 06, 2007

Vermutlich ist das für die meisten nichts neues, aber ich habe nun schon einige male nach dem enrsprechenden Befehl gesucht und dabei Zeit vergeudet, aus diesem Grund mach ich nun für mich selbst diesen Blog Eintrag.

Hintergrund:

In einer Datenbank (MS-SQL) sind in einem Tabellenfeld Werte die gegen andere Werte ausgetauscht werden müssen.

Ein simples Update wie das hier:

UPDATE [TABLENAME] SET [FIELDNAME] = NEWVALUE

Nun ist es aber so, dass ich nur einen Teil des Inhaltes ändern muss, im speziellen Fall wird in der Spalte der Tabelle Informationen über den Speicherort einer Datei vorgehalten.

Hier ein Beispielinhalt:

C:\Program Files\hMailServer\Data\ihrportal\AB\{AB88191E-9A94-4C08-90B8-597A4B2FA3E2}.eml

Nun befinden sich die Daten aber nicht mehr auf dem Laufwerk C: sondern die Daten befinden sich nun auf Laufwerk D: und dort in dem Verzeichnis hMailServer\Data also auf D:\hMailServer\Data. Somit muss der Inhalt des Feldes wie folgt geändert werden:

D:\hMailServer\Data\ihrportal\AB\{AB88191E-9A94-4C08-90B8-597A4B2FA3E2}.eml

Dies muss nun bei tausenden von Einträgen durchgeführt werden.

Lösung:

Um nun die Daten in der Spalte messagefilename der Tabelle hm_messages zu ändern habe ich folgedes Query ausgeführt:

update hm_messages
set messagefilename = REPLACE(messagefilename,'C:\Program Files\hMailServer\Data','D:\hMailServer\Data')

So und nun hoffe ich das ich das nächste mal wenn ich so etwas machen möchte, daran denke dass ich dazu einen Blog Eintrag verfasst habe.

Programmierung | SQL
Thursday, September 06, 2007 10:20:50 AM (W. Europe Daylight Time, UTC+02:00)  #    Comments [1]  
Autor: Hans-Peter Schelian  |  Trackback
# Friday, August 24, 2007

In der letzten Nacht wurde eine neue Version 0.91.2 des Open Source Anti Virus Programms ClamWin auf Sourceforge veröffentlicht.

Hier geht es direkt zum Download

Mehr über ClamWin kann man hier erfahren

ClamWin
Friday, August 24, 2007 5:21:17 PM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
# Tuesday, August 21, 2007

Immer wieder geschieht es dass ich während der Programmierung über den zu verwendenden Zugriffsmodifizierer für Klassen und Methoden nachdenken muss (manchmal länger als ich eigentlich möchte ). Aus diesem Grund mach ich mir hier wieder mal eine kleine Gedächtnisstütze in Form dieses Blog Eintrags.

Hier nun eine kleine Tabelle in welcher man einfach den benötigten Zugriffsmodifizierer ablesen kann:

Zugriffsmodifizierer Zugriff von beliebiger Stelle Zugriff aus Assembly

Zugriff aus abgeleiteterKlasse in eigener Assembly

Zugriff aus abgeleiteter Klasse in anderer Assembly Zugriff aus eigener Klasse
public Ja Ja Ja Ja Ja
protected internal - Ja Ja Ja Ja
internal - Ja Ja - Ja
protected - - Ja Ja Ja
private - - - - Ja

Programmierung | Tips und Tricks | Sprachen | C#
Tuesday, August 21, 2007 10:18:49 AM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
# Friday, August 17, 2007

Der in C# vorhandene Operator ?? bietet einem die einfache Möglichkeit mit nicht initialisierten Objekten (null values) umzugehen.

Immer wieder muss man in der Programmierung prüfen ob ein Objekt initialisiert ist und einen gültigen Wert enthält. Hierzu hat man im allgemeinen Konstrukte wie Diese verwendet.

Zum Beispiel so:

if (myObject != null)
{
	return myObject
}
else
{
	return [defaultWert der dem Objekt entspricht]
}

Einfacher geht es jedoch mit dem in C# verfügbaren Operator ??. Dieser Operator gibt, wenn das Objekt nicht null ist den linken Wert, sonst den rechten Wert zurück.

Also so:

return myObject ?? -1;

Wenn das myObject nicht null ist, wird der Wert von MyObject zurückgegeben, ist myObject null, so wird -1 zurückgegeben.

Mehr darüber kann man auf MSDN nachlesen

C#
Friday, August 17, 2007 6:52:12 AM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
# Wednesday, August 15, 2007

Auch dieser Blog Eintrag ist wieder so etwas wie ein Post It für mich selbst, Ich denke aber das bestimmt der eine oder andere genau das Problem hat und schon mit diesem kleinen Hinweis weiter kommt.

Hintergrund:

Bei der Verwendung von CodeSmith und den netTiers 2.0 Templates ist es möglich mit Transaktionen zu arbeiten. In diesem Blog Eintrag wird kurz beschrieben wie man diese unter C# und im Domain Komponenten Modell einsetzen kann.

Lösung (c#):

if (ConnectionScope.Current.TransactionManager == null)
     ConnectionScope.Current.TransactionManager = ConnectionScope.CreateTransaction();
 TransactionManager tm = ConnectionScope.Current.TransactionManager;
 if (!tm.IsOpen)
 {
     tm.BeginTransaction();
 }
  // Hier nun alle notwendigen Datenbankoperationen

 if (allesOK)
    tm.Commit();
 else
     tm.Rollback();

Mehr ist nicht zu berücksichtigen !!

Programmierung | C# | Tips und Tricks
Wednesday, August 15, 2007 10:17:50 AM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback

Jetzt reicht es und ich mache mir selbst ein Geschenk indem ich nun endlich dieses Problem einmal in einem Blog Eintrag festhalte.

Hintergrund:

Immer wieder stehe ich vor der Aufgabe das ich von irgendwoher Daten aus einer Datei verarbeiten (meistens Importfunktionen) muss, die unter anderem auch Datums und oder Zeitwerte enthalten.

Die Werte werden in den verschiedensten Formaten übergeben, eine der beliebtesten Formate ist es aber dass beideInformationen (Datum und Uhrzeit) in zwei verschiedenen Felder übergeben werden. Dabei wird häufig (jedenfalls ist das bei mir so) das nachfolgende Format für die Speicherung der Werte verwendet:

Datum als String z.B. : 20070815 also im Format yyyyMMdd

Uhrzeit als String z.B. : 120310 also im Forma HHmmss

Nun besteht die Aufgabe darin diese Daten zu lesen und dann in ein DateTime Objekt zu konvertieren.

Lösung:

Nachfolgend nun die von mir favorisierte und schon dutzende male verwendet Lösung:

// Source ist in C#

 string dateStr = s[2]; // Hier steht einfach ein Datumswert wie 20070815 drin
 string timeStr = s[3]; // Hier steht eine Uhrzeit wie 120310 drin 
 string dateTimeStr = dateStr + " " + timeStr; //Da steht nun  20070815 120310 also Datum mit Uhrzeit drin
 string dateTimeStrFormat = "yyyyMMdd HHmmss"; // Genau hier das ist das Format

 // Und hier wird nun der zusammen gebastelte Datum  / Uhrzeit String in ein DateTime Objekt konvertiert
 objInfo.TransDate = DateTime.ParseExact(dateTimeStr, dateTimeStrFormat, DateTimeFormatInfo.InvariantInfo);

So und nun hoffe ich das ich beim nächsten mal nicht wieder nach diesem Stückchen Quellcode suche wenn ich mal wieder vor der Aufgabe stehe, und eventuell stolpert ja auch der eine oder andere über diese Information wenn er / sie mal so etwas machen möchte.

Programmierung | Code | Tips und Tricks | C#
Wednesday, August 15, 2007 10:16:35 AM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
# Tuesday, August 14, 2007

Letzte Nacht wurde eine neue Version 4.2.2 der Open Source Projektes Notepad ++ veröffentlicht

 

Hier kann man mehr über Notepad ++ erfahren

 

Hier geht's direkt zum Download

Open Source | Notepad
Tuesday, August 14, 2007 6:10:59 PM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
# Monday, August 13, 2007

Immer wieder taucht die Frage auf, welchen Beschränkungen die Express Edition des SQL 2005 Server aus dem Hause Microsoft unterliegen.

Vorab gesagt: Es sind weniger Beschränkungen als es der Vorgänger die MSDE hatte.
Und vor allem wird die Express Edition nicht auf eine Anzahl gleichzeitiger Threads beschränkt wie das bei der MSDE der Fall war.

Übrigens, wenn ich hier von der Express Edition spreche, dann ist dies nicht ganz korrekt, da es zwei Versionen gibt.

Aber nun zu den Beschränkungen:

  • Anzahl unterstützter CPU's = 1
  • Maximale Speichernutzung (RAM) des SQL Server's = 1 GB
  • Keine direkte 64 BIT Betriebssystem Unterstützung (nur über WOW)
  • Maximale Datenbankgröße (ohne Log File) = 4GB
  • Mergereplikation und Transaktionsreplikation = nur Abonnenten
  • Volltextsuche (nur in der Express Edition with Advanced Services)

Einen kompletten Vergleich der einzelnen Editionen findet man wenn man dem nachfolgenden Link folgt:

http://www.microsoft.com/germany/sql/editionen/default.mspx

SQL Server 2005 Express Editionen

Server | SQL Server
Monday, August 13, 2007 11:21:03 AM (W. Europe Daylight Time, UTC+02:00)  #    Comments [0]  
Autor: Hans-Peter Schelian  |  Trackback
Copyright © 2010 Hans-Peter Schelian - Schelian IT Beratung. All rights reserved.