Commit fcf6498c authored by Administrator's avatar Administrator

updating ruby, jekyll, jekyll-bulma

parent 609827cd
I"{"source"=>"/home/stefan/jekyll/informatom.com", "destination"=>"/home/stefan/jekyll/informatom.com/_site", "collections_dir"=>"", "cache_dir"=>".jekyll-cache", "plugins_dir"=>"_plugins", "layouts_dir"=>"_layouts", "data_dir"=>"_data", "includes_dir"=>"_includes", "collections"=>{"posts"=>{"output"=>true, "permalink"=>"/:categories/:year/:month/:day/:title:output_ext"}}, "safe"=>false, "include"=>[".htaccess"], "exclude"=>[".sass-cache", ".jekyll-cache", "gemfiles", "Gemfile", "Gemfile.lock", "node_modules", "vendor/bundle/", "vendor/cache/", "vendor/gems/", "vendor/ruby/"], "keep_files"=>[".git", ".svn"], "encoding"=>"utf-8", "markdown_ext"=>"markdown,mkdown,mkdn,mkd,md", "strict_front_matter"=>false, "show_drafts"=>nil, "limit_posts"=>0, "future"=>true, "unpublished"=>false, "whitelist"=>[], "plugins"=>["jekyll-feed"], "markdown"=>"kramdown", "highlighter"=>"rouge", "lsi"=>false, "excerpt_separator"=>"\n\n", "incremental"=>false, "detach"=>false, "port"=>"4000", "host"=>"127.0.0.1", "baseurl"=>"", "show_dir_listing"=>false, "permalink"=>"date", "paginate_path"=>"/page:num", "timezone"=>nil, "quiet"=>false, "verbose"=>false, "defaults"=>[], "liquid"=>{"error_mode"=>"warn", "strict_filters"=>false, "strict_variables"=>false}, "kramdown"=>{"auto_ids"=>true, "toc_levels"=>"1..6", "entity_output"=>"as_char", "smart_quotes"=>"lsquo,rsquo,ldquo,rdquo", "input"=>"GFM", "hard_wrap"=>false, "guess_lang"=>true, "footnote_nr"=>1, "show_warnings"=>false}, "title"=>"Stefan Haslinger | Informatom EDV-Dienstleistungen e.U.", "email"=>"stefan.haslinger@informatom.com", "description"=>"Webseite der Informmatom EDV-Dienstleistungen a.k.a. Stefan Haslinger\n", "url"=>"http://localhost:4000", "twitter_username"=>"informatom", "github_username"=>"informatom", "theme"=>"jekyll-bulma", "monthly_archive"=>{"path"=>"archiv"}, "config"=>["_config.yml", "_config.dev.yml"], "livereload_port"=>35729, "serving"=>true, "watch"=>true}:ET
\ No newline at end of file
I"0 <h2 id="semantischlogische-produktkategorien">Semantisch/logische Produktkategorien</h2>
<p>Im Zuge einer neuen Kundenanforderung haben wir im Bereich der
Produktkategorien eine Umstellung durchgeführt:</p>
<p>Der Kunde wünschte sich, Produkte, nach Kriterien, die in seinem ERP
hinterlegt sind, zusammenfassen zu können, etwa alle Produkte aus einer
Kategorien und ihren Unterkategorien im ERP.</p>
<p>Wir haben bislang derartige Sonderwünsche explizit im Importjob
berücksichtigt, in dem wir die entsprechenden Abfragen in der
ERP-Schnittstelle implementiert haben. Das hatte allerdings zur Folge,
dass jede Änderung eine Änderung im Code und damit eine Intervention von
uns benötigt hat.</p>
<p>Nun haben wir ein weiteres Attribut in der Produktkategorie eingeführt,
mit der vom Produktmanager des Kunden eine logische Bedingung hinterlegt
werden kann, die im Importjob evaluiert und berücksichtigt wird.</p>
<p>So sucht</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>(preisdatumVON &lt;= Time.now) &amp; (preisdatumBIS &gt;= Time.now)
</code></pre></div></div>
<p>etwa nach Aktionen,</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>(artikeluntergruppe &lt;= '00060-00090-00090-00000-00000') &amp; (artikeluntergruppe &gt;= '00060-00090-00000-00000-00000')
</code></pre></div></div>
<p>nach Artikeln in gewissen Artikelgruppen oder</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>kennzeichen == 'S'
</code></pre></div></div>
<p>nach besonders gekennzeichneten Artikeln im ERP. Die hier zu verwendende
Abfragesprache ähnelt SQL und stammt aus dem <a href="https://github.com/activerecord-hackery/squeel">Squeel
Gem</a>. Wir geben auf
diese Weise nicht beliebige SQL Konstrukte frei, sondern erlauben nur
Lesezugriffe in der ERP-Datenbank.</p>
<p>Weiters kennzeichnen wir Kategorien nun semantisch in der Datenbank, ob
es sich um eine einfache Kategorie, eine mit Squeel-Bedingung, die
Kategorie der Aktionen oder etwa eine Mercator-Systemkategorie handelt.
Ein Beispiel für die letzte Gruppe sind die “Waisen”, in der per Job
Produkte gesammelt werden, die keiner anderen Kategorie zugeordnet sind
oder nicht zugeordnet werden können.</p>
<h3 id="semantische-kategorienkennzeichnung">Semantische Kategorienkennzeichnung</h3>
<hr />
<p><img src="/img/blog/semantische_kategorien.png" alt="Semantische Kategorien" style="max-width: 100%" /></p>
<hr />
<h2 id="diverses">Diverses</h2>
<ul>
<li>Wir haben gelernt, dass Truetypeschriften (.ttf) ein
Berechtingungskonzept kennen. Schriften können als nicht für den
Download lizenziert gekennzeichnet werden. Das verhindert im
Microsoft Internet Explorer den Download während sich Mozilla
Firefox und Google Chrome nicht daran halten.</li>
<li>Der Importjob für Kategorien aus dem Mercator-Legacy-Importer wurde
um einen Importjob in der ERP-Schnittstelle
Mercator-Mesonic ergänzt.</li>
<li>Im Bereich SEO haben wir eine Verbesserung durchgeführt, Webseiten
im CMS können nun beschlagwortet werden.</li>
</ul>
:ET
\ No newline at end of file
I" 0<p>13.Oktober, 13:35. Da stehe ich nun im Englischen Garten in München und habe
noch ziemlich genau 5 Minuten Zeit bis zum Start. Zum Start des Münchner
Halbmarathons. Und das alles nur wegen Dominik. Der nicht hier ist.</p>
<p>Aber hier ist Friedl. Er läuft seinen zweiten Halbmarathon. Vor zwei Wochen
ist er in Ulm schon eine 2:48 gelaufen und heute will er wenigstens eine 2:47
schaffen. Wir haben 3 Stunden Zeit, das ist die sogenannte Karenzzeit. Dann
kommt der Besenwagen. Den ich hoffentlich nicht sehen werde. Hinter dem muss man
am Gehsteig laufen.</p>
<p>Steve ist bereits vor 5 Minuten gestartet. Im Startblock A. Die Schnellen.
Wir sind C. Die Langsamen. Vorne wird geklatscht, Es geht wohl los. Den
Startschuss hören wir nicht, wir sind zu weit hinten. <strong>Kilometer 0</strong>.</p>
<p><strong>Kilometer 1:</strong> Nur nicht zu schnell loslegen. Beim Staffellauf in Wien bin ich
vor einem halben Jahr schon mal 15k auf Zeit gelaufen. Also 15 Kilometer.
Nach 2k war ich das erste Mal kaputt. Zu schnell angegangen. Das passiert
mir heute nicht. Mir ist auch zu warm dafür. Und es geht bereits nach 300m
bergauf. Ich dachte, in München ist es flach.</p>
<p><strong>Kilometer 2:</strong> Eigentlich wollte ich mit den 2:30 Pacern anfangs mitlaufen.
Theoretisch wären 2:34 bei mir drin. Sagt die Leistungsmessung der letzten
Wochen und Monate. Die Pacer haben wir auf der ersten Steigung aus den Augen
verloren.
Ich muss also mein eigenes Rennen laufen. Vielleicht auch besser so.
Jetzt erst mal von der Steigung erholen. Und ich habe ja noch Friedl. Er läuft
genau mein Tempo. Also das, was sich für mich OK anfühlt. 2:47 würde ich jetzt
auch nehmen…</p>
<p><strong>Kilometer 3:</strong> Der Puls ist konstant bei 160. Das ist OK. Sagt mir auch die
Erfahrung der letzten Monate. Ich habe sogar eine Spirometrie unter
Laborbedingungen gemacht und weiß, dass mein Maximalpuls bei 182 liegt.
Also alles im Grünen Bereich.</p>
<p><strong>Kilometer 4:</strong> Friedl ist noch neben mir, mal ein paar Meter vor mir, mal hinter
mir. Wir bringen einander automatisch dazu, mit sehr konstanter Anstrengung zu
laufen. Das ist gut. So kann man das überstehen. Denn es ist sehr warm.</p>
<p>Über uns ist ein Luftschiff. Eine nette Ablenkung. Ganz ruhig. Rund herum immer
wieder Zuschauer, die uns anfeuern. Kleine Kinder, die abgeklatscht werden wollen.
Läuft.</p>
<p><strong>Kilometer 5:</strong> Die erste Verpflegungsstelle. Und Friedl ist weg. Er läuft durch
Verpflegungsstellen durch, trinkt und isst dabei. Ich gehe langsam, habe das
nicht so heraus. Aber ich kriege ihn nach 200 Metern wieder, wenn es das nächste
Mal bergab geht. Funktioniert eigentlich ganz gut. Habe in den letzten Wochen
viel Wert auf Techniktraining gelegt. Die richtige Vorlage. Also sich so ein
bisschen vorwärts lehnen beim Laufen. Damit bremst man
nicht bei jedem Schritt. Und bergab wird man automatisch schneller. Nur sauber
laufen, sonst gibt es Rückenprobleme. Oder mit dem Knie. Oder der Achillessehne.
Aber ich bleibe konzentriert.</p>
<p><strong>Kilometer 6:</strong> Ist das heiß hier. Fade Strecke, die Sonne brennt. Die Univesität
gibt später zu Protokoll, dass die Maximaltemperatur des Tages 25.7 Grad ist.
Im Frühjahr habe ich gemerkt, dass ich, sobald es mehr als 16 Grad hat, langsamer
werde. Der Traum von den 2:30 ist ad acta gelegt. Macht nix. 3:00 sind das
Ziel. Also: Breaking Three.</p>
<p><strong>Kilometer 7:</strong> Um Breaking Three zu schaffen muss ich 8:30 pro Kilometer laufen.
Bisher geht das leicht. Der schnellste Kilometer war 7:50, alle unter 8:30.
Ich baue also einen gewissen Zeitpolster auf. Wie viel? Egal. Zum Rechnen habe
ich keine Lust.
Der Kipchoge ist ja gestern in Wien gelaufen: Breaking Two. Er hat einen
Marathon unter zwei Stunden geschafft. Ich will die halbe Strecke in drei.
Jedem seine Ziele. Und meines habe ich Dominik, Steve und TJ zu verdanken.</p>
<p><strong>Kilometer 8:</strong> Heiss. Der Dominik hat auf der Ganzohr Wissenschaftspodcastkonferenz
vor zwei Jahren spät abends bei Burger und Bier gesagt, er will wieder Sport machen.
Und der Steve meinte, er könnte ihn trainieren. TJ und ich haben sich angeschlossen.
Und gemeinsam sind wir die 3 Schweinehunde. Steve ist ja der Betreuer. Der
scheint keinen Schweinehund überwinden zu müssen und läuft 5x die Woche wie
ein Uhrwerk. Wobei nicht ganz. Doch dazu später. Als Podcaster berichten wir
3 Schweinehunde etwa einmal im Monat von unserem Trainingsfortschritt.
Trainingsziel ist hier und heute den Halbmarathon zu schaffen. In der Karenzzeit.
Aber das hatten wir ja schon.</p>
<p><strong>Kilometer 9:</strong> Friedl ist noch da. Steve wohl weit vor mir. Insgesamt sind wir
heute sogar 9 Schweinehunde. Einige Hörer:innen haben sich angeschlossen.
Sonst wäre das auch traurig. Denn Dominik konnte heute nicht starten. Zuerst
eine Verletzung am Fuß, eine Sehnenzerrung. Zuletzt noch 2 Erkältungen.
Und während ich mich hier abmühe, frage ich mich, ob die ihm nicht ganz recht
gekommen sind. Nein, dafür hat er zu viel trainiert. TJ ist schon länger
raus. Details haben wir im Schweinehunde Podcast berichtet. Ob er
je wieder mit uns laufen wird? Ich weiß es nicht. Mir ist zu heiß.</p>
<p><strong>Kilometer 10:</strong> Einem älteren Herrn vor mir auch. Er kracht torkelnd gegen eine
Bande. Ungefähr 50 Meter von den Sanis entfernt. Die kümmern sich gleich um
ihn. Alles gut. Aber ich mache mir bewusst, dass ich auch ziemlich am Limit
bin. Nicht von der Atmung, die hat sich in den letzten Wochen sehr verbessert.
Eigentlich atme ich fast flach jetzt. Aber mir ist heiß. Ich weiß, das hatten
wir schon. Aber es dominiert die Gedanken. Aber besser das, als andere
Probleme. Vor einigen Wochen hatte ich mit der linken Patellasehne zu tun,
das ist die über der Kniescheibe. Jumpers Knee, wie es genannt wird. Habe ich
gelernt, wie viel anderes Anatomisches. Konnte ich aber durch Dehnung und
Massage wieder los werden.</p>
<p>Hat sich herausgestellt, so heuer im Frühjahr, Steve unser Trainer, ist auch nur
ein Mensch. Nach einem Rennen war er ziemlich K.O. Beine wie Gummi, hat er
gesagt. Für einige Wochen. Warum konnten auch Ärzte nicht heraus finden. Das ist
alles nicht so einfach mit dem Organismus. Manchmal ist die Ursache eines
Problems ganz wo anders im Körper zu suchen. Oft im Kopf. Manchmal findet man
sie nie und es wird einfach so wieder besser.</p>
<p><strong>Kilometer 11:</strong> Friedl ist noch da, er schnauft. Mal sehen, ob ich ihn noch
abhänge? Aber tut mir da nicht gerade die Achillessehne weh? Sauberer Laufen!
Und schon ist es wieder weg. Vielleicht ein Warnsignal. Mit der gab es auch vor
einiger Zeit Probleme. Die beiden sind auch meine Schwachstellen. Wegen ihnen
habe ich zuletzt die Umfänge beschnitten, ein paar lange Läufe ausgelassen. Ob
sich das noch rächen wird?</p>
<p><strong>Kilometer 12:</strong> Es geht in die Stadt. Mehr Schatten. Das tut gut. Aber auch die
Energie wird weniger. Und nach jeder Verpflegungsstelle wieder zu Friedl
aufschließen kostet Kraft. Ich glaube nun eher, er wird mich abhängen. Meine
Leistung sinkt. Anfangs waren es bergauf 240 Watt. Später 215 flach. Jetzt
gerade noch 200. Das sagt mir ein Sensor am Schuh, der mit meiner Uhr spricht.
Schon cool. Eigenlich sollte ich um die 240 Watt laufen. Aber das ist bei der Hitze
nicht drin. Ich will ins Ziel kommen. Lieber etwas vorsichtig sein und nicht
überpacen. Ich will mich ja nicht kaputt machen.</p>
<p><strong>Kilometer 13:</strong> Puls weiter bei 160. Kardiovaskuläre Dings … Drift. Das Gehirn
hat schon etwas zu wenig Sauerstoff. Der Puls steigt langsam, wenn man nicht
langsamer wird, das ist normal. Und das wird heute noch lang werden. Friedl ist
noch in Sichtweite, aber ich schließe nicht mehr locker auf. Egal.</p>
<p>Das mit Breaking Three muss sich ausgehen. Immer noch jeder km knapp unter 8:30.
Der Besenwagen ist so weit weg wie noch
nie. Normaler weise könnte ich mir im Kopf einen karierten Zettel vorstellen und
Wurzel ziehen. Jetzt nicht mehr. Eigentlich interessant, dass das Gehirn und der
Körper das recht locker hinnehmen. Über was man alles nachdenken kann, so beim
Laufen. Die Gedanken driften immer wieder weg vom Lauf. Zuschauer feuern uns
an. Ach ja, da sind wieder Kinder, die abklatschen wollen. 2m Umweg?
Nö. Zu viel Anstrengung. Sorry.</p>
<p><strong>Kilometer 14:</strong> Vorbei am Viktualienmarkt über Pflastersteine. Vor einem Jahr
hätte ich da noch Probleme gehabt. Die Sehnen in den Füßen waren zu schwach.
Habe dann ab Weihnachten die Umstellung zum Mittelfußlauf gemacht. Im April
gab es erste Erfolge. Jetzt sind Pflastersteine kein Problem mehr. Ich
schmunzle. Das sieht die Sprecherin: “Stefan schenkt uns sogar noch ein Lächeln”.
Ich hatte das gar nicht gemerkt. Der Kipchoge macht das übrigens auch. Um
den Schmerz zu überwinden. Noch tut nix weh.</p>
<p><strong>Kilometer 15:</strong> Friedl ist weg. Die Sonne geht aber auch langsam runter. “Das sollte
zu schaffen sein”, spreche ich mit einer Läuferin. “Daran habe ich nie gezweifelt.”
In dem Moment sticht die rechte Wade. Jetzt zweifle ich doch. Mit der gab es
noch nie Probleme. Egal, hier gibt’s auch wieder Verpflegung. Und die habe
ich nötig. Energieriegel und Banane. Burps. Doch zuviel? Nein, geht schon.</p>
<p><strong>Kilometer 16:</strong> Wieder mehr Energie. Aber die Wade tut auch mehr weh. Puh.
Schade, dass ich mich an Friedl nicht mehr anhängen kann. Er ist endgültig außer
Sichtweite. Ich suche mir einen anderen. Der humpelt sogar. Ich bin jetzt so
langsam, dass ich mit einem der humpelnd läuft, gerade so mitkomme.</p>
<p><strong>Kilometer 17:</strong> Das war’s wieder mit der Energie, aber sind ja nur mehr 4 Kilometer.
Alter Schwede: Noch 4 km mit einer stechenden Wade? Aber ich habe noch 3 Gels
bei mir. Mal eins nehmen. Jeder Meter fühlt sich bergauf an. Obwohl es hier
eher bergab geht. Meine Uhr meint am Schluss 140 Höhenmeter, die von Steve 65.
Was stimmt? Eigentlich ist das nur eine Frage der Auflösung der Messung, so
eine Höhenkurve ist ein Fraktal. Oha! Das Hirn ist wieder voll da.
Um den Schmerz zu genießen? Immerhin ist mit dem Kreislauf alles in Ordnung.
Ich bin angstrengt, aber der Puls ist weiter bei 160.</p>
<p><strong>Kilometer 18:</strong> Noch 3km. Die Reihen lichten sich, das Feld um mich zieht sich
auseinander. Auch kaum Zuschauer. Langweilige Häuserreihen. Mal kurz überschlagen,
ob sich das mit Gehen ausgehen würde. Nein. Aber ein paar Meter gehen schon.
OK: 100 Meter. Dann wieder Anlaufen. Die Muskulatur in beiden Beinen tut weh.
3 Kilometer noch. Ach, das hatten wir ja schon.</p>
<p><strong>Kilometer 19:</strong> Am Wegesrand sitzt einer mit einem Krampf. Ich will ihn aufmuntern,
neben mir zu gehen. So langsam laufe ich. Er kann nicht. Aber er wirkt sonst OK.
Der bei km 15 am Rettungswagen in der Rettungsdecke war nicht mehr OK. Totaler
Blick durch mich durch ins Leere. Ist mit mir alles OK?
Ja soweit alles OK. Aber es ist verdammt anstrengend. Mir fehlen die langen Läufe.
Aber jetzt habe ich zwei Jahre trainiert und es fehlen mir mehr zwei Kilometer.
Aufgeben ist definitiv keine Option. Denken Sie nicht an das Aufgeben!
Alter, bin ich langsam, manchmal nur 9:30, und das laufend.</p>
<p><strong>Kilometer 20:</strong> Die Polizeimotorräder überholen mich. Kommt schon der Besenwagen?
Nein, die wollen nur nach Hause. Das Ziel, das Olympiastadion, ist schon zu sehen.
Das letzte Gel hinein. Eigentlich ist der Akku leer. Ich mag nicht mehr. Weiter!</p>
<p><strong>Kilometer 21:</strong> Die mentale Barriere fällt weg. Es ist nicht mehr weit, ich werde
wieder so schnell wie ganz am Anfang. Beim Einlauf ins Stadium gibt’s dann Gänsehaut
für ein paar Sekunden. Jetzt sind es nur mehr 200m. Ich überhole noch einen. Sehe
die Freundin, die mich anfeuert. Ins Ziel. Geschafft! Three is broken.
2:55:irgendwas. Egal. Halbmarathon erledigt. Uff! Hinsetz… Nö, der
Stadionsprechen wirft uns hinaus - über die lange Treppe geht’s aus dem
Stadion.</p>
<p>Ich war nie im roten Bereich, den kenne ich von kürzeren Läufen. Steve hat mich
gut vorbereitet, der Trainingsplan war topp. Beim Lauf war alles war unter
Kontrolle. Und jetzt? Erstmal ausruhen. Forsetzung gibt’s im Podcast.</p>
:ET
\ No newline at end of file
I"-<p>Ich fuhr neulich mit einem Zug durch Deutschland, als ich auf Twitter über einen Post auf einen
Benutzer stieß, der systematisch andere Benutzer auf das Übelste herabwürdigte. Ich hatte
derart Übles schon länger nicht mehr gesehen, sodass ich mich genötigt sah, der Benutzer
zu melden.</p>
:ET
\ No newline at end of file
I"ï<h2 id="datenimport">Datenimport</h2>
<p>Die letzte Woche stand im Zeichen des Datenimport, die Daten des ersten
Referenzsystems werden nun regelmäßig aus den Fremdsystemen befüllt, das
bedeutet</p>
<ul>
<li>die Stammdaten sind aus dem alten Webshop komplett übernommen, hier
ist keine weitere Aktualisierung nötig</li>
<li>der Produktkatalog wird aus dem ERP aktualisiert</li>
<li>die Relationen zwischen Hardware und passendem Zubehör kommen
täglich aus der Zubehördatenbank</li>
<li>Produkteigenschaften werden aus aus Icecat Webservice por
Delta-Update täglich aktualisiert</li>
<li>die Suchmaschine wird kontinuierlich aktualisiert, das heißt
Produkte und Kategorien werden reindiziert</li>
</ul>
<h2 id="exception-notification">Exception Notification</h2>
<p>Um die Stabilität des Imports zu garantieren, werden wir ab sofort über
Exceptions in der Applikation benachrichtigt. Exceptions heißen auf
Deutsch Ausnahmefehler und stellen Fehlersituationen dar, die bei der
Programmierung nicht antizipiert wurden. Die Information über Exceptions
beschränkt sich nicht nur auf Fehlersituationen in Jobs, sondern Fehler
an jeder Stelle in der Anwendung. Wir erhalten in dieser Information
auch zum Beispiel die Benutzeridentifikation, die Abfrageparameter und
die Stelle im Programmcode, an der der Fehler aufgetreten ist.</p>
<p>Das hilft uns bei der Behebung des Fehlers, indem wir die Situation
nachstellen können. Wir können nun den Benutzer informieren, dass wir an
der Behebung des Fehlers arbeiten, was die Kundenzufriedenheit steigert.
Nach Behebung können wir den Benutzer etwa per E-Mail von der
Instandsetzung informieren.</p>
<h3 id="simulation-einer-fehlersituation">Simulation einer Fehlersituation</h3>
<hr />
<p><img src="/img/blog/exception.png" alt="Exception" style="max-width: 100%" /></p>
<hr />
<h2 id="weiteres">Weiteres</h2>
<ul>
<li>Die Formatierung des Suchfeldes macht in manchen Browsern
Schwierigkeiten, wir denken aber, das Problem gelöst zu haben.</li>
</ul>
:ET
\ No newline at end of file
I"Ê<h2 id="bugsquashing">Bugsquashing</h2>
<p>Einer unserer Referenzkunden hat diese Woche gleich mehrere Leute zum
Test seiner Mercator-Instanz involviert und uns eine stattliche Liste
geliefert:\ gleich 51 Fehler, Unzulänglichkeiten und Änderungswünsche. Das ist
einerseits viel, andererseits ist nun die gesamte Applikation von
mehreren Personen, die nicht im Projekt involviert sind, ausgiebig
getestet worden.</p>
<p>Alle Fehler konnten bereits diese Woche behoben werden. Eine derartige
intensive Phase der Fehlerbehebung wird wenig charmant als
“Bugsquashing†bezeichnet.</p>
<p>Auch der Großteil der Unzulänglichkeiten ist behoben, bei den
Änderungswünschen haben wir uns auf jene beschränkt, für die wir einen
Kundennutzen auch für andere Kunden erkennen können. Für die anderen
Wünsche haben wir den Aufwand geschätzt, verpreist und angeboten. Es
darf geraten werden, mit wie vielen kostenpflichtig Änderungen wir
beauftragt wurden. ;-)</p>
<h2 id="die-relevanten-änderungen">Die relevanten Änderungen</h2>
<ul>
<li>Suchergebnisse wurden fälschlicherweise rechtsbündig dargestellt.</li>
<li>Verbesserungen am Layout des Contentmanager wurden durchgeführt.</li>
<li>Partner Logos können nun auf mehrere Arten eingebunden werden: Im
Footer; an den Inhalt der Seite relativ gebunden; und an fixer
Position am Bildschirm. Sie verschwinden bei zu schmalem Bildschirm
(zum Beispiel am Smartphone dann hinter dem wichtigeren Inhalt
der Seite).</li>
<li>Bei den Twitter Boostrap Assets haben wir einige Dateien aus dem
Code Repository entfernen können.</li>
<li>Bei Berechtigung der Konversationserzeugung ist eine Regression
aufgetreten, interessanter weise diesmal nicht bei uns, sondern im
Hobo Framework. Wir haben den Fehler eingemeldet und die Behebung
ist bereits in Arbeit. Mittlerweile haben wir einen Workaround mit
gerade mal 3 zusätzlichen Zeilen Code in unserer Applikation. Das
Schreiben der Zeilen hat weniger Zeit benötigt als das Berichten
hier in diesem Artikel. Viel mehr Zeit hat das Auffinden des Fehlers
benötigt, da wir sehr lange geglaubt haben, dass der Fehler bei uns
liegen muss. Vielleicht ist etwas mehr Selbstvertrauen angebracht!</li>
<li>Formulare, die per Ajax abgesendet wurden, wurden mit dem Absenden
nicht geleert. Zum Beispiel blieb nach dem Senden einer
Chatnachricht diese im Formularfeld steht, was störend und
verwirrend ist.</li>
<li>Leere Registerreiter in der Produktdetailsicht werden
nun ausgeblendet.</li>
<li>Es gibt eine zusätzliche Navigation zu den Registerreitern vom
oberen Teil der Produktansicht.</li>
<li>Die Größe der Photos in Produkt- und Kategorienansicht
wurde angepasst.</li>
<li>Die Produkt Mini Card wurde besser gestaltet, es handelt sich dabei
um die Produktdarstellungen in den Relationen zu Zubehör, verwandten
Produkten, etc.</li>
<li>Versteckte und archivierte Seiten wurden fälschlicherweise in der
Navigation eingeblendet.</li>
<li>Archivierte Seiten konnten bei Aufruf per URL noch
dargestellt werden.</li>
<li>Die Darstellung der Navigationsleiste wurde verbessert.</li>
<li>Der Video Chat Link und der Link zum Starten einer Konversation
wurden als Tags implementiert und werden nun einheitlich in der
gesamten Anwendung verwendet.</li>
<li>Langtexte können nun gekürzt dargestellt werden. Dazu gibt es eine
Einstellungsmöglichkeit im Administrationsinterface.</li>
<li>Der Platzhalter für fehlende Bilder wurde durch ein transparentes
Bild ersetzt.</li>
<li>Administrationsbereich und Vertriebsbereich sind nun
voll responsive.</li>
<li>Untermenüs werden nun auch in der responsiven Darstellung
korrekt angezeigt.</li>
</ul>
<h3 id="responsives-submenü-mit-den-neuen-einheitlichen-buttons-für-chat-und-beratungsstart">Responsives Submenü mit den neuen einheitlichen Buttons für Chat und Beratungsstart</h3>
<hr />
<p><img src="/img/blog/responsive-submenu.png" alt="responsives Untermenu" style="max-width: 100%" /></p>
<hr />
<ul>
<li>Die Navigation im Administrationsbereich, im Vertriebsbereich und im
Vertragsbereich wurde überarbeitetet, vereinheitlicht
und vereinfacht.</li>
<li>Ein Routingfehler wurde behoben: Beim Aufrufen der Shopdomain wurde
auf die CMS-Domain umgeleitet statt auf die Kategorienübersicht.</li>
<li>Kategorien können nun auch temporär stillgelegt werden. Sie werden
dann auch durch das Vorhandensein von aktiven Produkten beim
nächsten Updatejob nicht mehr aktiviert.</li>
<li>Weitere Ajax Forms wurden beim Absenden nicht aktualisiert.</li>
</ul>
:ET
\ No newline at end of file
I"<p>Das Modem ist im ausgelieferten Zustand dürftig konfiguriert. Um
Dyndns und Always On zu aktivieren sind folgende Schritte nötig:</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>telnet 10.0.0.138
</code></pre></div></div>
<p>user bleibt leer, passwort bleibt leer:</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ppp ifdetach intf INTERNET
ppp rtdelete intf INTERNET
ppp rtadd intf INTERNET dst 0.0.0.0/0
ppp ifconfig intf INTERNET demanddial disabled restart enabled
dyndns service modify name=dyndns server=members.dyndns.org port=www-http request=/nic/update updateinterval=2097120 retryinterval=30 max_retry=5
ppp ifattach intf INTERNET
saveall
</code></pre></div></div>
<p>Will man Port 3 und 4 statt für IPTV als normale LAN-Switchports
verwenden, ist noch durchzuführen:</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>eth bridge vlan ifadd name=default intf=ethport3
eth bridge vlan ifdelete name=IPTV_vlan intf=ethport3
eth bridge vlan ifadd name=default intf=ethport4
eth bridge vlan ifdelete name=IPTV_vlan intf=ethport4
</code></pre></div></div>
<p>Ich möchte mich noch bei <a href="http://flo83.at/?p=651">Flo83</a> bedanken.</p>
:ET
\ No newline at end of file
I"V <h2 id="weitere-social-media-features">Weitere Social Media Features</h2>
<ul>
<li>
<p>Es gibt nun die Möglichkeit, Podcasts in Mercator
zu veröffentlichen. Wir haben dazu einen <a href="http://podlove.org/podlove-web-player/">Podlove
Webplayer</a> integriert, der
die Kapitelinformationen aus der Mercator-Datenbank in sein
Interface aufnimmt und es damit dem Besucher der Webseite
ermöglicht, ein benanntes Kapitel direkt aufzurufen. Man kann zu
einem Podcasts Shownotes hinterlegen. Podcasts verwenden wie
Blogposts die Kommentarengine. Wir erzeugen zusätzlich zwei