Führer durch die Pfarrkirche St. Helena M.Gladbach-Rheindahlen (J. Augstein) [ebook]

OCR-Scan des bekannten Büchlein „Führer durch die Pfarrkirche St. Helena M.Gladbach-Rheindahlen“ vom ehem. Oberpfarrer Johannes Augstein in St.Helena, Rheindahlen. Es ist kein genaues Publikationsdatum bekannt. Vermutlich aber in den 1920er oder 1930er Jahren. Einige Quellen geben 1925, andere 1937 an.

Mehr zur Person Augstein: hier

Download
(Achtung: ca. 15MB!)

Breivik-Urteil

Norwegen gehört zu den weltweit rund 20 Staaten, die eine lebenslange Haftstrafe in ihrem Strafrecht abgeschafft haben. Das norwegische Rechtssystem kennt eine Höchststrafe von 21 Jahren Gefängnis. Nach 21 Jahren „forvaring“ kann die Strafe zunächst um bis zu fünf Jahre verlängert werden. Da die Anzahl der Verlängerungen um jeweils fünf Jahre nicht begrenzt ist, kann ein so verurteilter Täter bis zu seinem Tod im Gefängnis bleiben.

Die „Forvaring“ ist im Grunde eine Hafstrafe mit anschließender Sicherheitsverwahrung. Das ist zwar rechtswidrig im Kontext der Europäischen Menschenrechtskonvention, aber wird höchstwahrscheinlich so praktiziert werden. Ich bin mir sehr sicher, dass Breivik in 21 Jahren deswegen vor dem EGMR klagen wird.

Haare färben wie vor über 200 Jahren

Pomade, zum Schwarzfärben der Haare.

Man nimmt harte, schwere Galläpfel, sechs und dreißig Stück; Rastuck oder Spießglanz, vier und eine viertel Drachme; Gewürznelken, zwölf Stück; guten Weinessig, drei Glaser voll.

Die gröblich zerstoßenen Galläpfel werden in etwas Baumöle geröstet, dann mit dem Spießglanze und den Nelken gestoßen, zusammen gerieben und durch ein Haarsieb geschlagen. Dieses Pulver thut man nun in die drei Gläser Weinessig, und läßt es bei gelindem Feuer bis zur Konsistenz einer Pomade einkochen.

Anwendungsart

Am Abend wäscht man die Haare tüchtig mit warmen Wasser und Seife, trocknet sie mit einem leinenen Tuch wohl ab, und salbt sie bündelweise mit der vorgeschriebenen Pomade. Nun verbindet man den Kopf, wäscht ihn des andern Morgens nochmals mit warmem Wasser und Seife, und trocknet ihn, wie den Abend vorher, wohl ab. Die Haare werden hierauf lange Zeit schwarz bleiben.

Dieser Pomade bedienen sich nicht allein die Frauen, sondern auch die Männer von hohem Alter, und selbst die jungen Leute färben von Zeit zu Zeit ihren Bart; jene um ein jüngeres Ansehen, und diese, um eine männlichere Figur zu bekommen. Diese Gewohnheit ist zwar in der ganzen Türkei gewöhnlich, hauptsachlich aber in Bagdad und in Persien. Daselbst sahen wir nie einen Greis mit weißem Barte, oder einen jungen Menschen mit einem röthlichen oder blonden. Beide Geschlechter legen auch, in der Absicht, um ihre Schönheit zu erhöhen, auf die Augenbranen und Augenlieder täglich eine schwarze Spießglanzsalbe. Die Persischen Frauen verlängern die schwarze Farbe, die sie an den Rand der Augenlieder auftragen, nach den Enden hin, um das Ansehen zu bekommen, als hätten sie größere Augen; sie sehen es auch gern, wenn die Augenbrauen zwei große schwarze zusammenstoßende Bogen bilden.

