<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Home on Piotr Kosmowski</title>
    <link>/</link>
    <description>Recent content in Home on Piotr Kosmowski</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>pl-pl</language>
    <lastBuildDate>Sun, 01 Jan 2023 08:30:00 -0700</lastBuildDate><atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Private VPS with Raspberry PI 3</title>
      <link>/posts/2017-06-18-private-vps-with-rpi3/</link>
      <pubDate>Mon, 18 Jun 2018 18:00:00 +0000</pubDate>
      
      <guid>/posts/2017-06-18-private-vps-with-rpi3/</guid>
      <description>Prerequisite # Raspberry PI 3 Public IP (optionally) Install and configure RPI # Download Raspian Litle from: https://www.raspberrypi.org/downloads/raspbian/ and unzip it Copy image to the card: https://www.raspberrypi.org/documentation/installation/installing-images/linux.md dd bs=4M if=2017-04-10-raspbian-jessie-lite.img of=/dev/mmcblk0 sync Enable SSH on a headless RPI sudo mkdir /media/sd &amp;amp;&amp;amp; sudo mount /dev/mmcblk0p1 /media/sd - mount bootable partition of the SD card * sudo touch /media/sd/ssh - create ssh file on the SD card which enables SSH on boot Insert SD card in the RPI, turn it on and connect to the LAN ssh pi@192.</description>
    </item>
    
    <item>
      <title>Angular 2 &#43; uikit application</title>
      <link>/posts/2016-09-17-ng2-uikit-spa-app/</link>
      <pubDate>Sat, 17 Sep 2016 18:00:00 +0000</pubDate>
      
      <guid>/posts/2016-09-17-ng2-uikit-spa-app/</guid>
      <description>Prerequisite # GIT NodeJS and NPM global NPM libraries: sudo npm install -g webpack webpack-dev-server typescript Init Angular 2 project with seed # Clone repo from https://github.com/angular/angular2-seed:
git clone git@github.com:angular/angular2-seed.git ng2uikit-app Install dependencies:
cd ng2uikit-app npm install Run app:
npm start Go to http://localhost:3000
Result:
uikit styles # Replacehome.html content:
&amp;lt;div class=&amp;#34;uk-container uk-container-center uk-margin-top uk-margin-large-bottom&amp;#34;&amp;gt; &amp;lt;div class=&amp;#34;uk-grid&amp;#34; data-uk-grid-margin&amp;gt; &amp;lt;div class=&amp;#34;uk-width-medium-1-1&amp;#34;&amp;gt; &amp;lt;div class=&amp;#34;uk-vertical-align uk-text-center&amp;#34; style=&amp;#34;background: url(&amp;#39;data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxNi4wLjQsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DQo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkViZW5lXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB3aWR0aD0iMTEzMHB4IiBoZWlnaHQ9IjQ1MHB4IiB2aWV3Qm94PSIwIDAgMTEzMCA0NTAiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDExMzAgNDUwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxyZWN0IGZpbGw9IiNGNUY1RjUiIHdpZHRoPSIxMTMwIiBoZWlnaHQ9IjQ1MCIvPg0KPC9zdmc+DQo=&amp;#39;) 50% 0 no-repeat; height: 450px;&amp;#34;&amp;gt; &amp;lt;div class=&amp;#34;uk-vertical-align-middle uk-width-1-2&amp;#34;&amp;gt; &amp;lt;h1 class=&amp;#34;uk-heading-large&amp;#34;&amp;gt;Sample Heading&amp;lt;/h1&amp;gt; &amp;lt;p class=&amp;#34;uk-text-large&amp;#34;&amp;gt;Cras justo odio, dapibus ac facilisis in, egestas eget quam.</description>
    </item>
    
    <item>
      <title>REST end to end testing Node applications with Intern framework</title>
      <link>/posts/2015-03-03-end-to-end-tests-with-intern/</link>
      <pubDate>Tue, 03 Mar 2015 22:16:00 +0000</pubDate>
      
      <guid>/posts/2015-03-03-end-to-end-tests-with-intern/</guid>
      <description>Introduction # In the previous post Testing Node applications with Intern framework I demostrated how to set up testing environment for unit tests with Intern and Grunt. Today I will show how to test REST endpoints with end to end tests in a speed of unit tests.
#Set up infrastructure
Create Node project # Create NodeJS project:
mkdir intern-end-to-end-tests cd intern-end-to-end-tests Create init package.json:
{ &amp;#34;name&amp;#34;: &amp;#34;intern-end-to-end-tests&amp;#34;, &amp;#34;version&amp;#34;: &amp;#34;1.0.0&amp;#34;, &amp;#34;description&amp;#34;: &amp;#34;&amp;#34; } Implementing REST endpoint using ExpressJS # Install ExpressJS: # npm install express --save-dev Implement application endpoints # We will create application code in src directory:</description>
    </item>
    
    <item>
      <title>Testing Node applications with Intern framework</title>
      <link>/posts/2015-03-01-unit-tests-with-intern/</link>
      <pubDate>Sun, 01 Mar 2015 22:16:00 +0000</pubDate>
      
      <guid>/posts/2015-03-01-unit-tests-with-intern/</guid>
      <description>Introduction # In JS world, regressions may appear at every change without any warning, so tests are equally important as production code. The same rule applies to every non static typed languages, but let&amp;rsquo;s stay on JS.
Intern is a complete framework for testing JavaScript Web sites and applications. I will use it to demostrate how to test NodeJS applications using intern framework. First I configure testing infrastructure so we could start writing business logic and testing it.</description>
    </item>
    
    <item>
      <title>Super Dev Mode recompile with shortcut</title>
      <link>/posts/2014-03-22-super-dev-mode-recompile-with-shortcut/</link>
      <pubDate>Sat, 22 Mar 2014 22:16:00 +0000</pubDate>
      
      <guid>/posts/2014-03-22-super-dev-mode-recompile-with-shortcut/</guid>
      <description>Instead of using bookmark to recompile GWT module in Super Dev Mode you can use shortcuts. Step by step:
Install Shortcut Manager Add new shortcut: Shortcut key: ctrl+r Url pattern. For example: http://localhost:8080/App* Copy content of your bookmark and decode it from url form using for example (dencoder)[http://meyerweb.com/eric/tools/dencoder/] and copy content that is surrounded with javascript:{ and } Alternatively you can use this configuration and adopt it to your project: window.</description>
    </item>
    
    <item>
      <title>Stage Maven archetypes to Central Repository</title>
      <link>/posts/2014-02-27-stage-maven-archetypes-to-central-repository/</link>
      <pubDate>Thu, 27 Feb 2014 22:16:00 +0000</pubDate>
      
      <guid>/posts/2014-02-27-stage-maven-archetypes-to-central-repository/</guid>
      <description>In some future posts I will share how to configure environment for publishing archetypes to the Central Repositories. Basically most of the knowledge is present in the official documentation here: https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide.
In this post I will show how to stage your archetypes on already configured environment. The steps are ass follow:
Commit and push all changes to the repository: git add --all git commit -m &amp;#34;Your message&amp;#34; git push origin master On Windows cofigure and run ssh-agent: When using Git with SSH you could encourage some issues on Windows platform.</description>
    </item>
    
    <item>
      <title>ExtJS project</title>
      <link>/posts/2014-02-14-extjs-project-with-netbeans/</link>
      <pubDate>Fri, 14 Feb 2014 22:16:00 +0000</pubDate>
      
      <guid>/posts/2014-02-14-extjs-project-with-netbeans/</guid>
      <description>Usually when it comes to develop Single Page Application (SPA) we choose GWT. For simple apps we use native components, GWT-Bootstrap or custom components created with DOM utils. For Enterprise applications we don’t risk and go with GXT.
GXT is well done components library by Sencha for GWT that looks and behaves like their flag product – ExtJS. In this article we will leave Java world and for a while we will check how to create SPA applications in JavaScript with ExtJS.</description>
    </item>
    
    <item>
      <title>UI Binder GWT Styles</title>
      <link>/posts/2013-06-12-synchronous-injection-of-styles-to-ui-binder/</link>
      <pubDate>Wed, 12 Jun 2013 22:16:00 +0000</pubDate>
      
      <guid>/posts/2013-06-12-synchronous-injection-of-styles-to-ui-binder/</guid>
      <description>Often when using UI Binder in your GWT project you would like to stylize your app with CSS. There are two ways of doing this a) by adding CSS attribute directly in DOM element or b) by using Client Bundle.
#Add CSS attribute
Please check reference guide: https://developers.google.com/web-toolkit/doc/latest/DevGuideUiCss
To add class attribute to any GWT element you need to use DOM static helper method. For example:
Button b = new Button(); DOM.</description>
    </item>
    
    <item>
      <title>Instalacja artefaktu w zdalnym repozytorium Mavena</title>
      <link>/posts/2012-02-07-deploy-artifacts-to-the-repository/</link>
      <pubDate>Tue, 07 Feb 2012 22:16:00 +0000</pubDate>
      
      <guid>/posts/2012-02-07-deploy-artifacts-to-the-repository/</guid>
      <description>W jednym z poprzednich wpisów pokazaliśmy jak zdeployować stworzoną zależność po skompilowaniu projektu. Dzisiejszy wpis poświęcony jest umieszczaniu zależności w repozytorium przy pomocy linii komend. Pomimo najszczerszych chęci wykonanie tego zadania zupełnie z linii komend jest niemożliwe. Należy stworzyć pom.xml o następującej treści:
&amp;lt;project xmlns=&amp;#34;http://maven.apache.org/POM/4.0.0&amp;#34; xmlns:xsi=&amp;#34;http://www.w3.org/2001/XMLSchema-instance&amp;#34; xsi:schemaLocation=&amp;#34;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&amp;#34;&amp;gt; &amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt; &amp;lt;groupId&amp;gt;com.example&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;webdav-deploy-pom&amp;lt;/artifactId&amp;gt; &amp;lt;packaging&amp;gt;pom&amp;lt;/packaging&amp;gt; &amp;lt;version&amp;gt;1&amp;lt;/version&amp;gt; &amp;lt;name&amp;gt;Deploy&amp;lt;/name&amp;gt; &amp;lt;build&amp;gt; &amp;lt;extensions&amp;gt; &amp;lt;extension&amp;gt; &amp;lt;groupId&amp;gt;org.apache.maven.wagon&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;wagon-webdav&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.0-beta-2&amp;lt;/version&amp;gt; &amp;lt;/extension&amp;gt; &amp;lt;/extensions&amp;gt; &amp;lt;/build&amp;gt; &amp;lt;/project&amp;gt; Będzie on dodawał obsługę pluginu służącego do wysyłania zależności na zdalny zasób.</description>
    </item>
    
    <item>
      <title>Szablony w Netbeans</title>
      <link>/posts/2012-02-05-gxt-templates-for-netbeans/</link>
      <pubDate>Sun, 05 Feb 2012 22:16:00 +0000</pubDate>
      
      <guid>/posts/2012-02-05-gxt-templates-for-netbeans/</guid>
      <description>Podczas pracy z różnymi bibliotekami bywa, że pewne czynności są powtarzane nader często. Popularne biblioteki posiadają rozszerzenia, bądź natywne wsparcie ze strony IDE jak np. kreatory. Niestety nie wszystkie biblioteki posiadają tak ogromne wsparcie jak choćby Spring czy Hibernate, co nie oznacza że są gorsze. Programista jako użytkownik danej biblioteki pomimo braku wsparcia może jednak sam opracować pewne wzorce, które powtarzają się w trakcie pracy i je zautomatyzować poprzez makra czy też szablony.</description>
    </item>
    
    <item>
      <title>Aktualizacja web.xml dla Netbeans</title>
      <link>/posts/2012-02-04-update-web-xml-for-netbeans-workflow/</link>
      <pubDate>Sat, 04 Feb 2012 22:16:00 +0000</pubDate>
      
      <guid>/posts/2012-02-04-update-web-xml-for-netbeans-workflow/</guid>
      <description>Tworząc nowy projekt czy to za pomocą kreatora dołączonego do IDE czy za pomocą archetypu Maven zdarza się, że utworzona wersja deskryptora wdrożenia jest dość nieaktualna. Pracując z Netbeans chcąc dodać nowy servlet jeżeli deskryptor będzie w wersji 2.3 bądź starszej, zostaniemy poinformowani komunikatem, że nie jest to możliwe:
