<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Anne Quinkenstein</title>
    <description>The latest articles on DEV Community by Anne Quinkenstein (@annequinkenstein).</description>
    <link>https://dev.to/annequinkenstein</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F460372%2Fd9c60296-71ef-445e-afda-213a27ed970f.gif</url>
      <title>DEV Community: Anne Quinkenstein</title>
      <link>https://dev.to/annequinkenstein</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/annequinkenstein"/>
    <language>en</language>
    <item>
      <title>gdb debugger</title>
      <dc:creator>Anne Quinkenstein</dc:creator>
      <pubDate>Tue, 31 Oct 2023 14:17:26 +0000</pubDate>
      <link>https://dev.to/annequinkenstein/dsds-43fp</link>
      <guid>https://dev.to/annequinkenstein/dsds-43fp</guid>
      <description>&lt;p&gt;runs on many Unix-like systems and works for many programming languages, including Ada, Assembly, C, C++, D, Fortran, Haskell, Go, Objective-C, OpenCL C, Modula-2, Pascal, Rust,...&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;strings programm&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;shows all strings of a programm&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;./check $(python3 -c 'print("a" * 200)')&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  gdb debugger
&lt;/h2&gt;

&lt;p&gt;gdb programm (start programm in same folder) &lt;br&gt;
(gdb) disas function&lt;br&gt;
(gdb) b* 0x401402 (set breakpoint)&lt;br&gt;
(gdb) r xxxxxxxx (start Programm with parameter (eg pw))&lt;br&gt;
(gdb) i r (info register) show registger&lt;br&gt;
eg PW: for every letter show:&lt;br&gt;
(gdb) set $al = $dl&lt;br&gt;
(gdb) c &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Selenium Page Factory</title>
      <dc:creator>Anne Quinkenstein</dc:creator>
      <pubDate>Wed, 12 Jul 2023 08:15:05 +0000</pubDate>
      <link>https://dev.to/annequinkenstein/selenium-page-factory-42ec</link>
      <guid>https://dev.to/annequinkenstein/selenium-page-factory-42ec</guid>
      <description>&lt;p&gt;&lt;a href="https://www.seleniumeasy.com/selenium-tutorials/page-factory-pattern-in-selenium-webdriver" rel="noopener noreferrer"&gt;how it works&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  FindBys - AND Condition
&lt;/h2&gt;

&lt;p&gt;Eg: @FindBys({@FindBy(id = "foo"), @FindBy(className = "bar")})&lt;/p&gt;

&lt;p&gt;HTML source code of a WebElement:&lt;/p&gt;

&lt;p&gt;In POM:&lt;/p&gt;

&lt;p&gt;@FindBys({&lt;br&gt;
 @FindBy(id = "searchId_1"),&lt;br&gt;
 @FindBy(name = "search_field")&lt;br&gt;
 })&lt;/p&gt;

&lt;p&gt;WebElementSearchButton;&lt;/p&gt;

&lt;p&gt;In the above example, the WebElement ‘SearchButton’ is located only if it matches both the criteria whose id value is “searchId_1” and the name value is “search_field”. Please note that the first criteria belong to a parent tag&lt;/p&gt; and the second criteria for a child tag.
&lt;h2&gt;
  
  
  FindAll - OR Condition
&lt;/h2&gt;
&lt;h2&gt;
  
  
  @CacheLookUp
&lt;/h2&gt;

&lt;p&gt;if a Webelement is approched several time, you can store it in cache&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.softwaretestinghelp.com/page-object-model-pom-with-pagefactory/#POM_Using_Page_Factory" rel="noopener noreferrer"&gt;extended&lt;/a&gt;&lt;/p&gt;

</description>
      <category>emptystring</category>
    </item>
    <item>
      <title>Alternatives: Actions-Class and Javascript Executer in Selenium</title>
      <dc:creator>Anne Quinkenstein</dc:creator>
      <pubDate>Thu, 15 Jun 2023 11:22:48 +0000</pubDate>
      <link>https://dev.to/annequinkenstein/actions-class-in-selenium-336c</link>
      <guid>https://dev.to/annequinkenstein/actions-class-in-selenium-336c</guid>
      <description>&lt;h1&gt;
  
  
  Action Class
&lt;/h1&gt;

&lt;p&gt;perform operations from keyboard events and mouse events (even dragging-and-dropping, holding a key and then performing mouse operations, ..) &lt;br&gt;
we can building a complex chain of events exactly like a user doing these manually&lt;br&gt;
The Actions class implements the builder pattern to create a composite action containing a group of other actions. &lt;/p&gt;

&lt;p&gt;We need to create an instance of the Actions class by passing the instance of driver class to the constructor in the following way:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Actions&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Actions&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;driver&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;then we can use the methods of the action Class like MouseOver, ContextClick/RightClick, DoubleClick ... &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhai2j3ypow08nwfehkyk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhai2j3ypow08nwfehkyk.png" alt="Image description" width="740" height="734"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;moveToElement&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;element&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;conextClick&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;performe&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;before performing the action, you have to build the entire element. that enables to composit actions&lt;/li&gt;
&lt;li&gt;to execute it you have to invoke performe() !
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;moveToElement&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;textbox&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;click&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;keyDown&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Keys&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;SHIFT&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;sendKeys&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"hello"&lt;/span&gt;&lt;span class="o"&gt;).&lt;/span&gt;&lt;span class="na"&gt;build&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;performe&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>selenium</category>
    </item>
    <item>
      <title>Spring Boot</title>
      <dc:creator>Anne Quinkenstein</dc:creator>
      <pubDate>Tue, 18 Apr 2023 16:13:25 +0000</pubDate>
      <link>https://dev.to/annequinkenstein/spring-boot-5503</link>
      <guid>https://dev.to/annequinkenstein/spring-boot-5503</guid>
      <description>&lt;p&gt;Spring Boot&lt;br&gt;
