Congratulations!

[Valid RSS] This is a valid RSS feed.

Recommendations

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: http://www.rogoit.de/webdesign-typo3-blog-duisburg/feed/

  1. <?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
  2. xmlns:content="http://purl.org/rss/1.0/modules/content/"
  3. xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  4. xmlns:dc="http://purl.org/dc/elements/1.1/"
  5. xmlns:atom="http://www.w3.org/2005/Atom"
  6. xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  7. xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  8. >
  9.  
  10. <channel>
  11. <title>Webdesign und TYPO3 Blog aus Duisburg</title>
  12. <atom:link href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/feed/" rel="self" type="application/rss+xml" />
  13. <link>https://www.rogoit.de/webdesign-typo3-blog-duisburg</link>
  14. <description>Neuigkeiten rund um das Thema Webdesign</description>
  15. <lastBuildDate>Sun, 05 Aug 2018 07:20:13 +0000</lastBuildDate>
  16. <language>de-DE</language>
  17. <sy:updatePeriod>hourly</sy:updatePeriod>
  18. <sy:updateFrequency>1</sy:updateFrequency>
  19. <generator>https://wordpress.org/?v=5.0.3</generator>
  20. <item>
  21. <title>Pair Programming Tipps und Studien</title>
  22. <link>https://www.rogoit.de/webdesign-typo3-blog-duisburg/pair-programming-tipps-und-studien/</link>
  23. <comments>https://www.rogoit.de/webdesign-typo3-blog-duisburg/pair-programming-tipps-und-studien/#comments</comments>
  24. <pubDate>Wed, 19 Apr 2017 20:23:29 +0000</pubDate>
  25. <dc:creator><![CDATA[Roland Golla]]></dc:creator>
  26. <category><![CDATA[Cleancode]]></category>
  27. <category><![CDATA[Cleancode Regeln]]></category>
  28. <category><![CDATA[Einstieg in die Internet Programmierung]]></category>
  29. <category><![CDATA[Webdesign Performance]]></category>
  30. <category><![CDATA[Webdevelopment]]></category>
  31. <category><![CDATA[Webdevelopment Tools]]></category>
  32. <category><![CDATA[Webdev]]></category>
  33.  
  34. <guid isPermaLink="false">http://www.rogoit.de/webdesign-typo3-blog-duisburg/?p=5223</guid>
  35. <description><![CDATA[<p>Pair Programming ist sehr gut für das eigene Team und die Software-Qualität. Leider gibt es viele Vorbehalte gegenüber dieser tollen Art zu arbeiten. Das ist sehr schade. Seit einigen Jahren bin ich ja auf Konferenzen und User-Groups mit der Funk-Tastatur unterwegs und habe ja auch bei den Never Code Alone Events #ncaevents ausschließlich Pair-Programming im [...]</p>
  36. <p>Der TYPO3 Webdesign Blog <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/pair-programming-tipps-und-studien/">Pair Programming Tipps und Studien</a> erschien zuerst auf <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg">Webdesign und TYPO3 Blog aus Duisburg</a>.</p>
  37. ]]></description>
  38. <content:encoded><![CDATA[<p>Pair Programming ist sehr gut für das eigene Team und die Software-Qualität. Leider gibt es viele Vorbehalte gegenüber dieser tollen Art zu arbeiten. Das ist sehr schade. Seit einigen Jahren bin ich ja auf Konferenzen und User-Groups mit der Funk-Tastatur unterwegs und habe ja auch bei den Never Code Alone Events #ncaevents ausschließlich Pair-Programming im Fokus. Hier gebe ich euch ein paar gute Tipps für den reibungslosen Ablauf.</p>
  39. <h2>Driver Navigator / Fuck it</h2>
  40. <div id="attachment_5231" style="width: 310px" class="wp-caption alignleft"><a href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/04/Pair-programming-wikipedia.jpg"><img class="size-medium wp-image-5231" src="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/04/Pair-programming-wikipedia-300x225.jpg" alt="Pair Programming Wikipedia" width="300" height="225" srcset="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/04/Pair-programming-wikipedia-300x225.jpg 300w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/04/Pair-programming-wikipedia-1024x768.jpg 1024w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/04/Pair-programming-wikipedia-300x225@2x.jpg 600w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/04/Pair-programming-wikipedia-1024x768@2x.jpg 2048w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">Pair Programming Wikipedia</p></div>
  41. <p>Sucht man in staubigen Sachbüchern oder bei Wikipedia nach Pair-Programming so kommt man ganz schnell zum Driver-Navigator-Spiel. Hier soll die Person &#8211; ganz Gender neutral <img src="https://s.w.org/images/core/emoji/11/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> &#8211; an der Tastatur nur tippen und der Navigator praktisch die Richtung vorgeben. Das mag ja pädagogisch wertvoll sein, aber wer steht schon auf Pädagogik. Schnappt euch bitte jeder eine Tastatur und arbeitet gemeinsam und zusammen. Alles andere führt nur zu völlig unnötigen Frust. Pair Programming ist kein Selbtsläufer und muß auch geübt werden. Dabei ist auch viel Geduld und natürlich Respekt gefragt. Es geht nicht um richtig und falsch, sondern um eine gemeinsame Sprache und Lösung.</p>
  42. <h2>Bekannte Pitfails die ihr vermeiden solltet</h2>
  43. <ul>
  44. <li>Beide Webdeveloper müssen sich mit dem aktuellen task auskennen, damit es nach vorne geht. Sonst ist es nur ein Know-How Transfer. Der ist zwar auch wichtig, aber so dann doch sehr ineffizient und kostenintensiv</li>
  45. <li>Pair-Programming ist kostenintensiv. Deshalb zieht in der Zeit dran und gebt Gas. Ihr werdet so oder so nicht den doppelten Output haben. Aber natürlich ist das Ergebnis klarer und weniger Bug anfällig. Bleibt aber nicht in Schönheit oder Prinzipien und Diskussionen hängen. Liefert gute Arbeit ab.</li>
  46. <li>Redet miteinander. Natürlich auch der Driver. Tauscht euch aus, plat gemeinsam den nächsten kleinen Schritt und setzt ihn gemeinsam um. Das muß auch gelernt werden. Macht die Schritte nicht zu groß und wechselt auch häufig ab.</li>
  47. <li>Pair-Programming klappt nur mit Leuten, die sich grün miteinander sind und im wahrsten Sinne des auch riechen können. Leider gibt es hier immer wieder vielleicht unangenehme Situationen. Tut auch selbst einen gefallen und geht da mit frischen Klamotten hin und Zähneputzen und Kaugummi ist auch ok. Macht gerne auch mal das Fenster auf <img src="https://s.w.org/images/core/emoji/11/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>
  48. </ul>
  49. <h2>Quellen zu Pair-Programming</h2>
  50. <p>In der Software-Entwicklung ist Pair-Programming kein neues Topic. Allerdings ist es gerade im Bereich Webdeveloping viele Jahre verloren gegangen. Neben Uncle Bob Martin Fowler und dem Xtreme-Programming gibt es natürlich noch zahllose andere Namen. Fred Brooks, John Von Neummann, Richard Gabriel, Jerry Weinberg or Edsger Dijkstra sollen hier mal nur einige sein. Und natürlich findet das Thema in der Agilen Transformation auch eine immer größere Aufmerksamkeit.</p>
  51. <ul>
  52. <li>1992 &#8211; Das dynamische Duo &#8211; <a href="https://en.wikipedia.org/wiki/Larry_Constantine" target="_blank">Larry Constantine</a> Berichtet über Pair Programming bei der Whitesmith Inc. Hier haben schon damals 2 Programmierer mit einer Tastatur gemeinsam gearbeitet. Man sprach in diesem Zusammenhang von einem Schulterblick.</li>
  53. <li>1993 &#8211; Die Studie “<a href="http://dl.acm.org/citation.cfm?doid=169070.169383" target="_blank">The benefits of collaboration for student programmers</a>” von Wilson befasst sich schon früh mit den Vorteilen von Pair-Programming. Allerdings ging es mehr um den Nachweis, daß es überhaupt funktioniert.</li>
  54. <li>1995 &#8211; In dem Buch “<a href="https://en.wikipedia.org/wiki/Pattern_Languages_of_Programs" target="_blank">Pattern Languages of Program Design</a>” gibt es ein Kapitel von Jim Coplien &#8222;A Generative Development-Process Pattern Language&#8220;. Es befasst sich ebenfalls mit Pair-Programming.</li>
  55. <li>1998 &#8211; Einer der ersten Artikel zum Thema Extreme Programming taucht auf. In “<a href="http://www.adandp.media/articles/chrysler-group-goes-to-extremes(2)" target="_blank">Chrysler goes to Extremes</a>” wird Pair Programming als eine der wichtigsten Methoden vom C3 team hervorgehoben. Kurze Zeit später wird Pair-Programming zu einer der 12 XP Methoden.</li>
  56. <li>2000 &#8211; Die Regeln für das Pair-Programming als Driver und Navigator werden festgehalten und als Einstieg in Pair-Programming empfohlen. Hierzu gab es ein Mailing-List-Posting. Wie schon erwähnt sind diese Regeln in der Praxis nur bedingt anwendbar. Hilfreich ist an dieser Stelle auch ein Artikel von Sallyann Bryant &#8222;<a href="http://www.sciencedirect.com/science/article/pii/S1071581907000456" target="_blank">Pair programming and the mysterious role of the navigator</a>&#8222;.</li>
  57. <li>2002 &#8211; Laurie Williams und Robert Kessler verfassen ihr erstes Buch mit dem Titel “Pair Programming Illuminated”. Es beinhaltet zahlreiche praktische Beispiele und schöne Diskussionen zu dem Thema.</li>
  58. <li>2003 &#8211; ein anonymer Artikel im C2 Wiki mit dem Titel Ping-Pong-Pair-programming taucht auf. Er verbindet Pair-Programming mit Test-Driven-Development. Die Software-Kammer hat hier auch öfters Veranstaltungen zu dem Thema.</li>
  59. </ul>
  60. <h2>Webdeveloper Skills</h2>
  61. <p>Wie anfangs erwähnt ist es wichtig vom Know-How her gleiche Leute in einem für beide Beteiligten aktuellen Thema zusammen zu setzen. Gerade, wenn man mit Test-Driven-Development in der Ping-Pong-Variante arbeiten möchte ist es wichtig hier nicht zu weit auseinander zu sein. Sollten die Skills aber weiter auseinander sein, oder man auch in größeren Gruppen gemeinsam coden, dann kann man hier auch ein wenig die Rollen gezielt verteilen.</p>
  62. <ul>
  63. <li>Anfänger
  64. <ul>
  65. <li>Für besseres Selbstvertrauen und einen guten Lerneffekt bietet sich hier die Rolle als Driver an.</li>
  66. <li>Als Driver soll er aber ruhig Fragen stellen dürfen und weiter gebracht werden</li>
  67. </ul>
  68. </li>
  69. <li>Fortgeschrittener
  70. <ul>
  71. <li>Kann jederzeit die Tastatur übernehmen und seine eigene Rolle einfach tauschen.</li>
  72. </ul>
  73. </li>
  74. <li>Profi
  75. <ul>
  76. <li>Kann die Moderation übernehmen und das ganze Pair-Programming in seiner Session führen. Damit wird das Ziel nicht verloren und sich nicht in Details verloren.</li>
  77. </ul>
  78. </li>
  79. </ul>
  80. <h2>Voraussetzungen Pair-Programming</h2>
  81. <ul>
  82. <li>Ein separater heller und abgegrenzter Raum in dem man ungestört bei geschlossener Türe arbeiten kann</li>
  83. <li>Ein großer Monitor. Zu zweit an einem Rechner ist es zu klein. Beamer müssen hochauflösend und gut lesbar sein.</li>
  84. <li>Die IDEs sollten mit hellen Themes betrieben werden. Das sieht man deutlich besser und ist wesentlich lesbarer.</li>
  85. </ul>
  86. <h2>Erwartete Resultate</h2>
  87. <ul>
  88. <li>Verbesserte Code-Qualität durch höhere Lesbarkeit</li>
  89. <li>Know-How Transfer unter den Mitarbeitern und schnellere Einarbeitung und effektivere Arbeitsweise im gesamten Projekt</li>
  90. <li>Webdeveloper können sich besser gegenseitig vertreten und Tasks übernehmen im Falle von Krankheit, Urlaub etc.</li>
  91. <li>Erhöhte Skills und Motivation durch eine verbesserte gemeinsame Arbeitsweise und dem hohen Know-How Transfer in beide Richtungen</li>
  92. <li>Effektivere Absprachen und kürzere Informationswege unter den Webdevelopern</li>
  93. <li>Weniger Unterbrechungen von Entwicklungsprozessen, da man zu zweit natürlich weniger nebenher macht</li>
  94. </ul>
  95. <h2>Potentielle Kosten</h2>
  96. <p>Ein reiner Blick auf die Kosten darf beim Pair-Programming leider nicht die entscheidende Rolle spielen. Man geht insgesamt von 15% Mehrkosten aus. Allerdings ist das ein reiner Blickwinkel auf die Abarbeitung von Tickets. Und dafür ist der Wert ja weit von 200% entfernt. Weniger Bugs, eine höhere Motivation der Mitarbeiter und eine viel höhere Zuverlässigkeit ist sicherlich viel mehr wert.</p>
  97. <h2>Akademische Publikationen</h2>
  98. <ul>
  99. <li>Leider sehr theoretisch</li>
  100. <li><a href="http://www.scribd.com/doc/25304465/">How Pair Programming Really Works</a> eine Zusammenfassung des Driver-Navigator-Prinzips</li>
  101. <li>Empirical</li>
  102. <li><a href="http://collaboration.csc.ncsu.edu/laurie/Papers/dissertation.pdf">The Collaborative Software Process</a>, Laurie Williams Doktor Arbeit, mit dem Fokus auf der Steigerung der Qualität gegenüber entstehenden Kosten</li>
  103. <li><a href="http://www.idi.ntnu.no/grupper/su/publ/ebse/R11-pairprog-hannay-ist09.pdf">The effectiveness of pair programming: A meta-analysis</a>,<br />
  104. beinhaltet 18 Studien über die Steigerung der Code-Qualität und die effektivere Entwicklung bei einfacheren Tasks. Hier wird ebenfalls die rasche und gute Entwicklung von Juniror Webdevelopern betrachtet.</li>
  105. </ul>
  106. <p>Der TYPO3 Webdesign Blog <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/pair-programming-tipps-und-studien/">Pair Programming Tipps und Studien</a> erschien zuerst auf <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg">Webdesign und TYPO3 Blog aus Duisburg</a>.</p>
  107. ]]></content:encoded>
  108. <wfw:commentRss>https://www.rogoit.de/webdesign-typo3-blog-duisburg/pair-programming-tipps-und-studien/feed/</wfw:commentRss>
  109. <slash:comments>3</slash:comments>
  110. </item>
  111. <item>
  112. <title>Codeception Test einzelnen ausführen</title>
  113. <link>https://www.rogoit.de/webdesign-typo3-blog-duisburg/codeception-test-einzelnen-ausfuehren/</link>
  114. <comments>https://www.rogoit.de/webdesign-typo3-blog-duisburg/codeception-test-einzelnen-ausfuehren/#comments</comments>
  115. <pubDate>Sat, 25 Feb 2017 13:12:55 +0000</pubDate>
  116. <dc:creator><![CDATA[Roland Golla]]></dc:creator>
  117. <category><![CDATA[Cleancode]]></category>
  118. <category><![CDATA[CLI commands]]></category>
  119. <category><![CDATA[Code Snippets]]></category>
  120. <category><![CDATA[Codeception]]></category>
  121. <category><![CDATA[Einstieg in die Internet Programmierung]]></category>
  122. <category><![CDATA[Linux]]></category>
  123. <category><![CDATA[PHP Frameworks]]></category>
  124. <category><![CDATA[PHP Internet Programmierung für Webdesign]]></category>
  125. <category><![CDATA[PHP Schulung]]></category>
  126. <category><![CDATA[Webdesign Dokumentationen]]></category>
  127. <category><![CDATA[Webdesign mit TYPO3]]></category>
  128. <category><![CDATA[Webdesign Tutorial]]></category>
  129. <category><![CDATA[Webdevelopment]]></category>
  130. <category><![CDATA[Webdevelopment Tools]]></category>
  131. <category><![CDATA[Command Line Interface]]></category>
  132. <category><![CDATA[PHP]]></category>
  133. <category><![CDATA[PHP Entwicklung]]></category>
  134. <category><![CDATA[PHP Framework]]></category>
  135. <category><![CDATA[Webdev]]></category>
  136.  
  137. <guid isPermaLink="false">http://www.rogoit.de/webdesign-typo3-blog-duisburg/?p=5151</guid>
  138. <description><![CDATA[<p>Gerade beim der Ebtwicklung von einem Codeception Test ist es wichtig Codeception Tests auch mal einzeln auszuführen. Tests sind ja immer auch thematisch gruppiert. Dafür sollte man auch immer mit Cest- und nicht mit Cept-Files arbeiten. Da die PHP-Webdevelopern generell auch mehr Möglichkeiten bieten sind die Cest-Files auch in meinen Projekten fest etabliert. Betrachten wir [...]</p>
  139. <p>Der TYPO3 Webdesign Blog <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/codeception-test-einzelnen-ausfuehren/">Codeception Test einzelnen ausführen</a> erschien zuerst auf <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg">Webdesign und TYPO3 Blog aus Duisburg</a>.</p>
  140. ]]></description>
  141. <content:encoded><![CDATA[<p>Gerade beim der Ebtwicklung von einem Codeception Test ist es wichtig Codeception Tests auch mal einzeln auszuführen.</p>
  142. <div id="attachment_5158" style="width: 310px" class="wp-caption alignleft"><a href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/02/codeception-single-test.jpeg"><img class="wp-image-5158 size-medium" src="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/02/codeception-single-test-300x200.jpeg" alt="Codeception Test Single" width="300" height="200" srcset="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/02/codeception-single-test-300x200.jpeg 300w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/02/codeception-single-test.jpeg 850w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/02/codeception-single-test-300x200@2x.jpeg 600w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">Codeception Test Single</p></div>
  143. <p>Tests sind ja immer auch thematisch gruppiert. Dafür sollte man auch immer mit Cest- und nicht mit Cept-Files arbeiten. Da die PHP-Webdevelopern generell auch mehr Möglichkeiten bieten sind die Cest-Files auch in meinen Projekten fest etabliert. Betrachten wir einmal aus meinem <a href="https://github.com/rogoit/rolandgolla" target="_blank">Silex Codeception Repository</a> den <a href="https://github.com/rogoit/rolandgolla/blob/master/tests/acceptance/navigationCest.php" target="_blank">NavigationCest</a>.</p><pre class="crayon-plain-tag">&lt;?php
  144. use Step\Acceptance\Acceptance;
  145. use \Codeception\Scenario;
  146.  
  147. class navigationCest
  148. {
  149.    ...
  150.  
  151.    public function checkLinksToAnchor(Acceptance $I, \Page\Startpage $startpage)
  152.    {
  153.        $links = $I-&gt;grabMultiple($startpage::$navigationLink, 'href');
  154.        foreach ($links as $link) {
  155.            $I-&gt;assertContains('#', $link, 'Link contains #: ' . $link);
  156.        }
  157.    }
  158.  
  159.    ...
  160.  
  161.  
  162.    }
  163. }</pre><p></p>
  164. <h2>Einzelnen Codeception Test ausführen</h2>
  165. <p>In den Cest-Szenario werden verschiedenen Tests für die Navigation ausgeführt. Jetzt ist es natürlich möglich, daß nur einer failed. Jetzt möchte man natürlich nicht immer alle anderen ebenfalls ausführen und den Bug schnell fixen.</p><pre class="crayon-plain-tag">php vendor/bin/codecept run acceptance navigationCest.php: checkLinksToAnchor</pre><p>So kann man nur einen bestimmten Codeception Test ausführen.</p>
  166. <h2>PHP-Kurs Inhouse-Schulung Codeception</h2>
  167. <p>Ab sofort können auch verschiedene <a href="https://www.rolandgolla.de/php-kurs-inhouse-schulung/" target="_blank">PHP-Kurs Inhouse-Schulungen</a> über mich gebucht werden. Hier ist auch Codeception ein Thema.</p>
  168. <h2>Automatisierte Tests mit Codeception für effektive Entwicklung</h2>
  169. <p>Je eher ein Bug gefunden wird desto günstiger ist es diesen zu beheben. Mit Codeception Acceptance Tests kontrolliert man dabei nicht nur das Backend, sondern die gesamte Applikation als fertiges Produkt. Javascript, CSS, Vendor libraries im Zusammenspiel und auch fertig komprimiert. Navigationen, Tooltips, Formulare, Mouse Overs und auch Lightboxen. Klappt hier alles zuverlässig. Und wer hat schon Lust das auf 3 Browsern mit 2 Auflösungen zu testen. Codeception <img src="https://s.w.org/images/core/emoji/11/72x72/1f609.png" alt="😉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
  170. <h2>Kostenlose Webdevelopment Workshops &#8211; Never Code Alone</h2>
  171. <p>Seit letzten Jahr richten wir auch alle 3 Monate einen <a href="https://nevercodealone.de" target="_blank">kostenlosen Webdevelopment Workshop</a> aus und versuchen so, die Software-Qualität als Initiative zu fördern. Dabei ist es uns wichtig professionelle Schulungen kostenlos zugänglich zu machen. Neben den Schulungen bieten wir auch die Möglichkeit <a href="https://blog.nevercodealone.de/gastbeitraege-webdevelopment/" target="_blank">Gastbeiträge</a> zu veröffentlichen. Diese werden zusätzlich von einem professionellen Redakteur korrigiert und in Absprache mit euch veröffentlicht.</p>
  172. <p>Der TYPO3 Webdesign Blog <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/codeception-test-einzelnen-ausfuehren/">Codeception Test einzelnen ausführen</a> erschien zuerst auf <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg">Webdesign und TYPO3 Blog aus Duisburg</a>.</p>
  173. ]]></content:encoded>
  174. <wfw:commentRss>https://www.rogoit.de/webdesign-typo3-blog-duisburg/codeception-test-einzelnen-ausfuehren/feed/</wfw:commentRss>
  175. <slash:comments>2</slash:comments>
  176. </item>
  177. <item>
  178. <title>Twig key underscore Unterstrich dash Template attribute-Methode</title>
  179. <link>https://www.rogoit.de/webdesign-typo3-blog-duisburg/twig-key-underscore-unterstrich-dash-template-attribute-methode/</link>
  180. <comments>https://www.rogoit.de/webdesign-typo3-blog-duisburg/twig-key-underscore-unterstrich-dash-template-attribute-methode/#respond</comments>
  181. <pubDate>Tue, 31 Jan 2017 12:59:26 +0000</pubDate>
  182. <dc:creator><![CDATA[Roland Golla]]></dc:creator>
  183. <category><![CDATA[Code Snippets]]></category>
  184. <category><![CDATA[Einstieg in die Internet Programmierung]]></category>
  185. <category><![CDATA[PHP Frameworks]]></category>
  186. <category><![CDATA[PHP Internet Programmierung für Webdesign]]></category>
  187. <category><![CDATA[Webdesign Dokumentationen]]></category>
  188. <category><![CDATA[Webdesign Performance]]></category>
  189. <category><![CDATA[Webdesign Tutorial]]></category>
  190. <category><![CDATA[Webdevelopment]]></category>
  191. <category><![CDATA[Webdevelopment Tools]]></category>
  192. <category><![CDATA[PHP Framework]]></category>
  193. <category><![CDATA[Webdev]]></category>
  194.  
  195. <guid isPermaLink="false">http://www.rogoit.de/webdesign-typo3-blog-duisburg/?p=5109</guid>
  196. <description><![CDATA[<p>Ein Twig key underscore und gerade die Kombination aus Minus und Underscore können im Twig-Template nicht direkt angesprochen werden. Ist dann noch der Strict Mode gesetzt wird eine Exception &#8222;Array to string conversion&#8220; geworfen. Allerdings ist es auch ohne den strict_variables ärgerlich. Man kommt nicht an den Value im Template und dann stimmt die Ausgabe nicht. Die Lösung ist [...]</p>
  197. <p>Der TYPO3 Webdesign Blog <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/twig-key-underscore-unterstrich-dash-template-attribute-methode/">Twig key underscore Unterstrich dash Template attribute-Methode</a> erschien zuerst auf <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg">Webdesign und TYPO3 Blog aus Duisburg</a>.</p>
  198. ]]></description>
  199. <content:encoded><![CDATA[<p>Ein Twig key underscore und gerade die Kombination aus Minus und Underscore können im Twig-Template nicht direkt angesprochen werden. Ist dann noch der <a href="http://twig.sensiolabs.org/doc/2.x/templates.html" target="_blank">Strict Mode</a> gesetzt wird eine Exception &#8222;Array to string conversion&#8220; geworfen. Allerdings ist es auch ohne den strict_variables ärgerlich. Man kommt nicht an den Value im Template und dann stimmt die Ausgabe nicht. Die Lösung ist hier der Zugriff über die attribute-Methode.</p>
  200. <h2>Twig key underscore &#8222;Array to string conversion&#8220; mit attribute-Methode</h2>
  201. <div id="attachment_5116" style="width: 510px" class="wp-caption aligncenter"><a href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/01/Twig-key-underscore.jpg"><img class="size-full wp-image-5116" src="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/01/Twig-key-underscore.jpg" alt="Twig Key Underscore" width="500" height="64" srcset="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/01/Twig-key-underscore.jpg 500w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/01/Twig-key-underscore-300x38.jpg 300w" sizes="(max-width: 500px) 100vw, 500px" /></a><p class="wp-caption-text">Twig Key Underscore</p></div>
  202. <p>Leider hat man nicht immer Einfluß auf die Datenquelle. Gerade wenn man mit importierten Daten aus einem anderen System arbeitet. Bei einem Silex Projekt mit einem CSV-Import für Elasticsearch ist mir dieser Fehler untergekommen. Hier gibt es jetzt die einfache Lösung:</p><pre class="crayon-plain-tag">{{ attribute(object, method) }}</pre><p>{{ attribute(object, method, arguments) }} {{ attribute(array, item) }}</p>
  203. <p>Weitere Anwendungsfälle sind hier auch dynamische Keys.</p>
  204. <h2>Twig-Template isset mit defined</h2>
  205. <p>Grundsätzlich kann man in Twig auch die Existenz einer Variablen prüfen, bevor man auf diese zugreift.</p><pre class="crayon-plain-tag">{{ attribute(object, method) is defined ? 'Method exists' : 'Method does not exist' }}</pre><p>Das ist allerdings keine effektive Art der Entwicklung. Hier wird gerade der Template Code stark aufgebläht. Von daher sollte man einfach im Live-Betrieb über die Environment-Variable den Strict-Mode ausschalten. Während der Entwicklung hingegen macht er durchaus Sinn. Aber ein robustes Template schützt nur eine Legacy-Applikation. Das ist der falsche Entwicklungsweg. Einen Wrapper für Keys, die im Template verwendet werden, ist ebenfalls der falsche Weg. Nach Möglichkeit ist hier ganz oben an der Datenquelle und der Ursache der Fix vorzunehmen.</p>
  206. <h2>Silex Twig-Templating</h2>
  207. <p>Das Micro-Framework Silex eignet sich hervorragend für die schnelle Implementation von Marketing Landingpages. Das Webdesign von <a href="https://www.rolandgolla.de/php-kurs-inhouse-schulung/" target="_blank">PHP-Kurs Inhosue-Schulung</a> basiert darauf. Das entsprechende <a href="https://github.com/rogoit/rolandgolla" target="_blank">GitHub-Repo</a> ist hier zu finden.</p>
  208. <p>Der TYPO3 Webdesign Blog <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/twig-key-underscore-unterstrich-dash-template-attribute-methode/">Twig key underscore Unterstrich dash Template attribute-Methode</a> erschien zuerst auf <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg">Webdesign und TYPO3 Blog aus Duisburg</a>.</p>
  209. ]]></content:encoded>
  210. <wfw:commentRss>https://www.rogoit.de/webdesign-typo3-blog-duisburg/twig-key-underscore-unterstrich-dash-template-attribute-methode/feed/</wfw:commentRss>
  211. <slash:comments>0</slash:comments>
  212. </item>
  213. <item>
  214. <title>MAC localhost kill Prozess Port 8080 8000</title>
  215. <link>https://www.rogoit.de/webdesign-typo3-blog-duisburg/mac-localhost-kill-prozess-port-8080-8000/</link>
  216. <comments>https://www.rogoit.de/webdesign-typo3-blog-duisburg/mac-localhost-kill-prozess-port-8080-8000/#respond</comments>
  217. <pubDate>Tue, 24 Jan 2017 13:23:18 +0000</pubDate>
  218. <dc:creator><![CDATA[Roland Golla]]></dc:creator>
  219. <category><![CDATA[CLI commands]]></category>
  220. <category><![CDATA[Einstieg in die Internet Programmierung]]></category>
  221. <category><![CDATA[Linux]]></category>
  222. <category><![CDATA[MAC Snippet]]></category>
  223. <category><![CDATA[oh my zsh]]></category>
  224. <category><![CDATA[Webdesign mit TYPO3]]></category>
  225. <category><![CDATA[Webdesign Tutorial]]></category>
  226. <category><![CDATA[Webdevelopment]]></category>
  227. <category><![CDATA[Webdevelopment Tools]]></category>
  228. <category><![CDATA[Command Line Interface]]></category>
  229. <category><![CDATA[MAC]]></category>
  230. <category><![CDATA[Webdev]]></category>
  231.  
  232. <guid isPermaLink="false">http://www.rogoit.de/webdesign-typo3-blog-duisburg/?p=5093</guid>
  233. <description><![CDATA[<p>Beim Webdevelopment lokal auf dem MAC nutzt man gerne einen Prozess Port 8080 oder 8000. Bekannte Beispiele sind hier z.B. Symfony, TYPO3, WordPress oder auch Silex. Alle Technolgien sind mir sehr vertraut und bei mir im täglichen Einsatz. Hier kann es allerdings sein, daß ich den Prozess nicht richtig beende und den Tab bei oh-my-zsh schon [...]</p>
  234. <p>Der TYPO3 Webdesign Blog <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/mac-localhost-kill-prozess-port-8080-8000/">MAC localhost kill Prozess Port 8080 8000</a> erschien zuerst auf <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg">Webdesign und TYPO3 Blog aus Duisburg</a>.</p>
  235. ]]></description>
  236. <content:encoded><![CDATA[<p>Beim Webdevelopment lokal auf dem MAC nutzt man gerne einen Prozess Port 8080 oder 8000. Bekannte Beispiele sind hier z.B. <a href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/doctrine-symfony-order-by/">Symfony</a>, <a href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/typo3-seiten-mit-extensions-plugin-suchen-pid/">TYPO3</a>, <a href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wordpress-datei-und-ordner-rechte/">WordPress</a> oder auch Silex. Alle Technolgien sind mir sehr vertraut und bei mir im täglichen Einsatz. Hier kann es allerdings sein, daß ich den Prozess nicht richtig beende und den Tab bei oh-my-zsh schon vorher schließe. Dann läuft der Prozess im Hintergrund weiter und blockiert einen Start bei einem anderen Projekt.</p>
  237. <h2>Command Line MAC localhost kill Prozess Port 8080</h2>
  238. <p>Vorab es macht auf jeden Fall Sinn hier mit <a href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/oh-my-zsh-zsh-autosuggestions-key-tab-and-color/">oh-my-zsh</a> zu arbeiten, damit man die Autovervollständigung auf der CLI Command Line nutzen kann. Zuerst suchen wir alle Prozesse die auf Port 8080 laufen.</p>
  239. <h2>MAC finde alle Prozesse auf Port 8080</h2>
  240. <p></p><pre class="crayon-plain-tag">lsof -i tcp:8080</pre><p>Jetzt wird der entsprechende Prozess gelistet. Hier wird u.a. eine UID. Dann einfach ein kill command ausführen.</p><pre class="crayon-plain-tag">kill -9 &lt;PID&gt;</pre><p><div id="attachment_5098" style="width: 650px" class="wp-caption aligncenter"><a href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/01/mac-kill-prozess-8080-localhost.jpg"><img class="size-full wp-image-5098" src="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/01/mac-kill-prozess-8080-localhost.jpg" alt="MAC Kill Prozess 8080 localhost" width="640" height="359" srcset="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/01/mac-kill-prozess-8080-localhost.jpg 640w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/01/mac-kill-prozess-8080-localhost-300x168.jpg 300w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/01/mac-kill-prozess-8080-localhost-300x168@2x.jpg 600w" sizes="(max-width: 640px) 100vw, 640px" /></a><p class="wp-caption-text">MAC Kill Prozess 8080 localhost</p></div>
  241. <p>&nbsp;</p>
  242. <p>Der TYPO3 Webdesign Blog <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/mac-localhost-kill-prozess-port-8080-8000/">MAC localhost kill Prozess Port 8080 8000</a> erschien zuerst auf <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg">Webdesign und TYPO3 Blog aus Duisburg</a>.</p>
  243. ]]></content:encoded>
  244. <wfw:commentRss>https://www.rogoit.de/webdesign-typo3-blog-duisburg/mac-localhost-kill-prozess-port-8080-8000/feed/</wfw:commentRss>
  245. <slash:comments>0</slash:comments>
  246. </item>
  247. <item>
  248. <title>Caps Lock Shift Taste Escape statt Delete Key macOS Sierra</title>
  249. <link>https://www.rogoit.de/webdesign-typo3-blog-duisburg/caps-lock-shift-taste-escape-statt-delete-key-macos-sierra/</link>
  250. <comments>https://www.rogoit.de/webdesign-typo3-blog-duisburg/caps-lock-shift-taste-escape-statt-delete-key-macos-sierra/#respond</comments>
  251. <pubDate>Tue, 03 Jan 2017 13:50:07 +0000</pubDate>
  252. <dc:creator><![CDATA[Roland Golla]]></dc:creator>
  253. <category><![CDATA[MAC Snippet]]></category>
  254. <category><![CDATA[Webdesign Dokumentationen]]></category>
  255. <category><![CDATA[Webdesign Tutorial]]></category>
  256. <category><![CDATA[Webdevelopment]]></category>
  257. <category><![CDATA[Webdevelopment Tools]]></category>
  258. <category><![CDATA[MAC]]></category>
  259. <category><![CDATA[Webdev]]></category>
  260.  
  261. <guid isPermaLink="false">http://www.rogoit.de/webdesign-typo3-blog-duisburg/?p=5049</guid>
  262. <description><![CDATA[<p>Für effektives Arbeiten an Keyboards ist es wichtig die Shift Taste Escape (Caps Lock) zu belegen. So hat man die größte Taste auf der Baseline mit einer wichtigen Funktion belegt. Da ich selber recht viel mit VIM arbeite und die Escape-Taste auch sonst recht häufig brauche habe ich diese auf die Caps Lock gelegt. Einige Webdeveloper [...]</p>
  263. <p>Der TYPO3 Webdesign Blog <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/caps-lock-shift-taste-escape-statt-delete-key-macos-sierra/">Caps Lock Shift Taste Escape statt Delete Key macOS Sierra</a> erschien zuerst auf <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg">Webdesign und TYPO3 Blog aus Duisburg</a>.</p>
  264. ]]></description>
  265. <content:encoded><![CDATA[<p>Für effektives Arbeiten an Keyboards ist es wichtig die Shift Taste Escape (Caps Lock) zu belegen. So hat man die größte Taste auf der Baseline mit einer wichtigen Funktion belegt. Da ich selber recht viel mit <a href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/oh-my-zsh-vi-mode-plugin/">VIM arbeite</a> und die Escape-Taste auch sonst recht häufig brauche habe ich diese auf die Caps Lock gelegt. Einige Webdeveloper nutzen hier allerdings auch die Delete-Taste. Das ist vielleicht auch ein sehr guter Usecase. Da schlägt bei mir allerdings die Macht der Gewohnheit zu.</p>
  266. <h2>Die Caps Lock oder Shift Taste mit Escape statt Delete Key in macOS Sierra</h2>
  267. <div id="attachment_5052" style="width: 310px" class="wp-caption alignleft"><a href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/01/caps-lock-delete-mac-sierra.png"><img class="size-medium wp-image-5052" src="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/01/caps-lock-delete-mac-sierra-300x227.png" alt="Caps Lock Shift Taste Escape statt Delete Key macOS Sierra" width="300" height="227" srcset="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/01/caps-lock-delete-mac-sierra-300x227.png 300w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/01/caps-lock-delete-mac-sierra.png 765w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/01/caps-lock-delete-mac-sierra-300x227@2x.png 600w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">Caps Lock Shift Taste Escape statt Delete Key macOS Sierra</p></div>
  268. <p>Leider gibt es eine Änderung bei der neuen Version von Apples Betriebssystem macOS Sierra gegenüber vorherigen Versionen. <a href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/mac-os-x-caps-lock-feststellte-esc-delete/">Hier hatte ich bereits über das Setting mit der Software Seil gebloggt</a>. Das fällt ab sofort flach und geht dafür allerdings gefühlt auch ein wenig einfacher. Man ruft einfach folgendes auf</p><pre class="crayon-plain-tag">Systemeinstellungen
  269. Tastatur
  270. Sondertasten
  271. Shift Taste
  272. Escape auswählen</pre><p><div id="attachment_5053" style="width: 310px" class="wp-caption alignleft"><a href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/01/shift-entfernen-mac-sierra.png"><img class="size-medium wp-image-5053" src="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/01/shift-entfernen-mac-sierra-300x189.png" alt="Caps Lock Shift Taste Escape statt Delete Key macOS Sierra" width="300" height="189" srcset="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/01/shift-entfernen-mac-sierra-300x189.png 300w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/01/shift-entfernen-mac-sierra-343x215.png 343w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2017/01/shift-entfernen-mac-sierra.png 439w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">Caps Lock Shift Taste Escape statt Delete Key macOS Sierra</p></div>
  273. <p>Leider muß man das sowohl für die normale Tastatur, als auch für die Magic Keypad Settings einrichten. Das ist zwar recht seltsam, aber nicht die Hölle <img src="https://s.w.org/images/core/emoji/11/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
  274. <p>Der TYPO3 Webdesign Blog <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/caps-lock-shift-taste-escape-statt-delete-key-macos-sierra/">Caps Lock Shift Taste Escape statt Delete Key macOS Sierra</a> erschien zuerst auf <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg">Webdesign und TYPO3 Blog aus Duisburg</a>.</p>
  275. ]]></content:encoded>
  276. <wfw:commentRss>https://www.rogoit.de/webdesign-typo3-blog-duisburg/caps-lock-shift-taste-escape-statt-delete-key-macos-sierra/feed/</wfw:commentRss>
  277. <slash:comments>0</slash:comments>
  278. </item>
  279. <item>
  280. <title>Gulp run sequence &#8211; Gulp Task sequentiell abarbeiten</title>
  281. <link>https://www.rogoit.de/webdesign-typo3-blog-duisburg/gulp-run-sequence-gulp-task-sequentiell-abarbeiten/</link>
  282. <comments>https://www.rogoit.de/webdesign-typo3-blog-duisburg/gulp-run-sequence-gulp-task-sequentiell-abarbeiten/#comments</comments>
  283. <pubDate>Thu, 24 Nov 2016 11:41:46 +0000</pubDate>
  284. <dc:creator><![CDATA[Roland Golla]]></dc:creator>
  285. <category><![CDATA[NodeJS]]></category>
  286. <category><![CDATA[Software Qualität]]></category>
  287. <category><![CDATA[Webdesign Dokumentationen]]></category>
  288. <category><![CDATA[Webdesign mit TYPO3]]></category>
  289. <category><![CDATA[Webdesign Performance]]></category>
  290. <category><![CDATA[Webdesign Tutorial]]></category>
  291. <category><![CDATA[Webdevelopment]]></category>
  292. <category><![CDATA[Webdevelopment Tools]]></category>
  293. <category><![CDATA[Command Line Interface]]></category>
  294. <category><![CDATA[Javascript]]></category>
  295. <category><![CDATA[jQuery]]></category>
  296. <category><![CDATA[Webdev]]></category>
  297.  
  298. <guid isPermaLink="false">http://www.rogoit.de/webdesign-typo3-blog-duisburg/?p=4966</guid>
  299. <description><![CDATA[<p>Frontend-Webdevelopment mit Gulp Task sequentiell abarbeiten ist bei modernen Webdesign nötig. Dabei sind Gulp-Tasks ein wichtiger Bestandteil dieser tollen neuen Technologie. Gulp ist eine NodeJS Applikation, die natürlich auch in der Prozessverarbeitung ihre großen Vorzüge bezüglich der Performance hat. Asynchrone Prozessverarbeitung. Damit tun sich traditionelle Webdeveloper, gerade aus der PHP-Welt recht schwer. Hier findet man sich [...]</p>
  300. <p>Der TYPO3 Webdesign Blog <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/gulp-run-sequence-gulp-task-sequentiell-abarbeiten/">Gulp run sequence &#8211; Gulp Task sequentiell abarbeiten</a> erschien zuerst auf <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg">Webdesign und TYPO3 Blog aus Duisburg</a>.</p>
  301. ]]></description>
  302. <content:encoded><![CDATA[<p>Frontend-Webdevelopment mit Gulp Task sequentiell abarbeiten ist bei modernen Webdesign nötig. Dabei sind Gulp-Tasks ein wichtiger Bestandteil dieser tollen neuen Technologie. Gulp ist eine NodeJS Applikation, die natürlich auch in der Prozessverarbeitung ihre großen Vorzüge bezüglich der Performance hat. Asynchrone Prozessverarbeitung. Damit tun sich traditionelle Webdeveloper, gerade aus der PHP-Welt recht schwer. Hier findet man sich dann schnell in der sogenannten Callback-Hell wieder. An diesem Punkt sollte man sich natürlich fragen, ob man die richtige Technologie für das zu lösende Problem gewählt hat.</p>
  303. <h2>Gulp Task sequentiell ausführen &#8211; TYPO3 Gulp</h2>
  304. <p>In einer TYPO3 Migration von 6.2 auf 7.6 bin ich vor kurzem auf eine Herausforderung mit Gulp gestoßen. Hier war es wichtig die CSS-Files und JS-Files erst zu minimieren und dann an die richtige Stelle zu meiner Design Extension zu exportieren. So konnte unabhängig im Front- und Backend im Team gearbeitet werden.</p><pre class="crayon-plain-tag">const gulp = require('gulp');
  305. const debug = require('gulp-debug');
  306. const gulpLoadPlugins = require('gulp-load-plugins');
  307. const wiredep = require('wiredep').stream;
  308. const del = require('del');
  309. const runSequence = require('run-sequence');
  310.  
  311. const $ = gulpLoadPlugins();
  312.  
  313. var stylesTarget = 'Resources/Public/Styles/';
  314. var scriptsTarget = 'Resources/Public/Scripts';
  315. var imagesTarget = 'Resources/Public/Images';
  316. var fontsTarget = 'Resources/Public/Fonts';
  317.  
  318. gulp.task('clean-styles', del.bind(null, [stylesTarget]));
  319. gulp.task('styles', () =&gt; {
  320.  return gulp.src('../../rogoit-design/app/Styles/*.scss')
  321.    .pipe(debug())
  322.    .pipe($.plumber())
  323.    .pipe($.sourcemaps.init())
  324.    .pipe($.sass.sync({
  325.      outputStyle: 'expanded',
  326.      precision: 10,
  327.      includePaths: ['.']
  328.    }).on('error', $.sass.logError))
  329.    .pipe($.autoprefixer({browsers: ['&gt; 1%', 'last 2 versions', 'Firefox ESR']}))
  330.    .pipe($.sourcemaps.write())
  331.    .pipe(gulp.dest(stylesTarget));
  332. });
  333.  
  334. gulp.task('clean-scripts', del.bind(null, [scriptsTarget]));
  335. gulp.task('scripts', () =&gt; { // ['lint'],
  336.  return gulp.src('../../rogoit-design/app/Scripts/**/*.js')
  337.    .pipe(debug())
  338.    .pipe($.plumber())
  339.    .pipe($.babel())
  340.    .pipe(gulp.dest(scriptsTarget));
  341. });
  342.  
  343. gulp.task('vendor-scripts', () =&gt; { // ['lint'],
  344.    return gulp.src(['../../rogoit-design/dist/Scripts/vendor/**/*', '../../rogoit-design/dist/Scripts/vendor.js'])
  345.        .pipe(debug())
  346.        .pipe(gulp.dest('Resources/Public/Scripts/vendor'));
  347. });
  348.  
  349. gulp.task('clean-images', del.bind(null, [imagesTarget]));
  350. gulp.task('images', () =&gt; {
  351.  return gulp.src('../../rogoit-design/app/Images/**/*')
  352.    .pipe(debug())
  353.    .pipe($.imagemin({
  354.      progressive: true,
  355.      interlaced: true,
  356.      svgoPlugins: [{cleanupIDs: false}]
  357.    }))
  358.    .pipe(gulp.dest(imagesTarget));
  359. });
  360.  
  361. gulp.task('clean-fonts', del.bind(null, [fontsTarget]));
  362. gulp.task('fonts', () =&gt; {
  363.  return gulp.src(require('main-bower-files')('**/*.{eot,svg,ttf,woff,woff2}', function (err) {})
  364.    .concat('../../rogoit-design/app/Fonts/**/*'))
  365.    .pipe(debug())
  366.    .pipe(gulp.dest(fontsTarget));
  367. });
  368.  
  369.  
  370. function lint(files, options) {
  371.  return gulp.src(files)
  372.    .pipe($.eslint(options))
  373.    .pipe($.eslint.format());
  374. }
  375.  
  376. gulp.task('lint', () =&gt; {
  377.  return lint('../../rogoit-design/Scripts/**/*.js', {
  378.    fix: true
  379.  })
  380.  .pipe(gulp.dest(scriptsTarget));
  381. });
  382.  
  383. gulp.task('compress', ['styles', 'scripts'], () =&gt; {
  384.  return gulp.src(['Resources/Public/**/*'])
  385.    .pipe(debug())
  386.    .pipe($.if('*.js', $.uglify()))
  387.    .pipe($.if('*.css', $.cssnano({safe: true, autoprefixer: false})))
  388.    .pipe(gulp.dest('Resources/Public'));
  389. });
  390.  
  391. gulp.task('default', function(done) {
  392.    runSequence('clean-styles', 'clean-scripts', 'clean-images', 'clean-fonts','styles', 'scripts', 'vendor-scripts', 'fonts', 'images', 'compress', function() {
  393.        console.log('All tasks finished');
  394.        done();
  395.    });
  396. });</pre><p><div id="attachment_4973" style="width: 310px" class="wp-caption alignleft"><a href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/11/Gulp-Task-sequentiell-1.jpg"><img class="size-medium wp-image-4973" src="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/11/Gulp-Task-sequentiell-1-300x200.jpg" alt="Gulp Task sequentiell" width="300" height="200" srcset="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/11/Gulp-Task-sequentiell-1-300x200.jpg 300w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/11/Gulp-Task-sequentiell-1-768x511.jpg 768w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/11/Gulp-Task-sequentiell-1-1024x682.jpg 1024w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/11/Gulp-Task-sequentiell-1.jpg 1280w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/11/Gulp-Task-sequentiell-1-300x200@2x.jpg 600w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">Gulp Task sequentiell</p></div>
  397. <p>Das hier ist das gesamte Script des Projekts. Vielleicht kann sich hier der eine oder andere entsprechend inspirieren. Grundsätzlich werden hier die Webfolder bzw. Targets geleert, die neuen Files hinein kopiert und dann komprimiert. Diese Prozesse können Aufgrund ihrer Aufgabenreihenfolge nicht asynchron abgearbeitet werden. Hier sind die entscheidenen Zeilen:</p><pre class="crayon-plain-tag">const runSequence = require('run-sequence');
  398. .
  399. .
  400. .
  401. gulp.task('default', function(done) {
  402.    runSequence('clean-styles', 'clean-scripts', 'clean-images', 'clean-fonts','styles', 'scripts', 'vendor-scripts', 'fonts', 'images', 'compress', function() {
  403.        console.log('All tasks finished');
  404.        done();
  405.    });
  406. });</pre><p>Man nutzt die &#8222;run-sequence&#8220; Bibliothek, damit man die Tasks im default Prozess sequentiell ausführen kann.</p>
  407. <p>Der TYPO3 Webdesign Blog <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/gulp-run-sequence-gulp-task-sequentiell-abarbeiten/">Gulp run sequence &#8211; Gulp Task sequentiell abarbeiten</a> erschien zuerst auf <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg">Webdesign und TYPO3 Blog aus Duisburg</a>.</p>
  408. ]]></content:encoded>
  409. <wfw:commentRss>https://www.rogoit.de/webdesign-typo3-blog-duisburg/gulp-run-sequence-gulp-task-sequentiell-abarbeiten/feed/</wfw:commentRss>
  410. <slash:comments>1</slash:comments>
  411. </item>
  412. <item>
  413. <title>TYPO3 Seiten mit Extensions Plugin suchen PID</title>
  414. <link>https://www.rogoit.de/webdesign-typo3-blog-duisburg/typo3-seiten-mit-extensions-plugin-suchen-pid/</link>
  415. <comments>https://www.rogoit.de/webdesign-typo3-blog-duisburg/typo3-seiten-mit-extensions-plugin-suchen-pid/#respond</comments>
  416. <pubDate>Sun, 30 Oct 2016 18:45:17 +0000</pubDate>
  417. <dc:creator><![CDATA[Roland Golla]]></dc:creator>
  418. <category><![CDATA[Cleancode]]></category>
  419. <category><![CDATA[Code Snippets]]></category>
  420. <category><![CDATA[Sicherheit in PHP Programmierung]]></category>
  421. <category><![CDATA[Typo3 Erweiterungen]]></category>
  422. <category><![CDATA[Typo3 Extensions]]></category>
  423. <category><![CDATA[Webdesign mit TYPO3]]></category>
  424. <category><![CDATA[Webdevelopment]]></category>
  425. <category><![CDATA[Sicherheit]]></category>
  426. <category><![CDATA[Typo3]]></category>
  427. <category><![CDATA[Webdev]]></category>
  428.  
  429. <guid isPermaLink="false">http://www.rogoit.de/webdesign-typo3-blog-duisburg/?p=4921</guid>
  430. <description><![CDATA[<p>Das Open Source CMS TYPO3 ist weit verbreitet und hat in den letzten Jahren auch von den Versionen einen großen Schritt nach vorne gemacht. Legacy Code und veraltete Versionen der eingesetzten Software stellen allerdings leider eine große Herausforderung in der so schon sehr angespannten Welt des Webdesigns dar. Naben dem Update der eigentlichen CMS Version [...]</p>
  431. <p>Der TYPO3 Webdesign Blog <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/typo3-seiten-mit-extensions-plugin-suchen-pid/">TYPO3 Seiten mit Extensions Plugin suchen PID</a> erschien zuerst auf <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg">Webdesign und TYPO3 Blog aus Duisburg</a>.</p>
  432. ]]></description>
  433. <content:encoded><![CDATA[<p>Das <a href="https://typo3.org/" target="_blank">Open Source CMS TYPO3</a> ist weit verbreitet und hat in den letzten Jahren auch von den Versionen einen großen Schritt nach vorne gemacht.<a href="https://en.wikipedia.org/wiki/Legacy_code" target="_blank"> Legacy Code</a> und veraltete Versionen der eingesetzten Software stellen allerdings leider eine große Herausforderung in der so schon sehr angespannten Welt des Webdesigns dar. Naben dem Update der eigentlichen CMS Version müssen allerdings auch immer wieder alle Extensions aktualisiert werden. Bei eigenen Extensions stellt das zum Teil eine sehr große Herausforderung dar.</p>
  434. <h2>TYPO3 Extensions im Pagetree suchen</h2>
  435. <div id="attachment_4926" style="width: 310px" class="wp-caption alignleft"><a href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/10/TYPO3-Seiten-mit-Extensions-Plugin-suchen-PID.png"><img class="size-medium wp-image-4926" src="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/10/TYPO3-Seiten-mit-Extensions-Plugin-suchen-PID-300x300.png" alt="TYPO3 Seiten mit Extensions Plugin suchen PID" width="300" height="300" srcset="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/10/TYPO3-Seiten-mit-Extensions-Plugin-suchen-PID-150x150@2x.png 300w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/10/TYPO3-Seiten-mit-Extensions-Plugin-suchen-PID-150x150.png 150w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/10/TYPO3-Seiten-mit-Extensions-Plugin-suchen-PID.png 640w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/10/TYPO3-Seiten-mit-Extensions-Plugin-suchen-PID-300x300@2x.png 600w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">TYPO3-Seiten-mit-Extensions-Plugin-suchen-PID</p></div>
  436. <p>Es gibt unterschiedliche Wege sich die PIDs zu den eingesetzten <a href="https://typo3.org/extensions/repository/" target="_blank">TYPO3 Extensions</a> anzeigen zu lassen. Tatsächlich gibt es genau für diesen Zweck auch wieder Extensions. Aber jede installierte Extension bedeutet auch immer mehr Aufwand, eine mögliche <a href="https://www.heise.de/security/meldung/Typo-3-Kritische-Luecke-geschlossen-Sicherheits-Update-verfuegbar-3217028.html" target="_blank">Sicherheitslücke in TYPO3</a> und in Zukunft auch immer mehr Arbeit. Von daher sollte man immer den einfachsten Weg wählen und der geht ganz einfach über die Datenbank.</p>
  437. <h2>TYPO3 Seiten mit Extension in Datenbank finden</h2>
  438. <p>Folgendes SQL-Statement kann einfach auf der Datenbank ausgeführt werden:</p><pre class="crayon-plain-tag">SELECT tt_content.pid,pages.title
  439. FROM tt_content JOIN pages ON tt_content.pid = pages.uid
  440. WHERE tt_content.list_type LIKE '%extensionkey%'
  441. ORDER BY tt_content.uid DESC</pre><p>Mit dem oben abgebildeten TYPO3 SQL Statement kann man ganz gezielt nach einem TYPO3 Extension Key suchen.</p>
  442. <h2>TYPO3 alle Seiten mit Extensions finden</h2>
  443. <p>Neben der Möglichkeit eine Extension zu suchen, ist es vielleicht auch wichtig alle eingesetzten Extension und ihre PIDs als Übersicht zu sehen. Das kann man auch einfach mit einem entsprechenden SQL Statement ausführen</p><pre class="crayon-plain-tag">SELECT tt_content.pid,pages.title
  444. FROM tt_content JOIN pages ON tt_content.pid = pages.uid
  445. WHERE tt_content.list_type &lt;&gt; ''
  446. ORDER BY tt_content.list_type ASC</pre><p>&nbsp;</p>
  447. <p>Der TYPO3 Webdesign Blog <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/typo3-seiten-mit-extensions-plugin-suchen-pid/">TYPO3 Seiten mit Extensions Plugin suchen PID</a> erschien zuerst auf <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg">Webdesign und TYPO3 Blog aus Duisburg</a>.</p>
  448. ]]></content:encoded>
  449. <wfw:commentRss>https://www.rogoit.de/webdesign-typo3-blog-duisburg/typo3-seiten-mit-extensions-plugin-suchen-pid/feed/</wfw:commentRss>
  450. <slash:comments>0</slash:comments>
  451. </item>
  452. <item>
  453. <title>OH-MY-ZSH zsh-autosuggestions key tab and color</title>
  454. <link>https://www.rogoit.de/webdesign-typo3-blog-duisburg/oh-my-zsh-zsh-autosuggestions-key-tab-and-color/</link>
  455. <comments>https://www.rogoit.de/webdesign-typo3-blog-duisburg/oh-my-zsh-zsh-autosuggestions-key-tab-and-color/#respond</comments>
  456. <pubDate>Tue, 04 Oct 2016 20:37:45 +0000</pubDate>
  457. <dc:creator><![CDATA[Roland Golla]]></dc:creator>
  458. <category><![CDATA[Webdesign mit TYPO3]]></category>
  459.  
  460. <guid isPermaLink="false">http://www.rogoit.de/webdesign-typo3-blog-duisburg/?p=4865</guid>
  461. <description><![CDATA[<p>oh-my-zsh ist unter Webdevelopern sehr beliebt und mit dem zsh-autosuggestions Plugin bekommt man auch das nötige Fish-Feeling. Dabei müssen allerdings 2 kleine Settings vorgenommen werden, damit man Tabbing zur Verfügung hat und auch die farbliche Hervorhebung richtig einsetzen kann. zsh-autosuggestions muß installiert werden Im Gegensatz zu den meisten verfügbaren zsh-Plugins muß das Plugin zusätzlich installiert werden. [...]</p>
  462. <p>Der TYPO3 Webdesign Blog <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/oh-my-zsh-zsh-autosuggestions-key-tab-and-color/">OH-MY-ZSH zsh-autosuggestions key tab and color</a> erschien zuerst auf <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg">Webdesign und TYPO3 Blog aus Duisburg</a>.</p>
  463. ]]></description>
  464. <content:encoded><![CDATA[<p>oh-my-zsh ist unter Webdevelopern sehr beliebt und mit dem <a href="https://github.com/zsh-users/zsh-autosuggestions" target="_blank">zsh-autosuggestions Plugin</a> bekommt man auch das nötige <a href="https://fishshell.com/" target="_blank">Fish-Feeling</a>. Dabei müssen allerdings 2 kleine Settings vorgenommen werden, damit man Tabbing zur Verfügung hat und auch die farbliche Hervorhebung richtig einsetzen kann.</p>
  465. <div id="attachment_4869" style="width: 310px" class="wp-caption aligncenter"><a href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/10/zsh-autosuggestions.png"><img class="size-medium wp-image-4869" src="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/10/zsh-autosuggestions-300x12.png" alt="zsh autosuggestions" width="300" height="12" srcset="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/10/zsh-autosuggestions-300x12.png 300w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/10/zsh-autosuggestions.png 612w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/10/zsh-autosuggestions-300x12@2x.png 600w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">zsh autosuggestions</p></div>
  466. <h2>zsh-autosuggestions muß installiert werden</h2>
  467. <p>Im Gegensatz zu den meisten verfügbaren zsh-Plugins muß das Plugin zusätzlich installiert werden. Hierfür gibt es eine hervorragende Dokumentation in der entsprechenden <a href="https://github.com/zsh-users/zsh-autosuggestions/blob/master/README.md" target="_blank">Readme Datei auf Github</a>. Dabei wird das Plugin nicht nur im Kontext zu zsh eingesetzt. Hier muß nur folgender Befehl ausgeführt werden.</p><pre class="crayon-plain-tag">git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions</pre><p>&nbsp;</p>
  468. <h2>zsh-autosuggestions aktivieren</h2>
  469. <p>Die Autovervollständigung ist mit der Aktivierung des Plugins direkt aktiv. oh-my-zsh Plugins werden dabei, wie gewohnt on der .zshrc im Root-Folder des aktiviert.</p><pre class="crayon-plain-tag">plugins=(zsh-autosuggestions)</pre><p></p>
  470. <h2>zsh-autosuggestions color setting</h2>
  471. <p>Per Default ist der Farbwert leider nicht so schön. Diesen kann man allerdings auch sehr einfach in der .zshrc anpassen. Mit dem Farbton &#8222;cyan&#8220; hingegen bekommt man ein sehr angenehmes Farbschema, welches dem von Fish sehr nahe kommt.</p><pre class="crayon-plain-tag">ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=cyan"</pre><p></p>
  472. <h2>zsh-autosuggestions key binding vor tabbing</h2>
  473. <p>Die wichtigste Funktion der Autovervollständigung ist allerdings das Tabbing. Also Wortweise vorspringen zu können. Sonst ist die Arbeit mit diesem ungalublich tollen Plugin nicht effektiv, sondern hinderlich und frustrierend.</p><pre class="crayon-plain-tag">bindkey '^f' vi-forward-blank-word</pre><p></p>
  474. <h2>Änderungen an .zshrc wirksam machen</h2>
  475. <p>Es gibt 2 Möglichkeiten Änderungen, die an dem .zshrc durchgeführt wurden wirksam zu machen. Einmal kann man einfach in Tools, wie iTerm, einen neuen Tab öffnen und Änderungen dadurch wirksam werden lassen. Eine zweite Möglichkeit ist es auf der Command Line CLI einfach folgenden Befehl einzugeben.</p><pre class="crayon-plain-tag">source ~/.zshrc</pre><p></p>
  476. <h2>zsh mit Plugins effektiv nutzen</h2>
  477. <p>Mit zsh ist es sehr gut möglich das Terminal zu beherrschen und sich schnell und effektiv zu bewegen. Aus diesem Grund haben wir auch schon <a href="http://www.entwicklungshilfe.nrw/seminare/oh-my-zsh-mit-agnoster-theme/" target="_blank">eine Schulung bei Entwicklungshilfe NRW</a> eingeführt und halten auch sehr häufig bei Usergroups Talks zu dem Thema. Hier geht es auch zu einer <a href="http://presentations.entwicklungshilfe.nrw/oh-my-zsh.html#/" target="_blank">Präsentation zu dem Thema</a>.</p>
  478. <p>Der TYPO3 Webdesign Blog <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/oh-my-zsh-zsh-autosuggestions-key-tab-and-color/">OH-MY-ZSH zsh-autosuggestions key tab and color</a> erschien zuerst auf <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg">Webdesign und TYPO3 Blog aus Duisburg</a>.</p>
  479. ]]></content:encoded>
  480. <wfw:commentRss>https://www.rogoit.de/webdesign-typo3-blog-duisburg/oh-my-zsh-zsh-autosuggestions-key-tab-and-color/feed/</wfw:commentRss>
  481. <slash:comments>0</slash:comments>
  482. </item>
  483. <item>
  484. <title>Git Checkout Files von anderem Branch</title>
  485. <link>https://www.rogoit.de/webdesign-typo3-blog-duisburg/git-checkout-files-von-anderem-branch/</link>
  486. <comments>https://www.rogoit.de/webdesign-typo3-blog-duisburg/git-checkout-files-von-anderem-branch/#respond</comments>
  487. <pubDate>Tue, 20 Sep 2016 12:19:03 +0000</pubDate>
  488. <dc:creator><![CDATA[Roland Golla]]></dc:creator>
  489. <category><![CDATA[Einstieg in die Internet Programmierung]]></category>
  490. <category><![CDATA[Git Flow]]></category>
  491. <category><![CDATA[oh my zsh]]></category>
  492. <category><![CDATA[PHP Schulung]]></category>
  493. <category><![CDATA[PhpStorm]]></category>
  494. <category><![CDATA[PhpStorm Schulung]]></category>
  495. <category><![CDATA[Webdevelopment]]></category>
  496. <category><![CDATA[Webdevelopment Tools]]></category>
  497. <category><![CDATA[Command Line Interface]]></category>
  498. <category><![CDATA[Git]]></category>
  499. <category><![CDATA[Linux]]></category>
  500. <category><![CDATA[Phpstorm]]></category>
  501. <category><![CDATA[Webdev]]></category>
  502.  
  503. <guid isPermaLink="false">http://www.rogoit.de/webdesign-typo3-blog-duisburg/?p=4769</guid>
  504. <description><![CDATA[<p>Git Versionierung ist das Maß aller Dinge beim Webdevelopment mit PHP. Dabei ist natürlich ein Git Checkout ein elementares und wichtiges Kommando. In der Regel wird es allerdings nur dazu benutzt, um neue Branches zu erstellen, zwischen Branches zu wechseln und natürlich Files in der aktuellen Entwicklung zu resetten, also zurückzusetzen. Dabei hat das Git [...]</p>
  505. <p>Der TYPO3 Webdesign Blog <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/git-checkout-files-von-anderem-branch/">Git Checkout Files von anderem Branch</a> erschien zuerst auf <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg">Webdesign und TYPO3 Blog aus Duisburg</a>.</p>
  506. ]]></description>
  507. <content:encoded><![CDATA[<p>Git Versionierung ist das Maß aller Dinge beim Webdevelopment mit PHP. Dabei ist natürlich ein Git Checkout ein elementares und wichtiges Kommando. In der Regel wird es allerdings nur dazu benutzt, um neue Branches zu erstellen, zwischen Branches zu wechseln und natürlich Files in der aktuellen Entwicklung zu resetten, also zurückzusetzen. Dabei hat das Git Command noch eine andere wichtige Funktion, die ich heute näher erläutern möchte.</p>
  508. <h2>Git Checkout File von Master</h2>
  509. <p>Schaut man sich einmal die offizielle Dokumentation zum Git Checkout Command an findet man weit mehr Funktionen, als den einfachen Wechsel zwischen Branches.</p>
  510. <blockquote><p>When or &#8211;patch are given, git checkout does not switch branches. It updates the named paths in the working tree from the index file or from a named (most often a commit)…The argument can be used to specify a specific tree-ish (i.e. commit, tag or tree) to update the index for the given paths before updating the working tree. <a href="https://git-scm.com/docs/git-checkout" target="_blank">https://git-scm.com/docs/git-checkout</a></p></blockquote>
  511. <p>Leider sind Dokumentationen nicht immer benutzerfreundlich geschrieben. Daher versuche ich mit diesem Blog-Post hier einmal ein wenig Licht in die technische Dunkelheit zu bringen. Grundsätzlich ist es in Git immer möglich mit Hilfe des &#8218;tree-ish&#8216; einen bestimmten Commit oder auch ein File von einem anderen Branch aus auszuchecken. Damit man seinen aktuellen Branch mit den Files eines bestimmten Commits aktualisieren kann ist folgendes nötig.</p><pre class="crayon-plain-tag">git checkout [-p|--patch] [&lt;tree-ish&gt;] [--] &lt;pathspec&gt;</pre><p></p>
  512. <h2>Git Einzelnes File von anderem Branch auschecken</h2>
  513. <div id="attachment_4857" style="width: 310px" class="wp-caption alignleft"><a href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/09/Git-Checkout-1.jpg"><img class="size-medium wp-image-4857" src="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/09/Git-Checkout-1-300x112.jpg" alt="Git Checkout" width="300" height="112" srcset="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/09/Git-Checkout-1-300x112.jpg 300w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/09/Git-Checkout-1.jpg 648w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/09/Git-Checkout-1-300x112@2x.jpg 600w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">Git Checkout &#8211; <a href="https://twitter.com/aspectra" target="_blank">Aspectra</a></p></div>
  514. <p>Es kommt natürlich auch bei den besten Webdevelopern vor, daß man sich einmal verstrickt hat. Wenn man mit <a href="http://www.entwicklungshilfe.nrw/seminare/phpstorm-best-practice/" target="_blank">PhpStormBest Practice </a>arbeitet kenn man natürlich die nützliche Funktion mit einem Remote Branch zu vergleichen. Was aber, wenn man dahin zurück möchte. Es gibt natürlich auch den Fall, daß man sich vielleicht zu erst auf einen aktuellen Stand aus einem anderen Branch bringen möchte. Das kann man hier auch immer auf File-Ebene tun. Hier bietet sich der Web über ein Terminal an, da in in meinen Augen schneller und einfacher ist.</p><pre class="crayon-plain-tag">git checkout &lt;branch_name&gt; -- &lt;paths&gt;</pre><p></p>
  515. <h2>Beispiel Git Einzelnes File von anderem Branch auschecken</h2>
  516. <p>Es kann sein, daß man gerade <a href="http://www.entwicklungshilfe.nrw/code-rocker/" target="_blank">Codeception Tests</a> einführt und die Tests auch in seinem Git-Branch verfügbar haben möchte. Hier gibt es natürlich die richtige Möglichkeit den kompletten Branch zu mergen. Hier treten natürlich auch keine Konflikte auf. Sicher? Natürlich besteht die Möglichkeit in seinem aktuellen Branch Änderungen an der composer.json gemacht zu haben. Und vielleicht hat man diese verworfen, will aber trotzdem den Stand von dem anderen Branch.</p><pre class="crayon-plain-tag">git checkout cc-testing -- composer.json
  517. git commit -m "Update composer.js from cc-testing"</pre><p></p>
  518. <h2>Fazit Git Checkout Files von anderem Branch</h2>
  519. <p>Leider ist die Nutzung der Command Line für viele Webdeveloper noch ein immer eine große Hürde sich fundiertes und professionelles Wissen über Git leicht zugänglich zu machen und anzueignen.</p>
  520. <blockquote><p>Ich benutze PhpStorm und brauche keine Git-Commands &#8211; Webdeveloper mit 4 Jahren Berufserfahrung</p></blockquote>
  521. <p>Leider fällt mir da auch nicht immer die passende Antwort bei Schulungen ein und ich begebe mich verlegen in ein Schweigen. Natürlich ist das ein Einstellungsproblem und es ist leider exemplarisch für die Realität. Etwas beurteilen zu können setzt in diesem Falle natürlich Fachwissen voraus. Das hier jetzt detailliert auszuführen ist sicher nicht in dem Sinn meiner Leser.</p>
  522. <p>Git bietet tolle Möglichkeiten und entwickelt sich natürlich auch weiter. Gerade in dem letzten Release ist auch wieder ein Fokus bei den neuen Features auf die Command Line gelegt worden. Hier lohnt es sich definitv auf dem laufenden zu bleiben und sich auch seine eigenen Sourcen aktuell zu halten. Eine <a href="http://www.entwicklungshilfe.nrw/seminare/git-flow-git-branching-model-fuer-agile-software-projekte/" target="_blank">Git-Schulung</a> und auch eine <a href="http://www.entwicklungshilfe.nrw/seminare/oh-my-zsh-mit-agnoster-theme/" target="_blank">Schulung oh-my-zsh</a> biete ich im Rahmen von Entwicklungshilfe NRW an.</p>
  523. <p>Der TYPO3 Webdesign Blog <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/git-checkout-files-von-anderem-branch/">Git Checkout Files von anderem Branch</a> erschien zuerst auf <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg">Webdesign und TYPO3 Blog aus Duisburg</a>.</p>
  524. ]]></content:encoded>
  525. <wfw:commentRss>https://www.rogoit.de/webdesign-typo3-blog-duisburg/git-checkout-files-von-anderem-branch/feed/</wfw:commentRss>
  526. <slash:comments>0</slash:comments>
  527. </item>
  528. <item>
  529. <title>Bash Script für SQL Files in Folder &#8211; Database Migration Deployment</title>
  530. <link>https://www.rogoit.de/webdesign-typo3-blog-duisburg/bash-script-sql-files-folder-database-migration-deployment/</link>
  531. <comments>https://www.rogoit.de/webdesign-typo3-blog-duisburg/bash-script-sql-files-folder-database-migration-deployment/#respond</comments>
  532. <pubDate>Sun, 11 Sep 2016 09:19:10 +0000</pubDate>
  533. <dc:creator><![CDATA[Roland Golla]]></dc:creator>
  534. <category><![CDATA[Cleancode]]></category>
  535. <category><![CDATA[CLI commands]]></category>
  536. <category><![CDATA[Code Snippets]]></category>
  537. <category><![CDATA[Codeception]]></category>
  538. <category><![CDATA[Einstieg in die Internet Programmierung]]></category>
  539. <category><![CDATA[Media Queries]]></category>
  540. <category><![CDATA[MySQL Datenbanken]]></category>
  541. <category><![CDATA[PHP Frameworks]]></category>
  542. <category><![CDATA[Webdesign Dokumentationen]]></category>
  543. <category><![CDATA[Webdevelopment]]></category>
  544. <category><![CDATA[Webdevelopment Tools]]></category>
  545. <category><![CDATA[Command Line Interface]]></category>
  546. <category><![CDATA[Linux]]></category>
  547. <category><![CDATA[MAC]]></category>
  548. <category><![CDATA[PHP]]></category>
  549. <category><![CDATA[PHP Entwicklung]]></category>
  550. <category><![CDATA[PHP Framework]]></category>
  551. <category><![CDATA[Server]]></category>
  552. <category><![CDATA[Sicherheit]]></category>
  553. <category><![CDATA[Webdev]]></category>
  554.  
  555. <guid isPermaLink="false">http://www.rogoit.de/webdesign-typo3-blog-duisburg/?p=4782</guid>
  556. <description><![CDATA[<p>Es gibt unterschiedliche Möglichkeiten ein automatisiertes SQL Depoyment durchzuführen. SQL Files sind hier eine Option. Dabei kann man dann alle zugehörigen SQL Files in einen Release Folder ablegen und manuell ausführen. Das ist leider keine sehr elegante Lösung, da man hier nicht ohne weiteres zurück rollen kann. Man kann also so gesehen nur nach vorne [...]</p>
  557. <p>Der TYPO3 Webdesign Blog <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/bash-script-sql-files-folder-database-migration-deployment/">Bash Script für SQL Files in Folder &#8211; Database Migration Deployment</a> erschien zuerst auf <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg">Webdesign und TYPO3 Blog aus Duisburg</a>.</p>
  558. ]]></description>
  559. <content:encoded><![CDATA[<p>Es gibt unterschiedliche Möglichkeiten ein automatisiertes SQL Depoyment durchzuführen. SQL Files sind hier eine Option. Dabei kann man dann alle zugehörigen SQL Files in einen Release Folder ablegen und manuell ausführen. Das ist leider keine sehr elegante Lösung, da man hier nicht ohne weiteres zurück rollen kann. Man kann also so gesehen nur nach vorne gehen und hat zudem das Risiko SQL-Statements, die nur einmal ausgeführt werden sollen öfter auszuführen.</p>
  560. <h2>SQL Files in Folder mit Bash Script ausführen</h2>
  561. <p></p><pre class="crayon-plain-tag">#!/bin/bash
  562. sqlfiles=(*.sql)
  563. for i in "${sqlfiles[@]}"
  564. do
  565. if grep -q PROCEDURE "$i"; then
  566.    echo $i
  567.    mysql -h127.0.0.1 -udbuser -pdbpass exactag &lt; $i
  568. fi
  569. done</pre><p><div id="attachment_4841" style="width: 310px" class="wp-caption alignleft"><a href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/09/sql-filesbash-script.png"><img class="size-medium wp-image-4841" src="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/09/sql-filesbash-script-300x100.png" alt="SQL Files Bash Script - googlinux.com" width="300" height="100" srcset="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/09/sql-filesbash-script-300x100.png 300w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/09/sql-filesbash-script-768x256.png 768w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/09/sql-filesbash-script.png 900w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/09/sql-filesbash-script-300x100@2x.png 600w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">SQL Files Bash Script &#8211; googlinux.com</p></div>
  570. <p>Damit man nicht manuell alle SQL Files einzeln ausführen muß kann man ein <a href="https://wiki.ubuntuusers.de/Shell/Bash-Skripting-Guide_f%C3%BCr_Anf%C3%A4nger/" target="_blank">Bash-Script</a> nutzen. Das führt dann dann alle SQL Files automatisiert aus. Das oben abgebildete Bash-Script kann das auf eine einfache und unsichere Art tun. Es leider nötig Username und Passwort für die DB mit abzuspeichern. Allerdings erfüllt das Bash-Script seinen Zweck. Es interiert im aktuellen Folder über alle SQL Files und führt diese mit dem MYSQL-Command aus.</p>
  571. <h2>Professionells Webdevelopment und Deployment mit Migrationen</h2>
  572. <div id="attachment_4838" style="width: 310px" class="wp-caption alignleft"><a href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/09/php-migration-phinx.png"><img class="size-full wp-image-4838" src="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/09/php-migration-phinx.png" alt="PHP Migration Phinx" width="300" height="300" srcset="https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/09/php-migration-phinx-150x150@2x.png 300w, https://www.rogoit.de/webdesign-typo3-blog-duisburg/wp-content/uploads/2016/09/php-migration-phinx-150x150.png 150w" sizes="(max-width: 300px) 100vw, 300px" /></a><p class="wp-caption-text">PHP Migration Phinx</p></div>
  573. <p>Eine zuverlässige und sichere Lösung bieten Migration Tools, wie <a href="https://phinx.org/" target="_blank">Phinx</a>. Hier ist es möglich neue Änderungen einfach automatisiert durchzuführen. Dadurch behält man zu jedem Zeitpunkt die Kontrolle über den aktuellen DB Status. Damit ist es einfach und übersichtlich einen Rollback durchzuführen. Zudem wird verhindert, das SQL-Files doppelt ausgeführt werden. DB Migrations gibt es auch Out-Of-The-Box in vielen <a href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/category/php-frameworks/" target="_blank">PHP-Frameworks</a>. Hier kann man das <a href="http://symfony.com/doc/current/bundles/DoctrineMigrationsBundle/index.html" target="_blank">Doctrine Migrations Bundle</a> in Symfony und die <a href="https://laravel.com/docs/5.3/migrations" target="_blank">Database Migrations</a> im Laravel Projekt sehr empfehlen. Beim Refactoring von Legacy Code Anwendungen bietet sich Phinx sehr gut an, da es autark neben dem bestehenden Projekt mit Composer einfach hinzugefügt werden kann.</p>
  574. <h2>Unterstützung beim Web zu Continuous Integration</h2>
  575. <p>Wir haben uns seit langen auf automatisiertes Deployment und Continuous Integration spezialisiert. In den jüngsten Kunden-Projekten haben wir es erfolgreich eingeführt. Dieses Angebot werden wir in den nächsten Monaten gezielt ausbauen. Hier werden wir unter anderem fertige Codeception-Tests für allgemeine Tests und Screenshots in unterschiedlichen Display Auflösungen anbieten. Ein aktuelles Angebot gibt es dazu hier. <a href="https://www.rogoit.de/produkte/build-pipelines-mit-phpunit-und-codeception.html" target="_blank">Build Pipelines für PHP-Projekte</a>.</p>
  576. <p>Der TYPO3 Webdesign Blog <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg/bash-script-sql-files-folder-database-migration-deployment/">Bash Script für SQL Files in Folder &#8211; Database Migration Deployment</a> erschien zuerst auf <a rel="nofollow" href="https://www.rogoit.de/webdesign-typo3-blog-duisburg">Webdesign und TYPO3 Blog aus Duisburg</a>.</p>
  577. ]]></content:encoded>
  578. <wfw:commentRss>https://www.rogoit.de/webdesign-typo3-blog-duisburg/bash-script-sql-files-folder-database-migration-deployment/feed/</wfw:commentRss>
  579. <slash:comments>0</slash:comments>
  580. </item>
  581. </channel>
  582. </rss>
  583.  
  584. <!--
  585. Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/
  586.  
  587. Page Caching using disk: enhanced (SSL caching disabled)
  588. Database Caching 55/58 queries in 0.014 seconds using disk
  589.  
  590. Served from: www.rogoit.de @ 2024-03-29 16:43:49 by W3 Total Cache
  591. -->

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid RSS" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. Add this HTML to your page (change the image src attribute if necessary):

If you would like to create a text link instead, here is the URL you can use:

http://validator.w3.org/feed/check.cgi?url=http%3A//www.rogoit.de/webdesign-typo3-blog-duisburg/feed/