Quelle:
Reise durch das Türkische Reich, Aegypten und Persien, während der ersten sechs Jahre der Französischen Republik (oder von 1792 bis 1798) von Guillaume Antoine Olivier

Das BGB als XML


(Verwendungsbeispiel)

Wer, aus welchen Gründen auch immer, das bürgerliche Gesetzbuch in seine Anwendung implementieren will, der wird sich über das „BGB als XML“ freuen.

Download als .zip-Archiv
Download als .xml (ca. 3,3 MB)

Dank des universellen XML-Formats kann das BGB plattform- und programmiersprachenunabhängig eingebunden werden. Der einfachheit halber enthält es kein Inhaltsverzeichnis und keine Hierarchie. Es beschränkt sich lediglich auf die Normen und handelt sich um die aktuellste Ausgabe zum Zeitpunkt der Erstellung (Juli 2012).

So schaut beispielsweise ein XML-Knoten („Norm“) aus:

    
      (1) Der Finder kann von dem Empfangsberechtigten einen Finderlohn
verlangen. Der Finderlohn beträgt von dem Werte der Sache bis zu 500
Euro fünf vom Hundert, von dem Mehrwert drei vom Hundert, bei Tieren
drei vom Hundert. Hat die Sache nur für den Empfangsberechtigten einen
Wert, so ist der Finderlohn nach billigem Ermessen zu bestimmen.
(2) Der Anspruch ist ausgeschlossen, wenn der Finder die Anzeigepflicht
verletzt oder den Fund auf Nachfrage verheimlicht.
      Neugefasst durch Bek. v. 2.1.2002 I 42
      § 971
      Finderlohn
    

Wer seine Anwendung ohnehin in C# .NET schreibt, der kann direkt meinen Deserializer und die dazugehörige Wrapperklasse verwenden:

 
[Serializable]
    public class BGB
    {
        private List<Norm> _Normen;

        public List<Norm> Normen
        {
            get { return _Normen; }
            set { _Normen = value; }
        }

        [Serializable]
        public class Norm
        {
            private string _text;

            public string Text
            {
                get { return _text; }
                set { _text = value; }
            }

            private string _appendix;

            public string Appendix
            {
                get { return _appendix; }
                set { _appendix = value; }
            }

            private string _paragraph;

            public string Paragraph
            {
                get { return _paragraph; }
                set { _paragraph = value; }
            }

            private string _title;

            public string Title
            {
                get { return _title; }
                set { _title = value; }
            }
        }

        public BGB()
        {
            _Normen = new List<Norm>();
        }

        public void AddNorm(Norm Norm)
        {
            _Normen.Add(Norm);
        }
    }

Der (De-)Serializer:

 
public class Serializer
    {
        public void SerializeToXMLString<T>(T XMLObj, Stream s, Encoding encoding, bool removeNamespace)
        {
            try
            {
                XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
                XmlTextWriter xmlSink = new XmlTextWriter(s, encoding);
                xmlSink.Formatting = Formatting.Indented;

                if (removeNamespace)
                {
                    XmlSerializerNamespaces xs = new XmlSerializerNamespaces();
                    xs.Add("", "");
                    xmlSerializer.Serialize(xmlSink, XMLObj, xs);
                }
                else
                    xmlSerializer.Serialize(xmlSink, XMLObj);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);

                if (ex.InnerException != null)
                    Console.WriteLine(ex.InnerException);
            }
        }

        public void SerializeObjectToXMLFile<T>(T XMLObj, string Filename, Encoding encoding, bool removeNamespace)
        {
            FileStream fs = new FileStream(Filename, FileMode.Create);
            SerializeToXMLString<T>(XMLObj, fs, encoding, removeNamespace);
        }

        public void SerializeObjectToXMLFile<T>(T o, string Filename)
        {
            SerializeObjectToXMLFile<T>(o, Filename, Encoding.Unicode, true);
        }

        private MemoryStream GetUTF16MS(string xml)
        {
            // Encode the XML string in a UTF-8 byte array
            byte[] encodedString = Encoding.Unicode.GetBytes(xml);

            // Put the byte array into a stream and rewind it to the beginning
            MemoryStream ms = new MemoryStream(encodedString);
            ms.Flush();
            ms.Position = 0;
            return ms;
        }

        private bool DeserializeFromXMLString<T>(string XML, ref T myObject, bool allow_log)
        {
            if (XML == string.Empty)
                return false;

            XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
            MemoryStream ms = GetUTF16MS(XML);

            try
            {
                XmlReader xmlReader = XmlReader.Create(ms);
                while (xmlReader.Read())
                { }

                ms.Position = 0;
            }
            catch (Exception ex)
            {
                if (allow_log)
                    Console.WriteLine(ex.Message);

                return false;
            }

            //StringReader sr = new StringReader(XML);
            //myObject = (T)xmlSerializer.Deserialize(sr);
            myObject = (T)xmlSerializer.Deserialize(ms);

            return true;
        }

        public bool deserializeObjectByXML<T>(string data, ref T myObject, bool allow_log)
        {
            return DeserializeFromXMLString(data, ref myObject, allow_log);
        }
    }

