Mittwoch, 26. Mai 2021

26. Mai: Wan Makha Bucha (วันมาฆบูชา) - Feiertag

Am Mittwoch, dem 26. Mai, feiern die Theravada Buddhisten in ganz Südostasien traditionell den Wan Makha Bucha (วันมาฆบูชา). Dies ist einer der höchsten buddhistischen Feiertage, welches sich in Thailand unter anderem dadurch manifestiert, das ein landesweites Alkoholverbot gilt. Der Name dieses Feiertages setzt sich aus zwei Wörtern der alten Pali-Sprache zusammen. Makha (มาฆ) bezeichnet den dritten Monat im traditionellen thailändischen Mondkalender, der Patithin Djantha Rakhati (ปฏิทินจันทรคติ) genannt wird und puja (บูชา), was die Bedeutung von „Verehrung“ oder „Ehrerweisung“ hat. Den buddhistischen Tradierungen zufolge geht der Ursprung dieses Festes auf ein spontanes Treffen von 1.250 Mönchen zurück, die sich alle unabhängig voneinander entschieden hatten, an diesem Tag den historischen Buddha aufzusuchen, der zu dieser Zeit im Weluwan-Wald nahe Rajagriha (Rajgir) im historischen Königreich von Magadha in Nordostindien lebte. 




Der mit ihm befreundete König Bimbisara (พระเจ้าพิมพิสาร) hatte Buddha dieses Refugium gestiftet. Unter den 1.250 Mönchen sollen sich 1.000 sogenannte Arhats (พระอรหันต์) befunden haben, die vom Erleuchteten persönlich ordiniert worden waren. Ein Arhat ist nach buddhistischer Vorstellung ein Praktizierender, der Gier, Hass und Verblendung vollständig abgelegt hat. Er wird durch das Erreichen des Nirvana nicht mehr wiedergeboren, hat also den „ewigen“ Kreislauf von Geburt und Wiedergeburt verlassen. Die übrigen 250 Mönche waren Schüler der zwei bekanntesten Jünger Buddhas, Phra Mogallana (พระโมคคัลลานะ) und Phra Sariputta (พระสารีบุตร). Auch soll der Buddha im letzten Jahr seiner irdischen Existenz den Makha-Vollmondtag genützt haben, um zu verkünden, dass er innerhalb von drei Monaten sterben werde. Wann der Wan Makha Bucha erstmals in Thailand als offizieller Feiertag begangen wurde, ist nicht ganz eindeutig geklärt. Einen wichtigen Anhaltspunkt bietet allerdings eine Liste mit den religiösen Zeremonien innerhalb eines Jahres, die von Phra Bat Somdet Phra Chunchomklao Chao Yu Hua (พระบาทสมเด็จพระจุลจอมเกล้าเจ้าอยู่หัว), kurz Rama V., herausgegeben wurde. Dort findet sich der Hinweis, dass sein Vater Phra Bat Somdet Phra Chom Klao Chao Yu Hua (พระบาทสมเด็จพระจอมเกล้าเจ้าอยู่หัว) im Zuge der Gründung des von ihm gegründeten Thammayut-nikai-Ordens (ธรรมยุติกนิกาย) auch eine Zeremonie zum Makha-Bucha-Tag im Wat Phra Sri Rattana Satsadara (วัดพระศรีรัตนศาสดาราม), dem heutigen Wat Phra Käo (วัดพระแก้ว) feierte. 