W tym celu należy w pliku web.xml skasować dotychczasowy schemat walidacji DTD:
&amp;lt;!DOCTYPE web-app PUBLIC &amp;#34;-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN&amp;#34; &amp;#34;http://java.</description>
    </item>
    
    <item>
      <title>Podstawowy projekt z użyciem Hibernate</title>
      <link>/posts/2012-02-02-fast-track-to-hibernate/</link>
      <pubDate>Thu, 02 Feb 2012 22:16:00 +0000</pubDate>
      
      <guid>/posts/2012-02-02-fast-track-to-hibernate/</guid>
      <description>W dzisiejszym poście zaprezentujemy jak stworzyć projekt, który może stanowić wejście dla przyszłych projektów wykorzystujących Hibernate oraz Mavena. Do zamockowania bazy danych posłużymy się wbudowaną (embeded) bazą danych – Derby.
##Nowy projekt
Nalezy utworzyć nowy projekt za pomoca polecenia:
mvn -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.1 -DarchetypeRepository=http://repo1.maven.org/maven2 -DgroupId=pl.xperios -DartifactId=HibernateMavenStarter -Dversion=1.0-SNAPSHOT -Dpackage=pl.xperios.HibernateMavenStarter -Dbasedir=C:\\Projects\\Starters -Darchetype.interactive=false –batch-mode archetype:generate ##Konfiguracja zależności
Po stworzeniu struktury projektu należy dodać zależności Hibernate. Ponieważ nie występują w repozytorium centralnym najpierw należy dodać odpowiednie repozytoria do pliku pom.</description>
    </item>
    
    <item>
      <title>Jetty - poręczny serwerek</title>
      <link>/posts/2011-12-15-introduction-to-jetty/</link>
      <pubDate>Thu, 15 Dec 2011 22:16:00 +0000</pubDate>
      
      <guid>/posts/2011-12-15-introduction-to-jetty/</guid>
      <description>W trakcie tworzenia aplikacji internetowych przychodzi moment kiedy należy go umieścić na jakimś serwerze. Do dyspozycji mamy naprawdę szeroką pulę począwszy od lekkiego Tomcata po serwery aplikacji takie jak GlassFish czy JBoss. Dzisiaj zaprezentujemy malutki i zgrabniutki kontener serwletów Jetty. Jego główną zaletą nad pozostałymi jest banalna konfiguracja oraz szybkość uruchamiania. Konfiguracja całości w projekcie budowanym za pomocą Mavena sprowadza się do dodania następującego plugina w pliku pom.xml:
&amp;lt;plugin&amp;gt; &amp;lt;groupId&amp;gt;org.mortbay.jetty&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;maven-jetty-plugin&amp;lt;/artifactId&amp;gt; &amp;lt;configuration&amp;gt; &amp;lt;scanIntervalSeconds&amp;gt;10&amp;lt;/scanIntervalSeconds&amp;gt; &amp;lt;contextPath&amp;gt;/&amp;lt;/contextPath&amp;gt; &amp;lt;/configuration&amp;gt; &amp;lt;/plugin&amp;gt; Uruchomienie serwera odbywa się za pomocą: jetty:run bądź jetty:run-exploded.</description>
    </item>
    
    <item>
      <title>Wdrożenie aplikacji na Tomcata</title>
      <link>/posts/2011-10-24-hot-deploy-to-remote-tomcat/</link>
      <pubDate>Mon, 24 Oct 2011 22:16:00 +0000</pubDate>
      
      <guid>/posts/2011-10-24-hot-deploy-to-remote-tomcat/</guid>
      <description>W pewnym punkcie pracy z projektem J2EE, (projekt webowy) dochodzimy do punktu, w którym przychodzi potrzeba umieszczenia go na serwerze czy to kontenerze aplikacji. Po umieszczeniu na serwerze można przetestować jego działanie ale również uruchomić np testy integracyjne.
Ponieważ takich serwerów może istnieć wiele (lokalny, zdalny, klient, …) poszczególne warianty można umieścić np. oddzielnych profilach.
Zdefiniujmy profil, który będzie wykorzystywał plugin cargo, który bedzie łączył się ze zdalnym serwerem tomcat 7.</description>
    </item>
    
    <item>
      <title>Wydawanie aplikacji w formie zarchiwizowanej</title>
      <link>/posts/2011-10-23-releasing-archived-maven-archetypes/</link>
      <pubDate>Sun, 23 Oct 2011 22:16:00 +0000</pubDate>
      
      <guid>/posts/2011-10-23-releasing-archived-maven-archetypes/</guid>
      <description>Jednym z elementów cyklu życia projektu jest wydanie jego wersji. W zależności co tak na prawdę tworzymy efektem końcowym jest aplikacja gotowa do uruchomienia przez klienta, bądź biblioteka wykorzystywana w innych projektach. Oto czym się głównie charakteryzują:
aplikacja – posiada strukturę dostosowaną do projektu (jednakowa nazwa artefaktu np.: aplikacja.jar, zależności umieszczone w folderze lib, zasoby porozmieszczane w oddzielnych folderach np.: Pomoc, Img, Log, Raporty itp.), dokumentacja użytkownika, przykładowe pliki konfiguracyjne, dołączone jedynie binaria biblioteka – ustandaryzowana struktura wydania (dobra konwencja), dołączenie binariów, bardzo często nie dołącza się zależności, przykłady, dokumentacja techniczna, strona site-ów wraz z wynikami testów, javadoc itp.</description>
    </item>
    
    <item>
      <title>Maven site</title>
      <link>/posts/2011-10-22-maven-site/</link>
      <pubDate>Sat, 22 Oct 2011 22:16:00 +0000</pubDate>
      
      <guid>/posts/2011-10-22-maven-site/</guid>
      <description>Jak wiadomo kolejnym etapem po, a jeszcze lepiej w trakcie realizacji projektu należy przedstawić klientowi dokumentację zarówno użytkownika jak i techniczną. Abstrahując zupełnie od dokumentacji użytkownika dokumentacja techniczna powinna zawierać przynajmniej takie podstawowe elementy jak:
javadoc, FAQ, opis użycia, pokrycie kotu testami, wyniki testów, i wiele innych zależących od wymogów klientów, góry czy własnych wymagań.
Oprócz części opisowej, którą prowadzić programista musi samodzielnie, w większości powyższych przypadków może wyręczyć nas maven.</description>
    </item>
    
    <item>
      <title>Prywatne repozytorium Maven na code.google.pl</title>
      <link>/posts/2011-10-21-own-maven-repository-on-google-code/</link>
      <pubDate>Fri, 21 Oct 2011 22:16:00 +0000</pubDate>
      
      <guid>/posts/2011-10-21-own-maven-repository-on-google-code/</guid>
      <description>Często tworząc nowy projekt (z reguły opensource) w naszym przypadku wykorzystujemy jako repozytorium popularny Github, Bitbucket lub code.google.com. Aby podnieść walor biznesowy i jakość świadczonych usług normalnym jest częste wydawanie nowej wersji naszej aplikacji klientom / społeczności. Proces ten czasmi jest dosyć tendencyjny i uciążliwy. Powtarzające się procesy oczywiście dociekliwy programista jest w stanie sobie zautomatyzować w bardzo zwinny sposób.
Dzisiaj pokażemy jak posiadając projekt na code.google.com stworzyć z niego własne repozytorium wykorzystując do tego mavena w wersji 3.</description>
    </item>
    
    <item>
      <title>C3P0 - poprawne zamykanie</title>
      <link>/posts/2011-05-21-c3p0-proper-closing-application/</link>
      <pubDate>Sat, 21 May 2011 22:16:00 +0000</pubDate>
      
      <guid>/posts/2011-05-21-c3p0-proper-closing-application/</guid>
      <description>W przypadku, gdy aplikacja do przechowywania danych wykorzystuje relacyjną bazę danych bardzo często się zdarza, że korzysta z takich narzędzi wspomagających jak Hibernate czy MyBatis (określenie “narzędzie” jest tu celowe, ponieważ najczęściej o tej warstwie mówi się skrótowo ORM, przy czym MyBatis ORM-em nie jest).
Biblioteki te (jak i również inne) mogą wykorzystywać zewnętrzne mechanizmy transakcji, czy zarządzania źródłami danych i tu zmierzam do C3P0.
C3p0 jest biblioteką, która wnosi warstwę obsługi wielu połączeń z bazą danych.</description>
    </item>
    
    <item>
      <title>Hibernate &#43; Guice</title>
      <link>/posts/2010-12-16-hiberante-with-guice/</link>
      <pubDate>Thu, 16 Dec 2010 22:16:00 +0000</pubDate>
      
      <guid>/posts/2010-12-16-hiberante-with-guice/</guid>
      <description>Hibernate – framework do realizacji warstwy dostępu do danych (ang. persistance layer). Zapewnia on przede wszystkim translację danych pomiędzy relacyjną bazą danych, a światem obiektowym (ang. O/R mapping). Opiera się na wykorzystaniu opisu struktury danych za pomocą języka XML, dzięki czemu można “rzutować” obiekty, stosowane w obiektowych językach programowania, takich jak Java bezpośrednio na istniejące tabele bazy danych. Dodatkowo Hibernate zwiększa wydajność operacji na bazie danych dzięki buforowaniu i minimalizacji liczby przesyłanych zapytań.</description>
    </item>
    
    <item>
      <title>Google Web Toolkit</title>
      <link>/posts/2010-12-14-gwt-basic-components/</link>
      <pubDate>Tue, 14 Dec 2010 22:16:00 +0000</pubDate>
      
      <guid>/posts/2010-12-14-gwt-basic-components/</guid>
      <description>Google Web Toolkit (GWT) jest szkieletem do tworzenia aplikacji AJAX w oparciu o język Java. Pozwala on na tworzenie kodu bez ręcznego kodowania i łączenia elementów języka Java oraz JavaScript. Po napisaniu kodu aplikacji następuje kompilacja części klienckiej do JavaScriptu, CSS oraz HTML. Część serwerowa zostaje skompilowana przez standardowy kompilator Javy. Framework w standardzie zapewnia poprawne wyświetlanie komponentów w przeglądarkach: Firefox, Opera, IE, Safari, Google Chrome. (Wikipedia.pl)
W skrócie GWT jest frameworkiem, który pozwala na tworzenie aplikacji typu RIA w całości w języku Java.</description>
    </item>
    
    <item>
      <title>Google Web Toolkit &#43; Guice</title>
      <link>/posts/2010-12-15-gwt-and-guice/</link>
      <pubDate>Fri, 15 Oct 2010 22:16:00 +0000</pubDate>
      
      <guid>/posts/2010-12-15-gwt-and-guice/</guid>
      <description>Guice jest frameworkiem dostarczającym tzn. wstrzykiwania zależności w naszej części serwerowej aplikacji. Gdybyśmy rozważali aplikację typu desktop poniższa konfiguracja w zupełności by wystarczyła:
