{"id":13899,"date":"2023-05-25T16:40:17","date_gmt":"2023-05-25T14:40:17","guid":{"rendered":"https:\/\/wp.jochen.hayek.name\/blog-de\/?p=13899"},"modified":"2023-05-25T16:40:18","modified_gmt":"2023-05-25T14:40:18","slug":"meine-ics2diary-utility-heute-etwas-verbessert","status":"publish","type":"post","link":"https:\/\/wp.jochen.hayek.name\/blog-de\/2023\/05\/25\/meine-ics2diary-utility-heute-etwas-verbessert\/","title":{"rendered":"meine ics2diary-Utility heute etwas verbessert"},"content":{"rendered":"\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/JochenHayek\/misc\/blob\/master\/diary\/ics2diary.pl\">https:\/\/github.com\/JochenHayek\/misc\/blob\/master\/diary\/ics2diary.pl<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Als ich vor Jahren noch etwas mehr mit der Deutschen Bahn unterwegs war und meine Bahn-Reisepl\u00e4ne noch ziemlich h\u00e4ufig in meinen eigenen &#8220;flachen&#8221; Textkalender \u00fcbertrug, schrieb ich mir in Perl eine Utility daf\u00fcr. In meinem &#8220;flachen&#8221; Textkalender \/ bzw. meinem Tagebuch AKA diary stehe alle meine Events und ich kann dort immer sehr \u00fcbersichtlich Details hinzuf\u00fcgen \u2013 weil ich seit soooooo vielen Jahren mit diesem Tagebuch (und auch &#8220;dezentralen&#8221;, aufgaben- bzw. projekt-spezifischen Tageb\u00fcchern) arbeite, kann ich mit einfachen Unix-\/Linux-Mitteln und auch mit dedizierten Utilities dort alles M\u00f6gliche finden und extrahieren, meine Arbeitszeiten, meine Kinobesuche, pi, pa, po \u2026<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/en.wikipedia.org\/wiki\/ICalendar\">https:\/\/en.wikipedia.org\/wiki\/ICalendar<\/a> \u2013 das Format der Quelldatei, gew\u00f6hnlich mit der Endung &#8220;.ics&#8221;<\/li>\n\n\n\n<li>BAHN_Fahrplan.ics \u2013 der Inhalt eines solchen Fahrplanes enth\u00e4lt normalerweise nat\u00fcrlich nicht nur Abreise und Ankunft, sondern alle Teil-Verbindungen \u2013 die will ich nat\u00fcrlich extrahieren, auch wenn sie &#8220;nur&#8221; im Text (&#8220;DESCRIPTION&#8221;) der &#8220;.ics&#8221;-Datei beinhaltet ist, dort aber eigentlich \u00fcber die Jahre hinweg in einem extrem stabilen Format \u2013 meine Utility kann also insbesondere mit dieser Unterform umgehen<\/li>\n\n\n\n<li><a href=\"https:\/\/www.gnu.org\/software\/emacs\/manual\/html_node\/emacs\/Format-of-Diary-File.html \">https:\/\/www.gnu.org\/software\/emacs\/manual\/html_node\/emacs\/Format-of-Diary-File.html <\/a> \u2013 das Format der &#8220;diary&#8221;-Datei in Emacs \u2013 eine richtig flache Text-Datei<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Meine &#8220;diary&#8221;-Eintr\u00e4ge sind gew\u00f6hnlich um &#8220;tags&#8221; angereichert, selbstverst\u00e4ndlich meine Reise-Eintr\u00e4ge erst recht.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Zeilen der DESCRIPTION werden im Original (das der Benutzer in seinem Kalender sieht) gerne auch mal sehr lange. In der &#8220;.ics&#8221;-Datei will man das nicht. Lange Zeilen werden in St\u00fccke zu weniger als 70 Zeichen zerteilt. Echte Zeilenumbr\u00fcche werden durch &#8220;\\n&#8221; gekennzeichnet. Den Fortsetzungszeilen einer DESCRIPTION wird ein einzelnes Leerzeichen vorangestellt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Meine Utility behandelte Leerzeichen am Zeilenende zusammen mit den Zeilenende-Zeichen und mithin etwas fahrl\u00e4ssig. Das hatte zur Folge, dass den wieder zusammengesetzten langen Zeilen einige Leerzeichen fehlten.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Heute hatte ich zwischen 2 Terminen die Mu\u00dfe und ein bisschen den Druck, dieses Problem zu analysieren und zu l\u00f6sen. Jetzt fehlt den erzeugten diary-Eintr\u00e4gen kein Leerzeichen mehr. Die L\u00f6sung dieses Problems hatte ich sehr, sehr lange auf die lange Bank geschoben. Jetzt freut es mich sehr, dass die Produkte meiner Utility vern\u00fcnftig aussehen. Auch meine Unit-Tests \/ Regression-Tests laufen jetzt &#8220;etwas anders&#8221; durch. Ich konnte in jedem einzelnen Fall die neue Output-Datei als Referenz-Output-Datei \u00fcbernehmen. Das f\u00fchlt sich gut an.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Heutzutage werden gerade im gesch\u00e4ftlichen Kontext viele &#8220;.ics&#8221;-Dateien zum Austausch pr\u00e4ziser Information zu Besprechungsterminen hin- und hergeschickt \u2013 ich genie\u00dfe es sehr, sie alle in mein Tagebuch \u00fcbernehmen zu k\u00f6nnen. Selbstverst\u00e4ndlich \u00fcbernehme ich eine Menge von Ihnen auch in einen meiner Online-Kalender, und das ist sehr, sehr n\u00fctzlich. Auf die Termine in meinen Online-Kalendern greife ich auch gerne f\u00fcr Video-Telefonate \u00fcber mein Chromebook zu \u2013 dazu brauche ich dort nur einen Kalender-Tab in einem Browser auf dem Chromebook, und hopplahop bin ich innerhalb von Sekunden auf dem Chromebook in meinem Video-Telefonat. Aber Notizen f\u00fcr den mittel- bis l\u00e4ngerfristigen Gebrauch habe ich doch viel lieber in meinem Emacs-diary (AKA Tagebuch).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Als ich vor Jahren noch etwas mehr mit der Deutschen Bahn unterwegs war und meine Bahn-Reisepl\u00e4ne noch ziemlich h\u00e4ufig in meinen eigenen &#8220;flachen&#8221; Textkalender \u00fcbertrug, schrieb ich mir in Perl eine Utility daf\u00fcr. In meinem &#8220;flachen&#8221; Textkalender \/ bzw. meinem Tagebuch AKA diary stehe alle meine Events und ich kann dort immer sehr \u00fcbersichtlich Details [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_seo_schema_type":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":false,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false,"_share_on_mastodon":"0"},"categories":[518],"tags":[1518],"class_list":["post-13899","post","type-post","status-publish","format-standard","hentry","category-tagebuch","tag-diary"],"share_on_mastodon":{"url":"","error":""},"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/paO0l8-3Cb","jetpack_likes_enabled":true,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/wp.jochen.hayek.name\/blog-de\/wp-json\/wp\/v2\/posts\/13899","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wp.jochen.hayek.name\/blog-de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wp.jochen.hayek.name\/blog-de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wp.jochen.hayek.name\/blog-de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wp.jochen.hayek.name\/blog-de\/wp-json\/wp\/v2\/comments?post=13899"}],"version-history":[{"count":1,"href":"https:\/\/wp.jochen.hayek.name\/blog-de\/wp-json\/wp\/v2\/posts\/13899\/revisions"}],"predecessor-version":[{"id":13900,"href":"https:\/\/wp.jochen.hayek.name\/blog-de\/wp-json\/wp\/v2\/posts\/13899\/revisions\/13900"}],"wp:attachment":[{"href":"https:\/\/wp.jochen.hayek.name\/blog-de\/wp-json\/wp\/v2\/media?parent=13899"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wp.jochen.hayek.name\/blog-de\/wp-json\/wp\/v2\/categories?post=13899"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wp.jochen.hayek.name\/blog-de\/wp-json\/wp\/v2\/tags?post=13899"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}