... &lt;br&gt;
Automatic Controller Mappings for MVC based Applications&lt;br&gt;
few annotations &lt;br&gt;
Auto Config &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;application Context (inversion of Control container (bean factory) ) -&amp;gt; opinionated configarations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;start Project with spring initializer&lt;br&gt;
start.spring.io &lt;br&gt;
-maven oder gradle&lt;br&gt;
java (kotlin, groovy) &lt;br&gt;
package as jar&lt;br&gt;
java 17? welche version? &lt;br&gt;
add dependencies ... &lt;br&gt;
spring web ... &lt;br&gt;
(ID-Plugin possible) &lt;br&gt;
copy files in personal directory (-rekursivly) &lt;/p&gt;

&lt;p&gt;main Method -&amp;gt; @SpringBootApplication / use that as base for component scanning &amp;amp; auto-config&lt;br&gt;
ressources -&amp;gt; static/ template ( because of webpackage) &lt;br&gt;
application.properties -&amp;gt; control context&lt;/p&gt;

&lt;p&gt;libary-&amp;gt; configured, embedded tomcat &lt;/p&gt;

&lt;p&gt;Inversion of Control&lt;br&gt;
Container -&amp;gt; Objects injected at runtime/ starttime (added to BeanFactory)&lt;br&gt;
IoC &amp;amp; Dependency Injection -&amp;gt; objects dont create dependend objects, but container manages them and injects them as needed&lt;/p&gt;

&lt;p&gt;IoC Container -&amp;gt; triggered from main class &lt;br&gt;
IoC Container build Objects wich are referenced in Main, pointers in classes,&lt;br&gt;
pointers in classes &amp;amp; IoC Container injects them + manage LifeCycle&lt;/p&gt;

&lt;p&gt;Spring IoC -Bean Factory is IoC Container&lt;br&gt;
Hooks //&lt;/p&gt;

&lt;p&gt;Application Context to interact &amp;lt;- Spring Boot application, that conext is started for us, and autoconfig &lt;br&gt;
Application Context is wrapper around bean factory&lt;/p&gt;

&lt;p&gt;Spring Beans &lt;br&gt;
Spring-&amp;gt; handles Object initilazation, instatiation &lt;br&gt;
Beanfacotry -&amp;gt; beans instatioated in right order &lt;/p&gt;

&lt;p&gt;annotations &lt;br&gt;
metadata for code - often use for compiler or runtime instruction (&lt;a class="mentioned-user" href="https://dev.to/test"&gt;@test&lt;/a&gt;) &lt;/p&gt;

&lt;p&gt;spring benutzt sie als hebelpunkte für code. add functionality, with proxies &lt;/p&gt;

&lt;p&gt;beans in beanfactory are proxied, annotations drive proxies&lt;/p&gt;

&lt;p&gt;annotations drive behavior and component scanning as part of the application context&lt;br&gt;
-&amp;gt; scope for calling methods -&amp;gt; calling order matters&lt;/p&gt;

&lt;p&gt;Spring Data&lt;br&gt;
provides a commen set of interfaces based on JPA&lt;br&gt;
interface for JDBC, easier &lt;br&gt;
repository pattern nativly &lt;br&gt;
key benefits of key data &lt;br&gt;
swap datasources is easy&lt;br&gt;
SPring data repository provides the methods needed to access the data&lt;br&gt;
interface leverage proxies that builds the actual CRUD methods&lt;br&gt;
Entity Objects &lt;br&gt;
Data Sourced autoconfigured by Spring Boot&lt;/p&gt;

&lt;p&gt;embedded Database &lt;/p&gt;

&lt;p&gt;tomcat on 8080&lt;/p&gt;