package testingguice; import com.google.inject.AbstractModule; import com.google.inject.Guice; import com.google.inject.Injector; public class Main { public static void main(String[] args) { Injector injector = Guice.createInjector(new MyModule()); PersonDao personDao = injector.getInstance(PersonDao.class); for (Person person : personDao.getAll()) { System.out.println(&amp;#34;Person: &amp;#34;+person); } } } Klasa modułu w rozumieniu IoC:
public class MyModule extends AbstractModule { @Override protected void configure() { bind(PersonDao.</description>
    </item>
    
    <item>
      <title></title>
      <link>/docs/snippets/jenkins_pr_comment/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/snippets/jenkins_pr_comment/</guid>
      <description>pipeline { agent any environment { GITHUB_TOKEN = credentials(&amp;#39;github-token-id&amp;#39;) // Jenkins credential with a GitHub token } stages { stage(&amp;#39;Build&amp;#39;) { steps { echo &amp;#39;Building...&amp;#39; } } } post { always { script { // Extract PR number (GitHub Branch Source plugin usually sets CHANGE_ID) if (env.CHANGE_ID) { def comment = &amp;#34;Build result: ${currentBuild.currentResult} for PR #${env.CHANGE_ID}&amp;#34; sh &amp;#34;&amp;#34;&amp;#34; curl -s -H &amp;#34;Authorization: token ${GITHUB_TOKEN}&amp;#34; \ -H &amp;#34;Content-Type: application/json&amp;#34; \ -d &amp;#39;{&amp;#34;body&amp;#34;: &amp;#34;${comment}&amp;#34;}&amp;#39; \ https://api.</description>
    </item>
    
    <item>
      <title>Algorithms</title>
      <link>/docs/notes/development/algo/algorithms/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/algo/algorithms/</guid>
      <description></description>
    </item>
    
    <item>
      <title>API Management</title>
      <link>/docs/notes/architecture/api-management/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/architecture/api-management/</guid>
      <description>API Management refers to the practices and tools that enable an organization to govern and monitor its Application Programming Interfaces (APIs). Today, the term almost always means management of RESTful APIs using the JSON language.
API Management controls how the gateway passes calls to the back-end service and then hands off the response back to the invoker site. Most large companies have built out APIs for their customers and for internal use.</description>
    </item>
    
    <item>
      <title>ArrayList</title>
      <link>/docs/notes/development/data_structures/array_list/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/data_structures/array_list/</guid>
      <description>In Java, ArrayList is a part of the Java Collections Framework and is a resizable array implementation of the List interface. It is widely used when you need a dynamic array that can grow and shrink as needed.
For scenarios where the list size changes frequently or insertions/deletions are common in the middle, alternatives like LinkedList or other specialized data structures might be more suitable.
Advantages # Dynamic Resizing: Unlike arrays, ArrayList can grow or shrink dynamically when elements are added or removed, making it more flexible.</description>
    </item>
    
    <item>
      <title>Arrays</title>
      <link>/docs/notes/development/data_structures/arrays/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/data_structures/arrays/</guid>
      <description>In Java, arrays are a fundamental data structure used to store elements of the same data type in contiguous memory.
Advantages # Fixed Size: Arrays have a predefined size, which means they allocate a contiguous block of memory. This helps with fast access to elements. Random Access: Arrays allow direct access to any element by index in constant time, making it efficient for reading or writing. Memory Efficiency: Arrays use memory efficiently because they don&amp;rsquo;t require extra overhead like some other data structures (e.</description>
    </item>
    
    <item>
      <title>BigQuery</title>
      <link>/docs/notes/products/gcp-big-query/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/products/gcp-big-query/</guid>
      <description> BigQuery # Processing Big Data with BigQuery # Understanding the Use Case # Data Collection Data Governance Data usage policy Data Storage # Storage capacity Security Scalability Redundancy / Backup / Recovery Data Exploration # Data schema Data format Changes over time Data analytics # Processing engine Service availability Output of the analysis Big Query overview # OLAP not OLTP Big data &amp;gt; 1TB, otherwise use regular DB. Structured data, otherwise use Data Lake Serverless and fully managed Caches queries Prices: on-demand, reservations, Flex slots, Flat rate BigQuery Architecture # Servers Borg - Platform for containers Colossus - Splits data for parallel processing Jupiter - Ultra fast Network Dremel - Query Execution Engine API </description>
    </item>
    
    <item>
      <title>Bit Operations</title>
      <link>/docs/notes/development/java/bit-operations/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/java/bit-operations/</guid>
      <description>In Java, bitwise operations are operations that manipulate individual bits of integer types like int and long. These operations can be used for low-level programming, performance optimizations, and working with flags or binary data. The common bitwise operations in Java include:
Overview # Operation Symbol Description Bitwise AND &amp;amp; Sets each bit to 1 if both bits are 1. Bitwise OR ` ` Bitwise XOR ^ Sets each bit to 1 if only one of the bits is 1.</description>
    </item>
    
    <item>
      <title>Buble Sort</title>
      <link>/docs/notes/development/algo/sorting/bublesort/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/algo/sorting/bublesort/</guid>
      <description>Bubble Sort is a simple comparison-based sorting algorithm. It repeatedly steps through the list, compares adjacent elements, and swaps them if they are in the wrong order. The process is repeated until no swaps are needed, indicating that the list is sorted.
It is named &amp;ldquo;bubble sort&amp;rdquo; because smaller elements &amp;ldquo;bubble&amp;rdquo; to the top of the list (beginning of the array), while larger elements sink to the bottom (end of the array) during the sorting process.</description>
    </item>
    
    <item>
      <title>Cheatsheet</title>
      <link>/docs/notes/development/java/cheatsheet/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/java/cheatsheet/</guid>
      <description>java.util.Objects # Method Description equals(Object a, Object b) Safely compares two objects for equality. deepEquals(Object a, Object b) Performs a deep comparison of two objects, including arrays. hash(Object... values) Generates a hash code for multiple objects. hashCode(Object o) Returns the hash code of an object or 0 if null. toString(Object o) Returns the toString() of an object or &amp;quot;null&amp;quot;. toString(Object o, String nullDefault) Returns the toString() of an object or a default string.</description>
    </item>
    
    <item>
      <title>Clean Code</title>
      <link>/docs/notes/development/java/clean-code-presentation/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/java/clean-code-presentation/</guid>
      <description>Object Oriented # TBD
High cohesion # TBD
SOLID principles # Single responsibility principle # What is SRP? # The term was introduced by Robert C. Martin. It is the ‘S’ from the SOLID principles, which are the basis for OOD. http://en.wikipedia.org/wiki/SOLID_(object-oriented_design) &amp;ldquo;SOLID at Wikipedia&amp;rdquo;) Here’s the PDF paper for SRP by Robert C. Martin https://docs.google.com/file/d/0ByOwmqah_nuGNHEtcU5OekdDMkk/
From Wikipedia:
…In object-oriented programming, the single responsibility principle states that every class should have a single responsibility, and that responsibility should be entirely encapsulated by the class.</description>
    </item>
    
    <item>
      <title>Containers</title>
      <link>/docs/notes/devops/containers/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/devops/containers/</guid>
      <description>Init # docker run hello-world - run container from hello world image Samples # Application # cat &amp;gt; app.js &amp;lt;&amp;lt;EOF const http = require(&amp;#39;http&amp;#39;); const hostname = &amp;#39;0.0.0.0&amp;#39;; const port = 80; const server = http.createServer((req, res) =&amp;gt; { res.statusCode = 200; res.setHeader(&amp;#39;Content-Type&amp;#39;, &amp;#39;text/plain&amp;#39;); res.end(&amp;#39;Hello World\n&amp;#39;); }); server.listen(port, hostname, () =&amp;gt; { console.log(&amp;#39;Server running at http://%s:%s/&amp;#39;, hostname, port); }); process.on(&amp;#39;SIGINT&amp;#39;, function() { console.log(&amp;#39;Caught interrupt signal and will exit&amp;#39;); process.exit(); }); EOF Dockerfile # cat &amp;gt; Dockerfile &amp;lt;&amp;lt;EOF # Use an official Node runtime as the parent image FROM node:6 # Set the working directory in the container to /app WORKDIR /app # Copy the current directory contents into the container at /app ADD .</description>
    </item>
    
    <item>
      <title>Data Structures</title>
      <link>/docs/notes/development/algo/data_structures/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/algo/data_structures/</guid>
      <description>Using Java Framework
Queue # Set # HashMap (or Map Interface) # Description: A collection that stores key-value pairs, providing constant-time complexity for insertions, deletions, and lookups. Java Implementation: Example:
HashMap&amp;lt;String, Integer&amp;gt; map = new HashMap&amp;lt;&amp;gt;(); Use Cases: Frequently used for scenarios requiring fast lookups by a key, like counting frequencies of elements or caching. 5. HashSet (or Set Interface) # Description: A collection that stores unique elements with no duplicate values and provides constant-time operations.</description>
    </item>
    
    <item>
      <title>Dependency Injection</title>
      <link>/docs/notes/development/java/dependency-injection-presentation/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/java/dependency-injection-presentation/</guid>
      <description>Motivation - how to write good code? # Clean code Object Oriented High cohesion DRY - dont&amp;rsquo;t repeat yourself (code reuse) SoC - separation of concerns SOLID principles S (SRP) - Single responsibility principle O (OCP) - Open/closed principle L (LSP) - Liskov substitution principle I (ISP) - Interface segregation principle D (DIP) - Dependency inversion principle See: Clean Code presentation
What is dependency? # Wa are talking about dependency when one object relates on another one.</description>
    </item>
    
    <item>
      <title>Enterprise Project Structure</title>
      <link>/docs/notes/leadership/project-doc-structure/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/leadership/project-doc-structure/</guid>
      <description> Home Page # Overview of the project Links to key sections Team members and roles Important announcements or updates Project Documentation # Requirements # Business Requirements Functional Requirements Non-Functional Requirements Architecture # System Architecture Diagrams Technology Stack Integration Points Design # UI/UX Design Guidelines Wireframes and Mockups Design Patterns Development # Coding Standards # Language-specific guidelines Best practices Version Control # Git branching strategy Repository structure Build and Deployment # CI/CD Pipeline Documentation Deployment Procedures Environment Setup Testing # Test Plans # Test Strategy Test Cases Quality Assurance # QA Processes Bug Tracking User Acceptance Testing (UAT) # UAT Criteria Feedback Collection Operations # Monitoring and Logging # Monitoring Tools Log Management Incident Management # Incident Response Plan Post-Mortem Documentation Maintenance # Scheduled Maintenance Procedures Backup and Recovery Plans Team Collaboration # Meeting Notes # Regular Stand-ups Sprint Planning Retrospectives Decision Logs # Key Decisions Made Rationale Behind Decisions Knowledge Sharing # Internal Workshops Training Materials Resources # Templates # Document Templates Meeting Agenda Templates Tools and Software # List of Tools Used Access Information External Resources # Links to Relevant Articles Industry Standards and Guidelines FAQs and Troubleshooting # Common Issues and Solutions Frequently Asked Questions Troubleshooting Guides Change Management # Change Request Process Change Log Impact Analysis </description>
    </item>
    
    <item>
      <title>ERD</title>
      <link>/docs/notes/architecture/data/erd/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/architecture/data/erd/</guid>
      <description>Sure! Here are examples of One-to-One, One-to-Many, and Many-to-Many relationships with table schemas.
1. One-to-One (1:1) # A one-to-one relationship means each record in Table A corresponds to exactly one record in Table B.
erDiagram Users ||--o| UserProfiles : &#34;has one&#34; Users { int user_id PK string username string email } UserProfiles { int profile_id PK int user_id FK string first_name string last_name string bio } Each user has exactly one profile.</description>
    </item>
    
    <item>
      <title>EspHome debugger</title>
      <link>/docs/notes/home_assistant/esphome-debugger/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/home_assistant/esphome-debugger/</guid>
      <description>Esp32 128 pins debug inputs # esphome: name: controller01 esp32: board: nodemcu-32s framework: type: esp-idf wifi: ssid: !secret wifi_ssid password: !secret wifi_password ap: ssid: controller01 hotspot password: !secret wifi_password power_save_mode: none use_address: controller01.home captive_portal: {} logger: baud_rate: 0 level: INFO api: encryption: key: !secret api_encryption_key ota: - platform: esphome password: !secret ota_password i2c: scan: true mcp23017: - id: mcp23017_hub_0 address: &amp;#34;0x20&amp;#34; - id: mcp23017_hub_1 address: &amp;#34;0x21&amp;#34; - id: mcp23017_hub_2 address: &amp;#34;0x22&amp;#34; - id: mcp23017_hub_3 address: &amp;#34;0x23&amp;#34; - id: mcp23017_hub_4 address: &amp;#34;0x24&amp;#34; - id: mcp23017_hub_5 address: &amp;#34;0x25&amp;#34; - id: mcp23017_hub_6 address: &amp;#34;0x26&amp;#34; - id: mcp23017_hub_7 address: &amp;#34;0x27&amp;#34; binary_sensor: - platform: gpio id: IN_0_mcp23017_hub_0_0 pin: mcp23xxx: mcp23017_hub_0 number: 0 mode: INPUT_PULLUP - platform: gpio id: IN_1_mcp23017_hub_0_1 pin: mcp23xxx: mcp23017_hub_0 number: 1 mode: INPUT_PULLUP - platform: gpio id: IN_2_mcp23017_hub_0_2 pin: mcp23xxx: mcp23017_hub_0 number: 2 mode: INPUT_PULLUP - platform: gpio id: IN_3_mcp23017_hub_0_3 pin: mcp23xxx: mcp23017_hub_0 number: 3 mode: INPUT_PULLUP - platform: gpio id: IN_4_mcp23017_hub_0_4 pin: mcp23xxx: mcp23017_hub_0 number: 4 mode: INPUT_PULLUP - platform: gpio id: IN_5_mcp23017_hub_0_5 pin: mcp23xxx: mcp23017_hub_0 number: 5 mode: INPUT_PULLUP - platform: gpio id: IN_6_mcp23017_hub_0_6 pin: mcp23xxx: mcp23017_hub_0 number: 6 mode: INPUT_PULLUP - platform: gpio id: IN_7_mcp23017_hub_0_7 pin: mcp23xxx: mcp23017_hub_0 number: 7 mode: INPUT_PULLUP - platform: gpio id: IN_8_mcp23017_hub_0_8 pin: mcp23xxx: mcp23017_hub_0 number: 8 mode: INPUT_PULLUP - platform: gpio id: IN_9_mcp23017_hub_0_9 pin: mcp23xxx: mcp23017_hub_0 number: 9 mode: INPUT_PULLUP - platform: gpio id: IN_10_mcp23017_hub_0_10 pin: mcp23xxx: mcp23017_hub_0 number: 10 mode: INPUT_PULLUP - platform: gpio id: IN_11_mcp23017_hub_0_11 pin: mcp23xxx: mcp23017_hub_0 number: 11 mode: INPUT_PULLUP - platform: gpio id: IN_12_mcp23017_hub_0_12 pin: mcp23xxx: mcp23017_hub_0 number: 12 mode: INPUT_PULLUP - platform: gpio id: IN_13_mcp23017_hub_0_13 pin: mcp23xxx: mcp23017_hub_0 number: 13 mode: INPUT_PULLUP - platform: gpio id: IN_14_mcp23017_hub_0_14 pin: mcp23xxx: mcp23017_hub_0 number: 14 mode: INPUT_PULLUP - platform: gpio id: IN_15_mcp23017_hub_0_15 pin: mcp23xxx: mcp23017_hub_0 number: 15 mode: INPUT_PULLUP - platform: gpio id: IN_16_mcp23017_hub_1_0 pin: mcp23xxx: mcp23017_hub_1 number: 0 mode: INPUT_PULLUP - platform: gpio id: IN_17_mcp23017_hub_1_1 pin: mcp23xxx: mcp23017_hub_1 number: 1 mode: INPUT_PULLUP - platform: gpio id: IN_18_mcp23017_hub_1_2 pin: mcp23xxx: mcp23017_hub_1 number: 2 mode: INPUT_PULLUP - platform: gpio id: IN_19_mcp23017_hub_1_3 pin: mcp23xxx: mcp23017_hub_1 number: 3 mode: INPUT_PULLUP - platform: gpio id: IN_20_mcp23017_hub_1_4 pin: mcp23xxx: mcp23017_hub_1 number: 4 mode: INPUT_PULLUP - platform: gpio id: IN_21_mcp23017_hub_1_5 pin: mcp23xxx: mcp23017_hub_1 number: 5 mode: INPUT_PULLUP - platform: gpio id: IN_22_mcp23017_hub_1_6 pin: mcp23xxx: mcp23017_hub_1 number: 6 mode: INPUT_PULLUP - platform: gpio id: IN_23_mcp23017_hub_1_7 pin: mcp23xxx: mcp23017_hub_1 number: 7 mode: INPUT_PULLUP - platform: gpio id: IN_24_mcp23017_hub_1_8 pin: mcp23xxx: mcp23017_hub_1 number: 8 mode: INPUT_PULLUP - platform: gpio id: IN_25_mcp23017_hub_1_9 pin: mcp23xxx: mcp23017_hub_1 number: 9 mode: INPUT_PULLUP - platform: gpio id: IN_26_mcp23017_hub_1_10 pin: mcp23xxx: mcp23017_hub_1 number: 10 mode: INPUT_PULLUP - platform: gpio id: IN_27_mcp23017_hub_1_11 pin: mcp23xxx: mcp23017_hub_1 number: 11 mode: INPUT_PULLUP - platform: gpio id: IN_28_mcp23017_hub_1_12 pin: mcp23xxx: mcp23017_hub_1 number: 12 mode: INPUT_PULLUP - platform: gpio id: IN_29_mcp23017_hub_1_13 pin: mcp23xxx: mcp23017_hub_1 number: 13 mode: INPUT_PULLUP - platform: gpio id: IN_30_mcp23017_hub_1_14 pin: mcp23xxx: mcp23017_hub_1 number: 14 mode: INPUT_PULLUP - platform: gpio id: IN_31_mcp23017_hub_1_15 pin: mcp23xxx: mcp23017_hub_1 number: 15 mode: INPUT_PULLUP - platform: gpio id: IN_32_mcp23017_hub_2_0 pin: mcp23xxx: mcp23017_hub_2 number: 0 mode: INPUT_PULLUP - platform: gpio id: IN_33_mcp23017_hub_2_1 pin: mcp23xxx: mcp23017_hub_2 number: 1 mode: INPUT_PULLUP - platform: gpio id: IN_34_mcp23017_hub_2_2 pin: mcp23xxx: mcp23017_hub_2 number: 2 mode: INPUT_PULLUP - platform: gpio id: IN_35_mcp23017_hub_2_3 pin: mcp23xxx: mcp23017_hub_2 number: 3 mode: INPUT_PULLUP - platform: gpio id: IN_36_mcp23017_hub_2_4 pin: mcp23xxx: mcp23017_hub_2 number: 4 mode: INPUT_PULLUP - platform: gpio id: IN_37_mcp23017_hub_2_5 pin: mcp23xxx: mcp23017_hub_2 number: 5 mode: INPUT_PULLUP - platform: gpio id: IN_38_mcp23017_hub_2_6 pin: mcp23xxx: mcp23017_hub_2 number: 6 mode: INPUT_PULLUP - platform: gpio id: IN_39_mcp23017_hub_2_7 pin: mcp23xxx: mcp23017_hub_2 number: 7 mode: INPUT_PULLUP - platform: gpio id: IN_40_mcp23017_hub_2_8 pin: mcp23xxx: mcp23017_hub_2 number: 8 mode: INPUT_PULLUP - platform: gpio id: IN_41_mcp23017_hub_2_9 pin: mcp23xxx: mcp23017_hub_2 number: 9 mode: INPUT_PULLUP - platform: gpio id: IN_42_mcp23017_hub_2_10 pin: mcp23xxx: mcp23017_hub_2 number: 10 mode: INPUT_PULLUP - platform: gpio id: IN_43_mcp23017_hub_2_11 pin: mcp23xxx: mcp23017_hub_2 number: 11 mode: INPUT_PULLUP - platform: gpio id: IN_44_mcp23017_hub_2_12 pin: mcp23xxx: mcp23017_hub_2 number: 12 mode: INPUT_PULLUP - platform: gpio id: IN_45_mcp23017_hub_2_13 pin: mcp23xxx: mcp23017_hub_2 number: 13 mode: INPUT_PULLUP - platform: gpio id: IN_46_mcp23017_hub_2_14 pin: mcp23xxx: mcp23017_hub_2 number: 14 mode: INPUT_PULLUP - platform: gpio id: IN_47_mcp23017_hub_2_15 pin: mcp23xxx: mcp23017_hub_2 number: 15 mode: INPUT_PULLUP - platform: gpio id: IN_48_mcp23017_hub_3_0 pin: mcp23xxx: mcp23017_hub_3 number: 0 mode: INPUT_PULLUP - platform: gpio id: IN_49_mcp23017_hub_3_1 pin: mcp23xxx: mcp23017_hub_3 number: 1 mode: INPUT_PULLUP - platform: gpio id: IN_50_mcp23017_hub_3_2 pin: mcp23xxx: mcp23017_hub_3 number: 2 mode: INPUT_PULLUP - platform: gpio id: IN_51_mcp23017_hub_3_3 pin: mcp23xxx: mcp23017_hub_3 number: 3 mode: INPUT_PULLUP - platform: gpio id: IN_52_mcp23017_hub_3_4 pin: mcp23xxx: mcp23017_hub_3 number: 4 mode: INPUT_PULLUP - platform: gpio id: IN_53_mcp23017_hub_3_5 pin: mcp23xxx: mcp23017_hub_3 number: 5 mode: INPUT_PULLUP - platform: gpio id: IN_54_mcp23017_hub_3_6 pin: mcp23xxx: mcp23017_hub_3 number: 6 mode: INPUT_PULLUP - platform: gpio id: IN_55_mcp23017_hub_3_7 pin: mcp23xxx: mcp23017_hub_3 number: 7 mode: INPUT_PULLUP - platform: gpio id: IN_56_mcp23017_hub_3_8 pin: mcp23xxx: mcp23017_hub_3 number: 8 mode: INPUT_PULLUP - platform: gpio id: IN_57_mcp23017_hub_3_9 pin: mcp23xxx: mcp23017_hub_3 number: 9 mode: INPUT_PULLUP - platform: gpio id: IN_58_mcp23017_hub_3_10 pin: mcp23xxx: mcp23017_hub_3 number: 10 mode: INPUT_PULLUP - platform: gpio id: IN_59_mcp23017_hub_3_11 pin: mcp23xxx: mcp23017_hub_3 number: 11 mode: INPUT_PULLUP - platform: gpio id: IN_60_mcp23017_hub_3_12 pin: mcp23xxx: mcp23017_hub_3 number: 12 mode: INPUT_PULLUP - platform: gpio id: IN_61_mcp23017_hub_3_13 pin: mcp23xxx: mcp23017_hub_3 number: 13 mode: INPUT_PULLUP - platform: gpio id: IN_62_mcp23017_hub_3_14 pin: mcp23xxx: mcp23017_hub_3 number: 14 mode: INPUT_PULLUP - platform: gpio id: IN_63_mcp23017_hub_3_15 pin: mcp23xxx: mcp23017_hub_3 number: 15 mode: INPUT_PULLUP - platform: gpio id: IN_64_mcp23017_hub_4_0 pin: mcp23xxx: mcp23017_hub_4 number: 0 mode: INPUT_PULLUP - platform: gpio id: IN_65_mcp23017_hub_4_1 pin: mcp23xxx: mcp23017_hub_4 number: 1 mode: INPUT_PULLUP - platform: gpio id: IN_66_mcp23017_hub_4_2 pin: mcp23xxx: mcp23017_hub_4 number: 2 mode: INPUT_PULLUP - platform: gpio id: IN_67_mcp23017_hub_4_3 pin: mcp23xxx: mcp23017_hub_4 number: 3 mode: INPUT_PULLUP - platform: gpio id: IN_68_mcp23017_hub_4_4 pin: mcp23xxx: mcp23017_hub_4 number: 4 mode: INPUT_PULLUP - platform: gpio id: IN_69_mcp23017_hub_4_5 pin: mcp23xxx: mcp23017_hub_4 number: 5 mode: INPUT_PULLUP - platform: gpio id: IN_70_mcp23017_hub_4_6 pin: mcp23xxx: mcp23017_hub_4 number: 6 mode: INPUT_PULLUP - platform: gpio id: IN_71_mcp23017_hub_4_7 pin: mcp23xxx: mcp23017_hub_4 number: 7 mode: INPUT_PULLUP - platform: gpio id: IN_72_mcp23017_hub_4_8 pin: mcp23xxx: mcp23017_hub_4 number: 8 mode: INPUT_PULLUP - platform: gpio id: IN_73_mcp23017_hub_4_9 pin: mcp23xxx: mcp23017_hub_4 number: 9 mode: INPUT_PULLUP - platform: gpio id: IN_74_mcp23017_hub_4_10 pin: mcp23xxx: mcp23017_hub_4 number: 10 mode: INPUT_PULLUP - platform: gpio id: IN_75_mcp23017_hub_4_11 pin: mcp23xxx: mcp23017_hub_4 number: 11 mode: INPUT_PULLUP - platform: gpio id: IN_76_mcp23017_hub_4_12 pin: mcp23xxx: mcp23017_hub_4 number: 12 mode: INPUT_PULLUP - platform: gpio id: IN_77_mcp23017_hub_4_13 pin: mcp23xxx: mcp23017_hub_4 number: 13 mode: INPUT_PULLUP - platform: gpio id: IN_78_mcp23017_hub_4_14 pin: mcp23xxx: mcp23017_hub_4 number: 14 mode: INPUT_PULLUP - platform: gpio id: IN_79_mcp23017_hub_4_15 pin: mcp23xxx: mcp23017_hub_4 number: 15 mode: INPUT_PULLUP - platform: gpio id: IN_80_mcp23017_hub_5_0 pin: mcp23xxx: mcp23017_hub_5 number: 0 mode: INPUT_PULLUP - platform: gpio id: IN_81_mcp23017_hub_5_1 pin: mcp23xxx: mcp23017_hub_5 number: 1 mode: INPUT_PULLUP - platform: gpio id: IN_82_mcp23017_hub_5_2 pin: mcp23xxx: mcp23017_hub_5 number: 2 mode: INPUT_PULLUP - platform: gpio id: IN_83_mcp23017_hub_5_3 pin: mcp23xxx: mcp23017_hub_5 number: 3 mode: INPUT_PULLUP - platform: gpio id: IN_84_mcp23017_hub_5_4 pin: mcp23xxx: mcp23017_hub_5 number: 4 mode: INPUT_PULLUP - platform: gpio id: IN_85_mcp23017_hub_5_5 pin: mcp23xxx: mcp23017_hub_5 number: 5 mode: INPUT_PULLUP - platform: gpio id: IN_86_mcp23017_hub_5_6 pin: mcp23xxx: mcp23017_hub_5 number: 6 mode: INPUT_PULLUP - platform: gpio id: IN_87_mcp23017_hub_5_7 pin: mcp23xxx: mcp23017_hub_5 number: 7 mode: INPUT_PULLUP - platform: gpio id: IN_88_mcp23017_hub_5_8 pin: mcp23xxx: mcp23017_hub_5 number: 8 mode: INPUT_PULLUP - platform: gpio id: IN_89_mcp23017_hub_5_9 pin: mcp23xxx: mcp23017_hub_5 number: 9 mode: INPUT_PULLUP - platform: gpio id: IN_90_mcp23017_hub_5_10 pin: mcp23xxx: mcp23017_hub_5 number: 10 mode: INPUT_PULLUP - platform: gpio id: IN_91_mcp23017_hub_5_11 pin: mcp23xxx: mcp23017_hub_5 number: 11 mode: INPUT_PULLUP - platform: gpio id: IN_92_mcp23017_hub_5_12 pin: mcp23xxx: mcp23017_hub_5 number: 12 mode: INPUT_PULLUP - platform: gpio id: IN_93_mcp23017_hub_5_13 pin: mcp23xxx: mcp23017_hub_5 number: 13 mode: INPUT_PULLUP - platform: gpio id: IN_94_mcp23017_hub_5_14 pin: mcp23xxx: mcp23017_hub_5 number: 14 mode: INPUT_PULLUP - platform: gpio id: IN_95_mcp23017_hub_5_15 pin: mcp23xxx: mcp23017_hub_5 number: 15 mode: INPUT_PULLUP - platform: gpio id: IN_96_mcp23017_hub_6_0 pin: mcp23xxx: mcp23017_hub_6 number: 0 mode: INPUT_PULLUP - platform: gpio id: IN_97_mcp23017_hub_6_1 pin: mcp23xxx: mcp23017_hub_6 number: 1 mode: INPUT_PULLUP - platform: gpio id: IN_98_mcp23017_hub_6_2 pin: mcp23xxx: mcp23017_hub_6 number: 2 mode: INPUT_PULLUP - platform: gpio id: IN_99_mcp23017_hub_6_3 pin: mcp23xxx: mcp23017_hub_6 number: 3 mode: INPUT_PULLUP - platform: gpio id: IN_100_mcp23017_hub_6_4 pin: mcp23xxx: mcp23017_hub_6 number: 4 mode: INPUT_PULLUP - platform: gpio id: IN_101_mcp23017_hub_6_5 pin: mcp23xxx: mcp23017_hub_6 number: 5 mode: INPUT_PULLUP - platform: gpio id: IN_102_mcp23017_hub_6_6 pin: mcp23xxx: mcp23017_hub_6 number: 6 mode: INPUT_PULLUP - platform: gpio id: IN_103_mcp23017_hub_6_7 pin: mcp23xxx: mcp23017_hub_6 number: 7 mode: INPUT_PULLUP - platform: gpio id: IN_104_mcp23017_hub_6_8 pin: mcp23xxx: mcp23017_hub_6 number: 8 mode: INPUT_PULLUP - platform: gpio id: IN_105_mcp23017_hub_6_9 pin: mcp23xxx: mcp23017_hub_6 number: 9 mode: INPUT_PULLUP - platform: gpio id: IN_106_mcp23017_hub_6_10 pin: mcp23xxx: mcp23017_hub_6 number: 10 mode: INPUT_PULLUP - platform: gpio id: IN_107_mcp23017_hub_6_11 pin: mcp23xxx: mcp23017_hub_6 number: 11 mode: INPUT_PULLUP - platform: gpio id: IN_108_mcp23017_hub_6_12 pin: mcp23xxx: mcp23017_hub_6 number: 12 mode: INPUT_PULLUP - platform: gpio id: IN_109_mcp23017_hub_6_13 pin: mcp23xxx: mcp23017_hub_6 number: 13 mode: INPUT_PULLUP - platform: gpio id: IN_110_mcp23017_hub_6_14 pin: mcp23xxx: mcp23017_hub_6 number: 14 mode: INPUT_PULLUP - platform: gpio id: IN_111_mcp23017_hub_6_15 pin: mcp23xxx: mcp23017_hub_6 number: 15 mode: INPUT_PULLUP - platform: gpio id: IN_112_mcp23017_hub_7_0 pin: mcp23xxx: mcp23017_hub_7 number: 0 mode: INPUT_PULLUP - platform: gpio id: IN_113_mcp23017_hub_7_1 pin: mcp23xxx: mcp23017_hub_7 number: 1 mode: INPUT_PULLUP - platform: gpio id: IN_114_mcp23017_hub_7_2 pin: mcp23xxx: mcp23017_hub_7 number: 2 mode: INPUT_PULLUP - platform: gpio id: IN_115_mcp23017_hub_7_3 pin: mcp23xxx: mcp23017_hub_7 number: 3 mode: INPUT_PULLUP - platform: gpio id: IN_116_mcp23017_hub_7_4 pin: mcp23xxx: mcp23017_hub_7 number: 4 mode: INPUT_PULLUP - platform: gpio id: IN_117_mcp23017_hub_7_5 pin: mcp23xxx: mcp23017_hub_7 number: 5 mode: INPUT_PULLUP - platform: gpio id: IN_118_mcp23017_hub_7_6 pin: mcp23xxx: mcp23017_hub_7 number: 6 mode: INPUT_PULLUP - platform: gpio id: IN_119_mcp23017_hub_7_7 pin: mcp23xxx: mcp23017_hub_7 number: 7 mode: INPUT_PULLUP - platform: gpio id: IN_120_mcp23017_hub_7_8 pin: mcp23xxx: mcp23017_hub_7 number: 8 mode: INPUT_PULLUP - platform: gpio id: IN_121_mcp23017_hub_7_9 pin: mcp23xxx: mcp23017_hub_7 number: 9 mode: INPUT_PULLUP - platform: gpio id: IN_122_mcp23017_hub_7_10 pin: mcp23xxx: mcp23017_hub_7 number: 10 mode: INPUT_PULLUP - platform: gpio id: IN_123_mcp23017_hub_7_11 pin: mcp23xxx: mcp23017_hub_7 number: 11 mode: INPUT_PULLUP - platform: gpio id: IN_124_mcp23017_hub_7_12 pin: mcp23xxx: mcp23017_hub_7 number: 12 mode: INPUT_PULLUP - platform: gpio id: IN_125_mcp23017_hub_7_13 pin: mcp23xxx: mcp23017_hub_7 number: 13 mode: INPUT_PULLUP - platform: gpio id: IN_126_mcp23017_hub_7_14 pin: mcp23xxx: mcp23017_hub_7 number: 14 mode: INPUT_PULLUP - platform: gpio id: IN_127_mcp23017_hub_7_15 pin: mcp23xxx: mcp23017_hub_7 number: 15 mode: INPUT_PULLUP Esp32 128 pins debug outputs # esphome: name: controller01 esp32: board: nodemcu-32s framework: type: esp-idf wifi: ssid: !</description>
    </item>
    
    <item>
      <title>GCP</title>
      <link>/docs/notes/devops/gcp/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/devops/gcp/</guid>
      <description> Init # gcloud auth application-default login - acquire new user credentials to use for Application Default Credentials </description>
    </item>
    
    <item>
      <title>GIT</title>
      <link>/docs/notes/devops/git/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/devops/git/</guid>
      <description>Basic commands # git init - Init local repo git status - displays status of the repository git diff --staged - diff to staged (commited) files to local repo git add -all - Add all changed, new and removed files git commit -m &amp;quot;Commit message&amp;quot; - performs commit of added files to the local repository git remote add origin https://github.com/kospiotr/sample-repo.git - add remote repository link to local repository git push origin master - transfers changes from local to remote repositories git push -u origin master - remember settings that next time you can use only git push git push origin --all - push everything to remote repository including branches git add --all &amp;amp; git commit -m &amp;quot;Update&amp;quot; &amp;amp; git push - add all, commit and push together git checkout discard changes in working directory git reset --hard - all changes will be reverted git clean -df - clean all untracked directories and files git clean -df &amp;amp;&amp;amp; git reset --hard &amp;amp;&amp;amp; git pull - discards any change and updates branch git branch | grep -v &amp;quot;master&amp;quot; | xargs git branch -d - removes all branchces except master and current Excluding files from repository # Reference: http://git-scm.</description>
    </item>
    
    <item>
      <title>GIT integration</title>
      <link>/docs/notes/home_assistant/git-integration/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/home_assistant/git-integration/</guid>
      <description> Prerequisittes # SSH Terminal Set-up # ssh-keygen -t ed25519 -C &amp;#34;kospiotr@gmail.com&amp;#34; eval &amp;#34;$(ssh-agent -s)&amp;#34; ssh-add ~/.ssh/id_ed25519 cat /root/.ssh/id_ed25519.pub Add the key to the Github account
Init repo # cd /homeassistant git init git status git add . git commit -m &amp;#34;Init&amp;#34; git remote add origin git@github.com:kospiotr/home-assistant-config.git git push origin master Working with git # git add . &amp;amp;&amp;amp; git comit -m &amp;#34;Update&amp;#34; &amp;amp;&amp;amp; git push origin adding_shades </description>
    </item>
    
    <item>
      <title>Google Web Toolkit</title>
      <link>/docs/notes/archive/gwt/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/archive/gwt/</guid>
      <description>Showcases # Homepage: https://developers.google.com/web-toolkit Documentation: https://developers.google.com/web-toolkit Showcase Current: http://gwt.google.com/samples/Showcase/Showcase.html For 1.6: https://developers.google.com/web-toolkit/doc/latest/RefWidgetGallery Sample mail: http://gwt.google.com/samples/Mail/Mail.html Dynamic tables: http://gwt.google.com/samples/DynaTable/DynaTable.html Archetype# # GWT-Maven-Plugin # Homepage # http://mojo.codehaus.org/gwt-maven-plugin/user-guide/archetype.html
Usage # Generate archetype:
mvn archetype:generate \ -DarchetypeGroupId=org.codehaus.mojo \ -DarchetypeArtifactId=gwt-maven-plugin \ -DarchetypeVersion=2.5.0 Configuration # mvn gwt:help Productivity # Development mode # gwt:run Development mode with debug # gwt:debug //After that attach debugger on port 8000 Super Development Mode # TBroyer&amp;rsquo;s archetype # Homepage # https://github.</description>
    </item>
    
    <item>
      <title>HashSet</title>
      <link>/docs/notes/development/data_structures/hash_set/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/data_structures/hash_set/</guid>
      <description>In Java, a HashSet implements the Set interface. It is backed by a HashMap and is primarily used to store unique elements (no duplicates). Since it uses hashing for its internal implementation, operations like add, remove, and search can be performed in constant time on average.
Advantages # Fast Performance: Most operations like adding, removing, and checking if an element exists have an average time complexity of O(1) due to the underlying hash table.</description>
    </item>
    
    <item>
      <title>Java Datasource</title>
      <link>/docs/notes/development/java/data-sources/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/java/data-sources/</guid>
      <description>As a developer, you need not know details about how to connect to the database; that is the responsibility of the administrator that sets up the datasource. You most likely fill both roles as you develop and test code, but you do not necessarily have to know how the production data source is configured.
When using Spring`s JDBC layer, you obtain a data source from JNDI or you configure your own with a connection pool implementation provided by a third party.</description>
    </item>
    
    <item>
      <title>Java Memory Model</title>
      <link>/docs/notes/development/java/jmm/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/java/jmm/</guid>
      <description>Placeholder</description>
    </item>
    
    <item>
      <title>Java SE</title>
      <link>/docs/notes/development/java/java-standard-edition/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/java/java-standard-edition/</guid>
      <description>General # jar tvf jarfile.jar - display content of file
System properties vs Environment variables # System properties are set on the java command line using the -Dpropertyname=value syntax. They can also be added at runtime using System.setProperty(name, value) or via the various System.getProperties().load() methods
Environment variables are set in the OS, eg in linux export HOME=/Users/myusername or on windows SET WINDIR=C:\Windows etc, and, unlike properties, may not be set at runtime.</description>
    </item>
    
    <item>
      <title>JavaScript</title>
      <link>/docs/notes/development/js/java-script/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/js/java-script/</guid>
      <description>Basis # This # this binds by default to the given current object:
var person = { name: &amp;#34;Nicholas&amp;#34;, sayName: function() { console.log(this.name); } }; person.sayName(); // outputs &amp;#34;Nicholas&amp;#34; But the context can be different:
function sayNameForAll() { console.log(this.name); } var person1 = { name: &amp;#34;Nicholas&amp;#34;, sayName: sayNameForAll }; var person2 = { name: &amp;#34;Greg&amp;#34;, sayName: sayNameForAll }; var name = &amp;#34;Michael&amp;#34;; person1.sayName(); // outputs &amp;#34;Nicholas&amp;#34; person2.sayName(); // outputs &amp;#34;Greg&amp;#34; sayNameForAll(); // outputs &amp;#34;Michael&amp;#34; Rebinding this # Using call # function sayNameForAll(label) { console.</description>
    </item>
    
    <item>
      <title>Jekyll</title>
      <link>/docs/notes/archive/jekyll/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/archive/jekyll/</guid>
      <description> Install # Docker CLI # export JEKYLL_VERSION=3.5 export PROJECT_NAME=&amp;#34;NewJekyllProject&amp;#34; mkdir -p ~/Projects/$PROJECT_NAME ; cd ~/Projects/$PROJECT_NAME New project # docker run --rm --volume=&amp;#34;$PWD:/srv/jekyll&amp;#34; -it jekyll/jekyll:$JEKYLL_VERSION jekyll new . Build project # docker run --rm --volume=&amp;#34;$PWD:/srv/jekyll&amp;#34; -it jekyll/jekyll:$JEKYLL_VERSION jekyll build Serve project # docker run --name newblog --volume=&amp;#34;$PWD:/srv/jekyll&amp;#34; -p 3000:4000 -it jekyll/jekyll:$JEKYLL_VERSION jekyll serve --watch --drafts Execute command in container - install theme # docker exec -ti myblog gem install &amp;#34;jekyll-theme-hydeout&amp;#34; Bash in container # docker exec -ti myblog /bin/sh Remove container # docker rm -f myblog </description>
    </item>
    
    <item>
      <title>Jenkins</title>
      <link>/docs/notes/devops/jenkins/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/devops/jenkins/</guid>
      <description>Install # Create user: sudo adduser jenkins Add jenkins user as sudoer: sudo adduser jenkins sudo Login to that user: su jenkins Download Jenkins: wget http://mirrors.jenkins.io/war/latest/jenkins.war Create systemd init configuration in file: sudo vim /etc/systemd/system/jenkins.service with following content: [Unit] Description=Jenkins Daemon [Service] ExecStart=/usr/bin/java -jar /home/jenkins/jenkins.war --httpPort=8081 User=jenkins [Install] WantedBy=multi-user.target Reload service manager: sudo systemctl daemon-reload and you can now manage the service: systemctl start jenkins.service # starts the service manually systemctl stop jenkins.</description>
    </item>
    
    <item>
      <title>Jetbrains IDE</title>
      <link>/docs/notes/development/ide/jetbrains/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/ide/jetbrains/</guid>
      <description>Installation # sudo tar -xvf idea* -C /opt/ Run idea.sh from the bin subdirectory. Shortcuts # General # ctrl + alt + s - settings ctrl + shift + a - action Navigating # 2 x shift - search everywhere ctrl + n - find class ctrl + shift + n - find file ctrl + shift + t - navigate between test and implementation ctrl + shift + i - object definition popup shift + ESC - close last non center panel ctrl + F12 - file structure alt + F12 - terminal Editing # Execution # shift + F10 - run current configuration shift + F10 - execute current test class / tests for the current class Notes from workshops: # alt + number ctrl + e - last visited places ctrl + shift + e - last edited places shift + escape - closes last tool window ctrl + shift + f12 - close all tool windows ctrl + shift + arrow - in tool window resize tool window, doesnt work in terminal (must remove capturing) ctrl + shift + a - run action ctrl + n - find file by class name ctrl + shift + n - find file by file name ctrl + shift + alt + n - find by symbol shift + shift - find all above alt + shift + F9 - debug ctrl + w - expand selection ctrl + shift + w - reduce selection ctrl + space - code completion ctrl + shift + space - smart code completion When changing method # tab - replaces current method enter - appends current method ctrl + shift + enter - encloses sentence in brackets ctrl + .</description>
    </item>
    
    <item>
      <title>JPA</title>
      <link>/docs/notes/development/java/jpa/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/java/jpa/</guid>
      <description>Lazy loading # The default is to load all basic mappings eagerly
Example:
@Basic(fetch=FetchType.LAZY) @Column(name=&amp;#34;COMM&amp;#34;) private String comments; Large Objects # Annotation: @Lob
Two types:
CLOB - character large objects (char[], Character[], and String) BLOB - binary large objects (byte[], Byte[] and Serializable types) Example:
@Entity public class Employee { @Id private int id; @Basic(fetch=FetchType.LAZY) @Lob @Column(name=&amp;#34;PIC&amp;#34;) private byte[] picture; // ... } Enumerated Types # By default Enumerated types are represented as number - an index of value in the enum class.</description>
    </item>
    
    <item>
      <title>Kata</title>
      <link>/docs/notes/development/algo/kata/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/algo/kata/</guid>
      <description>Tips # If input array is sorted then
Binary search Two pointers If asked for all permutations/subsets then
Backtracking If given a tree then
DFS BFS If given a graph then
DFS BFS If given a linked list then
Two pointers If recursion is banned then
Stack If must solve in-place then
Swap corresponding values Store one or more different values in the same pointer If asked for maximum/minimum subarray/subset/options then</description>
    </item>
    
    <item>
      <title>Keyboard</title>
      <link>/docs/notes/keyboard/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/keyboard/</guid>
      <description> Keycron # https://launcher.keychron.com/#/macro Mapping v1: layer on f and j # S: MT(MOD_LCTL, KC_S) D: MT(MOD_LSFT, KC_D) F: LT(3, KC_F) J: LT(3, KC_J) K: MT(MOD_RSFT, KC_K) L: MT(MOD_RCTL, KC_L) Mapping v2: layer on d and k # S: MT(MOD_LCTL, KC_S) D: LT(3, KC_D) F: MT(MOD_LSFT, KC_F) J: MT(MOD_RSFT, KC_J) K: LT(3, KC_K) L: MT(MOD_RCTL, KC_L) </description>
    </item>
    
    <item>
      <title>Keywords</title>
      <link>/docs/notes/development/java/keywords/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/java/keywords/</guid>
      <description>Overview # Java keywords are predefined words in the Java programming language that have a special meaning to the compiler. These keywords are reserved and cannot be used as identifiers (e.g., variable names, class names, or method names). They serve various purposes, such as defining data types, control flow statements, and class declarations. Understanding these keywords is essential for writing syntactically correct and logically structured Java programs.
List of Java Keywords # Here’s a categorized list of the 52 reserved keywords in Java:</description>
    </item>
    
    <item>
      <title>Kubernetes</title>
      <link>/docs/notes/devops/kubernetes/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/devops/kubernetes/</guid>
      <description>https://kubernetes.io/docs/user-guide/kubectl-cheatsheet/ source &amp;lt;(kubectl completion bash) Samples # Application # cat &amp;gt; app.js &amp;lt;&amp;lt;EOF const http = require(&amp;#39;http&amp;#39;); const os = require(&amp;#34;os&amp;#34;); const hostname = &amp;#39;0.0.0.0&amp;#39;; const port = 80; const server = http.createServer((req, res) =&amp;gt; { console.log(&amp;#39;Request: &amp;#39; + req.url); res.statusCode = 200; res.setHeader(&amp;#39;Content-Type&amp;#39;, &amp;#39;text/plain&amp;#39;); res.end(&amp;#39;Hello World from &amp;#39; + os.hostname() + &amp;#39;\n&amp;#39;); }); server.listen(port, hostname, () =&amp;gt; { console.log(&amp;#39;Server running at http://%s:%s/&amp;#39;, hostname, port); }); process.on(&amp;#39;SIGINT&amp;#39;, function() { console.</description>
    </item>
    
    <item>
      <title>Leader Toolbox</title>
      <link>/docs/notes/leadership/leader-toolbox/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/leadership/leader-toolbox/</guid>
      <description>Overview # The Leader Toolbox is a collection of tools, techniques, and resources designed to help leaders effectively manage their teams, foster collaboration, and drive performance. This toolbox includes methods for feedback, team agreements, and communication strategies.
The Leader Toolbox is designed to equip leaders with the necessary tools and techniques to foster a positive and productive team environment. By utilizing these resources, leaders can enhance communication, drive performance, and build strong, collaborative teams.</description>
    </item>
    
    <item>
      <title>LinkedList</title>
      <link>/docs/notes/development/data_structures/linked_list/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/data_structures/linked_list/</guid>
      <description>In Java, LinkedList is a part of the Java Collections Framework and implements both the List and Deque interfaces. It is a doubly-linked list, where each element (node) contains references to both the next and previous nodes. This structure makes it well-suited for scenarios where you frequently insert or delete elements from the beginning or middle of the list.
LinkedList in Java is ideal for scenarios where frequent insertions and deletions are needed, especially at the start or middle of the list.</description>
    </item>
    
    <item>
      <title>MAC OS</title>
      <link>/docs/notes/macos/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/macos/</guid>
      <description> Apps # Raycast # Quicklinks
GPT: https://chatgpt.com?hint=search&amp;q={query} BB pl-en: https://pl.bab.la/slownik/polski-angielski/{phrase} BB en-pl: https://pl.bab.la/slownik/angielski-polski/{phrase} MP: https://www.google.com/maps/place/{place} GG: https://google.com/search?q={argument} YT: https://www.youtube.com/results?search_query={query} Karabiner # Aerospace # Ghosty # Nvim (LazyVim) # Podman # </description>
    </item>
    
    <item>
      <title>Maven</title>
      <link>/docs/notes/development/java/maven/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/java/maven/</guid>
      <description>Lifecycle # validate initialize generate-sources process-sources generate-resources process-resources compile process-classes generate-test-sources process-test-sources generate-test-resources process-test-resources test-compile process-test-classes test prepare-package package pre-integration-test integration-test post-integration-test verify install deploy Properties # Built-in properties
${basedir} represents the directory containing pom.xml ${version} equivalent to ${project.version} (deprecated: ${pom.version}) Pom/Project properties
All elements in the pom.xml, can be referenced with the project. prefix. This list is just an example of some commonly used elements. (deprecated: {pom.} prefix)</description>
    </item>
    
    <item>
      <title>Merge Sort</title>
      <link>/docs/notes/development/algo/sorting/mergesort/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/algo/sorting/mergesort/</guid>
      <description>Merge Sort is a divide-and-conquer algorithm used for sorting. It works by dividing the array into smaller subarrays, sorting those subarrays recursively, and then merging them back together. The key characteristic of Merge Sort is that it guarantees O(n log n) time complexity in all cases (best, average, and worst), making it efficient even for large datasets.
Method # Divide: Split the array into two halves until you have subarrays of size 1.</description>
    </item>
    
    <item>
      <title>Microservices</title>
      <link>/docs/notes/architecture/microservices/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/architecture/microservices/</guid>
      <description> Decomposition # Decomposition strategies # Bounded context # Separate Value Stream # Separate Failure Domains # Anti-Corruption Layers # Facade # Decomposition reasons # Independent Rate of Change # Independent Life Cycle # Independent Scalability # Isolated Failure # Independant technologies # References # https://builttoadapt.io/whats-your-decomposition-strategy-e19b8e72ac8f https://dwmkerr.com/the-death-of-microservice-madness-in-2018/ https://content.pivotal.io/blog/should-that-be-a-microservice-keep-these-six-factors-in-mind </description>
    </item>
    
    <item>
      <title>NodeJS</title>
      <link>/docs/notes/development/js/node-js/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/js/node-js/</guid>
      <description>Node # npm init - initialize nodejs project node server.js - starts node app from server.js file nodemon server.js - starts node app from server.js file and when detects changes restarts server npm install -g nodemon - installs globally nodemon Configuration # Install config plugin: npm install config --save, and then store configuration in config directory in separated files (it supports different file types):
config/default.json:
{ // Customer module configs &amp;#34;Customer&amp;#34;: { &amp;#34;dbConfig&amp;#34;: { &amp;#34;host&amp;#34;: &amp;#34;localhost&amp;#34;, &amp;#34;port&amp;#34;: 5984, &amp;#34;dbName&amp;#34;: &amp;#34;customers&amp;#34; }, &amp;#34;credit&amp;#34;: { &amp;#34;initialLimit&amp;#34;: 100, // Set low for development &amp;#34;initialDays&amp;#34;: 1 } } } config/production.</description>
    </item>
    
    <item>
      <title>Nvim</title>
      <link>/docs/notes/development/ide/nvim/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/ide/nvim/</guid>
      <description> Installation # brew install nvim rm -rf git clone https://github.com/LazyVim/starter ~/.config/nvim rm -rf ~/.config/nvim/.git Keymap # Windows # SPC w &amp;lt;hjkl&amp;gt; - navigate between windows SPC w &amp;lt;hjkl&amp;gt; - move windows SPC w s - split window SPC w q - close window Explorer # SPACE e - toggle explorer window ? - help S h </description>
    </item>
    
    <item>
      <title>O-notation</title>
      <link>/docs/notes/development/algo/o-notation/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/algo/o-notation/</guid>
      <description>In Big O Notation (or O-notation), we analyze the efficiency of algorithms, typically focusing on time complexity and space complexity. The goal is to understand how an algorithm’s performance scales as the input size grows. Big O notation expresses this growth in terms of the worst-case scenario.
Examples:
Operation Type Typical Big O Complexity Constant-time operations (e.g., reading/writing a variable) O(1) Loop over n elements O(n) Nested loops O(n^2) Binary search O(log n) Merge sort, Quick sort O(n log n) Insertion in balanced BST, Heap O(log n) BFS/DFS (graph traversal) O(V + E) Basic Operations # These are simple operations that are treated as having a constant time complexity, i.</description>
    </item>
    
    <item>
      <title>OAuth</title>
      <link>/docs/notes/architecture/oauth/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/architecture/oauth/</guid>
      <description>Thesaurus # OAuth 2.0 # Specs: https://tools.ietf.org/html/rfc6749#section-1.4
OAuth2 is an open standard for authorization. Confusingly, OAuth2 is also the basis for OpenID Connect, which provides OpenID (authentication) on top of OAuth2 (authorization) for a more complete security solution.
OpenID # OpenID is an open standard for authentication, promoted by the non-profit OpenID Foundation. As of March 2016, there are over a billion OpenID-enabled accounts on the internet, and organizations such as Google, WordPress, Yahoo, and PayPal use OpenId to authenticate users.</description>
    </item>
    
    <item>
      <title>Power Apps</title>
      <link>/docs/notes/development/power_platform/power-apps/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/power_platform/power-apps/</guid>
      <description>A platform for building custom applications without extensive coding knowledge. Users can create apps that run on web and mobile devices, integrating with various data sources.
Case Study: Mapper # Main List # Sort( Filter( AddColumns( &amp;#39;Case Studies&amp;#39;, Kimbles, Concat( Engagements, Value, &amp;#34;,&amp;#34; ), DMs, Concat( DM, Value, &amp;#34;,&amp;#34; ), Owners, Concat( Owner, Value, &amp;#34;,&amp;#34; ) ), (TextInputCanvas1.Value in Title || TextInputCanvas1.Value in Kimbles || TextInputCanvas1.Value in DMs || TextInputCanvas1.Value in Owners) &amp;amp;&amp;amp; (!</description>
    </item>
    
    <item>
      <title>Power Automate</title>
      <link>/docs/notes/development/power_platform/power-automate/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/power_platform/power-automate/</guid>
      <description>A tool for automating workflows between applications and services. It allows users to create automated processes to save time and improve efficiency, such as sending notifications, collecting data, or synchronizing files.</description>
    </item>
    
    <item>
      <title>Power BI</title>
      <link>/docs/notes/development/power_platform/power-bi/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/power_platform/power-bi/</guid>
      <description>A business analytics tool that enables users to visualize and share insights from their data. It allows for the creation of interactive reports and dashboards, helping organizations make data-driven decisions.</description>
    </item>
    
    <item>
      <title>PriorityQueue</title>
      <link>/docs/notes/development/data_structures/priority_queue/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/data_structures/priority_queue/</guid>
      <description>In Java, PriorityQueue is a part of the Java Collections Framework and implements a priority heap. It provides an efficient way to handle elements that need to be processed based on their priority (defined by natural ordering or a custom comparator). Elements are ordered by priority, where the smallest or highest-priority element is always accessible at the head of the queue.
The PriorityQueue is a great data structure for scenarios where elements need to be processed based on priority, such as task scheduling, event-driven systems, or anytime you need to efficiently retrieve the smallest or largest element repeatedly.</description>
    </item>
    
    <item>
      <title>Proxmox</title>
      <link>/docs/notes/proxmox/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/proxmox/</guid>
      <description>Receipe: Mount USB drive to LXC container # On Proxmox host
apt install ntfs-3g mount -t ntfs-3g /dev/sdb1 /mnt/usb-01 Verify:
mount | grep usb-01 Bind-mount into the Plex container
Assume: Container ID = 105
Mount point inside container = /media/usb
pct set 105 -mp0 /mnt/usb-01,mp=/media/usb Restart container:
pct restart 105 Inside container:
ls /media/usb Recipe: Auto login via SSH from Proxmox UI # GETTY_OVERRIDE=&amp;#34;/etc/systemd/system/container-getty@1.service.d/override.conf&amp;#34; mkdir -p $(dirname $GETTY_OVERRIDE) cat &amp;lt;&amp;lt;EOF &amp;gt;$GETTY_OVERRIDE [Service] ExecStart= ExecStart=-/sbin/agetty --autologin root --noclear --keep-baud tty%I 115200,38400,9600 \$TERM EOF systemctl daemon-reload systemctl restart $(basename $(dirname $GETTY_OVERRIDE) | sed &amp;#39;s/\.</description>
    </item>
    
    <item>
      <title>Python</title>
      <link>/docs/notes/development/python/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/python/</guid>
      <description>if __name__ == &amp;#34;__main__&amp;#34;: print(&amp;#34;Hello, World!&amp;#34;) Methods # String # str(123) -&amp;gt; &#39;123&#39; Convert to string &#39; a b c &#39;.strip() -&amp;gt; &#39;a b c&#39; Remove leading and trailing whitespace &#39;abc&#39;.capitalize() -&amp;gt; &#39;Abc&#39; Capitalize the first character of the string &#39;ab bc cd&#39;.title() -&amp;gt; &#39;Ab Bc Cd&#39; Capitalize the first character of each word &#39;a b c&#39;.split(&#39;&#39;) -&amp;gt; [&#39;a&#39;,&#39;b&#39;,&#39;c&#39;] Split the string into a list of substrings &#39;abc&#39;.startswith(&#39;a&#39;) -&amp;gt; True Check if the string starts with a specific substring &#39;abc&#39;.</description>
    </item>
    
    <item>
      <title>Quicksort</title>
      <link>/docs/notes/development/algo/sorting/quicksort/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/algo/sorting/quicksort/</guid>
      <description>QuickSort is a highly efficient divide-and-conquer algorithm used for sorting. It picks a pivot element from the array and partitions the other elements into two sub-arrays: those smaller than the pivot and those greater than the pivot. The process is recursively repeated for the sub-arrays, and the result is a sorted array.
Method # Choose a Pivot: Select an element from the array (usually the first, last, or middle element, or a random element).</description>
    </item>
    
    <item>
      <title>Scrum template</title>
      <link>/docs/notes/leadership/scrum-template/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/leadership/scrum-template/</guid>
      <description>Scrum # Sprint length # 2 weeks, planning at the start, review at the end, starting Tuesday or Wednesday (1 to choose) (a lot of meetings on Monday).
Roles # Product Owner – the only person responsible for items in product backlog and it’s prioritisation. One person. Scrum Master – facilitator for the team, helps in impediments removal (Bartlomiej Labno/Piotr Kosmowski + rotational team support) Developer – member of the team Scrum team consists of PO, SM and Developers.</description>
    </item>
    
    <item>
      <title>SCWD</title>
      <link>/docs/notes/architecture/data/scwd/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/architecture/data/scwd/</guid>
      <description>Overview # Slowly Changing Dimensions (SCD) are a key concept in data warehousing, used to manage and track changes to data over time. In dimensional modeling, particularly for star and snowflake schemas, it&amp;rsquo;s common for dimensions (such as customers, products, or locations) to change slowly over time. Managing these changes ensures historical accuracy and supports analytical queries.
There are several types of SCD, each representing a different method of handling changes in the dimension data.</description>
    </item>
    
    <item>
      <title>Sharepoint</title>
      <link>/docs/notes/development/power_platform/sharepoint/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/power_platform/sharepoint/</guid>
      <description></description>
    </item>
    
    <item>
      <title>Spring AOP</title>
      <link>/docs/notes/development/java/spring-aop-presentation/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/java/spring-aop-presentation/</guid>
      <description>Aspect Oriented Programming # What is it?
is a programming paradigm extends OOP enables modularization of crosscutting concerns is second heart of Spring Framework Sample usages
Cross cutting layer functionality like:
security transactional logging monitoring cache Example
A simple service method:
public Order getOrder(BigDecimal orderId) { return (Order) factory.openSession().get(Order.class, orderId); } Add permissions check:
public Order getOrder(BigDecimal orderId) { if (hasOrderPermission(orderId)) { return (Order) factory.openSession() .get(Order.class, orderId); } else { throw new SecurityException(&amp;#34;Access Denied&amp;#34;); } } Add transaction management:</description>
    </item>
    
    <item>
      <title>Spring Boot</title>
      <link>/docs/notes/development/java/spring-boot/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/java/spring-boot/</guid>
      <description>What is Spring Boot # Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can &amp;ldquo;just run&amp;rdquo;. They take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration.
You can use Spring Boot to create Java applications that can be started using java -jar or more traditional war deployments.</description>
    </item>
    
    <item>
      <title>Spring Core</title>
      <link>/docs/notes/development/java/spring-core-presentation/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/java/spring-core-presentation/</guid>
      <description>History # Java Enterprise Edition was first. See why Spring had to be developed: [Java Enterprise Edition - presentation]({{ site.basepath }}/wiki/java-enterprise-edition-presentation)
The book # Rod Johnson between 1997 and 2002 was dealing with J2EE applications as a consultant. He identified many problems during his carrere and described them in his book &amp;ldquo;Expert One-on-One J2EE Design and Development&amp;rdquo;.
&amp;ldquo;Expert One-on-One J2EE Design and Development&amp;rdquo; - Rod Johnson, Jurgen Hoeller (2002)</description>
    </item>
    
    <item>
      <title>Spring Data</title>
      <link>/docs/notes/development/java/spring-data/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/java/spring-data/</guid>
      <description>Configuration # Dependencies
Add Spring dependencies in pom.xml :
&amp;lt;properties&amp;gt; ... &amp;lt;hibernate.version&amp;gt;4.1.9.Final&amp;lt;/hibernate.version&amp;gt; &amp;lt;/properties&amp;gt; &amp;lt;dependencies&amp;gt; ... &amp;lt;!-- Spring --&amp;gt; ... &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;spring-orm&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;${spring.version}&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;!-- JPA Vendor --&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.hibernate&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;hibernate-entitymanager&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;${hibernate.version}&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;/dependencies&amp;gt; Install and configure database
Database type: MySQL Host: localhost Port: 3306 Database: hello_spring Login: root Password: root Configure MySQL Driver
&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;mysql&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;mysql-connector-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;5.1.22&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; Configure Datasource in Spring
For development purposes:
&amp;lt;bean id=&amp;#34;dataSource&amp;#34; class=&amp;#34;org.springframework.jdbc.datasource.DriverManagerDataSource&amp;#34;&amp;gt; &amp;lt;property name=&amp;#34;driverClassName&amp;#34; value=&amp;#34;com.</description>
    </item>
    
    <item>
      <title>Spring JDBC</title>
      <link>/docs/notes/development/java/spring-jdbc/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/java/spring-jdbc/</guid>
      <description>Configuration # Install and configure database
Database type: MySQL Host: localhost Port: 3306 Database: hello_spring Login: root Password: root Configure MySQL Driver
&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;mysql&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;mysql-connector-java&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;5.1.22&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; Configure Datasource in Spring
For development purposes:
&amp;lt;bean id=&amp;#34;dataSource&amp;#34; class=&amp;#34;org.springframework.jdbc.datasource.DriverManagerDataSource&amp;#34;&amp;gt; &amp;lt;property name=&amp;#34;driverClassName&amp;#34; value=&amp;#34;com.mysql.jdbc.Driver&amp;#34;/&amp;gt; &amp;lt;property name=&amp;#34;url&amp;#34; value=&amp;#34;jdbc:mysql://localhost:3306/hello_spring&amp;#34;/&amp;gt; &amp;lt;property name=&amp;#34;username&amp;#34; value=&amp;#34;root&amp;#34;/&amp;gt; &amp;lt;property name=&amp;#34;password&amp;#34; value=&amp;#34;root&amp;#34;/&amp;gt; &amp;lt;/bean&amp;gt; For more datasources possibilities check: Datasources
Example Model # Java model
public class Employee { private int id; private String name; private String role; public int getId() { return id; } public void setId(int id) { this.</description>
    </item>
    
    <item>
      <title>Spring MVC</title>
      <link>/docs/notes/development/java/spring-mvc-presentation/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/java/spring-mvc-presentation/</guid>
      <description>Spring MVC Maven dependencies # Add Spring dependencies in pom.xml :
&amp;lt;properties&amp;gt; ... &amp;lt;spring.version&amp;gt;4.2.0.RELEASE&amp;lt;/spring.version&amp;gt; &amp;lt;jstl.version&amp;gt;1.2&amp;lt;/jstl.version&amp;gt; &amp;lt;/properties&amp;gt; &amp;lt;dependencies&amp;gt; ... &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.springframework&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;spring-webmvc&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;${spring.version}&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;javax.servlet&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;jstl&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;${jstl.version}&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;/dependencies&amp;gt; DispatcherServlet # What is DispatcherServlet # The job of the DispatcherServlet is to take an incoming URI and find the right combination of handlers (generally methods on Controller classes) and views (generally JSPs) that combine to form the page or resource that&amp;rsquo;s supposed to be found at that location.</description>
    </item>
    
    <item>
      <title>Spring Security</title>
      <link>/docs/notes/development/java/spring-security/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/java/spring-security/</guid>
      <description>Spring Security Maven dependencies # &amp;lt;properties&amp;gt; ... &amp;lt;spring-security.version&amp;gt;4.0.1.RELEASE&amp;lt;/spring-security.version&amp;gt; &amp;lt;/properties&amp;gt; &amp;lt;dependencies&amp;gt; ... &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.springframework.security&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;spring-security-web&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;${spring-security.version}&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.springframework.security&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;spring-security-config&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;${spring-security.version}&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; &amp;lt;/dependencies&amp;gt; Installing Spring Security # Define Spring Security in the root Application Context
web.xml :
... &amp;lt;!-- Loads Root Context --&amp;gt; &amp;lt;listener&amp;gt; &amp;lt;listener-class&amp;gt;org.springframework.web.context.ContextLoaderListener&amp;lt;/listener-class&amp;gt; &amp;lt;/listener&amp;gt; &amp;lt;context-param&amp;gt; &amp;lt;param-name&amp;gt;contextConfigLocation&amp;lt;/param-name&amp;gt; &amp;lt;param-value&amp;gt;/WEB-INF/spring/security-config.xml&amp;lt;/param-value&amp;gt; &amp;lt;/context-param&amp;gt; ... Add Spring Security filter
... &amp;lt;!-- Spring Security --&amp;gt; &amp;lt;filter&amp;gt; &amp;lt;filter-name&amp;gt;springSecurityFilterChain&amp;lt;/filter-name&amp;gt; &amp;lt;filter-class&amp;gt;org.springframework.web.filter.DelegatingFilterProxy&amp;lt;/filter-class&amp;gt; &amp;lt;/filter&amp;gt; &amp;lt;filter-mapping&amp;gt; &amp;lt;filter-name&amp;gt;springSecurityFilterChain&amp;lt;/filter-name&amp;gt; &amp;lt;url-pattern&amp;gt;/*&amp;lt;/url-pattern&amp;gt; &amp;lt;/filter-mapping&amp;gt; ... The filter must necessarily be named springSecurityFilterChain to match the default bean created by Spring Security in the container</description>
    </item>
    
    <item>
      <title>Stack</title>
      <link>/docs/notes/development/data_structures/stack/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/data_structures/stack/</guid>
      <description>In Java, Stack is a class that extends Vector and implements a standard Last In First Out (LIFO) stack data structure. It inherits the synchronization properties of Vector, making it thread-safe but with similar performance drawbacks due to synchronization overhead.
Advantages # LIFO Behavior: The stack operates with a Last In First Out order, which is useful in many algorithms and processes, such as parsing expressions, backtracking, or implementing recursive algorithms iteratively.</description>
    </item>
    
    <item>
      <title>Testing</title>
      <link>/docs/notes/development/java/testing/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/java/testing/</guid>
      <description>JUnit # Dependencies # &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;junit&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;junit&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;4.11&amp;lt;/version&amp;gt; &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt; &amp;lt;/dependency&amp;gt; Mockito # Dependencies # mockito-core
&amp;lt;!-- needs extra dependencies: objenesis &amp;amp; hamcrest --&amp;gt; &amp;lt;groupId&amp;gt;org.mockito&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;mockito-core&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.9.5&amp;lt;/version&amp;gt; &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt; mockito-all
&amp;lt;groupId&amp;gt;org.mockito&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;mockito-all&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.9.5&amp;lt;/version&amp;gt; &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt; ##JRunner
@RunWith(MockitoJUnitRunner.class) #Hamcrest Matchers ##Refs
http://java.dzone.com/articles/hamcrest-containing-matchers Dependencies # &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.hamcrest&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;hamcrest-all&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.3&amp;lt;/version&amp;gt; &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt; &amp;lt;/dependency&amp;gt; Fest # Dependency:
&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;org.easytesting&amp;lt;/groupId&amp;gt; &amp;lt;artifactId&amp;gt;fest-assert&amp;lt;/artifactId&amp;gt; &amp;lt;version&amp;gt;1.4&amp;lt;/version&amp;gt; &amp;lt;/dependency&amp;gt; Import:
import static org.fest.assertions.Assertions.assertThat; Use:
public void testMain() { List&amp;lt;String&amp;gt; dummyList = Arrays.asList(&amp;#34;a&amp;#34;,&amp;#34;b&amp;#34;,&amp;#34;c&amp;#34;); assertThat(dummyList).containsOnly(&amp;#34;a&amp;#34;,&amp;#34;c&amp;#34;,&amp;#34;b&amp;#34;); } AssertJ # Dependency:</description>
    </item>
    
    <item>
      <title>tmux</title>
      <link>/docs/notes/development/ide/tmux/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/ide/tmux/</guid>
      <description>Installation # brew install tmux Configuration # Config location: ~/.tmux.conf
General # ctrl b ? - commands list Windows (tabs) # ctrl b c - create ctrl b &amp;amp; - kill ctrl b n - next ctrl b p - previos ctrl b l - last ctrl b &amp;lt;number&amp;gt; - select window number ctrl b w - windows list ctrl b , - rename ctrl b . - move Panes # ctrl b &amp;quot; - split vertically ctrl b % - split horizontally ctrl b o - next ctrl b ; - previous ctrl b !</description>
    </item>
    
    <item>
      <title>TreeSet</title>
      <link>/docs/notes/development/data_structures/tree_set/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/data_structures/tree_set/</guid>
      <description>In Java, a TreeSet is a part of the java.util package and implements the NavigableSet interface, which extends SortedSet. Internally, it uses a Red-Black Tree (a self-balancing binary search tree), which ensures that the elements are always stored in sorted order. A TreeSet does not allow duplicate elements and does not permit null values. It is commonly used when you need to maintain a sorted collection, and it provides log-time complexity for basic operations like adding, removing, and searching elements.</description>
    </item>
    
    <item>
      <title>Unix</title>
      <link>/docs/notes/devops/unix/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/devops/unix/</guid>
      <description>Commands # apt-cache policy &amp;lt;packageName&amp;gt; - check available version du -sh * - list all directories and files with its real size du -h * | sort -r | head -50 - 50 heaviest subdirectories with size tar -cvf archived-file.tar ./directory-to-archive - tar directory to file tar - xvf archived-file.tar - untar directory to file tar -czvf archived-file.tar.gz ./directory-to-archive - tar.gz directory to file tar - xzvf archived-file.tar.gz - untar.</description>
    </item>
    
    <item>
      <title>Vector</title>
      <link>/docs/notes/development/data_structures/vector/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/development/data_structures/vector/</guid>
      <description>In Java, Vector is a legacy class that implements a dynamically resizable array, much like ArrayList. It is part of the original Java collections framework but is synchronized, which makes it thread-safe. However, this synchronization introduces overhead, and thus Vector is generally less preferred compared to ArrayList for non-threaded applications.
For modern Java development, Vector is generally replaced by ArrayList in non-threaded applications and by CopyOnWriteArrayList or Collections.synchronizedList() in threaded applications.</description>
    </item>
    
    <item>
      <title>WSL</title>
      <link>/docs/notes/devops/wsl/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/notes/devops/wsl/</guid>
      <description>Installation # wsl --install Fixing DNS # From: https://superuser.com/questions/1191249/unable-to-resolve-host-name-in-wsl
Create a wsl.conf file in the root etc folder (you may need sudo):
sudo nano /etc/wsl.conf Paste the following lines in the file and exit saving it (Ctrl+X):
[network] generateResolvConf = false Delete the symbolic link to the resolv.conf file:
cd /etc sudo rm resolv.conf Create a new resolv.conf file in /etc:
sudo nano resolv.conf Paste the following content into it saving it with (Ctrl+O and Ctrl+X):</description>
    </item>
    
  </channel>
</rss>