Der Feiertag wurde also in Siam wahrscheinlich 1851 zum ersten Mal gefeiert und später dann im ganzen Königreich als öffentlicher religiöser Feiertag anerkannt. Eine andere Bezeichnung für den Makha Bucha Tag ist Wan Sangha (วันสงฆ์), wobei mit Sangha sowohl die Gemeinschaft der buddhistischen Praktizierenden, die Gemeinschaft der buddhistischen Erwachten („Edle Sangha“) als auch die Gemeinschaft der Laiengläubigen und der Ordinierten, welche, sich gegenseitig unterstützend, dem Buddha und der Lehre des Buddha (Dharma) folgen, bezeichnet wird. Für die Anhänger des Theravada Buddhismus ist der Tag Anlass, über die Bedeutung der Zugehörigkeit zu der „Vierfachen Gemeinschaft“ (parisa) nachzudenken. Die „Vierfache Gemeinschaft“ bilden vier Personengruppen, die konsequent die Lehre Buddhas befolgen: Die Mönche (Phra Bikkhu, พระภิกษุ), die Nonnen (Bikkhuni, ภิกษุณี), und die Laienanhängern und Laienanhängerinnen, die als Upasaka bzw. Upasika, wörtlich „Dabeisitzende(r)“ bezeichnet werden. Da am Makha Bucha Tag sich die Mönche unanhängig voneinander ohne einberufen worden zu sein beim Buddha einfanden, 1000 von ihnen bereits die Erleuchtung erlangt hatten und von Buddha persönlich ordiniert worden waren und dieses Ereignis am Vollmondtag im Makha-Monat stattfand, wird dieses Ereignis in Thailand auch Djaturongkhasannibat (จาตุรงคสันนิบาต, das „Vierfaches Zusammentreffen“) genannt. Die Makha-Bucha-Feier (Djat Ngan Wan Makha Bucha, จัดงานวันมาฆบูชา) begehen Buddhisten mit religiösen Aktivitäten wie Gabenspenden an die Mönche (tak baat, ตักบาตร) und/oder dem Anhören einer Predigt durch die Mönche (fang thet, ตักบาตร). Nach Einbruch der Dunkelheit leiten die Mönche die Gläubigen zu einer Kerzenprozession (wien thien, เวียนเทียน), wobei der Phra Ubosot (พระอุโบสถ), die Ordinationshalle, drei Mal von links nach rechts umrundet wird. Sowohl die Mönche als auch die Gläubigen tragen dabei drei Opfergaben: eine brennende Kerze, drei brennende Räucherstäbchen und einen Blumenkranz oder eine frische Blüte. Diese drei Opfergaben symbolisieren die Drei Kostbarkeiten (พระรัตนตรัย) der buddhistischen Lehre: Buddha, Dharma (seine Lehre) und Sangha (Mönchsorden).

Übernommen aus einer Veröffentlichung des Begegnungszentrum Pattaya durch Peter Hirsekorn, Vorsitzender des Kirchengemeinderates.


Dienstag, 18. Mai 2021

Windows Forms: anzeigen und verstecken des Paßwortes

 Ich habe eine schnelle Lösung gesucht, um ein Paßwort bei der Eingabe zu schützen, bei Bedarf soll es jedoch auch angezeigt werden können.

Mit einigen wenigen Bordmitteln und C#- oder VB-Code war es dann auch in wenigen Minuten geschafft.

 
Paßwortanzeige (hide)   Paßwortanzeige (show)


Ich habe einen normalen Button auf die Höhe eines Textfelds skaliert und in einem "Click Event" eine Toggel-Funktion untergebracht: Die Tauscht die Bilder aus und maskiert oder demaskiert das Paßwort.


        private void BtnViewPW_Click(object sender, EventArgs e)
        {
            if (TxtPassword.UseSystemPasswordChar)
            {
                TxtPassword.UseSystemPasswordChar = false;
                BtnViewPW.Text = "🔐";
            }
            else
            {
                TxtPassword.UseSystemPasswordChar = true;
                BtnViewPW.Text = "🔎";
            }
        }

Viel Spaß beim Nachbauen!

Samstag, 15. Mai 2021

wjk-Security Suite®: WhatsUP: Das war doch zu erwarten!


wjk-Security Suite®: WhatsUP: Das war doch zu erwarten!: Auf seinem online Dienst des "Der Farang" Magazins, weißen die Macher unter der Überschrift "Neue Datenschutzregeln bei WhatsApp" vom 15. Mai 2021, darauf hin, daß nach heftigen Protesten der Anwender und dem Wechsel vieler User zu anderen Diensten, die geänderten Datenschutzbestimmungen zwar verschoben wurden, daran aber festgehalten würde.  (...)







Mittwoch, 28. April 2021

wjk-Security Suite®: DuckDuckGo als Suchmaschine

wjk-Security Suite®: DuckDuckGo als SuchmaschineWir haben uns weitestgehend von "Bing" und "Google" als Suchmaschinen verabschiedet. Es ist fast unerträglich, daß wir bei "Google" von Werbung erschlagen werden, aber auch das Tracking unserer Suchen nervt. Als Alternative haben wir "DuckDuckGo" gefunden.

Freitag, 23. April 2021

nopCommerce jetzt in Nan's Online Shop im Einsatz

Wir haben Nan's Online Shop auf eine neue Software portiert. Der Shop läuft nun unter "nopCommerce", einer der besten Anwendungen, die wir kennen.