</description>
    </item>
    <item>
      <title>SQL Cheet Sheat</title>
      <dc:creator>Anne Quinkenstein</dc:creator>
      <pubDate>Mon, 12 Dec 2022 17:32:04 +0000</pubDate>
      <link>https://dev.to/annequinkenstein/sql-cheet-sheat-57ga</link>
      <guid>https://dev.to/annequinkenstein/sql-cheet-sheat-57ga</guid>
      <description>&lt;h2&gt;
  
  
  Data Definition Language
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE SCHEMA hollywood;
CREATE TABLE hollywood.films (title text, release date, awards
text[]);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CREATE TABLE personen
(ID INTEGER PRIMARY KEY,
Name CHAR(30) NOT NULL,
Abteilung VARCHAR(5),
Telefonnummer TEXT, 
Postleitzahl NUMERIC,
Name_des_Wohnorts CHAR(30),
Jahr_der_Einstellung DATE REFERENCES Abteilung); //secondary Key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Data Manipulation Language
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;insert into Vorlesungen (VorlNr, Titel, SWS, gelesenVon)
values (5099, `Methaphysik‘, 4, 2137);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;insert into hören
select MatrNr, VorlNr
from Studenten, Vorlesungen
where Titel= `Logik‘ ;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;update Studenten set Semester= Semester + 1;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;delete&lt;/code&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Data Query Language
&lt;/h1&gt;
&lt;h2&gt;
  
  
  select
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;select distinct ..&lt;/code&gt;&lt;br&gt;
&lt;code&gt;SELECT a, a*100/c AS percentage&lt;/code&gt;&lt;br&gt;
&lt;code&gt;SELECT a "given as an A" &lt;br&gt;
&lt;/code&gt;COUNT(*)&lt;code&gt;with wildcard counts every line or&lt;/code&gt;COUNT(name)&lt;code&gt;counts every filled line,&lt;/code&gt;COUNT(distinct name)` &lt;/p&gt;
&lt;h2&gt;
  
  
  sort
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;select name from personen order by Rang desc,Name asc&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Join
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;FROM (student s JOIN personen h ON (s.Matr_nr=h.Matr_nr and s.Name='Lovelace')&lt;/code&gt;&lt;br&gt;
&lt;code&gt;students JOIN lectures v USING Vorl_nr&lt;/code&gt;&lt;br&gt;
&lt;code&gt;students NATURAL JOIN lectures&lt;/code&gt;&lt;br&gt;
&lt;code&gt;students LEFT JOIN lectures&lt;/code&gt; also students without a lecture are in table&lt;/p&gt;
&lt;h2&gt;
  
  
  UNION, INTERSECT, EXCEPT
&lt;/h2&gt;

&lt;p&gt;find all: &lt;code&gt;select name from assistent) union (select name from professors)&lt;/code&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  LIKE
&lt;/h1&gt;

&lt;p&gt;wildcard "%" ; "&lt;em&gt;"&lt;br&gt;
"%" any amound&lt;br&gt;
"&lt;/em&gt;" exactly one char&lt;br&gt;
&lt;code&gt;where title like '%thik%';&lt;/code&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  notin, all, ect
&lt;/h1&gt;

&lt;p&gt;ect: 'avg(age), max(age), min(age), count(*), sum(meter)`&lt;/p&gt;

&lt;p&gt;&lt;code&gt;where PersNr not in (select gelesenVon from Vorlesungen );&lt;/code&gt;&lt;br&gt;
&lt;code&gt;where Semester &amp;gt;= all ( select Semester from Studenten);&lt;/code&gt;&lt;br&gt;
same as: &lt;code&gt;where Semester &amp;gt;= ( select max(Semester) from Studenten);&lt;/code&gt;&lt;br&gt;
`&lt;/p&gt;
&lt;h1&gt;
  
  
  group by
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
select gelesenVon, Name, avg(SWS)&lt;br&gt;
from Vorlesungen, Professoren&lt;br&gt;
where gelesenVon = PersNr&lt;br&gt;
group by gelesenVon, Name&lt;br&gt;
having avg(SWS) &amp;gt;= 3;&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Query in FROM
&lt;/h1&gt;

&lt;p&gt;&lt;code&gt;FROM&lt;/code&gt;(SELECT * FROM Studenten s JOIN hoeren h USING (Matr_nr)&lt;br&gt;
WHERE s.Name='Lovelace') lovelace_hoert`&lt;br&gt;
has to have a name&lt;/p&gt;
&lt;h1&gt;
  
  
  declutter querys
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;With alias_name1 as
(select ...from... where...),
alias_name2 as
(select ...from... where...)'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;code&gt;select * from Studenten where Semester between 1 and 4;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;select * from Studenten where Semester in (1,2,3,4);&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;select MatrNr, (case when Note&amp;lt;1.5 then ‘sehr gut‘
when Note&amp;lt;2.5 then ‘gut‘
when Note&amp;lt;3.5 then ‘befriedigend‘
when Note &amp;lt;= 4 then ‘ausreichend‘
else ‘Nicht bestanden‘ end)
from pruefen;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;select s.MatrNr, s.Name, avg(Note) as persDurchschnitt,
(select avg(note) as Gesamtsschnitt from pruefen p)
from Studenten s, pruefen p
where s.MatrNr=p.MatrNr
group by s.MatrNr, Name
having persDurchschnitt &amp;lt; select avg(note) from pruefen p
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>sql</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Git for Beginners</title>
      <dc:creator>Anne Quinkenstein</dc:creator>
      <pubDate>Wed, 07 Dec 2022 10:32:50 +0000</pubDate>
      <link>https://dev.to/annequinkenstein/git-for-beginners-3499</link>
      <guid>https://dev.to/annequinkenstein/git-for-beginners-3499</guid>
      <description>&lt;h2&gt;
  
  
  Git on your Local machine:
&lt;/h2&gt;

&lt;p&gt;Check if you have Git on your local machine: &lt;code&gt;git --version&lt;/code&gt;&lt;br&gt;
If not, install it on &lt;a href="https://git-scm.com/download" rel="noopener noreferrer"&gt;linux&lt;/a&gt;,&lt;a href="https://git-scm.com/download/mac" rel="noopener noreferrer"&gt;mac&lt;/a&gt; or &lt;a href="https://git-scm.com/download/win" rel="noopener noreferrer"&gt;win&lt;/a&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Set your username: git config --global user.name "FIRST_NAME LAST_NAME"&lt;/li&gt;
&lt;li&gt;Set your email address: git config --global user.email "&lt;a href="mailto:MY_NAME@example.com"&gt;MY_NAME@example.com&lt;/a&gt;"&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Which command allows you to transform a classic folder into a local git project? &lt;code&gt;git init&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Which command allows you to move a file to the staging directory? &lt;code&gt;git add&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Which command allows you to create a commit? &lt;code&gt;git commit&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fstlcafezymas1xbkxebc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fstlcafezymas1xbkxebc.png" alt="Image description" width="639" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  let's talk SSH
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://docs.github.com/en/authentication/connecting-to-github-with-ssh/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent" rel="noopener noreferrer"&gt;github-doc&lt;/a&gt;&lt;br&gt;
The instructions you have followed in this tutorial have created 2 files in your /home//.ssh/ folder :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the first one (id_ed25519) : this is your private key, you must NEVER publish it or share it with anyone, it must exist on your computer only;&lt;/li&gt;
&lt;li&gt;the second one (id_ed25519.pub) : this is your public key, that you will share on GitHub following the instructions in the next step of this quest.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  add your public key in your GitHub settings
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://docs.github.com/en/authentication/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account" rel="noopener noreferrer"&gt;tutorial&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can save multiple SSH keys on you GitHub account. For example, if you want to work with Git and GitHub from different computers, you will have to repeat those steps one by one on each of your computers, so that they each have their own SSH key linked to your GitHub account.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;set up a remote repository by using &lt;code&gt;git remote add origin &amp;lt;REMOTE_URL&amp;gt;&lt;/code&gt; or &lt;code&gt;git clone &amp;lt;REMOTE_URL&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;the one you need starts with &lt;a href="mailto:git@github.com"&gt;git@github.com&lt;/a&gt;: .When using this address (for example by running git clone &lt;a href="mailto:git@github.com"&gt;git@github.com&lt;/a&gt;:/ in your local Git repository), your repository will be configured to use SSH authentication with the keys you created and configured in GitHub earlier. Thanks to SSH athentication, you don't have to enter your GitHub username and password, the authentication process is automatic.&lt;/p&gt;