Pass a list of Integers to a Stored Procedure in T-SQL

To pass a list of Integers from .NET C# to a Stored Procedure in your MS SQL Server, take a look on the following article:

  1. Serializer
  2. Create list of Integers
  3. Create Stored Procedure

Serializer

First of all, you need to implement a simple and reliable Object-to-XML Serializer:

 
        public string serializeObjectToXML<T>(T o)
        {
            return SerializeToXMLString<T>(o, Encoding.Unicode, true);
        }

        public string SerializeToXMLString<T>(T XMLObj, Encoding encoding, bool removeNamespace)
        {
            MemoryStream memStrm = new MemoryStream();
            SerializeToXMLString(XMLObj, memStrm, encoding, removeNamespace);
            memStrm.Position = 0;
            var sr = new StreamReader(memStrm);
            return sr.ReadToEnd();
        }

        public void SerializeToXMLString<T>(T XMLObj, Stream s, Encoding encoding, bool removeNamespace)
        {
            try
            {
                XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
                XmlTextWriter xmlSink = new XmlTextWriter(s, encoding);
                xmlSink.Formatting = Formatting.Indented;

                if (removeNamespace)
                {
                    XmlSerializerNamespaces xs = new XmlSerializerNamespaces();
                    xs.Add("", "");
                    xmlSerializer.Serialize(xmlSink, XMLObj, xs);
                }
                else
                    xmlSerializer.Serialize(xmlSink, XMLObj);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);

                if (ex.InnerException != null)
                    Console.WriteLine(ex.InnerException);
            }
        }

        private static string GetXMLIntList(List<int> JobList)
        {
            Serializer s = new Serializer();
            return s.serializeObjectToXML(JobList);
        }

Create list of Integers

Next step: create a list of Integers and serialize it to an XML-String.

List<int> ListOfInteger = new List<int>() { 1, 2, 3, 4, 5, 100, 101 };
string xml_ListOfInteger = GetXMLIntList(ListOfInteger);

The content of xml_ListOfInteger is now:



  1
  2
  3
  4
  5
  100
  101

Create Stored Procedure

Create your Stored Procedure and declare the XML document as a parameter. The following example returns the list directly.

CREATE PROCEDURE [dbo].[GetValues]
@xml nvarchar(max)
AS
BEGIN
SET NOCOUNT ON;

DECLARE @idoc int;
DECLARE @doc nvarchar(max)
SET @doc = CONVERT(nvarchar(max),@xml);

EXEC sp_xml_preparedocument @idoc OUTPUT, @doc

SELECT Value FROM OPENXML(@idoc, 'ArrayOfInt/int')
WITH (
Value int 'text()'
)
END