Diese hochprofessionelle Anwendung macht es uns auch möglich, offen für Co-Verkäufer (so genannte Vendors) zu sein. Wenn Sie also Ihre Produkte online verkaufen wollen, finden Sie auf Nan's Online Shop eine Plattform dafür. Mehr Informationen finden Sie im Shop.

Show this Post in English


Sonntag, 11. Oktober 2020

Bleun-Sales veröffentlich

 Black-Garlic-Powder innovativ hergestellt und im Vertrieb

Bleun-Logo

Die "Bleun® Engineering" hilft im Rahmen seines Beratungsauftrags jetzt auch im Vertrieb, so scheint es. Sprecher der Technikschmiede betonen jedoch: "Das soll die Ausnahme bleiben. Frau Bunprasoet ist nicht nur eine Kundin, sondern auch eine liebe Freundin unseres Hause, daher haben wir den online Auftritt übernommen."

Wir als "wjk-Software®", als beauftragtes Unternehmen, freut es natürlich, daher helfen wir auch beim Auftritt in den Social Media und in weiteren Aufbau des Vertriebs. Unser Haus war ja schon in früheren Jahren für bei Unternehmen tätig.

Sieht man sich die Site genauer an, kommt auch zum Ausdruck, daß der Vertrieb in den vertrauten Händen von "Nan's Online Shop" verbleibt und die Technik, die dahinter steckt, bei "Bleun" entwickelt wurde. So bleibt alles beim alten: Jeder macht, was er am besten kann.

Wir, die wir die Site entwickelt haben, hatten nur die Vorgabe, daß das Projekt flexibel eingesetzt werden kann. So haben wir es bei HTML und CSS3 belassen. Ein wenig JavaScript war nötig, um den Bestellprozeß anzustoßen und andere kleine Funktionalität umzusetzen-

Jetzt freuen wir uns, daß unsere Kunden zufrieden sind und wünschen viel Erfolg.

Diw Web-Site finden sie hier: Bleun-Sales





Sonntag, 2. August 2020

Discord-Bots mit der ASP.net-Web-Site hosten

Beim arbeiten am Projekt "Thai-Service.net", einer Web-Applikation im "BtoC"-Umfeld, stehen Kommunikationskanäle ganz oben an. So bin ich auf "Discord" aufmerksam geworden. Eigentlich ein Instand-Messaging-Dienst der ans Spieleumfeld angelegt ist. Mich haben die API-Schnittstellen begeistert.

Man kann da zum Beispiel "Bots" einrichten, die sehr vielfältige Aufgaben des Administrators automatisch erledigen (davon gibt es sehr viele "out of the box") oder, und da wird es interessant, man greift zu einer der beiden "C#"-Libraries und baut seine eigenen Bots. "Discord" hat eine APi, die allerdings nicht so schön ".net"-optimiert ist. Beide Libraries scheinen auch die gleichen Väter zu haben, den sie ähneln sich sehr. Der eine Anbieter nennt sein Produkt "Discord.net", der zweite seines "DSharpPlus". Warum ich mich bei der Auswahl auf zweiteres Produkt festgelegt habe, weiß ich nicht mehr, es muß mit der Dokumentation zusammen gehangen haben.

Da ich mit "Discord" erst seit zwei Tagen zu tun habe, kann ich nicht sehr viel erzählen darüber. Ich habe die Zeit genutzt, einiges auszuprobieren und vor allen Dingen ein Problem zu lösen, daß mir den Einsatz fast unmöglich gemacht hätte. Die Dokumentation beruht ausschließlich auf einer Konsolenanwendung basierend auf dem ASP.net-Framework "Core". Das würde bedeuten, daß ich neben dem Web-Space auch Server-Ressourcen anmieten müßte (so schlagen es auch die Dokumentationen vor). Das wäre es mir nicht wert gewesen.

Daher habe ich mir das ganze noch einmal angesehen und bin zum Schluß gekommen, das in die Web-Site zu integrieren. Die ist, wie wir wissen, dafür jedoch nicht gemacht. Das richtige wäre ein Dienst gewesen, aber auch das scheitert an den Vorgaben fast aller Anbieter von Web-Space 