&lt;p&gt;Finding the &lt;a href="mailto:git@github.com"&gt;git@github.com&lt;/a&gt;: url of a remote repository is quite simple : just go to the repository in question on GitHub, and click on the green "Code" button. Select "SSH", copy the address it displays, and that's it!&lt;/p&gt;

&lt;h2&gt;
  
  
  send your sources to a remote repository
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;git remote add origin &amp;lt;REMOTE_URL&amp;gt;&lt;/code&gt;&lt;br&gt;
confirm by &lt;code&gt;git remote -v&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Push: To upload information from the local repo to the remote repo.
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;git push origin main&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Retrieve changes
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;git pull origin main&lt;/code&gt;&lt;br&gt;
which is actually this two: &lt;br&gt;
&lt;code&gt;git fetch origin&lt;/code&gt;&lt;br&gt;
&lt;code&gt;git merge origin/main&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Copy remote repository to your local machine
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;git clone &amp;lt;REMOTE_URL&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8v27k24sgb4hljrbkixs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8v27k24sgb4hljrbkixs.png" alt="Image description" width="720" height="687"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  follow the flow - branching
&lt;/h3&gt;

&lt;p&gt;create a new branch &lt;code&gt;git checkout -b &amp;lt;branchName&amp;gt;&lt;/code&gt;&lt;br&gt;
switch to a exciting branch &lt;code&gt;git checkout &amp;lt;branchName&amp;gt;&lt;/code&gt;&lt;br&gt;
to check which branch you are on &lt;code&gt;git branch -a&lt;/code&gt;&lt;br&gt;
which are exciting &lt;code&gt;git branch&lt;/code&gt;&lt;br&gt;
delete a branch locally (jump off +) &lt;code&gt;git branch --delete &amp;lt;branchName&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  merging code between branches
&lt;/h4&gt;

&lt;p&gt;when merging, we need to be on the branch that we want to merge to. Basically, we will be telling git, “See that new thing? It’s ok to bring it over here now.”&lt;br&gt;
&lt;code&gt;git merge –no-ff &amp;lt;branchName&amp;gt;&lt;/code&gt; — the additional &lt;code&gt;–no-ff&lt;/code&gt; tells git we want to retain all of the commit messages prior to the merge.&lt;br&gt;
To delete a merged branch: &lt;code&gt;git branch -d &amp;lt;branchName&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  merge conflict
&lt;/h4&gt;

&lt;p&gt;If we do a git status it should still show our conflict. Since we want to keep the one from my new version, simply delete the lines that Git plopped in there and the old version. Then just add and commit the file as normal, and your merge is resolved!&lt;/p&gt;

&lt;h2&gt;
  
  
  stash
&lt;/h2&gt;

&lt;p&gt;add your changes to the index using &lt;code&gt;git add .&lt;/code&gt; &lt;br&gt;
stash your changes away: &lt;code&gt;git stash&lt;/code&gt;&lt;br&gt;
bring your changes back: &lt;code&gt;git stash apply&lt;/code&gt;&lt;br&gt;
if you got multiple layers of stashes: &lt;code&gt;git stash list&lt;/code&gt;&lt;br&gt;
apply the second stash &lt;code&gt;git stash apply stash@{1}&lt;/code&gt;&lt;br&gt;
deletes that stash for good: &lt;code&gt;git stash drop &amp;lt;id&amp;gt;&lt;/code&gt;&lt;br&gt;
delete all of the stored stashes: &lt;code&gt;git stash clear&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  reverting files
&lt;/h2&gt;

&lt;h2&gt;
  
  
  git tagging
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;$ git tag&lt;/code&gt; to list existing tags&lt;br&gt;
lightweight tag &lt;code&gt;git tag TAG_NAME&lt;/code&gt;&lt;br&gt;
annotated tag &lt;code&gt;git tag -a v1.0 -m "Version 1.0"&lt;/code&gt;&lt;br&gt;
&lt;code&gt;git push origin --tags&lt;/code&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Selenium Testautomation on Windows Desctop App with Winium (Java)</title>
      <dc:creator>Anne Quinkenstein</dc:creator>
      <pubDate>Mon, 30 May 2022 14:27:37 +0000</pubDate>
      <link>https://dev.to/annequinkenstein/selenium-testautomation-on-windows-desctop-app-with-winium-3b04</link>
      <guid>https://dev.to/annequinkenstein/selenium-testautomation-on-windows-desctop-app-with-winium-3b04</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/2gis/Winium" rel="noopener noreferrer"&gt;https://github.com/2gis/Winium&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Winium = Windows + Selenium&lt;br&gt;
open source&lt;br&gt;
works with all WebDriver compatible languages (Java, Python, ..) &lt;br&gt;
only for client-based applications on Windows (not IOS or Linux) &lt;/p&gt;
&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Microsoft .NET Framework 4.5.1&lt;br&gt;
Winium.Desktop.Driver.exe&lt;/p&gt;

&lt;p&gt;Some other dependencies that are downloaded using the Maven file, as mentioned in the POM file below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/2gis/Winium/tree/master/java" rel="noopener noreferrer"&gt;add dependencies to pom-file &lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/2gis/Winium.Desktop/releases" rel="noopener noreferrer"&gt;download winuiumDriver from github&lt;/a&gt;&lt;br&gt;
appPath:put it somewhere in the windows explorer &lt;/p&gt;
&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;By initiating the Winium driver using the Winiumdriver class, we are passing the Winium server URL and the path of our desktop application on which automation is intended to be carried out.&lt;/p&gt;

