wozu blog software ?
Pinie
- blog
Ich will nicht mit Anfängerfragen nerven, doch es will sich mir einfach nicht erschliessen, wozu ich eine blog-software brauche. Solange ich auf Hochglanzverpackung verzichte kann ich doch alles mit simpelstem HTML erledigen (eine einzige statische HTML Seite mit Abschnitt f Absch.)
Eine Sache wäre (für meine Vorhaben) aber interessant : Wenn ein Besucher meines blogs die ersten 3 Abschnitte / Tage bereits gelesen hat, dann sollte er beim nächsten Besuch meiner Seite nicht wieder Abschnitt 1 präsentiert bekommen (= zum Weiterlesen zu Abschn 4 scrollen müssen). Doch auch dafür wird es sicher eine simple html-Lösung geben ... cookies ? was besseres ?
Frank
Servus!
Ich will nicht mit Anfängerfragen nerven, doch es will sich mir einfach nicht erschliessen, wozu ich eine blog-software brauche.
Brauchen != haben wollen
Solange ich auf Hochglanzverpackung verzichte kann ich doch alles mit simpelstem HTML erledigen (eine einzige statische HTML Seite mit Abschnitt f Absch.)
Ja, da hast du recht!
Viele Blog-Autoren wollen aber nicht mit HTML in Kontakt kommen und bevorzugen
Eine Sache wäre (für meine Vorhaben) aber interessant : Wenn ein Besucher meines blogs die ersten 3 Abschnitte / Tage bereits gelesen hat, dann sollte er beim nächsten Besuch meiner Seite nicht wieder Abschnitt 1 präsentiert bekommen (= zum Weiterlesen zu Abschn 4 scrollen müssen). Doch auch dafür wird es sicher eine simple html-Lösung geben ... cookies ? was besseres ?
Wie wahrscheinlich ist es, dass ein Besucher nicht auf die Neueren, sondern auf die älteren ungelesenen Artikel zugreifen will. Und würde er, wenn es etwas neueres als die bereits gelesenen Artikel geben würde, dann den Neuesten oder den älteren ungelesenen Beitrag zu sehen bekommen?
Frank
Herzliche Grüße
Matthias Scharwies
Hallo
Ich will nicht mit Anfängerfragen nerven, doch es will sich mir einfach nicht erschliessen, wozu ich eine blog-software brauche.
Ähhm, zum bloggen?
Solange ich auf Hochglanzverpackung verzichte kann ich doch alles mit simpelstem HTML erledigen (eine einzige statische HTML Seite mit Abschnitt f Absch.)
Mal ernsthaft: Natürlich kannst du einen Blogartikel in ein statisches HTML-Dokument gießen und so veröffentlichen. Wenn du es kannst. Blogsoftware hält dich vom HTML-Quelltext fern. Für die meisten Benutzer von Blogsoftware ist das ein Vorteil, denn sie wollen und/oder können sich mit HTML nicht beschäftigen. Das ist nicht jedermanns Sache und deshalb gibt es solche Software.
Eine Sache wäre (für meine Vorhaben) aber interessant : Wenn ein Besucher meines blogs die ersten 3 Abschnitte / Tage bereits gelesen hat, dann sollte er beim nächsten Besuch meiner Seite nicht wieder Abschnitt 1 präsentiert bekommen (= zum Weiterlesen zu Abschn 4 scrollen müssen). Doch auch dafür wird es sicher eine simple html-Lösung geben ... cookies ? was besseres ?
Du ermittelst die Info, wie weit ein Besucher gescrollt hat, im Browser. Du solltest diesen Wert auch im Browser speichern, damit jeder Besucher, der solche Daten akzeptiert, in den Genuss des Merkers kommt. Für diesen einen Wert (pro Artikel) ist mMn ein Cookie die richtige Wahl.
Wenn du es kompliziert haben wolltest, könntest du den Wert im Browser ermitteln, an den Server übertragen, dort speichern und beim n#ächsten Besuch wieder an den Browser senden. Das setzt natürlich eine Benutzerverwaltung voraus, damit klar ist, welches Datum an wen gesendet werden soll. Wie gesagt, kompliziert.
Tschö, Auge
Eine Sache wäre (für meine Vorhaben) aber interessant : Wenn ein Besucher meines blogs die ersten 3 Abschnitte / Tage bereits gelesen hat, dann sollte er beim nächsten Besuch meiner Seite nicht wieder Abschnitt 1 präsentiert bekommen (= zum Weiterlesen zu Abschn 4 scrollen müssen). Doch auch dafür wird es sicher eine simple html-Lösung geben ... cookies ? was besseres ?
Kommt darauf an, welche UnMengen an Texten Du in die Welt heckst und wie Du das machst, z.B. chronologisch kreuz und quer und regelmäßig oder sporadisch themenbezogen. Da Zauberwort heißt dann eindampfen (Archivieren), chronologisch z.B. nach Tagen, Wochen, Monaten usw. und zwar so, dass ein Besucher auch ältere Beiträge mühelos wieder aufsuchen kann. Ansonsten liegt das Neueste immer obendrauf ;)
Ich will nicht mit Anfängerfragen nerven, doch es will sich mir einfach nicht erschliessen, wozu ich eine blog-software brauche. Solange ich auf Hochglanzverpackung verzichte kann ich doch alles mit simpelstem HTML erledigen (eine einzige statische HTML Seite mit Abschnitt f Absch.)
Es hängt von den Anforderungen ab. Das hat etwa @Matthias Scharwies ja bereits umrissen. Eine Blog-Software im Stile von WordPress kann eben viel mehr, als nur einfache Texte anzuzeigen.
Wenn du dir sehr sicher bist, mit grundlegender Funktionalität auszukommen, spricht aber prinzipiell nichts dagegen, die Seiten auch von Hand in reinem HTML zu erstellen. Dazu gleich noch mehr. Ich würde dir aber sehr empfehlen, eine Software wie WordPress zumindest mal auszuprobieren, damit du besser einschätzen kannst, auf welche Funktionalität und welchen Komfort du verzichtest.
Eine Sache wäre (für meine Vorhaben) aber interessant : Wenn ein Besucher meines blogs die ersten 3 Abschnitte / Tage bereits gelesen hat, dann sollte er beim nächsten Besuch meiner Seite nicht wieder Abschnitt 1 präsentiert bekommen (= zum Weiterlesen zu Abschn 4 scrollen müssen). Doch auch dafür wird es sicher eine simple html-Lösung geben ... cookies ? was besseres ?
Eine HTML-Lösung dafür gibt es definitiv nicht. In HTML selbst ist keine Programmierung möglich, es ist ein reines Auszeichnungsformat. Für die Anforderung benötigst du mindestens clientseitiges JavaScript und je nachdem vielleicht auch serverseitige Programmierung. Ich sehe bei dem Vorhaben aber schon zwei Probleme, weshalb ich es in der Form lassen würde.
Nutzer könnten durchaus verschiedene Devices (Desktop, Smartphone, Tablet, …) oder auch Browser verwenden (wollen), um auf deine Seite zuzugreifen. Die Speicherung des Lese-Fortschritts kriegst du zwischen diesen Geräten nicht synchronisiert, ohne jedem Nutzer einen Account/ein Login zu geben und die entsprechenden Daten serverseitig zu speichern.
Etliche Nutzer lassen Cookies beim Schließen des Browsers löschen. Das kann man zwar seitenspezifisch einstellen, aber zum Beispiel ich würde in der Hinsicht für deine Seite bestimmt keine Ausnahme konfigurieren. Das liegt nicht an deiner Seite, ich sehe einfach die Notwendigkeit nicht. Es funktioniert so seit Jahren wunderbar für mich. Zudem löst das wenn auch nur einen Teil der Probleme (siehe Punkt 1).
Wenn das nicht gerade ein zentrales Gimmick deiner Seite werden soll, würde ich daher über so ein Feature erst mal nicht groß nachdenken. Wenn du zum Beispiel oben auf der Seite eine Liste von Links zu einzelnen Artikeln hast, kannst du via CSS (a:visited
) die besuchten Links anders einfärben (ist auch standardmäßig der Fall) und hast im Grunde so eine ähnliche Funktionalität geschaffen, die wahrscheinlich sogar robuster ist als Cookies, weil vermutlich weniger Leute ständig ihre Browser-History löschen dürften.
Letztlich hängt es natürlich von deinen Anforderungen und Wünschen ab.
⁂
Dann möchte ich als Zwischending zwischen dem händischen Schreiben von HTML-Code und einer serverseitigen Blog-Software noch kurz auf statische Generatoren für Webseiten hinweisen. Ich finde gerade leider nichts, was ich sinnvoll verlinken könnte, daher hier eine Übersichtsseite, die verschiedene Generatoren auflistet. (Jekyll, Hugo und Nikola wären einige Namen, die mir ins Auge springen.) Die Idee ist, dass zum Beispiel einzelne Artikel/Posts/Seiten in jeweils eigenen Dateien in einem Format wie etwa Markdown geschrieben werden können (wie die Posts hier im Forum). Dazu werden dann gewisse Metadaten mit in der Datei gespeichert. Dann wird (auf dem eigenen Rechner) das entsprechende Generator-Tool aufgerufen, das dann jede diese Dateien hernimmt und den Inhalt in HTML umwandelt, mit einem Rahmenlayout versieht, vielleicht einen Index erstellt und alles als fertige HTML-Seiten in ein Ausgabeverzeichnis schreibt. Der Inhalt dieses Verzeichnisses kann dann einfach auf den Webserver kopiert werden, auf dem dann auch kein serverseitiger Code mehr vorhanden sein muss, weil es alles fertige HTML-Seiten und sonstige statische Ressourcen sind.
Hier drei Beispiele für auf diese Weise generierte Seiten, die mir spontan einfallen:
Das gibt es aber in allen Formen und Farben und geht natürlich auch grafisch aufwändiger.
Meines Erachtens ist das für viele Anforderungen eine gute Lösung. Zumal die tatsächlichen Inhalte in der Regel auch in einem Format vorliegen, von dem aus man später im Notfall wohl halbwegs gut in eine serverseitig laufende Software/ein CMS importieren könnte.
Der „Nachteil“ ist eben, dass das erst mal alles wirklich rein statisch ist und man etwa für Kommentare beispielsweise einen externen Anbieter wie Disqus per JavaScript einbinden müsste, weil man auf dem eigenen Server eben die entsprechende Logik, Kommentare zu verwalten, nicht liegen hat.
Ein anderer „Nachteil“ könnte sein, dass man manchmal etwas erfinderisch werden muss, wenn man komplexere Inhalte oder Inhaltstypen sinnvoll einpflegen möchte, die im benötigten Umfang so nicht von Haus aus vom Tool unterstützt werden. Ist etwas schwierig zu erklären und ehrlich gesagt auch mehr ein akademisches Argument, weil das etwa bei WordPress auch nicht unbedingt anders ist. Es ist eben in gewisser Weise alles schematisiert.
So ein Generator ist aber in jedem Fall etwas, das ich mir auch ansehen würde. Ich mache insbesondere privaten Kram mittlerweile fast nur noch über statische Generatoren. Es ist ein gutes Gefühl, nur fertiges HTML und dergleichen auf dem Server liegen zu haben und keine große Software, die Bugs haben könnte und Updates benötigt und so. Wenn es von den Anforderungen her passt, bleibt auf diese Weise alles schön simpel.
Ich danke euch allen sehr !!!
Gegen die einfache Lösung "Cookies" sprechen "Löschen des Browser-Cache" und "Verwenden verschiedener Rechner/Browser" (das mach ich oft). Doch solche Exoten (wie ich) sind prozentual wohl ein geringer Anteil (= also vielleicht doch Cookies).
Überzeugt hat mich die Argumentliste für Blog-Software + angepasste Darstellung auf verschiedenen Devices (Smartphone, Laptop, ...). Und gefallen hat mir "brauchen != haben wollen" :))))))))
Die Generierung statischer Webseiten mit Tools vor dem Upload gefällt mir auch sehr gut, danke f d ausführliche Beschreibung & Antwort ! Das muss ich irgendwann mal genauer "durchlaufen & ausprobieren". In der letzten Woche bin ich über Lektor gestolpert. Aber in der letzten Woche habe ich auch meine erste Erdbebenerfahrung im Zentrum Italiens gemacht ... das wird der Inhalt meines Blogs ("vielleicht-blogs"): Die Medien schreiben immer nur über zerstörte Gebäude und gebrochene Brücken. Ich bin Software-Engineer, Lehrer & Psychologe, d.h. ich schreibe über gebrochene Menschen und solche die auf dem Weg dazu sind. Das kostet auch einen Psychologen manchmal richtig viel Kraft und erzeugt (auch bei mir) Erholungsbedarf. Deswegen will ich möglichst wenig Energie in technische Details & Einarbeitung stecken = mehr Zeit in heftigst Leid-geplagte Schicksale investieren können.
Ich schwanke zwischen einer möglichst einfachen Blog-Software und einem statischen Tool / html-Generator (hätte sicher besser formuliert werden können). Ein Feature würde mir noch gefallen: Bei facebook werden Seiten-Teile nachgeladen wenn man scrollt. Sowas fände ich gut ... zum Beispiel dass immer die "zwei nächsten Bildschirmseiten" bereits nachgeladen sind (falls weitergelesen wird) damit beim Scrollen keine Verzögerung durch Nachlade-Zeit entsteht.
Was mir hier in und um L'Aquila an Leid, nervlicher Gebrochenheit & blanker Hoffnungslosigkeit bei Jung & Alt ins Auge fällt, macht es mir schwer, Zeit in die technischen Details einer Blog-Software und deren Installation & Pflege abzweigen zu wollen. Ihr habt Ahnung. Also was soll ich nehmen ? Nehmt mir die Entscheidung ab. Sollten mehrere Vorschläge (von euch) kommen, dann werfe ich den Würfel.
Ich mach nur Text (wie hier) und ein paar Photos dazu.
Liebe & dankende Grüße aus der Erdbebenstadt 2009 : L'Aquila
Frank
Ja, eine möglichst einfache Blog-Software solls sein. Wordpress ist mir zu groß, Open Source wäre super ... ich bin auch hier mit dabei ... warum die mich nicht beraten ? die haben genug in ihren Jobs, mit der Sorge um ihre Familien/Kinder und mit dem Ertragen der seismischen Ereignisse zu tun.
Hallo
Gegen die einfache Lösung "Cookies" sprechen "Löschen des Browser-Cache" und "Verwenden verschiedener Rechner/Browser" (das mach ich oft). Doch solche Exoten (wie ich) sind prozentual wohl ein geringer Anteil (= also vielleicht doch Cookies).
Naja, ein absichtlich gelöschter Browsercache bzw. genauer das Nichtzulassen oder Löschen der Cookies ist die Entscheidung des Besuchers. Das ist mMn kein Argument gegen Cookies. Eine Seite mit mehreren Geräten aufzusuchen, ist heutzutage aber mehr oder minder normal. Nicht unbedingt mit mehreren Browsern an einem Gerät (das macht man wohl nur als Entwickler), aber eben mit mehreren Geräten. Das spricht tatsächlich gegen Cookies (und andere browserseitige Speicherlösungen).
Du musst aber den Aufwand gegen den Nutzen abwägen. Speicherst du den Scrollstatus im Browser, bleibt er dort und ist mit einem anderen Gerät nicht verfügbar. In diesem Browser kann der Besucher aber beim nächsten Mal wieder darauf zugreifen. Speicherst du ihn auf dem Server, musst du den Benutzer über Gerätegrenzen hinweg wiedererkennen. Das geht mit einer Benutzerregistrierung mit Login. Hier stellt sich die Frage, ob Besucher sich in einem Blog als Nutzer registrieren würden. Ich würde diese Frage mit nein beantworten.
Zudem stellt sich die Frage, ob es dafür eine vorhandene Lösung gibt. Ich wüsste sie nicht zu beantworten. Blogsysteme gibt es in klein und groß. Aber ob es eines gibt, dass solch ein Spezialfeature enthält?
Liebe & dankende Grüße aus der Erdbebenstadt 2009 : L'Aquila
Toi, toi, toi.
Tschö, Auge
Spezialfeature
Letztlich ist wohl das der Punkt: Es ist ein Spezialfeature. Braucht man das wirklich? Vor allem dann, wenn die Energie erst mal für den Inhalt genutzt werden soll.
@Pinie
In der letzten Woche bin ich über Lektor gestolpert.
Davon habe ich auch schon gehört. (Weiß aber nicht mehr genau wo, deshalb hatte ich es in meiner Aufzählung nicht drin.) Das wird aber auch gut sein.
Deswegen will ich möglichst wenig Energie in technische Details & Einarbeitung stecken = mehr Zeit in heftigst Leid-geplagte Schicksale investieren können.
Na ja, du kannst dir auch einen Blog auf zum Beispiel wordpress.com erstellen. Sogar mit custom domain. Das geht in 5 Minuten und du bleibst wohl von administrativen Aspekten (Aufsetzen der Software und dergleichen) nahezu unberührt.
Für WordPress gibt es auch freie Themes, die Infinite Scroll unterstützen.
Ich schwanke zwischen einer möglichst einfachen Blog-Software und einem statischen Tool / html-Generator (hätte sicher besser formuliert werden können). Ein Feature würde mir noch gefallen: Bei facebook werden Seiten-Teile nachgeladen wenn man scrollt. Sowas fände ich gut ... zum Beispiel dass immer die "zwei nächsten Bildschirmseiten" bereits nachgeladen sind (falls weitergelesen wird) damit beim Scrollen keine Verzögerung durch Nachlade-Zeit entsteht.
Ich würde ein WordPress nutzen (via wordpress.com) oder selbst installieren mit einem der angesprochenen Themes. Das scheint mir am ehesten deinen Wünschen und deiner verfügbaren Zeit/Energie zu entsprechen.
Infinite Scroll ist bei statischen Lösungen prinzipbedingt wieder schwierig, weil serverseitig nichts existiert, das dynamisch weitere Einträge liefern könnte.
Wordpress ist mir zu groß
Hast du es mal benutzt? :)
Hallo
Da ich dein Posting als hilfreich erachte, es sich aber vorwiegend nicht an mich sondern an den Pinie richtet, habe ich ihm mal ein Mention hinzugefügt. Ich hoffe, das ist in deinem Sinne.
Tschö, Auge
Klar, danke. Bekommt man nur eine Benachrichtigung bei Direktantworten?
Hallo mermshaus,
Klar, danke. Bekommt man nur eine Benachrichtigung bei Direktantworten?
Das hängt von der Nutzer-Konfiguration ab.
LG,
CK
Hallo
Klar, danke. Bekommt man nur eine Benachrichtigung bei Direktantworten?
Um @Christian Kruse zu ergänzen: Schau dich in deinen persönlichen Einstellungen – konkret im Abschnitt Benachrichtigungen – um. :-) Wie du sehen wirst, gibt es für viele Ereignisse die Möglichkeit für Benachrichtigungen.
Tschö, Auge
Ja, gesehen habe ich das schon. Viele Einträge dort verstehe ich aber nicht richtig, glaube ich.
Ich versuche mal, eine Art Feedback zu geben. Ist vielleicht ganz interessant. Ansonsten aber auch nicht so wichtig, ich komme schon klar. ;)
(Hier müsste ich also jetzt @Christian Kruse @-erwähnen, wenn er auch eine Benachrichtigung erhalten sollte, weil ich nicht direkt auf ihn antworte? Es sei denn er hätte „Benachrichtigung bei Aktivität im Thread“ aktiviert? Und die @-Erwähnung würde auch nur funktionieren, wenn er die entsprechende Einstellung dazu aktiviert hätte?)
Mit JavaScript über neue Beiträge informieren
Worauf bezieht sich das (gesamtes Forum; Threads, die ich erstellt habe; Threads, in denen ich gepostet habe; direkte Antworten auf einen meiner Beiträge; Antworten im „Sub-Thread“ eines meiner Beiträge, …) und wie äußert sich das?
Benachrichtigung bei neuer Post
Das dürfte sich auf die Funktionalität für persönliche Nachrichten beziehen („Post“ rechts oben im Interface). Das ist verständlich genug. Wobei… Das heißt, dass ich zusätzlich zu dem PostCounter++ auch noch ein BenachrichtigungenCounter++ im Interface rechts oben bekommen würde, das mich über das PostCounter++ informiert?
Hier (bzw. allgemein) verstehe ich auch die Wahl zwischen „ja“ und „via E-Mail“ nicht. Ich nehme an, dass „via E-Mail“ die Funktionalität von „ja“ mit einschließt? Dass sich dann also der Counter im Interface hinter Benachrichtigung bzw. Post erhöht und dass ich zusätzlich noch eine E-Mail erhalte?
Und bei „nein“ passiert beides nicht? (Was etwas sinnlos wäre.) Oder gibt es dann ein PostCounter++, aber kein BenachrichtigungenCounter++?
Gelesene Benachrichtigungen für neue Privat-Nachrichten automatisch löschen
„Private-Nachricht“ meint dasselbe wie „Post“? Falls ja, heißt das, dass ich zusätzlich zu einem Counter++ hinter „Post“ dann auch noch eine Benachrichtigung erhalte, dass ich eine Post erhalten habe, also ein Counter++ hinter Benachrichtigungen, die automatisch wieder verschwindet, wenn ich die zugehörige Post gelesen habe?
Benachrichtigung bei Antwort
Ähnliches Problem wie bei „Mit JavaScript über neue Beiträge informieren“. Was ist eine „Antwort“? Ich denke mal, wenn jemand bei einem Beitrag von mir auf „antworten“ klickt. Das würde mir also keine Benachrichtigung senden, wenn in einem Thread von mir jemand nicht direkt auf einen meiner Beiträge antwortet.
Der letzte Punkt gerade auch in Abgrenzung zu „Benachrichtigung bei Aktivität im Thread“. Bezieht sich „Benachrichtigung bei Aktivität im Thread“ nur auf von mir erstellte (Sub-)Threads oder auf alle (Sub-)Threads, in denen ich gepostet habe?
Gelesene Benachrichtigungen bei Thread-Aktivität automatisch löschen
Das ist ganz schwierig für mich zu verstehen. Ist zum Beispiel meine Thread-Aktivität gemeint oder generell Thread-Aktivität. Was ist „Aktivität“? Das Schreiben eines Beitrags? Das Lesen eines Beitrags? Beides?
Die restlichen Einstellungen sind verständlich genug, schätze ich.
Hallo
Ja, gesehen habe ich das schon. Viele Einträge dort verstehe ich aber nicht richtig, glaube ich.
(Hier müsste ich also jetzt @Christian Kruse @-erwähnen, wenn er auch eine Benachrichtigung erhalten sollte, weil ich nicht direkt auf ihn antworte?
Ja.
Es sei denn er hätte „Benachrichtigung bei Aktivität im Thread“ aktiviert?
Ja.
Und die @-Erwähnung würde auch nur funktionieren, wenn er die entsprechende Einstellung dazu aktiviert hätte?)
Ja.
Mit JavaScript über neue Beiträge informieren
Worauf bezieht sich das (gesamtes Forum; Threads, die ich erstellt habe; Threads, in denen ich gepostet habe; direkte Antworten auf einen meiner Beiträge; Antworten im „Sub-Thread“ eines meiner Beiträge, …) und wie äußert sich das?
Bei jedem neuen Eintrag wird ein knallrotes Favicon statt des blau-weiß-orangenen geladen und im Tab-Titel angezeigt. Weiterhin wird, entsprechend des Balkens, der dich über die erfolgreiche Erstellung eines Postings informiert, bei jedem neu hinzugekommenen Eintrag die Anzahl der neuen Postings und Threads seit dem letzten laden der Seite vom Server angezeigt.
Benachrichtigung bei neuer Post
Das dürfte sich auf die Funktionalität für persönliche Nachrichten beziehen („Post“ rechts oben im Interface). Das ist verständlich genug. Wobei… Das heißt, dass ich zusätzlich zu dem PostCounter++ auch noch ein BenachrichtigungenCounter++ im Interface rechts oben bekommen würde, das mich über das PostCounter++ informiert?
Gute Frage. Ich krieg' so selten Post. Weiter unten stehende Fragen implizieren aber, dass bei neuer Post eine zusätzliche Benachrichtigung erzeugt wird.
Hier (bzw. allgemein) verstehe ich auch die Wahl zwischen „ja“ und „via E-Mail“ nicht. Ich nehme an, dass „via E-Mail“ die Funktionalität von „ja“ mit einschließt?
Wenn du „ja“ wählst, wird eine [WorumEsAuchImmerKonkretGehenMag] innerhalb des Forums erzeugt, bei „via E-Mail“ wird dir stattdessen eine Email zugesandt.
Und bei „nein“ passiert beides nicht? (Was etwas sinnlos wäre.)
Ja. Und sinnlos ist es IMHO nicht. Wenn ich über neue Ereignisse nicht benachrichtigt werden will, will ich das nicht. Ich sehe ja bei meinem nächsten Besuch eh, was los ist. Und persönliche Post liegt halt im Postfach und wartet einfach auf mich.
Gelesene Benachrichtigungen für neue Privat-Nachrichten automatisch löschen
„Private-Nachricht“ meint dasselbe wie „Post“? Falls ja, heißt das, dass ich zusätzlich zu einem Counter++ hinter „Post“ dann auch noch eine Benachrichtigung erhalte, dass ich eine Post erhalten habe, also ein Counter++ hinter Benachrichtigungen, die automatisch wieder verschwindet, wenn ich die zugehörige Post gelesen habe?
Ja.
Benachrichtigung bei Antwort
Ähnliches Problem wie bei „Mit JavaScript über neue Beiträge informieren“. Was ist eine „Antwort“?
Eine Antwort auf eines deiner Postings.
Das würde mir also keine Benachrichtigung senden, wenn in einem Thread von mir jemand nicht direkt auf einen meiner Beiträge antwortet.
Vermutlich ja.
Der letzte Punkt gerade auch in Abgrenzung zu „Benachrichtigung bei Aktivität im Thread“. Bezieht sich „Benachrichtigung bei Aktivität im Thread“ nur auf von mir erstellte (Sub-)Threads oder auf alle (Sub-)Threads, in denen ich gepostet habe?
Es geht um Threads an denen du beteiligt bist.
Gelesene Benachrichtigungen bei Thread-Aktivität automatisch löschen
Das ist ganz schwierig für mich zu verstehen. Ist zum Beispiel meine Thread-Aktivität gemeint oder generell Thread-Aktivität. Was ist „Aktivität“? Das Schreiben eines Beitrags? Das Lesen eines Beitrags? Beides?
Es ist das Erstellen eines Beitrags gemeint. Wäre ja noch schöner, wenn jedesmal,w enn jemand einen Eintrag bzw. den Thread anfordert eine nachricht darüber bei mir eintrudelt. :-)
Das Löschen der Benachrichtigung bezieht sich (in jedem Abschnitt) darauf, dass du den entsprechenden Beitrag irgendwann liest und die Benachrichtigung somit hinfällig ist.
Tschö, Auge
Hallo Auge,
Benachrichtigung bei neuer Post
Das dürfte sich auf die Funktionalität für persönliche Nachrichten beziehen („Post“ rechts oben im Interface). Das ist verständlich genug. Wobei… Das heißt, dass ich zusätzlich zu dem PostCounter++ auch noch ein BenachrichtigungenCounter++ im Interface rechts oben bekommen würde, das mich über das PostCounter++ informiert?
Ja. Das ist ein Überbleibsel aus der Zeit, als man die Post noch nicht oben in der Leiste hatte. Ich wollte das schon lange mal entfernen.
Hier (bzw. allgemein) verstehe ich auch die Wahl zwischen „ja“ und „via E-Mail“ nicht. Ich nehme an, dass „via E-Mail“ die Funktionalität von „ja“ mit einschließt?
Wenn du „ja“ wählst, wird eine [WorumEsAuchImmerKonkretGehenMag] innerhalb des Forums erzeugt, bei „via E-Mail“ wird dir stattdessen eine Email zugesandt.
Nicht stattdessen, sondern zusätzlich.
Das würde mir also keine Benachrichtigung senden, wenn in einem Thread von mir jemand nicht direkt auf einen meiner Beiträge antwortet.
Vermutlich ja.
Nicht nur vermutlich.
Aber ich schrieb es schonmal vor kurzem, das ganze Konzept möchte ich auf ein Abo-Konzept umstellen, weil mir das so zu unflexibel bin; ich habe mir schon öfter gewünscht, Threads deabonieren zu können.
Das Löschen der Benachrichtigung bezieht sich (in jedem Abschnitt) darauf, dass du den entsprechenden Beitrag irgendwann liest und die Benachrichtigung somit hinfällig ist.
Richtig. Kurz gesagt: du liest eine Nachricht, zu der eine Benachrichtigung vorliegt, daraufhin wird diese automatisch gelöscht.
LG,
CK
Hallo
Hier (bzw. allgemein) verstehe ich auch die Wahl zwischen „ja“ und „via E-Mail“ nicht. Ich nehme an, dass „via E-Mail“ die Funktionalität von „ja“ mit einschließt?
Wenn du „ja“ wählst, wird eine [WorumEsAuchImmerKonkretGehenMag] innerhalb des Forums erzeugt, bei „via E-Mail“ wird dir stattdessen eine Email zugesandt.
Nicht stattdessen, sondern zusätzlich.
Ist das sinnvoll? Wenn ich eine Email erhalten habe, brauche ich die foreninterne Benachrichtigung doch nicht‽
Das würde mir also keine Benachrichtigung senden, wenn in einem Thread von mir jemand nicht direkt auf einen meiner Beiträge antwortet.
… ja.
Aber ich schrieb es schonmal vor kurzem, das ganze Konzept möchte ich auf ein Abo-Konzept umstellen, weil mir das so zu unflexibel bin; ich habe mir schon öfter gewünscht, Threads deabonieren zu können.
Ja, Abbonements gefallen mir. So kann ich als Nutzer selbst dafür sorgen, dass ich keine Benachrichtigung für einen Thread, an dem ich das Interesse verloren habe, bekomme.
Tschö, Auge
Hallo Auge,
Hier (bzw. allgemein) verstehe ich auch die Wahl zwischen „ja“ und „via E-Mail“ nicht. Ich nehme an, dass „via E-Mail“ die Funktionalität von „ja“ mit einschließt?
Wenn du „ja“ wählst, wird eine [WorumEsAuchImmerKonkretGehenMag] innerhalb des Forums erzeugt, bei „via E-Mail“ wird dir stattdessen eine Email zugesandt.
Nicht stattdessen, sondern zusätzlich.
Ist das sinnvoll?
Das hängt vom Betrachter ab. Ich für mich finde es sinnvoll, ich lese oft eine Notification-Mail unterwegs, denke mir „darauf musst du noch antworten“ und vergesse es dann später wieder. Die Notification erinnert mich daran.
Wenn ich eine Email erhalten habe, brauche ich die foreninterne Benachrichtigung doch nicht‽
Ich schon ;-)
LG,
CK
@Auge, @Christian Kruse: Danke für die Erklärungen!
So ein Generator ist aber in jedem Fall etwas, das ich mir auch ansehen würde. Ich mache insbesondere privaten Kram mittlerweile fast nur noch über statische Generatoren. Es ist ein gutes Gefühl, nur fertiges HTML und dergleichen auf dem Server liegen zu haben und keine große Software, die Bugs haben könnte und Updates benötigt und so. Wenn es von den Anforderungen her passt, bleibt auf diese Weise alles schön simpel.
Ich denke, das passt auf das was ich vor habe. Meine Blogeinträge sollen alle A5 Größe nicht überschreiten, bisher habe ich 3 Einträge geschrieben (bzw. als mail verschickt) und die entsprechen zusammengenommen vielleicht gerade einer DIN A 4 Seite. Es sollen nur Schnappschüsse sein, Geschichten schreibe ich auf meiner Web Site.
Der Blog dient nur dazu, jene Personen in D zu würdigen, die meine Aktivitäten hier in "Erdbebenland" positiv bewerten und teilweise auch uneigennützig "begleiten". Ich will nicht länger deren mail-Postfach "stressen", d.h. sie sollen vorbeischauen können, wenn ihnen danach ist. Aber ich mache aus meinen Ansichten auch kein Geheimnis, d.h. man soll - bei Bedarf - auch mal einem Freund einen link darauf schicken können.
Dann nehme ich mir vielleicht "Lektor" (zur Einarbeitung) vor. Mal was neues, doch eigentlich habe ich keinen Bock (den Kopf voll mit anderen Dingen). Daher ein Vorschlag:
Ich war in D ja auch eine Weile sowas wie ein "Lehrer für Sonderfälle" ausserhalb des Regelunterrichts. Unter den "anstrengenden" Jugendlichen und jungen Erwachsenen finde ich sehr oft Talente. Die sog. Aussenseiter (oder Ausgegrenzten ?) gefallen mir besonders gut (das war ich schon IMMER). Falls jemand aus diesem Spektrum - ein Normaler mit Bock ist mir aber auch recht - dabei mitwirken will (die IT-Seite zu übernehmen), dann gebe ich ihm/ihr Admin-Rechte auf eine meiner Domains. Ich würde ihm/ihr dann per mail die Beiträge (Text + Fotos) zustellen und er/sie könnte was draus machen. Eine Kooperation sozusagen.
Schminke kann mich nicht beeindrucken (das ist Massenware auf Deutschlands Straßen und im Deutschen Bundestag), ich bevorzuge Klartext. Und ich warte jetzt ein paar Tage, ob jemand von sich hören läßt (meine mail-adresse sollte freigeschaltet sein).
Grüße aus der Altstadt - the beating heart - of L'Aquila / Italia. Hab ne Menge aus euren Buchstabenfolgen gelernt :) Frank
Hej Pinie,
Es kommt auf die Software an. Eigentlich ist WordPress inzwischen ein ausgewachsenes CMS. Wenn es darum geht (viel) Content zu managen und zu erstellen (regelmäßig), dann wäre das erstellen einer einzigen Seite unpraktikabel, weil diese einfach zu lang würde. Will man ältere Beiträge in ein zugängliches Archiv packen, dessen Einträge miteinander verlinkt sind, wird man bereits bei diesem bisschen Funktionalität wahnsinnig, wenn man es dauerhaft machen muss.
Umfangreiche, regelmäßig gepflegte Online-Präsenzen händisch zu pflegen, ist eine Strafarbeit!
Marc
Ich wollte mich in Lektor einarbeiten, doch unter Windows (my professional home) gibt es (bisher) kein GUI ... hab wirklich kein Bock mich in der Kommandozeile zu vertippen und stundenlang (m)einen (eigenen) Tipp-Fehler zu suchen.
Thunderbird (mein mail-client) erlaubt, mails als HTML zu exportieren. Damit hätte ich meine statische Web Site. Ich sehe es schon kommen, letztendlich werde ich HTML tags wieder von Hand eintippen ...
from mermshaus : drei Beispiele für [...] generierte Seiten, ...
- http://lucumr.pocoo.org/ (ich glaube ein eigenes Tool)
- http://erdgeist.org/ (Nikola)
- https://evertpot.com/ (Jekyll)
[snip]
So ein Generator ist aber in jedem Fall etwas, das ich mir auch ansehen würde. Ich mache insbesondere privaten Kram mittlerweile fast nur noch über statische Generatoren.
@mermshaus: Welchen generator nutzt du, um privaten Kram zu machen ? Ich brauch ne Gui, muss zusammenklicken können (hab keinen Kopf f techn. Details).
Und ich will KEIN Forum o.ä. - wenn ... dann ne mailing list (irgendwann mal, wenn ich Zeit dazu habe, das/was ich eigentlich nie habe)
[Frank](http://gallery5.eu/L'Aquila - Amatrice - Norcia.jpg)
Nur für jene, die gerne ein wenig über Technik hinausschauen, heise.de tut das hier z.B. Diesen link habe ich heute Nacht von meiner Schriftsteller-Freundin Dörte von Drigalski, "Blumen auf Granit" aus Japan per email erhalten. Erstaunlich diese Frau ... die ist überall und hat Augen überall ...
Ich wollte mich in Lektor einarbeiten, doch unter Windows (my professional home) gibt es (bisher) kein GUI ... hab wirklich kein Bock mich in der Kommandozeile zu vertippen und stundenlang (m)einen (eigenen) Tipp-Fehler zu suchen.
Du tippst im normalen Gebrauch Dinge wie lektor build
(Doku zum CLI). Kompliziertere Optionen/Parameter benötigt man bei derlei Tools eher selten.
Thunderbird (mein mail-client) erlaubt, mails als HTML zu exportieren. Damit hätte ich meine statische Web Site.
Wenn das deinen Anforderungen entspricht. Irgendwie scheinen mir die unklar und veränderlich zu sein. Ein „Nachladen beim Scrollen“-Feature hat zum Beispiel jetzt nicht mehr viel mit „Exportieren aus Thunderbird“ zu tun.
Ich würde das allgemein ergebnisorientierter betrachten. Du willst ja in erster Linie Texte ins Web stellen. Die technische Seite interessiert dich laut eigener Aussage nicht wirklich. Trotzdem habe ich das Gefühl, dass du dich damit ziemlich aufhältst, weil du etwa keine Lust auf WordPress oder so (selbst- oder fremdgehostet) hast. Und auf geringfügige Nutzung der Kommandozeile (oder Einarbeitung) anscheinend auch nicht.
Du kannst theoretisch auch in LibreOffice schreiben und das Dokument als HTML exportieren und auf einen Server laden, wenn dir das reicht. Optionen gibt es viele.
Ich sehe es schon kommen, letztendlich werde ich HTML tags wieder von Hand eintippen ...
Wenn du meinst, dass das die sinnvollste Vorgehensweise ist, kannst du auch das tun. Ich glaube, das ist alles so ein wenig ein paradoxer Fall von: „Ich weiß nicht, was ich will, aber davon habe ich sehr genaue Vorstellungen, und ich will Software, die das macht, was ich will.“ Das ist schwer zu erfüllen. ;)
Das ist auch für Leute, die versuchen, dir zu helfen, nicht einfach. Deshalb hätte ich zum Beispiel große Bedenken, mich auf deine Anfrage einzulassen, dass du die Texte per Mail schickst und jemand sie dann irgendwie online stellt. Selbst dann, wenn du eine angemessene Vergütung dafür zahlen würdest, was ich bewusst im Konjunktiv formuliere.
@mermshaus: Welchen generator nutzt du, um privaten Kram zu machen ? Ich brauch ne Gui, muss zusammenklicken können (hab keinen Kopf f techn. Details).
Ich nutze nichts in der Richtung.
Ich nutze oft Eigenentwicklungen, weil ich da zum Beispiel mein wesentliches Tool[1] unkompliziert mit neuen Modulen erweitern kann, wenn ich mal komplexere Funktionalität benötige. (Ich lasse ansonsten u. a. auch beliebige PHP-Skripte als Inhaltsdateien zu.) Prinzipiell ist es mir bei den bestehenden Lösungen aber relativ egal, welche ich nutze, da die statischen Generatoren gefühlt alle mehr oder weniger gleich funktionieren. Ich nutze keine spezielle GUI und halte die „Angst vor der Konsole“ allgemein für übertrieben und kontraproduktiv. Wenn ich zum Beispiel lektor build
tippen kann, brauche ich keine GUI-Anwendung, in der ich auf einen „Build“-Button klicke.
Es ist leider so, dass gerade Windows-Nutzer so was gefühlt zu selten lernen. Dafür will ich aber gar nicht mal die Nutzer kritisieren.
Und ich will KEIN Forum o.ä. - wenn ... dann ne mailing list (irgendwann mal, wenn ich Zeit dazu habe, das/was ich eigentlich nie habe)
Das bringt im Gunde wieder eine neue Anforderung auf den Plan. Siehe oben.
(Die Fußnoten sind offtopic.) Ein Free-Software-Projekt namens Horne. Ich wollte aus verschiedenen Gründen eine reine PHP-Lösung.[2] Das Tool ist durchaus leistungsfähig, aber es existiert noch nahezu keine Dokumentation (außer mir kann es im Grunde niemand benutzen), und auch die API ist noch alles andere als finalisiert. (Ich bin aber „stolz“, das mit einem Tag versehene 0.3.0-Release hinbekommen zu haben, das vom Code her immerhin mal so was wie einen definierten Zustand hat. ;) – Ich kann übrigens leider nicht sicher sagen, ob das Kram unter Windows läuft. Es sollte.™) Es ist schwierig, einen Fokus für das Projekt zu finden, also einen Mittelweg zwischen Flexibilität und ease-of-use. Meine Homepage ist mit dem „Standarddesign/-layout“ von Horne generiert. Deshalb sieht sie teilweise etwas seltsam/„hässlich“ aus. ↩︎
Ich versuche seit Jahren, ein Schreibsystem auf Basis einer einfachen Markup-Language zu finden/schaffen, das nur PHP-Code zur Ausführung benötigt und das ein wenig „sophisticated“ ist und etwa Fußnoten, Abbildungen (wie in „Abbildungsverzeichnis“), mathematische Formeln und Syntax-Highlighting (und prinzipiell auch Features wie ein automatisches Inhaltsverzeichnis) von Haus aus unterstützt – und das sich dabei auch noch an bestehende Formate/Standards hält. Mein letzter Ansatz war reStructuredText, für das es leider meines Wissens keinen wirklich ordentlichen PHP-Parser gibt. Markup-Languages (gerade fortgeschritten semantische) sind schwierig. Wenn sie einfach wären, hätten wir eine wirklich gute mit Support in diversen Sprachen und über diverse Plattformen hinweg. ↩︎
Ich wollte mich in [Lektor ] ... Du tippst im normalen Gebrauch Dinge wie
lektor build
ist gespeichert (for later use, maybe)
Thunderbird (mein mail-client) erlaubt, mails als HTML zu exportieren. Wenn das deinen Anforderungen entspricht. Irgendwie scheinen mir die unklar und veränderlich zu sein. Ein „Nachladen beim Scrollen“-Feature hat zum Beispiel jetzt nicht mehr viel mit „Exportieren aus Thunderbird“ zu tun.
ja. ich kann schon irritieren/irritierend sein. Aber es verhält sich eigentlich ganz simpel : zuerst sammle ich, was ich gerne hätte (= viel in alle Richtungen), dann streiche ich heraus, um wieder in der Realität zu landen (Lektor ? Thunderbird ?). Das kann auch mehrfach so hin- und hergehen. Entscheidend ist, wieder i d Realität des Machbaren zu landen.
Du kannst theoretisch auch in LibreOffice schreiben ...
ja. Der produzierte HTML-Code gefällt mir nicht (absolut aufgeblasen). Da schreit meine ästhetische Seite wieder "no go" (= nicht mit Kanonen auf Spatzen ...)
... Ich glaube, das ist alles so ein wenig ein paradoxer Fall von: „Ich weiß nicht, was ich will, aber davon habe ich sehr genaue Vorstellungen, und ich will Software, die das macht, was ich will.“ Das ist schwer zu erfüllen. ;)
nein. nur geb ich zu : für viele (die mich kannten/kennen), war das immer schwer zu kapieren. Es entspricht der Geisteshaltung meines (wichtigstigen) Lehrers : "Wissenschaft ist eine Kombination aus strengem und lockerem Denken". Ich ergänze : die Rückkehr i d Realität entspricht dem strengen.
Das ist auch für Leute, die versuchen, dir zu helfen, nicht einfach.
doch. Du hast einen "Garten der Möglichkeiten" vor mir ausgebreitet. Das passt auf mich. Ich kann aussuchen ! :)
Ich nutze oft Eigenentwicklungen ...
Das war immer meine Vorgehensweise, als ich noch (mehr) Zeit hatte.
Ein Free-Software-Projekt namens Horne ...
das schau ich mir an. Ich probiers unter Windows. PHP habe ich auch ein paarmal gerne genutzt. Allerdings bin ich ein OOP-Fan und da schien mir PHP immer ein wenig umständlich/unleserlich
Ich versuche seit Jahren, ein Schreibsystem auf Basis einer einfachen Markup-Language zu finden/schaffen,
ging mir auch schon durch den Kopf. Manche Dokumente - Verwaltungskram - schreibe ich "als HTML-mail" in Thunderbird und drucke als PDF (Ghostscript/FreePDF). Ich brauche kein Textverarbeitungsprogramm. Wie wärs mit einem Plugin für Thunderbird für Formeln und sonstigen Sonderkram ?
Und ich will KEIN Forum o.ä. - wenn ... dann ne mailing list Das bringt im Grunde wieder eine neue Anforderung auf den Plan. Siehe oben.
ja. Das muss so scheinen (kam aus meinem "lockeren Denken").
Strenges Denken : ich lade mir dein php-Projekt herunter und versuch es unter Windows zum Laufen zu bringen. Ich mag gerne "Selbstgebackenes" (Käsekuchen zum Beispiel).
... weil man da (wie v dir erwähnt) auch ein paar Erdbeeren draufpacken kann (Wo gibt es das zu kaufen ?!)
Sorry übrigens, falls mein Text gestern teilweise etwas negativ oder zu direkt geklungen haben sollte. Ich habe es gerade noch mal gelesen und dachte: „Ich weiß zwar, was ich meine, aber ich bin mir nicht sicher, wie manche Sätze ankommen.“ Es war jedenfalls nicht negativ oder vorwurfsvoll gemeint. Ich weiß nur aus Erfahrung, dass eine unklare Planung am Ende frustrierend für alle Beteiligten ist, woran Projekte durchaus auch mal scheitern.
Gegen ein Brainstorming oder sozusagen eine Machbarkeitsanalyse verschiedener Ansätze spricht aber natürlich nichts. Der vorherige Absatz ist ja im Grunde auch ein Teil davon. :)
Du kannst theoretisch auch in LibreOffice schreiben ... ja. Der produzierte HTML-Code gefällt mir nicht (absolut aufgeblasen). Da schreit meine ästhetische Seite wieder "no go" (= nicht mit Kanonen auf Spatzen ...)
Das ist schon richtig, ja. Wobei ich fürchte, dass sich das mit dem semantischen Web nie so wirklich umfassend durchgesetzt hat. Aber das ist ein völlig anderes Thema.
Ein Free-Software-Projekt namens Horne ... das schau ich mir an. Ich probiers unter Windows. PHP habe ich auch ein paarmal gerne genutzt. Allerdings bin ich ein OOP-Fan und da schien mir PHP immer ein wenig umständlich/unleserlich
Also, du kannst es dir sehr gern anschauen, ich unterstütze dich dabei auch sehr gern (weil es mir ja auch hilft, die Software zu verbessern). Ich weiß aber nicht, ob ich es dir empfehlen würde. Mit einer ausgereiften Software wie Lektor oder Jekyll oder dergleichen, zu der Dokumentation existiert und wahrscheinlich haufenweise Plugins und Themes und zu der es auch Supportforen oder so gibt, wirst du sicherlich besser dran sein.
Ich versuche seit Jahren, ein Schreibsystem auf Basis einer einfachen Markup-Language zu finden/schaffen,
ging mir auch schon durch den Kopf. Manche Dokumente - Verwaltungskram - schreibe ich "als HTML-mail" in Thunderbird und drucke als PDF (Ghostscript/FreePDF). Ich brauche kein Textverarbeitungsprogramm. Wie wärs mit einem Plugin für Thunderbird für Formeln und sonstigen Sonderkram ?
Ich suche schon gezielt was, mit dem man Texte im Web oder für das Web schreiben kann und das rein in PHP läuft. So wie etwa hier im Forum. (Nur ist das Ruby.) Die Markup-Syntax dieses Forums ist schon ziemlich gut. Das ist kramdown, eine erweiterte Variante von Markdown. Das gibt es nur leider in dem Umfang nicht für PHP. Und „perfekt“ ist es auch nicht. Aber auch das ist ein anderes Thema. :)
Hallo mermshaus,
Ich suche schon gezielt was, mit dem man Texte im Web oder für das Web schreiben kann und das rein in PHP läuft. So wie etwa hier im Forum. (Nur ist das Ruby.) Die Markup-Syntax dieses Forums ist schon ziemlich gut. Das ist kramdown, eine erweiterte Variante von Markdown. Das gibt es nur leider in dem Umfang nicht für PHP. Und „perfekt“ ist es auch nicht. Aber auch das ist ein anderes Thema. :)
Ich setze – nachdem ich über dieses Forum Markdown kennen und schätzen gelernt habe – Parsedown in Kombination mit Parsedown Extra ein. Das ist wie kramdown von PHP Markdown Extra inspiriert, implementiert aber nicht alle Features, wenn ich das richtig erfasst habe.
Gruß
Julius
@Julius
Danke für den Hinweis. Das hatte ich nicht auf dem Schirm. Wobei es aber das „alte“ php-markdown auch noch gibt und es seit einiger Zeit auch wieder etwas mehr gepflegt zu werden scheint.
Ich weiß noch nicht genau, was ich letztlich für meinen Generator nehme. Ich habe auch gerade nicht im Kopf, was überhaupt derzeit alles drin ist. An der Stelle bin ich mit dem Versuch, eine Doku zu schreiben, noch nicht angelangt. ;)
Es gibt ja auch immer noch CommonMark, das immerhin mal so was wie ein sauberer Standard wäre. (Das kann man generell von vielen Parsern/Renderern von Markup-Sprachen leider nicht wirklich behaupten.) Dazu gibt es auch eine ordentliche PHP-Lib, die ich derzeit auch etwa für die Horne-Doku nutze.
Als „hauptsächliche“ Markupsprache habe ich zuletzt mit reStructuredText experimentiert, weil es von Haus aus das Feature anbietet, um eigene Literal Blocks erweitert werden zu können und weil es theoretisch etwas „fortgeschrittenere“ Features als Markdown anbietet. Aber da sieht es mit PHP-Libraries wohl wieder eher mau aus. Etwa Gregwar/RST scheint zwar gut geschrieben zu sein, aber scheint leider bereits Fußnoten nicht zu unterstützen.
Es ist kompliziert mit Markup-Languages.
Hallo mermshaus,
Es ist kompliziert mit Markup-Languages.
Prinzipiell halte ich Markdown schon für einen Schritt in die richtige Richtung:
Einfache Markup-Anweisungen als eine Art „Abkürzung“ für HTML und falls das nicht reicht, kann man immer noch darauf zurückgreifen. Fußnoten, Formeln, Bildbeschriftungen (via figure
& figcaption
), Syntaxhighlighting und Definitionslisten möchte aber niemand von Hand machen. Von daher finde ich es schon recht angenehm, dass Markdown nicht das Rad komplett neu erfindet, wie beispielsweise BBCode es löst (zu viel Tippaufwand, vor allem auf Handy-Tastaturen).
Gruß
Julius
... Ein Free-Software-Projekt namens Horne.
– Ich kann übrigens leider nicht sicher sagen, ob das Kram unter Windows läuft. Es sollte.™)
"Compozer" unter Windows vermutlich = "KompoZer" (hab ihn als PortableApp = das gibt es unter Linux - glaube ich -> leider nicht. Dann wohl Apache portable + PHP + JQuery + ??? (wird man sehen)
dein readme.md ist für LUGser; Ich werd' mir wohl ein Linux parallel zu Windows installieren müssen, um aus dem "Pinguin-Install-Weg" den Windows-Weg erschließen zu können, denn KompoZer (kurz überflogen) bietet nur den xpi-(Plugin)-Install-Weg
Es ist schwierig, einen Fokus für das Projekt zu finden, also einen Mittelweg zwischen Flexibilität und ease-of-use.
ist immer schwierig
Meine Homepage ist mit dem „Standarddesign/-layout“ von Horne generiert. Deshalb sieht sie teilweise etwas seltsam/„hässlich“ aus.
nicht häßlich. Sich auf das Wesentliche zu beschränken ist doch nicht häßlich. Es ist nicht "aufgemotzt". Wie schon(mal) erwähnt ... die Straßen von D sind voll von Schminke.
Also gut. Ich werde ein paar Zwischenschritte einlegen müssen: Erst mal BackBox zu Win im MultiBoot und dann weiter eben, bis es unter Linux läuft ... Ist vielleicht auch interessant für andere aus dem Kreis der Linux User Group L'Aquila
"Compozer" unter Windows vermutlich = "KompoZer" (hab ihn als PortableApp = das gibt es unter Linux - glaube ich -> leider nicht. Dann wohl Apache portable + PHP + JQuery + ??? (wird man sehen)
Composer ist ein Package-Manager für PHP. → https://getcomposer.org/
Windows-Installation: https://getcomposer.org/doc/00-intro.md#installation-windows
Außerdem brauchst du auch noch Git, fürchte ich.
Ich würde nicht sagen, dass ich dich abhalten möchte, aber ich weiß auch nicht, ob du damit nicht irgendwie vom Hundertsten ins Tausendste kommst. :)
dein readme.md ist für LUGser;
Ja. Ich denke inzwischen auch stark darüber nach, mir auch noch zusätzlich ein Windows als Dual-Boot zu installieren. (Aber nicht nur, um Software zu testen.) Aber es ist schon so, dass Windows-Support noch keine Priorität von mir war.
Also gut. Ich werde ein paar Zwischenschritte einlegen müssen: Erst mal BackBox zu Win im MultiBoot und dann weiter eben, bis es unter Linux läuft ... Ist vielleicht auch interessant für andere aus dem Kreis der Linux User Group L'Aquila
Es ist schon sehr special interest… :) Andererseits bist du vermutlich auch bei anderen Tools (Lektor, Jekyll meine ich) mit Linux etwas besser dran als mit Windows. Jekyll ist unter Ubuntu zum Beispiel paketiert und kann über apt installiert werden.
Ach ja: Ich kann dir im Grunde auch ein fertig zusammengestelltes Package von Horne 0.3.0 als Zip schicken. Dann brauchst du weder Git noch Composer. Die dienen nur dazu, die Abhängigkeiten zu anderer Software aufzulösen. Das wäre in dem Zip dann alles mit drin.
Ach ja: Ich kann dir im Grunde auch ein fertig zusammengestelltes Package von Horne 0.3.0 als Zip schicken. Dann brauchst du weder Git noch Composer. Die dienen nur dazu, die Abhängigkeiten zu anderer Software aufzulösen. Das wäre in dem Zip dann alles mit drin.
Ja, sowas "geschicktes" könnte mir Zeit sparen, obgleich ich denke, dass ich bereits ein zip aus dem download habe, vielleicht meinst du ja ein anderes zip/anderer Inhalt.
Ich versuche schon seit vielen Jahren mit Linux warm zu werden und es will mir einfach nicht gelingen. Ich mag Linux Mint und BackBox. BackBox wird hier von (m)einem (neuen) Freund & Kopf der AQ L User Group gerne verwendet, doch er sagte seinerzeit gleich dazu, dass es da auf "aktueller" Hardware Probleme geben kann. Solche Sachen sind ein Grund dafür, weswegen ich immernoch Mühe habe, mit Linux warm zu werden. Nichtsdestotrotz, ich arbeite mit mehreren älteren Laptops, (die in D als Schrott angesehen würden, während sie von so manchem Italiener - geschüttelt von Erdbeben und anhaltender Wirtschaftskrise - als "ein viel zu großes Geschenk" von mir nicht angenommen wurden). Ich werde hier auch (ehrenamtlich) als Lehrer arbeiten (nicht nur "Deutsch", sondern auch "Computer & Elektronik") und ich kriege diese älteren Laptops sicher an die Kinder (deren Familien sich das nicht leisten können).
Toll an Kindern ist, dass sie noch nicht so lifeStyle orientiert sind (und dass sie NOCH EHRLICH sind). In der Pubertät geht's dann aber auch hier los (Nike & adidas sollte es ein, ein Macbook & iPhone ... versteht sich).
Also ... alles weitere machen wir vielleicht besser per mail (da werden vielleicht so manche "Absprachen" nötig werden). Und ich muss mir dafür Zeit lassen, das kann dauern. Und wenn die Sackgasse zu groß wird, dann werde ich abbrechen müssen. Noch gar nichts ist gewonnen.
Ach ja: Ich kann dir im Grunde auch ein fertig zusammengestelltes Package von Horne 0.3.0 als Zip schicken. Dann brauchst du weder Git noch Composer. Die dienen nur dazu, die Abhängigkeiten zu anderer Software aufzulösen. Das wäre in dem Zip dann alles mit drin.
Ja, sowas "geschicktes" könnte mir Zeit sparen, obgleich ich denke, dass ich bereits ein zip aus dem download habe, vielleicht meinst du ja ein anderes zip/anderer Inhalt.
Vermutlich ja. In dem GitHub-Projekt ist nur der direkte Anwendungscode von Horne enthalten. Die Anwendung nutzt aber noch externe Bibliotheken wie etwa symfony/console. (Komplette Liste hier: composer.json.) Die müssen noch installiert werden. Dazu dient der Schritt mit composer install
. Dabei werden die externen Abhängigkeiten nachgeladen und im Unterverzeichnis vendor
platziert. Das, was dabei rauskommt, ist dann die fertige Anwendung.
Das habe ich jetzt lokal mal gemacht. Das ergibt dieses Zip: http://tmp.ermshaus.org/horne-0.3.0.zip.[1] Wenn du das beispielsweise in c:\php\horne-0.3.0
entpackst, solltest du grundsätzlich Horne unter Windows ausführen können. Ich habe vorhin mal einen Windows-Rechner gekapert, dort XAMPP mit PHP 5.6 installiert und es ausprobiert.
Links oben ist einfach das PHP aus XAMPP. Da muss man nichts verändern oder so. Es würde sicher auch eine reine PHP-Installation tun, muss nicht XAMPP sein. XAMPP habe ich jedenfalls nach c:\xampp
installiert, die php.exe
liegt demnach unter c:\xampp\php\php.exe
.
Links unten ist ein Aufruf von Horne, der die Blog-Demo baut. Die beiden Befehle dazu:
chdir c:\php\horne-0.3.0\demos\blog
c:\xampp\php\php.exe -f c:\php\horne-0.3.0\horne -- build
Es ist wichtig, das Arbeitsverzeichnis korrekt zu setzen (chdir
). Der build
-Befehl kennt zwar einen --working-dir
-Parameter, aber ich würde unter Windows bis auf weiteres lieber auf Nummer sicher gehen und vorher ins richtige Verzeichnis navigieren.
Der zweite Befehl sollte eigentlich nur horne build
lauten, aber dafür muss man unter Windows offenbar erst mal diverses Zeug (sinngemäß) tun, was mir für den Moment zu umständlich war, daher alles mit absoluten Pfaden und mit expliziter Angabe der php.exe
.
Links unten auf dem Screenshot sind die beiden Befehle und ihr Output zu sehen. Da sieht man auch, wieso ich ziemlich verhalten bin, was Windows-Unterstützung angeht, weil etwa in der Ausgabe die Verzeichnistrenner (/
und \
) vermischt sind. Ich glaube nicht, dass das an der Stelle zu Problemen führt, aber ich kann es nicht ausschließen. (Use at own risk.)
Rechts oben ist das Verzeichnis der Blog-Demo zu sehen. Dort wurde durch den Aufruf von horne build
das output
-Verzeichnis angelegt. Darin befinden sich die fertigen HTML-Seiten, die aus den Daten in src
und die _horne.json
-Datei erzeugt wurden. In _horne.json
steht:
{
"sourceDir": "src",
"outputDir": "output",
"modules": {
"system": {
"siteTitle": "Blog example",
"showFooter": true
},
"blog": {
"useTags": true,
"showInfoline": true,
"showAuthor": true
},
"theme": {
"name": "esperanza"
}
}
}
Das dürfte relativ selbsterklärend sein. Im output
-Verzeichnis liegt eine index.html
-Datei, die im Browser aufgerufen werden kann. Von dort aus kann durch die gesamte Seite geklickt werden. Das sieht derzeit konkret so aus: http://tmp.ermshaus.org/blog/index.html
Zu den Quelldateien in src
schreibe ich demnächst noch was. Sie bestehen grob aus Front Matter und Inhalt, wie es etwa auch bei Jekyll und dergleichen üblich ist. Der Inhaltstyp in der Demo ist PHP/HTML, aber es wird auch Markdown unterstützt[2] und einige esoterische Formate, die ich irgendwann mal genutzt habe.
Ein Bug/Feature ist derzeit, dass das Tool sehr „mächtig“ ist, was die Programmierbarkeit angeht. Da PHP-Code ein Inhaltstyp ist (was by design ist), lassen sich im Grunde alle möglichen Sachen direkt in Inhaltsdateien anstellen. Das geht etwa bei Markdown als Inhaltstyp nicht, weil Markdown nicht programmierbar ist.
Ich nutze das deliberately. Die Quelldatei zur Leseliste auf meiner Homepage enthält zum Beispiel u. a. das hier:
$data = [];
$data[2016][9] = [];
$data[2016][9][] = [
'author' => 'Arthur C. Clarke',
'title' => 'Rendezvous with Rama'
];
$data[2016][6] = [];
$data[2016][6][] = [
'author' => 'James S. A. Corey',
'title' => 'Leviathan Wakes'
];
...
<?php foreach ($data as $year => $entriesForYear) : ?>
<h2><?=$api->e($year)?></h2>
<ul>
<?php foreach ($entriesForYear as $month => $entriesForMonth) : ?>
<?php foreach ($entriesForMonth as $entry) : ?>
<li>
<?=$api->e($entry['author'])?>: <em><?=$api->e($entry['title'])?></em> (<?=$api->e($monthByNumber[$month])?>)
<?php if (isset($entry['comment'])) : ?>
<?=$entry['comment']?>
<?php endif; ?>
</li>
<?php endforeach; ?>
<?php endforeach; ?>
</ul>
<?php endforeach; ?>
Das ist einerseits praktisch, andererseits führt es dazu, dass es immer mindestens drei Stellen gibt, an denen man „Logikcode“ ablegen kann. Im Inhalt selbst, in Layout-Dateien, in Modulen. Aber dazu müsste ich jetzt wirklich weiter ausholen und erst mal die Grundvorgehensweise beschreiben (viel Decorator-Pattern).
Linux
Ein Aspekt dazu ist, dass derlei Tools eben häufig Konsolentools sind und das Windows-Setup davon etwas umständlicher zu sein scheint als unter anderen Betriebssystemen. Beziehungsweise machen sich nur wenige Projekte die Mühe, einen grafischen Installer bereitzustellen, der das Setup übernimmt.
Also ... alles weitere machen wir vielleicht besser per mail (da werden vielleicht so manche "Absprachen" nötig werden). Und ich muss mir dafür Zeit lassen, das kann dauern. Und wenn die Sackgasse zu groß wird, dann werde ich abbrechen müssen. Noch gar nichts ist gewonnen.
Ich muss auch erst mal los.
Mit überflüssigen .git
-Dateien drin, aber egal. Die stören nicht. ↩︎
Derzeit muss dazu aber kramdown installiert sein. Das wird zumindest noch um CommonMark ergänzt werden, weil ich wie gesagt einen reinen PHP-Stack will. Gibt derzeit ein einfaches API, um eigene „OutputFilter“ hinzuzufügen: https://github.com/mermshaus/horne/tree/0.3.0/src/Horne/OutputFilter (An der Stelle sieht man auch, dass das alles noch etwas experimentell ist. Der TableOfContentsOutputFilter
wird sicherlich nicht dort bleiben.) ↩︎
Installation (und erster run) unter Windows 8.1 hat geklappt. Kompliment (an dich), du hast nichts (zu erklären) vergessen (= so machts Spass)
- chdir c:\php\horne-0.3.0\demos\blog
- c:\xampp\php\php.exe -f c:\php\horne-0.3.0\horne -- build
[... snip ...]
Im
output
-Verzeichnis liegt eineindex.html
-Datei, die im Browser aufgerufen werden kann ...
Ich arbeite fast nur mit PortableApps; die liegen bei mir unter E:\y\PortableApps. Daraus ergeben sich folgende zwei Zeilen (in der Shell zwecks Installation + Build)
Ich notiere das nur, um jenen, die das AUCH mal unter Windows ausprobieren möchten, DEINE Angaben mit anderen Pfaden nochmal zu bestätigen (der Kern ist gleich).
Zu den Quelldateien in
src
schreibe ich demnächst noch was. Sie bestehen grob aus Front Matter und Inhalt, wie es etwa auch bei Jekyll und dergleichen üblich ist. Der Inhaltstyp in der Demo ist PHP/HTML, aber es wird auch Markdown unterstützt[^kramdown] und einige esoterische Formate, die ich irgendwann mal genutzt habe.
Ich werd jetzt wieder ne Pause einlegen (... noch andere Dinge zu tun), doch im Laufe der Woche will ich meine ersten 3 Blog-Einträge setzen und hochladen. Wenn das genauso easy (wie Installation & Build) ist, dann werde ich viel Freude damit haben :)
Deine (ausführliche) Beschreibung ist wirklich gut. Ich muss mir das ein paarmal durchlesen, damit mir möglichst kein Detail entgeht ...
... und dann probier ich Inst & Build nochmal unter BackBox / Linux. Und unter Windows 7.
damit hättest du deinen ersten Fan :) (bin ich der erste (neben dir), der horne nutzt ?
Installation (und erster run) unter Windows 8.1 hat geklappt. Kompliment (an dich), du hast nichts (zu erklären) vergessen (= so machts Spass)
Cool. Das ist schön zu hören. Danke.
Es gibt wie gesagt auch unter Windows prinzipiell Möglichkeiten, den Aufruf zu vereinfachen (auf nur horne build
und dergleichen), indem man eine Command/Batch-Datei mit passendem Inhalt anlegt, die in einem Verzeichnis im PATH
liegt, aber das müsste ich bei Gelegenheit erst mal ausprobieren. Ich erwähne das, damit es im Hinterkopf bleibt.
Ich werd jetzt wieder ne Pause einlegen (... noch andere Dinge zu tun), doch im Laufe der Woche will ich meine ersten 3 Blog-Einträge setzen und hochladen. Wenn das genauso easy (wie Installation & Build) ist, dann werde ich viel Freude damit haben :)
Abwarten… Da wird sich erst mal die fehlende Dokumentation bemerkbar machen. ;) Ich helfe dir dabei aber wie gesagt gerne, weil es natürlich motivierend und hilfreich für mich ist, Usecases zu haben.
Ich werde dir dann wohl noch mal eine Anleitung oder ein Rahmenprojekt schicken. Können wir dann aber auch gern per Mail machen.
damit hättest du deinen ersten Fan :) (bin ich der erste (neben dir), der horne nutzt ?
Es gibt theoretisch noch einen anderen Nutzer. Das Projekt lief recht gut, was die technische Umsetzung angeht, ist aber zumindest zwischenzeitlich sehr eingeschlafen.
PS: Auch wenn es am Ende nicht horne werden sollte, lernst du übrigens was über die Arbeit mit derlei statischen Generatoren. Die funktionieren alle ganz ähnlich.
@Pinie
Ich habe angefangen, etwas ausführlichere Doku zu schreiben:
Es ist noch nicht umfangreich und berührt derzeit eher fortgeschrittene Konzepte (grundsätzliche Einführung ist noch nicht drin), aber ich dachte, ich kann es ja schon mal verlinken.
- http://horne.ermshaus.org/ (work in process)
ok, super. Ich komme immernoch nicht dazu (obgleich ich gegenwärtig nur 1 DIN A 4 Seite "blog" habe) ... ich will es mir übers WoEnde vornehmen.
Irgendwann 2017 präsentiere ich einem ausgesuchten Publikum (vermutlich in Ludwigsburg) eine aussergewöhnliche italienische Künstlerin (und blutjung noch dazu). Ich werde die Laudatio halten, Sie wird zu ihrem künstlerischen Ausdruck was erzählen und zusammen werden wir (sie = ein Erdbebenopfer aus L'Aquila) in Fotos & Erzählungen die Erdbebenstadt 2009 präsentieren. Vielleicht hättest du Interesse, beizuwohnen? Der blog, der von L'Aquila erzählen wird, wird ja mit deiner Software erstellt sein.
Vielleicht hättest du Interesse, beizuwohnen?
Danke. Prinzipiell gern. Praktisch ist es nicht besonders realistisch, da ich nicht wirklich in der Gegend wohne. Aber du kannst mich dann, wenn es konkret wird, gern noch mal darauf ansprechen. Vielleicht könnte es ja zufällig passen.
Meine E-Mail-Adresse ist übrigens marc@<meine-domain>
(siehe oben der Link neben dem Nickname). Wenn es wirklich mal in die Details gehen sollte, ist das für andere Mitleser hier ja vielleicht nicht mehr so interessant.
Ich habe noch mal ein saubereres fertiges Release gebaut.[1] Ohne die meisten .git-Dateien. (Beide Archive sind inhaltlich identisch.)
horne-0.3.0.tar.gz
Größe: 1.5 MB
MD5-Checksum: db67fcf1c98ab11c02bee434aa298fb4
SHA256-Checksum: 9817da7efeef2c8807997d19f91fdea893630e8a73ac18794a66f8f531b405b3
horne-0.3.0.zip
Größe: 2.1 MB
MD5-Checksum: be49ff76097e8c8e3a05834acc80eb37
SHA256-Checksum: 5eca36f00f4198975640269fdc444064fb39deb0cbdac851e65c5e018873bbbf
Besser wird es bis Version 0.4.0 nicht mehr. ~75 % des Speicherplatzbedarfs (6.3 MB von 8.0 MB) gehen übrigens für GeSHi drauf. Mit GeSHi bin ich auch aus anderen Gründen nicht so ganz glücklich. Der Code ist sehr „zerwachsen“. Ich plane, auf highlight.js umzustellen. Ich hatte lange Zeit bei dem Projekt eine „No JS“-Policy, aber auch etwa das Rendern von mathematischen Formeln kann man ohne MathJax im Grunde vergessen.
besten Dank. Damit sollte ich klarkommen, sowohl unter Linux als auch unter Windows.
Ich schicke einen link auf deine (linux-)Hinweise zu einem Freund aus der LUG Stuttgart, der soll mir noch ein wenig beistehen. Aber ich versuchs erstmal unter Win. XAMPP hab ich auch schon benutzt.
Ich muss f 24 Std. nach D zurück. Unterwegs habe ich (hoffentlich) Zeit, alles mal detailliert durchzugehen.
@admin des forums: über d letzten beiden forumseintraege von mermshaus habe ich keine email-Benachrichtigung erhalten (auch in meinem Spam-Ordner ist/war nichts).
Hallo
@admin des forums: über d letzten beiden forumseintraege von mermshaus habe ich keine email-Benachrichtigung erhalten (auch in meinem Spam-Ordner ist/war nichts).
Das wird wohl an der neuen Version des Forums und der damit verbundenen Umstellung der Benachrichtigungen auf Abonnements liegen. Wenn du über alle Antworten in deinem Thread informiert werden willst, klicke auf den Umschlag vor dem Betreff deines Eröffnungspostings, wenn dich nur (noch) bestimmte Zweige des Threads interessieren, klicke auf den Umschlag vor dem Betreff es Postings, bei dem du starten willst.
Bei mit der neuen Version erstellten Threads bist du als Threadersteller dann automatisch auch Abonnent. Das Gleiche gilt für deine Antworten, mit denen du automatisch den Zweig ab dem Posting, auf das du antwortest, abonnierst.
Tschö, Auge
Hallo mermshaus,
Besser wird es bis Version 0.4.0 nicht mehr. ~75 % des Speicherplatzbedarfs (6.3 MB von 8.0 MB) gehen übrigens für GeSHi drauf. Mit GeSHi bin ich auch aus anderen Gründen nicht so ganz glücklich. Der Code ist sehr „zerwachsen“. Ich plane, auf highlight.js umzustellen.
Ich stricke mir gerade etwas Eigenes für HTML (im Prinzip über alle (Unicode-)Zeichen iterieren und nach <
bzw. >
suchen), CSS und JavaScript (mit etwas Trickserei lässt sich das auch durch highlight_string
jagen) – wenn PHP-Code auftaucht, wird der an den in PHP integrierten Syntax-Highlighter weitergereicht. Eventuell ergänze ich noch Python und SQL; C und Konsorten sollten sich ebenfalls mit highlight_string
verwursten lassen. Bestimmt kann man das besser bzw. übersichtlicher lösen (OOP?!), aber ich im Moment nicht.
$char = preg_split('//u', $string, -1, PREG_SPLIT_NO_EMPTY);
$count = count($char);
$pos = 0;
$element=false;
$attribute=false;
$attr_value=false;
$doctype=false;
$content=false;
$output='';
while($pos < $count)
{
if($char[$pos].$char[$pos+1]=='<!' and $char[$pos+2].$char[$pos+3]!='--')
{
$doctype=true;
$output.='<span style="color:gray;"><!';
$element=false;
$pos++;
}
elseif($char[$pos].$char[$pos+1]=='<!' and $char[$pos+2].$char[$pos+3]=='--')
{
$comment=true;
$doctype=false;
$output.='<span style="color:darkgreen;"><!--';
$element=false;
$pos+=3;
}
elseif($char[$pos].$char[$pos+1]=='<?')
{
if($highlight_php)
{
$php='';
while($pos<$count)
{
$php.=$char[$pos];
if($char[$pos-1]=='?' and $char[$pos]=='>')
{
break;
}
$pos++;
}
$php = str_replace(array('<code><span style="color: #000000">
', '</span>
</span>
</code>'), array('<span style="color:black;">', '</span>'), highlight_string($php,true));;
$output.=$php;
}
else
{
$output.='<span style="color:orange;"><?';
$pos++;
}
}
elseif($char[$pos]=='<')
{
$output.='<span style="color:blue;"><';
$element=true;
$doctype=false;
}
elseif($char[$pos]=='>')
{
if($attribute)
{
$attribute=false;
$output.='</span>';
}
$output.='></span>';
$element=false;
$comment=false;
}
elseif($char[$pos]=="\n")
{
$output.="<br>\n";
}
elseif($char[$pos]==' ' and !$element)
{
$output.=' ';
}
elseif(($char[$pos]=='"' or $char[$pos]=="'") and !$attr_value)
{
$attr_marker=$char[$pos];
$attribute=false;
$attr_value=true;
$output.='<span style="color:purple;">'.$attr_marker;
}
elseif($attr_value and ($char[$pos]==$attr_marker or $char[$pos]==$attr_marker or $attr_marker=='none'))
{
if($attr_marker=='"')
{
$output.='"</span>';
}
elseif($attr_marker=="'")
{
$output.='\'</span>';
}
elseif($attr_marker=='none' and $char[$pos+1]==' ' and $char[$pos+1]=='>' and $char[$pos+1]=='/')
{
$output.='</span>';
}
$attr_value=false;
$attr_marker='';
}
elseif($char[$pos-1]==' ' and !$attribute and $element and !$comment and !$doctype and !$attr_value and $char[$pos]!='=' and $char[$pos]!='"' and $char[$pos]!="'")
{
$attribute=true;
$output.='<span style="color:red;">'.$char[$pos];
}
elseif($char[$pos]=='=' and $attribute)
{
$output.='</span>=';
$attribute=false;
if($char[$pos+1]!='"' and $char[$pos+1]!="'" and $char[$pos+1]!=' ' and $char[$pos+1]!='>' and $char[$pos+1]!='/')
{
$output.='<span style="color:purple;">'.htmlspecialchars($char[$pos+1]);
$attr_value=true;
$attr_marker='none';
}
elseif($char[$pos+1]!='"' and $char[$pos+1]!="'" and $char[$pos+2]!='"' and $char[$pos+2]!="'" and $char[$pos+2]!=' ' and $char[$pos+2]!='>' and $char[$pos+2]!='/')
{
$output.=htmlspecialchars($char[$pos+1]).'<span style="color:purple;">';
$attr_value=true;
$attr_marker='none';
$pos++;
}
}
elseif($char[$pos]=='&' and ($attr_value or !$element))
{
if($char[$pos+1]!=' ' and $char[$pos+2]!=' ')
{
$output.='<span style="color:purple; font-style:italic;">&';
$pos_start=$pos;
while(($pos_start+11)>=$pos)
{
$pos++;
$output.=htmlspecialchars($char[$pos]);
if($char[$pos]==';')
{
break;
}
}
$output.='</span>';
}
else
{
$output.='&';
}
}
else
{
$output.=htmlspecialchars($char[$pos]);
}
$pos++;
}
echo $output;
Ich hatte lange Zeit bei dem Projekt eine „No JS“-Policy, aber auch etwa das Rendern von mathematischen Formeln kann man ohne MathJax im Grunde vergessen.
Auch das habe ich mittlerweile ohne JavaScript lösen können: Auf dem Server läuft $$\LaTeX$$ und dvisvgm
, das SVGs erzeugt, die ich dann in die Dokumente einbinde. Es ist zwar leider keine reine PHP-Lösung, aber immerhin eine für den Fall, dass man die Software auf dem Server selbst installieren kann oder einen netten Hoster hat, den man darum bitten kann.
Ich bin der Meinung, dass Syntax-Highlighting und das Rendern von Formeln nach Möglichkeit auf dem Server laufen sollten[1]: Wenn ich ein Notebook bestelle, baut man bei mir ja auch nicht zuerst eine Fabrik im Wohnzimmer auf und danach wieder ab, sondern liefert mir direkt das Endprodukt!
Ich nehme mal stark an, dass solche Dinge tendenziell eher mit JavaScript geregelt werden, weil fast alle Browser JavaScript beherrschen, während man eine Server-seitige Lösung für PHP, Ruby, Python, Perl und Java bereithalten müsste, um eine gute Abdeckung zu erreichen.
Gruß
Julius
Klar, für statische Seiten ohne jeglichen Generator dahinter und für Live-Vorschau ist eine JavaScript-Lösung eventuell zweckmäßig. ↩︎
@Julius
Ich stricke mir gerade etwas Eigenes für HTML (im Prinzip über alle (Unicode-)Zeichen iterieren und nach
<
bzw.>
suchen), CSS und JavaScript (mit etwas Trickserei lässt sich das auch durchhighlight_string
jagen) – wenn PHP-Code auftaucht, wird der an den in PHP integrierten Syntax-Highlighter weitergereicht. Eventuell ergänze ich noch Python und SQL; C und Konsorten sollten sich ebenfalls mithighlight_string
verwursten lassen. Bestimmt kann man das besser bzw. übersichtlicher lösen (OOP?!), aber ich im Moment nicht.
Das ist leider alles nicht so leicht, dass man das mal eben aus dem Ärmel schüttelt, weil es immer Cornercases gibt. In HTML sind das zumindest Script-Tags und Kommentare, die Winkelklammern enthalten können. In PHP-Code kann auch ein ?>
in einem String oder einem Kommentar stehen und damit keine syntaktische Funktion ausüben. Wenn du wirklich versuchen möchtest, einen CSS-Parser/-Highlighter zu schreiben, wünsche ich schon jetzt viel Spaß und gute Nerven. :)
Der Nachteil an highlight_string
ist, dass man die Rückgabe noch mal als HTML verarbeiten muss, wenn man aus den Inline-Styles saubere CSS-Klassennamen machen möchte (für Syntax-Highlighter-Themes). Das ist aber vermutlich immer noch besser, als sich einen eigenen PHP-Parser schreiben zu müssen.
Für andere Sprachen als PHP halte ich die Funktion aber für ungeeignet. Man wird sehr schnell in Probleme laufen.
Ein, zwei Sachen, die mir (oder eher meiner IDE) spontan an deinem Code aufgefallen sind:
$content=false;
müsste $comment=false;
heißen? Zumindest ist $content
ungenutzt und $comment
wird nicht initialisiert.
Ebenfalls nicht initialisiert werden $highlight_php
und $attr_marker
.
Hier eine Eingabe, die einige Probleme demonstriert:
$input = <<<'EOT'
<?php echo 'foo ?> "\' bar\\'; /* ?> */ // ?>
EOT;
(Was der Foren-Highlighter da macht, stimmt übrigens auch hinten und vorne nicht.)
Ausgabe (oben dein Highlighter, unten direkt highlight_string
):
Der Code wirft dabei auch Fehlermeldungen:
PHP Notice: Undefined offset: -1 in /var/www/www/fiddle/julius.php on line 45
PHP Stack trace:
PHP 1. {main}() /var/www/www/fiddle/julius.php:0
PHP 2. julius() /var/www/www/fiddle/julius.php:174
PHP Notice: Undefined offset: 45 in /var/www/www/fiddle/julius.php on line 22
PHP Stack trace:
PHP 1. {main}() /var/www/www/fiddle/julius.php:0
PHP 2. julius() /var/www/www/fiddle/julius.php:174
PHP Notice: Undefined offset: 45 in /var/www/www/fiddle/julius.php on line 29
PHP Stack trace:
PHP 1. {main}() /var/www/www/fiddle/julius.php:0
PHP 2. julius() /var/www/www/fiddle/julius.php:174
PHP Notice: Undefined offset: 45 in /var/www/www/fiddle/julius.php on line 37
PHP Stack trace:
PHP 1. {main}() /var/www/www/fiddle/julius.php:0
PHP 2. julius() /var/www/www/fiddle/julius.php:174
Der Einfachheit halber hier mein gesamter Test.
Auch das habe ich mittlerweile ohne JavaScript lösen können: Auf dem Server läuft $$\LaTeX$$ und
dvisvgm
, das SVGs erzeugt, die ich dann in die Dokumente einbinde. Es ist zwar leider keine reine PHP-Lösung, aber immerhin eine für den Fall, dass man die Software auf dem Server selbst installieren kann oder einen netten Hoster hat, den man darum bitten kann.
Das ist sicherlich ein denkbarer Ansatz[1], aber eine LaTeX-Installation auf dem Server ist für den Fokus meines Tools fünf Nummern zu krass. (Das ist ehrlich gesagt wohl auch für 99 % der Anwender/Webspaces zu krass.) Besser wäre eine LaTeX-Installation auf dem Rechner, auf dem die fertige (und bis auf das Einbinden von clientseitigem JS-Code statische) Seite generiert wird. Man würde dann eben die fertigen SVG-Grafiken während des Build-Vorgangs erzeugen und am Ende mit hochladen. Es bleibt natürlich eine dicke Abhängigkeit, die man erst mal aufsetzen muss, und, ja, es steht dem Ansatz entgegen, eine reine PHP-Lösung für die Grundfunktionalität zu haben.
Mit MathJax bekommt man das alles halt verhältnismäßig unkompliziert „frei Haus“ geliefert. Aber darin steckt schon auch ein wenig eine umfassendere Diskussion um den Einsatz von JavaScript und das Nutzen von extern gehosteten Libs und dergleichen.
Ich bin der Meinung, dass Syntax-Highlighting und das Rendern von Formeln nach Möglichkeit auf dem Server laufen sollten[^1]: Wenn ich ein Notebook bestelle, baut man bei mir ja auch nicht zuerst eine Fabrik im Wohnzimmer auf und danach wieder ab, sondern liefert mir direkt das Endprodukt!
Volle Zustimmung. Leider mit den bestehenden Tools nicht so wirklich praktikabel (siehe oben). Beim Syntax-Highlighting kenne ich an reinen PHP-Tools auch nur GeSHi, mit dem es leider mindestens zwei Probleme gibt (GPL-lizenziert, keine brauchbare Composer-Anbindung). Deshalb habe ich es zurückgestellt und werde wohl erst mal auf eine JS-Lösung setzen, die halt unkompliziert ist und funktioniert.
Ich habe das auch mal gemacht mit pdflatex
und pdf2svg
(SVG) beziehungsweise mit pdflatex
und convert
(PNG). Die Ergebnisse waren ganz okay, aber noch nicht perfekt. Falls ich das mit den SVGs nachher noch mal zum Laufen kriege, schreibe ich dazu noch was. Würde mich durchaus interessieren, ob das bei dir besser aussieht und wie du es konkret gemacht hast. So eine LaTeX-Anbindung wäre auch für meinen Generator zumindest was für eine Erweiterung. ↩︎
@Julius
Der Code wirft dabei auch Fehlermeldungen
Kannst dir zum Beispiel so einen Helper basteln zum Zugriff auf die einzelnen Zeichen:
$char = str_split('Hallo Welt!');
$get = function ($start, $length = 1) use ($char) {
if ($length <= 0) {
return '';
}
$ret = '';
$end = $start + $length;
for ($i = $start; $i < $end; $i++) {
if (!isset($char[$i])) {
break;
}
$ret .= $char[$i];
}
return $ret;
};
$pos = 0;
var_dump($get($pos )); // "H"
var_dump($get($pos+1 )); // "a"
var_dump($get($pos , 2)); // "Ha"
var_dump($get($pos+1, 2)); // "al"
var_dump($get($pos-1, 1)); // ""
var_dump($get($pos , -1)); // ""
$pos = 6;
var_dump($get($pos )); // "W"
var_dump($get($pos , 2)); // "We"
var_dump($get($pos+1, 2)); // "el"
var_dump($get($pos-1, 1)); // " "
var_dump($get($pos-1 )); // " "
var_dump($get($pos-6, 5)); // "Hallo"
var_dump($get($pos, 10)); // "Welt!"
var_dump($get($pos+10)); // ""
Und dann zum Beispiel:
if($get($pos, 2)=='<!' and $get($pos+2, 2)!='--')
Hallo mermshaus,
Kannst dir zum Beispiel so einen Helper basteln zum Zugriff auf die einzelnen Zeichen:
$char = str_split('Hallo Welt!');
Eine gute Idee, werde ich einpflegen! Allerdings kann str_split
nicht mit Multibyte-Kodierungen wie Unicode umgehen, deshalb auch meine Regex-Lösung zum Splitten des Strings:
echo "<pre>";
$var = str_split('Testü');
print_r($var);
Ausgabe:
Array
(
[0] => T
[1] => e
[2] => s
[3] => t
[4] => �
[5] => �
)
Gruß
Julius
@Julius
Allerdings kann
str_split
nicht mit Multibyte-Kodierungen wie Unicode umgehen, deshalb auch meine Regex-Lösung zum Splitten des Strings:
Ja, str_split
habe ich nur kurz für die Demo genommen, weil ich zu faul war, deinen preg_*
-Aufruf zu suchen. Die Closure/Funktion arbeitet aber auch mit der multibyte-fähigen Variante korrekt. Dennoch natürlich ein wichtiger Hinweis.
Hallo mermshaus,
@Julius
Allerdings kann
str_split
nicht mit Multibyte-Kodierungen wie Unicode umgehen, deshalb auch meine Regex-Lösung zum Splitten des Strings:Ja,
str_split
habe ich nur kurz für die Demo genommen, weil ich zu faul war, deinenpreg_*
-Aufruf zu suchen.
... den ich mir auch aus den Untiefen des Internets gezogen habe :-)
Die Closure/Funktion arbeitet aber auch mit der multibyte-fähigen Variante korrekt. Dennoch natürlich ein wichtiger Hinweis.
Natürlich, es geht ums Prinzip und dafür reicht auch str_split
.
Ich habe am Anfang meiner Beschäftigung mit PHP und Programmieren allgemein etwas gebraucht, um zu verstehen, warum es immer hieß, PHP könne mit Unicode nichts anfangen – klar kann es das, wenn man die richtigen Funktionen nimmt bzw. Rücksicht auf Multibyte-Zeichensätze nimmt.
Gruß
Julius
@Julius
Ich habe am Anfang meiner Beschäftigung mit PHP und Programmieren allgemein etwas gebraucht, um zu verstehen, warum es immer hieß, PHP könne mit Unicode nichts anfangen – klar kann es das, wenn man die richtigen Funktionen nimmt bzw. Rücksicht auf Multibyte-Zeichensätze nimmt.
Ja. Den Vorwurf liest man manchmal. Ich finde das auch haltlos beziehungsweise im Grunde sogar gezielt irreführend formuliert. Auch in PHP arbeitet seit locker 10 Jahren alles, was irgendwie relevant ist, mit UTF-8. Man müsste schon präziser ausdrücken, was einem an PHP in der Hinsicht fehlt. Das sollte dann auch in Relation zur existierenden Funktionalität (z. B. Multibyte-String-Funktionen) geschehen.
Hallo mermshaus,
Das ist leider alles nicht so leicht, dass man das mal eben aus dem Ärmel schüttelt, weil es immer Cornercases gibt. In HTML sind das zumindest Script-Tags und Kommentare, die Winkelklammern enthalten können. In PHP-Code kann auch ein
?>
in einem String oder einem Kommentar stehen und damit keine syntaktische Funktion ausüben.
Mist, dann müsste ich ja dem HTML-Highlighter die PHP-Syntax „beibringen“, damit der so etwas erkennt, was ich eigentlich nicht will.
Wenn du wirklich versuchen möchtest, einen CSS-Parser/-Highlighter zu schreiben, wünsche ich schon jetzt viel Spaß und gute Nerven. :)
Immerhin ist die Erkenntnis, dass das alles nicht ganz so leicht ist, auch eine Erkenntnis ;-)
Ich habe auch mal einen HTML-Highlighter aus dem Internet, der mit Regex arbeitet (böse, böse, ich weiß), getestet und der war auch sehr leicht aus dem Konzept zu bringen...
Der Nachteil an
highlight_string
ist, dass man die Rückgabe noch mal als HTML verarbeiten muss, wenn man aus den Inline-Styles saubere CSS-Klassennamen machen möchte (für Syntax-Highlighter-Themes). Das ist aber vermutlich immer noch besser, als sich einen eigenen PHP-Parser schreiben zu müssen.
Ließe sich cachen, ist aber trotzdem nicht sonderlich elegant.
Ein, zwei Sachen, die mir (oder eher meiner IDE) spontan an deinem Code aufgefallen sind:
Welche IDE benutzt du bzw. kannst du für Webentwicklung unter Linux empfehlen? Eclipse? Ich nutze seit Ewigkeiten gedit, weil ich bisher zu faul war, etwas anderes auszuprobieren...
$content=false;
müsste$comment=false;
heißen? Zumindest ist$content
ungenutzt und$comment
wird nicht initialisiert.Ebenfalls nicht initialisiert werden
$highlight_php
und$attr_marker
.
Werde ich beheben. Danke für deine Hinweise.
Hier eine Eingabe, die einige Probleme demonstriert:
$input = <<<'EOT' <?php echo 'foo ?> "\' bar\\'; /* ?> */ // ?> EOT;
Mh, ich müsste also prüfen, ob das ?>
wirklich das letzte vor dem nächsten <?php
ist und dass dieses im HTML- und nicht im PHP-Kontext steht.
Das ist sicherlich ein denkbarer Ansatz[^pdflatex], aber eine LaTeX-Installation auf dem Server ist für den Fokus meines Tools fünf Nummern zu krass. (Das ist ehrlich gesagt wohl auch für 99 % der Anwender/Webspaces zu krass.) Besser wäre eine LaTeX-Installation auf dem Rechner, auf dem die fertige (und bis auf das Einbinden von clientseitigem JS-Code statische) Seite generiert wird. Man würde dann eben die fertigen SVG-Grafiken während des Build-Vorgangs erzeugen und am Ende mit hochladen. Es bleibt natürlich eine dicke Abhängigkeit, die man erst mal aufsetzen muss, und, ja, es steht dem Ansatz entgegen, eine reine PHP-Lösung für die Grundfunktionalität zu haben.
Mein aktueller Ansatz geht in die Richtung, die Funktionalität in Plugins auszulagern und damit eine Wahlmöglichkeit zu schaffen: Keine Formeln, (Xe-)LaTeX auf dem Server, MathJax (CDN) und MathJax (selbst gehostet) bzw. Kein Highlighting, Selbstgestrickte schlechte Lösung und eine JavaScript-Lösung.
Gruß
Julius
P.S.: Kannst du mir vielleicht ein funktionierendes GeSHi-Beispiel geben, deren Doku ist ziemlich wirr und enthält soetwas nicht?
P.P.S.: Ich habe mal den Baum abonniert, ich hoffe, dass ich jetzt auch Benachrichtungen bekomme, wenn ich eine Antwort erhalte...
@Julius
Ich habe auch mal einen HTML-Highlighter aus dem Internet, der mit Regex arbeitet (böse, böse, ich weiß), getestet und der war auch sehr leicht aus dem Konzept zu bringen...
Kommt drauf an, wie es umgesetzt ist. Ein Parser kann natürlich auch teilweise mit regulären Ausdrücken arbeiten, wenn sie die Anforderungen erfüllen. Man kann nur nicht zum Beispiel insgesamt hergehen und sagen: „Ich erkläre alles, was </?[a-z][^>]*>
matcht, zu einem Tag.“ Das stimmt in manchen Kontexten nicht (script
-Elemente, HTML-Kommentare).
Wenn man aber verschiedene Regex-Pattern hat (eins, das normale Tags matcht, eins das Kommentare matcht, …) und die passend verbindet, kann man einige Arbeit auch mit regulären Ausdrücken erledigen. Hier zum Beispiel die Sprachdefinition für PHP in highlight.js. Hier die von GeSHi.
Welche IDE benutzt du bzw. kannst du für Webentwicklung unter Linux empfehlen? Eclipse? Ich nutze seit Ewigkeiten gedit, weil ich bisher zu faul war, etwas anderes auszuprobieren...
NetBeans (Free Software) oder PhpStorm (kostenpflichtig, gibt aber Programme für etwa Forschung und Lehre). Ich arbeite mit beiden, und die Unterschiede zwischen den IDEs sind für meinen Workflow quasi nicht existent (Zusatztools wie Versionskontrolle nutze ich fast gar nicht direkt über die IDEs, sondern immer über Konsole). Das GUI sieht sogar fast gleich aus.
Kannst du mir vielleicht ein funktionierendes GeSHi-Beispiel geben, deren Doku ist ziemlich wirr und enthält soetwas nicht?
Wenn du ein Release ziehst und entpackst, dann zum Beispiel so:
Du musst im Grunde nur die geshi.php
-Datei passend einbinden. Sprachdefinitionen und dergleichen lädt der Highlighter bei Bedarf automatisch selbst.
Hallo mermshaus,
Wenn man aber verschiedene Regex-Pattern hat (eins, das normale Tags matcht, eins das Kommentare matcht, …) und die passend verbindet, kann man einige Arbeit auch mit regulären Ausdrücken erledigen. Hier zum Beispiel die Sprachdefinition für PHP in highlight.js. Hier die von GeSHi.
Das wird der von mir getestete Highlighter wahrscheinlich falsch gemacht haben und dann habe ich es ohne Regex (stehe damit leider noch auf dem Kriegsfuß...) versucht.
NetBeans (Free Software) oder PhpStorm (kostenpflichtig, gibt aber Programme für etwa Forschung und Lehre). Ich arbeite mit beiden, und die Unterschiede zwischen den IDEs sind für meinen Workflow quasi nicht existent (Zusatztools wie Versionskontrolle nutze ich fast gar nicht direkt über die IDEs, sondern immer über Konsole). Das GUI sieht sogar fast gleich aus.
NetBeans werde ich mir mal anschauen. Versionskontrollsysteme stehen auch noch auf der ToLearn-Liste.
Kannst du mir vielleicht ein funktionierendes GeSHi-Beispiel geben, deren Doku ist ziemlich wirr und enthält soetwas nicht?
Wenn du ein Release ziehst und entpackst, dann zum Beispiel so:
Du musst im Grunde nur die
geshi.php
-Datei passend einbinden. Sprachdefinitionen und dergleichen lädt der Highlighter bei Bedarf automatisch selbst.
Genau das habe ich auch gemacht und GeSHi hat ein pre
um den Code gepackt, aber sonst nichts – vermutlich konnte er aus irgendeinem Grund (Dateirechte...) keine Sprachdateien laden – ich habe einfach alles noch mal durchgeführt und jetzt funktioniert es! Danke!
Gruß
Julius
@Julius
Hier noch meine Variante des Generierens via LaTeX:
Man sieht, dass bei den SVG- und PNG-Varianten mitunter oben ein wenig was abgeschnitten zu sein scheint. Etwa bei der Null in der ersten Zeile der SVG- und PNG-Versionen und bei dem $$P_{>0}$$ in der dritten Zeile der PNG-Version. Ich weiß nicht, woran das liegt.
Code dazu:
Der Code ist nicht so klasse, da das alles nur ein Test war. Ich habe ihn heute noch kurz aufgeräumt, aber na ja.
Um ihn auszuführen, müssten pdflatex
, pdf2svg
und convert
installiert sein. Im Code-Verzeichnis müsste zudem ein beschreibbares Verzeichnis cache
existieren.
Die Ausführung dauert recht lange. Auf meinem System 10-15 Sekunden.
Hallo mermshaus,
Man sieht, dass bei den SVG- und PNG-Varianten mitunter oben ein wenig was abgeschnitten zu sein scheint.
Das Problem mit den abgeschnittenen Grafiken hatte ich auch mal (glaube ich zumindest); so sieht meine Lösung aus:
\documentclass{minimal}
\usepackage{amsmath}
\usepackage{color}
\usepackage[active,tightpage]{preview}
\setlength\PreviewBorder{0.5pt}
\begin{document}
\begin{preview}
\color{black}
$\displaystyle n>0$
\end{preview}
\end{document}
pdflatex --output-format=dvi formel.tex
dvisvgm --no-fonts formel.dvi
Das Ergebnis (PNG, SVG sieht genauso aus):
Gruß
Julius