Als erstes muß der "Bot" zum Leben erweckt werden und zwar 24 x 7, ohne daß die Web-Site beeinflußt wird (das könnte man auch anders lösen, aber mein Anspruch war die Integration)- So bin ich darauf verfallen den "Bot" in einen "generischen Handler" zu packen. Er sollte ja nur angestoßen werden und ab dann die Events des "Bots" aufzunehmen. Ich hatte auch andere Lösungen im Sinn ("Signal R" zum Beispiel), aber das wäre einfach zu aufwändig gewesen, auch wenn es den "saubereren" Ansatz darstellte.

Okay, gehen wir den unsauberen Weg. Als erstes sehen wir uns den "Handler" an, "BotResponse.ashx.cs":

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using DSharpPlus;
using DSharpPlus.Interactivity;
using DSharpPlus.CommandsNext;
using System.Threading.Tasks;

namespace ThaiService.Content
{
    /// <summary>
    /// Here the Discord-Bot is activated and the messages in the channel are intercepted and analyzed.
    /// </summary>
    public class BotResponse : IHttpHandler
    {
        static DiscordClient discord;
        static CommandsNextModule commands;
        static InteractivityModule interactivity;
        Dictionary<string, string> settings = new Models.DiscordBot().ReadSetting();

        public async void ProcessRequest(HttpContext context)
        {
            discord = new DiscordClient(new DiscordConfiguration
            {
                Token = (settings.TryGetValue("BasicBotToken", out string value)) ? value : "",
                TokenType = TokenType.Bot,
                UseInternalLogHandler = true,    // Here we must work on
                LogLevel = LogLevel.Debug
            });

            discord.GuildMemberAdded += async e =>
            {
                // In the future this messages are set in a database.
                await e.Member.SendMessageAsync("Hello, welcome on board!");
            };

            discord.MessageCreated += async e =>
            {
                if (e.Message.Content.ToLower().StartsWith("thai-service"))
                {
                    new Models.DiscordBot().AddMessage(e.Message);
                    await e.Message.RespondAsync("Thank you! The message is send to us...");
                }
            };

            discord.MessageCreated += async e =>
            {
                if (e.Message.Content.ToLower().StartsWith("ping"))
                    await e.Message.RespondAsync("pong!");
            };

            commands = discord.UseCommandsNext(new CommandsNextConfiguration
            {
                StringPrefix = (settings.TryGetValue("BasicBotPrefix", out value)) ? value : ""
            });

            await discord.ConnectAsync();
            await Task.Delay(-1);
        }



        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
    }


Im Source der "BotResponse.ashx.cs" habe ich einen Aufruf gelb gemarkert. Das wäre ein Beispiel dafür wie ein Event aus "Discord" heraus, an eine Funktion weiter geleitet und verarbeitet wird.
Ihr müsst Euch noch eine Classe basteln, die ggf. Commands enthält und Euch auch die Settings, Ins Besonderen das Token Eures Bots zurück gibt. Das ist in beiden Libraries sehr gut dokumentiert.

Der Aufruf in der "Default.aspx.cs" kreiert ein "Warning", da das "await" fehlt, Überseht es einfach einmal... (Wir können keinen "Awaiter" einfügen, da ansonsten unsere Web-Site nicht geladen würde. Da gibt es bessere Lösungen aber ich will ja sehen, das es läuft.)


    public partial class _Default : Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            lblBot.Text = startBot().Result;
        }

        private async Task<string> startBot()
        {
            // Test if the task is alrady started
            if (Session["task"] == null)
            {
                HttpContext context = HttpContext.Current;
                Session["task"] = Task.Run(() => new BotResponse().ProcessRequest(context));
                return "bot started!";
            }
            else
            {
// Hier kann ich ggf. feststellen, ob mein Bot noch läuft...
                return "bot is " + ((Task)Session["task"]).Status;
            }
        }
    }


In "Discord" kann man jetzt "ping" oder "thai-service" aufrufen und löst damit eine Aktion aus:



Der Aufruf "thai-service" am Beginn einer Nachricht führt dazu, daß eine Hinweis in unserem Messaging-System von "Thai-Service.net" geposted wird. Der Response in "Discord" ist ein schlichtes "Danke, die Nachricht wurde an uns gesendet..."




Achtung bitte:
Die Site "Thai-Service.net" ist noch nicht online. Daher könnt Ihr einen Live-Test nur ausprobieren, wenn ich sie an meinem Entwicklungsrechner gestartet habe....

Ihr könnt es gerne probieren, der Einladungslink ist: https://discord.gg/ETUKs8f






Wichtige Links:
"Discord" Web-Site: https://discord.com/new
"Discord" for Developer: https://discord.com/developers/