&lt;p&gt;The server URL is obtained by clicking on the Winium.desktop.driver.exe that was downloaded.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="o"&gt;...&lt;/span&gt; &lt;span class="kd"&gt;throws&lt;/span&gt; &lt;span class="nc"&gt;MalformedURLException&lt;/span&gt;

&lt;span class="nc"&gt;DesktopOptions&lt;/span&gt; &lt;span class="n"&gt;desktopOptions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;DesktopOptions&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;desktopOptions&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setApplicationPath&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;configFileReader&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getAppPath&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;   &lt;span class="n"&gt;desktopOptions&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setKeyboardSimulator&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;KeyboardSimulatorType&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;BasedOnWindowsFormsSendKeysClass&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;//winiumDriver with URL:: localhost:9999, every call we make goes through this driver .... &lt;/span&gt;
&lt;span class="n"&gt;winiumDriver&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;WiniumDriver&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="no"&gt;URL&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"http://localhost:9999"&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt; &lt;span class="n"&gt;desktopOptions&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By initiating the Winium driver using the Winiumdriver class, we are passing the Winium server URL and the path of our desktop application on which automation is intended to be carried out.&lt;/p&gt;

&lt;h2&gt;
  
  
  3 conditions
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/2gis/Winium.Desktop#quick-start" rel="noopener noreferrer"&gt;path to winium driver and setup&lt;/a&gt;&lt;br&gt;
start winium driver (dobbleclick) &lt;br&gt;
run tests&lt;/p&gt;

&lt;h2&gt;
  
  
  how to inspect the Desctop Desctop Elements (or Java Forms based)?
&lt;/h2&gt;

&lt;p&gt;inspect.exe to identify the element locators in Windows applications.&lt;br&gt;
&lt;a href="https://kb.froglogic.com/squish/howto/getting-information-toolkits-gui-controls-windows/" rel="noopener noreferrer"&gt;https://kb.froglogic.com/squish/howto/getting-information-toolkits-gui-controls-windows/&lt;/a&gt;&lt;br&gt;
We can identify the element using the name, ID and xpath.&lt;/p&gt;

&lt;p&gt;all in all: &lt;br&gt;
&lt;a href="https://www.xoriant.com/blog/winium-automation-testing-tool-for-windows-desktop-apps" rel="noopener noreferrer"&gt;The&lt;/a&gt; main difference between Selenium and Winium is that selenium automatically creates its session on localhost with a unique port, but in Winium, we have to create sessions manually through its exe file. Besides this, running an automation service through Winium needs the user to run a local server that supports the script, i.e., Winium server, whereas automating windows applications using Selenium does not require such efforts. The driver it will open by default with port 9999 which acts as a server.&lt;/p&gt;

&lt;p&gt;Internally this server will communicate through JSON Wireless Protocol&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.zucisystems.com/blog/winnium-a-step-by-step-guide/" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp3nd59v9vfz142ydoy2f.png" alt="Winium Way to Webside"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>selenium</category>
    </item>
    <item>
      <title>Network via Terminal</title>
      <dc:creator>Anne Quinkenstein</dc:creator>
      <pubDate>Wed, 18 May 2022 18:48:51 +0000</pubDate>
      <link>https://dev.to/annequinkenstein/network-terminal-2ef8</link>
      <guid>https://dev.to/annequinkenstein/network-terminal-2ef8</guid>
      <description>&lt;p&gt;&lt;code&gt;lshw -class network&lt;/code&gt;&lt;br&gt;
Logical name of the network adapter: eth0&lt;br&gt;
Serial number of the network adapter (= MAC Adress) b8:27:eb:5c:c4:37&lt;br&gt;
&lt;code&gt;ip addr show eth0&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Status:  up/down (on and off) &lt;/li&gt;
&lt;li&gt;MAC Adress: consists of 8 hexadecimal numbers &lt;/li&gt;
&lt;li&gt;IPv4:   10.10.10.86 consists of 4 numbers between 0 and 255&lt;/li&gt;
&lt;li&gt;IP- Broadcastadresse Gateway Rechner &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;ip-neigh&lt;/code&gt;&lt;br&gt;
eigenen Rechner + Broadcast Rechner + ggf die, die mich angepingt haben &lt;/p&gt;

&lt;p&gt;&lt;code&gt;ping IPv4-Adresse&lt;/code&gt; - geht, dann auch Rechner mit ip-neigh sichtbar&lt;/p&gt;

&lt;p&gt;Aus Sicherheitsgründen antworten Hosts standardmäßig nicht auf pings an die Broadcastadresse. Dies können Sie jedoch explizit mit dem folgenden Befehl erlauben: &lt;code&gt;sudo sysctl net.ipv4.icmp_echo_ignore_broadcasts=0&lt;/code&gt;    &lt;/p&gt;

&lt;p&gt;WLAN&lt;br&gt;
vorhandenen WLAN-Access Points mit dem Befehl &lt;code&gt;sudo iw wlan0 scan&lt;/code&gt;&lt;br&gt;
&lt;code&gt;sudo iw wlan0 scan | egrep "^BSS|SSID"&lt;/code&gt;&lt;br&gt;
iw ist ein Kommandozeilenwerkzeug zur Konfiguration von WLAN-Geräten&lt;br&gt;
BSS (noch ein weiterer Name für die MAC-Adresse bei WLAN-APs) und den Namen des WLANs (SSID) &lt;/p&gt;

&lt;p&gt;&lt;code&gt;iw wlan0 link&lt;/code&gt; iw ist speziell Wlan (Info WLan?)&lt;/p&gt;

&lt;p&gt;&lt;code&gt;sudo shotdown all&lt;/code&gt; - rasberry runterfahren &lt;/p&gt;

