Vorlage für React-Testseite
React schnell und einfach ohne größeren Einrichtungsaufwand ausprobieren: (Skripte evtl. lokal speichern)
Testvorlage
Bitte beachtet jedoch, dass diese (minimalistische) Vorlage nicht für den produktiven Einsatz geeignet ist. 010203040506070809101112131415161718192021
<!DOCTYPE html><html> <head> <script src="https://unpkg.com/babel-standalone/babel.min.js"></script> <script src="https://unpkg.com/react/umd/react.production.min.js"></script> <script src="https://unpkg.com/react-dom/umd/react-dom.production.min.js"></script>
<script type="text/babel"> class MyApp extends React.Component { render() { return <strong>Hallo, Welt!</strong>; } }
ReactDOM.render(<MyApp />, document.getElementById('app')); </script> </head> <body> <div id="app"></div> </body></html>
C#-Member als obsolet kennzeichnen
Hin und wieder kann es sinnvoll sein, Programmelemente (z. B. Eigenschaften oder Methoden) als obsolet zu kennzeichnen. Dies ist insbesondere bei der Umsetzung allgemeiner Programmbibliotheken hilfreich, beispielsweise um den Anwender auf eine entfallende bzw. verbesserte Funktionalität hinzuweisen.
.NET stellt hierfür das
.NET stellt hierfür das
Obsolete
-Attribut zur Dekoration entsprechender Teile bereit. Die Verwendung ist intuitiv:
Programmelemente als obsolet kennzeichnen
Bei Verwendung dieser Klasse erscheint nun folgende Warnung in Visual Studio:
01020304050607080910111213
[Obsolete("Bitte verwenden Sie .NET-Standardfunktionalität.")]public static class Sorting { [Obsolete("Bitte verwenden Sie zumindest " + nameof(Mergesort) + ".", true)] public static string[] Bogosort(string[] data) { /* ohne Implementierung */ return data; }
public static string[] Mergesort(string[] data) { /* ohne Implementierung */ return data; }}
"Sorting" ist veraltet: "Bitte verwenden Sie .NET-Standardfunktionalität."Bei Verwendung der Methode
Bogosort
erscheint zusätzlich folgender Fehler:
"Sorting.Bogosort(string[])" ist veraltet: "Bitte verwenden Sie zumindest Mergesort."
Periodensystem der Elemente
Aus einem älteren Projekt habe ich einen Teil extrahiert und als Periodensystem der Elemente bereitgestellt.
Ich werde schrittweise noch einige weitere Informationen und auch Funktionalität ergänzen, kann dazu jedoch noch keinen konkreten Zeitplan nennen, da ich derzeit zeitlich leider recht eingespannt bin.
Ich werde schrittweise noch einige weitere Informationen und auch Funktionalität ergänzen, kann dazu jedoch noch keinen konkreten Zeitplan nennen, da ich derzeit zeitlich leider recht eingespannt bin.
Parameter einer C#-Methode per Reflexion ermitteln
In einem früheren Beitrag hatte ich beschrieben, wie sich die Parameter einer Methode in Java programmatisch ermitteln lassen. Zur Reflexion in C# möchte ich gerne einen etwas ausführlicheren Beitrag schreiben; auf Grund mehrfacher Nachfrage möchte ich zwischenzeitlich jedoch zumindest eine ähnliche Funktionalität für C# vorstellen:
Parameter einer C#-Methode per Reflexion ermitteln
Die Verwendung gestaltet sich sehr einfach; wir ermitteln dazu z. B. alle Parameter für 0102030405060708
public static IEnumerable<Dictionary<string, string>> GetMethodParameterList( string typeName, string methodName) { return Type.GetType(typeName).GetMethods() .Where(m => m.Name == methodName) .Select(m => m.GetParameters().ToDictionary(k => k.Name, v => v.ParameterType.Name));}
Console.WriteLine
:
Methode verwenden und Ergebnis auf der Standardausgabe ausgeben
Falls sich jemand über die verschachtelte Struktur wundert sei darauf hingewiesen, dass es auf Grund der Technik des Überladens mehrere Methoden gleicher Bezeichnung und daher auch mehrere Parameter-Listen geben kann. 010203040506070809101112
IEnumerable<Dictionary<string, string>> methodParameterList = GetMethodParameterList( "System.Console", "WriteLine");
foreach(Dictionary<string, string> method in methodParameterList) { foreach(KeyValuePair<string, string> parameter in method) { Console.WriteLine($"{parameter.Value} {parameter.Key}"); }
Console.WriteLine();}
Sprachausgabe mit C#
In diesem Beitrag möchte ich kompakt aufzeigen, wie sich mit C# programmatisch eine Sprachausgabe umsetzen lässt. Die programmatische Erkennung von Spracheingabe werde ich in einem separaten Beitrag behandeln.
Die technische Basis dieses Beitrages ist die
Die technische Basis dieses Beitrages ist die
SpeechSynthesizer
-Klasse. Zuerst kann man sich einen Überblick der installierten Stimmen verschaffen und ggf. geeignete(re) auswählen:
Sprachen auflisten und auswählen
Die eigentliche Sprachausgabe gestaltet sich sehr einfach:
010203040506070809101112
using(SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer()) { // Stimmen auflisten foreach(InstalledVoice installedVoide in speechSynthesizer.GetInstalledVoices()) { Console.WriteLine($"{installedVoide.VoiceInfo.Name}: {installedVoide.VoiceInfo.Description}"); }
// Stimme per Bezeichnung auswählen speechSynthesizer.SelectVoice("…");
// Stimme über Eigenschaften auswählen speechSynthesizer.SelectVoiceByHints(VoiceGender.Female, VoiceAge.Adult);}
Sprache ausgeben (oder speichern)
Darüber hinaus besteht mit der 01020304050607
using(SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer()) { // Ausgabe in WAV-Datei speechSynthesizer.SetOutputToWaveFile("helloWorld.wav");
// Text sprechen (bzw. speichern, sofern Ausgabe in Datei gewählt) speechSynthesizer.Speak("Ich begrüße alle Leser zu diesem neuen Beitrag.");}
SpeakSsml(…)
-Methode auch die Möglichkeit der Ausgabe SSML-formatierten Textes, worüber beispielsweise die besondere Betonung einzelner Wörter ermöglicht wird. Project links
-
BitStadt – Stadtportal
Berlin · Hamburg · Amsterdam -
CCC – Fahrplan
Schedules for the CCCongress
Categories / Archive | Übersicht
- PHP functions in C# (136)
- Dictionary (257)
Tags
.NET · ADO.NET · Work · ASP.NET MVC · Blog · C# · Generics · Society · Computer Science · Java · LINQ · Logic · Mathematics · Network · PHP · Project · Security · Software development · Studies · Technics · Theory · Web design · WPF