&lt;p&gt;Kontrollieren Sie die Signalstärke mit dem Befehl:&lt;code&gt;sudo iw wlan0 scan | egrep "SSID|signal"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Die Übertragungsfrequenz gibt als Nyquist-Frequenz das obere theoretische Limit für die maximale Übertragungsrate vor &lt;br&gt;
tatsächliche Übertragungsfrequenz (tx bitrate)&lt;/p&gt;

&lt;p&gt;rx recieved&lt;br&gt;
tx transmitted &lt;/p&gt;

&lt;p&gt;&lt;code&gt;ip -s link show ADAPTER&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;RX bedeutet Receive, also Empfangen von Daten,  TX bedeutet dabei Transmit, also das Senden von Daten.&lt;/li&gt;
&lt;li&gt;Die ersten beiden Spalten (bytes  packets) geben die Gesamtzahl an übermittelten Daten an, seit der Netzwerkadapter gestartet wurde.&lt;/li&gt;
&lt;li&gt;errors gibt die Anzahl an fehlerhaften Paketen (z.B. aufgrund zu schlechter Signalqualität) an.&lt;/li&gt;
&lt;li&gt;dropped gibt die Anzahl der Pakete, die vom Netzwerkadapter weggeworfen wurden, an. Dies kann passieren, wenn der Netzwerkadapter überlastet ist oder das übemittelte Paket nicht die richtige Größe hat.&lt;/li&gt;
&lt;li&gt;overrun gibt die Anzahl der Pakete, die nicht bearbeitet wurden, weil der interne Speicher des Netzwerkadapters übergelaufen ist.&lt;/li&gt;
&lt;li&gt;Carrier gibt die Anzahl der Pakete, die aufgrund der fehlenden Verbindung des Übertragungsmediums nicht übertragen werde konnten.&lt;/li&gt;
&lt;li&gt;mcast sind die per Multicast gesendeten Pakete.&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Building a Selenium Framework</title>
      <dc:creator>Anne Quinkenstein</dc:creator>
      <pubDate>Tue, 08 Feb 2022 09:22:39 +0000</pubDate>
      <link>https://dev.to/annequinkenstein/building-a-selenium-framework-8n6</link>
      <guid>https://dev.to/annequinkenstein/building-a-selenium-framework-8n6</guid>
      <description>&lt;h1&gt;
  
  
  Create a Maven Project
&lt;/h1&gt;

&lt;h3&gt;
  
  
  1. Create new Maven Project
&lt;/h3&gt;

&lt;p&gt;-&amp;gt; Maven - new Project - maven-quickstart - GroupID + ArtifactID&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Add all Dependencies in pom.xml
&lt;/h3&gt;

&lt;p&gt;Add from Maven Repro: Selenium &amp;amp; TestNG&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Create Base and utility functions
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Create base Class in main/java &amp;amp; add Browser Invocation
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;create a resources Package in main/java &lt;/li&gt;
&lt;li&gt;create a file "data.properties" to store data in a central place 
store things like &lt;code&gt;browser = chrome&lt;/code&gt; &lt;/li&gt;
&lt;li&gt;envoce it in the base.file
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;Properties&lt;/span&gt; &lt;span class="n"&gt;prop&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Properties&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt; 
&lt;span class="nc"&gt;FileInputStream&lt;/span&gt; &lt;span class="n"&gt;fis&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;FileInputStream&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"//home//helloworld//Documents//Code//Ecplise//SampleProject//E2EProject//src//main//java//SampleProject//data.properties"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
&lt;span class="n"&gt;prop&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;load&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fis&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;browsername&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;prop&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getProperty&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"browser"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Find absolute path of data.properties in rightclick Properties&lt;br&gt;
put it in the FileInputStream&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;browserName&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;"chrome"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; 
&lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setProperty&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"webdriver.chrome.driver"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"C://home//helloworld//chromedriver"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt; 
&lt;span class="n"&gt;driver&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ChromeDriver&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt; 
&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;....&lt;/span&gt; 
&lt;span class="o"&gt;....&lt;/span&gt;
&lt;span class="c1"&gt;// instead of former implicitly Wait: &lt;/span&gt;
&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;WebDriverWait&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;driver&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Duration&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ofSeconds&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;driver&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. Organizing Page objects
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Adding Tests&lt;/li&gt;
&lt;li&gt;Datadriving/ Prameterizing Tests&lt;/li&gt;
&lt;li&gt;Converting into TestNG Framework&lt;/li&gt;
&lt;li&gt;TestNG Listeners&lt;/li&gt;
&lt;li&gt;Screenshot on Test Failures&lt;/li&gt;
&lt;li&gt;Creating Excellent HTML reports for Test Results&lt;/li&gt;
&lt;li&gt;Jenkins Continuous Integration &lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>JUnit 5</title>
      <dc:creator>Anne Quinkenstein</dc:creator>
      <pubDate>Thu, 27 Jan 2022 11:01:29 +0000</pubDate>
      <link>https://dev.to/annequinkenstein/junit-5-52bf</link>
      <guid>https://dev.to/annequinkenstein/junit-5-52bf</guid>
      <description>&lt;h2&gt;
  
  
  1. Do a Maven Project
&lt;/h2&gt;

&lt;h2&gt;
  
  
  2. Change pom.xml
&lt;/h2&gt;

&lt;p&gt;Search for lastest JUnit-Jupiter (Aggregator) in &lt;a href="https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter" rel="noopener noreferrer"&gt;Maven&lt;/a&gt;(Aggregator downloads every dependencies )&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; &amp;lt;dependencies&amp;gt;
    &amp;lt;dependency&amp;gt;
        &amp;lt;groupId&amp;gt;org.junit.jupiter&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;junit-jupiter&amp;lt;/artifactId&amp;gt;
        &amp;lt;version&amp;gt;5.8.2&amp;lt;/version&amp;gt;
        &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;
    &amp;lt;/dependency&amp;gt;
  &amp;lt;/dependencies&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Change Configuration of the Maven Plugin to JDK8 and higher (required Java Version)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; &amp;lt;plugins&amp;gt;
    &amp;lt;plugin&amp;gt;
        &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;maven-compiler-plugin&amp;lt;/artifactId&amp;gt;
        &amp;lt;configuration&amp;gt;
            &amp;lt;source&amp;gt;8&amp;lt;/source&amp;gt;
            &amp;lt;target&amp;gt;8&amp;lt;/target&amp;gt;
        &amp;lt;/configuration&amp;gt;
    &amp;lt;/plugin&amp;gt;
&amp;lt;/plugins&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Write Tests
&lt;/h2&gt;

&lt;p&gt;any class that contains at least one test method is considered a test class. &lt;br&gt;
access Modifier should NOT be &lt;code&gt;private&lt;/code&gt;&lt;br&gt;
return Type is always &lt;code&gt;void&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kn"&gt;package&lt;/span&gt; &lt;span class="nn"&gt;junit5tests&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;org.junit.jupiter.api.DisplayName&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;org.junit.jupiter.api.Test&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;firstTest&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nd"&gt;@Test&lt;/span&gt;
    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;firstMethod&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"This is the first test method"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="nd"&gt;@Test&lt;/span&gt;
    &lt;span class="nd"&gt;@DisplayName&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"US1234 - TC12 - this method is the second one"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;secondMethod&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"This is the second test method"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Lifecycle Methods
&lt;/h2&gt;

&lt;p&gt;There are @BeforeAll Annotations for Setting up something before the Tests and @BeforeEach to set up before each Testcase. Cleaning up is done with @AfterAll, @AfterEach Methods.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;   &lt;span class="nd"&gt;@BeforeAll&lt;/span&gt;
    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;beforeAll&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"--This is the before All method"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;


    &lt;span class="nd"&gt;@BeforeEach&lt;/span&gt;
    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;beforeEach&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"----This is the before Each method"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="nd"&gt;@AfterAll&lt;/span&gt;
    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;afterAll&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"--This is the after All method"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;


    &lt;span class="nd"&gt;@AfterEach&lt;/span&gt;
    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;afterEach&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"----This is the after Each method"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  6. Parameterize Test
&lt;/h2&gt;

&lt;h3&gt;
  
  
  6.1. constant values or literals
&lt;/h3&gt;

&lt;p&gt;instead of &lt;a class="mentioned-user" href="https://dev.to/test"&gt;@test&lt;/a&gt; annotation -&amp;gt; @ParameterizedTest&lt;br&gt;
@ValueSource annotation to pass (just) ONE Value -&amp;gt; use an Array e.g. int[] or String[]&lt;br&gt;
it will run throught the array and pass each parameter to the method -&amp;gt; so the methods takes one param of the type of the Array. e.g. &lt;code&gt;void intValues (int theParam)&lt;/code&gt;&lt;br&gt;
(we have to pass the values, cant pass methods that generates the value)&lt;/p&gt;

&lt;p&gt;to beautify it, add round brakets to PramiterizesTests + add Tests with w.g. {index} No of Runs and {arguments} the value of the Param used. &lt;/p&gt;

&lt;p&gt;Strings: &lt;br&gt;
pass an Empty String: @EmptySource&lt;br&gt;
pass a null value: @NullSource&lt;br&gt;
pass both: @NullAndEmptySource&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ParamiterizedTests&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nd"&gt;@ParameterizedTest&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Run: {index} - value: {arguments}"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="nd"&gt;@ValueSource&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ints&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="o"&gt;})&lt;/span&gt;
    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;intValues&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;theParam&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"theParam = "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;theParam&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="nd"&gt;@ParameterizedTest&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Which Run? {index} - What did we use? {arguments}"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;//  @EmptySource&lt;/span&gt;
&lt;span class="c1"&gt;//  @NullSource&lt;/span&gt;
    &lt;span class="nd"&gt;@NullAndEmptySource&lt;/span&gt;
    &lt;span class="nd"&gt;@ValueSource&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;strings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="s"&gt;"firstString"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"secondString"&lt;/span&gt;&lt;span class="o"&gt;})&lt;/span&gt;
    &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;stringValues&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;theParam&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"theParam = "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;theParam&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="o"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>java</category>
      <category>junit</category>
      <category>testing</category>
      <category>qa</category>
    </item>
    <item>
      <title>Some Online Coding Games to Build Your Programming Skills</title>
      <dc:creator>Anne Quinkenstein</dc:creator>
      <pubDate>Fri, 21 Jan 2022 17:02:56 +0000</pubDate>
      <link>https://dev.to/annequinkenstein/games-to-learn-coding-3o9k</link>
      <guid>https://dev.to/annequinkenstein/games-to-learn-coding-3o9k</guid>
      <description>&lt;h3&gt;
  
  
  Programming
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://web.mit.edu/mprat/Public/web/Terminus/Web/main.html" rel="noopener noreferrer"&gt;CLI/ Shell/ Terminal Commands&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vim-adventures.com/" rel="noopener noreferrer"&gt;learn VIM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://adventofcode.com" rel="noopener noreferrer"&gt;small programming puzzles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.codingame.com" rel="noopener noreferrer"&gt;improve programming skills&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.pythonchallenge.com/" rel="noopener noreferrer"&gt;python&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://checkio.org/" rel="noopener noreferrer"&gt;python &amp;amp; typescript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://play.elevatorsaga.com/" rel="noopener noreferrer"&gt;javascript - move an elevator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://neoan.us/game/" rel="noopener noreferrer"&gt;javascript - spacestation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://alexnisnevich.github.io/untrusted/" rel="noopener noreferrer"&gt;javascript again :)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://screeps.com/" rel="noopener noreferrer"&gt;javascript - also available on Steam&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.flexboxdefense.com/" rel="noopener noreferrer"&gt;CSS Flexbox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flexboxfroggy.com/" rel="noopener noreferrer"&gt;CSS Flexbox II&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://css-challenges.com/" rel="noopener noreferrer"&gt;CSS challenges&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cssgridgarden.com" rel="noopener noreferrer"&gt;CSS Gridlayout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://flukeout.github.io" rel="noopener noreferrer"&gt;CSS Selectors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://rupl.github.io/unfold" rel="noopener noreferrer"&gt;CSS 3D Transformers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flexboxzombies.com/p/flexbox-zombies" rel="noopener noreferrer"&gt;CSS Flexboxzombies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cssbattle.dev/" rel="noopener noreferrer"&gt;HTML/ CSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codecombat.com/" rel="noopener noreferrer"&gt;WebDev, APP Development, Game Development&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://robocode.sourceforge.io/" rel="noopener noreferrer"&gt;java &amp;amp; .NET&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ryanb/ruby-warrior" rel="noopener noreferrer"&gt;Ruby&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://store.steampowered.com/app/792100/7_Billion_Humans/" rel="noopener noreferrer"&gt;7 Billion Humans Programming-Game on Steam&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://halite.io/" rel="noopener noreferrer"&gt;Halite - write bots in all languages&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://terminal.c1games.com/" rel="noopener noreferrer"&gt;Terminal - same as Halite, write code to compete&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Steam Games of Zachtronics: &lt;a href="https://store.steampowered.com/app/716490/EXAPUNKS/" rel="noopener noreferrer"&gt;EXAPUNKS for assembly&lt;/a&gt;, &lt;a href="https://store.steampowered.com/app/504210/SHENZHEN_IO/" rel="noopener noreferrer"&gt;SHENZHEN I/O for electronic curcits&lt;/a&gt; or &lt;a href="https://store.steampowered.com/app/370360/TIS100/" rel="noopener noreferrer"&gt;rewrite corrupted code segments in TIS-100 &lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://projecteuler.net/" rel="noopener noreferrer"&gt;Solving Problems in Projekt Euler&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.codewars.com/" rel="noopener noreferrer"&gt;solve puzzles in codewars&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://store.steampowered.com/app/736260/Baba_Is_You/" rel="noopener noreferrer"&gt;Solving Puzzles in Baba is you on Steam&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.twilio.com/quest" rel="noopener noreferrer"&gt;Learn to code with TwilioQuest&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://minecraft.fandom.com/wiki/Tutorials/Setting_up_a_server" rel="noopener noreferrer"&gt;learning Java with setting up a minecraft Server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cantunsee.space/" rel="noopener noreferrer"&gt;learning Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://serviceworkies.com/" rel="noopener noreferrer"&gt;learn about Service Workers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  for Kids
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.codemonkey.com/" rel="noopener noreferrer"&gt;Codemonkey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.codemoji.com" rel="noopener noreferrer"&gt;HTML, CSS, Javascript&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Security
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.hackthissite.org/" rel="noopener noreferrer"&gt;CTF and others&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Komlexität von Algorithmen</title>
      <dc:creator>Anne Quinkenstein</dc:creator>
      <pubDate>Thu, 02 Dec 2021 19:51:11 +0000</pubDate>
      <link>https://dev.to/annequinkenstein/algorithmen-und-datenstrukturen-458p</link>
      <guid>https://dev.to/annequinkenstein/algorithmen-und-datenstrukturen-458p</guid>
      <description>&lt;h1&gt;
  
  
  Was ist ein Algorithmus?
&lt;/h1&gt;

&lt;p&gt;EVA Prinzip&lt;/p&gt;

&lt;h3&gt;
  
  
  Grundprobleme
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Berechenbarkeit&lt;/li&gt;
&lt;li&gt;Korrektheit&lt;/li&gt;
&lt;li&gt;Terminiertheit&lt;/li&gt;
&lt;li&gt;Komplexität (Wie lange?)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Eigenschaften
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Determiniertheit (Kommt dasselbe bei dem selben Input raus?)&lt;/li&gt;
&lt;li&gt;Determinismus (Gibt es immer eindeutig eine nächste Anweisung?)&lt;/li&gt;
&lt;li&gt;Finitheit (gibt es ein Ende?)&lt;/li&gt;
&lt;li&gt;Effektivität (Ist der Effekt jeder Anweisung klar?) &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Komplextität eines Algorithmus
&lt;/h3&gt;

&lt;h4&gt;
  
  
  O-NOTATION
&lt;/h4&gt;

&lt;p&gt;•Komplexitätsklassen werden in O-Notation angegeben -&amp;gt; f ∈ O(g) &lt;br&gt;
•Bei dieser Angabe gilt: "g dominiert f" &lt;br&gt;
•f ∈ O(g) ⟷ es gibt n0, c ∈ ℕ, so dass f(n) ≤ c × g(n) für alle n ≥ n0 &lt;/p&gt;

&lt;h4&gt;
  
  
  Häufig benutzte Komplexitätsklassen
&lt;/h4&gt;

&lt;p&gt;•O(log(n)) &lt;br&gt;
•O(n log(n)) &lt;br&gt;
•O(n) &lt;br&gt;
•O(n2) &lt;br&gt;
•O(2n)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F05ugaw53s1vkfcjq090a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F05ugaw53s1vkfcjq090a.png" alt="Image description" width="800" height="487"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;konstant: O(1); &lt;br&gt;
logarithmisch: O(log n), O(log² n)&lt;br&gt;
linar: O(n)&lt;br&gt;
linar-logarithmisch: O(log n * n)&lt;br&gt;
quadratisch: o(n²)&lt;br&gt;
kubisch: O(n³)&lt;br&gt;
exponentiell: O(2hochn)&lt;br&gt;
falkutlät: O(n!)&lt;/p&gt;

&lt;p&gt;Analysen von Programmen&lt;br&gt;
wenn sich mit jeden Schritt das Problem halbiert: logarithmische Komplexität&lt;br&gt;
schleife in schleifen: quadratische&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>codequality</category>
    </item>
  </channel>
</rss>
